当前位置: 首页 > news >正文

Hash与布隆过滤器

hash 函数

映射函数  Hash(key)=addr ;hash 函数可能会把两个或两个以上的不同 key 映射到同一地址,这种情况称之为冲突(或者  hash 碰撞)

 

hash的优势

  • 计算速度快
  • 强随机分布(等概率、均匀地分布在整个地址空间)
  • murmurhash1,murmurhash2,murmurhash3,siphash( redis6.0 当中使用,rust 等大多数语言选用的 hash 算法来实现  hashmap ),cityhash 都具备强随机分布性
  • siphash 主要解决字符串接近的强随机分布性

负载因子

  • 数组存储元素的个数 / 数组1长度;用来形容散列表的存储密度;负载因子越小,冲突概率越小,负载因子越大,冲突概率越大。

冲突处理

链表法

引用链表来处理哈希冲突;也就是将冲突元素用链表链接起来。

开放寻址法

将所有的元素都存放在哈希表的数组中,不使用额外的数据结构;一般使用线性探查的思路解决。

STL unordered_* 散列表实现

在 STL 中  unordered_map 、 unordered_set 、unordered_multimap 、 unordered_multiset  四兄弟底层实现都是散列表。

 

布隆过滤器

布隆过滤器是一种概率型数据结构,它的特点是高效地插入和查询,能确定某个字符串一定不存在或者可能存在。

原理

当一个元素加入位图时,通过 k 个 hash 函数将这个元素映射到位图的 k 个点,并把它们置为 1;当检索时,再通过 k 个 hash  函数运算检测位图的 k 点是否都为 1;如果有不为 1 的点,那么认为该 key 不存在;如果全部为 1,则可能存在。

应用场景

布隆过滤器通常用于判断某个 key 一定不存在的场景,同时允许判断存在时有误差的情况;

常见处理场景:① 缓存穿透的解决;② 热 key 限流;

http://www.hskmm.com/?act=detail&tid=35509

相关文章:

  • 2025 年最新推荐防火涂料厂家排行榜:涵盖膨胀型、非膨胀型、室内外及超薄厚型钢结构防火涂料,助选优质产品
  • 2025年安恒信息公司:深度解析AI与数据安全双轮驱动的技术护城河
  • C# Avalonia 16- Animation- SampleViewer - SimpleExample
  • 2025年安恒信息深度解析:AI与数据安全双轮驱动的技术演进全景
  • 习题-归纳定义原理
  • 对话式 AI 年度春晚:Convo AIRTE2025 全议程解锁
  • 博客的加载速度和大小的优化、优化再优化
  • 2025年10月中国宝宝辅食品牌推荐榜:深海去刺鱼领衔对比
  • 《51测试天地》电子杂志 第八十六期发布文章:打造基于 WebSocket + CDP 的 Selenium 替代方案
  • 实用指南:数字孪生背后的大数据技术:时序数据库为何是关键?
  • Qt和ffmpeg结合打造gb28181推流/支持udp和tcp被动以及tcp主动三种方式
  • 【每日积累】浅谈mvc,mvvm,mvp
  • Random VIMs
  • 66页习题
  • 【React系列】一文让你了解React中Component和PureComponent差异之分
  • DIY ChatGPT 一周狂揽 27k Star「GitHub 热点速览」
  • Active Directory安全技巧:FSMO角色管理与PowerShell查询
  • 【React系列】React.memo() vs useMemo()
  • 联合体与枚举
  • 【每日积累】javascript 一文弄懂eval
  • 量子计算25年发展历程与技术挑战
  • 腾讯云COS通过CDN加速配置指南 - 教程
  • 前端: 如何优化列表大批量的数据渲染
  • 【模块化解读】commonjs vs commonjs2 exports vs module.exports
  • 【GitHub每日速递 251021】一键将全新Arch安装变身超美现代Web开发系统!Omarchy太神了
  • 藏宝阁
  • [Mongodb]mongodb的安装以及增删改查
  • PHP 8.5 新特性 闭包可以作为常量表达式了
  • 【JavaScript-基础】split,splice,slice 三者的用法
  • 2025 代码源 CSP-S 模拟赛复盘