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

数据离不开哈希

一、哈希核心概念

1. 哈希函数(Hash Function)
  • 作用:将任意大小的输入数据映射为固定大小的输出值(哈希值)。
  • 特性
    • 确定性:相同输入 → 相同输出
    • 高效性:快速计算
    • 均匀性:输出值应均匀分布(减少冲突)
    • 抗碰撞性:难以找到不同输入但相同输出
  • 常见哈希函数:MD5、SHA-256、MurmurHash

在这里插入图片描述


二、哈希表(Hash Table)数据结构

1. 结构组成

在这里插入图片描述

  • 桶数组:存储数据的连续内存空间
  • 哈希函数index = hash(key) % array_size
  • 操作
    • 插入:计算索引 → 存储到对应桶
    • 查找:计算索引 → 访问桶获取值
    • 删除:计算索引 → 清空桶

三、哈希冲突(Collision)

当不同键映射到同一桶时发生冲突:
在这里插入图片描述


四、冲突解决方法

1. 链地址法(Separate Chaining)
桶数组
哈希计算
哈希计算
NULL
桶0
桶1
键A-值1
桶2
键B-值2
桶3
键A
键B
  • 原理:每个桶存储链表/树,冲突元素追加到链表
  • 复杂度:查找平均 O(1),最坏 O(n)
2. 开放寻址法(Open Addressing)

在这里插入图片描述

  • 探测方法
    • 线性探测:index = (hash + i) % size
    • 平方探测:index = (hash + i²) % size
    • 双重哈希:index = (hash1 + i*hash2) % size

五、哈希应用场景

  1. 数据结构:哈希表(字典、集合)
  2. 数据校验:文件完整性验证(MD5/SHA对比)
  3. 密码存储:加盐哈希保护密码
  4. 区块链:比特币的区块哈希链
  5. 分布式系统:一致性哈希实现负载均衡

六、高级应用:一致性哈希

解决分布式缓存扩容问题:

一致性哈希环
哈希
哈希
哈希
哈希
哈希
H1
节点A
H2
节点B
H3
节点C
数据K1
H2与H3之间
数据K2
  • 原理:将节点和数据映射到虚拟环上
  • 优势:节点增减时仅影响相邻数据,避免全局重哈希

七、哈希总结

特性说明
时间复杂度平均 O(1),最坏 O(n)
空间复杂度O(n)
冲突处理链地址法(通用)、开放寻址法(内存紧凑)
设计关键优质哈希函数 + 合理扩容策略
扩容机制通常当负载因子 > 0.75 时扩容并重哈希

通过合理设计哈希函数和冲突解决方案,哈希表能实现接近常数时间的快速数据存取,是现代系统中最核心的数据结构之一。

http://www.lryc.cn/news/609486.html

相关文章:

  • 【Linux | 网络】网络层(IP协议、NAT技术和ICMP协议)
  • 【前端:Html】--1.3.基础语法
  • 【人工智能99问】什么是Post-Training,包含哪些内容?(19/99)
  • 3.JVM,JRE和JDK的关系是什么
  • Linux 系统重置用户密码指南
  • 【09】C++实战篇——C++ 生成静态库.lib 及 C++调用lib,及实际项目中的使用技巧
  • vue3指定设置了dom元素的ref但是为null问题
  • 大模型 与 自驾 具身 3D世界模型等相关知识
  • 华为OD机考2025C卷 - 最小矩阵宽度(Java Python JS C++ C )
  • vim 组件 使用pysocket进行sock连接
  • 408数据结构排序部分知识的复盘:从原理到辨析的系统化梳理
  • 抗辐照DCDC与MCU在核环境监测设备中的集成应用
  • 远程测控终端RTU:工业物联的“神经末梢”与远程操控核心
  • CVPR论文解析:告别Janus问题,text-to-3D更一致!
  • 5G专网与SD-WAN技术融合:某饮料智能工厂网络架构深度解析
  • Planner 5D v2.29.0 安卓高级解锁版,手机3D家装,全套家具免费
  • 【基于WAF的Web安全测试:绕过Cloudflare/Aliyun防护策略】
  • iOS混淆工具有哪些?功能测试与质量保障兼顾的混淆策略
  • SpringBoot3.x入门到精通系列:3.2 整合 RabbitMQ 详解
  • mac 锁屏不断网 2025
  • Java基础-斗地主游戏
  • 亚马逊撤离Google购物广告:重构流量生态的战略博弈
  • 编译 Paddle 遇到 flashattnv3 段错误问题解决
  • 37. line-height: 1.2 与 line-height: 120% 的区别
  • YAML文件
  • Vue Router快速入门
  • 高精度实战:YOLOv11交叉口目标行为全透视——轨迹追踪×热力图×滞留分析(附完整代码)
  • 深度学习TR3周:Pytorch复现Transformer
  • 第三阶段—8天Python从入门到精通【itheima】-143节(pyspark实战——数据计算——flatmap方法)
  • 大型语言模型落地应用全景指南:微调、提示工程、多模态与企业级解决方案