老废物乐园 瓜子

精选置顶

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

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

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

最新文章

Dubbo + Zookeeper 第一个分布式服务踩坑记

第一次把单体拆出 Dubbo 服务,踩了五个坑 11 月,组里决定把用户中心从订单系统里拆出来,做成独立的 Dubbo 服务。这是我第一次真正搭分布式服务,之前只在本地 demo 里跑过。 技术选型是 Dubbo 2.7.3 + Zookeeper 3.4.14 + Spring Boot 2.1.

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

CompletableFuture 异步编排实战

商品详情页 800 毫秒,我把它改成了 180 毫秒 10 月底做性能优化,商品详情页是重点。这个页面要聚合 6 个数据源,原来的代码是串行调的: public ProductDetailVO getDetail(Long skuId) { ProductVO product = produ

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

接口幂等性设计的几种方案

一个用户被扣了两笔钱:关于幂等我踩过的坑 10 月 12 号下午,客服转来投诉:用户买了一双 899 的鞋,银行卡扣了两次款,订单表里却只有一条订单。 查下来是这样的:用户点"立即支付"时网络抖了一下,前端没收到响应,自动重试了一次。两次请求都打到了支付回调接口,回调里没有做幂等,于是扣款发生了两次

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

Stream 并行流慎用:一次 parallelStream 导致的数据错乱

对账少了 3.7 万元:一行 parallelStream 惹的祸 10 月 8 号,财务来找我,说 9 月 30 号的日报表金额对不上,系统算出来 148.2 万,实际银行流水 151.9 万,少了 3.7 万。而且奇怪的是,同一个任务重跑一遍,出来的数字还不一样:第二次是 149.6 万。 同样

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

CountDownLatch、CyclicBarrier、Semaphore 使用场景辨析

Code Review 时发现同事用 CyclicBarrier 写了个一次性等待 9 月中的一次 code review,我看到同事写了这么一段:一个接口要并行查三个数据源然后汇总,他用 CyclicBarrier 做同步。功能是对的,但读起来很别扭——CyclicBarrier 那套 await

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

BlockingQueue 家族与生产者消费者模型落地

读 ThreadPoolExecutor 源码时,我顺手压测了三种队列 9 月份啃线程池源码,看到构造函数里那个 BlockingQueue<Runnable> workQueue 参数,我才意识到自己从来没认真选过它——一直是 Executors.newFixedThreadPool(20) 一路

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

单元测试怎么写才有用?JUnit + Mockito 实践

我给一个祖传方法补单测,改到怀疑人生 9 月初,师兄让我给订单模块的几个核心方法补单元测试,说是要接入 SonarQube 看覆盖率。我挑了个"看起来最简单"的方法开工,然后就掉坑里了。 方法长这样: @Service public class OrderService { public

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

JVM 类加载机制与双亲委派模型

上线时那个 NoSuchMethodError:两个 jar 里有同一个类 8 月底发版,新功能上线后立刻报了一堆错: 2019-08-27 20:14:32.881 ERROR [http-nio-8080-exec-3] c.x.web.ExceptionHandler - Handler

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

Spring Boot 自动配置原理与自定义 Starter

同事问我:为什么加个依赖就能用了 8 月中旬,刚入职的同事跑来问我一个他觉得"很魔幻"的事:他只在 pom 里加了 spring-boot-starter-data-redis,然后 @Autowired private StringRedisTemplate 就能用了,中间没写任何配置类。他问我

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

对象真的不可达才被回收吗?finalize 与引用类型

MAT 里那个 12 万的 java.lang.ref.Finalizer 8 月初排查一个服务的老年代增长,dump 下来用 MAT 打开,Dominator Tree 里第三名是 java.lang.ref.Finalizer,12.4 万个实例,占了 210 MB。我当时看不懂这是个什么类,点

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

Redis 主从复制与哨兵高可用部署实践

故障演练那天,我们丢了 400 多条缓存 key 公司 7 月底做了一次故障演练,运维在预发环境把 Redis 主节点的进程 kill 掉,看哨兵能不能自动切换。切是切成功了,但演练结束后比对数据,主库的 key 数量是 12,480,331,切过去之后新主库只有 12,479,905,少了 426

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

MySQL 索引下推与覆盖索引优化实战

慢查询日志里那条 1.8 秒的 SQL 7 月底,DBA 每周发的慢查询报表里,我们订单库有条 SQL 排第一:执行 14.7 万次,平均 1.83 秒,扫描行数 28 万。SQL 长这样: SELECT order_no, user_id, amount, status, create_time

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

一次线上死锁排查:jstack 定位与修复

批量扣款任务卡死后,单笔扣款接口也全挂了 7 月 5 号早上 9 点 12 分,监控开始告警:/api/deduct 接口响应时间从 60 毫秒飙到 30 秒全部超时。同时 DBA 在群里说,account 表上有锁等待,已经持续 4 分钟。 第一反应是数据库慢查询。但登上机器看,应用这边 CPU

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

日志规范与 Logback 配置实践

查一个用户的投诉,我翻了两小时日志 上个月客服转来一个工单:用户说 6 月 20 号下午下过一单,付了钱但订单状态还是"待支付"。我拿着用户 ID 去 ELK 查,搜出来 3800 多条日志,全是这个用户的,而且几个接口的日志混在一起,根本分不清哪几条是同一次请求的。 翻了两个多小时才拼凑出大概的调

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

jmap、jstat、jstack 三板斧排查内存问题

运维在群里 @ 我:你们这个服务内存一直在涨 那天下午运维丢了一张图到群里,是 Zabbix 上我们订单服务的 JVM 内存曲线,从早上 9 点的 1.2 GB 一路爬到下午 4 点的 3.8 GB,容器限制是 4 GB。他问:这是不是内存泄漏? 我当时的第一反应是想 dump 下来看,被带我的师兄

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