本文作者:qiaoqingyi

哈希竞彩源码(哈希竞彩源码推荐)

qiaoqingyi 2023-05-18 377

假定我们有一个hashmap的逻辑结构,用户编号的为15的人,name是dlf,school是xdu当我们在rediccli命令行下敲下 hset id15 name dlf时redis里面都发生了什么事情呢?任何一个使用过redis的用户,即使没有看过redis的源码,想一下这个过程。

哈希竞彩源码(哈希竞彩源码推荐)

十一 以 19 14 23 1 68 20 84 27 55 11 10 79 为关键字,按哈希函数Hkey=key mod 13 和链表地址法处理冲突构造哈希表,并实现searchL,x在表中查找关键字x的操作十二建立顺序表,并在其上实现1直接插入排序2。

HASH_TABLE* create_hash_tableHASH_TABLE* pHashTbl = HASH_TABLE*mallocsizeofHASH_TABLEmemsetpHashTbl, 0, sizeofHASH_TABLEreturn pHashTbl。

根据数据结构可以发现set内部使用了指针数组来保存keys,可以从 源码 中了解到采用的是连续存储的方式存储NSSet添加key,key值会根据特定的hash函数算出hash值,然后存储数据的时候,会根据hash函数算出来的值,找到对应的下标。

第二项是字节码的版本,笔者的版本是74,也即 上图中的4a00 0000 第三项是源码的hash,这里采用的是SHA1算法,生成的哈希值是160位,因此占用了20个字节 第四项是文件长度,这个字段是32位的,也就是下图中的为0aa。

HashSet 3个参数的构造里new了一个LinkedHashMap的实例,到这里LinkedHashSet与LinkedHashMap的关系已经很清晰了LinkedHashMap具体怎样维护顺序的,还希望你去看一看它的源代码map内部还有个内部Entry类看着也是够乱的。

阅读
分享