优雅的避坑
traveler100
吾行吾道,虽远必至。
展开
-
【优雅的避坑】不安全!别再共享SimpleDateFormat变量了
0x01 开场白JDK文档中已经明确表明了SimpleDateFormat不应该用在多线程场景中:SynchronizationDate formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized external原创 2020-10-22 17:46:23 · 359 阅读 · 0 评论 -
【优雅的避坑】避免HashMap扩容的正确姿势
设置HashMap的初始容量设置HashMap的初始容量只是优化的开始。HashMap在Java的使用中占据着很重要的地位,平时使用的时候,相信很多Java程序员都知道在定义HashMap的时候,给它设置一个初始容量,以便减少hashMap扩容(resize)带来的额外开销,比如像我同(zi)事(ji)的这段代码:@Testpublic void longLongAGo() { int count = 1000000; System.out.println("---------原创 2020-10-15 23:38:22 · 1604 阅读 · 1 评论 -
【优雅的避坑】你的钱算错了!为什么0.1+0.2不等于0.3了!?
问题初现我碰到过这样一个问题,对项目上用车记录中的用车里程、油耗、计价等数据进行计算,有一辆车花费了108.1元,还有一辆车的花费是29.2元,当计算这两个价格的和时出问题了,结果竟然不是137.3,而是137.29999999999998!@Testpublic void test() { Double d = 108.1; Double dd = 29.2; System.out.println("108.1 + 29.2 = " + (d + dd));}结果:1原创 2020-10-14 09:09:46 · 355 阅读 · 2 评论 -
【优雅的避坑】从验证码生成代码的优化到JVM栈和堆
验证码功能实际业务中用验证码进行登录、注册等场景非常普遍,基本上现在的应用都会有这个功能,Java中已为我们提供了Math.random()以及Random类。Math.random():public static double random()返回大于或等于0.0且小于1.0的double类型的整数。返回值的选择是伪随机的,在这个范围内(近似)均匀分布。Random类:public class Randomextends Objectimplements Serializable原创 2020-09-30 17:37:46 · 167 阅读 · 0 评论 -
【优雅的避坑】不要轻易使用==比较两个Integer的值
引入没有前戏,直奔代码,来看下面这段代码的运行结果:@Testpublic void test() { Integer i = 666; int j = i + 1; System.out.println("j = " + j);}自然,我们都知道会打印 j = 667,曾经我很好奇,i是Integer对象,属于包装类型,而j是int基础数据类型,他俩怎么会在一起运算呢?直到我扒开Integer的外表,直接看到了他的内涵…当然我是借助于工具看到程序运行的内涵的,IDE原创 2020-09-30 17:10:07 · 261 阅读 · 0 评论