老废物乐园 瓜子的技术笔记 · Java / AI / 金融科技

Lambda 表达式与函数式接口:从会用到了解实现

同事说"Lambda 就是匿名内部类的语法糖" 三月底做代码评审,我提了个建议说"这里可以用 Lambda 简化"。同事回了句:"Lambda 不就是匿名内部类的语法糖吗,性能还差一点,没必要改。" 我说不上来哪里不对,但记得在哪看过说 JDK 8 的 Lambda 底层用的是 invokedyna

遥望星星 遥望星星 发布于 2019-06-04

Java 8 日期时间 API 全面迁移:LocalDateTime 实战

统计三月的订单,查出来是四月的 3 月中旬接了个老项目的改造任务,其中一块是给运营加个按月导出订单的功能。我写了个 SQL 拼时间的工具类,自测的时候点了三月,导出来的数据全是四月的。 当时那段代码: public static Date monthStart(int year, int month

遥望星星 遥望星星 发布于 2019-05-18

注解处理器与自定义注解:手写一个参数校验

一个 DTO 我写了 47 行 if 年前接手了一个商户入驻的接口,参数对象有 12 个字段,原来的校验代码长这样: public Result<?> apply(MerchantApplyDTO dto) { if (dto.getMerchantName() == null || dto

遥望星星 遥望星星 发布于 2019-04-24

为什么 127 == 127 为真,128 == 128 却为假?Integer 缓存池踩坑

同事发来一段代码,问为什么 127 和 128 结果不一样 万圣节前一天,隔壁工位刚转岗过来的同事在群里贴了这段代码: Integer a = 127; Integer b = 127; System.out.println(a == b); Integer c = 128; Integer d

遥望星星 遥望星星 发布于 2019-03-26

反射到底有多慢?从 Fastjson 的序列化说起

一个订单对象序列化 100 万次,花了 4.2 秒 十月份做对账文件的导出,要把 100 万条订单转成 JSON 写到文件里。我用 Fastjson 1.2.49,代码就一行: String json = JSON.toJSONString(order); 跑完计时:4.2 秒。我当时觉得挺快了,

遥望星星 遥望星星 发布于 2019-03-07

ArrayList 遍历时删除元素的正确姿势与 ConcurrentModificationException

单线程也报 ConcurrentModificationException,我想了一晚上没想通 九月底做购物车清理,需求是把库存为 0 的商品从列表里剔掉。我写得很顺手: for (CartItem item : cartItems) { if (item.getStock() == 0)

遥望星星 遥望星星 发布于 2019-02-26

重写 equals 为什么必须重写 hashCode?HashMap 里查不到的 Key

put 进去的东西,get 出来是 null 8 月中旬写购物车合并逻辑,用了一个 Map<SkuKey, Integer> 统计数量。代码逻辑很简单,先把老购物车的商品塞进 map,再遍历新购物车累加: Map<SkuKey, Integer> countMap = new HashMap<>()

遥望星星 遥望星星 发布于 2019-02-19

try-with-resources 真的能关掉所有资源吗?一次文件句柄泄漏排查

Too many open files:明明用了 try-with-resources 那是个导出功能,把订单导成 CSV 文件。上线第二天下午,监控开始报 java.io.IOException: Too many open files,接口全挂。登上机器一看,重启就好了,过一天又来。 我先去查系

遥望星星 遥望星星 发布于 2019-02-12

Java 8 Stream 很好用,但这几个坑我踩过

用 Stream 写的统计,结果是错的 Java 8 的 Stream 我从去年开始用,写起来确实爽,但这段时间接连踩了几个坑,都是"能编译、能运行、结果不对"那种,比直接报错更难查。记一下。 坑一:Stream 只能用一次 第一次遇到是这段代码: Stream<Order> stream = or

遥望星星 遥望星星 发布于 2019-01-29

用枚举干掉满屏 if-else:一次订单状态机重构

我写的 180 行 if-else 被 review 打回了 上周做了个订单状态流转的需求,我吭哧吭哧写完,自我感觉良好地提了 MR。师傅留了一条评论:"状态机别这么写,用枚举。" 先看看我交上去的东西: @Service public class OrderStateService {

遥望星星 遥望星星 发布于 2019-01-25