入门级:从哈希算法到数据库索引

哈希算法并不是一个特定的算法而是一类算法的统称。哈希算法也叫散列算法,得到的哈希值也叫散列值,一般来说满足这样的关系:f(data)=key,输入任意长度的data数据,经过哈希算法处理后输出一个定长的数据key,即哈希值是固定长度的,同时这个过程是不可逆的,无法由key逆推出data。

如果是一个data数据集,把data中的数据一一进行哈希算法处理后得到key的数据集与data数据集相对应,这种data-key相对应组成的表就成了哈希表

我们可以想象一个夸张的场景来说明为什么要用哈希表,假设我们现在有上万个1g大小的文件,现在我们得到一个新文件需要存储,但我们需要判断这个文件是否包含在之前已有的文件中,当进行文件是否相同的比较判断时,比较1g大小是不是很慢,如果我们使用哈希算法,让其成为几个字节很小的哈希值进行比较判断是不是相对来说快很多.因此我们使用哈希算法,将之前的上万的文件进行哈希计算f(data)=key,让每个文件得到一个哈希值,集合起来得到哈希表,现在我们把现在要对比的文件进行哈希计算得到哈希值,然后查询哈希表,就会快很多.

哈希冲突: 既然输入数据不定长,而输出的哈希值却是固定长度的,那么当我们进行多次哈希计算时会有一定概率会出现相同的哈希值出现(因为哈希值定长,那么哈希值是有最大值的,假设哈希值最大为10000,那么只可以一一映射10000个值),那么有相同的哈希值出现就是哈希冲突了.
未完待续……..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值