史上最强《Java 开发手册》泰山版王者归来!

WechatIMG1159

阿里妹导读:潜力修炼一年之久的《Java 开发手册(泰山版)》今天发布!此次共计新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,大家参考错误码示例表,欢迎大家下载与阅读。

免费下载链接:
https://developer.aliyun.com/topic/java2020?utm_content=g_1000113416

“荡胸生层云,决眦入归鸟”,《Java 开发手册(泰山版)》正式和大家伙见面了!秉承着“码出高效,码出质量”的一贯愿景,泰山小哥跳着欢快的步伐向大家走来了,以下是他的独白:

自华山版现身武林以来,大家都叫泰山泰山快现身,但是一开始我是拒绝的,不能因为你说来,我就马上来,直到我遇到了 stream.Collectors 类下 toMap() 方法的坑,转化逻辑对我等键盘侠来说应该是手到擒来,谁知一脚深坑踩进了无底洞,两个相同 key 的转化时就已经撂挑子了。怎奈祸不单行,toMap() 大哥在进行值为 null 的转化逻辑时突然的空指针异常,又一次给了我沉痛一击,于是我悔悟,我惶恐,我连夜买着站票赶来见大家,欲知详情如何,请速速下载《Java 开发手册(泰山版)》。

错误码一统中原

夜色中的火车驶过泰安站,我朦胧欲睡时,边上的 HTTP 小哥传来一个声音“嘿,兄弟,前方道口 404 信号灯了”,我一脸懵逼状,然后他就开始嘲笑我们后端程序之间纷繁复杂又各自为政的错误码定义,这让我十分没有面子。但是今天!这样局面就要被终结!你还在为杂乱的错误码而烦恼么?统一错误码,就是统一度量衡,为你的应用与服务的稳定保驾护航,烦恼清空,快乐回家。

泰山版新近出炉的错误码具有快速溯源、简单易记、沟通标准化三大优势。错误码为字符串类型,共 5 位,分成两个部分:错误产生来源和四位数字编号。错误产生来源分为A/B/C,以当前代码运行视角来进行判定:

A 表示错误来源于用户,比如请求参数错误,用户安装版本过低等问题。
B 表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题。
C 表示错误来源于第三方服务,比如 CDN 服务出错,消息投递超时等问题。

优秀的错误码可以迅速知道他们是怎么来滴,从哪儿来滴,来干啥滴。同时俺们的错误码具有三级结构,分为一级宏观错误码、二级宏观错误码、三级宏观错误码,你想要的,泰山我全部都有。

闰年多一天多一丝烦恼

蔡国庆叔叔曾唱过“一年有三百六十五个日出,我送你三百六十五个祝福”,当闰年的时候,我们就会有一天收不到蔡叔叔的祝福了。虽前有“千年虫”之鉴,但好多朋友却开始在代码中玩儿起了“闰年虫”,一个写死为 365 天的年份天数,在闰年里让大家尝尽了悲伤痛楚,比如,缓存有效期 = 3652460*60 秒,结果提前一天所有缓存同时失效,高并发访问时数据库就跪了。对此,泰山我不禁要问了,LocalDate 它不香么,你要的年份、天数,它通通拥有,听哥的,以后这坑啊,咱不踩。

表的别名

“在这表的世界里,为什么我不配拥有一个简洁的江湖头衔?”SQL 老弟常常对我说这日子他过得憋屈。 “泰山大哥,你知道么?我在一个多表操作的 SQL 中大吼一声行者孙,竟然活生生蹦出了俩,劈头盖脸那就是给我一顿胖揍。”多表连接操作的时候,当一个相同的列名出现在多个表的时候就是会如此,多个行者孙打架斗殴的场面屡见不鲜。我们能做的就是用表的别名(或表名)来给这些小猴子般的操作列加上限定,不然花果山的猴子就会跟果子岭的猴子起冲突,让我等键盘侠沦落于无穷的 BUG 地狱中,不得超脱。

代码无空行憋得慌

遥望东海,当年我也是代码届一蛟龙,可上九天揽月,可下五洋抓鳖,但是有些仁兄的百余行一站到底式的瀑布式写法还是让我玉面小蛟龙感受到了窒息的滋味。代码和人一样,憋久了也是要换气的,未来你的代码要被很多人阅读和修改,因此,不要让阅读者感到憋闷和窒息,也是好的代码应该做的事情,当某个方法的代码行数超过 10 行时,return / throw 等中断逻辑的右大括号后加一个空行。合适的换行能够让阅读者获得喘息的机会,更能让代码之间的组织方式更加的协调。

三目运算符的任性

三目运算符这个外表看起来老实巴交的孩子却不是个好相处之辈,竟然也玩起了儿时类型转化的游戏,让我等好汉折了腰。这是咋回事儿呢?原来在三目运算符中:

condition ? 表达式 1 : 表达式 2

表达式 1 和 2 在涉及算术计算或数据类型转换时,会触发自动拆箱。拆箱操作本来没有问题,但是当其中的操作数为 null 值时,一个大大的 NPE 就砸到了我滴脸上,泰山我不能让兄弟们前赴后继踩进深坑里,跌得鼻青脸肿,下面就复原下现场,大家回家思考一下为啥抛出 NPE 异常:

Integer a = 1;
Integer b = 2;
Integer c = null;
Boolean flag = false;
Integer result = (flag ? a * b : c);

寄语未来

本次泰山版是一次全新的革新,涉及到集合转化函数式接口中的深坑、年份天数写死所带来的问题、SQL 多表操作未加表名对字段限制惨案、以及统一错误码能够为我们带来的巨大好处,更多的细节与精彩我们可以在泰山版手册中细细品读。这些年来我们同全球有着相同极致追求的开发者一起,不断的完善和迭代着 Java 开发手册,用技术情怀去做一件帮助所有 Java 开发者们避免踩坑。因为相信,所以看见,未来我们将一起继续为全球的 Java 开发者们服务,致力于消灭各类程序中的疑难病症。

手册中每一条规约的背后都有一段或悲伤或遗憾的故事,将前人的历史经验沉淀下来,让后面的人的路走的更平坦。我们于小中见大,于细微处见真章。“见渺小之物必细查其纹理”,可能也是我辈技术人独有的浪漫,small is powerful, small is beautiful。

再次感谢各位全球开发者,本次《Java 开发手册(泰山版)》共计新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,欢迎大家下载与阅读。下一个版本“嵩山版”,咱们少林寺见真功夫。

点击下方链接,疯狂下载《Java 开发手册(泰山版)》吧:
https://developer.aliyun.com/topic/java2020?utm_content=g_1000113416

原文链接

本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 最高均薪 19015 元! 8 月程序员工资出炉,你拖后腿了吗?

在全员争当码农的时代,如果你也想学一门编程语言,那么,我要告诉你,Java 是编程语言中不可撼动的王者。有点难理解?先看个排行榜???? 来自权威开发语言排行榜 TIOBE 的数据(截止到 2020 年 4 月&#x…

从事前到事后,云数据库 Redis MongoDB 安全体系全揭秘!

作者:陈金元(今远),阿里云管控技术专家 一、整体说明 上图是云数据库Redis&MongoDB的安全体系图,横向是实例控制链路,纵向是实例数据链路,对于控制链路,事前为了避免恶意操作或…

TeaDSL:支持任意 OpenAPI 网关的多语言 SDK 方案

正在上传…重新上传取消 导读 在以云计算为主角的开发者视界中,OpenAPI 是绝对的主角。要发短信,用 OpenAPI;要管理资源,用 OpenAPI;要管理权限,用 OpenAPI。如果一个 OpenAPI 解决不了你的问题&#xff…

Vue如何循环提取对象数组中的值

数据如下,提取name和callcount 第一种: getQueryCallStatistics("sesp1", this.provinceId).then((res) > {let arr [];let arr1 [];let arr2 [];let arr3 [];let arr4 [];this.xunshiMap res.data.callstatistics;res.data.callst…

Node.js 从门详解 (二)

目录1. 模块化的基本概念1.1 什么是模块化1.2 模块化规范2. Node.js 中模块化2.1 Node.js 中模块的分类2.2 加载模块2.3 Node.js中的模块作用域2.3.1 什么是模块作用域2.3.2 模块作用域的好处2.4 对外共享模块作用域中的成员2.4.1 module对象2.4.2 module.exports对象2.4.3 共享…

分享实录 | 阿里巴巴测试环境管理实践概述

正在上传…重新上传取消 【以下为分享实录,有删节】 测试环境管理之困 正在上传…重新上传取消 互联网产品的服务通常是由 Web 应用、中间件、数据库和许多后台业务程序组成,一套运行环境就是一个自成一体的小生态。部署软件产品的正式发布版本&#…

高校毕业生:今年“太惨了”,网友:更惨的可能还在后头!

受疫情影响,今年的就业形势基本上没跑了:“各行各业,大小企业,全面缩招!”据国家统计局7月份的最新数据显示:20-24岁大专及以上人员(主要为新毕业大学生)失业率比去年同期高 3.3 个百…

uniapp利用腾讯地图接口获取当前定位城市及计算两经纬度的实际距离

文章目录一、注册腾讯地图1. 申请开发者密钥(key)2. 开通webserviceAPI服务3. 下载SDK二、导入SDK2.1. 解压复制2.2. 页面导入三、实现3.1. 先创建实例。3.2. 获取经纬度3.3. 监控四、计算二点距离4.1. 官网地址4.2. 代码4.3. 测试一、注册腾讯地图 1. …

Gartner 企业级网络设备市场份额报告:阿里云负载均衡增速全球第一

4月8日,Gartner发布最新的全球企业级网络设备市场份额报告,阿里云负载均衡(SLB)增速全球第一,单季度营收环比增长35.1%,远超欧美传统厂商或是云服务厂商。 负载均衡被誉为IT系统的流量管家,它可…

放弃 Windows 后 ,开源操作系统能成为主流桌面系统吗?

来源 | CSDN责编 | 郑丽媛头图 | CSDN下载自东方IC在近十几年里,总是能听到世界各地的国家或者地方政府在尝试用开源系统代替Windows作为政府办公系统,尤其在今年微软正式宣布停止对Windows 7的更新维护服务后,很多数年来一直使用的Windows 7…

Sentinel 1.7.2 发布,完善开源生态及扩展性

Sentinel 1.7.2 正式发布,带来了 Logger SPI 扩展机制、Zuul 2.x 网关流控、SOFARPC 适配等多项特性和改进。下面我们来一起探索一下 Sentinel 1.7.2 的重要特性。 多样化的适配模块 到目前为止,Sentinel 已覆盖微服务、API Gateway 和 Service Mesh 三…

微信开发者工具:Failed to load font ************** net::ERR_CONNECTION_RESET问题解决办法

如果微信开发者工具前几天用的好好的突然出现 VM541:1 Failed to load font https://img.yzcdn.cn/vant/vant-icon-d3825a.ttf net::ERR_CONNECTION_RESET 这个错误说明。可能原因是微信开发者工具发布了新版本,你需要更新一下开发工具的版本,就能解决这…

从 DevOps 到 NoOps,Serverless 技术的落地方式探讨

Serverless 技术正以一种全新的方式,帮助云上客户进一步节省云的使用成本,实践 NoOps 理念,同时,他也正深刻变革着开发者们的编程模式,所谓“Write locally, compile to the cloud”。 本文将介绍 Serverless 技术来降…

uni-app中使用腾讯位置服务实现小程序地图选点功能

文章目录1. 官方文档2. 小程序添加插件3. HBuilder配置4. 配置代码5. 页面代码1. 官方文档 技术选定(地图选点插件) (对应官网:https://lbs.qq.com/miniProgram/plugin/pluginGuide/locationPicker ) 2. 小程序添加…

8000字 | 32 张图 | 一文搞懂事务+隔离级别+阻塞+死锁

来源 | 悟空聊架构(ID:PassJava666)头图 | CSDN下载自视觉中国事务1.1 什么是事务为单个工作单元而执行的一系列操作。如查询、修改数据、修改数据定义。1.2 语法「(1)显示定义事务的开始、提交」BEGIN TRANINSERT IN…

uni-app中使用腾讯地图sdk(解析经纬度)获取用户所在位置信息

前言: 技术选定 https://lbs.qq.com/dev/console/custom/apply 具体步骤: 注册开发者账号、申请密钥、开通webserviceAPI服务、下载小程序SDK、微信后台配置请求request域名。 ( 请按官方完成以上操作:https://lbs.qq.com/mini…

4月数据库流行度排行出炉:MySQL 成事实王者

2020年4月DB-Engines 数据库流行度排行出炉。在本月的排行榜上,Oracle 较上月微涨 4.78 分,MySQL 微涨 8.62 分,甲骨文公司成为最大赢家。而微软的两个产品 Microsoft SQL Server 下降 14.43 分,Microsoft Access 下降 3.22分&…

MySQL 在 Mac 环境下的安装

目录 Mac 系统配置 MySql 数据库1. 安装 MySql 数据库2. 安装 MySql Workbench 可视化工具Mac 系统配置 MySql 数据库 1. 安装 MySql 数据库 1.1 双击打开安装包 mysql-8.0.19-macos10.15-x86_64.dmg: 1.2 双击 mysql-8.0.19-macos10.15-x86_64.pkg 运行安装包,并点击 继续…

微信小程序console.log出来的是object的问题解决方法

在开发微信小程序的时候,从后台传过来的数据没有问题,但是在开发的过程中,console.log出来的结果为object。 解决方案: 把加好改为逗号,即可

超大福利 | 这款免费 Java 在线诊断利器,不用真的会后悔!

线上系统为何经常出错?数据库为何屡遭黑手?业务调用为何频频失败?连环异常堆栈案,究竟是哪次调用所为? 数百台服务器意外雪崩背后又隐藏着什么?是软件的扭曲还是硬件的沦丧? 走进科学带你了解 A…