红黑树和哈希表的区别
admin
2023-02-18 11:40:05
0

一、哈希和红黑树基本原理

哈希(hash)也称散列,通过散列算法变成固定的输出到数组,所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。
红黑树和哈希表的区别

红黑树的自旋是天才的设计,是一种特殊的平衡二叉树数据结构,特点也是从几十万的数据里面几步就能查找到,速度快。
红黑树和哈希表的区别

二、使用场景

1、速度对比
物联网可能是数百万设备或者用户联网,对高并发要求很大,所以,对网络安全产品第一要求的是性能和速度。总体来说,哈希查找速度会比红黑树快,而且查找速度基本和数据量大小无关,属于常数级别;而RB树的查找速度是log(n)级别。
红黑树查找和删除的时间复杂度都是O(logn),Hash查找和删除的时间复杂度都是O(1)。 如果红黑树的树高度不深如小于8,采用的是数字查找,两者性能没有太多的差异。
也就是并非所有的场景,哈希都比红黑树快,要看代码的优化程度。hihttps使用的linux高并发EPOLL模式事件管理,就是红黑树。

2、数据预知
静态数据,可以基本预知大小,用哈希。如t初始化的规则就几百条在可控范围内,另外TOPIC黑白名单、URL地址等也不会太多,也是用的哈希就可以了。
动态数据,如统计IP地址、任务调度、epoll高并发事件管理,无法判断多少,可能很少,也可能巨多,用红黑树更佳。当然,如果大概知道设备IP地址数量在一定范围,如只有几千,完全也可以用哈希。

3、内存消耗
对内存要求严格的地方,如嵌入式系统,用红黑树。红黑树占用的内存更小(仅需要为其存在的节点分配内存),而哈希事先就应该分配足够的内存存储散列表,浪费内存。
对内存消耗无所谓的地方,如服务器有巨大的内存,用哈希。哈希最大的缺点是内存分配得小,可能元素就会冲突,冲突的元素大于8个成链表,效率还不如红黑树。 Java 的hashmap就是把哈希和红黑树结合在以前的。当同一个hash值的节点数不小于8时,不再采用单链表形式存储,而是采用红黑树。

4 复杂程度
哈希更简单,红黑树算法复杂一点,不过这都不是事,大神早开源了很多稳定的版本。

三、应用场景总结
红黑树是有序的,哈希是无序的,根据项目需求来选择,阿里巴巴的很多项目用红黑树更多,笔者认为主要还是和内存有关,如果内存要求苛刻的项目,就用红黑树;如果内存足够大,牺牲内存换取更快的速度,哈希完全适合。
Hiihttps开源waf大量采用哈希算法,可能和速度并发要求有关。总之,数据结构是网络安全最基础的学科。

相关内容

热门资讯

进口马铃薯“逐颗检查”?岛内名... 海峡导报综合报道 新党籍台北市议员侯汉廷指控,民进党为配合“台美贸易协定(ART)”,放宽174项农...
燃气灶的火为什么会突然灭掉 原因是燃气灶的电池没有电了,需要拆掉电池盒更换一个新的电池;还有可能是燃气用完了,可以充值燃气;还有...
燃气灶的控制器坏了怎么修 控制器内部都是由复杂的电子元件组成的,所以当燃气灶的电子控制器坏了,一般都是需要直接更换燃气灶的控制...
燃气灶为什么外圈蓝火苗内圈红火... 燃气灶充分燃烧的情况下应该是呈蓝色火焰,这个时候产生的热能值最高,也最安全。出现“红火”主要是以下原...
燃气灶一用中间就没火是什么原因 原因可能是电池没电了,建议更换电池解决一下;还有就是点火针发方向可能倾斜,建议调整点火针的方向,对准...
燃气灶为什么外圈没火 原因可能是因为点火针位置不当,通常情况下点火针与火盖之间的距离控制在4至6毫米,且需要对准火孔,而且...
批民进党当局完全脱离民意,蓝营... 海峡导报综合报道 国民党台北市议员参选人李明璇6日提及台湾地区领导人赖清德以及台行政机构负责人卓荣泰...
五月天“宠己”正当时 【核心提示】消费是经济发展的晴雨表。如今,有人为一场演唱会奔赴一座城;有人心甘情愿为宠物买单;也有人...
全国智能化医疗器械标准化工作组... 【大河财立方消息】近日,市场监管总局批准筹建全国智能化医疗器械标准化工作组,由国家药监局负责管理。全...
中原追风记①丨风电“三大件”齐... 【开栏的话】风光无限的中国,有一个“追风”的河南。广袤的中原大地之上,无论田野与山间,巍然挺立着一道...