个人简介

Echo Blog


江湖无名 安心练剑
  • JCIP-12-环形队列
    Q 是什么? 优势? 使用场景? 无锁队列怎么实现? 1.环形队列是什么 队列是一种常用的数据结构,这种结构保证了数据是按照“先进先出”的原则进行操作的,即最先进去的元素也是最先出来的元素.环形队列是一种特殊的队列结构,保证了元素也是先进先出的,但与一般队列的区别是,他们是环形的,即队列头部的上个元素是...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-11-二叉堆
    Q 是什么? 有什么用? 优势? 使用场景? 二叉堆 二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两种:最大堆和最小堆。 最大堆:父结点的键值总是大于或等于任何一个子节点的键值; 最小堆:父结点的键值总是小于或等于任何一个子节点的键值。 示意图如下: 二叉堆一般都通过”...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-10-优先级队列 Priority Queue
    相关学习 优先级队列 二叉堆 堆排序 延迟队列 Q 是什么? 怎么用 注意事项? 源码 优先级队列 我们知道队列是遵循先进先出(First-In-First-Out)模式的,但有些时候需要在队列中基于优先级处理对象。举个例子,比方说我们有一个每日交易时段生成股票报告的应用程序,需要处理大量数据...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-09-java 中 7 种阻塞队列 BlockingQueue 概览篇
    一些值得思考的问题 为什么要有阻塞队列? 什么是阻塞队列 优缺点 适用场景 实现思想+源码 个人启发 阻塞队列 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-08-生产者消费者模式
    生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 这个属于基础模式,代码可以参考 轻松学习多线程-06-Producer Consumer 模式 缓冲区改良 单单抽象出生产者和消费者,还够不上是生产...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-07-CopyOnWriteArrayList 详解
    问题 是什么? 有什么优缺点? 为什么性能高?原理是什么? 源码阅读 设计的启发 参考资料 《java 并发编程的艺术》 https://my.oschina.net/jielucky/blog/167198 https://blog.csdn.net/maoyuanming08...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-07-CopyOnWriteArraySet 入门使用及源码详解
    问题 是什么? 有什么优缺点? 为什么性能高?原理是什么? 源码阅读 设计的启发 CopyOnWriteArraySet 官方定义 CopyOnWriteArraySet 是一个使用内部CopyOnWriteArrayList进行所有操作的Set。 特性 因此,它具有相同的基本...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-07-java 从零实现 CopyOnWriteHashMap
    COW 的思想 思想的通用性 CopyOnWriteArrayList 和 CopyOnWriteArraySet 这种读写分离的思想是通用的。 今天就让我们用这种思想实现一个简单的工具:CopyOnWriteHashMap。 实践出真知 这个工具包都出来几十年了,还是用的人很少。 要学以致用,站在巨人的肩膀上, 自己实现一个 copyOnWriteMap 类定义 publ...
    2019-01-18 03:21:15 | Concurrency