自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图解java.util.concurrent源码 (八)LinkedBlockingQueue

引言上一篇文章中分析了ArrayBlockingQueue的源码,说好这一篇文章中要继续分析LinkedBlockingQueue的源码并且对比他们的使用场景,在看这篇文章之前建议先看一下上一篇文章。LinkedBlockingQueue数据结构LinkedBlockingQueue底层是一个链表结构,入队时直接将节点连接在链表的后面,出队时直接将头结点剔除即可,核心的变量如下:ca...

2018-12-31 16:01:05 332

原创 图解java.util.concurrent源码 (七)ArrayBlockingQueue

引言在并发编程中经常需要进行生产者消费者之间的同步,此时我们最经常使用的同步工具就是有界阻塞队列(BlockingQueue)了,这篇文章和下一篇文章将分别分析最经常使用的两个有界队列,ArrayBlockingQueue和LinkedBlockingQueue的原理,然后对比他们的性能以及使用场景。BlockingQueue接口BlockingQueue接口定义了juc中阻塞队列的标准...

2018-12-30 20:48:16 243

原创 图解java.util.concurrent源码 (六)CyclicBarrier (循环栅栏)

引言上一篇文章提到,CountDownLatch不支持重置计数,如果你有反复重置计数的需求的话,最好使用CyclicBarrier。CyclicBarrier的中文名叫做"循环栅栏",能够让n个线程都到达同步点之后再让他们开始运行,之后CyclicBarrier就会重新计数,这个过程可以反复进行,甚至还可以在到达同步点与重新运行之间插入一段代码(叫做barrierAction)。Demo...

2018-12-25 00:58:57 323 2

原创 图解java.util.concurrent源码(五) CountDownLatch

引言今天分享一个比较简短一些的源码,那就是concurrent包中我们经常使用的CountDownLatch同步器,"latch"在英文中也是锁的意思,翻译成中文就是“倒数锁”,当你调用了这个类型对象中的await方法后,必须要等待这个锁倒数到0,才能继续运行。这个类的源码非常短,因为其实它就是对AQS共享模式的一个简单实现而已,如果你还不理解AQS的话,可以去看看我这个系列的第一篇文章和第...

2018-12-23 21:38:17 212

原创 提升并发程序性能(tps/qps)的几个技巧总结

引言之前参加中间件比赛,以及一些日常开发的经验,在这里总结了一些提升程序性能(qps/tps)的技巧,持续更新。一些只适用与比赛而不适合实际工程的技巧我会用斜体 (only race) 标注1、减小锁的粒度案例:ConcurrentHashMap采用分段锁提升了并发时map的性能SkipList(跳表):跳表相比红黑树的优势就是,红黑树的一次插入删除操作经常会导致全局的调整,导致整棵树...

2018-12-16 15:06:48 4864

软件系统设计文档模板

完备的软件系统设计文档模板,包括静态体系设计,动态结构以及其他设计。

2018-03-22

DevOps傻瓜书 pdf

一本很好的学习DevOps的资料,IBM限量版,非常通俗易懂。

2018-03-22

数理统计教材-宗旭平著

宗旭平著作的数理统计教材,内容简洁明了,注重实践,能够帮助我们快速回顾数理统计知识

2018-03-21

空空如也

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

TA关注的人

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