文档章节

java开发规范总结

欧阳飘
 欧阳飘
发布于 2017/05/03 11:29
字数 1218
阅读 15
收藏 0

1.抽象类命名使用 Abstract 或 Base 开头; 异常类命名使用 Exception 结尾; 测试类命名以它要测试的类的名称开始,以 Test 结尾。

2.POJO 类或者通常所说的实体类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。

3.任何运算符左右必须加一个空格。

4.构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。同理getter setter方法

5.类、类属性、类方法的注释必须使用 Javadoc 规范,使用/*内容/格式,不得使用//xxx 方式。 说明: 在 IDE 编辑窗口中, Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释; 在 IDE 中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。

6.应用中不可直接使用日志系统(Log4j、 Logback) 中的 API,而应依赖使用日志框架SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

7.可以使用 warn 日志级别来记录用户输入参数错误的情况,避免用户投诉时,无所适从。注意日志输出的级别, error 级别只记录系统逻辑出错、异常等重要的错误信息。如非必要,请不要在此场景打出 error 级别

8.字段允许适当冗余,以提高性能,但是必须考虑数据同步的情况。冗余字段应遵循: 1) 不是频繁修改的字段。 2) 不是 varchar 超长字段,更不能是 text 字段。

9.单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 说明: 如果预计两到三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

10.如果有 order by 的场景,请注意利用索引的有序性。 order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现 file_sort 的情况,影响查询性能。 例如: where a=? and b=? order by c; 索引: a_b_c

11.利用延迟关联或者子查询优化超多分页场景 例如:先快速定位需要获取的 id 段,然后再关联: SELECT a.* FROM 表 1 a, (select id from 表 1 where 条件 LIMIT 100000,20 ) b where a.id=b.id

12.不得使用外键与级联,一切外键概念必须在应用层解决。 说明: (概念解释) 学生表中的 student_id 是主键,那么成绩表中的 student_id 则为外键。如果更新学生表中的 student_id,同时触发成绩表中的 student_id 更新,则为级联更新。外键与级联更新适用于单机低并发,不适合分布式、高并发集群; 级联更新是强阻塞,存在数据库更新风暴的风险; 外键影响数据库的插入速度。

13.数据订正时,删除和修改记录时,要先 select,避免出现误删除,确认无误才能执行更新语句。

14.在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。

说明: 1) 增加查询分析器解析成本。 2) 增减字段容易与 resultMap 配置不一致。

15.分层领域模型规约: DO(Data Object) :与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。 DTO(Data Transfer Object) :数据传输对象, Service 和 Manager 向外传输的对象。 BO(Business Object) :业务对象。 可以由 Service 层输出的封装业务逻辑的对象。 QUERY:数据查询对象,各层接收上层的查询请求。 注:超过 2 个参数的查询封装,禁止 使用 Map 类来传输。 VO(View Object) :显示层对象,通常是 Web 向模板渲染引擎层传输的对象。

16.用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定,防止 SQL 注入,禁止字符串拼接 SQL 访问数据库。

17.说明: CSRF(Cross-site request forgery)跨站请求伪造是一类常见编程漏洞。对于存在CSRF 漏洞的应用/网站,攻击者可以事先构造好 URL,只要受害者用户一访问,后台便在用户不知情情况下对数据库中用户参数进行相应修改。 防御措施: 1.检查http referer是否来自同一个域 2.限制session cookie的生命周期 3.验证码 4.使用token

18.在开发中尽量使用快捷键,避免鼠标的繁琐操作,提高开发效率。

© 著作权归作者所有

欧阳飘
粉丝 0
博文 40
码字总数 15571
作品 0
乌鲁木齐
程序员
私信 提问
JVM内存结构 VS Java内存模型 VS Java对象模型

Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和...

Java架构
2018/07/11
0
0
如何避开“看不见”的代码陷阱?《Java开发手册》华山版开讲!

内容介绍: 无规矩不成方圆,无规范不能协作。《Java开发手册》是阿里内部Java工程师所遵循的开发规范,这是近万名阿里Java技术精英的经验总结。手册自发布那天起,总结了优秀Java开发者必备...

focuspython
06/27
2
0
JVM规范系列第6章:Java虚拟机指令集

一条 Java 虚拟机指令由一个特定操作的操作码和零至多个操作所使用到的操作数所构成。 虚拟机指令 = 操作码 + 操作数。 其中,操作码值分别为 254(0xfe)和 255(0xff),助记符分别为 impd...

陈树义
2018/12/19
0
0
JVM规范系列第3章:为Java虚拟机编译

Oracle 的 JDK 包括两部分内容:一部分是将 Java 源代码编译成 Java 虚拟机的指令集的编译器,另一部分是用于Java 虚拟机的运行时环境。 第一部分应该说的是 Javac 这个前置编译器,用于将J...

陈树义
2018/12/19
0
0
JVM规范系列第4章:Class文件格式

这一章节讲的是字节码的整个组成格式,读懂了这一章,就读懂了字节码文件。对于这一章的学习,我更推荐作为工具书去查找。最好是找一个最简单的Hello World例子,一个字节一个字节去分析其含...

陈树义
2018/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部