H__D  
04 2021 档案
  • 【设计模式】解释器模式
    摘要:一、定义 解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。 二、结构 解释器模式的结构 解释器模式包含以下主要 阅读全文
    posted @ 2021-04-29 17:34 H__D 阅读(109) 评论(0) 推荐(0) 编辑
  • 【设计模式】备忘录模式
    摘要:一、定义 备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。 二、结构 备忘录模式的结构 备忘录模式的主要角色如下。 1)发起人(Originator)角色:记录当前时刻 阅读全文
    posted @ 2021-04-28 14:24 H__D 阅读(111) 评论(0) 推荐(0) 编辑
  • 【设计模式】访问者模式
    摘要:一、定义 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式 二、结构 访问者模式的结 阅读全文
    posted @ 2021-04-27 15:44 H__D 阅读(72) 评论(0) 推荐(0) 编辑
  • 【Junit】Junit 与 SpringMVC 整合测试
    摘要:本章介绍使用 Junit4 测试 SpringBoot,关于 Junit4 的基本使用 参考:【Junit】Junit快速入门 关于SpringMVC项目搭建参考,参考:【Maven】Eclipse 使用Maven创建SpringMVC Web项目 一、项目框架 1、新建一个SpringMVC项目 阅读全文
    posted @ 2021-04-27 01:44 H__D 阅读(494) 评论(0) 推荐(0) 编辑
  • 【Java】IDEA 之 Smart Tomcat 插件的使用
    摘要:在开发Java Web项目的时候,需要使用Tomcat来运行发布项目 IntelliJ IDEA Community社区版是一个简版,是没有集成Tomcat的。可以通过插件的方式把tomcat的环境集成到IDEA社区版中,其中插件可以是Smart Tomcat。 1、安装Smart Tomcat插件 阅读全文
    posted @ 2021-04-26 18:50 H__D 阅读(12021) 评论(0) 推荐(1) 编辑
  • 【设计模式】迭代器模式
    摘要:一、定义 迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 二、结构 迭代器模式的结构 迭代器模式主要包含以下角色。 1)抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口。 2)具体聚合(Conc 阅读全文
    posted @ 2021-04-26 16:44 H__D 阅读(119) 评论(0) 推荐(0) 编辑
  • 【Junit】Junit 与 SpringBoot 整合测试
    摘要:本章介绍使用 Junit4 测试 SpringBoot,关于 Junit4 的基本使用 参考:【Junit】Junit快速入门 关于SpringBoot的使用,参考:【SpringBoot】SpringBoot快速入门(一) 一、项目框架 1、搭建一个Maven项目,引入 springboot依赖 阅读全文
    posted @ 2021-04-26 01:32 H__D 阅读(240) 评论(0) 推荐(0) 编辑
  • 【Junit】Junit 与 Spring 整合测试
    摘要:本章介绍使用 Junit4 测试 Spring,关于 Junit4 的基本使用 参考:【Junit】Junit快速入门 一、项目框架 1、搭建一个Maven项目,引入 spring依赖、spring-test依赖 和 junit依赖 1 <?xml version="1.0" encoding="U 阅读全文
    posted @ 2021-04-26 01:27 H__D 阅读(306) 评论(0) 推荐(0) 编辑
  • 【设计模式】中介模式
    摘要:一、定义 中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。 二、结构 中介者模式的结构 中介者模式包含以下主要角色。 1)抽象中介者(Mediator)角色: 阅读全文
    posted @ 2021-04-25 22:34 H__D 阅读(220) 评论(0) 推荐(0) 编辑
  • 【设计模式】观察者模式
    摘要:一、定义 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。 二、结构 观察者模式的结构 观察者模式的主要角色如下。 抽象主题(Subje 阅读全文
    posted @ 2021-04-24 15:18 H__D 阅读(90) 评论(0) 推荐(0) 编辑
  • 【Spring】声明式事务实现原理(十六)
    摘要:一、声明式事务的使用 参考:【Spring】Spring事务管理实现方式(十五) 二、声明式事务的图 1、类图 2、原理图 3、事务对象图 阅读全文
    posted @ 2021-04-24 02:00 H__D 阅读(98) 评论(0) 推荐(0) 编辑
  • 【设计模式】状态模式
    摘要:一、定义 状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。 二、结构 状态模式的结构 状态模式包含以下主要角色。 环境类(Context)角色:也称为上下文,它定义了客户端需要的接口,内部维护一个当前状态,并负责 阅读全文
    posted @ 2021-04-23 16:24 H__D 阅读(48) 评论(0) 推荐(0) 编辑
  • 【Spring】Spring事务管理实现方式(十五)
    摘要:一、Spring事务管理实现方式 按是否通过编程分为声明式事务和编程式事务 声明式事务: 声明式事务:通过AOP(面向切面)方式在方法前使用编程式事务的方法开启事务,在方法后提交或回滚。用配置文件的方法或@(如:@Transactional)控制事务。 通过XML配置或者注解实现。 编程式事务: 手 阅读全文
    posted @ 2021-04-23 00:16 H__D 阅读(235) 评论(0) 推荐(0) 编辑
  • 【Spring】Spring事务的概念(十四)
    摘要:可以先了解JDBC事务,参考: 【Java】JDBC事务 一、Spring事务的理解 1、事务的定义 事务(Transaction):是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,数据库能将逻辑相关的一组操作绑定在一起,以便服务器保持数 阅读全文
    posted @ 2021-04-22 23:35 H__D 阅读(205) 评论(0) 推荐(0) 编辑
  • 【Java】JDBC事务
    摘要:一、事务的理解 1、事务的定义 事务(Transaction):是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,数据库能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。 事务通常是以begin transaction开始,以c 阅读全文
    posted @ 2021-04-22 19:57 H__D 阅读(350) 评论(0) 推荐(0) 编辑
  • 【设计模式】责任链模式
    摘要:一、定义 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 二、结构 责任链模式的结构 职责链模式主要 阅读全文
    posted @ 2021-04-22 15:18 H__D 阅读(66) 评论(0) 推荐(0) 编辑
  • 【设计模式】命令模式
    摘要:一、定义 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 二、结构 命令模式的结 命令模式包含以下主要角色。 1)抽象命令类(Command)角色:声明执行 阅读全文
    posted @ 2021-04-21 14:16 H__D 阅读(70) 评论(0) 推荐(0) 编辑
  • 【Spring】AOP 实现原理(十三)
    摘要:一、参考资料 0、Spring AOP系列https://www.jianshu.com/u/51eae3937c54?order_by=top1、Spring AOP (一) 简介https://www.jianshu.com/p/7f4f2429552f2、Spring AOP (二) JDK 阅读全文
    posted @ 2021-04-20 23:27 H__D 阅读(202) 评论(0) 推荐(0) 编辑
  • 【设计模式】策略模式
    摘要:一、定义 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 二、结构 策略模式的结构 阅读全文
    posted @ 2021-04-20 11:58 H__D 阅读(76) 评论(0) 推荐(0) 编辑
  • 【Spring】@Import注解的使用和实现原理(十二)
    摘要:一、@Import概述 @Import 是 Spring 基于 Java 注解配置的主要组成部分,@Import 注解提供了类似 @Bean 注解的功能。本文将介绍@Import注解的使用,并详细分析该注解的实现原理,同时会学习到Spring当中ImportSelector接口的和ImportBea 阅读全文
    posted @ 2021-04-17 15:49 H__D 阅读(1032) 评论(0) 推荐(0) 编辑
  • 【Spring】@PropertySource配置的用法与实现原理(十一)
    摘要:一、@PropertySource功能 加载指定的属性文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和@ConfigurationProperties 使用。 @PropertySource 和 @Value 组合使用,可以将自定义属性文件 阅读全文
    posted @ 2021-04-16 20:46 H__D 阅读(1591) 评论(0) 推荐(0) 编辑
  • 【Spring】事件监听实现原理(十)
    摘要:一、事件监听介绍 原理: 观察者模式 spring的事件监听有三个部分组成: 事件(ApplicationEvent) 负责对应相应监听器 事件源发生某事件是特定事件监听器被触发的原因。 监听器(ApplicationListener) 对应于观察者模式中的观察者。监听器监听特定事件,并在内部定义了 阅读全文
    posted @ 2021-04-15 00:16 H__D 阅读(556) 评论(0) 推荐(0) 编辑
  • 【Spring】Aware 接口原理(九)
    摘要:一、Aware 接口介绍 Aware接口从字面上翻译过来是感知捕获的含义。单纯的bean(未实现Aware系列接口)是没有知觉的;实现了Aware系列接口的bean可以访问Spring容器。这些Aware系列接口增强了Spring bean的功能,但是也会造成对Spring框架的绑定,增大了与Spr 阅读全文
    posted @ 2021-04-14 23:45 H__D 阅读(343) 评论(0) 推荐(0) 编辑
  • 【Spring】重复的beanName覆盖原则(九)
    摘要:在Spring中,可以有由于存在重复的beanName会有一些问题 下面看看,Spring是怎么处理重复的beanName的 1、Spring容器内置了 ConfigurationClassPostProcessor 配置类工厂bean后置处理器,在Bean工厂准备好后,调用 postProcess 阅读全文
    posted @ 2021-04-14 23:30 H__D 阅读(1690) 评论(0) 推荐(0) 编辑
  • 【Spring】FactoryBean接口的实现原理(八)
    摘要:一、FactoryBean与BeanFactory FactoryBean和BeanFactory虽然名字很像,但是这两者是完全不同的两个概念,用途上也是天差地别。 BeanFactory是一个Bean工厂,在一定程度上我们可以简单理解为它就是我们平常所说的Spring容器(注意这里说的是简单理解为 阅读全文
    posted @ 2021-04-14 23:13 H__D 阅读(294) 评论(0) 推荐(0) 编辑
  • 【Spring】配置initMethod 与 配置destroyMethod 的实现原理(七)
    摘要:关于在Spring 容器 初始化和销毁 bean 前所做的操作有三种方式定义: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化后和销毁bean之前进行的操作 第二种:通过bean实现InitializingBean和 DisposableBean接口 第三种: 阅读全文
    posted @ 2021-04-14 00:53 H__D 阅读(1489) 评论(0) 推荐(0) 编辑
  • 【Spring】InitializingBean与 DisposableBean 接口的实现原理(六)
    摘要:关于在Spring 容器 初始化和销毁 bean 前所做的操作有三种方式定义: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化后和销毁bean之前进行的操作 第二种:通过bean实现InitializingBean和 DisposableBean接口 第三种: 阅读全文
    posted @ 2021-04-14 00:45 H__D 阅读(793) 评论(0) 推荐(0) 编辑
  • 【Spring】@PostConstruct 与 @PreDestroy 的实现原理(五)
    摘要:关于在Spring 容器 初始化和销毁 bean 前所做的操作有三种方式定义: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化后和销毁bean之前进行的操作 第二种:通过bean实现InitializingBean和 DisposableBean接口 第三种: 阅读全文
    posted @ 2021-04-14 00:10 H__D 阅读(571) 评论(0) 推荐(0) 编辑
  • 【Spring】BeanPostProcessor-Bean后置处理器(四)
    摘要:Bean后置处理器在Spring容器中的作用 阅读全文
    posted @ 2021-04-13 22:47 H__D 阅读(82) 评论(0) 推荐(0) 编辑
  • 【Spring】Bean生成过程、循环依赖问题(三)
    摘要:一、Bean生成过程 二、获取Bean的安全问题 阅读全文
    posted @ 2021-04-13 22:45 H__D 阅读(89) 评论(0) 推荐(0) 编辑
  • 【Spring】IOC源码分析(二)
    摘要:一、介绍 二、BeanFactory类图 三、示例 1 public class MainStarter { 2 3 public static void main(String[] args) { 4 5 // 注解配置引用上下文 6 AnnotationConfigApplicationCont 阅读全文
    posted @ 2021-04-13 22:40 H__D 阅读(91) 评论(0) 推荐(0) 编辑
  • 【Spring】核心介绍(一)
    摘要:Spring核心系列文章:https://www.cnblogs.com/loongk/category/1632959.html Spring ioc源码分析https://blog.csdn.net/fvdfsdafdsafs/article/details/92829939 最详细的Sprin 阅读全文
    posted @ 2021-04-13 22:18 H__D 阅读(95) 评论(0) 推荐(0) 编辑
  • 【JVM】垃圾回收器(十八)
    摘要:一、GC 分类与性能指标 1、垃圾回收器概述与分类 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 Java不同 阅读全文
    posted @ 2021-04-08 00:52 H__D 阅读(302) 评论(0) 推荐(0) 编辑
  • 【JVM】垃圾回收相关概念(十七)
    摘要:1、System.gc() 的理解 1、System.gc() 方法 在默认情况下,通过System.gc()者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc()调用附带一个免 阅读全文
    posted @ 2021-04-07 22:21 H__D 阅读(163) 评论(0) 推荐(0) 编辑
  • 【JVM】垃圾回收相关算法(十六)
    摘要:1、标记阶段:引用计数器 1.1、标记阶段的目的 垃圾标记阶段:判断对象是否存活 在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。 只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我 阅读全文
    posted @ 2021-04-07 00:51 H__D 阅读(161) 评论(0) 推荐(0) 编辑
  • 【JVM】垃圾回收概述(十五)
    摘要:一、关于垃圾收集 Java 和 C++语言的区别,就在于垃圾收集技术和内存动态分配上,C语言没有垃圾收集技术,需要我们手动的收集。 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 关于垃圾收集有三个经典问题: 哪些内存需要回收? 什 阅读全文
    posted @ 2021-04-06 23:09 H__D 阅读(79) 评论(0) 推荐(0) 编辑
  • 【Java多线程】Disruptor源码分析(三十四)
    摘要:Disruptor类图 Disruptor执行过程 Disruptor源码分析 1 // 环形缓冲区 2 private final RingBuffer<T> ringBuffer; 3 // 实现者 4 private final Executor executor; 5 // 消费仓库 6 p 阅读全文
    posted @ 2021-04-04 21:46 H__D 阅读(158) 评论(0) 推荐(0) 编辑
  • 【Java多线程】Disruptor高性能队列(三十三)
    摘要:背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Mar 阅读全文
    posted @ 2021-04-04 19:16 H__D 阅读(579) 评论(0) 推荐(0) 编辑
  • 【Java多线程】ConcurrentLinkedQueue实现原理(三十二)
    摘要:一、介绍 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,下 阅读全文
    posted @ 2021-04-03 15:49 H__D 阅读(391) 评论(0) 推荐(0) 编辑
  • 【Java多线程】Fork/Join 源码分析(三十一)
    摘要:一、Fork/Join 基本介绍和使用 参考:【Java多线程】 Fork/Join框架(三十) 二、线程池结构 及 调用图 1、线程池结构图 2、线程池调用图 3、线程池ctl属性变化图 4、WorkQueue的scanState属性变化图 三、示例代码 1 public class CountT 阅读全文
    posted @ 2021-04-02 13:22 H__D 阅读(227) 评论(0) 推荐(0) 编辑
  • 【Java多线程】Fork/Join 框架(三十)
    摘要:一、什么是Fork/Join 框架 Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解一下Fork/Join框架。Fork就是把一个大任务切分为若干子任务 阅读全文
    posted @ 2021-04-02 13:12 H__D 阅读(166) 评论(0) 推荐(0) 编辑