
《阿里巴巴Java开发手册 终极版》
-dzy-
国子先生晨入太学,招诸生立馆下,诲之曰:“业精于勤,荒于嬉;行成于思,毁于随。”
展开
-
一、(三) 代码格式
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:1) 左大括号前不换行。2) 左大括号后换行。3) 右大括号前换行。4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。2转载 2017-09-30 17:30:26 · 1419 阅读 · 0 评论 -
一、(二) 常量定义
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】不允许任何魔法值(即未经定义的常量)直接出现在代码中。反例:String key = "Id#taobao_" + tradeId;cache.put(key, value);2. 【强制】long 或者 Long 初始赋值时,使用大写的 L,不能是小写的 l,小写容转载 2017-09-30 17:11:44 · 349 阅读 · 0 评论 -
五、My SQL 数据库 (一)建表规约
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】表达是与否概念的字段,必须使用 is _ xxx 的方式命名,数据类型是 unsigned tinyint( 1 表示是,0 表示否 ) 。说明:任何字段如果为非负数,必须是 unsigned 。正例:表达逻辑删除的字段名 is_deleted ,1 表示删除,0转载 2017-10-01 20:21:37 · 561 阅读 · 0 评论 -
五、(二)索引规约
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的 ; 另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。转载 2017-10-02 09:55:26 · 489 阅读 · 0 评论 -
五、(三)SQL语句
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】不要使用 count( 列名 ) 或 count( 常量 ) 来替代 count( * ) , count( * ) 是 SQL 92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。说明: count( * ) 会统计值为 NULL 的行转载 2017-10-02 09:58:19 · 349 阅读 · 0 评论 -
五、(四)ORM映射
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。说明:1 ) 增加查询分析器解析成本。2 ) 增减字段容易与 resultMap 配置不一致。2. 【强制】 POJO 类的 布尔 属性不能加 is ,而数据库字段必须加 is _,要求在转载 2017-10-02 10:01:20 · 547 阅读 · 0 评论 -
六、工程结构 (一)应用分层
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【推荐】图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于Web 层,也可以直接依赖于 Service 层,依此类推: 开放接口层:可直接封装 Service 方法暴露成 RPC 接口 ; 通过 Web 封装成 http 接口 ;进行网关安全控制转载 2017-10-02 10:03:52 · 761 阅读 · 0 评论 -
六、(二)二方库依赖
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】定义 GAV 遵从以下规则:1 ) G GroupID 格式: com .{公司/ BU }.业务线. [ 子业务线 ] ,最多 4 级。 说明:{公司/ BU } 例如: alibaba / taobao / tmall / aliexpress 等转载 2017-10-02 10:09:11 · 2222 阅读 · 0 评论 -
六、(三)服务器
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【推荐】高并发服务器建议调小 TCP 协议的 time _ wait 超时时间。说明:操作系统默认 240 秒后,才会关闭处于 time _ wait 状态的连接,在高并发访问下,服务器端会因为处于 time _ wait 的连接数太多,可能无法建立新的连接,所以需要转载 2017-10-02 10:12:44 · 425 阅读 · 0 评论 -
附录:本手册专有名词
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. POJO( Plain Ordinary Java Object ): 在本手册中,POJO 专指只有 setter / getter/ toString 的简单类,包括 DO/DTO/BO/VO 等。2. GAV( GroupId、ArtifactctI转载 2017-10-02 10:14:44 · 303 阅读 · 0 评论 -
一、(五)集合处理
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则:1) 只要重写 equals ,就必须重写 hashCode 。2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须重写这两个方法转载 2017-10-01 19:27:27 · 527 阅读 · 0 评论 -
四、安全规约
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信内容、修改他人的订单。2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。说明:查看个人手机号码会显示成:158转载 2017-10-01 20:06:25 · 717 阅读 · 0 评论 -
三、单元测试
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】好的单元测试必须遵守 AIR 原则。说明:单元测试在线上运行时,感觉像空气 (AIR) 一样并不存在,但在测试质量的保障上,却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。 A: Automatic (自动化) I: Inde转载 2017-10-01 20:01:37 · 2420 阅读 · 0 评论 -
前言
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途! 《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断的完善,系统化地整理成册,反馈给广大开发者。现代软件行业的高速发展对开发转载 2017-09-30 16:46:46 · 323 阅读 · 0 评论 -
一、(四)OOP 规约
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。2. 【强制】所有的覆写方法,必须加@ Override 注解。说明: getObject() 与 get 0 bject() 的问题。一个是字母的 O ,一个转载 2017-10-01 19:04:23 · 401 阅读 · 0 评论 -
一、编程规约 (一)命名风格
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途! 1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例:_name / __name / $Object / name_ / name$ / Object$ 2. 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的转载 2017-09-30 16:57:19 · 459 阅读 · 0 评论 -
一、(六)并发处理
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。说明:资源驱动类、工具类、单例工厂类都需要注意。2. 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。正例:public class TimerTaskThread extends转载 2017-10-01 19:33:17 · 764 阅读 · 0 评论 -
一、(七)控制语句
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】在一个 switch 块内,每个 case 要么通过 break / return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止 ; 在一个 switch 块内,都必须包含一个 default 语句并且放在最后,即使它什么代码也没有。2. 【强转载 2017-10-01 19:38:06 · 412 阅读 · 0 评论 -
一、(八)注释规约
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用// xxx 方式。说明:在 IDE 编辑窗口中, Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释 ; 在 IDE 中,工程调用方法时,不进入转载 2017-10-01 19:41:12 · 365 阅读 · 0 评论 -
一、(九) 其它
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。说明:不要在方法体内定义: Pattern pattern = Pattern . compile( 规则 );2. 【强制】 velocity 调用 POJO 类的属性时,建议直接使用属性名取值转载 2017-10-01 19:44:17 · 444 阅读 · 0 评论 -
二、异常日志 ( 一) 异常处理
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】 Java 类库中定义的一类 RuntimeException 可以通过预先检查进行规避,而不应该通过 catch 来处理,比如: IndexOutOfBoundsException , NullPointerException 等等。说明:无法通过预检查的异常除外,转载 2017-10-01 19:46:40 · 575 阅读 · 0 评论 -
二、( 二) 日志规约
| 来源:阿里技术 微信公众号(id:ali_tech)。仅供于交流、学习、研究,勿用于商业用途!1. 【强制】应用中不可直接使用日志系统 (Log 4 j 、 Logback) 中的 API ,而应依赖使用日志框架SLF 4 J 中的 API ,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。import org.slf4j.Logger;import or转载 2017-10-01 20:00:14 · 460 阅读 · 0 评论