懒得勤快 6 éve
szülő
commit
6dc533477e

+ 14 - 1
Masuit.Tools.Core/Extensions.cs

@@ -1,6 +1,8 @@
-using Newtonsoft.Json;
+using Masuit.Tools.Strings;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Net;
 using System.Text.RegularExpressions;
@@ -1540,6 +1542,17 @@ namespace Masuit.Tools
             return Regex.Replace(temp, @"\p{P}|\+", string.Empty);
         }
 
+        /// <summary>
+        /// 生成唯一短字符串
+        /// </summary>
+        /// <param name="str"></param>
+        /// <returns></returns>
+        public static string CreateShortToken(this string str)
+        {
+            var nf = new NumberFormater(36);
+            return nf.ToString(Stopwatch.GetTimestamp());
+        }
+
         /// <summary>
         /// 按字段去重
         /// </summary>

+ 2 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp2.1</TargetFramework>
-    <Version>2.1.5</Version>
+    <Version>2.1.5.1</Version>
     <Authors>懒得勤快</Authors>
     <Company>masuit.com</Company>
     <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。
@@ -73,6 +73,7 @@ string s = html.HtmlSantinizerStandard();//清理后:&lt;div&gt;&lt;span&gt;&l
     <PackageReleaseNotes>如有问题请联系QQ:1170397736,或者到项目的github反馈问题,详细的API文档在github上:https://github.com/ldqk/Masuit.Tools</PackageReleaseNotes>
     <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
     <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
+    <PackageLicenseUrl>https://github.com/ldqk/Masuit.Tools/blob/master/LICENSE</PackageLicenseUrl>
   </PropertyGroup>
 
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">

+ 18 - 0
Masuit.Tools.Core/Strings/NumberFormater.cs

@@ -36,6 +36,24 @@ namespace Masuit.Tools.Strings
             Characters = characters;
         }
 
+        /// <summary>
+        /// 数制格式化器
+        /// </summary>
+        /// <param name="bin">进制</param>
+        public NumberFormater(int bin)
+        {
+            if (bin < 2)
+            {
+                bin = 2;
+            }
+
+            if (bin > 62)
+            {
+                throw new ArgumentException("进制最大支持62进制");
+            }
+            Characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".Substring(0, bin);
+        }
+
         /// <summary>
         /// 数字转换为指定的进制形式字符串
         /// </summary>

+ 15 - 2
Masuit.Tools/Extensions.cs

@@ -1,6 +1,8 @@
-using Newtonsoft.Json;
+using Masuit.Tools.Strings;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Net;
 using System.Text.RegularExpressions;
@@ -1524,7 +1526,7 @@ namespace Masuit.Tools
         /// <param name="str"></param>
         /// <param name="length">生成的字符串长度,越长冲突的概率越小,默认长度为6,最小长度为5,最大长度为22</param>
         /// <returns></returns>
-        public static string CreateShortToken(this string str, int length = 6)
+        public static string CreateShortToken(this string str, int length)
         {
             var temp = Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Trim('=');
             if (length <= 22)
@@ -1540,6 +1542,17 @@ namespace Masuit.Tools
             return Regex.Replace(temp, @"\p{P}|\+", string.Empty);
         }
 
+        /// <summary>
+        /// 生成唯一短字符串
+        /// </summary>
+        /// <param name="str"></param>
+        /// <returns></returns>
+        public static string CreateShortToken(this string str)
+        {
+            var nf = new NumberFormater(36);
+            return nf.ToString(Stopwatch.GetTimestamp());
+        }
+
         /// <summary>
         /// 按字段去重
         /// </summary>

+ 2 - 2
Masuit.Tools/Properties/AssemblyInfo.cs

@@ -36,7 +36,7 @@ using System.Runtime.InteropServices;
 // 方法是按如下所示使用“*”: :
 // [assembly: AssemblyVersion("1.0.*")]
 
-[assembly: AssemblyVersion("2.1.5.0")]
-[assembly: AssemblyFileVersion("2.1.5.0")]
+[assembly: AssemblyVersion("2.1.5.1")]
+[assembly: AssemblyFileVersion("2.1.5.1")]
 [assembly: NeutralResourcesLanguage("zh-CN")]
 

+ 6 - 9
Test/Program.cs

@@ -1,8 +1,7 @@
-using Masuit.Tools.Strings;
+using Masuit.Tools;
 using Masuit.Tools.Systems;
 using System;
 using System.Collections.Generic;
-using System.Diagnostics;
 
 namespace Test
 {
@@ -12,15 +11,13 @@ namespace Test
         {
             var timer = HiPerfTimer.Execute(() =>
             {
-                NumberFormater nf = new NumberFormater(36);
-                var set = new HashSet<string>();
-                for (int i = 0; i < 1000000; i++)
+                var dic = new Dictionary<string, int>();
+                for (int i = 0; i < 10000000; i++)
                 {
-                    string ts = nf.ToString(Stopwatch.GetTimestamp());
-                    //Console.WriteLine(ts);
-                    set.Add(ts);
+                    dic.Add("".CreateShortToken(), 0);
                 }
-                Console.WriteLine(set.Count);
+
+                Console.WriteLine("".CreateShortToken());
             });
             Console.WriteLine(timer);
         }