排序算法
先看排序专题,再决定从哪篇切入
把 TimSort、pdqsort、radix sort、external sort、parallel sort 串成一条工程化阅读路径。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
第一次访问时先按主题切入,比直接沿着时间线翻文章更快。
排序算法
把 TimSort、pdqsort、radix sort、external sort、parallel sort 串成一条工程化阅读路径。
密码学
先理解量子威胁,再顺着 FHE、迁移工程与 TLS 实践继续往下读。
io_uring
适合想快速理解 io_uring 为什么重要、什么场景值得上、怎么开始写代码的读者。
Libevent
如果你关心 Reactor、协议栈集成和生产级事件驱动代码,这条线更适合长期阅读。
把已经形成系列阅读闭环的主题集中在首页,减少在 400 多篇文章里盲找的成本。
按最近更新时间排序;如果你想系统性阅读一个主题,优先回到上面的专题入口。
软件架构的定义至少有三种主流理解,每种指向不同的关注点。本文对比 Booch、Fowler、Johnson 三家定义,分析架构决策的不可逆性特征,拆解 Krutchten 4+1 视图模型,回答一个核心问题:架构和设计的边界到底在哪里。
需求评审时写下的'高可用、高性能、高并发',到了架构设计阶段几乎无法落地——因为它们不是可执行的需求。本文从 SEI/CMU 的质量属性理论出发,用 stimulus-response 场景模型把模糊需求变成可量化、可验证的架构约束,并拆解属性之间的冲突与联动关系。
口头约定的架构决策会在人员流动中丢失,会在争论中反复翻车。ADR(Architecture Decision Records)用一种轻量的文档格式,把每一个关键技术决策的背景、选项、理由和代价写下来,跟着代码一起版本管理。本文从 ADR 的三种主流格式讲到 Git 仓库中的实操管理,再拆解 Spotify 和 Uber 的工业实践。
架构评审最怕'感觉还行'。本文完整拆解 ATAM 方法的三阶段九步骤流程,从质量属性效用树的构建、敏感点与权衡点的识别,到风险主题的归纳,用一个电商平台案例走完全过程。同时给出 ATAM 太重时的轻量替代方案。
系统复杂性是架构腐化的根源——本文从 Brooks 的本质复杂性与偶然复杂性划分出发,结合认知负荷理论与 Parnas 的信息隐藏原则,系统阐述复杂性的来源、度量与控制手段,并给出可操作的架构策略
架构图画完三个月就过期,架构文档写完没人看。问题不在于画不画,而在于用什么模型画、用什么方式维护。本文从 C4 模型的四层视图出发,拆解 diagram-as-code 工具链和文档即代码的工程实践,给出一套让架构文档能活下来的方法。
单体架构不等于大泥球。本文拆解单体架构的真实定义、模块化单体的设计方法、Shopify 的大型 Rails 单体实践,以及单体与微服务在工程效率上的量化对比,回答一个被回避太久的问题:什么时候单体才是正确答案?
分层架构是软件工程中存活时间最长的架构模式。本文拆解分层的核心价值——关注点分离与依赖管理,区分 Layer 与 Tier 的本质差异,对比严格分层与宽松分层在耦合度、可测试性和性能上的真实影响,分析依赖倒置如何从根本上改变分层方向,并结合 Spring Boot 和 Django 的分层变体给出工程判断。
微服务不是免费的午餐。本文从分布式系统八大谬误出发,拆解微服务真正解决的问题与引入的代价,梳理服务边界划分的工程方法论,还原 Amazon 和 Netflix 从单体到微服务的真实演进时间线,给出微服务适用与不适用的判断框架。
事件通知、事件携带状态转移、事件溯源三种模式经常被混为一谈,但它们在耦合度、数据一致性、存储成本和调试难度上有本质差异。本文基于 Martin Fowler 的 EDA 分类,拆解三种模式的机制与取舍,分析 Kafka 在事件驱动架构中的角色与局限,讨论事件排序的工程挑战和 schema 演进策略。
CQRS 不是 Event Sourcing 的附属品——本文从 Greg Young 的原始定义出发,拆解简单 CQRS 与完整 CQRS 的区别、读模型物化视图策略、最终一致性的用户体验设计,以及不和 Event Sourcing 绑定时 CQRS 仍然有价值的场景。
六边形架构、洋葱架构和整洁架构在本质上共享同一条依赖规则——本文从 Alistair Cockburn 的原始论文出发,统一解读三种架构的核心思想,并给出 Go 和 Java 中端口-适配器的落地实现。
管道与过滤器是最古老也最持久的架构模式之一——本文从 Unix 管道的设计哲学出发,拆解过滤器的无状态性与可组合性,分析现代 ETL 管道与 Apache Beam 统一模型的架构原理,并与事件驱动架构做系统对比。
当数据库成为扩展瓶颈时,空间架构通过内存数据网格和处理单元复制实现近线性水平扩展——本文从元组空间的理论根基出发,剖析处理单元、虚拟化中间件的设计,并深入分析 Hazelcast 和 Apache Ignite 的架构实现。
系统扩展性并非简单堆机器就能获得线性增长。本文从 Amdahl 定律和通用可扩展性定律(USL)出发,用数学模型量化串行化比例与一致性开销对吞吐量的真实约束,并结合工程案例说明如何识别瓶颈、选择扩展策略。