程序员技术文章推荐程序员技术栈

hash 是什么

2019-03-10  本文已影响1人  V哥的博客

可以很简单的理解为“摘要”

就是将一段数据映射到有限长度的数据,比如说原数据是一段非常长的字符串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

敬请关注:

玮哥的博客 —— CSDN的传送门

玮哥的博客 —— 简书的传送门

玮哥的博客 —— 博客园的传送门

上一篇 下一篇

猜你喜欢

热点阅读