自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis源码解析(二)——执行流程

在上一篇构建流程中,已经介绍了 SqlSessionFactoryBuilder 构建部分,接下来解析 SQL执行部分。构建完成后,生成了 SqlSession工厂(SqlSessionFactory),SqlSession工厂用来生成 SqlSession,SqlSession 主要用来执行命令,获取映射,管理事务。下面先来看下 SqlSessionFactory。将 statement 语句进行类型强制转换,转化为 PreparedStatement。

2022-08-23 14:48:55 742 1

原创 MyBatis源码解析(一)——构建流程

MyBatis源码解析(一)——构建流程

2022-08-18 15:14:08 472

原创 SpringBoot源码解析三部曲(三)——运行流程

目录1、SpringApplication run方法简介2、SpringApplicationRunListener监听器2.1、SpringApplicationRunListeners容器2.2、SpringApplicationRunListener解析2.2.1、实现类EventPublishingRunListener解析3、初始化ApplicationArguments4、初始化ConfigurableEnvironment4.1、获取或创建环境4.2、配置环境5、忽略信息配置6、打印Bann

2022-02-12 18:00:23 477

原创 SpringBoot源码解析三部曲(二)——SpringApplication实例化

目录1、SpringApplication实例化简介2、SpringApplication实例化流程2.1、推断Web应用类型2.2、ApplicationContextInitializer加载2.3、ApplicationListener加载2.4、推断入口类1、SpringApplication实例化简介常见启动入口类示例:@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)public class Spring

2022-02-12 17:23:11 324

原创 SpringBoot源码解析三部曲(一)——自动配置

目录1、Spring Boot项目结构1.1 整体项目结构1.2 spring-boot-project项目结构2、Spring Boot自动配置运行原理2.1、自动配置运行原理简介2.2、自动配置源码解析之@EnableAutoConfiguration2.2.1、入口类和@SpringBootApplication注解功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定

2022-02-12 16:31:53 270

原创 Kafka原理解析(二):高可用、高性能机制

目录1、高可用机制1.2、高可用保障机制1.2.1、消息备份机制1.2.2、ISR1.2.2.1、分区Leader副本的选举1.2.3、消息应答确认机制1.2.4、LEO和HW1.3、故障恢复机制1.3.1、Broker故障恢复分析1.3.1.1、场景一:Broker0与其他Broker断开连接1.3.1.2、场景二:Broker0与ZooKeeper断开连接1.3.2、Controller故障恢复分析1.3.2.1、场景一:Controller与某个Broker(如Broker0)断开连接1.3.2.2、

2021-09-11 21:24:02 2126

原创 Kafka原理解析(一):基本组件介绍

主题是一个逻辑上的概念,Kafka的消息是以主题为单位归类的,生产者发送到Kafka集群中的每一条消息都要指定一个主题,消费者负责订阅主题进行消费,一个主题可以分为多个分区。

2021-09-10 16:16:19 1501

原创 ConcurrentHashMap源码解析(二): 构造函数、重点方法

目录构造函数put方法1、put()-方法入口2、putVal()-添加节点2.1、initTable()-初始化数组2.2、helpTransfer()-帮助扩容2.2.1、transfer()-扩容2.2.2、untreeify()-红黑树转链表2.2.3、TreeBin()-红黑树链表节点构造函数2.3、treeifyBin()-链表转红黑树get方法1、get()-方法入口2.1、find()-ForwardingNode的查找方法2.2、find()-TreeBin的查找方法方法入口方法入口构造

2021-08-02 19:37:52 264

原创 ConcurrentHashMap源码解析(一): 常量、成员变量、内部类、部分方法

目录简介常量成员变量内部类链表节点Node红黑树节点TreeNode红黑树链表节点TreeBin扩容完成的红黑树节点ForwardingNode简介ConcurrentHashMap是线程安全的Map,Jdk1.7之前采用的是Segment数组结构和HashEntry数组结构组成,Jdk1.8之后采用的是synchronized+数组+链表/红黑树组成。个人认为ConcurrentHashMap是JDK常用集合源码解析最难的,楼主本人也啃了好久,中途也放弃过,屡败屡战,终于完成了常用方法的解读,给大家分

2021-07-26 15:57:52 170

原创 Java并发源码分析之CountDownLatch

关联文章:Java并发源码分析之AQS及ReentrantLockJava并发源码分析之SemaphoreJava并发源码分析之ReentrantReadWriteLockJava并发源码分析之ConditionJava并发源码分析之CyclicBarrier目录工作原理概要类图使用demo构造函数CountDownLatch进入等待1、CountDownLatch-await进入等待状态入口2、AQS-acquireSharedInterruptibly加入队列中自旋等待申请锁3、CountD

2021-07-23 14:40:06 122

原创 Java并发源码分析之CyclicBarrier

目录工作原理概要Demo使用代码运行结果工作原理概要Demo使用代码public class CyclicBarrierRunnable implements Runnable { private CyclicBarrier cyclicBarrier; public CyclicBarrierRunnable(CyclicBarrier cyclicBarrier) { this.cyclicBarrier = cyclicBarrier; }

2021-07-22 20:05:13 123

原创 Java并发源码分析之Condition

目录工作原理概要主要方法原理概述Condition 进入等待状态解析1、await进入等待状态入口2、addConditionWaiter将当前线程封装成等待节点加入等待队列, 并返回3、unlinkCancelledWaiters解绑无效的等待节点, 生成新的等待队列4、fullyRelease释放当前线程持有的锁5、isOnSyncQueue判断node节点是否在同步队列中6、checkInterruptWhileWaiting检查挂起期间是否被中断7、节点回到竞争状态,处理线程状态8、reportIn

2021-07-21 17:44:19 177

原创 Java并发源码分析之ReentrantReadWriteLock

目录工作原理概要类图原理概述Sync关键常量内部类关键变量读锁/写锁计算方法ReadLock获取读锁流程1、ReadLock–获取锁入口2、AQS–acquireShared获取共享锁3、Sync–tryAcquireShared尝试获取共享锁工作原理概要ReentrantReadWriteLock是基于AQS框架构建的,相关类图如下:类图AbstractOwnableSynchronizer:抽象类,定义了独占锁线程,exclusiveOwnerThreadAbstractQueuedSync

2021-07-21 14:15:18 173

原创 Java并发源码分析之Semaphore

关联文章:Java并发源码分析之AQS及ReentrantLock工作原理概要AQS是用来构建锁的基础框架,ReentrantLock是基于AQS构建的排它锁,而Semaphore则是基于AQS构建的共享锁。两者对比如下:对比项ReentrantLockSemaphore锁的类型排它锁共享锁state锁的可重入次数锁的剩余个数是否支持可重入支持支持是否支持非公平锁支持支持是否支持公平锁支持支持类图AbstractOwnab

2021-07-20 12:30:42 128

原创 Java并发源码分析之AQS及ReentrantLock

AQS及ReentrantLock源码解析工作原理概要关键变量功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入工作原理概要AQS全称是AbstractQueuedSynchronizer,抽象同步队列,是用来构建锁或其他组件的基

2021-07-19 20:30:34 299 4

空空如也

空空如也

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

TA关注的人

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