加载中
SpringBoot(3) - 容器启动入口:AbstractApplicationContext.refresh

前文回顾 容器ApplicationContext的顶层结构简析 可知: 由实现 AbstractApplicationContext的具体类来持有继承抽象类org.springframework.beans.factory.support.AbstractAutowireCapableBe...

2020/09/13 16:01
188
ApplicationContext的设计结构

本文基于以下版本 ,早期版本里SpringBoot的启动类不同 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.1.5.RELEASE...

2020/06/05 10:33
638
启动ApplicationContext加载配置(2) - ConfigurationClassPostProcessor (最重要的BeanFactoryPostProcessor) 源码简析 一

ConfigurationClassPostProcessor (最重要的BeanFactoryPostProcessor) 源码简析 二 前言 首先: @Configuration、@Controller、@Service都继承了@Component。 SpringBoot提供了一系列的组件...

2020/06/01 17:24
509
网络基本协议

OSI网络七层模型 应用层 (定义了用于在网络中进行通信和传输数据的接口 HTTP) 表示层(定义不同的系统中数据的传输格式,编码和解码规范等) 会话层(对多个双向消息的控制和管理, 解除或建...

2017/08/17 16:41
111
RSA工具类

在加解密过程中,要注意: 字节数组和字符串转换时的编码格式要保持一致! 其次: 公钥:先用 X509EncodedKeySpec 编码转换 私钥: 先用 PKCS8EncodedKeySpec 编码转换 import java.io.ByteA...

2021/10/14 15:40
83
Html转PDF并增加水印

PDF增加水印 import java.awt.FontMetrics; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.sw...

2021/10/08 14:26
192
Hystrix 断路->隔离->降级 流程

网关 Spring-Zuul 1.X 版本使用了 RibbonRoutingFilter#run() 来路由分发到同serviceId的不同服务节点实例。 它可创建的RibbonCommand如下图: 从抽象类AbstractRibbonCommand定义上来看: ...

Eureka的工作过程

EurekaServer的高可用方案通过配置eureka.client.service-url.defaultZone 为多个注册中心的地址,以实现多个eurekaServer实例进行互相注册,服务清单的互相同步。 eureka: instance: hostna...

2021/07/19 10:14
37
Zookeeper: 没有对提案ack的follower 如何了?

只有Leader支持写,只能由Leader发起提案proposal , 所以Zookeeper的写能力是无法扩展的。对follower的写会转给leader处理,响应客户端还是由follower来做。 leader只要接收到过半follower对...

2021/07/15 23:31
43
Zookeeper 的 Leader & Follower 在选主和恢复阶段 的流程简析

前言 Zookeeper的特点: 为了保证一致性C,而放弃了可用性P, 属于AP 1、选主 + 恢复阶段不提供对外服务。leader与learner(follower、observer)通过Socket通讯,这个不可用的时间不可控。 2、...

Spring的事务管理(2)- 事务切面的解析处理过程

本文简单概述下事务切面的创建及执行过程。 org.springframework.boot spring-boot-autoconfigure 2.1.5.RELEASE

2021/02/25 15:51
55
AbstractQueuedSynchronizer的实现 の ReentrantLock 可重入独占锁

总结 CLH锁: 申请加锁的线程依赖于前驱节点的状态进行等待,在前置节点解锁后,当前节点会结束等待并竞争锁。 AQS - AbstractQueuedSynchronizer是大部分Lock的基础实现。底层大量使用 CAS ...

2021/02/05 11:48
88
Disruptor (3)- 生产与消费

生产过程 只是泛指调用 Disruptor 发布事件的开发代码, 与事件(Event)一样,不是被定义的特定类型。 RingBuffer.next() -> MultiProducerSequencer.next() 得到下一个可用事件槽。如果 预分...

@RefreshScope 支持配置热变更

总结 Scope对象实现了接口 BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor, 所以会在容器启动过程的前期阶段就被 AbstractApplicationContext.invokeBeanFactoryPostProc...

jstack线程执行快照分析 - IO阻塞可以是RUNNABLE状态

jstack -l [pid]命令生成java虚拟机当前时刻的线程快照 Dump ,下文展示的是几种常见的输出。 "SimplePauseDetectorThread_2" #47 daemon prio=5 os_prio=0 tid=0x00007fd2c4160000 nid=0x7...

2020/12/07 10:47
4.1K
Thread 竞争 Monitor Lock的状态变化

synchronized 、AQS(AbstractQueuedSynchronizer.compareAndSet*)都会阻塞线程,那 线程的状态是什么,是 WAITING还是 BLOCKED? Monitor Lock Java中用以实现线程之间的互斥与协作的主要手...

2020/12/04 11:59
79
Bean创建(1)- 各种常用配置注解在Bean创建时执行先后顺序

1、 AbstractApplicationContext.refresh()容器启动过程的最后一步:AbstractApplicationContext.finishBeanFactoryInitialization -> DefaultListableBeanFactory.preInstantiateSingletons...

2020/10/26 10:46
501
启动ApplicationContext加载配置(2) - ConfigurationClassPostProcessor (最重要的BeanFactoryPostProcessor) 源码简析 二

ConfigurationClassPostProcessor (最重要的BeanFactoryPostProcessor) 源码简析 一 先解释下启动类“BootstrapApplication”上的注解层级关系: @SpringBootConfiguration @EnableAutoConf...

2020/10/22 11:38
351
Scope模式 - GenericScope

Spring容器中常用的Bean的scope有: singleton(默认)  Spring IOC容器中只会存在一个共享的bean实例,其被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将...

2020/10/13 16:29
369
@Validated的groups用法

总结而言: 若@Validated的value属性 未指定groups,则 校验DTO上groups指定为javax.validation.groups.Default或 无指定的默认 字段。 指定了groups,则 校验DTO上 groups为当前类及其各上层...

2020/09/16 11:53
5.8K

没有更多内容

加载失败,请刷新页面

返回顶部
顶部