哈希 随笔
看了B站视频之后随便写的一点东西
视频很好, 很清晰 哈希究竟代表什么?哈希表和哈希函数的核心原理
以下是一点笔记
哈希
哈希是不可逆的.
哈希的键(key)进行运算后, 才能得到值对应的内存地址.
给这个键进行运算的就是哈希函数了.
哈希函数有多种实现形式, 但是都有以下特点(原则):
- 不可逆, 所以要用到模运算, 模运算不可能逆运算的.
- 可变长度的输入(input)变成固定长度的输出(output)
- 还有一个, hash要求 相同的输入才能得到相同的输出. 不过上面的那种明显会出现冲突, 因此就要解决冲突:
- 一个简单的方法是链表法(封闭寻址法的一种), 当出现冲突的时候, 后面的那个可以以链表的方式挂在结点的后面, 这种方式理解与实现简单, 但是容易出现集群现象. 也就是链表越挂越多, 效率就会降低. Java的集合里面是采用的这种, 当链表长了就转换成红黑树.
- ... 当然还有其他的方法.
- 不过现在常见的是一些固定的哈希算法: md5, sha等. 可以把输入运算成固定的值. 这个值被称为摘要.
- 哈希可以破解, 比如彩虹表之类的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人