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