随笔分类 - 内功-嵩山派
附表:错误码列表
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 错误码 中文描述 说明 00000 一切 OK 正确执行后的返回 A0001 用户端错误 一级宏观错误码 A0100 用户注册错误 二级宏观错误码 A0101 用户未同意隐私协议 A0102 注册国家或地区有限 A0110 用户名校验失败 A011

设计规约
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】存储方案和底层数据结构的设计获得评审一致通过,并沉淀为文档。 说明:有缺陷的底层数据结构容易导致系统风险上升,可扩展性下降,重构成本也会因历史数据迁移和系统平滑过渡而陡然增加,所以,存储方案和底层数据结构都需要认真地进行设计和评审,生产环境

工程结构(三)服务器
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【推荐】高并发服务器建议调小 TCP 协议的 time_wait 超时时间。 说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服务器端会因为处于 time_wait 状态的连接过多,可能无法建立新的连

工程结构(二)二方库依赖
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】定义 GAV 遵从如下规则: 1)GroupID 格式:com.{公司/BU}.业务线[.子业务线],最多 4 级。 说明:{公司/BU} 例如:alibaba/taobao/tmall/aliexpress 等 BU 一级;子业务线可选。

工程结构(一)应用分层
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【推荐】根据业务结构实践,结合业界分层规范与流行技术框架分析,推荐分层结构如图所示,默认上层依赖于下层,箭头关系表示可直接依赖,如:开发 API 层可以依赖于 Web 层(Controller 层),也可以直接依赖于 Service 层,依此类推:

MySQL数据库(四)ORM映射
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。 说明: 1)增加查询分析器解析成本。 2)增减字段容易与 resultMap 配置不一致。 3)无用字段增加网络消耗,尤其是 text 类型的字段。 【强制】PO

MySQL数据库(三)SQL语句
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】不要使用 count(列名) 或 count(常量) 来替代 count(),count() 是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 null 和非 null 无关。 说明:count(*) 会统计值为 null 的行,

MySQL数据库(二)索引规约
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。 说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有

MySQL数据库(一)建表规约
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否)。 说明:任何字段如果为非负数,必须是 unsigned。 注意:POJO 类中的任何布尔类型的变量,都不要加

安全规约
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信内容。 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。 说明:中国大陆个人手机号显示:139*

单元测试
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】好的单元测试必须遵守 AIR 原则。 说明:单元测试在线上运行时,感觉像空气(air)一样感觉不到,但在测试质量的保障上,却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。 A:Automatic(自动化) I:

异常日志(三)日志规约
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架(SLF4J、JCL--Jakarta Commons Logging)中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

异常日志(二)异常处理
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】Java 类库中定义的可以通过预检查方式规避的 RuntimeException 异常不应该通过 catch 的方式来处理,比如:NullPointerException、IndexOutOfBoundsException 等等。 说明:无

异常日志(一)错误码
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】错误码的制定规则:快速溯源、沟通标准化。 说明:错误码想的过于完美和复杂,就像康熙字典中的生僻字一样,用词似乎精准,但是字典不容易随身携带并且简单易懂。 正例:错误码回答的问题是谁的错?错在哪? 1)错误码必须能够快速知晓错误来源,可快速判

编码规约(十一)其它
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。 说明:不要在方法体内定义:Pattern pattern = Pattern.compile("规则"); 【强制】避免用 Apache BeanUtils 进行属性的 c

编码规约(十)前后端规约
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】前后端交互的 API,需要明确协议、域名、路径、请求方法、请求内容、状态码、响应体。 说明: 1)协议:生产环境必须使用 HTTPS。 2)路径:每一个 API 需对应一个路径,表示 API 具体的请求地址: a)代表一种资源,只能为名词,

编码规约(九)注释规约
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用 /*内容/ 格式,不得使用 // xxx 方式。 说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE 中,工

编码规约(八)控制语句
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】在一个 switch 块内,每个 case 要么通过 continue/break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含 default 语句且放在最后,即使它什

编码规约(七)并发处理
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 说明:资源驱动类、工具类、单例工厂类都需要注意。 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 正例:自定义线程工厂,并且根据外部特征进行分组,比如,来自同一

编码规约(六)集合处理
摘要:
所有内容摘自阿里巴巴的《Java开发手册-嵩山版》 【强制】关于 hashCode 和 equals 的处理,遵循如下规则: 1)只要覆写 equals,就必须覆写 hashCode。 2)因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对
