DDD实践思考:文章投票点赞功能的领域建模

功能说明文章投票功能简单描述:用户阅读文章后,可以给文章投票,投票包括两个方向:支持或不支持。设计思考基于领域驱动设计常见的做法,首先可以确定的是文章Article是一个聚合根。Article包含title,content,description等等。有疑惑的地方是:投票Vote是否要单独出来做聚合根,还是把它放在Article聚合根下?需要考虑一下几点:Article和Vote是一对多的关系,但
1天前更新 6分钟阅读

JPA实体映射——一对多关系映射(上)

依照上一节的案例,我们来拆解一对多的关系怎么使用,首先还是把业务关系图弄出来。业务案例图业务分析从图中我们知道,研究所和部门是一对多关系,今天我们来展示,一对多设计的最佳实践。我们知道在JPA的实体设计中,一对多的关系可以设计成单向关联,也可以设计成双向关联。今天我们一步一步来实践各种设计,从而总结出最佳实践。Unidirectional @OneToMany 研究所实体port jav
1天前更新 27分钟阅读

JPA实体映射——一对多关系映射(中)

紧接上一节的学习,我们还是首先把业务关系图整理出来。业务案例图上一节我们知道,采用单向关联如果不使用@JoinColumn时,在新增一个研究所实体的时候,会生成三张表,并且会执行多条插入语句,在使用@JoinColumn时,会生成两张表,同时在departments上生成一个department_id字段,而JPA在插入数据时,采用的是先插入部门表数据,然后更新外键字段,这种方式,插入的效率不是很
8小时前更新 23分钟阅读

JPA实体映射——一对一关系映射

前几节我们介绍了一对多的关系,今天我们学习一对一关系以及这种映射方式的最佳实践,先上业务实例图。从图中可以看出,研究所和社交账号有一对一的关系,部门和社交账号也有一对一的关系,我们选用研究所和社交账号的关系来说明问题。Bidirectional @OneToOne研究所实体mport javax.persistence.*; import java.io.Serializable; import
1天前更新 21分钟阅读

JPA实体映射——Entity Mapping

学习JPA,实体之间的映射关系是最重要的一环,为了学习和讨论这部分知识,我们将这部分知识分为若干章节进行学习,我们也会用实际的例子进行分析,并且指出存在的问题,然后给出相应的优化方案。 第一步,我们列出具体的案例我们分别使用了三个实体:Institute(研究所),Department(部门),SocialProfile(社交账号)。如上图所示,研究所和部门是一对多的关系,研究所和社交账
1天前更新 24分钟阅读

JPA实体状态深入理解

我们在学习JPA实体状态的时候,常常会问,JPA的实体有多少状态呢?相信这个问题不难回答:瞬时态(transient)托管态(persistent)游离态(detached)移除态(removed)注意:这里最后一个移除态,有的时候也叫删除态(deleted),至于它和移除态有啥区别,暂时没有想到,如果您对此有更加深刻的理解,请留言回复。为什么会有这四种状态呢?啥,这个也有为啥,网上不是都这么说的
1天前更新 2分钟阅读

JPA实体状态学习-(移除态:Removed)

今天继续学习JPA中实体的最后一种状态:移除态。还是先把图晒出来:按照名称进行猜想,移除态应该就是对象从数据库中删除以后,对象变成了不受持久化上下文管理的移除态。不过呢,这里有一点需要注意的是:什么样的对象才会进入进入移除态呢?变成移除状态的对象是调用persist()方法后,是像persist一样参数对象受到持久化上下文管理呢?还是像merge方法一样返回的对象受到持久化上下文管理呢?这里还有一
1天前更新 26分钟阅读

JPA实体状态学习-(持久态:Persistent)

今天我们继续学习JPA的实体状态转化,老规矩贴上实体转化的转化图: 上一节我们学习了:entityManager调用persist()方法后,实体的状态从transient到persistent,这个时候对persistent状态的实体改变也会同步持久化到数据库,执行tx.commit()之后实体进入detached状态,此时对实体进行改变后不会同步到数据库。今天我们来看看transie
1天前更新 40分钟阅读

Python校验处理用户输入的方法

Python处理用户输入需要考虑几个问题:用户输入的数据是否合法用户输入非法数据是否会抛出异常用户输入非法数据后,给出友好提示并等待继续输入在Python里比较简单的做法是使用一直循环,如果用户输入错误数据,执行continue继续等待用户输入,如果用户输入正确数据,执行break跳出循环。用户输入可能会抛出异常这里需要使用try-catch来捕获用户输入非法数据导致的异常。python 
2天前更新 22分钟阅读

RxJs——map,filter第二种实现

上一节我们实现了map和filter函数,我们将这些函数都挂载在MyObservable对象上,这里存在一个问题,类似map和filter这样的操作型函数很多,所以不可能将他们都挂载在MyObservable对象上,因此,这里出现了第二种实现。 这些操作函数能串联起来的本质就是能够形成嵌套调用,因此我想到了使用pipe,pipe的本质是接收一个 RxJS 操作符的运行结果作为参数,并返回
2天前更新 12分钟阅读

Angular装饰器——Decorators

最近有空学习了一下angular的基础知识,对于angular的装饰器有了一些理解。其实装饰器并非angular特有的,它是Typescript的语言特性。首先我们看看什么是装饰器  我们先看看Typescript官方的说明:装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上。 装饰器使用 @expression这种形式,expression求值后必
5天前更新 15分钟阅读

RxJs——创建型操作

我们在使用RxJs中,知道RxJs的操作分为两类,一类是创建型,比如of(),fromEvent(),from()等,还有一类是操作型,比如map(),filter()。而这两类操作的基础和心是一个叫做Observable的对象,如果对Observable不甚理解,需要快速理解的可以查看这一篇今天我们来学习第一类,尝试着自己实现一次。of()这个操作接收数组参数,返回一个Observable,一旦
5天前更新 11分钟阅读

MutationObserver初步理解

最近在学习怎么样给网站埋点,举个例子来说,我在文章中有了一些评论的信息,我需要知道这些评论信息是否被点击和查看,一种常用的做法就是在这些标签上绑定点击事件,然后在事件回调函数中向后台发送信息,从而判断这个文章中的评论是否有被点击和查看。今天我将尝试采用另外一种做法,来判断文章中的评论有没有被点击查看过。首先,我们需要知道的是用户在点击评论标签的时候,文章对应的dom是否发生变化?其次,我会用Mut
13天前更新 6分钟阅读

SWOT分析法

什么是SWOT分析法?SWOT(strengths, weaknesses, opportunities, and threats)分析是一个用来评估公司竞争地位并开发策略计划的框架。SWOT分析评估内外部因素以及当前和未来的潜力SWOT 分析旨在促进对组织、倡议或行业的优势和劣势进行现实的、基于事实的、数据驱动的观察。组织需要避免先入为主的理念或盲区,专注于现实生活环境,保持分析的准确性。公司应
20天前发布 13分钟阅读

useradd命令:新建用户

说明useradd命令有两个功能:新建用户以及修改新建用户的默认值。新建用户useradd命令如果没有-D选项,它会使用命令行指定的值加上系统的默认值来新建用户。它根据命令的选项可能会做:新建用户的主目录(一般建在/home/目录下,当然你也可以指定home目录的路径)给新用户创建一个组(group)修改新建用户的默认值useradd命令如果只使用了-D选项,那么它用来显示系统用于新建用户的默认值
5个月前更新 4分钟阅读

【译】深入了解React 18的自动批处理

 React在事件处理或者内置的hook中,使用批处理合并多个状态的更新。避免了每次的状态更新都要重新渲染组件,从而提高应用的性能。在React 17以及之前的版本,仅支持浏览器事件的批更新。React 18更新带来增强版的批处理,称为自动批处理(Automatic Batching)。它对所有状态的更新,不管来源哪里,都可以使用批处理。React 17的批处理如上面提到的,React
1个月前更新 16分钟阅读

Go语言:变量的作用域(本地和全局变量)

变量声明的位置Go语言变量声明的位置有三种级别:包(package)级别:变量在函数外声明函数级别:变量在函数内,包括函数的传参参数变量,但在代码块外声明块级别:这个分两种,一种是显式,会使用大括号{}括起来的代码;另一种是隐式,如for,if后的初始化表达式。变量位置示例package main import "fmt" var test = "test" //在函数外,包级别变量 fu
1个月前更新 5分钟阅读

秋江漁父圖——許道寧

我们其实在节目里,一系列谈了很多次宋代的作品,我记得包括瓷器,包括書法,也包括繪畫。甚至在這一次展覽當中,最有名的像范寬溪山行旅,郭溪的早春圖,李唐的萬壑松風,我想在殷瑗小聚的節目裡,我們都有特別做過介紹。今天我有點想特別挑一件作品,這件作品對我個人來講,可能特別難得。因為這件作品不在台灣,也不在華人的世界,它其實已經流傳到美國去了。所以這一次台北故宮的這個宋代大展,等於是把這張畫,從美國借回來,
5天前更新 19分钟阅读

Go语言:变量的声明

在计算机语言中,变量是以可读的名称表示保存值的存储位置。变量存储的值都有对应的类型,它的类型决定了变量存储值的空间以及操作。在Go语言中,它的命名需要符合Go语言:标识符命名规则。变量在使用之前,需要先声明变量。Go语言提供了多种声明变量的方式,主要分为:使用关键词var基本格式声明变量多变量的声明使用简短赋值符:=声明变量下面介绍变量的多种声明方式声明变量的基本格式GO语言声明变量的基本格式是使
1个月前更新 13分钟阅读
数据加载中