- 博客(19)
- 资源 (4)
- 收藏
- 关注
原创 《DDD实战》读书笔记六(事件风暴)
《DDD实战》读书笔记六(事件风暴)概述准备参与者准备材料场地分析关注点如何构建领域模型产品愿景业务场景分析领域建模具体可以分为以下三步微服务拆分与设计总结概述事件风暴是一项团队活动,领域专家与项目团队通过头脑风暴的形式,罗列出领域中所有的领域事件,整合之后形成最终的领域事件集合,然后对每一个事件,标注出导致该事件的命令,再为每一个事件标注出命令发起方的角色。命令可以是用户发起,也可以是第三方系统调用或定时器触发等,最后对事件进行分类,整理出实体、聚合、聚合根及限界上下文。准备参与者事件风
2021-04-19 09:36:22
618
1
原创 《DDD实战》读书笔记五(中台介绍及DDD、中台和微服务的关系)
《DDD实战》读书笔记五(DDD、中台和微服务)中台中台概念阿里的定义定义理解中台要做什么业务中台数据中台前中后台的协同前台中台业务中台数据中台DDD、中台和微服务的关系DDD本质中台本质DDD、中台和微服务的协作模式协作模式中台建模中台中台概念阿里的定义中台是一个基础的理念和框架,我们要把所有的基础服务用中台的思路建设,进行联通,共同支持上端的业务。业务中台更多的是支持在线业务,数据中台提供了基础数据处理能力和很多的数据产品给所有业务方用。业务中台、数据中台、算法中台等一起提供对上层业务的支撑
2021-04-12 08:12:40
609
原创 《DDD实战课》读书笔记四(几种常见的架构及对比)
《DDD实战课》读书笔记四(几种常见的架构及对比)架构介绍整洁架构(洋葱架构)架构图架构说明六边形架构架构图架构说明三种架构的对比与分析架构介绍整洁架构(洋葱架构)架构图架构说明整洁架构的最主要原则是依赖原则,它定义了各层的依赖关系,越往里依赖越低,代码级别越高,越是核心能力。外圆代码只能指向内圆,内圆不需要知道外圆的任何情况。领域模型实现领域内核心业务逻辑,它封装了企业级的业务规则。领域服务实现涉及多个实体的复杂业务逻辑。应用服务实现与用户操作相关的服务组合或编排,包含特定业务流程规则
2021-04-01 08:36:09
568
2
原创 《DDD实战课》读书笔记三(分层架构)
《DDD实战课》读书笔记三(分层架构)什么是分层架构二级目录三级目录什么是分层架构DDD的分层架构在不断发展,最早是传统的四层架构,后来四层架构进一步优化实现各层对基础层的解耦;再后来在领域层和应用层之间增加了上下文环境形成五层架构。从上图来看最早的分层架构中,基础层被其他各层依赖,位于最核心的位置,按照分层架构的思想这个应该就是核心,但是实际上领域层才是软件的核心,所以就采用了依赖倒置的设计优化四层机构实现各层对基础层的解耦。二级目录三级目录...
2021-03-30 09:32:08
245
1
原创 《DDD实战课》读书笔记二(领域事件)
领域事件概述领域事件识别微服务或模块内的领域事件微服务或模块间的领域事件领域事件总体架构事件构建和发布事件持久化事件总线消息中间件事件接收和处理概述在DDD中除了命令和操作等业务行为外,还有一种事件,这种事件发生后会导致进一步业务操作,这种事件叫做领域事件。领域事件是领域模型中非常重要的一部分,用来表示领域中发生的事件。一个领域事件将导致进一步的业务操作,在实现业务解耦的同时,还有助于形成完整的闭环。领域事件识别业务、需求或领域专家的关键词:“如果发生…则…”,“当做完…的时候,请通知…”,
2021-03-26 09:51:09
267
1
原创 《DDD实战》读书笔记一(DDD核心知识体系)
DDD核心知识体系概述领域领域子域总结限界上下文通用语言限界上下文总结领域对象实体实体的业务形态实体的代码形态实体的运行形态实体的数据库形态值对象值对象的业务形态值对象的代码形态值对象的运行形态值对象的数据库形态值对象的优势和局限实体与值对象的关系聚合和聚合根聚合聚合根如何设计聚合聚合的设计原则概述DDD的核心知识体系主要包括领域、子域、核心域、支撑域、通用域、限界上下文、实体、值对象、聚合、聚合根等概念。领域领域领域就是用来确定范围的。范围就是边界,这就是DDD不断强调边界的原因。DDD的
2021-03-25 13:35:39
423
原创 DDD(领域驱动设计)概述
DDD(领域驱动设计概述)定义概述核心概念通用语言特征领域子域核心域通用域支撑域限界上下文划分原则定义领域驱动设计是一种处理高度复杂域的设计方法,试图分离技术实现的复杂性,围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演化等问题。团队应用它可以成功地开发复杂业务软件系统,使系统在演进时任然保持敏捷。概述DDD不是语言,不是框架,不是架构,而是一种方法论,它可以分离业务复杂度和技术复杂度,DDD也并不是一个新的事物,它是面向对象的拔高,最终目标还是高内聚、低耦合。DDD的
2021-03-19 09:42:32
300
原创 软件的复杂度的产生原因及控制原则
软件的复杂性的产生原因及应对软件复杂性产生的原因沟通问题管理困难编写规范软件规模软件结构控制复杂度的原则KISS(Keep it Simple Stupid)原则保持结构的清晰与一致拥抱变化可进化可扩展可定制软件复杂性产生的原因沟通问题用户对某些需求只存在一个概念,对具体要实现成一个什么样子没有想法。另外用户与开发者思维的不一致,用户也很难将他的意思很清晰的传达给开发者。因为沟通不畅、客户需求不清晰等多种因素会带来需求变更和修改。如果不能很好地控制这种变更,则可能会因为多次修改而导致业务逻辑纠缠不
2021-03-18 08:51:50
885
1
原创 贫血模型和充血模型
贫血模型和充血模型贫血模型(Anemic Domain Model)举例(MVC框架)贫血模型的优点贫血模型的缺点说明充血模型(Rich Domain Model)优点缺点失血模型涨血模型为什么贫血模型受欢迎什么场景下使用充血模型贫血模型(Anemic Domain Model)贫血模型是一种领域模型,其中领域对象包含很少或没有业务逻辑。是一种面向过程的编程模式,它与面向对象设计的基本思想相悖,将数据和过程结合在一起。因为贫血模型没有逻辑实现,所以逻辑基本上会放到调用贫血模型的service中,这些
2021-03-16 09:24:48
3688
3
原创 EJB有状态和无状态会话Bean的区别
有状态会话bean:每个用户有自己特有的一个实例,在用户生存期内bean保持了用户的信息,即有状态;一旦用户销毁(调用结束或实例结束),bean的生命期也会结束,也就是说每个用户最初得到一个初始bean无状态会话bean:bean一旦被实例化加入会话池中,每个用户都可以共用,即使用户消亡,bean生命期也不一定结束,仍然可以被其他用户调用,由于没有特定用户,那么就不能保持某一用户状态,所以叫无
2009-12-16 09:32:00
586
1
原创 异步调用WebService
异步调用WebService的代码:RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:8888/
2009-12-15 17:31:00
598
原创 WebService中的Session管理
实现同一个WebService的Session管理需要如下三步:1. 使用MessageContext和ServiceContext获得与设置key-value对。2. 为要进行Session管理的WebService类所对应的元素添加一个scope属性,并将该属性值设为transportsession。3. 在客户端使用setManageSession(true)打开Sessio
2009-12-15 16:57:00
513
原创 pojo方式注意事项
1、pojo类不能使用package关键字声明包2、Tomcat文件夹下Webapps/axis2/WEB-INF/conf/axis2.xml中配置代码true当值为true时tomcat自动发布WebService,false时不会自动发布true当hotupdate为true时会自动更新,false则不会自动更新3、pojo目录是默认的目录,如果要修改可以在axis2
2009-12-15 15:18:00
545
原创 通过Pojo实现WebService
1、编写WebServicepublic class HelloService{public String getGreeting(String name){return "hello,"+name; }} 方法为Public则被作为WebService方法发布2、发布WebService将HelloService.class放到Tomcat中webapps/axi
2009-12-15 14:58:00
269
原创 Java序列化的机制及原理
Serialization(序列化)是一种将对象以一连串的字节描述的过程,反序列化deserialization是一种将这些字节重建成一个对象的过程。 序列化的必要性: Java中一切都是对象,在分布式环境中经常需要将object从一端网络或设备传递到另一端。这就需要一种在两端传输数据的协议,这样Java序列化机制就产生了。 如何序列化一个对象:
2009-12-15 14:40:00
260
原创 JS将String转化为Date
时间格式的字符串可以通过var d=new Date(str.replace(/-/g,"/"));进行转化,时间差可以通过date1.getTime()-date2.getTime()获取,得到的值为毫秒
2009-12-03 16:57:00
505
原创 Store中数据中如果存在对象,对象中数据的获取
如果store的数据格式如下,在store数据中含有一个nodeRole对象{ "dir":null, "root":[ { "id":1, "nodeRole":{"id":1,"node":null,"nodeEnable":true,"roleID":4}
2009-12-01 10:00:00
531
原创 Java
十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i) 十六进制转成十进制 Integer.valueOf("FFFF",16).toString() 八进制转成十进制 Integer.valueOf("876",8).to
2009-11-23 16:14:00
293
原创 Eclipse输入时自动提示
从Window -> preferences -> Java -> Editor -> Content assist -> Auto-Activation下,我们可以在"."号后面加入我们需要自动提示的首字母,但是我们可以发现,这个Auto-Activation下的输入框里最多只能输入4个字母,通过File -> export -> general -> preferences导出文件,然后
2009-07-19 08:16:00
559
boot2docker19.03.12
2020-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人