synchronized关键字
1.首先挂一个图图片摘自美团技术团队,个人觉得写的特别好:2.synchronized的锁作用范围Java锁作用范围有两种:一种是类的实例对象的锁(对象锁)。一种是类的class对象(类锁)。比如:在一个静态方法前面加synchronized关键字,就是对这个类的class对象加锁。publiccl
1.首先挂一个图图片摘自美团技术团队,个人觉得写的特别好:2.synchronized的锁作用范围Java锁作用范围有两种:一种是类的实例对象的锁(对象锁)。一种是类的class对象(类锁)。比如:在一个静态方法前面加synchronized关键字,就是对这个类的class对象加锁。publiccl
1.并发编程模型在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明(不可见)。2.Java内存模型的抽象结构从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储
1.volatile关键字的作用可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。有序性(阻止指令重排):volatile标志的变量的写不能与之前的代码重排序;volatile标志的变量的读不能与之后的代码进行重排序(一般记为写前读后后文详细说明)原
1. 关于事件溯源MartinFowler在2005年的博客中提及了“EventSourcing”这个词语,他将事件描述为一个应用的一系列状态改变,这一系列事件能够捕获用来重建当前状态的一切事实真相。他认为事件是不可变的,事件日志是一种只会不断追加(appendonly)的存储。事件从来不会被删除,
1. DDD的实现架构DDD的实现架构有很多种,这些架构都是一种关注点分离模式的实现,也是SOLID单一职责原则的体现,将人们关注的一个职责与其他职责分离,不要试图混合在一起。传统的SOA架构在这方面有很大缺陷,造成了一种单体耦合的架构,虽然这样的大型服务能够实现一定程度的复用和重用,但是在重用和解
1. 充血/贫血模型1.1. 理解充血模型与贫血模型DDD领域模型=数据结构+操作方法,数据和行为结合在一起才是一个完整的真正业务对象(领域对象),也才能够真正发挥对象封装的作用,这样的对象或类称为“充血模型”。贫血模型的对象或类一般只有setter/getter方法,是一种纯粹的数据结构,没有任何
1. Top Level聚合设计是DDD战术设计中的一部分。通过有界上下文划分团队,使用统一语言命名上下文;聚合设计则是进入有界上下文内部讨论其结构。如果说有界上下文解决了领域内的划分,那么聚合就解决了有界上下文内对象之间的划分。所谓划分就是将紧密的放一起,让松散的更加松散,甚至没有关系。从这里能看
1. Top Level领域驱动设计共有两个部分:战略设计战术设计战略设计也可理解为策略设计,是从宏观角度着眼于领域的分析设计,属于系统分析阶段,注重如何从有界上下文中寻找领域模型,战略模式由有界上下文、无所不在的语言和上下文映射组成战术设计属于设计代码阶段,使用聚合、实体、值对象等对象类型概念表达