自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL5.7 MVCC原理分析与调试

简介:大家好,我是xp,我又诈尸了mvcc,想必大家都不陌生,每个Java程序员都或多或少的了解过,不过不知道大家都是怎么学习的,是不是简单的百度一下呢?下面,我来带大家装个13,调试mvcc。咳,不是源码哈,但有那味了。开卷开卷。首先介绍一下mvcc的字面意思,全称:Multiversion Concurrency Control,翻译下来就是多版本并发控制技术。脏读、不可重复读、幻读的概念就不多啰嗦了,mvcc具体的含义也不多啰嗦了,可以自行百度。mvcc解决了脏读、不可重复读、部分幻读,

2022-02-15 15:44:09 678

原创 Dubbo的时间轮源码解析

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-01-18 13:53:41 506

原创 ThreadPoolExecutor源码解析

ctl:private static final int COUNT_BITS = Integer.SIZE - 3;//COUNT_BITS = 29//-1 = 11111111111111111111111111111111//RUNNING = 11100000000000000000000000000000,32位private static final int RUNNING = -1 << COUNT_BITS;//ctl = RUNNING privat

2021-02-08 14:59:22 178 1

原创 ConcurrentHashMap(细节篇)

本篇文章接上篇文章,介绍一些ConcurrentHashMap的细节,虽然不是特别重要,但也是干货满满。addCount的第一部分://counterCells初始为null,CAS+1失败就会把x记录到counterCells中,到时会刷到baseCount的 //先判断counterCells不为null, 不为null说明有线程更新失败了 //此时去CAS很有可能失败,所以就直接不更新了,直接记录了。 if ((as = counterCel

2020-12-11 13:40:21 2441 11

原创 ConcurrentHashMap源码逐行解析

简介:因为博主前面写过HashMap的解析,所以这里只分析和HashMap不同点,类似的地方会滤过,有需要的朋友可以结合HashMap的文章一起看。ConcurrentHashMap是HashMap的升级,是线程安全的。

2020-12-11 13:40:09 1593

原创 DelayQueue源码解析

简介:前面分析了常见的LinkedBlockingQueue,这篇看一下DelayQueue,延迟队列。简单来说,就是往队列里面塞对象,塞的时候需要指定到期时间,根据到期时间排序,最前面的是最早到期的。取的时候也是从头开始取,当然要等到过期时间到了才能取出来,提前取就会被阻塞(也可以立即返回一个null)。UML图:属性:DelayQueue的元素必须继承Delayed,具体怎么使用本篇文章就不描述了,直接开始分析常用方法吧。offer(E e):在这里插入代码片...

2020-09-07 16:47:45 284

原创 LinkedBlockingQueue源码解析

简介:前面几篇文章分析了java.util包下面的一些常见容器,util下面的容器都是线程不安全的,所以我们开始看java.util.concurrent下面的并发容器,从常见的LinkedBlockingQueue开始吧。UML图:属性:

2020-07-01 09:20:51 112

原创 Condition源码解析

简介:最近因为找工作的原因,博客也是断更了好久,现在继续,接着上篇文章的ReentrantLock继续看Condition。UML图:属性:构造方法:上面的都没啥好说的,直接看常用方法吧。await():

2020-06-19 14:55:45 134

原创 ReentrantLock源码解析

简介:本来说好的这篇文章分析Deque的,只是一想Deque需要锁的知识,所以这篇就改一下,先看ReentrantLock,下篇看LinkedBlockingDeque。ReentrantLock:一把可重入的锁,其实就是用Java代码实现的锁,而synchronized是底层实现的,ReentrantLock实现了争取锁失败的线程安全的加入队列,线程释放锁之后会按顺序去唤醒线程争夺锁。UM...

2020-04-21 17:08:46 353

原创 HashMap源码解析(含红黑树)

简介:前两篇文章,我们分析了数组和链表,我们看到了数组和链表都有相应的缺点。有没有集两家之长的呢?有,那就是HashMap。说到HashMap,不得不说一下hash,也叫散列。就是把任意长度的值,通过散列算法,得到一个固定长度的值。常见的几种Hash函数有直接寻址法、平方取中法、 除留余数法…我们简单看下String的hashCode():比较简单,遍历字符串,取每个字符串的ASCII...

2020-04-15 17:56:42 779 4

原创 HashMap(红黑树篇)

本篇文章只分析红黑树的那块,其他部分请看本人的另一篇文章。TreeNodeUML图:可以看到,TreeNode是Node的子类,所以TreeNode也拥有Node的next属性,记住这个,下面会讲到。treeify(Node<K,V>[] tab):```javafinal void treeify(Node<K,V>[] tab) { TreeNod...

2020-04-15 17:55:59 1031

原创 LinkedList源码解析

简介:LinkedList的底层是链表结构,并且是双向的。UML图:属性:可以看到的确是一个双向的链表,每个节点自身都包含了前一个节点和后一个节点。链表数据结构:可以看到,首先头节点是没有前驱的,尾节点没有后驱。其次就是每个节点都会保存前一个节点和后一个节点,这个就构成了一个线性表。构造方法:一个空的构造方法啥也没干,下面的需要Collection类型的参数,我们来看下具体实现。...

2020-03-27 17:03:43 276

原创 ArrayList源码解析

因为是楼主第一篇博客,楼主又是菜鸡,所以决定挑个软柿子捏一捏,瞅一瞅ArrayList。简介:楼主是jdk1.8,大家看的时候注意下版本。ArrayList的底层是数组,并且可以动态扩容的。继承关系:实现了四个接口,一个抽象类。四个接口没啥好说的,主要是AbstractList这个抽象类。AbstractList 中有两个内部类,默认实现了迭代器接口。属性:东西比较少,并且不复杂。构...

2020-03-27 17:01:45 148 3

空空如也

空空如也

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

TA关注的人

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