语法错误
-
语义错误
语言细节或者编写出错
-
运行时错误
并发问题
-
中文全角空格
不可见字符
包装类 == 与 NPE(空指针)
Integer 在 120~ 以上 使用 == 会无效,要用equals
数据类型与范围
System.out.println(1024*1024*1024*4); == 0
BigDecimal的精度问题
程序不知怎么处理时报异常
-
replaceAll
String name = OptionalTest.class.getName();
System.out.println("name = " + name);
System.out.println("name.replaceAll() = " + name.replaceAll(".","_"));
/**
name = io.tn.test.test.OptionalTest
name.replaceAll() = ____________________________
*/
日期与时间戳
System.currentTimeMillis()
是不带时区的Serializable java原生序列化的坑 CAFE_DEAD
默认
serialVersionUID
- 加减方法 - 默认序列化版本会变
- 导致序列化版本对不上序列化不出来
- 加减字段 - 直接死
所以必须要写
serialVersionUID
如果equals则hashCode必须相同
-
集合遍历时删除错误
使用Stream+filter
- 使用待删除列表
-
spring 事务与异步
异步执行
- 随机报错
- 事务可能未提交
- or 事务方法返回之后
@Transactiona
在哪里打开,就在那里关闭
-
Async 与 线程池
合理规划线程池
线程池要有控制
防止污染
- 防止泄露
- 适量使用