更多实用技能

《程序员的底层思维》学习笔记目录

原书:《程序员的底层思维》 | 作者:张建飞

7.1.1 管道模式

例如 Linux 中的管道

1
list | grep aoe

7.1.2 责任链模式

责任链模式和管道模式在结构上非常相似,它们都由一组对象形成了一个处理请求的链表。

管道模式与责任链模式的区别

  • 在管道模式中,每个管道都需要处理请求
  • 在中责任链模式中,每个功能模块都有处理请求的责任,但最终这个请求只会被链条中满足条件的那个功能模块处理

在假期乘坐高铁出游时,我们可以经历以上两种模式

管道模式

乘坐高铁时,无论你去哪,都必须经过的管道

核验身份(刷身份证/刷脸) →安检 →通过检票口 →在站台候车 →登上高铁

责任链模式

假设我们从上海(起点)出发,乘坐开往北京(终点)的列车,虽然途经下列城市,但你只会在到达目的地(其中一站)后下车,不用在每站都下车

上海(起点)→南京 →天津 →北京(终点)

增加人手有时会让项目进度更糟

布鲁克斯定律(《人月神话》一书中提出):向进度落后的项目中增加人手,只会使项目更加落后

— 7.2.2 y 轴拆分

  • 人员带来的协作成本会抵消生产力
  • 协调团队努力的沟通成本时团队规模的平方,因此随着团队规模不断扩大,研发人员把越来越多的时间花费在协调上,生产力会不断降低

8.3.3 连贯接口设计

重要作用:限定方法调用的顺序

比如,在构建状态机的时候,我们只有在调用了 from 方法后才能调用 to 方法,Builder 模式没有这个功能

10 解藕思维

两种主要方式:

  • 依赖倒置解藕
  • 中间层映射解藕

10.2 依赖倒置解藕

书中描述:有两个模块 A 和 B,本来 A 是直接依赖 B 的,依赖方向是 A -> B,通过增加一个抽象 C,然后让模块 B 去实现这个抽象, 从而反转了依赖的方向,变成 B -> A,这就是依赖倒置。

我的理解:以幼儿园老师告诉小朋友怎么做糖醋排骨为例

直接依赖:做糖醋排骨时要放镇江香醋,巴拉巴拉…… 当小朋友发现家里没有镇江香醋时,就会一本正经的告诉爸爸妈妈一定要镇江香醋

依赖倒置:做糖醋排骨时要放,巴拉巴拉…… 只要家里有醋,小朋友就能开心的看着爸爸妈妈为他制作香喷喷的糖醋排骨!

11.4 掌握标准制定权

SPI (Service Provider Interface),它可以帮助我们反转依赖的方向,化被动为主动。

SPI 的意思是,我需要这样的服务,而且我已经把标准(Interface)定义好了,你提供的服务必须按我的规则来。

13.3 TestsContainer 小工具

项目地址

测试工具,当容器启动比较耗时的时候,这个工具特别有用,用法摘要:

启动TestsContainer

  1. 运行测试类,在命令行中输入类全称:com.alibaba.cola.test.Demo
  2. 运行单个方法,在命令行中输入方法引用:com.alibaba.cola.test.Demo#testTwo
  3. 重复运行,输入r

还有一个 GitHub 人气项目 Testcontainers 支持多语言

书中链接文档

comments powered by Disqus