加入收藏 | 设为首页 | 会员中心 | 我要投稿 阳江站长网 (https://www.0662zz.cn/)- 办公协同、云通信、区块链、物联平台、高性能计算!
当前位置: 首页 > 站长资讯 > 评论 > 正文

布局网络卫星成为重点

发布时间:2021-01-27 13:03:51 所属栏目:评论 来源:互联网
导读:横轴是连接数,纵轴是 QPS。此时,这张图反映了一个数量级,希望大家在面试的时候可以正确的描述出来,不要问你的时候,你回答的数量级相差甚远! 完全基于内存实现 65 哥:这个我知道,Redis 是基于内存的数据库,跟磁盘数据库相比,完全吊打磁盘的速度,就

横轴是连接数,纵轴是 QPS。此时,这张图反映了一个数量级,希望大家在面试的时候可以正确的描述出来,不要问你的时候,你回答的数量级相差甚远!

完全基于内存实现“

65 哥:这个我知道,Redis 是基于内存的数据库,跟磁盘数据库相比,完全吊打磁盘的速度,就像段誉的凌波微步。对于磁盘数据库来说,首先要将数据通过 IO 操作读取到内存里。

”没错,不论读写操作都是在内存上完成的,我们分别对比下内存操作与磁盘操作的差异。

磁盘调用栈图
 

1.1 模型

domain是DDD中一个非常宽泛的概念。不过,我们平常就当作数据库对应的Java 类使用了(没什么错)。在实际操作中,它还可能有下面几种名字,在普通项目中区别不大,你最好在项目中保持相同的意义来避免歧义。

  • entity 这个意义比较明显,就是实体的意思,最常用。比如JPA的Entity注解
  • model模型的意思,一般用来在不同系统之间交互。但如果你的模型非常简单,直接用entity来表示也是可以的
  • domain 这个范围有点大,甚至会包含领域内service。如果你对DDD的概念不是很熟悉,那就玩上面几种

对于简单的项目,我通常在项目中使用entity来表示和数据库的交互。在JPA之类的ORM中,也是做相关处理的。比如javax.persistence.Entity注解。你要明白的是,Spring Data其实取了一个比较折衷的点,把很多东西揉在一起了。

1.2 Dao

dao层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作。在一些其他框架中,还会叫别的名字。

  • mapper 这个一般是Mybaits之类的框架所生成的目录,通常是一些接口。
  • repository 仓库的意思,在jpa中经常用。

Dao应该满足最小封装原则,理论上只涉及一句SQL的执行。如果有多个数据的存取动作,需要封装在Service中,并用事务进行管理(虽然这么说,但repository在DDD中,是不和具体的数据库打交道的)。

1.3 service和controller

这个没什么好说的,基本上所有重要的逻辑都在这里完成。service用于逻辑处理,controller用于接口暴露。

2. 根据功能组织

大多数情况下,我们使用上面的这种划分模式,能够很好的完成工作。比如,所有的数据处理,都放在Dao层,所有的逻辑处理,都放在Service层。

这在小项目中相安无事,但如果项目中,有成百上千个Entity,这些目录中的文件就会爆炸,以至于最后无法维护。

另外一个问题就是,仅仅一个简单的功能,就可能分散在多个package下的多个文件中,大型项目维护变得困难。

我们有另外一个思路,就是根据功能进行分组。比如下面的截图。

 

(编辑:阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读