06 2022 档案
摘要:
Sorted Set (ZSet) 数据结构 Sorted Set (ZSet), 即有序集合, 底层使用 压缩列表(ziplist) 或者 跳跃表(skiplist) 使用 压缩列表(ziplist) 当同时满足下面两个条件时,使用 ziplist 存储数据 元素个数少于128个 (zset-ma
阅读全文

摘要:
Set数据结构 使用 intset 当同时满足下面两个条件时,使用 intset 存储数据 元素个数少于512个 (set-max-intset-entries: 512) 所有元素都是整数值 不满足上面的条件, 使用 hashtable intset 图解 //intset 的编码方式 #defi
阅读全文

摘要:
Hash 数据结构 使用 ziplist 当同时满足下面两个条件时,使用 ziplist 存储数据 元素个数少于512个 (hash-max-ziplist-entries: 512) 每个元素长度小于64字节 (hash-max-ziplist-value: 64) 不满足上面的条件, 使用 ha
阅读全文

摘要:
List 数据结构 Redis 3.2 前,使用 压缩列表zipList 或 双向链表linkedList 当同时满足下面两个条件时,使用zipList存储数据 list保存的每个元素长度小于64字节 列表中数据个数少于512个 Redis 3.2 及之后的底层实现方式: quickList qui
阅读全文

摘要:
String 数据结构 首先我来看下, Redis 中 String 的数据结构: 我们称之为 SDS (Simple Dynamic String) 简单动态字符串 struct sdshdr { //记录buf数组中已经使用的字节数(等价于字符串的长度strlen) int len; //记录b
阅读全文

摘要:
KEYS 语法: KEYS pattern 功能: 返回所有匹配 pattern 的键 可以使用该命令的Redis版本: 1.0.0 时间复杂度: O(N) N指的是在数据库中的键的数量 不建议在生成环境使用该命令,因为是扫描整个数据库的键查询,会造成阻塞 支持的全局样式模式: h?llo 匹配 h
阅读全文

摘要:
Redis 的定义? 百度百科: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 中文官网: Redis是一个开源(BSD许可),内存存
阅读全文

摘要:
安装 Redis # 首先安装依赖gcc, 后面需要使用make编译redis yum install gcc -y # 进入 /usr/local/src 目录, 把源码下载到这里 cd /usr/local/src # 下载 redis 7.0.2 的源码,github被墙,可以使用国内的地址
阅读全文

摘要:
系列文章汇总 前言: 最近看到ABP官网的一本电子书,感觉写的很好,翻译出来,一起学习下 Implementing Domain Driven Design 实现领域驱动设计 - 使用ABP框架 - 什么是领域驱动设计? 实现领域驱动设计 - 使用ABP框架 - 解决方案概览 实现领域驱动设计 -
阅读全文

摘要:
领域逻辑 & 应用逻辑 如前所述,领域驱动设计中的业务逻辑分为两部分(层):领域逻辑和应用逻辑: 领域逻辑由系统的核心领域规则组成,应用逻辑实现应用特定的用例 虽然定义很明确,但实现起来可能并不容易。您可能无法决定哪些代码应该位于应用程序层,哪些代码应该位于领域层。本节试图解释其中的差异 多个应用程
阅读全文

摘要:
用例演示 - 更新 / 操作实体 一旦一个实体被创建,它将被用例更新/操作,直到它从系统中删除。可以有不同类型的用例直接或间接地更改实体 在本节中,我们将讨论更改 Issue 的多个属性的典型更新操作。 这次,从更新DTO开始: public class UpdateIssueDto { [Requ
阅读全文

摘要:
用例演示 - 创建实体 本节将演示一些示例用例并讨论可选场景。 创建实体 从实体/聚合根类创建对象是实体生命周期的第一步。聚合/聚合根规则和最佳实践部分 建议为Entity类创建一个主构造函数,以保证创建一个有效的实体。因此,无论何时我们需要创建实体的实例,我们都应该使用那个构造函数 参见下面的问题
阅读全文

摘要:
应用程序服务 应用程序服务是一种无状态的服务,它实现应用程序的用例。应用程序服务通常获取和返回dto。它由表示层使用。它使用并协调领域对象(实体、存储库等)来实现用例 应用程序服务的常见原则如下: 实现特定于当前用例的应用程序逻辑。不要在应用程序服务内部实现核心领域逻辑。我们将回到应用程序领域逻辑之
阅读全文

摘要:
领域服务 领域服务实现领域逻辑 依赖于服务和存储库。 需要处理多个聚合,因为该逻辑不适合任何聚合。 领域服务与领域对象一起工作。它们的方法可以获取并返回实体、值对象、原始类型……但是,它们不获取/返回dto。dto是应用层的一部分 示例:分配问题给用户 记住问题分配是如何在问题实体中实现的 publ
阅读全文

摘要:
存储库 Repository 是一个类似于集合的接口,领域层和应用程序层使用它来访问数据持久性系统(数据库),以读写业务对象(通常是聚合) 常见的存储库原则是: 在领域层定义一个存储库接口(因为它被用于领域层和应用层),在基础设施层实现(启动模板中的EntityFrameworkCore项目) 不要
阅读全文

摘要:
这是本指南的关键部分。我们将通过实例介绍和解释一些明确的规则。在实现领域驱动设计时,您可以遵循这些规则并将其应用到您的解决方案中 领域案例 这些例子将使用GitHub中使用的一些概念,比如Issue, Repository, Label和User,你已经很熟悉了。下图显示了一些聚合、聚合根、实体、值
阅读全文

摘要:
在进入细节之前,让我们看看一些总体的 DDD 原则 数据库提供者 / ORM 无关性 领域和应用程序层应该与 ORM / 数据库提供程序 无关。它们应该只依赖于 Repository 接口,而 Repository 接口不使用任何 ORM 特定的对象 下面说明这一原则的主要原因: 为了使您的 领域/
阅读全文

摘要:
.NET解决方案的分层 下图显示了使用ABP的 应用启动模板 创建的Visual Studio解决方案: 解决方案名称为问题跟踪,它由多个项目组成。通过考虑DDD原则以及开发和部署实践,该解决方案是分层的。下面的小节解释了解决方案中的项目 领域层 领域层分为2个项目 IssueTracking.Do
阅读全文

摘要:
前言: 最近看到ABP官网的一本电子书,感觉写的很好,翻译出来,一起学习下 (Implementing Domain Driven Design) https://abp.io/books DDD简介 领域驱动设计(DDD)是一种通过将实现连接到演进的模型来实现复杂需求的软件开发方法 相对于简单的C
阅读全文

摘要:
定义 用例图(英语:use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用 用例图的目的就是为了可以让人在一个更高的层次概览整个系统,用平白的话语让项目参与者理解系统。它
阅读全文

摘要:
Docker 的安装 Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。 Docker CE 的安装请参考官
阅读全文

摘要:
名称解释 Docker是一个开源的应用容器引擎,可以轻松的让开发者打包任何应用以及依赖包到一个轻量级的、可移植的、自给自足的容器中。然后发布到任何流行的Linux机器上,也可以实现虚拟化。 开发者把编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenSt
阅读全文

摘要:
微服务的定义? 维基上对其定义为:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡 将单一应用程序划分成一组小的服务 ,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中 ,服务与 服务间采用轻量级的通信机制 互相沟通(通常是基于HTTP的REST
阅读全文

摘要:
NET架构师的基本职责1 职责 对本公司大健康平台提出技术研究及可行性报告; 结合需求设计高扩展性、高性能、安全、稳定、可靠的技术系统; 可以通过配置实现业务需求的变化,跟踪并研究***并应用于产品; 指导开发工程师的编码工作,解决各类技术疑难问题; 提升团队整体技术水平,形成良好的研发氛围。 任职
阅读全文

摘要:
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 一、应用场景 有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"读取自己储存在Google上的照片。 问题是只有得到用户的授权,
阅读全文
