1. HashMap在链表中存储的是键值对 2. 数组是一块连续的固定长度的内存空间,再好的哈希函数也不能保证得到的存储地址绝对不发生冲突。那么哈希冲突如何解决呢?哈希冲突的解决方案有多种:开放定址法(发生冲突,继续寻找下一块未被占用的存储地址),再散列函数法,链地址法,而HashMap即是采用了链 ...
分类:
其他好文 时间:
2017-08-10 22:20:54
阅读次数:
129
根据费马小定理,若p为素数,则必有a^(p-1) mod p=1 对和p互质的a成立。 根据二次探测定理:如果p是素数,且0<x<p,则方程x^2 mod p=1的解为1或p-1。 所以若p为素数,则必有a^(p-1) mod p 的平方根为1或-1 分解p-1为d*2^s,其中d为奇数 从i=0逐 ...
分类:
其他好文 时间:
2017-07-22 22:39:00
阅读次数:
237
费尔马小定理:如果p是一个素数,且0<a<p,则a^(p-1)%p=1.利用费尔马小定理,对于给定的整数n,可以设计素数判定算法, 通过计算d=a^(n-1)%n来判断n的素性,当d!=1时,n肯定不是素数,当d=1时,n 很可能是素数. 二次探测定理:如果是素数,且,则方程的解为或。 利用二次探测 ...
分类:
其他好文 时间:
2017-07-18 15:37:02
阅读次数:
206
说到素数不得不说素数判定算法。 其中极为经典的为Rabin Miller测试。 通过二次探测的方法,我们可以将其正确率上升到一个很高的高度。 二次探测的原理我还是不太懂,所以NOI前我暂时只是梳理一下这个算法的流程。 首先,我来介绍一些小Trick。 $O(1)$的快速乘。 在一些卡常数而且爆lon ...
分类:
其他好文 时间:
2017-07-10 16:28:08
阅读次数:
228
题目背景 此题约为NOIP提高组Day2T2难度。 题目描述 众所周知,模数的hash会产生冲突。例如,如果模的数p=7,那么4和11便冲突了。 B君对hash冲突很感兴趣。他会给出一个正整数序列value[]。 自然,B君会把这些数据存进hash池。第value[k]会被存进(k%p)这个池。这样 ...
分类:
其他好文 时间:
2017-07-06 23:57:46
阅读次数:
356
哈希表中,关键值通过哈希函数映射到数组上,查找时通过关键值直接访问数组。哈希表的关键问题在于哈希函数的构造和解决冲突的方法。 下面采用最简单的线性探测展示一下哈希表的基本操作: ...
分类:
其他好文 时间:
2017-07-06 23:56:02
阅读次数:
208
战争故事 非常久非常久以前,以前发生过非常多关于哈希函数的战争故事。那些战争的基本原理就是通过精心构造造成大量的哈希冲突从而占用大量的CPU资源。 被攻击的软件例有下面样例: 带有漏洞的server:攻击者精心构造哈系冲突。仅仅须要56K的网速就能让server死机,从而达到DOS攻击的目的。 Pe ...
分类:
编程语言 时间:
2017-06-15 20:33:23
阅读次数:
222
开放定址法解决散列冲突时主要有线性探测法,平方探测法和双散列法,以下代码通过插入大量随机数,来统计几种探测法产生冲突的次数。 通过改变随机数组的大小,可以多次观察结果,发现每次都是双散列产生的冲突次数最少,但是也少不了多少。 夜深了,,, 好像是陷入死循环,希望后面的代码有个break。 ...
分类:
其他好文 时间:
2017-05-06 14:22:46
阅读次数:
668
在SQL Server 2012,有2个校验函数:check_sum 和 binary_check,在一些Data Table中,如果存在多个字符串字段,并且字符串非常长,在比较字符串是否相同时,使用校验函数,将其转换成 int 类型,能够提高数据比较的速度。但是不要忽略 CSDN 官方文档的警告( ...
分类:
其他好文 时间:
2017-04-30 14:01:37
阅读次数:
134
哈希表 结构定义dict.h/dictht table是一个数组, 每个元素是一个指向dict.h/dictEntry 结构的指针. 哈希表节点 next属性指向下一个节点, 形成链表, 解决哈希冲突. 字典 type 和 privdata属性都是针对不同类型的键值对, 为创建多态字典设置. ht数 ...
分类:
其他好文 时间:
2017-04-15 17:56:45
阅读次数:
222