阿里巴巴开发手册
文章平均质量分 92
阿里巴巴开发手册
释然狗
这个作者很懒,什么都没留下…
展开
-
附件:本手册专有名词
附件:本手册专有名词1、 POJO(Plain Ordinary Java Object): 在本手册中,POJO 专指只有 setter / getter / toString 的简单类,包括 DO/DTO/BO/VO 等。2、 GAV(GroupId、ArtifactctId、Version): Maven 坐标,是用来唯一标识 jar 包。3、 OOP(Object Oriented Programming): 本手册泛指类、对象的编程处理方式。4、 ORM(Object Relation M原创 2020-07-30 11:26:43 · 129 阅读 · 0 评论 -
阿里巴巴java开发手册详解-工程结构 - (三) 服务器
(三) 服务器1、【推荐】高并发服务器建议调小 TCP 协议的 time_wait 超时时间。说明:操作系统默认 240 秒后,才会关闭处于time_wait 状态的连接,在高并发访问下,服务器端会因为处于 time_wait 的连接数太多,可能无法建立新的连接,所以需要在服务器上调小此等待值。正例:在linux 服务器上请通过变更/etc/sysctl.conf 文件去修改该缺省值(秒):net.ipv4.tcp_fin_timeout = 302、 【推荐】调大服务器所支持的最大文件句柄数(原创 2020-07-29 18:53:18 · 221 阅读 · 0 评论 -
阿里巴巴java开发手册详解-工程结构 - (二) 二方库依赖
(二) 二方库依赖1、【强制】定义 GAV 遵从以下规则:1) GroupID 格式:com.{公司/BU }.业务线.[子业务线],最多 4 级。说明: {公司/BU}例如:alibaba/taobao/tmall/aliexpress 等 BU 一级;子业务线可选。正例:com.taobao.jstorm 或 com.alibaba.dubbo.register2) ArtifactID 格式:产品线名-模块名。语义不重复不遗漏,先到中央仓库去查证一下。正例:dubbo-client /原创 2020-07-29 10:05:47 · 657 阅读 · 2 评论 -
阿里巴巴java开发手册详解-工程结构 - (一) 应用分层
(一) 应用分层1、【推荐】图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于 Web 层,也可以直接依赖于 Service 层,依此类推:开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行网关安全控制、流量控制等。终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染, JSP 渲染,移动端展示等。Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等原创 2020-07-28 12:42:45 · 829 阅读 · 0 评论 -
阿里巴巴java开发手册详解-MySQL数据库 - (四) ORM 映射
(四) ORM 映射1、 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。说明:1)增加查询分析器解析成本。2)增减字段容易与 resultMap 配置不一致。2、【强制】POJO 类的布尔属性不能加 is,而数据库字段必须加 is_,要求在 resultMap 中进行字段与属性之间的映射。说明:参见定义 POJO 类以及数据库字段定义规定,在中增加映射,是必须的。 在 MyBatis Generator 生成的代码中,需要进行对应的修改。3、【强制】不要用原创 2020-07-27 14:16:58 · 225 阅读 · 0 评论 -
阿里巴巴java开发手册详解-MySQL数据库 - (三) SQL 语句
(三) SQL 语句1、【强制】不要使用 count(列名)或 count(常量)来替代 count( * ),count( * )是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。2、【强制】count(distinct col) 计算该列除 NULL 之外的不重复行数,注意 count(distinct col1, col2) 如果其中一列全为 NUL原创 2020-07-24 10:54:47 · 281 阅读 · 0 评论 -
阿里巴巴java开发手册详解-MySQL数据库 - (二) 索引规约
(二) 索引规约1、【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。2、 【强制】超过三个表禁止 join。需要 join 的字段,数据类型必须绝对一致;多表关联查询时, 保证被关联的字段需要有索引。说明:即使双表 join 也要注意表索引、SQL 性能。3、【强制】在 varchar原创 2020-07-23 11:51:44 · 265 阅读 · 0 评论 -
阿里巴巴java开发手册详解-MySQL数据库 -(一)建表规约
(一)建表规约1、【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint ( 1 表示是,0 表示否)。说明:任何字段如果为非负数,必须是 unsigned。正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。2、【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。说明:MySQL 在 Windows原创 2020-07-22 16:55:10 · 547 阅读 · 0 评论 -
阿里巴巴java开发手册详解-安全规约
1、【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信内容、修改他人的订单。2.、【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。说明:查看个人手机号码会显示成:158****9119,隐藏中间 4 位,防止隐私泄露3、【强制】用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定,防止 SQL 注入, 禁止字符串拼接 SQL 访问数据库4、【强制】用户请求传入的任何参数必须做有原创 2020-07-21 13:35:32 · 346 阅读 · 0 评论 -
阿里巴巴java开发手册详解-单元测试
1、【强制】好的单元测试必须遵守 AIR 原则。说明:单元测试在线上运行时,感觉像空气(AIR)一样并不存在,但在测试质量的保障上, 却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。A:Automatic(自动化)I:Independent(独立性)R:Repeatable(可重复)2、【强制】单元测试应该是全自动执行的,并且非交互式的。测试框架通常是定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。单元测试中不准使用 S原创 2020-07-20 18:53:22 · 446 阅读 · 0 评论 -
阿里巴巴java开发手册详解-异常日志 (二) -日志规约
(二) -日志规约1、【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架 SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static final Logger logger = LoggerFactory.getLogger(Abc.class); 2、【强制】日志文件推原创 2020-07-19 18:21:29 · 209 阅读 · 0 评论 -
阿里巴巴java开发手册详解-异常日志 (一) -异常处理
(一) -异常处理1、【强制】Java 类库中定义的一类 RuntimeException 可以通过预先检查进行规避,而不应该通过 catch 来处理,比如:IndexOutOfBoundsException,NullPointerException 等等。说明:无法通过预检查的异常除外,如在解析一个外部传来的字符串形式数字时,通过 catch NumberFormatException 来实现。正例: if (obj != null) {...}反例: try {原创 2020-07-17 16:57:54 · 372 阅读 · 0 评论 -
阿里巴巴java开发手册详解-编程规约 (九) -其它
(九) -其它1、【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。说明:不要在方法体内定义:Pattern pattern = Pattern.compile(规则); 2、【强制】velocity 调用 POJO 类的属性时,建议直接使用属性名取值即可,模板引擎会自动按规范调用 POJO 的 getXxx(),如果是 boolean 基本数据类型变量(boolean 命名不需要加 is 前缀),会自动调用 isXxx()方法。说明:注意如果是 Boolean 包装类对原创 2020-07-16 17:00:56 · 543 阅读 · 0 评论 -
阿里巴巴java开发手册详解-编程规约 (八) -注释规约
(八) -注释规约原创 2020-07-15 12:14:39 · 425 阅读 · 0 评论 -
阿里巴巴java开发手册详解-编程规约 (七) -控制语句
(六)并发处理 由于并没有看懂,所以先不放上面,研究好了再来呈现给大家~(七) 控制语句1、【强制】在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含一个 default 语句并且 放在最后,即使它什么代码也没有。2、【强制】在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免采用单行的编码方式:if (condition) stat原创 2020-07-15 12:14:02 · 186 阅读 · 0 评论 -
阿里巴巴java开发手册详解-编程规约(五)-集合处理
(五)集合处理集合处理1、【强制】关于 hashCode 和 equals 的处理,遵循如下规则:1) 只要重写 equals,就必须重写 hashCode。2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的 对象必须重写这两个方法。3) 如果自定义对象做为 Map 的键,那么必须重写 hashCode 和 equals。说明:String 重写了 hashCode 和 equals 方法,所以我们可以非常愉快地使用 String 对原创 2020-07-08 01:06:41 · 140 阅读 · 0 评论 -
阿里巴巴java开发手册详解-编程规约(四)-OOP 规约
(四)OOP 规约1、【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成 本,直接用类名来访问即可。2、【强制】所有的覆写方法,必须加@Override 注解。说明:getObject()与 get0bject()的问题。一个是字母的 O,一个是数字的 0,加@Override 可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编译报错。3、【强制】相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object。说原创 2020-07-06 02:12:36 · 190 阅读 · 0 评论 -
阿里巴巴java开发手册详解-编程规约(三)-代码格式
(三)代码格式1、【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:1) 左大括号前不换行。2) 左大括号后换行。3) 右大括号前换行。4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。2、【强制】 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。详见 第 5 条下方正例提示。反例:if (空格 a == b 空格) 3、【强制】if/for/while/switch/do 等保留字与括号原创 2020-07-03 12:57:26 · 253 阅读 · 0 评论 -
阿里巴巴java开发手册详解-编程规约(二)-常量定义
(二)常量定义1、【强制】不允许任何魔法值(即未经定义的常量)直接出现在代码中。反例:String key = "Id#taobao_" + tradeId; cache.put(key, value); 2、【强制】long 或者 Long 初始赋值时,使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解。说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2?3、【推荐】不要使用一个常量类维护所有常量,按常量功能进行归类,分开维护。说明原创 2020-07-03 12:42:03 · 166 阅读 · 0 评论 -
阿里巴巴java开发手册详解-编程规约(一)-命名风格
最近在学习阿里巴巴的java开发手册,我想,这个手册中每一条规定与建议都是存在其道理的 ,一个好的规范可以使得编程的可读性变好,使我们的工作更加简洁高效,一起来学习吧首先纵观整个开发手册,目录如下:一、编程规约(一) 命名风格(二) 常量定义(三) 代码格式(四) OOP 规约(五) 集合处理(六) 并发处理(七) 控制语句(八) 注释规约九) 其它二、异常日志(一) 异常处理(二) 日志规约三、单元测试四、安全规约五、MySQL 数据库(一) 建表规约(二) 索引规约原创 2020-07-01 14:26:39 · 380 阅读 · 0 评论