技术标签: 读后感
本文是阅读《DDD实战课》一刻的读后整理原文(原文可到极客时间自行购买)
DDD 分层架构对三层架构的业务逻辑层进行了更清晰的划分,改善了三层架构核心业务逻
辑混乱,代码改动相互影响大的情况。DDD 分层架构将业务逻辑层的服务拆分到了应用层
和领域层。应用层快速响应前端的变化,领域层实现领域模型的能力。
另外一个重要的变化发生在数据访问层和基础层之间。三层架构数据访问采用 DAO 方式;
DDD 分层架构的数据库等基础资源访问,采用了仓储(Repository)设计模式,通过依赖
倒置实现各层对基础资源的解耦。
仓储又分为两部分:仓储接口和仓储实现。仓储接口放在领域层中,仓储实现放在基础层。
原来三层架构通用的第三方工具包、驱动、Common、Utility、Config 等通用的公共的资
源类统一放到了基础层
中台业务抽象的过程就是业务建模的过程,对应 DDD 的战略设计。系统抽象的过程就是微
服务的建设过程,对应 DDD 的战术设计。下面我们就结合 DDD 领域建模的方法,讲一下
中台业务建模的过程。
第一步:按照业务流程(通常适用于核心域)或者功能属性、集合(通常适用于通用域或支
撑域),将业务域细分为多个中台,再根据功能属性或重要性归类到核心中台或通用中台。
核心中台设计时要考虑核心竞争力,通用中台要站在企业高度考虑共享和复用能力。
第二步:选取中台,根据用例、业务场景或用户旅程完成事件风暴,找出实体、聚合和限界
上下文。依次进行领域分解,建立领域模型。
由于不同中台独立建模,某些领域对象或功能可能会重复出现在其它领域模型中,也有可能
本该是同一个聚合的领域对象或功能,却分散在其它的中台里,这样会导致领域模型不完整
或者业务不内聚。这里先不要着急,这一步我们只需要初步确定主领域模型就可以了,在第
三步中我们还会提炼并重组这些领域对象。
第三步:以主领域模型为基础,扫描其它中台领域模型,检查并确定是否存在重复或者需要
重组的领域对象、功能,提炼并重构主领域模型,完成最终的领域模型设计。
第四步:选择其它主领域模型重复第三步,直到所有主领域模型完成比对和重构。
第五步:基于领域模型完成微服务设计,完成系统落地。
各层之间通过接口调用
第一种是应用服务调用并组装领域服务。此时领域服务会组装实体和实体方法,实现核
心领域逻辑。领域服务通过仓储服务获取持久化数据对象,完成实体数据初始化。
第二种是应用服务直接调用仓储服务。这种方式主要针对像缓存、文件等类型的基础层数据访问。这类数据主要是查询操作,没有太多的领域逻辑,不经过领域层,不涉及数据库持久化对象
文章浏览阅读235次。一、开发工具与技术的研究就现在开发OA的技术来说,主要集中分为三大类:基于C/S结构的应用程序开发,结合C/S结构和Web技术的复合应用程序,基于B/S结构的动态网页技术。以下将分析这三类技术的各自优缺点:C/S结构系统:是传统开发模式,一般以数据库和客户端的两层结构实现,也有加入中间件的三层或多层结构,在OA早期是标准的系统模式,但随着计算机技术的发展和网络的发展,它已..._办公自动化系统开发
文章浏览阅读4.3w次。 在SQL Server数据库中,使用top关键字: SELECT TOP number|percent column_name(s) FROM table_name 在MySQL数据库中,使用LIMIT关键字: SELECT column_name(s) FROM table_name LIMIT number 例子:...
文章浏览阅读1.8k次。集成运放的参数较多,其中主要参数分为直流指标和交流指标,外加所有芯片都有极限参数。本文以NE5532为例,分别对各指标作简单解释。下面内容除了图片从NE5532数据手册上截取,其它内容都整理自网络。极限参数主要用于确定运放电源供电的设计(提供多少V电压、最大电流不能超过多少),NE5532的极限参数如下:直流指标运放主要直流指标有输入失调电压、输入失调电压的
文章浏览阅读1.4k次,点赞2次,收藏2次。工业上要检测螺丝的内外直径、内外牙距、内外角度,现在比较好用的图像处理库,开源的opencv,收费的有halcon。为了实现螺纹检测,和对比螺纹检测拿个库比较好。分别用opencv和halcon实现了螺纹检测,通过对比发现用halcon实现的效果比较。现在用博客把实现过程记录下来:1、需要检测的螺纹数据如下: 2、为了实现检测螺丝以上数据,螺纹内径、螺纹外径、螺纹外牙距、螺纹内牙距、螺纹内角度和螺..._halcon螺纹检测
文章浏览阅读113次。一个线程可以在其他线程上调用join()方法,效果是等待一段时间指导第二个线程结束才继续进行。如果某个线程在另一个线程t上调用t.join(),此线程被挂起,直到目标线程t结束才恢复,即t.isAlive()返回为false。也可以在join()上加一个时间参数,是一个等待的时间上线。此外 join方法可以被中断 在调用线程上调用interrupt()方法,thinking in java...
文章浏览阅读237次。AMiner平台(https://www.aminer.cn)由清华大学计算机系研发,拥有我国完全自主知识产权。平台包含了超过2.3亿学术论文/专利和1.36亿学者的科技图谱,提供学者评价、专家发现、智能指派、学术地图等科技情报专业化服务。系统2006年上线,吸引了全球220个国家/地区1000多万独立IP访问,数据下载量230万次,年度访问量超过1100万,成为学术搜索和社会网络挖掘研究的重要数据和实验平台。必读论文:https://www.aminer.cn/topic论文集地址:https:/.
文章浏览阅读1w次,点赞5次,收藏19次。表名 table_name 要操作的字段名 field_name 如果删除字段的值,可以将所有值清空: UPDATE table_name SET field_name = ''; 如果删除字段(这个字段从此就没有了): ALTER TABLE table_name DROP COLUMN field_name;..._mysql删除某一列数据
文章浏览阅读3.5k次,点赞4次,收藏36次。一、前言所谓下采样是对点云的一种滤波,目的是减少点云数目由尽可能保持点云原有状态,从而减少计算量。所谓体素栅格是将点云空间划分为一个个极小的格子,格子里包含几个点。对体素栅格里面的点取平均或者加权平均,得到一个点,代替原来的几个点。显然,栅格选的越大,滤波后点云点数越少,速度快,但是会对原来的点云过度模糊;栅格选的越小,作用反之。二、代码实现输入点云pc,提前计算好点云的包围盒子(三..._体素下采样的代码
文章浏览阅读3.2w次,点赞6次,收藏24次。1. 前言访问公众号网页提示: redirect_uri域名与后台配置不一致这个错误相信每个开发公众号的开发者都遇到过,本文记录详细配置步骤在工作中也有很多客户问我这个问题,也是为了避免重复沟通,到时候把这篇文章发给客户就可以了 -2. 配置网页授权域名详细步骤微信公众平台: https://mp.weixin.qq.com登录微信公众平台,在 设置与开发 -> 公众号设置 -> 功能设置 中找到 网页授权域名一个服务号最多只能配置两个网页授权域名,但是JS接口安全域名却最多_redirect_uri域名与后台配置不一致
文章浏览阅读580次。以下步骤均为本人实际操作,可能与你的安装方法有所区别,但我会尽量排除疑惑)大致步骤(1)安装mcrypt,(2)安装php对mcrypt的扩展,(3)重启apache(1)、确认你的linux没有安装mcrypt库,如果已安装,跳过安装步骤[root@test-206~]#yumlistinstalled|grepmcryptlibmc..._libmcrypt-devel
文章浏览阅读640次。这个博客的功能虽然挺少,但是使用起来还是对vue的理解有了一点的进步。这个小项目的技术栈为:vue,vue cli3,vue router,axios,fire base。编辑器是使用的vs code。首先先建立vue的脚手架,使用命令:vue create . 。在一个我创建好的目录之下建立脚手架。之后把脚手架中默认的内容去掉。首先我的博客的常规布局需要用到四个组件。1、顶部导航栏。..._博客例子
文章浏览阅读1.7k次,点赞2次,收藏9次。为什么我们需要序列模型?当你用前向神经网络或者CNN去处理序列模型的时候,表现的很差。我们常见的序列模型的例子:一段语音或者一句包含序列化单词的英语句子。前向传播或者CNN需要这些句子保持同样的额长度,但是我们都知道一句话里不同单词的长度都是不同的。如果你把这些语句变成同样的长度作为一个输入的话,这些传统的模型还是不能理解这些输入的含义。给定一段话,当观察某一个单词的时候你会发现,序列化模型都在..._rnn & lstm & gru & brnn