随笔分类 - .Net技术
1
摘要:1、安装NuGet包 System.Data.SQLite(System.Data.SQLite.Core、System.Data.SQLite.EF6、System.Data.SQLite.Linq ) SQLite.CodeFirst EntityFramework 2、配置App.config
阅读全文
摘要:术语含义 并发:同时做多件事情; 多线程:并发的一种形式,它采用多个线程来执行程序; 并行处理:把正在执行的大量任务分割成小块,分配给多个同时运行的线程; 异步编程:并发的一种形式, 采用future模式或回调(callback)机制,以避免产生不必要的线程。启动了的操作将会在一段时间后完成; 响应
阅读全文
摘要:客户端发送数据到服务端时可能有以下三种情况: 1.服务端完整接收客户端发送的一条消息;2.客户端发送的一条消息被当成两条消息处理;3.客户端发送的两条消息(甚至更多)被合并成一条消息接收;原因是NetWrokStream写入数据时,数据并没有立即发往远程主机,而是保存在了TCP缓存(TCP Buff
阅读全文
摘要:冒泡排序、插入排序、选择排序它们的时间复杂度都是O(n2),适合小规模数据的排序。 大规模的数据排序可以用时间复杂度为O(nlogn)的排序算法,归并排序和快速排序。 归并排序的原理 将待排序的数组,从数组中间分成左右两部分,然后对左右两部分分别排序,再将排好序的凉部分数组合并在一起,这样就完成待排
阅读全文
摘要:如何分析一个"排序算法"? 执行效率 对于排序算法执行效率分析一般会从几个方面来衡量: 1.最好情况、最坏情况、平均情况时间复杂度 对于排序数据的有序度不同,排序算法在的性能表现会有影响,所以需要分析不同情况下的时间复杂度 2.时间复杂度的系数、常数、低阶 时间复杂度反应的是代码执行时间随数据规模增
阅读全文
摘要:队列: 1.先进先出,后进后出; 2.支持入队Enqueue(将数据放到队尾)和出队Dequeue(取出队头数据)操作; 3.和栈一样属于操作受限的线性表; 如何实现队列? 1.数组实现(顺序队列) 2.链表实现(链式队列) 3.循环队列 队列的常见应用: 1.阻塞队列1)在队列的基础上增加阻塞操作
阅读全文
摘要:转载来源 https://www.cnblogs.com/cncc/p/9840463.html 一、第一种用法: public static IEnumerable<TResult> SelectMany<TSource, TResult>(this IEnumerable<TSource> so
阅读全文
摘要:临界区:描述一段在同一时候只能被一个线程访问的代码。 1.Lock关键字实现临界区,通过"对象锁"的方式,只能锁定引用类型不能锁定值类型,其内部使用Monitor类实现的。例如: lock(_locker) { DoSomething(); } // 等效于 System.Object obj =
阅读全文
摘要:托管的代码就是把有关内存管理(内存申请,内存释放,垃圾回收之类的)全部都是.NET的CLR来管理,就是说使用托管的代码把底层的一些操作都封装起来了,不能直接进行内存的读取之类的和硬件相关的操作,优点就是比较安全,不会出现诸如内存泄露之类的问题,缺点也很明显,不能直接读取内存,性能上会有损失,使用起来
阅读全文
摘要:TCP协议 面向连接的可靠数据传输协议,两个远程主机必须进行握手过程确认连接成功之后才能传输实际的数据,并且连接是全双工的,意思是数据可以使由A流向B也可以由B流向A,可靠的数据传输保证数据一定能够有序的到达,点对点保证一个连接无法将数据发送给多个接收方。 TCP服务端步骤: TCP客户端步骤: U
阅读全文
摘要:Double-Checked Locking 静态初始化 延迟初始化 .Net 4's Lazy<T> type 以上4中方式都是线程安全的单例实现代码,推荐使用Lazy<T>的方式简单且性能良好。
阅读全文
摘要:主窗体Form1 弹窗窗体Form2 在主窗体Form1的Button点击事件中加入: 在弹窗窗体Form2中加入:
阅读全文
摘要:简单介绍一下log4net的主要组成,详细说明可以参考https://blog.csdn.net/binnygoal/article/details/79557746 1.Logger Logger是直接和应用程序交互的组件,是负责日志的记录者,可以同时存在多个Logger,然后由它引用的Appen
阅读全文
摘要:策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 设计原则:将变化部分提取出来进行封装、针对接口编程、多用组合,使用组合建立系统具有很大的弹性,不仅可将算法族封装成类,更可以“在运行时动态地改变行为”。 观察模式 有新类型的观察者出现,主题不需要
阅读全文
摘要:如果需要 I/O 绑定(例如从网络请求数据或访问数据库),则需要利用异步编程。 还可以使用 CPU 绑定代码(例如执行成本高昂的计算),对编写异步代码而言,这是一个不错的方案。 异步模型的基本概述 异步编程的核心是 Task 和 Task<T> 对象,这两个对象对异步操作建模。 它们受关键字 asy
阅读全文
摘要:模态窗口 (ShowDialog)弹出窗口阻止调用窗口的所有消息响应。 只有在弹出窗口结束后调用窗口才能继续。 在模态窗口“关闭”后,窗口并没有真正被“关闭”,“关闭”按钮并没有调用窗体的Close方法,只是将窗体的Visible属性赋值为false,隐藏了窗体,所以模态窗口在不需要用的时候,务必手
阅读全文
摘要:1.声明参数 2.定义Task 3.暂停Task 4.继续Task 5.取消Task 备注:任务取消后如果想重开任务,不能使用已经取消的token,需要重新声明一个对象.
阅读全文
摘要:AutoSizeFormClass类: MainFrom中添加:
阅读全文
摘要:在多线程处理中,lock语句是常见的处理方式,但是如果只是简单的原子性更新,Interlocked类提供更好的新能,为多个线程共享的变量提供原子操作。请考虑使用它替换lock。 示例一,myField变量是递增的: 使用Interlocked.Increment 示例二,判断对象一是否为null,如
阅读全文
摘要:在Task运行过程中,我们可以通过.Net 4中的内置方法来取消Task的运行。 创建一个可取消的Task需要用到下面的一些对象: 1.System.Threading.CancellationTokenSource实例 2.通过CancellationTokenSource.Token属性获得一个
阅读全文
1