SpringBoot 启动流程

SpringBoot启动流程 整个启动流程包含,推断 WEB 应用类型,设置初始化器,设置 ApplicationListener 监听器,获取并启动 SpringApplicationRunListener 类,准备 Spring 环境,创建并执行 banner 打印类,创建应用上下文,准备应用上 ... »

Spring Boot 自动装配原理

Spring Boot 自动装配原理 Spring Boot 在启动之前还有一系列的准备工作,比如:推断 web 应用类型,设置初始化器,设置监听器,启动各种监听器,准备环境,创建 applicationContext,准备 context 上下文对象,在 prepareContext 的时候,将 ... »

源码分析:Phaser 之更灵活的同步屏障

简介 Phaser 是 JDK 1.7 开始提供的一个可重复使用的同步屏障,功能类似于CyclicBarrier和CountDownLatch,但使用更灵活,支持对任务的动态调整,并支持分层结构来达到更高的吞吐量。 Registration(注册) 与其他屏障的情况不同,在 Phaser 上注册同步 ... »

源码分析:Exchanger之数据交换器

简介 Exchanger是Java5 开始引入的一个类,它允许两个线程之间交换持有的数据。当Exchanger在一个线程中调用exchange方法之后,会阻塞等待另一个线程调用同样的exchange方法,然后以线程安全的方式交换数据,之后线程继续执行。 官方示例 在JDK的源码注释中,提供了一个简单 ... »

源码分析:CyclicBarrier 之循环栅栏

简介 CyclicBarrier 是一个同步辅助工具,允许一组线程全部等待彼此达到共同屏障点,且等待的线程被释放后还可以重新使用,所以叫做Cyclic(循环的)。 应用场景 比如出去旅行时,导游需要等待所有的客人到齐后,导游才会给大家讲解注意事项等 官方示例 在JDK的源码注释中,提供了一个简单的示 ... »

设计模式(十八)——观察者模式(JDK Observable源码分析)

1 天气预报项目需求,具体要求如下: 1) 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 2) 需要设计开放型 API,便于其他第三方也能接入气象站获取数据。 3) 提供温度、气压和湿度的接口 4) 测量数据更新时,要能实时的通知给第三方 2 天 ... »

设计模式(十七)——迭代器模式(ArrayList 集合应用源码分析)

1 看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图: 2 传统的设计方案(类图) 3 传统的方式的问题分析 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 2) 实际上 ... »

源码剖析ThreadPoolExecutor线程池及阻塞队列

本文章对ThreadPoolExecutor线程池的底层源码进行分析,线程池如何起到了线程复用、又是如何进行维护我们的线程任务的呢?我们直接进入正题: 首先我们看一下ThreadPoolExecutor类的源码 1 public ThreadPoolExecutor(int corePoolSize ... »

设计模式(十)——组合模式(HashMap源码解析)

1 看一个学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图: 2 传统方案解决学校院系展示 3 传统方案解决学校院系展示存在的问题分析 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来 ... »

设计模式(八)——桥接模式

1 手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图: 2 传统方案解决手机操作问题 传统方法对应的类图 3 传统方案解决手机操作问题分析 1) 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个 ... »

设计模式(七)——适配器模式(SpringMVC框架分析)

适配器模式 1 现实生活中的适配器例子 泰国插座用的是两孔的(欧标),可以买个多功能转换插头 (适配器) ,这样就可以使用了。 2 基本介绍 1) 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以 ... »

Java|ArrayList源码分析

本文结构: 1.介绍特点 2.基本方法 3.重点源码分析 1.介绍特点 ArrayList: 是List的一个具体实现子类,是List接口的一个数组实现 (里面必定维护了一个数组)。 默认初始容量10, 扩容机制1.5倍。(数组必然有初始容量和扩容机制) 有序。 允许null元素。 允许重复元素。 ... »

Java|ArrayList源码分析|add()增加方法和grow()扩容方法

本文结构: 1.介绍特点 2.基本方法 3.重点源码分析 1.介绍特点 ArrayList: 是List的一个具体实现子类,是List接口的一个数组实现 (里面必定维护了一个数组)。 默认初始容量10, 扩容机制1.5倍。(数组必然有初始容量和扩容机制) 有序。 允许null元素。 允许重复元素。 ... »

Nacos(二)源码分析Nacos服务端注册示例流程

上回我们讲解了客户端配置好nacos后,是如何进行注册到服务器的,那我们今天来讲解一下服务器端接收到注册实例请求后会做怎么样的处理。 首先还是把博主画的源码分析图例发一下,让大家对整个流程有一个大概的理解:图示流程地址:https://www.processon.com/view/link/5f7e ... »