点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

来源 | 公众号「阿飞的博客」

《Java开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册。

会当凌绝顶,一览众山小。经过一年的修炼,《Java开发手册》泰山版于4.22正式发布。此次泰山版发布,将带来三大亮点:新增5条日期时间规约新增2条表别名sql规约新增统一错误码规约

泰山版

接下来,让笔者阿飞带你一起解读最新泰山版本新增的3项规约。

日期时间规约

如下图所示,新增的日期时间规约归属于第一部分:编程规约

日期时间

这一段总计此次新增了7个规约条例,前五条全部是强制类型的:

  1. 日期格式化时,传入pattern中表示年份统一使用小写的y。解读:yyyy表示当天所在的年,而大写的YYYY代表是 week in which year。意思是当天所在的周所属的年份,一周从周日开始,周六结束,只要本周跨年,返回的YYYY就是下一年。

  2. 在日期格式中分清楚大写的 M 和小写的 m,大写的 H 和小写的 h 分别指代的意义。解读:大写M表示月份,小写m表示分钟。大写H表示24小时制,小写h表示12小时制。

  3. 获取当前毫秒数:System.currentTimeMillis(); 而不是 new Date().getTime()。 解读:System.currentTimeMillis()是一个native方法,依赖操作系统,性能更好。

  4. 不允许在程序任何地方中使用:1)java.sql.Date 2)java.sql.Time 3)java.sql.Timestamp。**解读:第 1 个不记录时间,getHours()抛出异常;第 2 个不记录日期,getYear()抛出异常;第 3 个在构造方法 super((time/1000)*1000),fastTime 和 nanos 分开存储秒和纳秒信息。

  5. 不要在程序中写死一年为 365 天,避免在公历闰年时出现日期转换错误或程序逻辑 错误。

后两条是推荐类型的:

  1. 避免公历闰年 2 月问题。闰年的 2 月份有 29 天,一年后的那一天不可能是 2 月 29 日。解读:打个比方,某个任务想一年运行一次,那么cron表达式不要写成:0 0 0 29 2 ?。而应该写成:0 0 0 28 2 ?。前一个表达式实际上是4年才执行一次,后一个表达式才是一年执行一次。

  2. 使用枚举值来指代月份。如果使用数字,注意 Date,Calendar 等日期相关类的月份 month 取值在 0-11 之间。解读:Calendar.JANUARY的值实际上就是0(Calendar中定义为:public final static int JANUARY = 0)。

2条表别名sql规约

此次泰山版新增了两条表别名sql规约。一条是强制的,一条是推荐的。

[强制] 对于数据库中表记录的查询和变更,只要涉及多个表,都需要在列名前加表的别名(或表名)进行限定。说明:对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表名),并且操作列在多个表中存在时,就会抛异常,相信大家都碰到过Column 'xxxx' in field list is ambiguous这个异常提示吧。正例:select t1.name from table_first as t1 , table_second as t2 where t1.id=t2.id;

[建议] SQL语句中表的别名前加as,并且以 t1、t2、t3、...的顺序依次命名。说明:1)别名可以是表的简称,或者是根据表出现的顺序,以 t1、t2、t3 的方式命名。2)别名前加as使别名更容易识别。参考正例:select t1.name from table_first as t1, table_second as t2 where t1.id=t2.id。

统一错误码规约

如下图所示,新增的统一错误码规约是一个全新的部分,即附3。错误码定义对每一个系统的重要性不言而喻,可以说必不可少。良好的错误码定义能让API的结果变得更易懂,同时能大大提升排查问题效率,并且还可以针对每个异常码出现的次数做实时监控:

如下图所示,是截取的部分错误码。完整版请下载最新的Java开发手册泰山版。

扫描下方二维码,关注我

回复关键词:阿里Java泰山

它来了:阿里巴巴Java开发手册泰山版解读相关推荐

  1. 阿里巴巴java开发手册-泰山版 下载

    最近,阿里的<Java开发手册>又更新了,这个版本历经一年的修炼,取名:<Java开发手册(泰山版)>正式出道.正所谓无规矩不成方圆,在程序员的世界里,也存在很多规范,阿里出版 ...

  2. 阿里巴巴Java开发手册(嵩山版)v1.7.0 及各个历史版本 百度云直接带走 不需要其他操作

    阿里巴巴Java开发手册(嵩山版)v1.7.0 阿里巴巴Java开发手册(泰山版)v1.6.0 阿里巴巴Java开发手册(华山版)v1.5.0 阿里巴巴Java开发手册(详尽版)v1.4.0 阿里巴巴 ...

  3. 一份我们团队Java开发的开发规范,参考了阿里巴巴Java开发手册终极版v1.3.0

    编程规约 For variable name, always use English with lowerCamelCase. space in comment: bad example: Sugge ...

  4. 解读《Java开发手册(泰山版)》- 会当凌绝顶,一览众山小 (附下载地址)

    阿里的<Java开发手册>被Java开发者所拜读,基本人手一册,就在前几天(2020.04.22)发布了泰山版 - 会当凌绝顶,一览众山小,而这次发布新增了很多干货内容,在此,给大家分享一 ...

  5. 《阿里巴巴Java开发手册(终极版)》

    今天<阿里巴巴Java开发手册(终极版)>出炉-- 1.新版本历程 10月份阿里会出炉针对开发规范开发的IDE插件,值得期待! 2.新版本下载地址: https://pan.baidu.c ...

  6. C++手册_阿里新版《Java 开发手册(泰山版)》内容解读(附下载地址)

    阿里的<Java开发手册>距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发 ...

  7. 阿里巴巴Java开发手册详尽版和华山版下载

    更新日志: -------------- 2019.06.19日更新 -------------- 1.新增21条新规约.比如,switch的空指针问题.浮点数的比较.无泛型限制引起的类型混乱.加锁与 ...

  8. 阿里巴巴Java开发手册(正式版)

    ---------引自网络 目录 一. 编程规约............................................................................ ...

  9. 阿里巴巴Java开发手册终极版网页版v1.3.0

    前言 一 .编程规约 ( 一 ) 命名风格 ( 二 ) 常量定义 ( 三 ) 代码格式 ( 四 ) OOP规约 ( 五 ) 集合处理 ( 六 ) 并发处理 ( 七 ) 控制语句 ( 八 ) 注释规约 ...

最新文章

  1. 使用 kafka 提升你的订单接口吞吐量
  2. 链接Mysql的api mysqli和pdo
  3. Tensorflow逻辑回归处理MNIST数据集
  4. bzoj1562 [NOI2009]变换序列
  5. sqlmap源码阅读系列检查是否满足依赖
  6. 【Arduino】OTTO机器人(做二次开发的一点点总结)
  7. mysql中数据定义和数据控制语言_MySQL的DDL数据定义语言和DCL数据控制语言
  8. pyqt 实现控件移除_pyqt5:删除树控件(QTreeWidget)的子节点/根节点
  9. hdu4405 掷骰子走格子
  10. Linux学习笔记 --网络配置及进程管理
  11. U890第二次开发的BOM表工具--自主知识产权
  12. PHP中单引号双引号使用原则
  13. c语言music算法,PROJECT:以music算法为基础的几种DOA算法的研究及性能分析
  14. vc常见问题108问-很有资料价值
  15. 哈佛结构冯·诺依曼结构
  16. 我们为什么这么拼?(转载自微信)
  17. Anaconda 安装及使用
  18. 微信小程序实战(一)---实现登录界面
  19. git push失败:Unable to access 'https://gitee.com/Lmui/proxy.git/': Could not resolve host: gitee.com
  20. CRC-16/MODBUS的高低位之说

热门文章

  1. linux shell declare命令 声明shell变量 显示shell函数
  2. premiere pr 波纹编辑 滚动编辑 比率拉伸 工具使用
  3. linux shell sed 删除文件 前几行
  4. java maven -DskipTests 和 -Dmaven.test.skip=true 区别
  5. ATTCK框架简介 已知攻击技术汇总
  6. git clone 失败解决方法 --depth 1
  7. libpcap实现机制及接口函数
  8. 编程之美2.17 数组循环移位
  9. Android开发--RadioButton和CheckBox控件的使用
  10. 使用 shell 脚本对 Linux 系统和进程资源进行监控