![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
源码系列
文章平均质量分 83
记录源码相关知识
Interest1_wyt
这个作者很懒,什么都没留下…
展开
-
spring security源码追踪理解(一)
spring security源码追踪理解原创 2024-07-18 11:57:29 · 1025 阅读 · 0 评论 -
jdk锁知识(八)—— Semaphore(0)
semaphore(0)使用场景和机制原创 2024-04-14 11:57:45 · 538 阅读 · 0 评论 -
mybatis源码(五)springboot pagehelper实现查询分页
分页插件什么时候被加载的、分页插件什么时候生效的,如何生效的原创 2023-12-02 11:53:28 · 3023 阅读 · 0 评论 -
spark源码(零)阅读总纲
系统了解spark任务的提交,driver、application的调度与注册,资源的分配,executor的创建,job到stage再到task的切分过程,hdfs文件数据的读写操作,RDD本身的map reduce操作,持久化、check point的高可靠性容错性的实现等。............原创 2022-06-25 11:03:20 · 609 阅读 · 0 评论 -
spark源码(一)spark-submit如何将jar以及配置参数提交给spark服务器
spark-submit提交任务给spark服务器原创 2022-06-12 18:47:57 · 2950 阅读 · 0 评论 -
spark源码(二)spark如何启动driver、application注册、executor构建命令拼装
driver概念解析、driver运行、application注册、executor构建命令拼装原创 2022-06-18 11:54:29 · 1423 阅读 · 0 评论 -
spark源码(三)spark 如何进行driver、executor任务的调度,以及executor向driver的注册
spark 如何进行driver、executor任务的调度,以及executor向driver的注册原创 2022-06-19 10:20:48 · 1286 阅读 · 0 评论 -
spark源码(四)executor在worker上的创建过程,executor本质是什么,是线程池吗?
executor在worker上的创建过程,executor执行task的本质是提交任务到缓冲线程池原创 2022-06-19 20:29:39 · 719 阅读 · 0 评论 -
spark源码(五)DAGScheduler TaskScheduler如何配合提交任务,application、job、stage、taskset、task对应关系是什么?
DAGScheduler TaskScheduler如何配合提交任务,各个阶段如何划分?一个application可能有多个job提交,因为每个行为算子都调用runjob方法,即都对应一次job任务提交一个job可能有多个stage,划分依据主要是RDD是不是出现了shuffle,即每个宽依赖都会导致新stage的生成。一个stage对应一个taskset,且为stage中每个分区创建一个task任务。askset包含一组task,每个task执行逻辑相同,主要是面向stage不同的分区...原创 2022-06-25 10:58:49 · 491 阅读 · 0 评论 -
spark源码(六)spark如何通过BlockManager控制数据的读写
BlockManager三大读写模块:MemoryStore:负责内存数据的读写;DiskStore:负责磁盘数据的读写;BlockTransferService:负责远程数据的读写原创 2022-07-11 22:36:06 · 1430 阅读 · 0 评论 -
spark源码(七)RDD cache、persist、checkpoint功能区别和源码解析
RDD cache、persist、checkpoint功能区别和源码解析原创 2022-07-17 21:10:56 · 959 阅读 · 3 评论 -
mybatis源码(一)demo创建
之前看过一些mybatis源码,但都是断断续续看的,没有整体的梳理过。今天准备整体再过一遍。纯粹的研究源码比较枯燥,所以这次带着问题去看。 1、mybatis如何找到xml文件 2、mybatis如何将xml中sql与接口中方法绑定 3、mybatis如何解析xml中sql相关标签并拼装成完整的sql语句 4、mybatis如何将sql发送出去并获得结果...原创 2021-12-18 16:05:44 · 617 阅读 · 0 评论 -
mybatis源码(二)sql提取
上篇文章描述研究源码所用的demo,本篇文章开始正式追踪源码,在开看前,再次确认下我们要研究的问题:1、mybatis如何找到存储sql的xml文件 2、mybatis如何解析xml中sql相关标签并拼装成完整的sql语句 3、mybatis如何将xml中sql与接口中方法绑定 4、mybatis如何将sql发送出去并获得结果另外,mybatis一般有两种xml配置,一种是mybatis-config.xml这种配置管理mybatis全局...原创 2021-12-19 22:35:03 · 4167 阅读 · 0 评论 -
mybatis源码(三)接口方法与xml中sql绑定
上篇文章mybatis源码中如何找到xml文件并提取xml中的sql,解决了前两个问题,本篇文章继续追踪源码,尝试答疑后面的两个问题,在开始正式追踪源码,再次确认下我们要研究的问题:1、mybatis如何找到存储sql的xml文件 2、mybatis如何解析xml中sql相关标签并拼装成完整的sql语句 3、mybatis如何将xml中sql与接口中方法绑定 4、mybatis如何将sql发送出去并获得结果这里我们还是先从demo样例中看...原创 2021-12-25 18:48:31 · 1479 阅读 · 0 评论 -
mybatis源码(四)将sql发送出去并获得结果
上篇文章解决了第三个问题,即讲解了xml中sql命令与接口中方法的绑定过程。本篇文章继续追踪源码,尝试答疑最后一个问题,在开始正式追踪源码,再次确认下我们要研究的问题:1、mybatis如何找到存储sql的xml文件 2、mybatis如何解析xml中sql相关标签并拼装成完整的sql语句 3、mybatis如何将xml中sql与接口中方法绑定 4、mybatis如何将sql发送出去并获得结果接着上篇文章讲,下面我们来看看MapperMe...原创 2021-12-25 23:20:50 · 697 阅读 · 0 评论 -
mybatis源码(五)总结
1、详略结合阅读源码,源码追踪过程中如果确认某个方法跟自己要解决的问题关心不大,可以直接跳过。切忌一行一行推敲2、sqlSession、configuration、mapperRegister、knownsMapper关系configuration貌似是全局的,包含mapperRegister属性,包含已经解析的xml文件信息,mapperRegister中包含knownsMapper属性,其包含xml中已经解析的一条条sql文本,或是包含xml中对应的接口中的方法(具体暂时不详)3、mappe原创 2022-05-11 10:55:28 · 123 阅读 · 0 评论 -
jdk线程池(一)——介绍及使用
对于线程池,在高并发场景下使用较多,偶尔也会点击进去查看源码,为了以后查阅方便,所以准备写一篇文章来进行记录。1、前言线程池是什么呢?百度百科上说:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。如果了解线程池,可以知道上面的解释其实很规范了。通俗来讲,线程池可以理解为一个池子,里面有一些工人,当我们提交任务时,这些工人就会去执行一个个任务。线程池的好处?反向思考,如果不使用线程池,多线程运行时会出现什么问题呢,首先是有多个任务时线程的数量不好控原创 2021-01-31 11:07:15 · 194 阅读 · 0 评论 -
jdk线程池(二)——源码解析
线程池的基础介绍和使用在上一篇文章中已经介绍,本文从实际使用的角度进行源码的分析,下面进入正文。1、整体介绍我们常用的线程池框架如上所示,其中的核心是ThreadPoolExecutor,无论是我们常用的线程池还是定时线程池的创建都和该类有关,该类的整体结构如下:第一个模块是类的静态和非静态变量,第二个模块是重载的构造方法,我们使用的第一步也是调用这些方法构造我们自己的线程池,第三个模块类的方法,包括运行、终端等(共用的线程池方法以模板设计模式封装在了父模块AbstractExecut.原创 2021-02-01 12:42:28 · 128 阅读 · 0 评论 -
jdk线程池(三)——源码解析
上一篇文章中讲述了任务提交、线程池中线程的创建或任务进入队列的源码,本节将继续讲解后续线程池中线程如何运行处理任务的过程。源码承接上一篇的runWorker方法,其具体内容如下:原创 2021-02-01 23:58:22 · 107 阅读 · 0 评论 -
HashMap源码分析(一)
1、hashmap简介hashmap是一个key-value键值对形式的集合,用于存储键值对数据。默认容量为16,每次扩容是在原有容量基础上扩大一倍。jdk1.7时底层采用数组+链表形式存储,且因为头插法,在并发扩容时容易产生循环链表。jdk1.8时底层采用数组+链表+红黑树形式存储,且数据插入时采用尾插法,另外转变红黑树需要满足两个条件,一是链表长度大于等于8,二是数组容量达到64。2、hashmap整体查看先来看下HashMap在集合框架中的位置,可以看到HashMap继承自Abstract原创 2021-02-18 20:56:36 · 149 阅读 · 0 评论 -
HashMap源码分析(二)
1、前言上一篇文章了解了hashmap的整体结构,其实现了map接口,具有键值对存储和遍历功能。且该功能由六个主要的内部类模块实现,以及Node等关键内部类的组成。下面来看一下HashMap具体使用的源码情况。2、源码分析——put方法查看public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}final V putVal(int hash, K key, V va原创 2021-02-19 12:59:32 · 129 阅读 · 0 评论 -
jdk锁知识(一)—— 总览
jdk中常见得锁知识有violatile、synchronized、Lock,该系列文章会先整体介绍三类锁的特性,然后在分别介绍,其中violatile、synchronized关键字都是java的基础关键字,我会主要从理论方面去介绍。而Lock由于是java中的接口,且有对应的实现类,所以这块我会从理论和源码的两个角度去介绍。而该系列的重点也是Lock锁的讲解。...原创 2021-02-06 21:54:33 · 771 阅读 · 0 评论 -
jdk锁知识(二)——volatile、synchronized
1、volatile与synchronized的区别是什么2、volatile主要功能是什么、各功能实现原理是什么3、synchronized主要功能是什么,其是如何实现的原创 2021-02-08 19:15:17 · 123 阅读 · 0 评论 -
jdk锁知识(三)—— Lock锁概述
1、Lock锁整体依赖关系Lock锁是java中的一个接口,作为顶层接口,其有很多继承接口和实现类,常见依赖关系图如下:由于常见得实现类是ReenTrantReadWriteLock,所以此处关系图也是到这个对象截止...原创 2021-02-09 08:23:05 · 760 阅读 · 0 评论 -
jdk锁知识(四)—— AQS
1、AQS是什么,实现的功能是什么,其在Lock锁和整个并发包中地位2、AQS理论介绍3、AQS源码分析原创 2021-02-06 18:08:28 · 406 阅读 · 0 评论 -
jdk锁知识(五)—— AQS
排它锁获取(这里留意一下addWaiter方法,之所以有尾部遍历,就是为了和这块代码互补):public final void acquire(int arg) { //1、先尝试获取锁,成功则直接返回,失败再继续后续流程 (这个方法由具体的锁类实现) //2、以排他模式创建新节点,并放在同步队列尾部,随后尝试竞争锁或挂起 //3、尝试获取锁失败,放到同步队列再次竞争锁或挂起失败,则设置当前线程中断 if (!tryAcquire(arg) && a原创 2021-02-06 18:08:51 · 115 阅读 · 0 评论 -
jdk锁知识(六)—— ReentrantReadWriteLock锁源码
1、前言开发或者学习中会遇到查看源码的情况,一般我会先找到对应的实现类,然后以此找出它的父接口或者上级抽象类,构建出一个如下的diagram图,查看其整体功能是什么;然后打开源码,大致浏览下实现类中变量、方法、内部类等信息,了解当前类的主要功能是什么;然后看当前类源码复杂不负责,如果不复杂可以整体看,如果复杂,建议写一个demo,根据实际的使用流程来追踪源码,这样有了主线,读取复杂源码时才不会迷路。另外源码中可能很多方法是重载的,所以在读的时候千万不要被众多的方法吓到,可以根据功能将所有重载方法划成一类原创 2021-02-11 16:04:22 · 126 阅读 · 1 评论 -
jdk锁知识(七)—— ReentrantReadWriteLock锁补充
在上一篇文章中根据实例demo介绍了ReentrantReadWriteLock的共享锁、排它锁的锁获取和释放的源码,可以知道锁基本都是依赖AQS完成各项功能,所以在阅读源码前或者阅读锁相关源码比较吃力时,建议先去了解下AQS相关的理论知识与源码,该篇文章接着上一节ReentrantReadWriteLock的源码继续讲解,即ReentrantReadWriteLock小知识点比较多,因为上一节篇幅原因,所以这里重开一篇文章进行介绍1)同步状态 state属性详解、锁名称讲解state又称同步状态,原创 2021-02-12 00:52:30 · 89 阅读 · 0 评论 -
sparksql(一) insertinto 源码解析
sparksql insertinto 源码解析原创 2022-09-03 17:24:10 · 3987 阅读 · 0 评论