海量数据过滤需要用到 Hash 过滤

海量数据一般指:垃圾邮箱地址、MAC 地址等

STM32 的 MAC 控制器中就有 Hash 过滤器

原理:

  • 将白名单中的数据,一条一条地和一个特定的随机数运算,比方说其中一条产生的结果是 1,6,13,16,29,34,36,49,就相应的把数组的这些位置 1;把所有的白名单都算一遍,Hash 表(STM32中是 64 位)中就被填入了若干个 1。
  • 之后收到一个地址,就让它跟上面那个随机数进行运算,得到的值看下相应的 Hash 表中这一位是否为 1,全都符合的话,说明这个地址有可能在白名单内。有一位不符合的话,说明这个地址肯定不在白名单内,直接丢弃。

参考:

布隆过滤器(Bloom Filter)详解——基于多hash的概率查找思想

海量数据处理利器之Hash——在线邮件地址过滤

《数学之美》第23章 布隆过滤器