DDD之实体与值对象

84 篇文章 19 订阅
订阅专栏

传统的系统架构设计阶段,通常我们会将关注点放在数据上面,而不是领域上面。这种设计风格在软件开发中,使数据库占据了主导地位,我们总是有限考虑数据的属性(对应数据库的列)和关联关系(外键关联),而不是富有行为的领域概念。这样做的结果是直接将数据模型反映在对象模型上,导致这些表示领域模型的实体中含有大量的getter、setter方法,也就是贫血领域模型这不符合DDD的做法。

与传统数据模型设计优先不同,DDD 是先构建领域模型,针对实际业务场景构建实体对象和行为,再将实体对象映射到数据持久化对象。传统数据模型不具备行为能力,而DDD的领域模型实体含有丰富的行为能力。

实体

在DDD的领域模型中,实体应该是富有业务行为且具有唯一标识符的对象。在不同的设计阶段实体是可以改变的,但是根据唯一标识符始终能定位到这个唯一对象。

唯一标识符可以是用户指定的,也可以是通过应用程序生成的UUID或者通过持久化机制生成的序列值(Sequence),当然也可以是限界上下文中传递的过来的,但无论是哪一种生产方式都要具备全局唯一性(比如订单的流水号,一些电商场景订单的流水号是通过专门的工具生产全局唯一的)。

实体的可变性主要体现在不同的设计阶段,实体会根据所处阶段的侧重点不同,发生一定地形态变化。

实体的业务形态

在战略设计时,实体是领域模型的一个重要对象。领域模型中的实体是多个属性、操作或行为的载体。在事件风暴中,我们可以根据命令、操作或者事件,找出产生这些行为的业务实体对象,进而按照一定的业务规则将依存度高和业务关联紧密的多个实体对象和值对象进行聚类,形成聚合。你可以这么理解,实体和值对象是组成领域模型的基础单元。

实体的代码形态

在代码模型中,实体的表现形式是实体类,这个类包含了实体的属性和方法,通过这些方法实现实体自身的业务逻辑。在 DDD 里,这些实体类通常采用充血模型,与这个实体相关的所有业务逻辑都在实体类的方法中实现,跨多个实体的领域逻辑则在领域服务中实现。

实体的运行形态

实体以 DO(领域对象)的形式存在,每个实体对象都有唯一的 ID。我们可以对一个实体对象进行多次修改,修改后的数据和原来的数据可能会大不相同。但是,由于它们拥有相同的 ID,它们依然是同一个实体。比如商品是商品上下文的一个实体,通过唯一的商品 ID 来标识,不管这个商品的数据如何变化,商品的 ID 一直保持不变,它始终是同一个商品。

实体的数据库形态

在领域模型映射到数据模型时,一个实体可能对应 0 个、1 个或者多个数据库持久化对象。大多数情况下实体与持久化对象是一对一。在某些场景中,有些实体只是暂驻静态内存的一个运行态实体,它不需要持久化。比如,基于多个价格配置数据计算后生成的折扣实体。

而在有些复杂场景下,实体与持久化对象则可能是一对多或者多对一的关系。比如,用户 user 与角色 role 两个持久化对象可生成权限实体,一个实体对应两个持久化对象,这是一对多的场景。再比如,有些场景为了避免数据库的联表查询,提升系统性能,会将客户信息 customer 和账户信息 account 两类数据保存到同一张数据库表中,客户和账户两个实体可根据需要从一个持久化对象中生成,这就是多对一的场景。

如何创建一个实体

在通用语言的术语中,名词用于给概念命名,形容词用于描述这些概念,而动词则表示可以完成的操作。在对一个业务场景或者需求进行分析时,团队成员需要仔细阅读需求文字,听取领域专家的解析,从中提炼出关键的词组。比如:当我们听到“修改”这个词的时候,应该能联想到对应一个实体操作,当我们听到“校验、认证”这类词时,我们应该提供一些查询能力。实体也就是团队在这种一次次的讨论、总结过程中增加修改属性、确认唯一标识符、予以丰富的业务行为,最终形成一个领域模型实体。

当我们新建一个实体时,我们希望通过构造函数来初始化足够多的实体状态,这一方面有助于表该实体的身份,另一方面可以帮助客户端更容易地查找该实体。

值对象

在 DDD 中用来描述领域的特定方面,并且是一个没有标识符的对象,叫作值对象。也可理解为是若干个用于描述目的、具有整体概念和不可修改的属性的集合。在领域建模的过程中,值对象可以保证属性归类的清晰和概念的完整性,避免属性零碎。
在这里插入图片描述
值对象可以非常容易地创建、测试、使用、优化和维护,因此我们应该尽量使用值对象来建模而不是实体对象。在定义值对象时我们需要考虑其是否具备以下特性:

  • 它度量或者描述了领域中的一件东西
  • 它可以作为不变量
  • 它将不同的相关的属性组合成一个概念整体(Conceptual Whole)
  • 它度量和描述改变时,可以用另外一个值对象予以替换
  • 它可以和其他值对象进行相等性比较(因为没有唯一标识符)
  • 它不会对协作对象造成副作用

eg:一个人拥有名字和年龄属性,这里的名字和年龄不是一个具体能够映射成对象的东西,年龄是一个度量概念,名字是一个描述概念,把这些概念整合成一个概念整体就是值对象的具体表现形式。

除了没有唯一标识符外,值对象和实体对象另外一个比较大的区别就是,值对象具有不变性。体现到我们代码层面就是,在值对象初始化之后,任何方法都不能对该对象的属性状态进行修改。

值对象的业务形态

值对象是 DDD 领域模型中的一个基础对象,它跟实体一样都来源于事件风暴所构建的领域模型,都包含了若干个属性,它与实体一起构成聚合。值对象的属性集虽然在物理上独立出来了,但在逻辑上它仍然是实体属性的一部分,用于描述实体的特征。在值对象中也有部分共享的标准类型的值对象,它们有自己的限界上下文,有自己的持久化对象,可以建立共享的数据类微服务,比如数据字典。

值对象的代码形态

值对象在代码中有这样两种形态。如果值对象是单一属性,则直接定义为实体类的属性;如果值对象是属性集合,则把它设计为 Class 类,Class 将具有整体概念的多个属性归集到属性集合,这样的值对象没有 ID,会被实体整体引用。

我们看一下下面这段代码,person 这个实体有若干个单一属性的值对象,比如 Id、name 等属性;同时它也包含多个属性的值对象,比如地址 address
在这里插入图片描述

值对象的运行形态

值对象实例化的对象则相对简单和乏味。除了值对象数据初始化和整体替换的行为外,其它业务行为就很少了。值对象嵌入到实体的话,有这样两种不同的数据格式,也可以说是两种方式,分别是属性嵌入的方式和序列化大对象的方式。

引用单一属性的值对象或只有一条记录的多属性值对象的实体,可以采用属性嵌入的方式嵌入。引用一条或多条记录的多属性值对象的实体,可以采用序列化大对象的方式嵌入。比如,人员实体可以有多个通讯地址,多个地址序列化后可以嵌入人员的地址属性。值对象创建后就不允许修改了,只能用另外一个值对象来整体替换。

案例 1:以属性嵌入的方式形成的人员实体对象,地址值对象直接以属性值嵌入人员实体中。

在这里插入图片描述
案例 2:以序列化大对象的方式形成的人员实体对象,地址值对象被序列化成大对象 Json 串后,嵌入人员实体中。

image.png
即使是关系型数据比如MySQL现在版本也支持了json格式存储和解析,配合json格式实现列存储可以很好的兼容这种嵌入实体模式。

值对象的数据库形态

DDD 引入值对象是希望实现从“数据建模为中心”向“领域建模为中心”转变,减少数据库表的数量和表与表之间复杂的依赖关系,尽可能地简化数据库设计,提升数据库性能。值对象在数据库持久化方面简化了设计,它的数据库设计大多采用非数据库范式,值对象的属性值和实体对象的属性值保存在同一个数据库实体表中。具体体现在领域建模时,我们可以将部分对象设计为值对象,保留对象的业务涵义,同时又减少了实体的数量;在数据建模时,我们可以将值对象嵌入实体,减少实体表的数量,简化数据库设计。

把地址信息以一个序列化大对象的方式嵌入用户表时就是一种很好的应用案例场景。即减少了单独设计一张地址表,也体现出了地址信息不具备任何业务行为的特性。

如何创建一个值对象

值对象是一把双刃剑,它的优势是可以简化数据库设计,提升数据库性能。但如果值对象使用不当,它的优势就会很快变成劣势。

序列化大对象嵌入实体:值对象采用序列化大对象的方法简化了数据库设计,减少了实体表的数量,可以简单、清晰地表达业务概念。这种设计方式虽然降低了数据库设计的复杂度,但却无法满足基于值对象的快速查询,会导致搜索值对象属性值变得异常困难。

属性嵌入实体:值对象采用属性嵌入的方法提升了数据库的性能,但如果实体引用的值对象过多,则会导致实体堆积一堆缺乏概念完整性的属性,这样值对象就会失去业务涵义,操作起来也不方便。

知道了两种使用方式的优缺点其实结果自己的项目场景就可以知道如何设计一个值对象了,在适当的场景使用适当的方式将是一把设计利刃。

实体和值对象之间的关系

唯一的身份标识和可变性特征将实体对象和值对象进行了区分。本质上,实体是看得到、摸得着的实实在在的业务对象,实体具有业务属性、业务行为和业务逻辑。而值对象只是若干个属性的集合,只有数据初始化操作和有限的不涉及修改数据的行为,基本不包含业务逻辑。

实体和值对象是微服务底层的最基础的对象,一起实现实体最基本的核心领域逻辑。同时实体对象和值对象共同构成了聚合。

在设计的时候应该用实体对象还是值对象,我觉得本着一个是否具有业务行为的原则就够了,有业务行为的就用实体对象,没有业务行为的就设计成值对象。

DDD】学习笔记-对象
xqdd的专栏
02-16 1783
对象
1.DDD中的领域对象对象、聚合根
ukimiya的博客
09-24 2265
一。DDD中的领域对象对象、聚合根 参考地址:DDD—快速理解聚合根、实体对象的区别和联系_王瑞学习笔记-CSDN博客聚合根、实体对象的关系:1.实体具有ID,生命周期,状态用对象描述状态,实体通过ID进行区分是这个实体还是那个实体;2.聚合根是实体,聚合根的ID全局唯一,聚合根下面的实体的ID在聚合根内唯一即可;3.对象的核心意思是,与是否是复杂类型无关,例如Price、Count、OrderNo、CustomerAddress都是对象;4.对象无生命周期,本质是一...
实体对象
li1019865596的博客
09-08 4051
实体是什么 在 DDD 中有这样一类对象,它们拥有唯一标识符,且标识符在历经各种状态变更后仍能保持一致。对这些对象而言,重要的不是其属性,而是其延续性和标识,对象的延续性和标识会跨越甚至超出软件的生命周期。我们把这样的对象称为实体。 在 DDD 不同的设计过程中,实体的形态是不同的 1,实体的业务形态 在战略设计时,实体是领域模型的一个重要对象。领域模型中的实体是多个属性、操作或行为的载体,在事件风暴中,我们可以根据命令、操作或者事件,找出产生这些行为的业务实体对象; 2,实体的代码形态 在
驱动领域设计(DDD)中聚合根、实体对象
最新发布
你只不过是看起来很努力罢了
05-09 1002
领域驱动设计(Domain-Driven Design,简称DDD)中,实体(Entity)、对象(Value Object)和聚合根(Aggregate Root)是构成业务模型的核心概念,它们帮助开发者构建出与业务领域紧密相关的模型。下面将分别解释这些概念,并给出定义和示例。实体是拥有唯一标识和连续存在的对象实体是具有唯一标识符(ID)的对象。即使两个实体的属性完全相同(无法通过几个属性的组合来确定唯一对象),只要它们的ID不同,它们也被视为不同的实体
DDD中的对象实体
念念不忘,必有回响
07-10 3053
文章目录背景定义举例说明总结 背景 在DDD中有两个比较重要的对象,即对象实体。而聚合根就是由这两个对象组成的,所以业务建模前我们都会先定义好实体对象,然后再构建聚合根,所以再研究复杂的聚合根之前我们先来研究相对简单但是基础的对象实体吧。 定义 实体实体以 DO(领域对象)的形式存在,拥有唯一标识符,且标识符在历经各种状态变更后仍能保持一致(唯一标识)。实体类通常采用充血模型,与这个实体相关的所有业务逻辑都在实体类的方法中实现。简单来说就是有唯一标识+业务行为方法。 对象:与实体相对应的就
DDD(五)——对象
chongzhan9501的博客
08-20 657
1、引言 之前学习了解了DDD实体这一概念,那么接下来需要了解的就是对象、唯一标识。对象就是数字1、2、3,字符串“1”,“2”,“3”,对象的特征,对象是一个事物的具体描述,唯一标识也是字面意思,可以代表对象的唯一特征。 2、对象 假设你手上有一沓钞票,我们去超市购物的时...
对象 Value Object
weixin_40719943的博客
07-08 6586
1 理解对象 讨论对象,先简单介绍下实体,通俗的理解:实体是由唯一标识和一系列属性构造的类,实体的核心是用唯一标识来定义的,而不是通过属性来定义的。即使属性完全相同也可能是两个不同的对象实体本身是有状态的,有生命周期,实体本身会提箱相关的业务行为,业务行为会使实体属性或状态发生改变和影响 对象本身是无状态的,不可变,没有唯一标识,从这个层面上来讲,对象可以理解为实际的Entity对象的一个属性的结合,该对象附属在一个实际的实体对象上面。对象本省不存在一个独立的生命周期,也一般不会产生独立的行为
DDD实体对象
一叶知秋
06-13 1015
实体的标识符可以是持久化存储中的数据库主键,也可以是自定义的唯一标识符。对象(Value Object)是没有唯一标识符的对象,它的相等性是基于其属性的。在领域驱动设计(Domain-Driven Design,DDD)中,实体(Entity)和对象(Value Object)是两个重要的概念,用于建模领域中的不同类型的对象。例如,电子商务系统中的商品。在这个系统中,商品被视为对象,因为它们的相等性是基于其属性的实体侧重于对象的唯一标识和标识的不变性,而对象侧重于对象属性的和属性的不变性。
基于DDD和微服务中台架构与实现
10-21
- "实体"和"对象"是DDD的两个基本元素,实体具有唯一标识,对象则关注数据的完整性。 - "聚合"是DDD中的核心设计单元,包含一组相关对象,确保业务规则的一致性。 - "事件"和"事务一致性"用于处理业务流程中...
DDD 微服务落地实战视频教程
09-11
3. **实体与值对象**:实体是具有唯一标识的对象,它们在业务中扮演着重要角色;对象则关注对象的属性,不强调其身份。两者协同工作,构建起业务模型的骨架。 4. **聚合**:聚合是领域模型中的一组相关对象,它们...
DDD.rar_DDD设计 例子
09-22
7. **实体与值对象的生命周期管理**:例如,作者(Author)和新闻文章(Article)之间的关系管理,可能需要考虑如何创建和维护这些实体,以及它们的状态变化。 综上所述,DDD在新闻行业的应用可以帮助我们构建一个...
DDD领域设计模式代码案例
11-26
本案例提供了一套完整的DDD实践,包括领域模型、聚合、对象实体、服务、仓储等核心概念。 1. **领域模型**:领域模型是DDD的核心,它是对业务领域的抽象表示,包含了业务规则和业务行为。在Java中,可以使用...
DDD的为与不为(25页).pdf
02-25
1. **领域模型**:领域模型是对业务领域的抽象和建模,它包含了业务规则、实体对象、聚合、领域事件等元素。例如,Order类可以作为领域模型中的一个实体,包含支付服务(PayService)和支付状态(paid)等属性。...
DDD领域驱动设计对象
杨海吉
04-12 609
对象 什么是对象 当一个对象用于对事务进行描述而没有唯一标识时,它被称作对象(Value Object)。 对象通常是用来度量和描述事物。我们可以非常容易的对其进行创建,测试,使用,优化和维护,所以在建模时,我们尽量采用对象来建模。 @Data public class ColorInfo{ private String name; private String css; private String width; } { "name":"yellow", "cs
DDD实战与进阶学习之对象
刘成
11-28 816
DDD实战与进阶 - 对象 整体思路: 在实现此效果之前,我们先来捋一下思路,用思维导图来设计一下我们的实现步骤,如下: 你可以审查元素,下载数字背景图片,复制图片地址,或者使用其他背景图片、背景颜色 然后作者用“地址”这一概念给大家扩充了一下什么是对象,我们应该怎么去发现对象。所以你会发现现在很多的DDD文章中都是用这个例子给大家来解释。当然读懂了的人就会有一种醍醐灌顶的...
04 | 实体对象:从领域模型的基础单元看系统设计
zgz15515397650的博客
05-13 435
今天我们主要学习了实体对象DDD 不同设计阶段的形态,以及它们从战略设计向战术设计演进过程中的设计方法。这个过程是从业务模型向系统模型落地的过程,比较复杂,很考验你的设计能力,很多时候我们都要结合自己的业务场景,选择合适的方法来进行微服务设计。强调一点,我们不避讳传统的设计方法,毕竟适合自己的才是最好的。希望你能充分理解实体对象的概念和应用,将学到的知识复用,最终将适合自己业务的 DDD 设计方法纳入到架构体系,实现落地。
DDD之3实体对象
tian583391571的专栏
06-04 1820
图中是一个别墅的模型,代表实体,可以真实的看得到。那么在DDD设计方法论中,实体对象是什么呢? 背景 实体对象是领域模型中的领域对象,是组成领域模型的基础单元,一起实现实体最基本的核心领域逻辑。 那么问题来了: 1, 他两在领域模型中的作用是什么? 2,在系统中跟代码模型和数据模型是怎么对应的? 搞清楚这两个问题很重要。回答问题是需要有知识基础的,先来捋清楚这两个概念的定义和内涵。然后在小结部分我们来回答这两个问题。 实体 定义: DDD中的一类对象,拥有唯一标识符,经历各种状态变更后仍然可以保持.
ddd实体与值对象
Homecon的博客
11-01 714
​ Entity(实体): 每个实体是唯一的,并且可以相当长的一段时间内持续地变化。我们可以对实体做多次修改,故一个实体对象可能和它先前的状态大不相同。但是,由于它们拥有相同的身份标识,他们依然是同一个实体。例如一件商品在电商商品上下文中是一个实体,通过商品中台唯一的商品id来标示这个实体。 ​ ValueObject(对象):对象用于度量和描述事物,当你只关心某个对象的属性时,该对象便可作为一个对象实体与值对象的区别在于唯一的身份标识和可变性。当一个对象用于描述一个事物,但是又没有唯一标示,那么
阿里高级技术员:DDD实体与值对象是干什么的
m0_68850571的博客
03-30 1062
实体对象的含义 我们前面已经讲过领域的概念, 今天来讲讲实体, 实体是我们进行设计领域模型时的基础单元, 与之有关的是对象, 接下来先梳理一下实体以及对象的含义,然后讲讲他们俩的关系, 希望通过这篇文章能让你区分开与传统架构中实体的区别, 对领域模型中的实体有进一步的了解。 实体 实体这个概念在传统微服务中也有涉及, 在传统技术中, 实体一般是指实体类, 也就是数据库中的表格, 但是在领域模型中实体与传统架构中的实体有类似的地方但是不完全一样, 在DDD中, 实体的定义是: 实体拥有唯一标识符,
解释下DDD架构中的实体对象、聚合根、领域服务并举例说明
03-29
DDD领域驱动设计)是一种软件设计思想,其中包含了四个重要的概念:实体对象、聚合根和领域服务。 1. 实体(Entity) 实体是指具有唯一标识的对象,它具有生命周期,并且在系统中需要被跟踪和修改。实体通常是通过唯一标识来进行识别和区分的。例如,订单、用户、商品等都可以是实体。 例如,订单实体包含了订单号、下单时间、订单状态等属性,同时具有一些操作,比如修改订单状态、添加订单项等。 2. 对象(Value Object) 对象是指没有唯一标识的对象,它的属性可以改变,但是不会改变对象的身份。对象通常作为实体的属性存在,比如订单中的收货地址、商品的价格等。对象通常是不可变的,即创建后不可修改。 例如,收货地址对象包含了姓名、电话、地址等属性,它们的可以改变,但是这个地址本身并没有唯一标识。 3. 聚合根(Aggregate Root) 聚合根是指一组具有关联关系的实体对象的集合,其中一个实体作为聚合根,负责管理整个聚合。聚合根可以保证整个聚合的完整性和一致性。在聚合内,实体只能通过聚合根来进行访问和修改。 例如,订单聚合包含了订单实体、订单项实体以及收货地址对象,订单实体是聚合根,通过订单实体管理整个聚合。 4. 领域服务(Domain Service) 领域服务是指在领域模型中,不属于任何实体对象的操作,它们通常是跨实体的业务操作,或者是需要进行复杂计算的操作。 例如,计算订单中的总金额就是一个领域服务,它需要查询订单中的所有订单项,并计算每个订单项的金额,最后求和计算出订单的总金额。 总之,DDD中的实体对象、聚合根和领域服务是设计领域模型的重要概念,它们能够帮助我们构建具有高内聚、低耦合、易扩展的领域模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Android Studio 出现“Cannot resolve symbol” 解决办法 106724
  • GBK 编码 62744
  • SQLServer创建索引的5种方法 59097
  • 正则表达式(匹配第一个花括号) 52310
  • input[type=file] 获取上传文件的内容 51203

分类专栏

  • ASP.NET Core Web API 59篇
  • ASP.NET Core MVC | Blazor 228篇
  • .net平台下分布式开发技术 48篇
  • ASP.NET MVC4|MVC5 122篇
  • ASP.NET Webform 77篇
  • ASP.NET Web API 35篇
  • ADO.NET 和 Entity Framework 48篇
  • EF Core|SqlSugarCore|PetaPoco 23篇
  • NET Core API网关Ocelot 22篇
  • NET Core跨平台+CoreCLR+C# 200篇
  • .NET Framework+CLR+C#知识 213篇
  • LINQ|表达式树 94篇
  • .NET Winform/WPF 27篇
  • .NET WCF 8篇
  • 异步编程 26篇
  • 分布式开发技术 75篇
  • 分布式技术之ZooKeeper 27篇
  • 分布式内存对象缓存(Memcached) 8篇
  • 分布式文件系统(FastDFS|SeaWeedFs) 20篇
  • (Nginx|Haproxy)【IIS】 90篇
  • 消息队列【RocketMQ】
  • 消息队列【ActiveMQ】 4篇
  • 消息队列【kafka】 21篇
  • 消息队列【RabbitMQ】 50篇
  • Html+Javascript 258篇
  • Javascript编程知识 31篇
  • Javascript设计模式 37篇
  • Jquery源码系列 21篇
  • Jquery及其组件 147篇
  • HTML5+CSS|CSS3 153篇
  • SqlServer数据库 179篇
  • MySql数据库 31篇
  • Oracle数据库 162篇
  • Postgresql数据库 24篇
  • Sqlite数据库 6篇
  • 正则表达式 38篇
  • Java虚拟机(JVM) 10篇
  • JAVA技术 53篇
  • JAVA Tomcat服务器|Mycat中间件 15篇
  • Python开发 58篇
  • Python Django 12篇
  • Python Orm 6篇
  • 爬虫 22篇
  • ExtJS框架 7篇
  • 区块链 12篇
  • Andriod安卓技术 70篇
  • Andriod安卓项目 28篇
  • Nodejs+express+ejs 12篇
  • Nosql之Redis数据库 49篇
  • Nosql之Mongodb数据库 25篇
  • 大数据之Spark 11篇
  • 大数据之Hadoop 15篇
  • 大数据+云计算 17篇
  • IIS | Apache 服务器 29篇
  • 互联网 17篇
  • UI框架|WUI|UE|UX|ID|IXD|UID|UED 6篇
  • 算法 21篇
  • 代码优化+服务器优化 6篇
  • Autofac | AspectCore 框架 39篇
  • AutoMapper.NET框架 35篇
  • Aspose.Total框架 16篇
  • Dapper.NET框架 15篇
  • Lucene.NET框架 5篇
  • Log4Net框架 6篇
  • MyBatis.Net | MyBatis框架 24篇
  • Newtonsoft.Json框架 21篇
  • Nhibernate.NET框架 13篇
  • NPOI.NET和EPPlus框架 27篇
  • ODP.NET框架 3篇
  • Quartz.NET框架 16篇
  • StackExchange.Redis组件 14篇
  • ServiceStack.Redis和CSRedisCore 17篇
  • iTextSharp.NET框架 4篇
  • HtmlAgilityPack解析框架 10篇
  • ABP|ABP Vnext 79篇
  • JAVA Struts2框架 14篇
  • JAVA SpringBoot/SpringCloud框架 23篇
  • JAVA SpringMVC框架 23篇
  • JAVA Netty框架 5篇
  • 全文搜索引擎之ElasticSearch和Solr 50篇
  • 全文搜索引擎之Solr 15篇
  • 加密解密 51篇
  • 微信 | QQ 40篇
  • TypeScript 11篇
  • 支付 7篇
  • 生命周期 16篇
  • XML相关 6篇
  • Linux相关 30篇
  • 架构|领域驱动设计 84篇
  • Socket | Websocket | SignalR 12篇
  • 计算机网络 网络安全 8篇
  • LeetCode之算法(C#)| AhoCorasick 14篇
  • LeetCode之数据库(Mysql) 5篇
  • Python Tornado 4篇
  • Python Pandas 19篇
  • 文学+名言警句+其他 60篇
  • 人生 16篇
  • 知乎 29篇
  • 技术图片 9篇
  • 思维 207篇
  • 书籍 9篇
  • Markdown写作与集成 6篇
  • 编程安全|网站安全 6篇
  • 人工智能之深度学习(TensorFlow) 56篇
  • 百度地图 15篇
  • Vue.js(Vue 2/Vue 3) 92篇
  • Angular1.X | Angular4+ 41篇
  • ECharts.js | Highcharts.js 18篇
  • Knockout.js 7篇
  • Video.js 3篇
  • layui 17篇
  • Docker容器技术 76篇
  • HTTP协议 TCP|IP 27篇
  • hive数据仓库工具 12篇
  • 在线工具|软件工具 13篇
  • 搜索引擎 2篇
  • IOC框架之Unity | Castle Windsor 7篇
  • 设计模式 15篇
  • IdentityServer4|OAuth2.0协议 21篇
  • Bootstrap 框架 43篇
  • Wijmo5 Flexgrid 10篇
  • 浏览器 13篇
  • windows操作系统|cmd|批处理bat|dos| 14篇
  • 工控|上位机|C语言|C++语言 3篇
  • Visual Studio 2019|Resharper 18篇
  • 程序员健康知识 5篇
  • 微服务 94篇
  • Furion框架 1篇
  • AForge | Accord NET框架 4篇
  • MDN前端技术 29篇
  • Stackoverflow整理 7篇
  • FFmpeg视频处理 13篇
  • ImageProcessor.NET框架 1篇
  • Git 2篇
  • Photoshop知识
  • 面试之前端
  • 重构 28篇
  • MSDN官方文档|文章 24篇
  • UEditor.js|Quill.js|Summernote 18篇
  • 投资理财 36篇

最新评论

  • C# 动态加载卸载 DLL

    陇南小马哥: 顺序有点乱,导致不能偷懒一次过,从头看到脚,从脚看到头

  • SqlServer按指定顺序进行排序

    csdb886byy: 帮我解决了问题

  • 使用 pdf.js 在网页中加载 pdf 文件

    hembleTu: 今天下载的现在都是mjs了会有影响吗

  • kubectl命令大全

    遨游在知识的海洋里无法自拔: 现在有方向了吗

  • PostgreSQL复杂嵌套查询SQL示例

    狂野鸭子: 楼主,user_posts 表的哪里

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 如果你还不知道SAGA,那这篇不容错过!
  • rsa公钥和私钥到底哪个才是用来加密,哪个用来解密?
  • RabbitMQ Management指标说明
2024
07月 20篇
06月 26篇
05月 18篇
04月 6篇
03月 8篇
2023年201篇
2022年539篇
2021年392篇
2020年598篇
2019年894篇
2018年827篇
2017年920篇
2016年267篇
2015年20篇
2014年5篇
2013年2篇

目录

目录

分类专栏

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码大浪标王横岗网站改版南山网页制作双龙营销网站石岩seo排名坂田阿里店铺托管罗湖网站排名优化双龙品牌网站设计坂田设计网站东莞seo排名丹竹头标王西乡百度seo民治网站设计模板宝安优化龙岗网站优化推广民治高端网站设计坪山seo网站优化荷坳网站改版坂田seo优化横岗外贸网站设计东莞网站搭建荷坳SEO按天计费福田高端网站设计观澜关键词排名包年推广永湖网站推广工具福田网站优化福永外贸网站设计南山网站建设坪地企业网站设计深圳网站优化按天收费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化