- 博客(8)
- 收藏
- 关注
原创 什么Repository层不应该使用insert、update等作为方法命名?
我们设计领域模型时不能以用户为中心作为出发点去思考问题,不能老是想着用户会对系统做什么;而应该从一个客观的角度,根据用户需求挖掘出领域内的相关事物,思考这些事物的本质关联及其变化规律作为出发点去思考问题。领域模型是排除了人之外的客观世界模型,但是领域模型包含人所扮演的参与者角色,但是一般情况下不要让参与者角色在领域模型中占据主要位置,如果以人所扮演的参与者角色在领域模型中占据主要位置,那么各个系统的领域模型将变得没有差别,因为软件系统就是一个人机交互的系统,都是以人为主的活动记录或跟踪;比如:论坛中如果
2021-04-29 16:20:55
215
原创 DDD真的有最佳实践吗?
DDD真的有最佳实践吗?就目前来看,没有。DDD不能只靠阅读就能充分理解,需要通过真正的实践,也会遇到挫折和怀疑,需要及时回顾和反复的学习。即使是聚合边界和聚合根的寻找,也是一件有难度的事情。一种直觉性的实践方法是,看看代码是否有”坏味道“。举例几个例子:一个实体持有了大量的其他的实体,比如School类中包含了一个的List<Student>,那么这个实体是不是会显得很笨重?即使用lazy-load来处理Student,仍然是反模式的。那么不如在领域模型层面将二者的引用关系解除掉。当需
2021-04-29 16:19:45
300
原创 在逻辑上分层之后 实际编码中也会遇到一些问题
首先也是最关键的一点:在Maven项目中,代码分层是通过pom的组织关系实现的。如果想按照更明显的依赖关系,如Application bundle包含assmbler和service两个bundle,会发现配置起来很麻烦也很容易出错,其他层bundle跨层依赖时也很难受。方便起见,可以仅仅通过命名(甚至是约定俗成)来体现哪个bundle属于哪一层,bundle之间的依赖通过pom解决。DO和Domain Model的Convert放在哪里?假如Repository接口放在Domain层,实现放在Infr
2021-04-29 16:18:12
71
原创 代码层面绕过Repository 直接查询DAO 然后转化成VO传给调用方
最最简化的实现方式,是代码层面绕过Repository,直接查询DAO,然后转化成VO传给调用方。这样做初看并没有什么卵用,但是结合到具体的业务场景来看,就有用处了,举几个例子:应用使用了多个数据源,如MySql+ES/opensearch。在分库分表场景下,如果需要查询”所有用户+状态为未开票 的 所有对账单“,直接走MySql是无法查询的,只能使用搜索引擎预先创建的索引,这是一种读写不分离也得分离的情况。数据源的拓扑结构。MySql的读写分离是透明的,假如要自己造轮子,在应用层面指定写库和读库,
2021-04-29 16:17:01
241
原创 MySql实例的主从结构目前对于开发是透明
预想的用来方便扩展的设计,实际上并没有用到。比如开票执行域,预期能够对接不同的开票ISV,但是该系统上线近两年都只接入了一家ISV,并且在可预见的一年以内,都没有接入其他ISV的需求。又如CQRS,除了OpenSearch和MySql这两个数据源,没有其他数据源,并且所使用的MySql实例的主从结构目前对于开发是透明的,所谓CQRS只不过是代码层面写操作继续走repository,读操作绕过repository直接查询DAO而已...
2021-04-29 16:14:20
62
原创 求数组元素平均值
package com.itheima.demo01.arr; /* 有以下数组,存储了6名学员的体重: int[] arr = {120,130,110,125,128,164}; 请编程计算并打印这6名学员的平均体重。 步骤: 1.定义需要计算的数组 2.定义一个变量,来存储累加和 3.遍历数组,获取每个元素 4.将每个元素累加到之前定义的变量中 5.循环结束 6.计算元素的平均值并存储 7.打印平均值 */ public class Average { public static void main(
2021-04-29 16:09:41
763
原创 Windows命令行文件下载方式汇总
当我们通过Web渗透获取了一个Shell,而且目标主机是Windows,我们该怎么去下载后门文件到目标主机上执行呢? 一般来说,实现Windows文件下载执行的方式不外乎以下几种方式。第一种,远程下载文件到本地,然后再执行;第二种,远程下载执行,执行过程没有二进制文件落地,这种方式已然成为后门文件下...
2021-04-29 16:08:51
1082
原创 centos 添加开启开机自启脚本
通过chkconfig命令 centos 设置服务开机自动启动的方式有好多种,这里介绍一下通过chkconfig命令添加脚本为开机自动启动的方法。 编写脚本autostart.sh(这里以开机启动redis服务为例),脚本内容如下: #!/bin/sh #chkconfig: 2345 80 90...
2021-04-29 16:08:17
63
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人