特点:有序链表实现,无锁实现,value不能为空,层级越高跳跃性越大,数据越少,理论上查询变快。 新的node是否抽出来作为index,随机决定; index的level由随机数决定(随机数比特位连续为1的数量) 每层的元素,headIndex固定为所有node中最小的 查找数据时,按照从上到下,从 ...
分类:
其他好文 时间:
2019-01-13 21:08:03
阅读次数:
147
Kibana简介: Kibana可视化界面 Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。 你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。 你可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。 ...
分类:
其他好文 时间:
2018-12-31 17:30:25
阅读次数:
201
1. 背景 go代码中要实现异步很简单,go funcName()。 但是进程需要控制协程数量在合理范围内,对应大批量任务可以使用“协程池 + 无锁队列”实现。 2. golang无锁队列实现思路 Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据 ...
分类:
编程语言 时间:
2018-12-31 12:19:27
阅读次数:
383
阅读前阅读以下参考资料,文章图片或代码部分来自与参考资料 概览 一张图了解一下java锁. 各种锁 为什么要设置锁的等级 jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。锁主要存在四中状态,依次是:无锁状态、偏向锁状态、轻量级... ...
分类:
编程语言 时间:
2018-12-28 20:46:34
阅读次数:
306
在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue接口! ConcurrentLinkedQueue: 是一个适用于高并发场景下的队列,通过无锁的方式,实现了高并发 ...
分类:
其他好文 时间:
2018-12-26 13:29:27
阅读次数:
172
无锁队列 介绍 在工程上,为了解决两个处理器交互速度不一致的问题,我们使用队列作为缓存,生产者将数据放入队列,消费者从队列中取出数据。这个时候就会出现四种情况,单生产者单消费者,多生产者单消费者,单生成者多消费者,多生产者多消费者。我们知道,多线程往往会带来数据不一致的情况,一般需要靠加锁解决问题。 ...
分类:
其他好文 时间:
2018-12-23 17:53:55
阅读次数:
224
关于 Java 的技术干货,从以下几个方面汇总。 Java 基础篇 Java 集合篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 Java 工具篇 Java 书籍篇 Java基础篇 8张图带你轻松温习 Java 知识 Java父类强制转换子类原则 一张图搞清楚 Ja ...
分类:
编程语言 时间:
2018-12-18 19:33:34
阅读次数:
197
图解Disruptor框架(一):初识Ringbuffer 概述1、 什么是Disruptor?为什么是Disruptor?Disruptor是一个性能十分强悍的无锁高并发框架。在JUC并发包中,号称是性能最好的ArrayBlockingQueue(简称:ABQ),在Disruptor的面前,也只能... ...
分类:
其他好文 时间:
2018-12-18 00:03:03
阅读次数:
160
本文是关于并发共享数据的一些杂谈, 就是一时回忆起这方面的东西然后记录下来...... 并发的竞争主要是涉及到数据的写操作,如果所有的线程单单是读操作,不会对共享数据产生竞争。 并发的访问共享数据,竞争的bug会随着时间和数据的规模越大而增大。很难排查,所以在开发并发性程序时,需要使用好并发的同步与 ...
分类:
其他好文 时间:
2018-12-15 00:58:41
阅读次数:
159
为了性能与使用的场景,Java实现锁的方式有非常多。而关于锁主要的实现包含**synchronized关键字**、**AQS框架下的锁**,其中的实现都离不开以下的策略。
分类:
编程语言 时间:
2018-11-14 19:03:08
阅读次数:
125