Blog

TCC 分布式事务复盘

近期刚完成分布式事务相关的开发与对接, 想借此机会做一次复盘. 目标回顾 我的目标 完成设计、保证其正常提供服务 组长的目标 跨服务之间数据一致性, 方便业务端调用, 并没有精确的把整个流程时间加在考量结果中, 只是时间能够接受即可, 要求数据一致性 结果评估 已完成设计, 已保证正常服务 已保证数据一致, 除非服务节点故障, 需要人工重试 流程梳理 TCC分布式事务实现概...

DDD学习笔记

战略 识别场景(不遗漏需求) 识别事件(xx已xx) 识别命令(触发者) 识别模型 战术 识别实体与值对象 划分限界上下文 限界上下文划分取舍 自研&开源&采购 弹性边界 独立发布&绑定发布 是否会引入分布式事务 模型之间依赖关系 后续新需求是否还需要事件风暴? RUP持续建模

DDD学习笔记

WHAT? DDD 是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂性,并围绕业务概 念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演进的问题。DDD 不是 架构,而是一种架构设计方法论,它通过边界划分将复杂业务领域简单化,帮我们设计出清 晰的领域和应用边界,可以很容易地实现架构演进。 注: 虽然是汉语, 但是我看不懂 WHY? 服务怎么拆? 服...

值得分析的 IPUtils

public class IpUtils { private static final String XFF = "x-forwarded-for"; private static final String RANGE = "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"; private static final Pattern ...

每日小收获

重基础, 轻框架 自定义 Validator 抛的异常是 BindException, 而 Spring 自带 Validator 抛的是 MethodParamNotValidException. 这就有点坑了, 一个是 is a 的关系 一个是 has a 的关系, 不方便聚合下沉. ⚠️ UPDATE 语句千万不要忘记写 WHER...

TDD 入门

前言 周末参加了 ThoughtWorks 的线下 TDD 技术交流, 收获还是挺多的, 感觉自己之前一直在闭门造车, 还好是没走太歪. 😅 WHAT TDD 即 Test Driven Design 测试驱动设计 / Test Driven Development 测试驱动开发. TDD 是极限编程中核心的一项实践. 其中最难理解的就是这个驱动的概念, 至少我个人认为是比较难理解的,...

规范的测试类编写

断言 【强制】单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。单元测试中不准使用 System.out 来进行人肉验证,必须使用 assert 来验证。 断言的实现就是判断是否符合预期, 不符合就抛异常. Java 中有提供 assert (断言)关键字, 但是默认是不生效的,...