使用再哈希算法查找元素:
/*
hash search, using rehash method
if find k, return
if not find, d=(d+step)%m, rehash find
*/
int SearchHash(HashTable H, KeyType k)
{
int d, d1, m;
m = H.tableS...
分类:
编程语言 时间:
2014-12-23 22:41:24
阅读次数:
414
正如上篇文中所说,HashMap不是线程安全的,在被多线程共享操作时,会有问题,具体什么问题呢,一直没有个清晰的理解,今天写了个测试程序调了一下,才明白其中道理。
主要是多线程同时put时,如果同时触发了rehash操作,会导致HashMap中的链表中出现循环节点,进而使得后面get的时候,会死循环。【关于什么是rehash,读者可以自行去google了】
本文主要参考了:http://coo...
分类:
编程语言 时间:
2014-11-05 23:17:35
阅读次数:
258
直接定义别名编辑当前用户下的.bashrc 文件:vim ~/.bashrc添加别名为 lmysql 的命令语句 :alias lmysql='mysql -uroot -p -Dtest --default-character-set=utf8 --auto-rehash'使其立即生效 :sour...
分类:
系统相关 时间:
2014-10-16 15:05:02
阅读次数:
367
- linear hash ETS/DETS/mnesia 都使用了linear hash算法http://en.wikipedia.org/wiki/Linear_hashingredis dict 的实现类似于linear hash,渐进式rehash,保证操作是O(1)。不过除了每次操作时执行...
分类:
其他好文 时间:
2014-09-02 00:17:13
阅读次数:
271
Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表。Redis小到可以存储几万记录的CACHE,大到可以存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大。Redis的核心数据结构就是字典(dict),dict在数据量不断增大的过程中,会遇到HASH(key)碰撞的问题,如果DICT不够大,碰撞的概率增大,这样单个hash 桶存储的元素会越来愈多,查询效率就...
分类:
其他好文 时间:
2014-05-01 21:56:59
阅读次数:
398