
C# 知识点
2b勿扰
专注技术的研究
展开
-
C#/.NET Socket的使用
客户端/// <summary>/// 发起socket请求/// </summary>class Program{ static void Main(string[] args) { try { Console.WriteLine("启动一个Socket客户端链接"); ...原创 2020-01-15 16:58:16 · 18707 阅读 · 0 评论 -
EF 分布式事务的封装
封装public class UnitOfWork{ public static void Invoke(Action action) { TransactionScope transaction = null; try { transaction = new TransactionScope(); ...原创 2020-01-11 22:23:24 · 18565 阅读 · 0 评论 -
EF 分布式事务的使用
using (JDDbContext dbContext = new JDDbContext()){ using (TransactionScope trans = new TransactionScope()) { User userNew1 = new User() { Account = "Admin", ...原创 2020-01-11 21:38:24 · 20010 阅读 · 0 评论 -
EF 导航属性的使用
//1 默认情况下,导航属性是延迟查询;//条件是virtaul属性+默认配置using (JDDbContext dbContext = new JDDbContext()){ var companyList = dbContext.Set<Company>().Where(c => c.Id < 20); foreach (var company ...原创 2020-01-11 21:34:41 · 19629 阅读 · 0 评论 -
EF 增删改查的语句的写法整理
in 查询var list = dbContext.Users.Where(u => new int[] { 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 14, 17 }.Contains(u.Id));//in查询foreach (var user in list){ Console.WriteLine(user.Name);} var list ...原创 2020-01-11 11:41:13 · 19446 阅读 · 0 评论 -
EF 增删改查的内存状态详解
User userNew = new User(){ Account = "Admin", State = 0, CompanyId = 4, CompanyName = "天国集团", CreateTime = DateTime.Now, CreatorId = 1, Email = "2528877987@qq.com", La...原创 2020-01-11 14:46:54 · 18397 阅读 · 1 评论 -
C#/.NET 系统优化专题(缓存底层源码cache)
public class CustomCache //: ICache { //ConcurrentDictionary private static readonly object CustomCache_Lock = new object(); /// <summary> /// 主动清理 ...原创 2020-01-03 19:44:18 · 20251 阅读 · 0 评论 -
c# 数据结构与算法解读篇(键值对key-value的使用)
key-value的特点: 读取&增删都快? 有 hash散列 字典key-value,一段连续有限空间放value(开辟的空间比用到的多,hash是用空间换性能),基于key散列计算得到地址索引,这样读取快增删也快,删除时也是计算位置,增加也不影响别人 肯定会出现2个key(散列冲突),散列结果一致18,可以让第二次的+1,可能会造成效率的降低,尤其是数据量大的情况下,以...原创 2019-12-30 21:15:27 · 24463 阅读 · 2 评论 -
c# 数据结构与算法解读篇(集合Set的使用)
集合的特性:set纯粹的集合,容器,东西丢进去,唯一性 无序的。//集合:hash分布,元素间没关系,动态增加容量 去重//统计用户IP;IP投票 交叉并补--二次好友/间接关注/粉丝合集Console.WriteLine("***************HashSet<string>******************");HashSet<string>...原创 2019-12-30 20:56:49 · 22286 阅读 · 0 评论 -
c# 数据结构与算法解读篇(链表的使用)
链表的特点:非连续摆放,存储数据+地址,找数据的话就只能顺序查找,读取慢;增删快。//LinkedList:泛型的特点;链表,元素不连续分配,每个元素都有记录前后节点//节点值可以重复//能不能下标访问?不能,找元素就只能遍历 查找不方便//增删 就比较方便Console.WriteLine("***************LinkedList<T>-*********...原创 2019-12-30 20:48:04 · 20421 阅读 · 0 评论 -
c# 数据结构与算法解读篇(数组的使用)
数组的特点:内存连续存储,节约空间,可以索引访问,读取快,增删慢//Array:在内存上连续分配的,而且元素类型是一样的//可以坐标访问 读取快--增删慢,长度不变Console.WriteLine("***************Array-start******************");int[] Arraytoint = new int[10];Arraydata [0]...原创 2019-12-30 20:36:04 · 20224 阅读 · 0 评论 -
23种设计模式专题三(行为型设计模式)
行为型设计模式:关注对象和行为的分离原创 2019-12-08 22:01:32 · 2573 阅读 · 0 评论 -
23种设计模式专题二(结构型设计模式)
结构型设计模式:类与类之间的关系原创 2019-12-08 22:00:23 · 2507 阅读 · 0 评论 -
23种设计模式专题一(创建型设计模式)
创建型设计模式:关注对象的创建原创 2019-12-08 21:59:23 · 2688 阅读 · 0 评论 -
设计模式六大原则
父类+子类原创 2019-12-08 19:23:04 · 2445 阅读 · 0 评论 -
AOP底层实现专题(装饰器模式/代理模式 静态实现)
/// <summary> /// 装饰器模式实现静态代理 /// AOP 在方法前后增加自定义的方法 /// </summary> public class DecoratorAOP { public static void Show() { User user = new U...原创 2019-12-07 19:44:55 · 2588 阅读 · 0 评论 -
C# 异步专题(async/await)
private static async Task<long> SumAsync() { Console.WriteLine($"SumAsync 111 start ManagedThreadId={Thread.CurrentThread.ManagedThreadId}"); long result = 0;...原创 2019-12-07 11:43:59 · 2483 阅读 · 0 评论 -
C# 解决多线程随机数重复问题
/// <summary> /// new Random().Next(1, 100); 多线程同时执行结果很高概率相同, /// 是用的当前时间为seed,时间相同结果相同 /// /// 解决随机数重复问题 /// 同时模拟远程请求的随机延时 /// </summary> public class RandomH...原创 2019-12-07 10:35:09 · 3471 阅读 · 0 评论 -
C# 异步专题(线程安全问题)
private static readonly object Obj_Lock = new object();//1 Lock;不能锁null,不建议大家锁String; 锁 this//使用锁:private static readonly object Obj_Lock = new object()//锁的作用:排他//2 线程安全集合 // System.Collections....原创 2019-12-06 23:12:57 · 3014 阅读 · 0 评论 -
C# 异步专题(多线程异常取消)
CancellationTokenSource cts = new CancellationTokenSource(); //线程安全 //cts 有个状态值 IsCancellationRequested 初始化位false//提供一个Cancel() 方法改变IsCancellationRequested状态(不能修改)try{List<Task> taskList =...原创 2019-12-06 22:16:04 · 2686 阅读 · 0 评论 -
C# 异步专题【4.5版本】(parallel实现异步)
//多线程中控制执行顺序,一直是一个难题,使用Parallel可以控制线程的执行顺序。//Parallel并发执行了五个委托,开启了新线程,主线程参与计算,界面会阻塞// Task WaitAll + 主线程Parallel.Invoke(() => { this.DoSomethingLong("btnParallel_Click_1"); },() => { this....原创 2019-12-06 19:30:27 · 2928 阅读 · 0 评论 -
C# 异步专题【3.0版本】(Task实现异步)
一:Task实现异步几种方式Task task = new Task(() =>{this.DoSomethingLong("btntask_Click1");});task.Start();//开启了一个新的线程Task.Run(() =>{this.DoSomethingLong("btntask_Click2");});TaskFactory taskFa...原创 2019-12-06 15:55:09 · 2803 阅读 · 0 评论 -
C# 异步专题【2.0版本】(threadpool实现异步)
一:线程池的基本使用ThreadPool.QueueUserWorkItem(o => { Console.WriteLine($"传进来的参数:{o}"); this.DoSomethingLong("ThreadPool.QueueUserWorkItem1");//开启了一...原创 2019-12-06 11:45:17 · 2595 阅读 · 0 评论 -
C# 异步专题【1.0版本】(thread实现异步)
一:有参数ParameterizedThreadStart threadStart = ar => { this.DoSomethingLong("btnThread_Click"); Console.WriteLine($"****************btnThread_Click End ...原创 2019-12-05 22:15:50 · 2733 阅读 · 0 评论 -
C# 异步专题(委托实现异步)
AsyncCallback callback = ar => { Console.WriteLine($"计算结束了。。。。{Thread.CurrentThread.ManagedThreadId}"); }; IAsyn...原创 2019-12-05 17:43:32 · 2576 阅读 · 0 评论 -
WINFORM 底层原理的讲解(发布订阅)
触发的事件函数public static void Publisher() { Phone phone = new Phone() { Id = 123, Name = "华为P9", Price = 2499 }...原创 2019-11-27 18:36:48 · 1027 阅读 · 0 评论