来源书籍
架构之美
系统架构类
类别清单覆盖
5/7
全书概览
架构之美
原书为《Beautiful Architecture》(O’Reilly,Diomidis Spinellis & Georgios Gousios 编),是《程序之美系列套装(6册)》中的第3册,多位知名架构师/工程师合著的文集。 EPUB 已解压至共享目录
notes/程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/, 本书对应 spine 范围Text/part0080.xhtml~Text/part0282.xhtml(对应 toc.ncx 中 playOrder 306~430)。
类别:系统架构类
说明(2026-08-29 补记):本书原有卡片经核查为旧格式批量生成(缺”位置/结论依据/ 原始内容”三段式证据链,来自 commit ff8b785157”内容初始化”),已按 v6 标准丢弃重做; 下方评级结论、章节划分、Spine 文件映射均为已验证正确的既有工作成果,予以保留复用, 不重新推导;仅重置”章节进度追踪表”状态为 pending,逐章重新生成卡片正文。
评级结论:经典原理(高浓度 + 高稳定性)
理由: - 本书是多位业界知名架构师(Jim Waldo、Michael Nygard、Perry & Wolf 等)合著的文集,每章围绕一个真实系统 (Xen 虚拟化、Tandem Guardian 容错系统、JPC 纯 Java x86 模拟器、Jikes RVM 元循环虚拟机、GNU Emacs、KDE 等) 展开架构决策的第一手复盘,重点讲”为什么这样设计”“权衡取舍是什么”,而非某个工具的具体操作步骤。 - 虽然部分案例系统本身(如 2008 年前后的 Xen、早期 Facebook Platform API)已经过时,但书中提炼的架构原理—— 模块化边界如何划定、可伸缩性设计的本质权衡、面向对象与函数式的模块性对比、”滋长的特性”如何影响系统演化—— 这些原理本身并不因具体技术栈的更迭而失效,和《人月神话》《设计模式》一样属于跨时代的架构方法论经典。 - 全书采用”具体案例 + 抽象原理提炼”的结构(如第1章、第13、14章直接讨论架构本质,其余章节以案例佐证), 与《团队之美》的文集结构和评级逻辑一致。 - 该评级已按用户指示直接采用推荐结论执行(用户已在此前授权后续同类决策自动按推荐执行,无需逐一确认)。
章节进度追踪表
| 章节号 | 章节标题 | 精读/略读 | 状态 | 卡片数 |
|---|---|---|---|---|
| 前言部分 | O’Reilly介绍/推荐序(一~四)/译者序/作译者简介/序/前言 | 略读 | done | 0 |
| 第一部分:论架构 | ||||
| 第1章 | 架构概述(John Klein / David Weiss) | 精读 | done | 5 |
| 第2章 | 两个系统的故事:现代软件神话 | 精读 | done | 7 |
| 第二部分:企业级应用架构 | ||||
| 第3章 | 伸缩性架构设计(Jim Waldo) | 精读 | done | 7 |
| 第4章 | 记忆留存(Michael Nygard) | 精读 | done | 10 |
| 第5章 | 面向资源的架构:在Web中(Brian Sletten) | 精读 | done | 7 |
| 第6章 | 数据增长:Facebook平台的架构 | 精读 | done | 8 |
| 第三部分:系统架构 | ||||
| 第7章 | Xen和虚拟化之美 | 精读 | done | 8 |
| 第8章 | Guardian:一个容错操作系统环境 | 精读 | done | 9 |
| 第9章 | JPC:一个纯Java的x86 PC模拟程序 | 精读 | done | 8 |
| 第10章 | 元循环虚拟机的力量:Jikes RVM | 精读 | done | 9 |
| 第四部分:最终用户应用架构 | ||||
| 第11章 | GNU Emacs:滋长的特性是其优势 | 精读 | done | 9 |
| 第12章 | 当集市开始构建教堂(KDE) | 精读 | done | 7 |
| 第五部分:语言与架构 | ||||
| 第13章 | 软件架构:面向对象与面向函数 | 精读 | done | 11 |
| 第14章 | 重读经典(Panagiotis Louridas) | 精读 | done | 10 |
| 跋 | 漂亮地构建(William J.Mitchell) | 略读 | done | 0 |
实践卡进度
| 序号 | 实践标题 | 实践方式 | 状态 | 关联章节 | 产出 |
|---|---|---|---|---|---|
| 1 | 深读Emacs真实源码验证缓冲区模型 | 实现深读 | done | 第11章 | notes/架构之美/ideas/idea-001-深读Emacs真实源码验证缓冲区模型.md |
| 2 | 审查cardbox中overview内容的存储决策 | 决策实践 | done | 第12章 | notes/架构之美/ideas/idea-002-审查cardbox中overview内容的存储决策.md |
| 3 | 用命令查询分离审查cardbox核心函数 | 决策实践 | done | 第13章 | notes/架构之美/ideas/idea-003-用命令查询分离审查cardbox核心函数.md |
类别清单核对(系统架构类)
| 维度 | 覆盖状态 | 关联卡片标题或未覆盖理由 |
|---|---|---|
| 服务拆分原则 | 已覆盖 | ch04-009-主动应用Conway法则在团队边界处刻意划清软件接口(团队边界即服务/模块边界);ch02-002-双向依赖会让系统退化成不可拆解的整体 |
| 通信机制(同步/异步取舍) | 已覆盖 | ch07-005-异步通知比同步等待更能提升IO吞吐量;ch12-002-控制通道与数据通道分离防止大数据阻塞小消息 |
| 一致性与事务权衡 | 已覆盖 | ch03-005-用事务包装任务把并发冲突转化为自动重试 |
| 可观测性设计(日志/监控/链路追踪) | 未覆盖 | 定向检索全书”监控”“可观测”“链路追踪”“日志”关键词,仅第3章(part0121/0122)提到元服务对机器负载和存活状态的监控,但该内容已作为动态负载再分配机制被ch03-007覆盖,本书未把日志采集、监控体系、链路追踪作为独立架构议题展开 |
| 容错设计(熔断/降级/重试) | 已覆盖 | 第8章Guardian整章(ch08-002心跳超时、ch08-003检查点、ch08-004松散连接、ch08-005请求编号幂等、ch08-008分裂大脑);ch04-005快重试与慢重试两级策略 |
| 扩展性瓶颈与应对 | 已覆盖 | ch03-003地理分区与分片;ch03-007运行时动态分组优于开发期硬编码;第6章Facebook平台数据增长整章 |
| 部署与发布策略(灰度/回滚) | 未覆盖 | 定向检索全书”灰度”“回滚”“部署”关键词,”部署”仅在少数章节中作为通用词出现(如安装、上线),全书未展开讨论灰度发布、回滚等具体工程实践,最接近的ch04-007自动化数据库迁移属于变更管理而非发布策略本身 |
Spine 文件映射(part 号 → 章节,章节内含多个小节 part 文件,仅列首尾)
- part0080: 架构之美(书名页)
- part0081: O’Reilly Media介绍
- part0082: 推荐序一
- part0083: 推荐序二
- part0084: 推荐序三
- part0085: 推荐序四
- part0086: 译者序
- part0087: 作译者简介
- part0088: 序 Stephen J.Mellor
- part0089: 前言
- part0090: 第一部分标题页(论架构,非独立章节)
- part0091~0104: 第1章 架构概述(含1.1简介 part0091、1.2创建软件架构 part0095、1.3架构结构 part0096、1.4好的架构 part0101、1.5美丽的架构 part0102、致谢 part0103、参考文献 part0104)
- part0105~0113: 第2章 两个系统的故事(2.1混乱大都市 part0105、2.2设计之城 part0108、2.3说明什么问题 part0111、2.4轮到你了 part0112、参考文献 part0113)
- part0114: 第二部分标题页(企业级应用架构)
- part0115~0123: 第3章 伸缩性架构设计(3.1简介 part0115、3.2背景 part0116、3.3架构 part0119、3.4关于架构的思考 part0123)
- part0126~0137: 第4章 记忆留存(4.1功能和约束 part0126、4.2工作流 part0127、4.3架构关注点 part0128、4.4用户反应 part0135、4.5结论 part0136、参考文献 part0137)
- part0138~0144: 第5章 面向资源的架构(5.1简介 part0138 ~ 5.7结论 part0144)
- part0145~0159: 第6章 数据增长:Facebook平台的架构(6.1简介 part0145 ~ 6.6总结 part0159)
- part0160: 第三部分标题页(系统架构)
- part0161~0169: 第7章 Xen和虚拟化之美(7.1简介 part0161 ~ 7.8延伸阅读 part0169)
- part0170~0196: 第8章 Guardian(8.1 part0170 ~ 8.13延伸阅读 part0196)
- part0197~0210: 第9章 JPC(9.1简介 part0197 ~ 9.11第二次做会更好 part0210)
- part0211~0233: 第10章 元循环虚拟机的力量:Jikes RVM(10.1背景 part0211 ~ 参考文献 part0233)
- part0234: 第四部分标题页(最终用户应用架构)
- part0235~0241: 第11章 GNU Emacs(11.1使用中的Emacs part0235 ~ 11.4另外两个架构 part0241)
- part0243~0249: 第12章 当集市开始构建教堂(12.1简介 part0243 ~ 12.4ThreadWeaver part0249)
- part0254: 第五部分标题页(语言与架构)
- part0255~0276: 第13章 软件架构:面向对象与面向函数(13.1概述 part0255 ~ 参考资料 part0276)
- part0277~0281: 第14章 重读经典(14.1所有东西都是对象 part0277 ~ 参考资料 part0281)
- part0282: 跋 漂亮地构建(William J.Mitchell)
章节与卡片
01 架构概述
- 架构师的首要关注点不是功能,而是品质属性 普通读书笔记卡
01 创建软件架构
- 架构师首要关注点是品质而非功能 普通读书笔记卡
01 架构概述
- 架构没有唯一正确答案,只有折中之后的"足够好" 普通读书笔记卡
01 美丽的架构
- 概念完整性是美丽架构的核心特征 普通读书笔记卡
01 架构概述
- 概念完整性——用一套规则处处一致地解决问题,是美丽架构的核心 普通读书笔记卡
01 架构结构
- 用多种独立结构分别回答不同的架构关注点 普通读书笔记卡
01 架构概述
- 模块的边界,应该划在"一项设计决定能单独改变"的地方 普通读书笔记卡
01 使用结构
- 使用结构必须是无环层次才能支持增量构建 普通读书笔记卡
01 架构概述
- 真正美丽的架构,要经得起时间考验、不越过"衰老地平线" 普通读书笔记卡
01 好的架构
- 架构评估要么建模量化要么靠结构化质询 普通读书笔记卡
02 两个系统的故事:现代软件神话
- 代码集从来不会"没有架构",只会有一个糟糕的架构 普通读书笔记卡
02 后果
- 内聚与耦合是评估模块设计质量的两把尺子 普通读书笔记卡
02 两个系统的故事:现代软件神话
- 不必要的耦合,最终会让系统丧失被单独测试的能力 普通读书笔记卡
02 后果
- 双向依赖会让系统退化成不可拆解的整体 普通读书笔记卡
02 两个系统的故事:现代软件神话
- 需求还不清晰时,不要急着设计"能做任何事"的整体架构 普通读书笔记卡
02 后果
- 架构腐烂常常源于组织问题而非技术问题 普通读书笔记卡
02 两个系统的故事:现代软件神话
02 故事展开
- YAGNI不是不设计而是推迟不必要的设计决定 普通读书笔记卡
02 两个系统的故事:现代软件神话
- 架构腐烂的破坏力,最终会外溢到团队关系和公司政治层面 普通读书笔记卡
02 故事展开
- 单元测试反过来会倒逼出更好的模块设计 普通读书笔记卡
- Conway法则的反向应用是让团队组织方式追随想要的架构 普通读书笔记卡
- 健康的技术债务管理是标记后按计划偿还而非放任 普通读书笔记卡
03 伸缩性架构设计
03 首要目标
- 把分布式复杂性隐藏起来需要严格限定的编程模型 普通读书笔记卡
03 伸缩性架构设计
- 拒绝把状态留在内存里,反而是实现伸缩性和容错能力的前提 普通读书笔记卡
03 延迟是敌人
- MMO的负载特征几乎与企业应用相反 普通读书笔记卡
03 伸缩性架构设计
- 用事务包装每个任务,比要求程序员自己判断加锁时机更可靠 普通读书笔记卡
03 延迟是敌人
- 地理分区与分片各自用不同代价换取伸缩性 普通读书笔记卡
03 伸缩性架构设计
- 基于运行时行为动态聚合,比设计阶段写死的静态分区更能适应真实负载 普通读书笔记卡
03 并行与延迟
- 把一切都持久化反而是实现任务可迁移的关键 普通读书笔记卡
03 伸缩性架构设计
- 对上层业务完全不可见的基础设施层,才能真正自由地持续演化 普通读书笔记卡
03 基本服务
- 用事务包装任务把并发冲突转化为自动重试 普通读书笔记卡
03 通信服务
- 抽象掉通信端点是实现透明负载均衡的前提 普通读书笔记卡
03 并行与延迟
- 运行时动态分组优于开发期硬编码的静态分区 普通读书笔记卡
04 记忆留存
- 把UI组件类型彻底隔离在表示层,领域逻辑只认"属性"不认具体控件 普通读书笔记卡
04 模块和加载程序
- manifest文件与加载程序把隐式依赖变成显式声明 普通读书笔记卡
04 记忆留存
04 模块和加载程序
- 最后负责时刻原则决定何时引入新架构组件 普通读书笔记卡
04 记忆留存
- 关键架构组件不必在项目最初就选定,可以留到"最后负责时刻"再引入 普通读书笔记卡
04 UI和UI模型
- UI模型层把界面框架限制在最外层 普通读书笔记卡
04 记忆留存
- 与其等团队摩擦暴露出软件边界,不如主动用接口划出团队协作的边界 普通读书笔记卡
04 UI和UI模型
- 应用程序外观阻止表示层直接遍历领域模型的关系图 普通读书笔记卡
04 记忆留存
04 可以互换的工作站
- 快重试与慢重试两级策略区分不同性质的故障 普通读书笔记卡
04 不可修改的数据和处处使用的GUID
- 不可修改加复制而非引用两条规则消除隐式联动的意外 普通读书笔记卡
04 数据库迁移
- 自动化数据库迁移把现场变更变成可重复执行的代码 普通读书笔记卡
04 渲染工厂
- 快速失败大声失败要求把验证前置到流程最开始 普通读书笔记卡
- 主动应用Conway法则在团队边界处刻意划清软件接口 普通读书笔记卡
- 渲染引擎主动拉取任务天然实现负载均衡 普通读书笔记卡
05 面向资源的架构:在Web中
05 传统的Web服务
- SOAP/WSDL把请求结构与协议死死捆绑在一起 普通读书笔记卡
05 面向资源的架构:在Web中
05 面向资源的架构
- 通过URL寻址名词而非调用动作是REST的核心区分 普通读书笔记卡
05 面向资源的架构:在Web中
05 Web
- 无状态请求同时带来水平伸缩和结果缓存两个好处 普通读书笔记卡
05 面向资源的架构:在Web中
05 面向资源的架构
- 内容协商让同一个资源地址能适配不同客户端的格式需求 普通读书笔记卡
05 面向资源的架构:在Web中
05 面向资源的架构
- 传递数据引用而非数据本身更利于集中访问控制 普通读书笔记卡
05 Web
- 303状态码表达资源存在但不可被网络直接寻址 普通读书笔记卡
05 应用面向资源的架构
- PURL用一层间接名称化解好名字与可解析位置的张力 普通读书笔记卡
06 数据增长:Facebook平台的架构
- 用元数据描述一次接口,让序列化、文档、多语言绑定全部自动生成 普通读书笔记卡
06 简介
- Web应用的核心价值是数据而非算法或展示层 普通读书笔记卡
06 数据增长:Facebook平台的架构
06 创建一个社会关系Web服务
- 把内部数据访问包装成Web服务是对外开放的第一步 普通读书笔记卡
06 数据增长:Facebook平台的架构
- 把几十个零散的RPC方法,重新包装成开发者熟悉的"表和字段" 普通读书笔记卡
06 数据:创建一个XML Web服务
- 用元数据驱动代码生成解决多语言多协议的一致性问题 普通读书笔记卡
06 数据增长:Facebook平台的架构
06 简单的Web服务认证握手
- 会话密钥让用户可撤销地把授权委托给第三方而不共享密码 普通读书笔记卡
06 数据增长:Facebook平台的架构
06 批量方法调用
- 批量调用解决不了结果之间存在依赖的场景 普通读书笔记卡
06 FQL
- FQL把专用API方法统一抽象成可组合的表和字段 普通读书笔记卡
06 数据增长:Facebook平台的架构
- 三种嵌入第三方内容的方案在安全与数据能力上此消彼长 普通读书笔记卡
06 一些Facebook核心数据
- 隐私可见性规则必须在数据源头强制执行而非依赖调用方遵守 普通读书笔记卡
07 Xen和虚拟化之美
- 把"互不信任"直接内置进架构本身,而不是依赖信任关系来保证安全 普通读书笔记卡
07 Xenoservers
- 把不信任构建进架构反而能默认提供安全性 普通读书笔记卡
07 Xen和虚拟化之美
- 放弃"完美透明兼容",换来数量级的性能提升——半虚拟化的核心取舍 普通读书笔记卡
07 Xenoservers
- 虚拟机比多用户分时系统多出灵活性和性能隔离两项能力 普通读书笔记卡
07 Xen和虚拟化之美
07 半虚拟化
- 半虚拟化用放弃完全兼容换取显著的性能提升 普通读书笔记卡
07 Xen和虚拟化之美
- 让发送方不必等回执就能连续发送,异步通知能大幅提升吞吐量 普通读书笔记卡
07 半虚拟化
- 前后端加环形缓冲的设备架构让驱动实现与硬件彻底解耦 普通读书笔记卡
07 Xen和虚拟化之美
07 Xen的变换形式
- 异步通知比同步等待更能提升I/O吞吐量 普通读书笔记卡
- 授权表机制让虚拟机间传数据时避免不必要的内存复制 普通读书笔记卡
- 把管理策略移出最高权限层是Xen架构的核心设计原则 普通读书笔记卡
07 改变的硬件,改变的Xen
- 硬件辅助虚拟化的进步让半虚拟化的两条路线走向融合 普通读书笔记卡
08 Guardian:一个容错操作系统环境
08 硬件
- 松耦合多处理器用独立总线取代共享内存来消灭单点故障 普通读书笔记卡
08 Guardian:一个容错操作系统环境
- 宁可让可疑的组件立即停止工作,也不要让它带着问题继续运行 普通读书笔记卡
08 诊断
- 心跳超时是判定对方组件已失效的通用手段 普通读书笔记卡
08 Guardian:一个容错操作系统环境
- "进程对"容错的关键不是简单重启备份,而是让它从主进程的断点恢复 普通读书笔记卡
08 回顾一下进程对
- 进程对靠检查点同步把容错从硬件下沉到进程级别 普通读书笔记卡
08 Guardian:一个容错操作系统环境
08 同步
- 松散连接的进程对比完全锁步更能避免同一个bug同时击垮两份副本 普通读书笔记卡
08 Guardian:一个容错操作系统环境
- 一个简单的周期性心跳信号,足以支撑起整套故障检测机制 普通读书笔记卡
08 同步
- 请求编号让故障切换后的重复请求变成幂等操作 普通读书笔记卡
08 安全
- 权限提升检查依赖调用方自觉是一类反复出现的安全漏洞 普通读书笔记卡
08 性能
- 消息传输的固定开销会成为吞吐量的隐性天花板 普通读书笔记卡
08 分裂的大脑
- 分裂大脑现象揭示容错机制本身在极端故障下可能反噬系统 普通读书笔记卡
08 后继者
- 技术领先不等于产生行业影响力 普通读书笔记卡
09 JPC:一个纯Java的x86 PC模拟程序
- 用一个极简的玩具模型验证核心性能假设,再决定值不值得投入全量项目 普通读书笔记卡
09 简介
- 纯软件模拟比硬件虚拟化更彻底地与物理硬件解耦 普通读书笔记卡
09 JPC:一个纯Java的x86 PC模拟程序
- 叠加多个各自独立审计的安全层,比依赖单一的强安全层更难被攻破 普通读书笔记卡
09 概念验证
- 用简化原型先验证可行性再投入完整工程 普通读书笔记卡
09 JPC:一个纯Java的x86 PC模拟程序
- 只优化占据90%执行时间的那10%热点代码,不必优化全部 普通读书笔记卡
09 简介
- 三层独立安全边界叠加提供纵深防御 普通读书笔记卡
09 JPC:一个纯Java的x86 PC模拟程序
09 把4GB放入4GB:这不起作用
- 按硬件页粒度组织内存兼顾节省空间与访问速度 普通读书笔记卡
09 JPC:一个纯Java的x86 PC模拟程序
- 不对代码产生情感依恋,才敢在关键时刻整体推翻重写 普通读书笔记卡
09 保护模式的危险
- 把权限级别切换简化成数组引用的翻转而非重建数据结构 普通读书笔记卡
- 异常应表达罕见但可恢复的情形而非用于常规错误 普通读书笔记卡
09 从事一项毫无成功希望的斗争
- 减少短生命周期对象分配是避开垃圾回收停顿的关键 普通读书笔记卡
- 把复杂指令拆成标准化的四阶段微操作以平衡译码与执行速度 普通读书笔记卡
10 元循环虚拟机的力量:Jikes RVM
10 背景
- 元循环运行时消除了托管语言与实现语言之间的信任边界 普通读书笔记卡
10 元循环虚拟机的力量:Jikes RVM
10 基础的执行模型
- 选择性优化让运行时兼顾启动速度和峰值性能 普通读书笔记卡
10 元循环虚拟机的力量:Jikes RVM
10 静态编译器中的无限分析必然意味着更好的性能
- 在线剖析能做到静态离线分析做不到的针对性优化 普通读书笔记卡
10 元循环虚拟机的力量:Jikes RVM
10 自适应优化系统
- 用滑雪板租赁式的成本收益模型决定要不要优化某个方法 普通读书笔记卡
10 元循环虚拟机的力量:Jikes RVM
10 优化编译
- 静态单赋值形式靠一次写入的约束把局部优化能力扩展到全局 普通读书笔记卡
10 类加载器和反射
- 动态类加载并不排斥基于假设的激进优化只要能撤销 普通读书笔记卡
10 垃圾收集比显式内存管理更慢
- 垃圾回收与显式内存管理的性能优劣被过度简化了 普通读书笔记卡
10 Magic、annotation,使事情流畅地进行
- 用受控的"直接内存访问"后门支撑必须绕开类型安全的底层功能 普通读书笔记卡
10 线程模式
- 绿色线程用运行时自管理换取可扩展性但代价是脱离操作系统感知 普通读书笔记卡
11 GNU Emacs:滋长的特性是其优势
11 使用中的Emacs
- 帧窗口缓冲区三层模型让一切内容都可编辑 普通读书笔记卡
11 GNU Emacs:滋长的特性是其优势
11 Emacs的架构
- 控制器只管数据模型不碰显示重绘 普通读书笔记卡
11 GNU Emacs:滋长的特性是其优势
- 刻意把底层数据模型做到极简,却坦然接受表面命令集合变得庞大 普通读书笔记卡
11 模型:缓冲区
- 文本属性依附字符覆盖图独立标记区间 普通读书笔记卡
11 GNU Emacs:滋长的特性是其优势
- 一致的命名规范和非模态设计,驯服了一个原本会失控的庞大命令集合 普通读书笔记卡
11 视图:Emacs重绘引擎
- 自动重绘和等输入才刷新把显示逻辑从插件作者手中收走 普通读书笔记卡
11 GNU Emacs:滋长的特性是其优势
11 控制器:Emacs Lisp
- 用命名规范而非模块系统防止代码互相干扰 普通读书笔记卡
11 滋长的特性
- 滋长的特性从个人命令演化成官方功能的四级路径 普通读书笔记卡
11 滋长的特性和用户界面复杂性
- 评价界面复杂度要分开看模型复杂度和命令复杂度 普通读书笔记卡
11 滋长的特性和可维护性
- 包的组合体依靠语言抽象边界维持可维护性 普通读书笔记卡
11 Eclipse
- 无处不在的扩展点与不安全的插件是同一设计的两面 普通读书笔记卡
12 当集市开始构建教堂
- 早期写死的规模假设,会在"没人敢动内核"的沉默里悄悄拖垮整个系统 普通读书笔记卡
12 KDE项目的历史和组织结构
- 组织架构与技术方向刻意脱钩延长项目寿命 普通读书笔记卡
12 当集市开始构建教堂
12 Akonadi的架构
- 控制通道与数据通道分离防止大数据阻塞小消息 普通读书笔记卡
12 当集市开始构建教堂
12 Akonadi的架构
- 独立进程隔离子功能用序列化开销换可靠性和安全性 普通读书笔记卡
12 当集市开始构建教堂
12 Akonadi的架构
- 分层图与同心圆图表达不同的系统重心 普通读书笔记卡
12 当集市开始构建教堂
12 Akonadi的架构
- 是否使用关系数据库要看数据是否结构化 普通读书笔记卡
- 序列化器插件把类型知识挪出核心存储层 普通读书笔记卡
12 ThreadWeaver简介:当其载入一个文件时有多复杂
- 声明式作业序列取代层级式回调解决GUI阻塞 普通读书笔记卡
13 软件架构:面向对象与面向函数
13 概述
- 架构美的三条可检验标准 普通读书笔记卡
13 软件架构:面向对象与面向函数
13 函数式示例
- 原子成分加合成方式让新增计算和新增对象互不牵连 普通读书笔记卡
13 软件架构:面向对象与面向函数
13 函数式方法的评价
- 部分复用一个模块必然撞上复制粘贴与整体引用的两难 普通读书笔记卡
13 软件架构:面向对象与面向函数
13 函数式方法的评价
- 模块黑盒程度越高外部可定制性越低 普通读书笔记卡
13 软件架构:面向对象与面向函数
- 在论证开始前主动列出自己论证的局限性,反而会让结论更可信 普通读书笔记卡
13 函数式的优势
- 操作作为一等公民是函数式留给后来语言的核心遗产 普通读书笔记卡
- 延迟计算与光标是处理无限结构的两种等价方式 普通读书笔记卡
13 状态调停
- 命令查询分离用编码约定换取引用透明 普通读书笔记卡
13 模块化策略
- 类把类型和模块强行合并成同一个东西 普通读书笔记卡
13 可扩展性:添加类型
- 动态绑定把类型分支判断从客户代码中彻底移除 普通读书笔记卡
13 可扩展性:添加操作
- 访问者模式用类爆炸换来不修改原有类型 普通读书笔记卡
13 基于代理的程序库使访问者模式变成多余的
- 把方法调用封装成头等对象消除访问者模式的类爆炸 普通读书笔记卡
14 重读经典
- 把一切都变成对象——连"类"和"正在执行的代码"本身都不例外 普通读书笔记卡
14 所有东西都是对象
- 一切皆对象让继承体系彻底统一但让基础运算多绕一层 普通读书笔记卡
14 重读经典
- 语言(或工具)呈现出来的样子,会诱使使用者以特定的方式去用它 普通读书笔记卡
14 所有东西都是对象
- 把代码包装成对象让控制流不再需要专门语法 普通读书笔记卡
14 重读经典
14 类型是隐式定义的
- 鸭子类型把判断依据从对象是什么换成对象能做什么 普通读书笔记卡
14 重读经典
- 强大的设计原则最实在的好处,是"要学的东西不多" 普通读书笔记卡
14 类型是隐式定义的
- 泛型是否真正基于能力判断决定它给出多大自由度 普通读书笔记卡
14 重读经典
- 经典之所以是经典,是因为每次重读都像第一次读一样有新发现 普通读书笔记卡
14 类型是隐式定义的
- 编译通过只证明语法合规不证明逻辑正确 普通读书笔记卡
- 运行时能力自省给鸭子类型补回一部分安全性 普通读书笔记卡
14 问题
- 方法在子类中无意义是继承关系建错的信号 普通读书笔记卡
- 统一根类的继承体系让打造极简代理类变得困难 普通读书笔记卡
14 砖块和灰浆建筑架构
- 美学影响力与实用好用是两条可以脱节的评价线 普通读书笔记卡
- 形式服从功能不是可以机械套用的绝对真理 普通读书笔记卡
相关主题
暂无公开主题。