随笔分类 - 源码
源码
摘要:1 前言 前面我看过了 ThreadLocal的实现机制和原理 以及 InheritableThreadLocal的实现机制和原理 两种类型的 ThreadLocal,前者是普通的,后者是在前者的基础上套了一层父子线程关系,当使用后者的时候,会在线程创建的时候,浅拷贝一份父线程的变量值。那么今天空了
阅读全文
摘要:1 前言 今天晚上看了一本 70 多页的讲解时间轮的 PDF,从是什么为什么以及原理到源码中的应用分析,讲的真好。这节我就按我理解的思路捋一下,记录一下哈。 2 时间轮概述 2.1 时间轮是什么 时间轮是一种高效利用线程资源进行批量化调度的一种调度模型。把大批量的调度任务全部绑定到同一个调度器上,使
阅读全文
摘要:1 前言 上节我们从整体上看了下数据源连接池的创建入口,以及连接池创建的时机和获取连接的过程,对于连接池的创建我们只是粗糙的看了下,那么这节我们就详细看一下 HikariDataSource 数据源的创建过程,以及连接池的创建过程。 2 实践 2.1 数据源的创建过程 那我们就还是从 DataSou
阅读全文
摘要:1 前言 上节我们看了看,SpringBoot 启动后都有哪些线程,看到有一部分是关于数据源连接池的,那么这节我们就看看数据源连接池都是如何工作的。 我们本节就从这两个问题看起: (1)数据源是什么时候创建的?连接池是什么时候创建的呢?一起创建的?还是分开创建的? (2)连接是什么时候放进连接池的?
阅读全文
摘要:1 前言 现在流行搞微服务,基本也都是 SpringBoot 打底的,那么你可否知道一个基本的 SpringBoot 启动后,都开辟了哪些线程呢?这节我们就来看看。 为什么要看呢?这个主要是增加对服务的了解,比如你管的支付中心或者订单中心,你都有哪些线程,各个线程都是干什么的,你不了解这些你怎么调优
阅读全文
摘要:1 前言 上节的后半部分,由于忙项目的事情去了,收尾的有点潦草,我们这节再继续。 上节我们的思路是先简单回顾了下,SpringBoot 启动和创建 Tomcat 的时机,然后我们还主要看了下 连接器 Connector 的创建已经启动过程。连接器本身很重要,因为它就像一个港口或者一个枢纽,连接着客户
阅读全文
摘要:1 前言 这节我主要是想看下,Tomcat 如何接收到请求并且是怎么一步步封装并交给 SpringMVC 处理的。这块之前一直没太深入的了解过,所以这节我们来看看。 在看这节之前,你首先要清楚这两个问题,方便你更好的去理解。 (1)SpringBoot启动的过程中,Tomcat 的创建和启动时机是在
阅读全文
摘要:1 前言 微服务常见的就是服务和服务之间的协同了,那么 Redisson 就是我们常用的一种协同工具了,所以想看看它的源码,只有了解它的原理,才能更好的正确使用它。 2 准备工作 既然要看是不是得先知道的它的源码地址呢?地址:Redisson 源码 有了源码,是不是还需要一份文档呢?没文档的话怎么知
阅读全文
摘要:1 前言 我们从上节 【OpenFeign】@FeignClient 注入过程源码分析 继续,来看看它代理对象的创建,以及请求的执行过程。 我们就从它的 FeignClientFactoryBean 看起,那我们这里简单回忆下它都设置了哪些属性,我简单画了个图。 这些属性不了解的话,就先看看上节哈,
阅读全文
摘要:1 前言 微服务之间的调用,OpenFeign 是一种选择,并且还提供了很多功能,比如我们有多个节点,它能负载均衡,当服务发生异常时,它还能提供熔断机制。所以它是怎么实现的,因为我们平时只需要写 @FeignClient 是个接口,所以它势必会走代理,所以是不是要从我们的 @FeignClient
阅读全文
摘要:1 前言 Bean 的创建周期大家可能都知道,三级缓存大家也都知道,那么他俩之间交互的细节如何?这节我就捋一下普通 Bean 的一个创建过程和三级缓存之间的交互。 2 图解剖析 2.1 普通无代理 Bean 创建 大概有4次交互: (1)getBean 的时候,getSingleton(beanNa
阅读全文
摘要:1 前言 今天想细细研究下 BeanDefinition,至于为什么,主要是看了很多遍,没太关注 mergedBeanDefinition 所以比较好奇,它是干啥的呢?所以得先搞清 BeanDefinition,开整。 2 源码分析 我们得先知道 BeanDefinition 在 Spring 这个
阅读全文
摘要:1 前言 我们平时异步会用到线程池,那你怎么用的呢?用的对不对呢?这节我们看看源码中的一些应用场景,看看他们是如何设置参数,如何停止的。 回忆一下线程池的几个参数:核心线程数、最大线程数、空闲时间、队列、线程工厂、拒绝策略。 2 源码应用 我们就看看他们是如何创建线程池、线程池的参数设置、线程的停止
阅读全文
摘要:1 前言 之前我们从数据库连接的角度看过 MyBatis 和 Spring 的交互,以及在动态数据源下的交互,那么我们这节看什么呢?看一下在有无 @Transitional 下的事务提交的差异。 想一个问题,事务提交或者回滚,最后的落点是什么?是不是就是那条数据库连接的提交或者回滚,就跟我们早之前的
阅读全文
摘要:1 前言 本节我们续前两节(调试查看Mapper接口生成过程、源码分析 Mapper生成注入入口分析)的内容,看下 MapperFactoryBean 是如何代理掉我们的 @Mapper 接口的。 上节我们看到我们的 Mapper 接口的 BeanDefinition, 已经放进 spring 的上
阅读全文
摘要:1 前言 续上节主要用调试的方式,看了一下 Mapper 接口的注入过程,本节就从源码的角度,一步步分析 Mapper 接口都是怎么注入到 Spring容器中的。 2 源码分析 2.1 入口分析 我们上节看到扫描 @Mapper 的方式有两种,一种是基于 @MapperScan 的主动扫描,另一种就
阅读全文
摘要:1 前言 上次我们看了 Mybatis 是如何整合到 SpringBoot 的,那么平时我们可能直接用的就是 Mybatis-Plus,那么它又是如何结合到的 SpringBoot 的呢?原理其实是一样的,这节我们就来看看。 看的过程中,其实会深深体会 Mybatis-Plus 就是对 Mybati
阅读全文
摘要:1 前言 当你把 Spring、SpringBoot、Mybatis 或者 Mybatis-Plus 的源码都看过后,那有没有想过比如 Mybatis 如何整合到 Spring 或者 SpringBoot 的呢?就是思考框架跟框架之间的融合,那么这节我们就来看看单纯的 Mybatis 是如何融合到
阅读全文
摘要:1 前言 我上次有一篇是讲了从一个数据库连接的角度分析了 Spring + MyBaits + 事务三者的联系https://www.cnblogs.com/kukuxjx/p/17861966.html,这是在数据源固定的情况下。那么可能会遇到,比如按租户的分库,这种情况下我们会引入动态的数据源比
阅读全文
摘要:1 前言 今儿没事儿,看了一点儿 Activity 的书哈,前三章大致讲解了什么是流程,流程的又来,为什么要有流程,以及流程的落地该如何去做。第四章讲解了 Activity6.0的安装以及尝试,看书嘛要边看边跟着做才有体会哈,我也跟着试试。 官网:https://www.activiti.org/g
阅读全文

浙公网安备 33010602011771号