简要介绍红黑树的删除操作方法,并结合JDK TreeMap源码进行分析。 ...
分类:
其他好文 时间:
2019-11-23 16:03:36
阅读次数:
72
1. 简介 HashMap是一个哈希表,线程不安全, 唯一, 可重复,允许 和`value`为null。遍历时是无序的。 底层结构是基于链表散列,也就是数组+链表。数组也被称为哈希桶,桶里面就装着链表,链表中的每个节点,就是哈希表中的每个元素。 在JDK8中,当链表长度达到8的时候,就会转为红黑树。 ...
分类:
编程语言 时间:
2019-11-22 23:47:18
阅读次数:
73
TreeSet 基于 TreeMap 实现,TreeMap 基于红黑树实现 特点: 有序 无重复 添加、删除元素、判断元素是否存在,效率比较高,时间复杂度为 O(log(N)) 使用方式: TreeSet 默认构造方法,调用 add() 方法时会调用对象类实现的 Comparable 接口的 com ...
分类:
其他好文 时间:
2019-11-22 10:42:59
阅读次数:
107
一、MySQL架构 第一层,即最上一层,所包含的服务并不是MySQL所独有的技术。它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等。 第二层值得关注。这是MySQL的核心部分。通常叫做 SQL Layer。在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完 ...
分类:
数据库 时间:
2019-11-20 21:27:01
阅读次数:
109
跳跃表实现简单,空间复杂度和时间复杂度也较好,Redis中使用跳表而不是红黑树。 实现参考了: "跳跃列表 维基百科,自由的百科全书" 《Redis设计与实现》第五章 跳跃表 Redis源码3.0分支src/t_zset.c等文件 插入时的核心逻辑: 1. 找到插入的位置 2. 随机得到新插入节点的 ...
分类:
其他好文 时间:
2019-11-20 16:54:47
阅读次数:
71
红黑树第一部分:介绍 红黑树是一种自平衡的二叉搜索树(BST),其中每个节点遵循以下规则。 每个节点都有红色或黑色 树的根总是黑色的 没有两个相邻的红色节点(红色节点不能有红色的父节点或红色的子节点) 从节点(包括根)到其任何子代NULL节点的每条路径都具有相同数量的黑色节点 为什么要用红黑树 大多 ...
分类:
其他好文 时间:
2019-11-19 13:56:40
阅读次数:
80
1.实现结构是hash表bucket,底层就是node,也有人称为段(segment) 2.put,通过对key执行hashcode()找到对应对索引,当hashcode相同是发生“碰撞”,采用链表方式存储,jdk8在量大时引入红黑树数据结构 3.get,通过对key执行hashcode()找到对应 ...
分类:
其他好文 时间:
2019-11-19 01:13:45
阅读次数:
67
要了解红黑树首先需要知道什么是二叉树。由树的定义可以看出,树的定义使用了递归的方式。递归在树的学习过程中起着重要作用,如果对于递归不是十分了解,建议先看看递归算法。 参考博文:https://www.jianshu.com/p/bf73c8d50dc2 ...
分类:
其他好文 时间:
2019-11-18 20:43:59
阅读次数:
74
```java /** * tree桶方法. * 一般用作桶结构变更后,将桶中过长的链表转换为红黑树 */ final void treeifyBin(Node[] tab, int hash) { // n - 代表参数tab长度 // index - tab中表示hash的下标 // hash ... ...
分类:
其他好文 时间:
2019-11-18 18:11:23
阅读次数:
140
编者注:Java nio 空轮询bug也就是Java nio在Linux系统下的epoll空轮询问题。 epoll机制是Linux下一种高效的IO复用方式,相较于select和poll机制来说。其高效的原因是将基于事件的fd放到内核中来完成,在内核中基于红黑树+链表数据结构来实现,链表存放有事件发生 ...
分类:
编程语言 时间:
2019-11-16 19:25:41
阅读次数:
105