09 2021 档案

摘要:死锁定义 线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。 由于线程被无限期地阻塞,因此程序不可能正常终止。如下图所示,线程 A 持有资源 2,线程 B 持有资源 1, 它们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。 产生死锁的4 阅读全文
posted @ 2021-09-26 20:59 strongmore 阅读(539) 评论(1) 推荐(1) 编辑
摘要:前言 Spring Expression Language(简称 SpEL)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言, 它的语法类似于传统 EL(如jsp中的EL表达式),但提供额外的功能,最出色的就是函数调用和简单字符串的模板函数。 SpEL 作为Spring框架的基础,但并不依 阅读全文
posted @ 2021-09-25 21:18 strongmore 阅读(3004) 评论(1) 推荐(1) 编辑
摘要:前言 jsr305是一个规范,具体来说是一套用来给代码分析工具(如IDEA)检查代码缺陷用的注解,类似jsr303(Bean Validation规范)。今天在学习Spring源码时,发现其中使用到了jsr305中的注解。 Spring中的NonNull注解中使用到了jsr305中的Nonnull注 阅读全文
posted @ 2021-09-17 18:10 strongmore 阅读(2397) 评论(0) 推荐(0) 编辑
摘要:定义 表示一个作用于某对象结构中的各元素的操作,它使得可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 结构 Visitor,访问者接口,每个具体元素类对应一个访问操作,参数类型标识了被访问的具体元素。 ConcreteVisitor,具体的访问者对象,实现了访问者接口。 Element, 阅读全文
posted @ 2021-09-16 13:04 strongmore 阅读(75) 评论(0) 推荐(0) 编辑
摘要:定义 将抽象部分和它的实现部分分离,使它们都可以独立地变化。在现实生活中,某些类有两个或多个维度的变化, 如图形既可以按形状分,又可以按颜色分,如何画不同形状不同颜色的图形呢,如果用继承方式,m 种形状 n 种颜色的图形就有 m * n 种, 不但对应的子类很多,而且扩展困难,桥接模式就能很好的解决 阅读全文
posted @ 2021-09-15 09:38 strongmore 阅读(79) 评论(0) 推荐(0) 编辑
摘要:桥接方法 定义 在源方法和目标方法之间创建一个中间层,通常作为泛型的类型擦除过程的一部分。 第一个例子 public class Person implements Comparable<Person> { @Override public int compareTo(Person o) { ret 阅读全文
posted @ 2021-09-14 09:56 strongmore 阅读(814) 评论(0) 推荐(0) 编辑
摘要:定义 使每个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求, 直到有一个对象处理它为止。如公司员工请假,可以批假的领导有部门负责人、副总经理、总经理等,但每个领导可以批准的天数不同, 员工只需要提交申请,不需要知道最终由谁批准。 结构 阅读全文
posted @ 2021-09-13 10:05 strongmore 阅读(57) 评论(0) 推荐(0) 编辑
摘要:定义 动态地给一个对象添加一些额外的功能,就增加功能来说,装饰者模式比生成子类更为灵活。 如我们生活中的早餐煎饼,可以加鸡蛋,加香肠,加蔬菜,可以很灵活的组合。 结构 Component,抽象组件,定义为一个接口来规范被装饰的对象。 ConcreteComponent,具体的组件对象,实现组件接口, 阅读全文
posted @ 2021-09-12 10:29 strongmore 阅读(59) 评论(0) 推荐(0) 编辑
摘要:定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。这里的文法就是语言的语法规则。 结构 AbstractExpression,抽象解释器角色,定义解释器的接口,约定解释器的解释操作。 TerminalExpression,终结符解释器,用来实现语法 阅读全文
posted @ 2021-09-11 16:09 strongmore 阅读(241) 评论(0) 推荐(0) 编辑
摘要:前言 今天在学习swagger源码时,发现其中使用到了spring-plugin组件,github地址, 这个组件很小众,在其他框架中也使用不多,它被称为最小的插件系统。 简单使用 maven依赖 <dependency> <groupId>org.springframework.plugin</g 阅读全文
posted @ 2021-09-09 20:45 strongmore 阅读(5792) 评论(0) 推荐(0) 编辑
摘要:定义 运用共享技术有效地支持大量细粒度的对象。如围棋中的黑白棋子,教室中的凳子和桌子,这些对象有很多相似的地方, 如果将其中相同的地方提取出来共享,就能节省大量的系统资源,这就是享元模式的适用场景。 结构 Flyweight,享元接口,可以接收并作用于外部数据。 ConcreteFlyweight, 阅读全文
posted @ 2021-09-08 21:12 strongmore 阅读(79) 评论(0) 推荐(0) 编辑
摘要:定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。 如游戏中的存档,各种编辑器中的后退、撤销功能。 结构 Originator,发起人角色,一个普通的业务处理类,可以根据自身创建备忘录对象,根据备忘录数据恢复自身。 Meme 阅读全文
posted @ 2021-09-07 20:44 strongmore 阅读(94) 评论(0) 推荐(0) 编辑
摘要:定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 类似于我们商城下单,订单有各种状态,不同的状态下可以执行不同的操作。 结构 State,状态接口,用来封装与上下文的一个特定状态所对应的行为。 ConcreteState,具体状态实现类,提供对应状态的具体行为处理。 C 阅读全文
posted @ 2021-09-06 21:00 strongmore 阅读(58) 评论(0) 推荐(0) 编辑