哈希函数如下:
long
PyObject_Hash(PyObject *v)
{
PyTypeObject *tp = v->ob_type;
if (tp->tp_hash != NULL)
return (*tp->tp_hash)(v);
/* To keep to the general practice that inheriting
* solely from object in C code should work without
* an explicit call to PyType_Ready, we implicitly call
* PyType_Ready here and then check the tp_hash slot again
*/
if (tp->tp_dict == NULL) {
if (PyType_Ready(tp) < 0)
return -1;
if (tp->tp_hash != NULL)
return (*tp->tp_hash)(v);
}
if (tp->tp_compare == NULL && RICHCOMPARE(tp) == NULL) {
return _Py_HashPointer(v); /* Use address as hash value */
}
/* If there's a cmp but no hash defined, the object can't be hashed */
return PyObject_HashNotImplemented(v);
}
搜索过程则是根据hash值确定表项位置,进行比较。
如果表项比较成功或者表现是Unused状态,返回。
如果表现是Dummy状态,则设置freeslot指向该位置,并向下一个位置进行比较。
for (perturb = hash; ; perturb >>= PERTURB_SHIFT) {
i = (i << 2) + i + perturb + 1;
ep = &ep0[i & mask];
分享到:
相关推荐
参考网上博客的感知哈希算法的理论知识,实现基本的感知哈希算法,内有几张图片用来测试,程序可参考。
针对分布式存储系统中如何实现数据在物理存储上的均匀分布和高效定位的问题,对多种哈希算法展开研究,提出了衡量分布式存储系统哈希算法优劣的标准;从散列分布性、哈希冲突和计算效率等多个维度对这些哈希算法进行...
基于python与哈希算法实现图像去重
哈希算法应用领域非常广泛, 现在的web工程密码存储方面基本上都得使用哈希算法
弱哈希算法签名的SSL证书(CVE-2004-2761)。 远程服务使用SSL证书链,该证书链已使用加密弱哈希算法(例如MD2、MD4、MD5或SHA1)签名。这些签名算法很容易受到碰撞攻击。攻击者可以利用这一点生成另一个具有相同数字...
相似图搜索原理的简单介绍,内附感知哈希算法的代码
哈希
VB6.0语言,SHA256哈希算法源码,做成函数,可以直接调用!!
对已有的负载平衡的改进算法,通过一致性哈希算法,负载平衡更加的有效。
一致性哈希算法
在数字化时代,信息安全已成为人们关注...这个过程通常包括数据的预处理、编码转换、散列计算和输出生成等步骤。哈希函数的设计目标是确保即使是微小的输入数据变化,也会导致哈希值的大幅差异,从而达到抗碰撞的效果。
几个比较著名的哈希算法,还有哈希算法的概念以及如何优化哈希值的分布,在日常软件开发中十分有用
Android的感知哈希算法
哈希算法C语言实现
delphi下面开发的国产哈希算法SM3可以直接调用接口 里面的代码注释写的很明白 我自己做项目测试了可以使用 没得问题
多种哈希算法代码,用于文件校验、简单加密等场合。
sm3哈希算法.rar
C语言下很实用的哈希算法,你可以将这个头文件加入C函数库中,也可以放入自己编写的程序文件夹中,直接#include即可使用。
哈希表算法C++实现 SGI 哈希表是一个线性存储结构,其关键是哈希函数与哈希值算法
rustc 中使用的快速哈希算法。liballoc 中的 hashmap 默认使用 SipHash,它并没有我们想要的那么快。在编译器中,我们并不真正担心 DOS 尝试,因此我们使用快速非加密哈希。 这与 Firefox 使用的算法相同——它是一...