架构演进史(四):DDD 觉醒,让代码说业务的语言

当我第一次把「工资单」从一个数据库表变成一个有行为的聚合根时,突然明白了 DDD 的意义:代码不再是「数据库的搬运工」,而是「业务规则的执行者」。 ...

December 8, 2025 · 9 min · 1778 words · Nanlong

架构演进史(三):Context 之道,从技术分层到业务分层

当我第一次看到 Phoenix 生成的代码结构时,有点困惑:为什么不是 models/、controllers/,而是 accounts/、catalog/?这不是按功能划分,而是按业务划分。 ...

December 8, 2025 · 5 min · 1025 words · Nanlong

架构演进史(二):MVC 启蒙,框架带来的秩序

2005 年,Ruby on Rails 横空出世,一句「约定优于配置」震动了整个 Web 开发界。它告诉程序员:不是你决定代码怎么组织,是框架告诉你怎么组织。 ...

December 8, 2025 · 4 min · 815 words · Nanlong

架构演进史(一):混沌时代,当代码没有架构

刚接触后端开发那会儿,我接手了一个 PHP 项目。打开代码的那一刻,我以为自己在考古。3000 行的 index.php,SQL 语句和 HTML 混在一起,全局变量满天飞。这不是代码,这是一碗意大利面。 ...

December 8, 2025 · 3 min · 428 words · Nanlong

算法不是面试题(十一):实战选型——没有银弹,只有场景

学了这么多算法,遇到实际问题该用哪个?这篇文章用真实案例告诉你:算法选型不是考试,而是在约束条件下找最优解。 ...

December 8, 2025 · 7 min · 1317 words · Nanlong

算法不是面试题(十):字符串匹配——敏感词过滤的正确姿势

10000 个敏感词,一篇文章逐个检查?太慢了。AC 自动机让你一次扫描匹配所有敏感词,复杂度从 O(n×m) 降到 O(n)。 ...

December 8, 2025 · 7 min · 1406 words · Nanlong

算法不是面试题(九):树结构——层级数据的优雅解法

组织架构、分类目录、评论回复——这些层级数据怎么存?邻接表、路径枚举、闭包表、嵌套集,四种方案各有优劣。 ...

December 8, 2025 · 8 min · 1590 words · Nanlong

算法不是面试题(八):跳表——Redis 排行榜的秘密

游戏排行榜、积分榜、延迟队列——这些功能背后,Redis 用的不是红黑树,而是跳表。为什么?因为跳表更简单、更实用。 ...

December 8, 2025 · 7 min · 1354 words · Nanlong

算法不是面试题(七):限流算法——保护系统的三道防线

秒杀活动,10 万人同时涌入。不限流?服务器直接躺平。限流算法是系统的最后一道防线:令牌桶、漏桶、滑动窗口,各有各的用法。 ...

December 8, 2025 · 6 min · 1257 words · Nanlong

算法不是面试题(六):堆与优先队列——调度器的核心

定时任务怎么实现?Top-K 怎么高效计算?答案都指向同一个数据结构:堆。它是任务调度器、排行榜、事件驱动系统的核心。 ...

December 8, 2025 · 8 min · 1499 words · Nanlong