Browse Source

README.md

懒得勤快 3 years ago
parent
commit
796a60a0b3
1 changed files with 32 additions and 41 deletions
  1. 32 41
      README.md

+ 32 - 41
README.md

@@ -341,16 +341,7 @@ mtd.Start();//开始下载
 //mtd.Pause(); // 暂停下载
 //mtd.Resume(); // 继续下载
 ```
-### 17.Socket客户端操作类
-```csharp
-var tcpClient = new TcpClient(AddressFamily.InterNetwork);
-Socket socket = tcpClient.ConnectSocket(IPAddress.Any,5000);
-socket.SendFile("D:\\test\\1.txt",false,i =>
-{
-    Console.WriteLine("已发送"+i+"%");
-});
-```
-### 18.加密解密/hash
+### 17.加密解密/hash
 ```csharp
 var enc="123456".MDString();// MD5
 var enc="123456".MDString("abc");// MD5加盐
@@ -377,7 +368,7 @@ string s = "123".Crc32();// 生成crc32摘要
 string s = "123".Crc64();// 生成crc64摘要
 string s = "123".SHA256();// 生成SHA256摘要
 ```
-### 19.实体校验
+### 18.实体校验
 ```csharp
 public class MyClass
 {
@@ -403,14 +394,14 @@ public class MyClass
     public List<string> Strs { get; set; }
 }
 ```
-### 20.HTML操作
+### 19.HTML操作
 ```csharp
 List<string> srcs = "html".MatchImgSrcs().ToList();// 获取html字符串里所有的img标签的src属性
 var imgTags = "html".MatchImgTags();//获取html字符串里的所有的img标签
 var str="html".RemoveHtmlTag(); // 去除html标签
 ...
 ```
-### 21.DateTime扩展
+### 20.DateTime扩展
 ```csharp
 double milliseconds = DateTime.Now.GetTotalMilliseconds();// 获取毫秒级时间戳
 double microseconds = DateTime.Now.GetTotalMicroseconds();// 获取微秒级时间戳
@@ -419,7 +410,7 @@ double seconds = DateTime.Now.GetTotalSeconds();// 获取秒级时间戳
 double minutes = DateTime.Now.GetTotalMinutes();// 获取分钟级时间戳
 ...
 ```
-### 22.IP地址和URL
+### 21.IP地址和URL
 ```csharp
 bool inRange = "192.168.2.2".IpAddressInRange("192.168.1.1","192.168.3.255");// 判断IP地址是否在这个地址段里
 bool isPrivateIp = "172.16.23.25".IsPrivateIP();// 判断是否是私有地址
@@ -430,7 +421,7 @@ string isp = "114.114.114.114".GetISP(); // 获取ISP运营商信息
 PhysicsAddress physicsAddress = "114.114.114.114".GetPhysicsAddressInfo().Result;// 获取详细地理信息对象
 Tuple<string, List<string>> ipAddressInfo = "114.114.114.114".GetIPAddressInfo().Result;// 获取详细地理信息集合
 ```
-### 23.元素去重
+### 22.元素去重
 ```csharp
 var list = new List<MyClass>()
 {
@@ -451,7 +442,7 @@ List<MyClass> classes = list.DistinctBy(c => c.Email).ToList();
 Console.WriteLine(classes.Count==1);//True
 ```
 
-### 24.枚举扩展
+### 23.枚举扩展
 ```csharp
 public enum MyEnum
 {
@@ -472,7 +463,7 @@ string display = MyEnum.Read.GetDisplay();// 获取Display标签的Name属性
 var value = typeof(MyEnum).GetValue("Read");//获取字符串表示值对应的枚举值
 string enumString = 0.ToEnumString(typeof(MyEnum));// 获取枚举值对应的字符串表示
 ```
-### 25.定长队列和ConcurrentHashSet实现
+### 24.定长队列和ConcurrentHashSet实现
 `如果是.NET5及以上,推荐使用框架自带的Channel实现该功能`
 ```csharp
 LimitedQueue<string> queue = new LimitedQueue<string>(32);// 声明一个容量为32个元素的定长队列
@@ -481,19 +472,19 @@ ConcurrentLimitedQueue<string> queue = new ConcurrentLimitedQueue<string>(32);//
 ```csharp
 var set = new ConcurrentHashSet<string>(); // 用法和hashset保持一致
 ```
-### 26.反射操作
+### 25.反射操作
 ```csharp
 MyClass myClass = new MyClass();
 PropertyInfo[] properties = myClass.GetProperties();// 获取属性列表
 myClass.SetProperty("Email","[email protected]");//给对象设置值
 myClass.DeepClone(); // 对象深拷贝,带嵌套层级的
 ```
-### 27.获取线程内唯一对象
+### 26.获取线程内唯一对象
 ```csharp
 CallContext<T>.SetData("db",dbContext);//设置线程内唯一对象
 CallContext<T>.GetData("db");//获取线程内唯一对象
 ```
-### 28.asp.net core 获取静态的HttpContext对象
+### 27.asp.net core 获取静态的HttpContext对象
 Startup.cs
 ```csharp
 public void ConfigureServices(IServiceCollection services)
@@ -517,7 +508,7 @@ public async Task<IActionResult> Index()
     HttpContext context = HttpContext2.Current;
 }
 ```
-### 29.邮件发送
+### 28.邮件发送
 ```csharp
 new Email()
 {
@@ -534,7 +525,7 @@ new Email()
     Console.WriteLine(s);// 发送成功后的回调
 });// 异步发送邮件
 ```
-### 30.图像的简单处理
+### 29.图像的简单处理
 ```csharp
 ImageUtilities.CompressImage(@"F:\src\1.jpg", @"F:\dest\2.jpg");//无损压缩图片
 
@@ -567,14 +558,14 @@ var sim=ImageHasher.Compare(hash1,hash2); // 图片的相似度,范围:[0,1]
 
 var imageFormat=stream.GetImageType(); // 获取图片的真实格式
 ```
-### 31.随机数
+### 30.随机数
 ```csharp
 Random rnd = new Random();
 int num = rnd.StrictNext();//产生真随机数
 double gauss = rnd.NextGauss(20,5);//产生正态高斯分布的随机数
 var s = new NumberFormater(62).ToString(new Random().Next(100000, int.MaxValue));//生成随机字符串
 ```
-### 32.权重筛选功能
+### 31.权重筛选功能
 ```csharp
 var data=new List<WeightedItem<string>>()
 {
@@ -597,7 +588,7 @@ var selector = new WeightedSelector<string>(new List<WeightedItem<string>>()
 var item = selector.Select();//按权重选出1个元素
 var list = selector.SelectMultiple(3);//按权重选出3个元素
 ```
-### 33.EF Core支持AddOrUpdate方法
+### 32.EF Core支持AddOrUpdate方法
 ```csharp
 /// <summary>
 /// 按Id添加或更新文章实体
@@ -608,12 +599,12 @@ public override Post SavePost(Post t)
     return t;
 }
 ```
-### 34.敏感信息掩码
+### 33.敏感信息掩码
 ```csharp
 "13123456789".Mask(); // 131****5678
 "[email protected]".MaskEmail(); // a****[email protected]
 ```
-### 35.集合扩展
+### 34.集合扩展
 ```csharp
 var list = new List<string>()
 {
@@ -708,13 +699,13 @@ var sect=list.IntersectAll();// [3]
 list.ChangeIndex(item,3); // 将元素item的索引位置变为第3个
 list.ChangeIndex(t=>t.Id=="123",2); // 将id为123的元素的索引位置变为第2个
 ```
-### 36.Mime类型
+### 35.Mime类型
 ```csharp
 var mimeMapper = new MimeMapper();
 var ext = mimeMapper.GetExtensionFromMime("image/jpeg"); // .jpg
 var mime = mimeMapper.GetMimeFromExtension(".jpg"); // image/jpeg
 ```
-### 37.日期时间扩展
+### 36.日期时间扩展
 ```csharp
 DateTime.Now.GetTotalSeconds(); // 获取该时间相对于1970-01-01 00:00:00的秒数
 DateTime.Now.GetTotalMilliseconds(); // 获取该时间相对于1970-01-01 00:00:00的毫秒数
@@ -731,12 +722,12 @@ var (intersected,range2) = range.Intersect(DateTime.Parse("2020-8-4"), DateTime.
 range.Contains(DateTime.Parse("2020-8-3"), DateTime.Parse("2020-8-4"));//判断是否包含某个时间段,true
 ...
 ```
-### 38.流转换
+### 37.流转换
 ```csharp
 stream.SaveAsMemoryStream(); // 任意流转换成内存流
 stream.ToArray(); // 任意流转换成二进制数组
 ```
-### 39.数值转换
+### 38.数值转换
 ```csharp
 1.2345678901.Digits8(); // 将小数截断为8位
 1.23.ConvertTo<int>(); // 小数转int
@@ -744,7 +735,7 @@ stream.ToArray(); // 任意流转换成二进制数组
 bool b=1.23.TryConvertTo<T>(out result); // 小数转T基本类型
 var num=1.2345.ToDecimal(2); //转decimal并保留两位小数
 ```
-### 40.INI配置文件操作
+### 39.INI配置文件操作
 ```csharp
 INIFile ini=new INIFile("filename.ini");
 ini.IniWriteValue(section,key,value); // 写值
@@ -752,13 +743,13 @@ ini.IniReadValue(section,key); // 读值
 ini.ClearAllSection(); // 清空所有配置节
 ini.ClearSection(section); // 清空配置节
 ```
-### 41.雷达图计算引擎
+### 40.雷达图计算引擎
 应用场景:计算两个多边形的相似度,用户画像之类的
 ```csharp
 var points=RadarChartEngine.ComputeIntersection(chart1,chart2); //获取两个多边形的相交区域
 points.ComputeArea(); //计算多边形面积
 ```
-### 42.树形结构实现
+### 41.树形结构实现
 基本接口类:  
 ITreeChildren:带Children属性的接口  
 ITreeParent:带Parent属性的接口  
@@ -778,7 +769,7 @@ tree.Path(); // 全路径
 var tree=list.ToTree(c => c.Id, c => c.Pid);//继承自ITreeParent<T>, ITreeChildren<T>的集合转换成树形结构
 var tree=list.ToTreeGeneral(c => c.Id, c => c.Pid);//一般的集合转换成树形结构
 ```
-### 43.简单的Excel导出
+### 42.简单的Excel导出
 需要额外依赖包:`Masuit.Tools.Excel`
 ```csharp
 var stream=list.Select(item=>new{
@@ -797,7 +788,7 @@ var stream=list.ToDataTable("Sheet1").ToExcel("文件密码");
 5. ToExcel方法支持DataTable、List<DataTable>、Dictionary<string, DataTable>类型的直接调用
    
 
-### 44.EFCore实体对比功能
+### 43.EFCore实体对比功能
 获取指定实体的变更
 ```csharp
 var changes=dbContext.GetChanges<Post>();//获取变更字段信息
@@ -813,12 +804,12 @@ var removed=dbContext.GetRemoved();//获取被移除的实体字段信息
 var allchanges=dbContext.GetAllChanges();//获取增删改的实体字段信息  
 ```
 对比信息包含属性信息、旧值、新值、实体信息、键信息、变更状态等
-### 45.任何类型支持链式调用
+### 44.任何类型支持链式调用
 ```csharp
 a.Next(func1).Next(func2).Next(func3);
 "123".Next(s=>s.ToInt32()).Next(x=>x*2).Next(x=>Math.Log(x));
 ```
-### 46.Newtonsoft.Json的只允许字段反序列化行为的契约解释器
+### 45.Newtonsoft.Json的只允许字段反序列化行为的契约解释器
 #### DeserializeOnlyContractResolver
 该解释器针对类属性被DeserializeOnlyJsonPropertyAttribute标记的,在反序列化的时候生效,在序列化的时候忽略
 ```csharp
@@ -864,7 +855,7 @@ public class ClassDto
 #### CompositeContractResolver
 该解释器是DeserializeOnlyContractResolver和FallbackJsonPropertyResolver的融合版
 
-### 47. ASP.NET Core Action同时支持queryString、表单和json请求类型的模型绑点器BodyOrDefaultModelBinder
+### 46. ASP.NET Core Action同时支持queryString、表单和json请求类型的模型绑点器BodyOrDefaultModelBinder
 用法:  
 引入包:`Masuit.Tools.AspNetCore`  
 ```shell
@@ -892,13 +883,13 @@ Startup配置:
         }
 ```
 
-### 48. 字符串SimHash相似度算法
+### 47. 字符串SimHash相似度算法
 ```csharp
 var dis="12345678".HammingDistance("1234567");
 var dis=new SimHash("12345678").HammingDistance(new SimHash("1234567"));
 ```
 
-### 49. 真实文件类型探测
+### 48. 真实文件类型探测
 ```csharp
 // 多种方式,任君调用
 var detector=new FileInfo(filepath).DetectFiletype();