
源码解析
文章平均质量分 88
各类源码解析文章
Thomas & Friends
i need touch grass
展开
-
基于Redisson的联锁(MultiLock)
基于Redis的分布式MultiLock对象允许对Lock对象进行分组并将它们作为单个锁进行处理。每个RLock对象可能属于不同的Redisson实例。如果获取的Redisson实例MultiLock崩溃,那么它可能永远挂在获取状态。为了避免这种情况,Redisson维护了一个锁看门狗,它会在持有者Redisson实例处于活动状态时延长锁过期时间。默认情况下,锁定看门狗超时为30s,可以通过Config.lockWatchdogTimeout设置进行更改。原创 2023-08-22 16:31:41 · 2419 阅读 · 0 评论 -
解读 java 并发队列 BlockingQueue
BlockingQueue源码分析,包含ArrayBlockingQueue、LinkedBlockingQueue原创 2023-06-20 16:58:23 · 484 阅读 · 0 评论 -
基于AbstractQueuedSynchronizer之Condition源码分析
基于AQS的ConditionObject,分析Condition的源码,AbstractQueuedSynchronizer的源码分析也得了解本章内容原创 2023-06-19 10:53:48 · 300 阅读 · 0 评论 -
深入理解 Spring AutowireMode:实战演练 + 高质量解析
如果我们使用 BY_NAME 自动装配方式,那么 Spring 将会根据属性名称来查找 UserService Bean,并将其注入到 UserComponent 中。在这种情况下,我们需要手动指定要注入的 Bean 的名称或者使用 Qualifier 注解来明确指定要注入的 Bean。在 Spring 容器中,我们可以使用 @Autowired、@Resource 或 @Inject 等注解来自动注入 Bean 依赖,而 AutowireMode 就是用于指定这些注解的工作方式的。原创 2023-03-31 16:49:48 · 618 阅读 · 0 评论 -
@Transactional导致的循环依赖问题BeanNotOfRequiredTypeException
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'b': Unsatisfied dependency expressed through field 'a'; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean n原创 2023-03-20 14:50:31 · 565 阅读 · 0 评论 -
Redis分布式锁的手动实现
redis分布式锁的手动实现原创 2022-10-25 19:06:03 · 1535 阅读 · 0 评论 -
基于Redisson的可重入分布式锁
可重入锁(Reentrant Lock)基于Redis的Redisson分布式可重入锁RLock java对象实现了java.util.concurrent.locks.Lock接口。RLock lock = redisson.getLock("qhyu");// 最常见的使用方法lock.lock();lock.unlock();大家都知道,如果负责存储这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态,为了避免这种情况发送,Redisson内原创 2021-12-03 15:37:12 · 2066 阅读 · 0 评论 -
鹅厂一面ReentrantLock和AQS差点一套带走我
文章目录序章简介使用ReentrantLock类使用ReentrantLock实现同步使用Condition实现等待/通知实现生产者消费者模式公平锁和非公平锁源码解析FairSynclock加锁tryAcquire获取锁hasQueuedPredecessors有没有排队的前辈Node队列数据结构addWaiter入队、排队acquireQueued入队之后做了什么以上源码分析完之后的疑惑unlock解锁tryRelease尝试释放锁unparkSuccessor唤醒接班人(下一个可以需要唤醒的结点)can原创 2021-09-13 23:36:32 · 282 阅读 · 0 评论 -
ConcurrentHashMap JDK1.7 源码解析
构造函数默认的初始容量为16,加载因子为0.75,默认的并发级别也为16,对比1.7中的HashMap,对这个并发级别的作用产生疑问,现在这里提出一个问题,DEFAULT_CONCURRENCY_LEVEL有啥用?static final int DEFAULT_INITIAL_CAPACITY = 16;static final float DEFAULT_LOAD_FACTOR = 0.75f;static final int DEFAULT_CONCURRENCY_LEVEL = 16;/.原创 2021-08-18 12:19:02 · 391 阅读 · 0 评论 -
JDK1.7的HashMap源码解析
前言1、jdk1.7的hashMap数据结构是怎样的?2、怎么扩容的?扩容的过程3、HashMap在jdk1.7的时候有个循环链表的问题。4、快速失败机制是什么玩意?5、为什么容量是2的幂次方?6、为什么使用头插法?用尾插法行不行?整个jdk1.7的hashMap要关注的问题并不多,结合源码来一起解决这几个问题。正文jdk1.7的hashMap数据结构是怎样的?回答:准确的说是数组加单向链表,单向链表体现在Entry对象中只有Entry<K,V> next,只有next,原创 2021-07-05 16:15:53 · 236 阅读 · 0 评论 -
史上最严谨的 JDK 1.8 HashMap 源码解析
首先提出一些问题,我们带着这些问题去分析源码HashMap的数据结构是什么样子的?数组+链表+红黑树hash冲突是如何解决的?为什么hashmap中的链表需要转成红黑树根据对冲突的处理方式不同,哈希表有两种实现方式,一种开放地址方式(Open addressing),另一种是冲突链表方式(Separate chaining with linked lists)。Java HashMap采用的是冲突链表方式。链表长度超过8,并且table.lenth大于64转为红黑树,主要就是链表过长..原创 2021-01-05 14:59:56 · 219 阅读 · 0 评论 -
数据结构之红黑树(Red/Black Tree)
1、前言我们知道java8中hashmap的数据结构为数组+链表+红黑树,看到很多资料里面写的红黑树的内容有点不对,所以结合我给出的GIF图来熟悉下红黑树的数据结构2、红黑树的性质结点是红色或黑色根节点必须是黑色每个叶子结点都是黑色(注意:每个叶子结点都是Null)红色结点不能够连接在一起,也就是所有路径都不能有两个连续的红色结点任意一个结点到每个叶子结点的所有路径中所包含的黑色结点数量是相等的3、构建红黑树根结点为黑色,也就是说第一个元素插入的时候是黑色的,后续的都为红色。原原创 2020-12-30 14:32:37 · 420 阅读 · 0 评论 -
LinkedList源码解析-jdk1.8
LinkedList源码解析-jdk1.8从下面的UML类图可以得知,LinkedList继承了AbstractSequentialList抽象类,同时实现了List Deque Serializable Cloneable接口AbstractSequentialList:只支持按次序访问Deque:双向队列LinkedList与ArrayList的不同在于,ArrayList的实现是采用的时大小可变的数组,LinkedList采用的是双向链表的实现,基于链表的实现方式使得在插入核删除的效率比Ar原创 2020-12-29 15:35:30 · 200 阅读 · 0 评论 -
Java内存区域JVM内存模型详解
Java内存区域,JVM内存模型运行时数据区域java虚拟机在执行java程序的过程中会把它管理的内存划分为若干个不通的数据区域。 (图片来源于百度,侵权删)程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。由于java虚拟机的多线程是通过线程轮流切换并原创 2020-05-27 16:39:59 · 290 阅读 · 0 评论 -
ArrayList源码解析-跟着code注释Step by step
ArrayList源码解析数组介绍在java中当创建数组时会在内存中划分一块连续的内存,然后将数据顺序存储在连续的内存中。当需要读取数组中的数据时需要提供数组中的索引。在java中只有相同类型的数据才可以一起存储到数组中。因为数组在存储数据是按顺序存储的,存储数据的内存也是连续的,所以他的特点就是寻址读取数据比较容易,插入和删除比较困难。ArrayList源码分析构造方法,...原创 2020-04-28 09:35:54 · 348 阅读 · 1 评论