红黑树和哈希表的区别
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大量采用哈希算法,可能和速度并发要求有关。总之,数据结构是网络安全最基础的学科。

相关内容

热门资讯

【第一资讯】“桂林字牌真的有挂... 您好:桂林字牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
今日重磅消息“大玩家福建麻将有... 今日重磅消息“大玩家福建麻将有挂吗?”(果然有透视挂)您好,大玩家福建麻将这个游戏其实有挂的,确实是...
【第一财经】“王者陕西麻将到底... 网上科普关于“王者陕西麻将有没有挂”话题很是火热,小编也是针对王者陕西麻将作*弊开挂的方法以及开挂对...
今日重磅消息“兴动竞赛有没有挂... 网上科普关于“兴动竞赛有没有挂”话题很是火热,小编也是针对兴动竞赛作*弊开挂的方法以及开挂对应的知识...
今日重大发现“南通长牌辅助器?... 家人们!今天小编来为大家解答南通长牌透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很...
今日重大通报“新蛮王牛牛有挂吗... 有 亲,根据资深记者爆料新蛮王牛牛是可以开挂的,确实有挂(咨询软件无需打...
最新引进“神皇牛牛怎么装挂?”... 最新引进“神皇牛牛怎么装挂?”(透视曝光猫腻)您好,神皇牛牛这个游戏其实有挂的,确实是有挂的,需要了...
【今日要闻】“飞鹰牛牛有挂吗?... 有 亲,根据资深记者爆料飞鹰牛牛是可以开挂的,确实有挂(咨询软件无需打开...
今日重大发现“新毛豆互娱是不是... 家人们!今天小编来为大家解答新毛豆互娱透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...
终于了解“六瓣数字消有没有挂?... 终于了解“六瓣数字消有没有挂?”(太坑了原来有挂)您好,六瓣数字消这个游戏其实有挂的,确实是有挂的,...