从物联网防火墙himqtt源码谈哈希和红黑树的应用场景区别
从物联网防火墙 himqtt 源码谈哈希和红黑树的应用 场景区别 himqtt 是首款完整源码的高性能 MQTT 物联网防火墙 - MQTT Application FireWall , C 语言编写,很多数据结构适合初学者收藏。 哈希和红黑树的详细教程很多,本文就不重复了,但初学者往往云里雾里,不知道实战项目该用谁,今天笔者就从结合 himqtt 的源码,从物联网安全角度来对比一下哈希数据结构和红黑树的应用场景。 一、哈希和红黑树基本原理 哈希( hash )也称散列,通过散列算法变成固定的输出到数组,所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。 红黑树的自旋是天才的设计,是一种特殊的平衡二叉树数据结构,特点也是从几十万的数据里面几步就能查找到,速度快。 二、物联网安全使用场景 首先 github 上下载源码, https://github.com/qq4108863/himqtt ,在 src\waf 目录有 hashmap.c 和 mqtt_rbtree.c ,分别是哈希和红黑树算法。 1 、速度对比 物联网可能是数百万设备联网,对高并发要求很大,所以,对网络安全产品第一要求的是性能和速度。总体来说,哈希查找速度会比红黑树快,而且查找速度基本和数据量大小无关,属于常数级别 ; 而 RB 树的查找速度是 log(n