阿里开发规范 注意事项

1、POJO命名

数据对象:xxDO(对应于数据表)

数据传输对象:xxxDTO(业务领域)

展示对象:xxxVO(一般为网页名称)

2、服务器设置

1、高并发服务器高小TCP协议的Time_await时间

2、调大服务器支持的最大文件句柄数

3、JVM的 -XX:+HeapDunpOnOutOfMemoryError

3、@Transactional事务不要滥用,事务影响数据库QPS,使用事务地方考虑各方面的回滚,包括缓存,搜索引擎,消息补偿,统计修正

4、线程池不允许使用Excutors创建,使用ThreadPoolExecutor或ScheduledExecutorService方式处理

5、subList用来返回一个list的部分视图

1、非结构性修改,影响彼此

2、结构性,如发生在subList,原list发生变化,如发生在list,产生异常

6、使用list.toArray(T[] array)时,应指定array的大小(list,size())

7、使用工具类Arrays.asList()转换数组,不可使用集合类的add,remove,clears等方法(适配器)

8、extends super

?extends T 子类型限定,可用于返回类型限定,不能用于参数类型限定

? super T 超类型限定,可用于参数类型限定,不能用于返回类型限定

super超类型限定通配符可以向泛型对象写入,extends子类型限定的通配符向泛型对象读取

9、jdk7以上,comparator

1、x>y -> y<x

2、x>y, y>z -> x>z

3、x=y -> 则x, z比较结果和y, z的比较结果相同

10、集合初始化 (要存的个数/(负载因子×0.75)) +  1,无法确定取16

11、推荐entrySet遍历

12、

  key能否为NULL value能否为NULL
Hashtable N N
ConcorrentHashMap N N
TreeMap N Y
HashMap Y Y

13、jdk8使用Instance代替Date,LocalDateTime代替Calendar,DateTimeFormater代替SimpleDateFormater

14、并发修改同一个记录时,避免更新丢失,需要加锁,要么在应用层加锁,要么在缓存加锁,要么在数据应用层加锁,使用version作为更新依据

15、冲突小于20%时,使用乐观锁,重试不小于3次

16、多线程下使用ThreadLocalRandom

17、主键索引名 pk_字段名,唯一索引名 uk_字段名,普通索引名 idx_字段名

18、小数类型使用 decimal

19、超过3个表不要使用join

原文地址:https://www.cnblogs.com/m2492565210/p/8651954.html