hash 是什么
可以很简单的理解为“摘要”
就是将一段数据映射到有限长度的数据,比如说原数据是一段非常长的字符串m,那么hash的数字h就代表的该字符串。
A hash function is any function that can be used to map data of arbitrary size to data of fixed size. The values returned by a hash function are called hash values, hash codes, digests, or simply hashes. One use is a data structure called a hash table, widely used in computer software for rapid data lookup.
hash值是怎么产生的
对m进行计算(进行有损压缩)并输出为一个固定长度的值
hash碰撞
由不同的原始数据压缩时产生了相同的结果,生成的hash值一致
hash碰撞的解决方案
Probing , 在array找出一个空的位置。
试想如果我们计算10个元素的hash值都一样,那么每次存放和读取都会发生Probing,读取时间就会变成最高Ο(n)复杂度。
一个简单的策略是,当字典中存放的元素超过70%,就扩大字典体积。
Hash 攻击
即重复发送相同hash值的原数据,这样会导致耗时很大,由于每一次的插入都会造成hash碰撞,从而hash table将会退化为链表
Reference
https://www.zhihu.com/question/26762707
https://www.kawabangga.com/posts/2493
http://www.laruence.com/2011/12/30/2435.html
想要看到更多玮哥的学习笔记、考试复习资料、面试准备资料?想要看到IBM工作时期的技术积累和国外初创公司的经验总结?
image敬请关注: