抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

redis简介 redis是一个开源,高性能,基于key-value的缓存存储系统,通过多种键值数据类型来适应不同应用场景的缓存与存储需求。redis是Remote Dictionary Server(远程字典服务器)的缩写,允许其他应用使用TCP协议读写字典的内容。目前redis提供5种键值数据类型。 string(字符串类型) hash(散列/哈希类型) list(列表类型) set...

TCP协议 传输控制协议 TCP(Transmission Control Protocol)–提供面向连接的,可靠的数据传输服务,位于运输层。 TCP可靠传输的精髓:TCP连接的一方A,由操作系统动态随机选取一个32位长的序列号(Initial Sequence Number),假设A的初始序列号为1000,以该序列号为原点,对自己将要发送的每个字节的数据进行编号,1001,1002,...

红黑树简介 红黑树一种自平衡的二叉树,先了解一下什么是二叉树把。 二叉树的性质 在二叉树的第I层上最多有2i-1(i>=1) 二叉树中如果深度为K,那么该二叉树最多有2k-1个节点(k>=1) n0 = n1+1 其中n0表示度数为0的节点数,n1表示度数为2的节点数 在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]是向下取整 ...

布隆过滤器简介 布隆过滤器是一个位数组和哈希函数实现的一种数据结构,它相对于其他我们平常用的List,Set等更节省内存空间,不过它存在误判概率。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。 例如申请100万个元素位数组只用10^6/8 = 125000 Byte = 125000/1024 kb ≈ 122kb 的空间,特别节省空间。...

PriorityBlockingQueue简介 PriorityBlockingQueue是一种优先级,无界堵塞,线程安全的队列,每次出队返回优先级高或低的元素,内部通过堆实现。 源码详解属性分析123456789101112131415161718192021//队列默认大小 private static final int DEFAULT_INITIAL_CA...

堆的定义 堆在逻辑上是一种完全二叉树,物理结构上是一维数组,按照根节点大小分为最大堆和最小堆,如下图。最小堆:所有节点的左右孩子节点都大于或者等于父节点最大堆:所有节点的左右孩子节点都小于或者等于父节点 补充:完全二叉树的性质如果有一颗有n个节点的完全二叉树的节点按层次序编号,对任一层的节点i(0<=i<=n)有(注意i的取值)1.如果i=0,则节点是二叉树的根,无双亲,如果...

ArrayBlockingQueue简介

ArrayBlockingQueue是一个有界,堵塞/非堵塞线程安全的队列。它是基于数组实现的,内部通过ReentrantLock独占锁来控制入队出队操作,通过两个条件变量控制队列为空为满的情况。

ArrayBlockingQueue

LinkedBlockingQueue简介 LinkedBlockingQueue类是堵塞/非堵塞(看你用啥方法),有边界线程安全队列。由下类图可以看到他的基本实现。它也是由单向链表实现,也是分别由两个Node指向head和tail,内部还有初始量为0的AtomicInteger的原子变量来计算队列数量。还有两个ReentrantLock独占锁来控制元素入队和出队的原子性。 源码详解成员...

ConcurrentLinkedQueue简介

ConcurrentLinkedQueue是一种无边界非堵塞线程安全的队列,底层通过单向链表实现,线程安全通过CAS操作实现。下图是它的类图关系,它继承了AbstractQueue类,实现Queue接口,具有Queue的基本特性。

ConcurrentLinkedQueue

该类内部通过两个volatile类型的Node节点来分别指向队列的首,尾节点。

java常用锁类型 常见的锁大致可以分为:乐观锁,悲观锁,排他锁,共享锁,分段锁,自选锁,公平锁,非公平锁等。。今天来学基于CAS非加锁实现的乐观锁 ReentrantLock锁 ReentrantLock类是一种可重入,公平/非公平,独占锁,它于synchronized具有相同的功能和语义,但是它更强大,它支持中断,超时等操作。Sync是ReentrantLock的内部类,他的两个子类分...