我们先说下hash这个词出现的场景。
编程语言里的数据类型:java里的hashmap, python里的哈希表 - dict
负载均衡:一致性哈希算法
文件和程序的版本管理:通过哈希值来判断
用户的密码:我的密码,网站有,会不会被偷?
以上的场景,覆盖了:开发的编码,服务的管控,版本的管理。贯穿于整个互联网项目的周期中。
hash是一系列的算法
特点:能给一大堆不规律的数据,给出长度固定的标签,这些标签的值分散的比较均匀。数据可以变成标签,标签没办法变成数据。
比如:从学校里随机抽取1000个学生,不论是从成绩,家庭收入来进行划分,他们大概率都会成正态分布。毕竟中庸的人最多,这就很不“hash”了。但如果按年纪、班级来分类,会比较平均。这就很”hash”了。
![776c0913-8612-eb11-8da9-e4434bdf6706.png](http://p05.5ceimg.com/content/776c0913-8612-eb11-8da9-e4434bdf6706.png)
编程语言里的数据类型
因为它均匀分布的特性,就很适合用来做数据存储。
例如:有6个苹果,分别编号「2,27,125,234553,6635,9」要放进抽屉里,方便下次拿出,怎么给抽屉编号。方便拿到需要的苹果。典型的key与value的对应问题。