解决 JAVA 疑难杂症的“偏方”

前言

我们经常在解决Java的各种奇怪Bug中,遇到一些明明觉得很对,但是又找不出原因的问题。各种Debug,各种排除后,发现问题居然出在了一些平时很难注意到的地方,今天就来总结一下。

1. 变量/字段名有微妙的不同

这个绝对是经常遇见的罪魁祸首,虽然不致命,但是难以排查。主要出现在利用BeanUtil进行对象属性拷贝的时候,明明觉得字段一毛一样,但是拷贝完之后,后面的字段总是null。
肉眼是最信不过的,利用查找工具,依次查找(区别大小写):

  • 类型是否一致
  • 大小写是否一致,尤其是驼峰式的首字母
  • 是否下划线一致
  • 是否单词拼写有误,比如略写形式是否一样,字母l和数字1是否用错
  • 有没有多空格
2. 分支是否全部覆盖

有时候,总觉得有些代码老是走不到,不管怎么打点,怎么加日志,就是没有信息。
基本上是因为根本就没有走到一开始的地方,仔细搜索一下,当前方法是否还有其他分支调用。

3. 是否在一个线程内

尤其利用并行Steam, FeignClient, ExecutorServie等多线程的环境下,变量并不是共享的。

4. 精度是否损失

Double,Float在进行计算时,经常性的与预期的值不相等,这是因为这两个类型在计算时,硬件环境不同,计算精度会有所损失,推荐使用BigDecimal进行计算。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值