自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 资源 (14)
  • 收藏
  • 关注

原创 【C#】BlockingCollection 用法浅析

多线程操作集合时,ConcurrentQueue 是我常用的,一直用得也挺爽,突然发现了 BlockingCollection,原来还可以更简单。。。BlockingCollection<T> 是一个自带阻塞功能的线程安全集合类,和 ConcurrentQueue<T> 有点像,不同的是,BlockingCollection<T> 自带阻塞功能。Add ...

2021-03-30 11:20:00 149

原创 【C#】使用 Castle 实现 AOP,以及 Autofac 集成 Castle

Castle 是 2003 年诞生于 Apache Avalon 项目,目的是为了创建一个IOC 框架。发展到现在已经有四个组件:ORM组件:ActiveRecordIOC组件:Windsor动态代理组件:DynamicProxyWeb MVC组件:MonoRail本文主要介绍 动态代理组件 Castle.DynamicProxy基本用法Castle.DynamicProxy ...

2021-02-22 08:52:00 109

原创 【C#】反射的用法及效率对比

反射实例化类public class Person{ public string Name { get; set; } public Person(string name) { this.Name = name; } public string Say(string msg) { return $"{Name...

2021-02-18 13:13:00 92

原创 【C#】List 并发丢数据问题

项目中出了个 BUG,就在我眼皮子底下,很明显的一个 BUG,愣是看了两天才看出来。我有多个任务并发,任务执行完成后都有一个返回结果,我用一个 List 将结果收集起来,等所有任务完成后,发送出去。结果一直 丢数据。我反复检查逻辑都没有问题,最后恍然 List 是非线程安全的。大家都知道 List 是非线程安全的,但是如果仅有 Add 操作呢?估计有些人就会认为没问题。下面的代码,期望输...

2021-02-09 10:34:00 43

原创 【C#】DockPanelSuite 中 DockState.Document 状态下子窗体控件不显示的解决方案

DockPanelSuite 是 Winform 中优秀的布局控件,但是这次使用过程中却出了个问题。我遇到的问题是这样的,主窗体是通过 ShowDialog 显示的,子窗体的停靠状态为 DockState.Document,主窗体关闭时,并未真正 Close,仅是 Hide。然后问题来了问题1:在主窗体 Load 事件中直接 Show 子窗体,关闭主窗体后再次打开,报错 创建窗口句柄时出错...

2020-12-16 18:41:00 63

原创 【C#】DataGridView 数据绑定的一些细节

多年不写 Winform 了,突然要做一个 winform 项目,各种不顺手,各种百度。DataGridView 数据绑定的一些细节问题,记录备查。数据绑定BindingList<EmployeeVO> dataSource;private async void FrmEmployeeInfo_Load(object sender, System.EventArgs e)...

2020-08-16 18:30:00 29

原创 【设计模式】如何用组合替代继承

如果问面向对象的三大特性是什么,多数人都能回答出来:封装、继承、多态。继承 作为三大特性之一,近来却越来越不推荐使用,更有极端的语言,直接语法中就不支持继承,例如 Go。这又是为什么呢?为什么不推荐使用继承?假设我们要设计一个关于鸟的类。我们将“鸟类”定义为一个抽象类 AbstractBird。所有更细分的鸟,比如麻雀、鸽子、乌鸦等,都继承这个抽象类。大部分鸟都会飞,那我们可不可以在 ...

2020-06-15 09:47:00 30

原创 如何用组合替代继承

如果问面向对象的三大特性是什么,多数人都能回答出来:封装、继承、多态。继承 作为三大特性之一,近来却越来越不推荐使用,更有极端的语言,直接语法中就不支持继承,例如 Go。这又是为什么呢?为什么不推荐使用继承?假设我们要设计一个关于鸟的类。我们将“鸟类”定义为一个抽象类 AbstractBird。所有更细分的鸟,比如麻雀、鸽子、乌鸦等,都继承这个抽象类。大部分鸟都会飞,那我们可不可以在 AbstractBird 抽象类中,定义一个 Fly() 方法呢?答案是否定的。尽管大部分鸟都会飞,但也有特例,

2020-06-15 09:42:45 996

原创 【C#】AutoMapper 使用手册

文章目录1 入门例子2 注册2.1 Profile3 配置3.1 命名约定3.2 配置可见性3.3 全局属性/字段过滤3.4 识别前缀和后缀3.5 替换字符4 调用构造函数5 数组和列表映射5.1 处理空集合5.2 集合中的多态6 方法到属性映射7 自定义映射8 扁平化映射8.1 IncludeMembers9 嵌套映射本文基于 AutoMapper 9.0.0AutoMapper 是一个对象-对象映射器,可以将一个对象映射到另一个对象。官网地址:http://automapper.org/官方

2020-06-12 10:36:34 1130

原创 函数式编程中的基本概念

函数签名假设有一个函数 f,输入一个 int 值,返回一个 string 值,在 C# 中,该函数可以表示为:Func<int, string>我们可以使用箭头(→)符号来表示:f : int → string箭头符号是函数式编程社区的标准函数符号,与语言无关。当没有输入或没有输出(void)时,用 () 表示。如果有多个输入或输出,则用元组表示。例如:Func<string>Func<int, int, int>分别表示为:() → str

2020-06-02 11:40:15 387

原创 【VS】Visual Studio 就可以反编译查看源码了,再见了 Reflector

以前需要反编译的时候,一直都是用的神器 Reflector。但毕竟还是有点不方便,因为要从 VS 切换到另一个工具。而且,Reflector 现在收费了。然而现在才发现,原来 VS 已经自带反编译功能了,不愧是宇宙第一 IDE。工具 → 选项 → 文本编辑器 → c#>高级 → 启用导航到反编译源勾上以后, F12 就可以直接查看反编译后的源代码了。...

2020-05-23 12:58:26 24952 2

原创 【C#】CsvHelper 使用手册

现在网上的 CsvHelper 教程都比较旧,本文基于 CsvHelper 最新版本 15.0.5

2020-05-20 12:12:10 5210

原创 【C#】使用 System.Globalization.DateTimeFormatInfo 屏蔽系统时间格式对代码的影响

时间格式我使用的一直都是 yyyy-MM-dd HH:mm:ss,然后某天,我改成了 yyyy/MM/dd HH:mm:ss,然后神奇的问题就来了。怎么会出现这种情况的呢?因为我手贱改了系统的日期格式。打开 控制面板 → 日期和时间 → 更改日期和时间 → 更改日历设置我把日期格式设置成了 yyyy-MM-dd,然后就这样了。也就是说,系统的时间格式优先级比 ToString 方法要高。我们一般不会去修改系统的时间格式,这时 ToString 方法还是有效的,一旦修改了,ToString 方法就

2020-05-19 13:15:29 864

原创 【swagger】C# 中 swagger 的使用及避坑

文章目录1 安装2 修改名称和版本号3 显示说明4 路由相同,查询参数不同的方法5 忽略 Model 中的某些字段6 传递 header7 出错时的 HTTP 状态码开发 web api 的时候,写文档是个痛苦的事情,而没有文档别人就不知道怎么调用,所以又不得不写。swagger 可以自动生成接口文档,并测试接口,极大的解放了程序员的生产力。1 安装通过 NuGet 安装 Swashbuc...

2020-04-07 12:49:13 4494 2

原创 【C#】Newtonsoft.Json 中 JArray 添加数组报错:Could not determine JSON object type for type 'xxx'

有时我们临时需要一个 JSON 字符串,直接拼接肯定不是好方法,但又懒得去定义一个类,这是用 JObject 就会非常的方便。但是在 JObject 中添加数组却经常被坑。List<string> names = new List<string>{ "Tom", "Jerry"};JArray array = new JArray(names);...

2020-04-03 13:02:49 3258

原创 【C#】比较 Random 与 RandomNumberGenerator 生成随机字符串

生成随机数,第一反应肯定是 Random 类,然而,Random 生成的随机数被称为伪随机数,因为用 Random 生成随机数时,需要用到一个“种子”,而 使用相同的种子,一定会产生相同序列的数字。Random r1 = new Random(1);Console.WriteLine(r1.Next(100)); // 24Random r2 = new Random(1);Consol...

2020-04-02 11:02:48 959

原创 【C#】正则进阶

.NET 中的正则表达式是基于 Perl 5 的正则表达式。超时从 .NET Framework 4.5 开始,正则表达式支持在匹配操作中指定超时时间。如果匹配超时,就会抛出 RegexMatchTimeoutException。所有方法都增加了带超时时间参数的重载:public static Match Match(string input, string pattern, RegexO...

2020-02-12 12:19:18 203

原创 【C#】写文件时如何去掉编码前缀

我们都知道,文件有不同的编码,例如我们常用的中文编码有:UTF8、GK2312 等。Windows 操作系统中,新建的文件会在起始部分加入几个字符的前缀,来识别编码。例如,新建文本文件,写入单词 Hello,另存为 UTF8。Hello 占 5 个字节,但文本大小却是 8 个字节。(win7 系统下还是这样的,win10 已经去掉了编码前缀,所以 win10 下文件大小依然是 5 个字节。看来...

2020-02-10 10:38:16 316

原创 【C#】定时器保活机制引起的内存泄露问题

C# 中有三种定时器,System.Windows.Forms 中的定时器和 System.Timers.Timer 的工作方式是完全一样的,所以,这里我们仅讨论 System.Timers.Timer 和 System.Threading.Timer1、定时器保活先来看一个例子:class Program{ static void Main(string[] args) ...

2020-02-06 10:42:46 643

原创 【VS】NuGet 修改包路径

NuGet 是 .NET 平台下的一个免费、开源的包管理开发工具。修改全局包管理目录通过 NuGet 安装包时,NuGet 先将包下载至一个统一的目录,默认路径是:C:\Users\用户名\.nuget\packages下载的包多了以后,会导致 C 盘空间被大量占用。我们可以通过修改配置将其指定到自定义的目录下。搜索 NuGet.Config 文件,默认位置是:C:\Users\用户名\...

2019-11-20 10:33:00 35

原创 NuGet 修改包路径

NuGet 是 .NET 平台下的一个免费、开源的包管理开发工具。修改全局包管理目录通过 NuGet 安装包时,NuGet 先将包下载至一个统一的目录,默认路径是:C:\Users\用户名\.nuget\packages下载的包多了以后,会导致 C 盘空间被大量占用。我们可以通过修改配置将其指定到自定义的目录下。搜索 NuGet.Config 文件,默认位置是:C:\Users\用户名\A...

2019-11-20 10:32:08 1303

原创 【MySQL】在 Windows 下安装教程、避坑指南

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,2008 年被 SUN 公司收购,后 SUN 公司又被 Oracle 公司收购。一、下载MySQL 官网 https://www.mysql.com/点击 DOWNLOADS 进入下载地址,会看到几个不同的版本:MySQL Enterprise Edition:企业版(收费)MySQL Cluster CGE...

2019-11-19 10:52:00 13

原创 MySQL 在 Windows 下安装教程、避坑指南

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,2008 年被 SUN 公司收购,后 SUN 公司又被 Oracle 公司收购。一、下载MySQL 官网 https://www.mysql.com/点击 DOWNLOADS 进入下载地址,会看到几个不同的版本:MySQL Enterprise Edition:企业版(收费)MySQL Cluster CGE:...

2019-11-19 10:42:08 214

原创 【C#】Newtonsoft.Json 常用方法总结

文章目录1、Entity to Json1.1、准备工作1.2、Entity to Json返回不缩进的 Json 字符串返回缩进的 Json 字符串Json 字符串缩进其他设置1.3、Json to Entity2、Linq To Json2.1、创建对象2.2、从 Json 字符串创建 JObject2.3、从 Entity 创建 JObject用匿名对象创建 JObject2.2、获取值获取...

2019-10-12 09:46:46 1675 1

原创 【Web API】通俗讲解 RESTful

1 什么是 RESTful百度一下 RESTful,查到的资料很多都讲得不清楚,看完了都不知道说的是啥,导致很多人对 RESTful 不甚了解。来看一下常见的解释:(1)神一样的描述REST 并不是“休息”的意思,而是 Representational State Transfer 的简称,即 表现层状态转移。“表现层状态转移”是什么鬼?(2)云里雾里的描述REST 指的是 一组架...

2019-09-26 10:33:00 13

原创 通俗讲解 RESTful

RESTful 是最流行的 API 设计规范,但是什么是 RESTful?表现层状态转移,这恐怕谁都看不懂。本文用最通俗的说法,讲明白什么是 RESTful。

2019-09-26 10:26:35 934 2

原创 Protobuf 安装及 Python、C# 示例

01| 简介02| 安装2.1 Windows 下安装03| 简单使用3.1 编译3.2 Python 示例3.3 C# 示例01| 简介Protobuf(Protocol Buffers),是 Google 开发的一种跨语言、跨平台的可扩展机制,用于序列化结构化数据。与 XML 和 JSON 格式相比,protobuf 更小、更快、更便捷。protobuf 目前支持 C++、Java、...

2019-09-10 10:22:00 14

原创 Protobuf 安装及 Python、C# 使用示例

介绍了 Protobuf 及 Windows 下的安装,Python、C# 中的使用。

2019-09-10 09:58:46 404

原创 【VS Code】配置 Python 开发环境

1、终端运行 Python2、安装 Python 插件3、查看、安装外部库4、代码补全工具5、代码检查工具5.1、pylint5.2、flake8 和 yapf本文基于 VS Code 1.36.1VS Code 里是不包括 Python 的,所以你首先得安装一个 Python。1、终端运行 Python安装完 python 之后,我们可以用任何一个文本编辑工具开始写 python...

2019-09-06 10:03:00 9

原创 VS Code 配置 Python 开发环境

详细介绍 VS Code 中配置 Python 的运行环境及常用的插件。

2019-09-06 09:42:11 4555

原创 【Python】logging.NullHandler 的使用

在使用 peewee 框架时,默认是不会出现日志消息的。from peewee import Model, CharField, DateTimeField, IntegerFieldfrom peewee_mssql import MssqlDatabasedb = MssqlDatabase(database='test', host='.', user='sa', password=...

2019-09-04 11:08:37 812 1

原创 PyCharm:书签的使用

介绍 PyCharm 中匿名书签、带标记书签的使用,以及书签的管理。非常实用的小技巧。

2019-09-03 09:56:55 632

原创 【Python】logging 的巧妙设计

引言logging 的基本用法网上很多,这里就不介绍了。在引入正文之前,先来看一个需求:假设需要将某功能封装成类库供他人使用,如何处理类库中的日志?数年前在一个 C# 开发的项目中,我用了这样的方法:定义一个 logging 基类,所有需要用到日志的类都继承这个基类,这个基类中定义一个 LogHandler 事件,该事件用于实现具体的记录日志动作,同时可以通过将类 A 的 LogHand...

2019-08-26 16:18:22 160

原创 【Python】正则表达式用法

1、正则基础1.1、基础语法1.2、修饰符1.3、贪婪与懒惰2、正则进阶2.1、捕获分组2.2、零宽断言2.3、条件匹配2.4、findall结语导读:正则在各语言中的使用是有差异的,本文以 Python 3 为基础。本文主要讲述的是正则的语法,对于 re 模块不做过多描述,只会对一些特殊地方做提示。很多人觉得正则很难,在我看来,这些人一定是没有用心。其实正则很简单,根据二八原则,我们...

2019-08-16 12:03:00 7

原创 写爬虫,不会正则怎么行?

正则其实很简单,本文以 Python 语言为基础,全面介绍了 Python 中正则的使用及各种坑。

2019-08-16 10:48:25 499

原创 PyCharm 配置 Git 教程

之前给大家介绍了 Git 安装及使用指南,今天再给大家介绍一下在 Pycharm 中使用 Git。

2019-07-30 13:10:52 612

原创 【PyCharm】配置 Git 教程

之前给大家介绍了 Git 安装及使用指南,今天再给大家介绍一下在 PyCharm 中使用 Git。1打开 File -> Settings -> Version Control -> Git,在 Path to Git executable 处选择 git 的安装位置。配置完成之后,点击【Test】按钮,如果成功,则会显示 Git 版本信息,如下图:2点击 VC...

2019-07-30 13:07:00 9

原创 VS Code 安装 LeetCode 插件

直接在 LeetCode 上写代码,那是很痛苦的一件事,那就相当于用 txt 写代码一样,没有 IDE 的各种功能。VS Code 的 LeetCode 插件帮助我们解决了这一问题。

2019-07-29 10:10:58 7480 6

原创 【VS Code】安装 LeetCode 插件

练习算法绕不开的一个网站就是力扣,很多小伙伴为了拿到大厂 offer,刷题都刷到吐了。然而如果直接在 LeetCode 上写代码,那是很痛苦的一件事,那就相当于用 txt 写代码一样,没有 IDE 的各种功能。VS Code 的 LeetCode 插件帮助我们解决了这一问题。以下是官方教程:https://github.com/jdneo/vscode-leetcode/blob/mast...

2019-07-29 10:08:00 26

原创 Git 安装及使用指南

文章目录1 简介1.1 Git1.2 Github2 Git 在 Windows 下的安装和使用2.1 msysgit2.2 Tortoisegit2.2.1 安装2.2.2 配置2.2.3 简单使用1 简介1.1 GitGit是目前世界上最先进的分布式版本控制系统(没有之一)。1.1 Git 与 SVN 的区别:SVN 是集中式版本控制系统,版本库是集中放在中央服务器的。协同工作的人们...

2019-07-23 11:32:37 756

Python 扫雷

基于Python3.6 和 pygame1.9.4,仿照 XP上的扫雷开发,玩法完全一样

2018-09-10

Python 贪吃蛇

Python 游戏入门例子,需要用到 pygame 库。按方向键或WSAD移动,回车键开始,空格键按一下暂停,再按一下继续。每吃一个食物加10分,每100分增加一次速度。没有做关卡,我自己最高玩到了1100分,蛇太长了,速度太快了,GAME OVER

2018-09-05

Python游戏编程入门 源代码

Python游戏编程入门,[美]Jonathan S·Harbour 著,李强 译,这是随书源码,未经改动。我按书中代码敲了,部分是有问题的,稍后我将上传我修改后的代码。用于熟悉 pygame 还是可以的。

2018-09-02

Python 爬取豆瓣读书

python 版本 3.6 入门级爬虫,爬取豆瓣读书,需要用到bs4、requests

2018-08-18

Python 爬取煎蛋妹子图片

Python3入门级爬虫,爬取煎蛋图片,需要用到bs4、selenium、requests

2018-08-13

python爬取豆瓣电影Top250

Python3爬虫入门,爬取豆瓣电影Top250的排名、中文名称、豆瓣评分、时间、地区等内容,需要用到requests、bs4

2018-08-06

NPOI操作Excel

NPOI操作Excel,设置单元格样式,合并单元格

2016-11-29

NPOI导入导出Excel

调用NPOI导入导出Excel,无需安装office

2016-11-29

C# 压缩及解压缩ZIP文件

压缩解压缩ZIP文件。调用时添加ICSharpCode.SharpZipLib.dll的引用。

2012-03-19

C# 调用WinRAR压缩和解压文件

C# 调用WinRAR压缩和解压文件。必须安装WinRAR。

2012-03-19

支持多选的下拉框控件

支持多选的下拉框控件。控件继承自ComboBox,下拉框里放的是CheckedListBox

2012-03-14

可多选的下拉框控件

支持多选的下拉框控件。继承自ComboBox,下拉框中放的是CheckedListBox

2012-03-14

C# 导出Excel

将DataTable数据导出到Excel,必须安装offic2003或以上版本。

2012-03-14

支持树结构的下拉框

此控件将TreeView作为ComboBox的下拉框显示,并且支持多选。

2012-03-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除