范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

解析一下阿里出品的泰山版Java开发手册

  部分来源:https://juejin.im/post/5ea632656fb9a03c4237b95e
  说起华山,我就想起岳不群,不,令狐冲;说起泰山,我就想起司马迁,他的那句名言"人总有一死,或重于泰山,或轻于鸿毛",真的发人深省啊。这就意味着,阿里出品的泰山版 Java 开发手册,是迄今为止最重量级的。
  华山版是上个版本,啥时候更新的呢?2019 年 06 月 13 号,距离现在 10 个月了,时间也不短了,是时候更新了。
  新版都更新了哪些内容呢?可以从官方的版本历史中看得出来。01、发布错误码统一解决方案
  错误码用来干嘛呢?答案是异常日志,方便我们快速知晓错误来源,判断是谁那出的问题。上图中 A 表示错误来源于用户;还有 B 级的,表示错误来源于当前系统;C 级的,表示错误来源于第三方服务,比如 CDN 服务器。
  这个解决方案还是值得借鉴的,很多成熟的系统都在使用错误码,如果你对接过微信支付的话,应该对错误码不会感到陌生。看到错误码,然后在手册中搜索一下,就能快速知晓错误的类型,还是很不错的。02、新增 34 条新的规约
  34 条太多了,我就挑几个重要的拉出来说一说吧。
  1)日期时间
  还记得上次技术圈的刷屏事件吧?就是那个 YYYY 和 yyyy 造成的问题。大写的 Y 表示的是当天所在的这一周是属于哪个年份的,小写的 y 表示的是当天所在的年份,差别还是挺大的。你品,你细品。
  还有,大写的 M 和 小写的 m 是不同的,大写的 H 和小写的 h 也是不同的。
  另外,像获取当前毫秒数应该使用 System.currentTimeMillis(),而不是 new Date().getTime(),这些细致的规约,都应该牢记在心中,不要去犯这些低级的错误。
  2)三目运算的 NPE 问题
  说实话,这个问题我之前从来没有注意,这次看到了,就一起来学习一下。先来看下面这段代码:public class TestCondition {     public static void main(String[] args) {         Integer a = 1;         Integer b = 2;         Integer c = null;         Boolean flag = false;         Integer result = flag ? a * b : c;     } }
  条件 a * b 属于算术运算,它俩相乘后的结果是一个 int 类型,这就会导致 c 这个 Integer 类型自动拆箱,由于值为 null,就抛出了以下错误:Exception in thread "main" java.lang.NullPointerException 	at com.cmower.mkyong.TestCondition.main(TestCondition.java:9)
  那可能你会感到好奇,为什么两个 Integer 类型的变量相乘后会是一个 int 类型呢,这主要是由编译器决定的,它就是这么设计的,来看一下反编译后的字节码:public class TestCondition {     public static void main(String args[])     {         Integer a = Integer.valueOf(1);         Integer b = Integer.valueOf(2);         Integer c = null;         Boolean flag = Boolean.valueOf(false);         Integer result = Integer.valueOf(flag.booleanValue() ? a.intValue() * b.intValue() : c.intValue());     } }
  a * b 时发生了自动拆箱,调用了 intValue() 方法,而三元运算的两个表达式的类型必须一致,这就导致 c 也调用了 intValue() 方法,由于 c 本身为 null,那就只能 NPE 了。明白了吧?
  3)Collectors 类的 toMap() 方法
  手册上说,在使用 java.util.stream.Collectors 类的 toMap() 方法转 Map 时,一定要使用含有参数类型为 BinaryOperator,参数名为 mergeFunction 的方法,否则当出现相同 key 值时会抛出 IllegalStateException 异常。
  这段话可能理解上有点难度,那先来看一段代码吧!String[] departments = new String[] {"沉默王二", "沉默王二", "沉默王三"}; Map map = Arrays.stream(departments)         .collect(Collectors.toMap(String::hashCode, str -> str));
  运行这段代码的时候,就会抛出异常,堆栈信息如下所示:Exception in thread "main" java.lang.IllegalStateException: Duplicate key 867758096 (attempted merging values 沉默王二 and 沉默王二) 	at java.base/java.util.stream.Collectors.duplicateKeyException(Collectors.java:133) 	at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180)
  key 重复了,因为两个"沉默王二"的 hashCode 相同,那这时候的解决办法呢?String[] departments = new String[] {"沉默王二", "沉默王二", "沉默王三"}; Map map = Arrays.stream(departments)         .collect(Collectors.toMap(String::hashCode, str -> str, (v1, v2) -> v2));
  多加个参数 (v1, v2) -> v2,也就是重复的时候选一个。来看看此时调用的 toMap() 方法吧。public static  Collector> toMap(Function<? super T, ? extends K> keyMapper,                                 Function<? super T, ? extends U> valueMapper,                                 BinaryOperator mergeFunction) {     return toMap(keyMapper, valueMapper, mergeFunction, HashMap::new); }
  BinaryOperator 和 mergeFunction 是不是出现了?03、修改描述 90 处
  手册上说,比如,阻塞等待锁、建表的小数类型等描述有修改,我特么花了半个小时也没有找出来和上一个版本之间的差别。
  不知道是不是手册的小编在瞎说,你要是能发现差别,告诉我一声。04、完善若干处示例
  比如说 SQL 语句栏目里的 ISNULL 的示例,确实比华山版追加了一个更详细的反例,见下图。
  但说实话,这段反例的描述我看了至少六遍才搞懂是什么意思。首先,不要在 null 前换行,影响阅读性,这倒是真的;其次呢,不要使用 column is null 进行判空,使用 ISNULL(column) 判空,效率更高,也不会出现换行的情况。select * from cms_subject where column is null and column1 is not null;  select * from cms_subject where ISNULL(column) and column1 is not null; 复制代码05、最后
  2016 年 12 月份,阿里首次向业界开放了这份《Java 开发手册》,到泰山版发布,已经过去了 3 年多时间了,这份手册也在全球 Java 开发者共同的努力下,成为业界普遍遵循的开发规范。这份手册包含的知识点非常全面,七大维度编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程规约、设计规约都有罗列。阿里巴巴内部开发手册—1.4.0版+终极版
  内部开发手册
  阿里巴巴内部PPT、PDF及JD亿级流量架构
  阿里内部PPT、PDF及开发手册1.4.0版+终极版+泰山版感兴趣的关注我私信回复【文档】即可免费领取

华为新举动麒麟9000内置鸿蒙,价格跌至5199元当手机市场的发展速度变快之后,用户在选择产品时候的变化也会变得非常大,尤其是价格方面的松动,更是有多款机型都是如此。因为如今的竞品太多了,几乎每个月都能够看到新机来袭,尽管产品之间OLED产业集体感谢雷军?他的功劳是把价格拉下来了蓝科技观察小米每次的新产品,都会激起行业一片涟漪。讨厌小米的人,认为是搅局喜欢小米的人,认为他们的价格策略更亲民。不管你喜欢不喜欢,你必须承认为小米是绕不过去的一道门槛。甚至在某种怎样才能神不知鬼不觉的把24寸显示器换成43寸,不让老婆知道?第一年,换成27寸第三年,换成32寸第五年,换成37寸第七年,换成40寸第九年,换成43寸。相信我,她看不出来。我就是这么干的,从19寸开始,22。5,现在用的24,机箱没换过,里人类有没有可能被设计出来?人类有没有可能是被设计出来的?从地球诞生一直到人类诞生,期间经过了无数个物种,甚至有着比人类更加古老的生物,那么为何只有人类会脱颖而出?人类未来又将如何发展?都是一连串的谜团简单的假如现在都不用智能手机,会不会颈椎病会越来越少?那也不一定谢谢朋友邀请回答,不要说假如,这是现实问题,智能手机的普及确实对颈椎印象很大,包括我自己前年颈椎犯病,天旋地转伴有呕吐,到医院急诊检查,脑CT检查没有问题,医生说是颈椎引红米手机拿不出手怎么办?这位同学,我可以很负责任的告诉你,小米手机可以说是目前手机市场上性价比最高的手机,无论是他的配置,还是他的系统,硬件,等等各个方面。选择用小米的用户,一般都是一群非常聪明的人,甚至高通有5g华为也有5g,为什么华为不可以在自家手机上用自家的5g技术而要交高通费?应邀回答本行业问题。在通信业里,没有任何一家公司可以全覆盖的掌握所需要的专利技术,所以在生产一种产品的时候,需要和其他的公司进行交叉专利授权。但是高通的情况比较特殊一些,因为它并不恒大负债累累,马化腾20亿相助,为什么马云保持沉默?恒大负债累累,有的想投,有的不想投,原因很多自从去年开始,对阿里的敲打很多,马云在最近半年非常低调,已经不在出现在媒体之中。现在再往恒大投钱,无疑又会引发各界的关注。马云现在不能随量子纠缠是属于唯物主义还是属于唯心主义?能用科学解释的就是唯物呗,是吗?理解不了,证明不了,当前,那么就跟巫师胡咧咧差不多唯物唯心根本是西方二元论的哲学戏论,而且一般人根本也不懂,西方根本没有唯心主义,idea,不同的西华为对中国有什么贡献,为什么说华为不能倒下?华为是中国在5G通讯方面首次超越美国,站在全世界的制高点上。在现代国家安全和战争中,通讯联络具有无比重要的地位,这也是美国人千方百计的对世界各国的领导人和科技公司进行窃听的原因。华国外的公司都是如何处理大龄程序员的?国外几乎没有处理大龄程度员一说!至少美国这边就没有!本人是恢复高考后77级大学生,八十年代,上海名校研究生毕业。八十年代末来美读商学院,那时候中国经济还没起步,毕业后根本找不到对华
奔驰A级试驾A200L运动轿车时尚版,1。3T引擎够不够用?奔驰A级作为家族入门级别车型,销量表现一直不错,从6月份销量数据来看,卖出了6000台。有部分车主会吐槽高价低配,但有部分车主表示这个价位买到奔驰车标就值了。实际上现实生活中很多人五菱凯捷试驾1。5TCVT旗舰型,配6座满足家用主打10万级市场对于很多家庭用户来说,5座车型越来越不满足于日常出行,毕竟平时可能还有老一辈的父母,更何况大多数家庭不只局限于一胎。所以很多人愿意去购买大空间的MPV车型,当然买车之前也会去权衡价捷达VS7黑锋版加入黑色套件,延续1。4T动力8月15号上市!捷达VS7大多数人并不陌生,作为奇瑞家族的一个年轻品牌,旗下车型主打性价比,VS7作为家族首款中型SUV,上市已经有一年多的时间。家族目前想要推出一款特殊版本车型,叫做黑锋版,实际威兰达高性能版试驾2。5L四驱激擎版,百公里加速可达5。92秒30岁实际上是一个分水岭,购车的时候不会苦于没有资金。很多人20岁买车不追求性能更注重均衡性,但到了30岁需要一定的可玩性,而且在大城市中,最好是买一款能上绿色牌照的车型。可以是纯迈巴赫S级试驾S4504MTIC典藏版,车长超5米4配3。0T双涡轮引擎百万级豪车并不是每一个人都有机会体验,但不妨碍我们去憧憬。作为一个专业车评人,最近试驾了一台迈巴赫S级S4504MATIC典藏版,同样是目前在售版本中的顶配,厂商指导售价在145。动力比领克03更强,最大扭矩380Nm,领克05官图曝光动力比领克03更强,最大扭矩380Nm,领克05官图曝光领克03的出现让国内消费者印象深刻,作为家族车型中的一款性能小钢炮,辨识度很高,也在市场上取得了很好的成绩。领克汽车想要再接吉利帝豪试驾UP1。5LCVT向上版,主打10万级市场实力如何?对于刚出来工作的小年轻来讲,人生中第1台车往往都不会追求多么有档次,反而是经济实用才是关键。平时能够遮风挡雨,避免等待公交的时间就知足了,最近我试驾了一台10万级别的国产车,它就是聚焦品质链接你我首届SunDay融创服务超级体验日盛大开启10月17日,首届SunDay融创服务超级体验日在合肥盛大开启,近千位业主欢聚一堂,用美好邻里的生活诗篇,开启品质生活新旅程。聚焦品质链接美好生活品质生活,正在成为时代发展的新主题深圳发布无人机通用要求团体标准,上品回收上线无人机回收多年以来,以无人机为代表的新业态蓬勃发展,特别是民用无人机的市场需求呈现井喷式爆发增长,从常规的娱乐航拍发展到城市管理农业植保电力巡检灾害救援智能物流等更加广泛的行业领域。无人机在抗洪救灾中的科技力量,傲势无人机显身手争分夺秒,傲势无人机系统实现全方位监控今年河南遭遇百年不遇的特大洪水,7月21日,沃飞长空救援团队星夜兼程驰援一线,在河南省防汛抗旱指挥部统一部署下,先后参与了河南省郑州市荥阳市新高尔夫6月卖出8014台,起售12。98万第八代车型实力如何?从一定角度来看,小钢炮车型还是很讨年轻消费者喜爱,大众高尔夫作为一款成熟的车型,目前已经经历八代。新款车型跟科技感进行了很好地结合,官方自诩为全新数字高尔夫,上市后也有着不错的销量