老废物乐园 瓜子

精选置顶

每日一书 #001|《金钱心理学》:为什么"撑得住"比"算得准"重要

从今天起开一个固定栏目:每天读一本书,把里面的东西压缩到 20 分钟内读完,再写点自己的看法。方向是金融、AI、历史这三块——前两块是饭碗,最后一块是让人不至于把今年发生的事都看成世界末日。 第一本很适合开栏:《金钱心理学》(The Psychology of Money),摩根·豪泽尔。 它的核心

遥望星星 遥望星星 发布于 2026-08-30

最新文章

线程安全的单例模式该怎么写?双重检查锁与 volatile

面了三家公司,两次被问到"单例为什么要加 volatile" 十月中旬开始投简历试水,面试被问了三次单例模式。第一次我背出了双重检查锁的写法,面试官追问"为什么 instance 要加 volatile",我卡住了,说了句"保证可见性",他摇摇头。第二次还是同一个问题,我还是没答到点上。 回来自己翻

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

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

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

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

MySQL 索引失效的 8 种典型场景与一次慢查询优化实录

那条跑了 4.7 秒的 SQL,我改了三个地方降到 23 毫秒 九月底,运营反馈"订单查询页面打不开"。我一看监控,那个列表接口的 TP99 从平时的 120ms 涨到了 4.7 秒,慢查询日志里刷了一屏同一条 SQL。 库是 MySQL 5.7.21,订单表 t_order 数据量 860 万。先

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

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

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

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

Tomcat 启动慢与常见启动失败排查

第一次独立部署:catalina.out 里那几行看不懂的报错 九月份,师傅让我自己往测试服务器部署一次项目。我以为就是把 war 包扔进去,结果从下午两点折腾到晚上八点。这篇把我那天遇到的四个坑和后来整理的排查顺序记下来,免得下次再花六个小时。 环境:CentOS 7.4,JDK 8u151,To

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

Redis 内存满了怎么办?过期策略与淘汰策略配置

凌晨两点的告警:Redis used_memory 撞到了 maxmemory 我们的 Redis 是 4.0.2,主从各 4G。某天凌晨收到告警,used_memory 冲到 3.9G,然后业务开始大面积报: redis.clients.jedis.exceptions.JedisDataExce

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

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

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

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

Maven 依赖冲突排查:NoSuchMethodError 背后的 Jar 包战争

本地跑得好好的,一上测试环境就 NoSuchMethodError 那次是给项目加了个 HTTP 工具类,本地单元测试全绿,提交完心情不错。结果测试环境部署完,一调用就炸: java.lang.NoSuchMethodError: org.apache.http.impl.client.Closea

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

synchronized 和 ReentrantLock 该怎么选

压测数据打脸:我把 synchronized 换成 ReentrantLock,反而慢了 8 月份做优惠券发放模块,有个扣库存的临界区。师傅说了句"ReentrantLock 比 synchronized 快",我就吭哧吭哧把代码全改了,还加了 finally 释放锁。结果自己压测一测,10 并发下

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

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

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

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

RESTful API 设计与那些年写错的接口

前端同事贴了我的三个接口,问:这仨怎么都是 POST? 刚入职那阵子我给订单模块写了几个接口,写完自我感觉良好。结果前端同事在群里贴了这么一串: POST /order/getOrderList POST /order/createOrder POST /order/updateOrderStatu

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

ThreadLocal 内存泄漏:线程池里的脏数据从哪来

客服工单里的串号:A 用户看到了 B 用户的手机号 7 月初的一个下午,客服转过来一张截图:用户 A 在个人中心看到的手机号,是另一个用户的。我第一反应是不信,把那串号码脱敏后在库里一查,确实属于用户 B,两个人八竿子打不着。 我们那个接口长这样,用户信息是从一个 ThreadLocal 里取的,网

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

事务隔离级别与脏读、不可重复读、幻读

对账时发现:同一个事务里两次查询的结果不一样 上周做月底对账,写了个校验脚本:先统计账户表的总余额,再逐条核对流水,最后再统计一次总余额,看两次是否一致。结果两次统计的数字差了 3800 元。 我一开始以为是脚本 bug,查了半天才发现——脚本跑的过程中,有交易在实时发生,我第二次统计时读到了新提交

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

GC 日志怎么读?从一行日志看懂一次 Young GC

师傅甩给我一段 GC 日志,我一个字都看不懂 上个月排查一个接口抖动的问题,师傅在机器上敲了一串命令,屏幕上刷出这么一段东西: 2018-07-05T14:23:11.482+0800: 6.291: [GC (Allocation Failure) [PSYoungGen: 524288K->43

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

缓存穿透、击穿、雪崩:一次缓存雪崩打挂数据库

六月十三号上午,MySQL 被 3 万 QPS 打挂了 那天早上 9:07,我还在地铁上,DBA 的电话就打过来了:"你们的库 CPU 100%,连接数打满,赶紧看看是不是缓存挂了。" 到公司一看监控,数据库 QPS 从平时的 800 飙到 31000,CPU 100%,连接数 500 打满,大量请

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