1. 【Java开发手册】| 前言

news2024/11/16 4:14:34

PixPin_2024-08-30_14-47-56.png

最早接触 《Java 开发手册》大概是 2020 年的时候,那个时候刚出** 嵩山版 **, 当时也就是大致扫了一遍,对于一些约定其实也不了解,并没有太在意。随着开发经验的积累,从当初埋头写业务的大头兵,到现在成为了一个带领小团队的负责人,逐渐意识到一套完善的规范制度,对于团队协作以及项目稳定的重要性。
结合公司项目情况,以及项目环境制定了一套我们自己的开发规范,这其中大部分借鉴了《Java开发手册》,正如手册提到的这是 Java 社区爱好者的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,最终整理成册。
所以我想着借此机会重新精读一下最新的 黄山版,在此纪录一下心得感受。

如果需要《Java开发手册》(黄山版) 原文档,可以私聊我领取,无任何套路。

手册分七个章节,编程规约、异常日志、单元测试、安全规约、MySQL 数据库、工程结构、设计规约。

这里先介绍一下几个附录, 附录一:列举了手册的历史版本,附录三:记录了蚂蚁的相关错误码,不多废话,
重点来看一下附录二:一些专有名称的解释,这个其实也是正常开发和同事交流时会用到的一些名称,如果不清楚,还是熟悉一下比较好,以免沟通出现障碍。

  1. POJO(Plain Ordinary Java Object):POJO 专指只有 setter / getter / toString 的简单类,包括 DO / DTO / BO / VO 等,POJO 不等于 PO。
  2. DO(Data Object):数据库映射对象,此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
  3. PO(Persistent Object):同 DO 一样,只是叫法不同,本质一模一样。
  4. DTO(Data Transfer Object ):数据传输对象,Service 或 Manager 向外传输的对象。一般微服务项目中,不同服务件交互时传输时会定义成 DTO。
  5. BO(Business Object):业务对象,可以由 Service 层输出的封装业务逻辑的对象。
  6. Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类来传输。 其实一般一个也建议使用对象封装,便于日后扩展。
  7. VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。简单理解就是返回给前端的数据对象。
  8. CAS(Compare And Swap):解决多线程并行情况下使用锁造成性能损耗的一种机制,这是硬件实现的原子操作。 CAS 操作包含三个操作数:内存位置、预期原值和新值。如果内存位置的值与预期原值相匹配,那么处理器会自动将该 位置值更新为新值。否则,处理器不做任何操作。
  9. GAV(GroupId、ArtifactId、Version):Maven 坐标,是用来唯一标识 jar 包。
  10. OOP(Object Oriented Programming):本文泛指类、对象的编程处理方式。
  11. AQS(AbstractQueuedSynchronizer):利用先进先出队列实现的底层同步工具类,它是很多上层同步实现类的基 础,比如:ReentrantLock、CountDownLatch、Semaphore 等,它们通过继承 AQS 实现其模版方法,然后将 AQS 子类作为同步组件的内部类,通常命名为 Sync。
  12. ORM(Object Relation Mapping):对象关系映射,对象领域模型与底层数据之间的转换,本文泛指 iBATIS, mybatis 等框架。
  13. NPE(java.lang.NullPointerException):空指针异常。
  14. OOM(Out Of Memory):源于 java.lang.OutOfMemoryError,当 JVM 没有足够的内存来为对象分配空间并且垃 圾回收器也无法回收空间时,系统出现的严重状况。
  15. GMT(Greenwich Mean Time):指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义 在通过那里的经线。地球每天的自转是有些不规则的,而且正在缓慢减速,现在的标准时间是协调世界时(UTC), 它由原子钟提供。
  16. 一方库:本工程内部子项目模块依赖的库(jar 包)。
  17. 二方库:公司内部发布到中央仓库,可供公司内部其它应用依赖的库(jar 包)。
  18. 三方库:公司之外的开源库(jar 包)。

接下来就可以开始阅读具体内容了,毕竟是规范类手册,难免枯燥,大家尽量保持耐心,和我一起建立自己的开发规范,相信我早晚用得着。

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

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

相关文章

基于vue框架的餐馆管理系统jo0i7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,菜品分类,菜品信息,餐馆介绍,后厨,菜品订单,后厨接单,完成订单 开题报告内容 基于Vue框架的餐馆管理系统开题报告 一、研究背景与意义 随着餐饮行业的蓬勃发展,餐馆面临着日益激烈的市场竞争和消费者多样化的需求。传…

安泰功率放大器应用领域:MEMS传感器的应用有哪些

功率放大器的应用领域很广泛,从超声测试、材料测试、水声测试再到压电驱动、电磁驱动生物医疗,它都能为整个系统提供强劲的激励,同样功率放大器在MEMS传感器系统的激励中也有着良好应用,今天Aigtek安泰电子就带大家走进MEMS传感器…

Elasticsearch 中,term 查询和 match 查询的区别

文章目录 前言Elasticsearch 中,term 查询和 match 查询的区别1. Term 查询2. Match 查询3. 总结 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都…

Ceruletide 雨蛙素;雨蛙肽;硫酸化蓝肽 简介

目录号 M9316 Ceruletide 雨蛙素;雨蛙肽;硫酸化蓝肽 Ceruletide (Caerulein) 是从澳大利亚青蛙皮肤中分离的生物活性十肽,是一种缩胆囊素受体 (cholecystokinin receptor) 激动剂。此外,Ceruletide还可用于构建小鼠急性胰腺炎模型…

羊大师:防疫不松懈:开学季儿童个人防护小贴士

随着秋风送爽,新学期的脚步悄然而至。为了让孩子们以最佳状态迎接知识的海洋,准备一份全面而实用的学习用品清单显得尤为重要。今天,我们就来一场“开学必备大放送”,帮助家长们轻松备战开学季! 文具套装是基础中的基础…

Git —— 2、配置本地与远程免密仓库免密访问、实操创建本地仓库与上github新仓库关联

配置本地与远程仓库免密访问 1、在Git中生成本地密钥(指令最后为你github登录账户) ssh-keygen -t rsa -C wuyechuangdang163.com 2、将本地生成的"id_rsa.pub"内容拷贝到github网站新创建的ssh密钥中。 3、测试连通 ssh -T gitgithub.com &am…

Xilinx FPGA在线升级——升级思路

一、绪论 网上很多文章都讲述了Xilinx FPGA在线升级即回退的优势,在这里仅简述一遍。优势在于可不拆机的情况下改变FPGA的功能,可进行产品迭代。回退的优势是避免升级过程中一些突发情况导致板卡成为废板。至少Golden里面包含了可进行升级的部分代码。 …

错误提示:vcruntime140.dll丢失怎么办?有哪些办法可以将vcruntime140.dll修复

当你的应用程序突然崩溃或无法启动,并弹出一个含有“vcruntime140.dll缺失”错误提示的对话框时,这意味着你的系统中缺少一个关键的 DLL 文件。这种错误常见于安装了大量第三方软件和游戏的电脑上,尤其是在系统更新或软件卸载后。解决这一问题…

【node.js】基础之修改文件

node.js 基础(一) node.js是什么? 上面这句话的意思就是:Node.js 是一个开源的,跨平台的javascript运行环境。通俗的说就是一个应用程序或者说是一个软件,可以运行javascript。 Node.js的作用: 开发服务器应用。 将数…

移动端视频编辑SDK,智能识别,字幕自动生成

Vlog已成为人们分享生活、表达自我的重要方式,对于众多内容创作者而言,如何在视频中高效、精准地添加字幕,既提升观众体验,又节省宝贵时间,一直是一大挑战。美摄科技,作为视频编辑技术的先驱者,…

你知道吗?这些plm项目管理系统大厂项目经理都在用!

本文将盘点主流的plm项目管理系统,为企业选型提供参考 。 高效的plm项目管理系统是确保工程顺利进行、按时交付以及控制成本的关键,据美国建筑行业研究院的研究数据表明,实施高效项目管理的建筑企业,能够将项目成本降低 5%-10%。我…

【qt】qss使用

1.按钮设置颜色 ui->pushButton->setStyleSheet("QPushButton { color : red;}");也可以通过rgb来设置 ff表示红色拉满,gb为0当然是红色 这只是针对pushbutton对象的控件设置的,如果我想设置所有的按钮空间都是一个颜色 这是通过设置界…

关于OBI 在unity URP环境下使用的正确步骤

OBI在URP环境下使用的正确步骤 资料:OBI官方文档:Obi Physics for Unity - Big Picture 1、替换Shader 为 URP环境下: 2、渲染管线功能列表添加: ①.在Graphics配置中查找当前URP渲染管线 ②.添加Obi流体渲染功能项 ③、设URP环…

HMI触屏网关-VISION如何与Modbus RTU从机通信

上文:HMI触屏网关-VISION如何与Node-red数据双向通信-CSDN博客 1. 准备工作 1.1. 硬件接线 EG网关和Modbus RTU从机通信之前,必须保证接线正确。本次以温湿度传感器为例,该传感器采用的是485通信,具体接线为A接A,B接B 1.2. 串口…

LMDeploy 量化部署实践

一、环境配置见:https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/LMDeploy/readme.md 验证LMDeploy启动InternLM2_5-7b-chat conda activate lmdeploy lmdeploy chat /root/models/internlm2_5-7b-chat二、量化显存计算 参数计算: LMDeploy …

解决vue中this.$set()不更新页面问题

问题汇总:解决vue中this.$set()不更新页面问题 this.$set()方法有一种情况,就是当你要设置的key已经存在于这个对象或数组中的时候,它只会更改data并不会为该key添加响应检测,所以解决这个问题的办法就是在设置值之前先把这个属性…

【Redis之一:下载安装Redis】

Redis下载与安装 一、下载 Redis 安装包1、 Windows 安装包下载 二、安装Redis1、 Windows 安装Redis 三、配置 Redis1、 Windows 中配置 Redis(1)配置访问密码(2)重启 Redis 服务 三、访问 Redis1、命令行访问 Redis(…

深度学习系列71:表格检测和识别

1. pdf处理 如果是可编辑的pdf格式,那么可以直接用pdfplumber进行处理: import pdfplumber import pandas as pdwith pdfplumber.open("中新科技:2015年年度报告摘要.PDF") as pdf:page pdf.pages[1] # 第一页的信息text pag…

深度学习项目实践——qq聊天机器人(transformer)(一)原理介绍

文章目录 首先第一步——QQ是如何实现实时聊天数据传输过程1. 用户发送消息的开始2. 数据封装与加密3. 建立连接:WebSocket协议的应用4. 消息的传输过程5. 接收者获取消息6. 双向通信与实时性保障7. 保持连接与断线重连 第二步——聊天机器人是如何来接管QQ账号的组…

什么牌子超声波清洗机好?家用超声波清洗机推荐

随着民众生活品质与幸福感的不断提升,诸如珠宝饰品、眼镜等精细物品成为了许多家庭中的常备之物。然而,这些小巧物件容易积累微尘并潜藏细菌,悄然威胁我们的健康安全。超声波清洗机应运而生,成为了解决这一隐患的理想方案&#xf…