哈希表处理方法及装置制造方法及图纸

技术编号:34427786 阅读:24 留言:0更新日期:2022-08-06 16:01
本申请提供哈希表处理方法及装置,其中所述哈希表处理方法包括:获取哈希表创建请求,所述哈希表创建请求中携带哈希表容量信息;根据所述哈希表容量信息和所述哈希表创建请求关联的存储数据类型,计算内存空间信息;响应于所述哈希表创建请求,按照所述内存空间信息在内存中申请连续内存作为哈希表数据块;在接收到针对所述哈希表数据块关联的哈希表提交的操作请求的情况下,根据所述操作请求对所述哈希表进行更新。哈希表进行更新。哈希表进行更新。

【技术实现步骤摘要】
哈希表处理方法及装置


[0001]本申请涉及计算机
,特别涉及哈希表处理方法及装置。

技术介绍

[0002]随着互联网技术的发展,哈希表作为一种key和value存储的数据结构,在程序编程中有着大量的应用,其特点是利用空间换取时间,通过哈希函数计算key的哈希值,快速查表定位到所在位置,得到value。哈希表在各种语言标准库中都有提供,但是它们考虑的更多是本地环境下的查询效率,当使用者想把一个哈希表从一个进程迁移到另外一个进程的时候,只能遍历哈希表的每一个key和value进行序列化编码,然后通过网络传输到另外一个进程,再次遍历进行反序列化。但是,由于运行环境的影响,内存的申请和释放会造成内存碎片问题,致使需要额外的计算资源进行维护,同时,序列化和反序列化的耗时也会较大。因此亟需一种有效的方案以解决上述问题。

技术实现思路

[0003]有鉴于此,本申请实施例提供了一种哈希表处理方法,以解决现有技术中存在的技术缺陷。本申请实施例同时提供了一种哈希表处理装置,一种计算设备,以及一种计算机可读存储介质。
[0004]根据本申请实施例的第一方面,提供了一种哈希表处理方法,包括:
[0005]获取哈希表创建请求,所述哈希表创建请求中携带哈希表容量信息;
[0006]根据所述哈希表容量信息和所述哈希表创建请求关联的存储数据类型,计算内存空间信息;
[0007]响应于所述哈希表创建请求,按照所述内存空间信息在内存中申请连续内存作为哈希表数据块;
[0008]在接收到针对所述哈希表数据块关联的哈希表提交的操作请求的情况下,根据所述操作请求对所述哈希表进行更新。
[0009]根据本申请实施例的第二方面,提供了一种哈希表处理装置,包括:
[0010]获取模块,被配置为获取哈希表创建请求,所述哈希表创建请求中携带哈希表容量信息;
[0011]计算模块,被配置为根据所述哈希表容量信息和所述哈希表创建请求关联的存储数据类型,计算内存空间信息;
[0012]申请模块,被配置为响应于所述哈希表创建请求,按照所述内存空间信息在内存中申请连续内存作为哈希表数据块;
[0013]更新模块,被配置为在接收到针对所述哈希表数据块关联的哈希表提交的操作请求的情况下,根据所述操作请求对所述哈希表进行更新。
[0014]根据本申请实施例的第三方面,提供了一种计算设备,包括:
[0015]存储器和处理器;
[0016]所述存储器用于存储计算机可执行指令,所述处理器执行所述计算机可执行指令时实现所述哈希表处理方法的步骤。
[0017]根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述哈希表处理方法的步骤。
[0018]根据本申请实施例的第五方面,提供了一种芯片,其存储有计算机程序,该计算机程序被芯片执行时实现所述哈希表处理方法的步骤。
[0019]本申请提供一种哈希表处理方法,通过在获取到携带有哈希表容量信息的哈希表创建请求的情况下,为了能够避免内存碎片化而造成的维护困难问题,可以根据哈希表容量信息和哈希表创建请求关联的存储数据类型,计算出所消耗的内存空间信息,之后响应于哈希表创建请求,按照内存空间信息在内存中申请连续内存作为哈希表数据块,以实现可以针对哈希表创建请求申请连续的内存空间进行使用,可以有效的降低维护成本;同时在反序列化和序列化过程中,因为连续内存不需要额外的信息标记内存位置,可以有效的提高处理效率;实现在接收到关联哈希表的操作请求后,可以直接根据哈希表创建请求对哈希表进行更新,以提高增/删/查的处理效率。
附图说明
[0020]图1是本申请一实施例提供的第一种哈希表处理方法的流程图;
[0021]图2是本申请一实施例提供的第二种哈希表处理方法的流程图;
[0022]图3是本申请一实施例提供的第三种哈希表处理方法的流程图;
[0023]图4是本申请一实施例提供的一种哈希表处理装置的结构示意图;
[0024]图5是本申请一实施例提供的一种计算设备的结构框图。
具体实施方式
[0025]在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
[0026]在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0027]应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。
[0028]首先,对本专利技术一个或多个实施例涉及的名词术语进行解释。
[0029]哈希表:是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
[0030]在本申请中,提供了一种哈希表处理方法。本申请同时涉及一种哈希表处理装置、
一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
[0031]图1出了根据本申请一实施例提供的第一种哈希表处理方法的流程图,具体包括以下步骤:
[0032]步骤S102:获取哈希表创建请求,所述哈希表创建请求中携带哈希表容量信息。
[0033]本实施例提供的哈希表处理方法,使用C++语言实现,且哈希表的key和value属于POD类型的数据,也就是说,为占用内存长度固定的数据。在此基础上,通过申请连续内存的方式创建哈希表创建请求对应的哈希表数据块,可以有效的提高哈希表使用阶段的效率。
[0034]基于此,哈希表创建请求具体是指在当前应用环境下需要创建的哈希表的请求,且该哈希表的key和value属于POD类型的数据;相应的,哈希表容量信息具体是指创建哈希表时所需要使用的容量大小信息,哈希表容量信息的具体设定可以根据实际应用场景选择,本实施例在此不作任何限定。
[0035]进一步的,在接收到哈希表创建请求的情况下,为支持后续可以通过连续内存创建哈希表数据块,用于维护哈希表在当前应用场景下的使用,可以使用结构体实现哈希表类,结构体的数据组成结构可以包含哈希表数据块、数据块容量、哈希表已用槽数量和空闲槽索引,以支持在应用阶段,可以结合上述组成结构提高增/删/查的效率。
[0036]其中,哈希表本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种哈希表处理方法,其特征在于,包括:获取哈希表创建请求,所述哈希表创建请求中携带哈希表容量信息;根据所述哈希表容量信息和所述哈希表创建请求关联的存储数据类型,计算内存空间信息;响应于所述哈希表创建请求,按照所述内存空间信息在内存中申请连续内存作为哈希表数据块;在接收到针对所述哈希表数据块关联的哈希表提交的操作请求的情况下,根据所述操作请求对所述哈希表进行更新。2.根据权利要求1所述的方法,其特征在于,所述响应于所述哈希表创建请求,按照所述内存空间信息在内存中申请连续内存作为哈希表数据块步骤执行之后,还包括:对所述连续内存中的冗余数据进行删除处理,以及初始化所述哈希表对应的哈希表信息;其中,所述哈希表信息包括哈希表空闲槽索引信息和哈希表已用槽数量信息。3.根据权利要求1所述的方法,其特征在于,所述响应于所述哈希表创建请求,按照所述内存空间信息在内存中申请连续内存作为哈希表数据块步骤执行之后,还包括:根据所述哈希表容量信息确定所述哈希表对应的哈希值范围;确定所述哈希表包含的数据槽位,并根据所述哈希值范围创建所述数据槽位对应的索引信息。4.根据权利要求1所述的方法,其特征在于,所述根据所述操作请求对所述哈希表进行更新,包括:在所述操作请求为数据插入请求的情况下,确定所述数据插入请求中携带的第一数据索引信息和第一数据;通过哈希函数计算所述第一数据索引信息对应的第一哈希值;在所述哈希表中确定所述第一哈希值关联的第一槽位,并将所述第一数据写入所述第一槽位,作为对所述哈希表的更新。5.根据权利要求4所述的方法,其特征在于,所述在所述哈希表中确定所述第一哈希值关联的第一槽位,包括:在所述哈希表中确定所述第一哈希值对应的第二槽位,并检测所述第二槽位的存储状态;在所述第二槽位的存储状态为空闲状态的情况下,将所述第二槽位作为所述第一槽位;在所述第二槽位的存储状态为占用状态的情况下,在所述哈希表中确定第一空闲槽位,并根据所述第一空闲槽位确定所述第一槽位。6.根据权利要求5所述的方法,其特征在于,所述根据所述第一空闲槽位确定所述第一槽位,包括:确定所述第二槽位关联的第二数据索引信息对应的第二哈希值,并将所述第二哈希值与所述第一哈希值进行比较;在所述第二哈希值与所述第一哈希值相同的情况下,根据所述第二槽位和所述第一空闲槽位组成第一链表,并将所述第一链表中的空闲槽位作为所述第一槽位;在所述第二哈希值与所述第一哈希值不相同的情况下,将所述第二槽位中存储的占位
数据写入所述第一空闲槽位,并根据写入结果将所述第二槽位作为第一槽位。7.根据权利要求1所述的方法,其特征在于,所述根据所述操作请求对所述哈希表进行更新,包括:在所述操作请求为数据查询请求的情况下,确定所述数据查询请求携带的第三数据索引信息,并通过哈希函数计算所...

【专利技术属性】
技术研发人员:钟俊奇邓勇黄照荣
申请(专利权)人:珠海金山数字网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1