2026年9月4日
从零构建 Kafka 拆解其核心机制:为什么必须这样设计 构建一个简化版 Kafka 时,第一件事就是意识到它不是一个普通的队列服务。它的核心目标是在分布式环境下提供高吞吐、持久化且可回放的消息流。这直接决定了后续所有组件的设计:broker 必须能高效处理海量日志,partition 要支持并行消费,rep……
阅读全文
2026年9月4日
ReentrantLock 的 lock 方法执行 CAS 修改 state 失败后,线程会被封装为 Node 插入 CLH 队列尾部 ReentrantLock 的 lock 方法执行 CAS 修改 state 失败后,线程会被封装为 Node 插入 CLH 队列尾部。CountDownLatch 和 Semaphore 同样复用这套队列,只是 state 的初始值与递减逻辑不同。 AQS 的核心数据结构是 volatile int state 和一个 CLH 队列。ReentrantLock 把 state 当作重入计……
阅读全文
2026年9月3日
@Async 只负责换线程执行,不负责事务一致性、上下文复制和异常可靠投递。 生产环境里因此丢失数据、丢日志、吞异常的情况反复出现,根治只能靠明确事务边界、装饰线程池和持久化关键任务。 事务上下文不会随 @Async 传递到子线程 在 Spring 中,@Async 方法默认使用 SimpleAsyncTaskExecutor 或自定义的 ThreadPoolTaskExecutor 执行。事务由 TransactionSynchronizationManager 绑定在当前线程的 ThreadLocal 上……
阅读全文
2026年9月2日
高频请求查询不存在的键时,Redis缓存被完全绕过,流量直接打到PostgreSQL数据库上。文章展示了在Spring Boot中把Bloom Filter作为守卫层放在Redis前面的具体做法。 不存在的键请求会直接让PostgreSQL承受全部流量 缓存穿透的定义很直接:当大量请求查……
阅读全文
2026年9月2日
每天1000万事件:如何构建可靠的Webhook投递系统 每天1000万次事件的webhook投递,常被团队一句话带过:这只是一个POST请求,半天就能完成。但信号显示,这种判断在真实规模下很快失效,因为简单的实现无法应对高并发下的队列堆积、失败重试和重复投递问题。 消息队列缓冲是处……
阅读全文
2026年9月2日
一个 Spring 服务的空指针异常,根源指向了 Bean 初始化顺序而非业务代码。排查发现 @Autowired 字段在 @PostConstruct 方法中仍为 null,异常堆栈最终指向容器启动时的依赖加载时序。这次 NPE 直接暴露了默认生命周期的隐藏陷阱。 NPE 案例中依赖注入尚未完成的真实场景 实际案例中,一个服务类标注了 @Service,里面有一个 @Autowired 的依赖 B……
阅读全文
2026年9月2日
redis-py 的 time() 返回的不是客户端本地时间,而是 Redis 服务器的 Unix 时间戳,这一差异直接影响分布式会话存储的过期判断准确性。本篇继续上一篇的四类监控函数,梳理剩余的服务端时间获取、库容量统计、数据库清空及 RDB 持久化辅助函数。 time() 返回服务端 Unix 时间戳而非本地时钟 redis-py 客户端的 time() 方法直接调用 Redis 的 TIME 命令。它不返回 Python……
阅读全文
2026年9月1日
高通自9月1日起将芯片价格上调两位数,7月已提前通知客户,9月1日后出货全部适用新价。首席执行官克里斯蒂亚诺·阿蒙对路透社表示,供应商成本持续上涨,公司无法继续自行承担全部增加开支,只能把显著上升的成本转嫁给客户。 这一决定意味着高通在全球范围内的Snapdragon系列芯片、调制……
阅读全文
2026年9月1日
轴距3115毫米的国产奔驰长轴距GLE今天在北京奔驰顺义工厂下线,9月内将正式上市。这款中国专属加长版本配备3.0T直列六缸发动机,标配可滑动全景天窗和座椅振动按摩功能。 3115mm轴距是中国买家空间需求的专属回应 中国消费者在购买中大型豪华SUV时,后排腿部空间往往成为首要考量因……
阅读全文
2026年9月1日
蔚来8月交付35836辆汽车,同比增长14.5%。这一增速较今年前7个月的57.9%明显放缓,但乐道品牌交付8810辆、萤火虫品牌交付5852辆,合计占比超过四成。截至8月31日,蔚来累计交付1260485辆,其中全新ES8在335天内达到14万辆交付。 8月交付35836辆增速回……
阅读全文