我来做一个比喻吧。
我们有很多的小猪,每个的体重都不一样,假设体重分布比较平均(我们考虑到公斤级别),我们按照体重来分,划分成100个小猪圈。
然后把每个小猪,按照体重赶进各自的猪圈里,记录档案。
好了,如果我们要找某个小猪怎么办呢?我们需要每个猪圈,每个小猪的比对吗?
当然不需要了。
我们先看看要找的这个小猪的体重,然后就找到了对应的猪圈了。
在这个猪圈里的小猪的数量就相对很少了。
我们在这个猪圈里就可以相对快的找到我们要找到的那个小猪了。
对应于hash算法。
就是按照hashcode分配不同的猪圈,将hashcode相同的猪放到一个猪圈里。
查找的时候,先找到hashcode对应的猪圈,然后在逐个比较里面的小猪。
所以问题的关键就是建造多少个猪圈比较合适。
如果每个小猪的体重全部不同(考虑到毫克级别),每个都建一个猪圈,那么我们可以最快速度的找到这头猪。缺点就是,建造那么多猪圈的费用有点太高了。
如果我们按照10公斤级别进行划分,那么建造的猪圈只有几个吧,那么每个圈里的小猪就很多了。我们虽然可以很快的找到猪圈,但从这个猪圈里逐个确定那头小猪也是很累的。
所以,好的hashcode,可以根据实际情况,根据具体的需求,在时间成本(更多的猪圈,更快的速度)和空间本(更少的猪圈,更低的空间需求)之间平衡。
分享到:
相关推荐
GeoHash将二维的经纬度转换成字符串
Hash join算法的一个基本思想就是根据小的row sources(称作build input,我们记较小的表为S,较大的表为B) 建立一个可以存在于hash area内存中的hash table,然后用大的row sources(称作probe input) 来探测前面所建...
hash join 原理和算法 1.Hash Join概述 2.Hash Join原理 3.Hash Join算法 4.Hash Join的成本
Hash join算法原理 详细讲述了oracle sql语句的连接方式 对于sql调优提高有很大帮助
一致性Hash算法的原理及实现
Hash算法的介绍,属于课件形式,图文并茂介绍Hash的原理和应用。
信息安全的核心技术是应用密码技术。密码技术的应用远不止局限于提供机密性服务,密码技术也提供数据完整性服务。密码学上的散列函数(Hash Functions)就是能提供数据完整性保障的一个重要工具。
geohash基本原理是将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码。GeoHash将二维的经纬度转换成一维的字符串。
OracleHashJoin算法原理分享.pdf
oracle hash join算法原理
Hash函数是提供数据完整性保障的一个...本次实验,我们希望通过上机操作,使同学们对安全Hash算法SHA-1的基本原理有一个全面的理解。通过本次实验,使学生掌握对Hash函数的应用,为后面数字签名方案的学习打下基础。
相信找到这里的 ,geohash算法原理及实现方式应该也有所了解了。原代码了出自 邓星林博客 http://www.cnblogs.com/dengxinglin/archive/2012/12/14/2817761.html 自已找来,加上8个区的实现,加些注释和例子,测试...
详细描述了sha算法的运算过程,对理解hash算法加密很有帮助
Hash函数是提供数据完整性保障的一个...本次实验,我们希望通过上机操作,使 同学们对安全Hash算法SHA-1的基本原理有一个全面的理解。通过本次实验,使学生掌握对 Hash函数的应用,为后面数字签名方案的学习打下基础。
hash函数之md5程序,可运行,包含testbench
一致性hash算法实现有两个关键问题需要解决,一个是用于结点存储和查找的数据结构的选择,另一个是结点hash算法的选择。 首先来谈一下一致性hash算法中用于存储结点的数据结构。通过了解一致性hash的原理,我们...
Redis、Hash算法数据库、LSM算法数据库、HandlerSocket、分布式数据库
Hash签名算法入门,在这篇文章中主要讲述了签名算法的发展历程,分析了基于哈希函数的签名算法的原理及优缺点。
Hash函数和数字签名 Hash函数和数字签名 Hash函数和数字签名
主要介绍了PHP实现的一致性Hash算法,结合实例形式详细分析了php一致性Hash算法的概念、原理及相关实现与使用技巧,需要的朋友可以参考下