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

大朗仿做网站北京全网营销推广公司

大朗仿做网站,北京全网营销推广公司,安徽省建设工程网上服务平台,dw自己做网站需要什么意思【C】深入理解 unordered 容器、布隆过滤器与分布式一致性哈希 在日常开发中,无论是数据结构优化、缓存设计,还是分布式架构搭建,unordered_map、布隆过滤器和一致性哈希都是绕不开的关键工具。它们高效、轻量,在性能与扩展性方面…

【C++】深入理解 unordered 容器、布隆过滤器与分布式一致性哈希

在日常开发中,无论是数据结构优化、缓存设计,还是分布式架构搭建,unordered_map、布隆过滤器和一致性哈希都是绕不开的关键工具。它们高效、轻量,在性能与扩展性方面发挥着重要作用。本文将依次从这三者的原理、实现与应用场景进行讲解。


一、STL 中的 unordered_* 容器

C++ STL 提供了四种以 unordered_ 为前缀的容器:unordered_mapunordered_setunordered_multimapunordered_multiset,它们的底层实现均为哈希表(Hash Table)。

1. 原理简述

哈希表是一种通过哈希函数(Hash Function)将 key 映射为数组索引的位置来快速访问元素的数据结构。其主要特点是:

  • 查询、插入、删除时间复杂度近似为 O(1)
  • 使用负载因子衡量存储密度,过大时容易产生冲突

2. 哈希冲突处理

  • 链表法:将冲突的元素以链表形式链接(如 Java 8 后用红黑树优化长链)
  • 开放寻址法:在数组内探查空位进行插入,如线性探查、双重哈希等

3. 性能优化

合理选择 Hash 函数(如 MurmurHash、SipHash),可以提升散列质量,降低碰撞概率。例如有,murmurhash2是最常用的, SipHash 被用于 Redis 和 Rust 的 HashMap 实现中,cityhash 等,都具备强随机分布性


二、布隆过滤器(Bloom Filter)

布隆过滤器是一种概率型数据结构,用于判断某个元素“可能存在”或“一定不存在”。

1. 结构组成

  • 一个长度为 m 的位图(bit array)
  • k 个独立的哈希函数

2. 工作原理

  • 插入:使用 k 个哈希函数将元素映射到 k 个位上,置为 1
  • 查询:判断对应的 k 位是否全为 1,若是,则“可能存在”;若有 0,则“一定不存在”

3. 特性

  • 高效:插入和查询的时间复杂度均为 O(k)
  • 节省空间:不存储元素本身
  • 存在误判(False Positive),但可以通过公式控制误差率
  • 不支持删除:因为无法确认哪一个元素设置了某个位

4. 应用场景

  • 缓存穿透拦截
  • 防止爬虫重复访问
  • 黑名单过滤(如垃圾邮件地址)
  • 数据库查询预判,减少磁盘 IO

5. 参数设计公式

例如给定期望元素个数 n=4000 和假阳率 p=1e-9

  • 最佳位图大小:

    m = c e i l ( ( n ∗ l o g ( p ) ) / l o g ( 1 / p o w ( 2 , l o g ( 2 ) ) ) ) m=ceil((n∗log(p))/log(1/pow(2,log(2)))) m=ceil((nlog(p))/log(1/pow(2,log(2))))

  • 最佳哈希函数个数:

    k = r o u n d ( ( m / n ) ∗ l o g ( 2 ) ) k=round((m/n)∗log(2)) k=round((m/n)log(2))

可使用在线工具辅助计算:https://hur.st/bloomfilter/


三、分布式一致性哈希(Consistent Hashing)

一致性哈希是解决分布式缓存或存储系统中节点变动导致大量数据迁移问题的经典算法。

1. 原理概述

  • 将哈希空间组织成一个环(0 ~ 2³² - 1)
  • 对每个服务器节点和数据 Key 分别进行哈希映射,落在环上的某点
  • 顺时针查找第一个节点,即为该 Key 的存储节点

2. 优势

  • 节点变动时,只影响相邻的数据
  • 极大减少了数据迁移范围,提高系统稳定性

3. 均衡性优化 —— 虚拟节点

为避免节点分布不均导致的负载倾斜,使用虚拟节点策略:

  • 每台服务器映射多个虚拟节点
  • 例如:hash(IP:PORT:编号) 映射出多个点
  • 数据分布更均匀,提升系统负载均衡能力

新增节点操作:

  1. 在使用虚拟节点的一致性哈希系统中,新增一个节点时,需要为该节点生成多个虚拟节点(如 NodeX#0、NodeX#1 等),并将这些虚拟节点通过哈希函数映射到一致性哈希环上的多个位置,随后插入到已有的有序哈希环结构中。
  2. 每个新加入的虚拟节点将“接管”它在环上前一个虚拟节点与自身之间的哈希区间内的数据,也就是说,该区间原本由其他节点负责,现在需要将这些数据迁移至新节点。为了完成数据的迁移,系统需扫描这些哈希区间内的数据项,并将它们从原节点移动到新节点对应的实际服务器上。

4. 应用场景

  • 分布式缓存系统(如 Redis Cluster)
  • 数据库分库分表
  • 负载均衡策略

总结

技术核心结构特点典型应用
unordered_*哈希表O(1) 访问,处理冲突STL 快速查找容器
布隆过滤器位图 + 多个哈希函数空间效率高,有误判缓存穿透、爬虫去重、黑名单过滤
一致性哈希环形哈希空间数据迁移小,支持节点动态变化分布式缓存、数据库路由
http://www.dtcms.com/wzjs/205729.html

相关文章:

  • 中国最好的做网站高手加强服务保障 满足群众急需需求
  • 公司营销网站建设宁波seo网络推广多少钱
  • 优购物官方网站化妆品企业网站建设门户
  • 佛山的网站建设公司网络营销专业课程
  • 西安做网站建设哪家好微博推广方案
  • 芜湖 网站建设sem是什么牌子
  • 有域名之后怎么做网站免费下载百度并安装
  • 东莞长安做网站公司做一个网站的步骤
  • 珠海自适应网站北京最新疫情情况
  • 网站建设厦门同安宣传广告怎么做吸引人
  • 妈妈教儿子做愛的网站个人推广app的妙招
  • 深圳创业补贴政策2024最新旺道seo怎么优化网站
  • 做网站首页图的规格外贸网站推广方法之一
  • 找我家是做的视频网站百度账号客服人工电话
  • 免费建网站入驻长春百度关键词优化
  • 网站工程就业前景怎样在百度上发布信息
  • 专做正品的护肤品网站sem专员
  • wordpress可以当网盘优化网站做什么的
  • 企事业单位网站建设的毕业论文网页开发
  • 免费的企业网站源码网络推广怎样做
  • 房产网站电商怎么做百度指数怎么算
  • 成都网站建设推来客seo的优化流程
  • 网站开发江西网站服务费一年多少钱
  • 小程序在线制作模板网站seo站外优化
  • 做微网站中国营销网官网
  • 怎么做推广和宣传企业做网站网站建设哪家好公司
  • 网站宽度郑州网站推广多少钱
  • 建立网站可行性百度官方营销推广平台
  • 网站制作白山seo
  • 什么网站可下载可做海报的图片中南建设集团有限公司