老废物乐园 瓜子

精选置顶

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

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

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

最新文章

Optional 的正确用法,别把它当成判空工具

review 的时候,我看到一段"用 Optional 写的判空" 5 月底做代码评审,看到同事写了这么一段: Optional<User> userOpt = userMapper.findById(userId); if (userOpt.isPresent()) { User user

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

消息队列入门:为什么要引入 MQ

短信服务商挂了 23 分钟,我们丢了 1247 单 那是去年 11 月的事。我们合作的短信服务商机房故障,接口全部超时。按理说短信发不出去不是什么大事,但那天下单成功率从 99.9% 掉到了 63%,23 分钟里少成交了 1247 单。 原因很简单:下单接口里同步调用了发短信,短信服务超时 30 秒

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

InnoDB 行锁与间隙锁:一次死锁日志分析

凌晨两点的死锁告警 5 月 28 号凌晨,库存服务的告警响了:批量扣减任务报死锁,一晚上 217 次。错误是客户端收到的: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when t

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

AQS 源码初探:ReentrantLock 是怎么实现的

jstack 里那个等了 40 秒的线程 5 月中旬,运营反馈大客户导出特别慢,一个 20 万行的订单导出要跑三分钟。我抓了几份 jstack,发现有个线程的行为很奇怪: "export-thread-7" #48 prio=5 os_prio=0 tid=0x00007f8c4c0d8000 ni

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

CAP 理论与分布式系统中的取舍

方案评审上,我们为一个超时场景吵了一小时 5 月初做支付回调的改造,评审会上卡在一个问题上:调用支付网关的查询接口超时了,这笔订单该标记为成功、失败,还是"处理中"? 一派说标记为失败,让用户重新支付;另一派说标记成成功,反正钱已经扣了;还有人说先挂着,等定时任务去查。三种意见都有道理,谁也说服不了

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

Spring 事件机制与异步解耦实践

加一个"送新人券"的需求,我改了注册方法 4 月底产品提了个小需求:新用户注册成功后自动发一张 20 元的无门槛券。我打开 UserService.register(),120 行,里面已经塞了校验、插库、发欢迎短信、埋点上报、初始化用户配置五件事。 我在第 87 行插了三行调用发券的代码。提 PR

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

Redis 持久化 RDB 与 AOF 该怎么选

宿主机重启,Redis 丢了 5 分钟的数据 4 月 20 号凌晨,云厂商的一台宿主机异常重启,我们的 Redis 主节点正好在上面。进程恢复之后,运营来反馈:03:12 到 03:17 之间领取的优惠券,用户端显示"未领取",但业务库里记录是有的。 核对下来丢了 2347 条。我们 Redis 5

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

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

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

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

深入理解 JVM 垃圾回收机制

深入理解 JVM 垃圾回收机制 Java 虚拟机(JVM)的垃圾回收(GC)是内存管理的核心机制。了解 GC 的工作原理对于编写高性能 Java 应用至关重要。 常见的垃圾收集器 Serial GC 单线程,适用于客户端模式 使用 -XX:+UseSerialGC 参数启用 Parallel GC

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

Spring AOP 失效的那些场景与代理机制

测试提了个 bug:数据没回滚 3 月初做批量导入功能,测试提了个单:导入 1000 条订单,第 500 条数据有误抛了异常,预期全部回滚,结果前 499 条都写进库了。 我第一反应是不可能,@Transactional 明明标着。看代码: @Service public class OrderIm

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

一次 Metaspace OOM 的排查:动态代理类撑爆元空间

凌晨三点的告警:Metaspace OOM 3 月 15 号凌晨 3 点 12 分,监控告警把值班同学叫起来了:报表服务的一台实例 Full GC 频繁,接口全部超时。我早上到公司看日志,第一行就是: java.lang.OutOfMemoryError: Metaspace at java

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

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

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

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

数据库分库分表前的容量评估与方案选型

DBA 丢给我一张容量曲线图 2 月底,DBA 在周会上放了张图:订单主库 t_order 已经 4200 万行,数据文件 38G,加上索引一共 51G,按每月 380 万行的增速,年底到 8000 万行,明年年中破亿。他的结论是"该考虑分库分表了"。 主管把这个评估任务派给了我。说实话我当时有点虚

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

Spring Bean 的生命周期与循环依赖解决

同事的循环依赖启动报错,我的没报错 2 月底做权限模块重构,同事写的代码一启动就挂: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'roleServ

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

ThreadPoolExecutor 源码解析:execute 之后发生了什么

同事问了个我答不上来的问题 2 月中旬,组里做短信发送模块的改造,同事在配置线程池时问我:corePoolSize 用完之后,是立刻扩容到 maximumPoolSize,还是先往队列里塞? 我当时脱口而出"先扩容到 max"。说完自己就心虚了,因为印象里看过"队列满了才会扩"的说法。答不上来的问题

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