JAVA-写更好更少的代码(技巧)

做项目,从数据角度出发,分为增删查改,先做增逻辑,再做查逻辑,一般到这里就可以写核心代码了,最后再做删、改逻辑,这样可以减少很多开发过程中的问题,即使遇到问题修改量也会少些,谨记!!!

 

一、判断字符串是否为空白/null,(来源org.apache.commons.lang3.StringUtils)

StringUtils.isBlank(str);StringUtils.isNotBlank(str)

 

二、JavaBean属性复制

org.springframework.beans包中

BeanUtils.copyProperties(A,B); A中属性的值复制给B相对应属性

 

三、锁用synchronized;使用Gson进行json格式的处理;

 

四、JAVA中少用泛型,设计的有坑,举个例子:

public static void main(String[] args){
    List<Integer> list = new ArrayList();
    list.add(3);  //自动装箱
    list.remove("3");  // 1、这是不报错的,但是这也不会得到我们想要的结果
    list.remove(3);  // 2、这是会报错的,3在这里是index,list类型的坑,也不会得到我们想要的结果
    list.remove(new Integer(3)); // 正确做法
}

五、QPS限制可以使用google的 RateLimiter类,可以setRate()进行动态控制。

六、

1、每个项目最好有个testController可以方便测试;

2、后台增加几个http访问接口,可以实时查询线上数据;

3、动态修改数据时,增加两个开关,一个数据修改开关,一个小批量开关,先进行日志和小批量验证,验证无误后再打开两个开关修改数据;

七、判断两个值是否相等用,== 存在很多问题,基本类型与null比较都会出现问题。

Objects.equals(Object a, Object b);

但是这个用法,不同数据类型的比较一定会是false,注意!!!

八、代码一定要自测,一定要自测,一定要自测!!!

九、伪删除 + 唯一索引 并存方案:加一个“删除计次位”,唯一索引包含该字段即可。伪删除时,该字段计删除次数。

十、@Valid  + @AssertTrue 添加校验入参的逻辑

十一、对外接口要是幂等的,不是幂等的,要特别标注。

十二、禁用is开头名,方法和属性名称都不行。(FastJson会有坑)

十三、ConcurrentHashMap不允许插入为null的key\value,会报NullpointerException

十四、善于throw这几个异常:
IllegalArgumentException  入参不合法
IllegalAccessException    无权操作
IllegalStateException     当前状态不对
UnsupportedOperationException  操作不支持
SecurityException  安全异常
FileNotFoundException 文件未找到

十五、校验入参

https://blog.csdn.net/wangpeng322/article/details/98968907

十六、用redis做接口幂等:一般取 核心字段拼接+业务前缀 作为redis的key,进行重复校验,但有时候判断消息是否重复需要校验的字段过多,这样key较长,可以使用 业务前缀+MD5(Json字符串) 作为redis的key。过期时间也需要注意,最好不要直接取边界时间,需要有一些容错差。

十七、代码用switch case写,确实好看,但是,一旦要修改这个内部的东西,你就会发现,这个sb东西tmd很难维护,而且你还要关系这里面的break问题。工程向的代码,第一要义是快速实现,第二要义是方便维护,两个条件,switch都不符合。所以只要代码不是很过分,还是推荐使用if{}else{}f{}else{}判断

十八、代码中容易出bug的地方:循环、流式用法处、未测试到的if分支、并发问题、

十九、接口大改时,最好新建一个接口,老接口不变,观察一段时间再去掉老代码接口。

二十、线程池不可设置过大,一旦数据量较大或者有阻塞性的操作,就会导致线程创建很多,并全部阻塞,引发CPU的Load Average较高的问题。

二十一、不要用“当前时间”作为判别先后顺序的手段(特别是kafka交互),因为各个服务器的时间存在误差。

二十二、先实现功能,然后才是性能,稳定性这些问题。业务需求有时候是很奇怪的,不得不使用一些非常规的实现套路。(就和公司一样,先活下去,再考虑活的好的问题)

二十三、随着数据表中数据量增加,根据mysql索引自动调整策略,查询sql会自动调整索引,有时反而会导致慢查询。所以索引是越少越好,创建的每个索引都能在数据量较大的时候快速定位到数据行,否则没有创建索引的必要

二十四、强势能干年轻的领导下面要平庸,做个庸人,不能表露出过人的能力。(谨记)

二十五、

 

 

多看别人的代码,学习用法和思想,宽广的视野很重要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值