自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (12)
  • 收藏
  • 关注

原创 深入理解Disruptor

Disruptor是LMAX公司开源的一个高效的内存无锁队列,一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件-监听模式的实现,直接称disruptor模式。disruptor最大特点是高性能,其LMAX架构可以获得每秒6百万订单,用1微秒的延迟获得吞吐量为100K+。理解Disruptor的原理,可以帮助我们更好的理解内存无锁,CAS,volatile,缓冲行等并发原理。 本文主要从以下方面介绍disruptor:1、Disruptor概念

2021-10-28 12:17:39 217

原创 Disruptor(六)性能比较

上一章 DSL相关实战,本文为了直观地感受 Disruptor 有多快,设计了一个性能对比测试:Producer 发布 100 万次事件,从发布第一个事件开始计时,捕捉 Consumer 处理完所有事件的耗时。测试用例在 Producer 如何将事件通知到 Consumer 的实现方式上,设计了三种不同的实现:Producer 的事件发布和 Consumer 的事件处理都在同一个线程,Producer 发布事件后立即触发 Consumer 的事件处理;Producer 的事件发布和 Consumer

2021-10-28 12:14:38 393

原创 Disruptor(五)DSL相关实战

上一章 主要介绍了多个生产者如何向RingBuffer数据写入数据,本文主要讲解使用Disruptor的DSL演示生产者和消费者的数据交换,和以往的线程间通信不同,disruptor使用消息传递的方式,通过RingBuffer进行线程间的数据传递和通信,下面分别从一对一和多对一的模型进行讲解。下面主要通过计算区间[0 , 100000000)中的所有数值相加为例子讲解Disruptor中的dsl使用。1、一对一一个生产者和一个消费者之间进行数据传递,使用disruptor主要涉及到RingBuffer

2021-10-28 12:06:11 363

原创 Disruptor(四)RingBuffer多生产者写入

上一章主要介绍了单个生产者如何向RingBuffer数据写入数据,如何不要让Ring重叠,写入后通知消费者,生产者一端的批处理,以及多个生产者如何协同工作,本章主要介绍多生产者向RingBuffer数据写入数据。1、多生产者MultiProducerSequencer申请下一个节点和单生产者不同的是在next方法中会直接通过cursor.compareAndSet(current, next)设置生产者的游标cursor的sequence。大家很可能会问设置了生产者的游标后,没有提交数据之前,多生产者

2021-10-28 12:00:27 973

原创 Disruptor(三)RingBuffer单生产者写入

上一章主要介绍了消费者从RingBuffer读取数据,本章主要介绍单个生产者如何向RingBuffer数据写入数据。在RingBuffer数据写入过程中如何不要让Ring重叠,写入后通知消费者,生产者一端的批处理,以及多个生产者如何协同工作。在RingBuffer写入数据的过程涉及到两阶段提交(two-phasecommit)1)生产者需要申请buffer里的下一个节点。2)当生产者向节点写完数据,需要调用调用publish发布数据。1、单个生产者SingleProducerSequencer数据写

2021-10-28 11:36:01 619

原创 Disruptor(二)RingBuffer读取

上一章主要介绍Ring Buffer的数据结构,本章主要讲解如何使用Disruptor从Ring Buffer中读取数据。1、消费者通过ProcessingSequenceBarrier读取数据能够读取数据的前提是数据已经写入到Ring Buffer中,关于数据的写入,后面一章节会详细讲解。RingBuffer的元素的大小是2的n次方(上面ringBufferSize为8,从序号0开始)。消费者(Consumer)是一个想从RingBuffer里读取数据的线程,它可以通过访问ProcessingSe

2021-10-28 11:31:43 694

原创 Disruptor(一)Disruptor概念和RingBuffer数据结构

Disruptor是LMAX公司开源的一个高效的内存无锁队列。谈到并发程序设计,有几个概念是避免不了的。1、锁: 锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。用户态的锁虽然避免了这些问题,但是其实它们只是在没有真实的竞争时才有效。2、CAS: CAS的涵义不多介绍了。使用CAS时不像上锁那样需要一次上下文切换,但是也需要处理器锁住它的指令流水

2021-10-28 11:31:13 686

原创 IntelliJ IDEA 代码格式化,快捷键

IntelliJ IDEA 代码格式化,快捷键 【常规】【调试部分、编译】【重构】【查找】【VCS】【it代码块】一键格式化代碼: Ctrl+Alt+L全局搜索替换:ctrl+shift+r强大的搜索功能,shift+shift (无论您想要搜啥都能找到)ctrl+shift+R==搜索类 CTRL+N:按照类名搜索类【常规】Ctrl+Shift + Enter,语句完成|Alt+Enter 代码提示完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shi

2021-10-08 18:17:45 2603

chrome_installer-32.exe

谷歌浏览器安装

2021-09-27

docker知识.zip

Docker的基本概念相关知识

2021-08-20

氚云-低代码应用快速开发平台.pdf

氚云-低代码应用快速开发平台.pdf

2021-08-20

蚂蚁金服 P6 面试分享.txt

朋友准备3个月以上的的真实面试分享,绝对值; 蚂蚁金服面试分享 第一面10.4(电话面试) 1.自我介绍 2.项目情况: 1> 选择最为熟悉的一到两个项目说明,提及该项目中的难点问题,以及如何针对该项目的开展 2> 为什么做这个项目(避免被动安排这个话题) 3> 解释项目中遇到的难点是如何攻克,最难的点是什么。 3.基础模块考察(面试官问) 1> 模块化的好处 2> http协议 3> HashMap和ConcurrentHashMap的区别,以及两者的优缺点。。。。。。。。 。。。。。。。。。。。。。。。。。。。。。。。。。(详见完整版)

2021-08-20

面试谈薪资的技巧与准则(求职必备).docx

面试谈薪资的技巧与准则(求职必备) [面试题] 面试谈薪资待遇的关键问题辅导 [面试题] 面试的第四类问题:薪资待遇福利 [面试经验] 面试时巧妙谈薪资的万金油句子 面谈薪资11条戒律 薪资面试 HR决定不了你的薪资(IBM和微软工资策略有何不同) 把薪资谈到点子上 外企招聘用英语谈薪资待遇经典五句 识破薪资把戏有办法

2021-08-20

SpringCloud 脑图.xmind

SpringCloud 较为全面的脑图

2021-08-14

java大神进阶之路.pdf

java大神进阶之路,八大阶段(仅为方向指导,仅供参考)

2021-08-14

tomcat优化配置.xlsx

tomcat常规优化配置,有相关解释,超实用。

2021-08-14

如何从菜鸟到熟手—人事基础入门.pdf

新入职或即将入职从事 人事相关工作的人员(超赞资源!)

2021-08-13

VideoDownloader.rar

视频下载插件–Video Downloader for Chrome 1、可以从你喜欢的网站下载任何在线视频。无论是小的视频网页还是大的视频网站都可以进行下载。 2、没有更多的延迟可以在线观看视频,下载者的进化已经到来,这个扩展将成为你最喜欢的下载器。 3、扩展非常容易使用。你只需要点击Chrome浏览器的扩展图标,几秒钟内你就可以开始下载视频到你的电脑上,扩展是完全免费的,安全的,快速的,容易添加到Chrome浏览器。 4、该插件下载比其他的下载视频插件更快更容易。而且你可以同时下载多个视频。 5、下载任何在线视频格式,如。flv视频,mp4, avi, asf, mpeg等。 6、轻松,快速,安全,轻松。而且简单易上手,操作不困难。

2021-08-05

空空如也

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

TA关注的人

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