您现在的位置是:首页 >技术杂谈 >算法习题之与哈希有关的结构网站首页技术杂谈
算法习题之与哈希有关的结构
简介算法习题之与哈希有关的结构
哈希函数 -> out f(in data)
1)输入参数data,假设是in类型,特征:可能性无穷大,比如str类型的参数
2)输出参数类型out,特征:可能性可以很大,但一定是有穷尽的
3)哈希函数没有任何随机的机制,固定的输入一定是固定的输出
4)输入无穷多但输出值有限,所以不同输入也可能输出相同(哈希碰撞)
5)再相似的不同输入,得到的输出值,会几乎均匀的分布在out域上
哈希表
1.哈希表起始桶容量
2.哈希表在插入值时,将key进行hash并%桶的容量,放入数组中,当%后的数值相同,就将当前的key和value放在当前桶的链表上
3.查询时,将key进行hash并%桶的容量,找到当前桶的位置,并遍历寻找链表上对应的key
4.当当前的链表的长度大于某个定值,进行扩容一倍,将原来的记录取出来,重新进行%新的容量,再放入新桶里
哈希函数作用
可以把数据根据不同值,几乎均匀的分开
布隆过滤器
1)利用哈希函数的性质
2)每一条数据提取特征
3)加入描黑库
布隆过滤器重要的三个公式
1,假设数据量为n,预期的失误率为p(布隆过滤器大小和每个样本的大小无关)
2,根据n和p,算出Bloom Filter一共需要多少个bit位,向上取整,记为m
3,根据m和n,算出Bloom Filter需要多少个哈希函数,向上取整,记为k
4,根据修正公式,算出真实的失误率p_true
一致性哈希
分布式存储结构最常见的结构
1)哈希域变成环的设计
2)虚拟节点技术
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。