消息队列高手课
我的建议是,先看一下单元测试用例。因为,一般单元测试中,每一个用例就是测试代码中的一个局部或者说是一个小流程。那对于一些比较完善的开源软件,它们的单元测试覆盖率都非常高,很容易找到我们关心的那个流程所对应的测试用例。
门面模式(Facade Pattern)主要的作用是给客户端提供了一个可以访问系统的接口,隐藏系统内部的复杂性。
类 DefaultMQProducer 实现了接口 MQProducer,它里面的方法实现大多没有任何的业务逻辑,只是封装了对其他实现类的方法调用,也可以理解为是门面的一部分。
状态模式 (State Pattern) 允许一个对象在其内部状态改变时改变它的行为,对象看起来就像是改变了它的类。
在设计状态的时候,有两个要点是需要注意的:
- 第一是,不仅要设计正常的状态,还要设计中间状态和异常状态,否则,一旦系统出现异常,你的状态就不准确了,你也就很难处理这种异常状态
- 第二个要点是,将这些状态之间的转换路径考虑清楚,并在进行状态转换的时候,检查上一个状态是否能转换到下一个状态
单例模式(Singleton Pattern)涉及一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
后端技术面试 38 讲
由于事务脚本模式中,Service、Dao 这些对象只有方法,没有数值成员变量,而方法调用时传递的数值对象没有方法(或者只有一些 getter、setter 方法),因此事务脚本又被称作贫血模型。
领域模型模式和事务脚本模式不同。在领域模型模式下,业务逻辑围绕领域模型设计。
领域模型的对象包含了对象的数据和计算逻辑,比如合同对象,既包含合同数据,也包含合同相关的计算。因此从面向对象的角度看,领域模型才是真正的面向对象。
领域模型是合并了行为和数据的领域的对象模型。
对于复杂的业务逻辑实现来说,用领域模型模式更有优势。特别是在持续的需求变更和业务迭代过程中,把握好领域模型,对业务逻辑本身也会有更清晰的认识。
在需求变更过程中,如果一个需求和领域模型有冲突,和模型的定义以及模型间的交互逻辑不一致,那么很有可能这个需求本身就是伪需求。很多看似合理的需求其实和业务的内在逻辑是有冲突的,这样的需求也不会带来业务的价值,通过领域模型分析,可以识别出这样的伪需求,使系统更好地保持一致性,也可以使开发资源投入到更有价值的地方去。
领域是一个组织所做的事情以及其包含的一切,通俗地说,就是组织的业务范围和做事方式,也是软件开发的目标范围。
领域驱动设计就是从领域出发,分析领域内模型及其关系,进而设计软件系统的方法。
领域驱动设计通常的做法:
- 把整个领域拆分成多个子域,比如用户、商品、订单、库存、物流、发票等
- 强相关的多个子域组成一个限界上下文,限界上下文是对业务领域范围的描述,对于系统实现而言,可以想象成相当于是一个子系统或者是一个模块
在 DDD 中,领域模型对象也被称为实体,每个实体都是唯一的,具有一个唯一标识。 实体设计是 DDD 的核心所在,首先通过业务分析,识别出实体对象,然后通过相关的业务逻辑设计实体的属性和方法。
DDD 推荐尽可能将对象设计为值对象,值对象是仅仅用来做度量或描述的对象。值对象的一个特点是不变性,一个值对象创建以后就不能再改变了。
领域驱动设计的技术体系内还有其他一些方法和概念,但是最核心的还是领域模型本身,通过领域实体及其交互完成业务逻辑处理才是 DDD 的核心目标。至于是不是用了 CQRS,是不是事件驱动,有没有事件溯源,并不是 DDD 的核心。
35 岁的程序员真正有优势的是他在一个业务领域的多年积淀,对业务领域有更深刻的理解和认知。
我们为什么睡觉
运动后的睡眠会加速常见炎症的物理恢复,刺激肌肉的修复,并有助于以葡萄糖和糖原的形式补充细胞能量。
中风病人的运动功能日复一日缓慢恢复,从某种程度上说可以归因于睡眠日复一日的辛勤工作。
熟睡的大脑通过清醒时大脑永远不会尝试的方式,将不同的知识集合起来,形成非常了不起的问题解决能力。
大脑有一个功能,即使是在最轻微的睡眠剥夺之下也会受到影响,那就是专注力。
随着长达数月或数年的长期睡眠不足,个体实际上将会适应自己表现受损、警觉性降低和能量水平降低的状况。
清醒 19 个小时之后,睡眠不足的人和那些达到法定醉驾标准的人认知受损程度一样。
在大多数第一世界国家,车祸都是主要死因之一。
睡眠时间的减少与事故死亡风险的增加之间并不是线性关系,而是呈指数增长。
睡眼不足时,人类的思维不能准确地感知到自己的睡眠有多么不足。
疲劳驾驶比醉酒驾驶更糟糕。
因疲劳、微睡眠或睡着而引起的车祸并不是意外,而是毁灭性冲撞。它们是可预测的,是没有获得充足睡眠的直接结果。
大多数发达国家政府在教育公众疲劳驾驶的危害方面的花费,还不到他们打击酒驾而投入的预算的 1%。
一个位于大脑左右两侧的叫作杏仁核的结构,是引发气愤和狂怒等强烈情绪的关键位点,也与战斗或逃跑反应有关。
没有了睡眠,我们的大脑仿佛恢复到了一种不受控制的原始反应模式。我们会产生不加思考、不适当的情绪反应,并且不能把事情放到更广阔或更加深思熟虑的背景下去分析。