1. 修改完代码,记得自测一下
2. 方法入参尽量都检验
3. 修改老接口的时候,思考接口的兼容性。
4.对于复杂的代码逻辑,添加清楚的注释
5. 使用完IO资源流,需要关闭
6.代码采取措施避免运行时错误(如数组边界溢出,被零除等)
:String name = list.get(1).getName(); //list可能越界,因为不一定有2个元素哈
7.尽量不在循环里远程调用、或者数据库操作,优先考虑批量进行。
8.写完代码,脑洞一下多线程执行会怎样,注意并发一致性问题
9.获取对象的属性,先判断对象是否为空
10.多线程异步优先考虑恰当的线程池,而不是new thread,同时考虑线程池是否隔离
11. 手动写完代码业务的SQL,先拿去数据库跑一下,同时也explain看下执行计划。
:explain select * from user where userid =10086 or age =18;
12.调用第三方接口,需要考虑异常处理,安全性,超时重试这几个点。
13.接口需要考虑幂等性
14. 多线程情况下,考虑线性安全问题
15.主从延迟问题考虑
16.使用缓存的时候,考虑缓存跟DB的一致性,还有(缓存穿透、缓存雪崩和缓存击穿)
:缓存雪崩:指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。
缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。
缓存击穿:指热点key在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来,从而大量的请求打到db。
网友评论