自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 ReentrantReadWriteLock锁降级

【代码】ReentrantReadWriteLock锁降级。

2024-03-10 22:16:36 106 1

原创 Nginx Http模块是如何处理请求的?

1.概述 HTTP模块是Nginx的核心模块,当一个请求被内核接收之后就会交给HTTP模块进行处理了。HTTP模块的配置块有http、server和location,其嵌套关系是server嵌套在http块里面,location嵌套在server里面,而且location里面还可以嵌套location。 在Nginx中大体上可以分为2类指令,分别是值指令(存储配置项的值)和动作指令(指定行为的),值指令可以合并,而动作类指令不可以合并。存储值的指令继承规则是向上覆盖,也就是说子配

2022-07-09 00:38:21 1162 1

原创 SpringBoot日志解析(十四)

从日志框架角度来看日志分为日志实现框架和日志门面框架。实现框架主要有log4j、log4j2、JUL和Logback;日志门面框架主要JCL和slf4j。SpringBoot默认使用的式slfj+logback。 首先在门面框架中定义一个接口LoggerFactoryBinder,所有的实现框架必须实现这个接口,而且实现类必须具有相同的类名和包路径org/slf4j/impl/StaticLoggerBinder。这样日志门面框架就可以根据该路径去寻找日志实现框架。 Spring

2022-07-05 09:45:09 179

原创 SpringBoot Webflux解析

1. Webflux介绍 Webflux是一种异步非阻塞的IO模型,当有请求过来时,它会将请求交由worker线程去处理,这样就可以极大的提升吞吐量,所以他比较适合用于IO密集型的场景。 webflux虽然可以给我带来吞吐量的提升,但是同时也带了一些问题,如调试困难,有一定的学习成本,此外目前仅有少数数据库支持异步非阻塞查询,如redis支持,而mysql不支持。它使用netty作为服务端框架,网络通信性能很高,但是我们在准备引入该技术的时候也需要十分谨慎。在SpringBoot

2022-07-03 16:42:07 5230

原创 SpringBoot Mybatis Starter 解析

我们知道Mybatis有两大核心组件:SqlSessionFactory和Mapper接口。该starter可以帮助我们自动完成SqlSessionFactory和Mapper的装配与注入,可以极大的简化我们的开发难度,提高开发效率。Mybatis-starter主要完成以下功能: 从该模块的pom文件可以看出,它里面引入了mybatis-spring-boot-autoconfigure依赖,由此我们可以知道在该依赖的META-INF目录下的spring.factories中配置了Enabl

2022-06-30 21:06:06 2400

原创 SpringBoot Starter解析

Conditional注释是一种基于条件的注解,也就是根据某一个特定条件来决定是否创建某个特定的Bean,这是SpringBoot实现自动装配的基础原理。常见的Conditional注解主要有:在@Conditional注解里面有一个方法value,它要求value是一个Condition类型。Condition是一个接口,它里面只定义一个方法matches,如果该方法返回true就创建bean,false就不创建bean。因此我们自己也可以自定义自己的Conditional,具体步骤如下:Starter是

2022-06-29 14:59:24 212

原创 Servlet容器启动解析

1. Servlet Web环境介绍目前web环境主要有Servlet和Rective,而大部分web应用使用的还是Servlet容器,web服务器又主要以Tomcat为主。所以接下来我会以Servlet容器作为解析重点。2. 容器启动主要流程从下图我们可以看出Servlet的启动流程从SpringApplication的初始化到运行run方法,再到AbstractApplicationContext的refresh方法。详细流程参考下图:3. Web容器工厂类加载解析我们知道在createWebServe

2022-06-28 10:46:06 624

原创 SpringBoot之系统初始化器(一)

ApplicationContextInitializer作为SpringBoot的系统初始化器,我们先来知其所以然,而后知其然。ApplicationContextInitialializer是在Spring Context刷新之前初始化Spring ConfigurableApplicationContext的回调接口。通常用于需要通过编程初始化应用上下文的web应用中。例如,针对上下文环境注入属性或者激活配置。此外,所有实现了ApplicationContextInitializer接口的类还可以通过

2022-06-27 17:53:49 511 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除