12 丹枫无迹

尚未进行身份认证

我要认证

[大龄码农的Python之路]号主

等级
TA的排名 4w+

如何用组合替代继承

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

2020-06-15 09:42:45

【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

函数式编程中的基本概念

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

2020-06-02 11:40:15

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

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

2020-05-23 12:58:26

【C#】CsvHelper 使用手册

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

2020-05-20 12:12:10

【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

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

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

2020-04-07 12:49:13

【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

【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

【C#】正则进阶

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

2020-02-12 12:19:18

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

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

2020-02-10 10:38:16

【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

NuGet 修改包路径

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

2019-11-20 10:32:08

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:38:11

【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:44:39

通俗讲解 RESTful

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

2019-09-26 10:21:08

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

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

2019-09-10 09:56:29

VS Code 配置 Python 开发环境

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

2019-09-06 09:40:38

【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:05:34

PyCharm:书签的使用

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

2019-09-03 09:56:55

查看更多

勋章 我的勋章
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享精英
    分享精英
    成功上传11个资源即可获取