static void Main(string[] args) { int i = 1;//701882 List <string> codeList = new List <string>(); var cen = new GenerateShortURL(); while (i < 99999999) { // cen.ConfusionConvert(i) //先插入数据,产生自增ID,然后用自增ID生成随机字符串 //var long = md5Str.ToString() //var val = DateTime.Now.toun + i; //Utils.GenerateCode(6);// var code = cen.ConfusionConvert(i);//Utils.GenerateCode(); // cen.ConfusionConvert(i);//GetChart(4, i+new Random().Next(1,10)+1000000);//GenerateUniqueText(4);//GetChart(4, GuidToLongID());//GetRandString(6, 90000000);// GenerateRandomCode(4);// // Console.WriteLine($"Num : {i}"); // Console.WriteLine($"Code : {code}"); //if (codeList.Contains(code)) //{ //codeList.OrderBy(c => c); //foreach (var item in codeList) //{ // Console.WriteLine(item); //} // Console.WriteLine("任务结束"); // Console.ReadKey(); // } codeList.Add(code); i++; } Console.WriteLine("去从前:" + codeList.Count); Console.WriteLine("去从后:" + codeList.Distinct().Count()); Console.ReadKey(); Console.WriteLine("Hello World!"); }
public async Task <object> Generate(string url) { #region 验证url的重复和有效性 var urlInfo = UrlCache.Where(t => t.Key == url).FirstOrDefault(); //如果存在直接返回 if (!string.IsNullOrWhiteSpace(urlInfo.Key)) { return(new { ShortURL = urlInfo.Value }); } //最多缓存50个 if (UrlCache.Count() > 50) { UrlCache.RemoveRange(0, UrlCache.Count() - 50); } //Nginx变量设置 proxy_set_header x-host $scheme://$host; var host = Request.Headers["x-host"].FirstOrDefault();//Nginx 问题获取的是内网地址 try { if ((!string.IsNullOrWhiteSpace(host) && url.Contains(host))) { return new { ShortURL = url } } ; var statusCode = await httpClient.GetAsync(url); if (!url.Contains("http") || (int)statusCode.StatusCode >= 400) { return new { ShortURL = "", Msg = "请输入有效网址" } } ; } catch (Exception ex) { return(new { ShortURL = "", Msg = "请输入有效网址" }); } #endregion var dbConnection = new MySqlConnection(configuration.GetValue <string>("MySQLSPConnection")); var entityPo = new UrlRecordPO(); var id = await dbConnection.InsertAsync(entityPo); var seqKey = configuration.GetValue <string>("SeqKye");//获取62个符号和数字(乱序后的) GenerateShortURL generate = new GenerateShortURL(seqKey); var shortURL = generate.ConfusionConvert(id); entityPo.Id = id; entityPo.ShortURL = shortURL; entityPo.Url = url; await dbConnection.UpdateAsync(entityPo); UrlCache.Add(new KeyValuePair <string, string>(url, shortURL)); return(new { shortURL }); }
public async Task <IActionResult> Index(string key) { if (string.IsNullOrWhiteSpace(key)) { return(View()); } var seqKey = configuration.GetValue <string>("SeqKye");//获取62个符号和数字(乱序后的) GenerateShortURL generate = new GenerateShortURL(seqKey); var id = generate.ConfusionConvert(key); var dbConnection = new MySqlConnection(configuration.GetValue <string>("MySQLSPConnection")); //根据id查询对应的映射关系实体 var entity = await dbConnection.QueryFirstOrDefaultAsync <UrlRecordPO>("SELECT * from ShortURLs where Id = @id;", new { id }); entity.LastModificationTime = DateTime.Now; entity.AccessNumber++; await dbConnection.UpdateAsync(entity);//更新点击数和最后修改时间 return(Redirect(entity.Url ?? "http://www.haojima.net")); }