前言
今天学习了Disruptor,今天接到了一个公司的二面,这个二面都是在深挖项目和询问我的写在简历上的一些事比如你逻辑很强体现在哪个方面,你说你阅读了很多源码你能挑一个说一下他的特点吗。
二面也是过了,晚上8点的时候接到了HR小姐姐的面试,态度很好生怕我不入职,给的福利还行。这也是我拿到off的第5家公司了。都是小公司,没办法大公司不收我简历。
1.Disruptor 高性能队列的学习
他是一个基于内存的队列,有界无锁队列,对比Java中的一些阻塞队列性能不要太好。太快了!!真受不了QAQ。
1.核心核心概念
1.数据结构(环形数组)
用数组模拟为一个环形的数组,当写满了就从0位置再开始写
2.Sequence序号
在这什么都需要这个东西,当读的时候会去哪序号判断当前到底读到哪一个序号了,然后去对应序号拿数据。写的时候就也要拿到下一个写的序号,然后去序号去覆盖当前已经被读过就覆盖。还有就是他如何保住线程安全的
序号屏障这个东西可以控制以上生产者消费者拿信号,如果当前数据没被消费那么你肯定就写不了吗,他就进行等待,等待的策略呢就是可以自己配置如(自旋、阻塞、或者让出cpu、或者折中策略)。
3.Wait Strategy等待策略的配置
就是以上和需要屏障一起用的东西,配置等待策略的。
4.Event 是环形数组中放的元素
我们的东西都得被Event包装然后在放入数组当中
5.EventHandler这个就是每一个消息的处理器
6.预处理机制
当使用这个队列的时候,它会自己先用Event把这个队列填满,这个可以避免GC不用重复去删除和添加了,我们只需要改变他Event中包装我们对象的指针就行了。
这个队列的使用我就不过多的讲解了,主要是电脑没电了。QAQ