摘要:
多线程操作集合时,ConcurrentQueue 是我常用的,一直用得也挺爽,突然发现了 BlockingCollection,原来还可以更简单。。。 BlockingCollection<T> 是一个自带阻塞功能的线程安全集合类,和 ConcurrentQueue<T> 有点像,不同的是,Bloc 阅读全文
摘要:
Castle 是 2003 年诞生于 Apache Avalon 项目,目的是为了创建一个IOC 框架。发展到现在已经有四个组件: ORM组件:ActiveRecord IOC组件:Windsor 动态代理组件:DynamicProxy Web MVC组件:MonoRail 本文主要介绍 动态代理组 阅读全文
摘要:
反射实例化类 public class Person { public string Name { get; set; } public Person(string name) { this.Name = name; } public string Say(string msg) { return 阅读全文
摘要:
项目中出了个 BUG,就在我眼皮子底下,很明显的一个 BUG,愣是看了两天才看出来。 我有多个任务并发,任务执行完成后都有一个返回结果,我用一个 List 将结果收集起来,等所有任务完成后,发送出去。结果一直 丢数据。 我反复检查逻辑都没有问题,最后恍然 List 是非线程安全的。 大家都知道 Li 阅读全文
摘要:
DockPanelSuite 中 DockState.Document 状态下子窗体控件不显示的解决方案 阅读全文
摘要:
多年不写 Winform 了,突然要做一个 winform 项目,各种不顺手,各种百度。 DataGridView 数据绑定的一些细节问题,记录备查。 数据绑定 BindingList<EmployeeVO> dataSource; private async void FrmEmployeeInf 阅读全文
摘要:
如果问面向对象的三大特性是什么,多数人都能回答出来:封装、继承、多态。 继承 作为三大特性之一,近来却越来越不推荐使用,更有极端的语言,直接语法中就不支持继承,例如 Go。这又是为什么呢? 为什么不推荐使用继承? 假设我们要设计一个关于鸟的类。 我们将“鸟类”定义为一个抽象类 AbstractBir 阅读全文
摘要:
本文基于 AutoMapper 9.0.0 AutoMapper 是一个对象-对象映射器,可以将一个对象映射到另一个对象。 官网地址:http://automapper.org/ 官方文档:https://docs.automapper.org/en/latest/ 1 入门例子 public cl 阅读全文
摘要:
函数签名 假设有一个函数 f,输入一个 int 值,返回一个 string 值,在 C# 中,该函数可以表示为: Func<int, string> 我们可以使用箭头(→)符号来表示: f : int → string 箭头符号是函数式编程社区的标准函数符号,与语言无关。 当没有输入或没有输出(vo 阅读全文
摘要:
以前需要反编译的时候,一直都是用的神器 Reflector。但毕竟还是有点不方便,因为要从 VS 切换到另一个工具。而且,Reflector 现在收费了。 然而现在才发现,原来 VS 已经自带反编译功能了,不愧是宇宙第一 IDE。 工具 → 选项 → 文本编辑器 → c 高级 → 启用导航到反编译源 阅读全文
摘要:
现在网上的 CsvHelper 教程都比较旧,本文基于 CsvHelper 最新版本 15.0.5 阅读全文
摘要:
时间格式我使用的一直都是 yyyy-MM-dd HH:mm:ss,然后某天,我改成了 yyyy/MM/dd HH:mm:ss,然后神奇的问题就来了。 阅读全文
摘要:
@[toc] 开发 web api 的时候,写文档是个痛苦的事情,而没有文档别人就不知道怎么调用,所以又不得不写。 swagger 可以自动生成接口文档,并测试接口,极大的解放了程序员的生产力。 1 安装 通过 NuGet 安装 Swashbuckle。 安装完成后,App_Start 文件夹下会多 阅读全文
摘要:
有时我们临时需要一个 JSON 字符串,直接拼接肯定不是好方法,但又懒得去定义一个类,这是用 就会非常的方便。 但是在 中添加数组却经常被坑。 输出结果: 非常正确,但如果把 换成 就不对了。 这么写会报: Could not determine JSON object type for type 阅读全文
摘要:
生成随机数,第一反应肯定是 类,然而, 生成的随机数被称为伪随机数,因为用 生成随机数时,需要用到一个“种子”,而 使用相同的种子,一定会产生相同序列的数字 。 如果在创建 时没有提供种子,那么就将用当前系统时间来生成种子。 由于系统时钟只有有限的粒度,因此两个创建时间非常相近(一般在 10 毫秒之 阅读全文
摘要:
假设一个密码要求长度大于 8 位,至少包含一个数字、一个小写字母、一个大写字母,如果用一条正则验证? 阅读全文
摘要:
我们都知道,文件有不同的编码,例如我们常用的中文编码有:UTF8、GK2312 等。 Windows 操作系统中,新建的文件会在起始部分加入几个字符的前缀,来识别编码。 例如,新建文本文件,写入单词 ,另存为 UTF8。 占 5 个字节,但文本大小却是 8 个字节。(win7 系统下还是这样的,wi 阅读全文
摘要:
本文讨论了 System.Timers.Timer 和 System.Threading.Timer 的保活机制引起的内存泄露问题 阅读全文
摘要:
NuGet 是 .NET 平台下的一个免费、开源的包管理开发工具。 修改全局包管理目录 通过 NuGet 安装包时,NuGet 先将包下载至一个统一的目录,默认路径是: 下载的包多了以后,会导致 C 盘空间被大量占用。我们可以通过修改配置将其指定到自定义的目录下。 搜索 文件,默认位置是: ,在根节 阅读全文
摘要:
新手在安装 MySQL 时还是有许多坑的 阅读全文