草庐IT

读C#代码整洁之道笔记02_类、对象和数据结构及编写整洁函数

1. 组织类1.1. 每一个接口、类、结构体和枚举均应当拥有其自身的独立源文件1.2. Pascal命名方法命名命名空间1.3. 测试类定义在独立的程序集1.3.1. 不同程序集的测试放在不同程序集1.3.2. 程序集名称的最后附加Tests命名空间1.4. 公司名称、产品名称和缩写词汇无须使用复数形式2. 单一职责原则2.1. (SingleRespon-sibilityPrinciple,SRP)2.2. 一个类应当只具备一种职责2.3. 类的职责就是类所具备的功能3. 从注释生成文档3.1. 源代码文件的顶部都应当包含版权声明3.2. 命名空间、接口、类、枚举、结构体、方法和属性都应当包

主键、唯一索引、聚集索引、非聚集索引,你真知道他们的区别么?

【讲故事】近端时间一直在做一些数据库查询的工作,主要是根据表中的“日期”与“产品名”两个字段为条件在对表进行相关查询。但当表数据量达到3000万以上时,发现查询速度呈几何级下降,变得超慢不说,而且每查询一次,服务器内存的使用量就一点点上升直至占用100%,我就不得不重启服务器... :(这时,主键、索引、聚集索引、等等、关键词浮现在我的脑海中,知道它们就是提高表查询速度,解决问题的关键。但一时又弄不清它们之间的区别&串并联关系,一系列疑问浮现在我的脑海中:(1)主键就是 唯一索引么?(2)唯一索引 就是 聚集索引 么?(3)聚集索引 与非聚集索引 有什么区别?哪个更快?什么时候用前者、什么时候

主键、唯一索引、聚集索引、非聚集索引,你真知道他们的区别么?

【讲故事】近端时间一直在做一些数据库查询的工作,主要是根据表中的“日期”与“产品名”两个字段为条件在对表进行相关查询。但当表数据量达到3000万以上时,发现查询速度呈几何级下降,变得超慢不说,而且每查询一次,服务器内存的使用量就一点点上升直至占用100%,我就不得不重启服务器... :(这时,主键、索引、聚集索引、等等、关键词浮现在我的脑海中,知道它们就是提高表查询速度,解决问题的关键。但一时又弄不清它们之间的区别&串并联关系,一系列疑问浮现在我的脑海中:(1)主键就是 唯一索引么?(2)唯一索引 就是 聚集索引 么?(3)聚集索引 与非聚集索引 有什么区别?哪个更快?什么时候用前者、什么时候

2万字60道MySQL经典面试题总结(附答案)

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~Github地址:https://github.com/Tyson0314/Java-learning什么是MySQLMySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。数据库的

2万字60道MySQL经典面试题总结(附答案)

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~Github地址:https://github.com/Tyson0314/Java-learning什么是MySQLMySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。数据库的

读C#代码整洁之道笔记03_切面关注点、异常处理和线程与并发

1. 核心关注点1.1. 开发软件的原因2. 切面关注点2.1. 所有的代码领域都需要处理相关的问题3. 结构化模式3.1. 装饰器模式3.1.1. 可以在现有对象上添加新的功能,而不改变其结构3.2. 代理模式3.2.1. 所提供的对象可以替代客户端使用的实际服务对象4. 使用PostSharp实现AOP4.1. 收费软件4.2. 缓存4.3. 日志4.4. 异常4.5. 安全4.6. 验证4.7. 事务4.8. 资源池4.9. 配置4.10. 检测4.11. 推荐使用Castle5. 异常处理5.1. unchecked模式5.1.1. 改善性能5.1.2. 很多情况下unchecked模

读C#代码整洁之道笔记03_切面关注点、异常处理和线程与并发

1. 核心关注点1.1. 开发软件的原因2. 切面关注点2.1. 所有的代码领域都需要处理相关的问题3. 结构化模式3.1. 装饰器模式3.1.1. 可以在现有对象上添加新的功能,而不改变其结构3.2. 代理模式3.2.1. 所提供的对象可以替代客户端使用的实际服务对象4. 使用PostSharp实现AOP4.1. 收费软件4.2. 缓存4.3. 日志4.4. 异常4.5. 安全4.6. 验证4.7. 事务4.8. 资源池4.9. 配置4.10. 检测4.11. 推荐使用Castle5. 异常处理5.1. unchecked模式5.1.1. 改善性能5.1.2. 很多情况下unchecked模

读C#代码整洁之道笔记05_使用工具改善代码和单元测试

1. 高品质的代码1.1. 性能(Performance)1.1.1. 只执行需要的操作,而且执行迅速1.1.2. 不会使系统陷入停顿1.2. 可用性(Availability)1.2.1. 持续在所需的性能水平上保持可用1.2.2. Topic11.3. 安全性(Security)1.3.1. 正确验证输入1.3.2. 防止无效的数据格式或超范围的无效数据1.3.3. 防止恶意攻击代码1.3.4. 身份验证1.3.5. 鉴权操作1.3.6. 具备容错性1.4. 可伸缩性(Scalability)1.4.1. 安全地处理指数级增长的用户数目,而不会令系统停顿1.5. 可维护性(Maintain

读C#代码整洁之道笔记05_使用工具改善代码和单元测试

1. 高品质的代码1.1. 性能(Performance)1.1.1. 只执行需要的操作,而且执行迅速1.1.2. 不会使系统陷入停顿1.2. 可用性(Availability)1.2.1. 持续在所需的性能水平上保持可用1.2.2. Topic11.3. 安全性(Security)1.3.1. 正确验证输入1.3.2. 防止无效的数据格式或超范围的无效数据1.3.3. 防止恶意攻击代码1.3.4. 身份验证1.3.5. 鉴权操作1.3.6. 具备容错性1.4. 可伸缩性(Scalability)1.4.1. 安全地处理指数级增长的用户数目,而不会令系统停顿1.5. 可维护性(Maintain

读C#代码整洁之道笔记04_重构C#代码识别代码坏味道

1. 应用程序级别代码坏味道1.1. 布尔盲点1.1.1. 由于函数使用布尔值而导致的信息缺失1.1.2. 解决方案是将布尔替换为枚举类型1.2. 组合爆炸1.2.1. 不同的代码使用不同的参数组合来执行同一件事情的产物1.2.2. 解决方案使用泛型1.3. 人为复杂性1.3.1. 简单的架构复杂化1.3.2. 解决方案务必保持软件的简单易懂(KeepItSimple,Stupid,KISS)1.4. 数据泥团1.4.1. 相同的字段同时出现在不同的类和参数列表中时1.4.1.1. 说明系统中缺少类定义1.4.2. 识别并泛化缺失的类可以降低系统的复杂度1.5. 粉饰注释1.5.1. 注释中用