首页 / 专利库 / 电信 / 节点 / 子节点 / 一种构建哈希映射表的方法、装置及电子设备

一种构建哈希映射表的方法、装置及电子设备

阅读:779发布:2024-02-17

专利汇可以提供一种构建哈希映射表的方法、装置及电子设备专利检索,专利查询,专利分析的服务。并且本 发明 的 实施例 公开一种构建哈希映射表的方法、装置及 电子 设备,涉及 软件 开发技术,能够提升软件开发效率。包括:定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区 锁 字段、数据大小字段以及 节点 数组;定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;初始化所述哈希映射表,设置所述数据大小字段的值,分配节点数组,初始化所述临界区锁字段;生成哈希映射表 指针 信息,返回所述哈希映射表指针信息;根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据。本发明适用于利用C语言进行软件数据开发。,下面是一种构建哈希映射表的方法、装置及电子设备专利的具体信息内容。

1.一种构建哈希映射表的方法,其特征在于,包括:
定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区字段、数据大小字段以及节点数组;
定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;
初始化所述哈希映射表,设置所述数据大小字段的值,分配节点数组,初始化所述临界区锁字段;
生成哈希映射表指针信息,返回所述哈希映射表指针信息;
根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据。
2.根据权利要求1所述的构建哈希映射表的方法,其特征在于,所述构建所述哈希映射表中的数据包括:
根据所述哈希映射表指针信息接收插入指示信息,所述插入指示信息包含第一键字段以及值字段;
设置所述临界区锁字段的值为锁定;
根据第一键字段得到哈希键字段,在所述节点数组中的键字段以及与所述键字段对应的值字段中分别写入所述哈希键字段以及接收到的值字段。
3.根据权利要求2所述的构建哈希映射表的方法,其特征在于,在所述写入所述哈希键字段以及接收到的值字段之后,该方法还包括:
解锁所述临界区锁字段的锁定状态。
4.根据权利要求1所述的构建哈希映射表的方法,其特征在于,所述构建所述哈希映射表中的数据包括:
根据所述哈希映射表指针信息接收删除指示信息,所述删除指示信息包含哈希键字段;
设置所述临界区锁字段的值为锁定;
遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,删除获取的节点数组。
5.根据权利要求1至4任一项所述的构建哈希映射表的方法,其特征在于,所述方法还包括:
根据所述哈希映射表指针信息接收查询指示信息,所述查询指示信息包含哈希键字段;
设置所述临界区锁字段的值为锁定;
遍历所述哈希映射表中的节点数组,获取与所述查询指示信息中的哈希键字段相匹配的节点数组,返回与所述查询指示信息中的哈希键字段相匹配的节点数组中的值字段。
6.根据权利要求1所述的构建哈希映射表的方法,其特征在于,所述键字段为数字类型的字段,值字段为指针类型的字段。
7.一种构建哈希映射表的装置,其特征在于,包括:映射表定义模、数组结构定义模块、映射表初始化模块、指针信息生成模块以及数据构建模块,其中,
映射表定义模块,用于定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区锁字段、数据大小字段以及节点数组;
数组结构定义模块,用于定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;
映射表初始化模块,用于初始化所述哈希映射表,设置所述数据大小字段的值,分配节点数组,初始化所述临界区锁字段;
指针信息生成模块,用于生成哈希映射表指针信息,返回所述哈希映射表指针信息;
数据构建模块,用于根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据。
8.根据权利要求7所述的构建哈希映射表的装置,其特征在于,所述数据构建模块包括:插入指示接收单元、第一锁定单元以及数组写入单元,其中,
插入指示接收单元,用于根据所述哈希映射表指针信息接收插入指示信息,所述插入指示信息包含第一键字段以及值字段;
第一锁定单元,用于设置所述临界区锁字段的值为锁定;
数组写入单元,用于根据第一键字段得到哈希键字段,在所述节点数组中的键字段以及与所述键字段对应的值字段中分别写入所述哈希键字段以及接收到的值字段。
9.根据权利要求8所述的构建哈希映射表的装置,其特征在于,所述数据构建模块还包括:
第一解锁单元,用于解锁所述临界区锁字段的锁定状态。
10.根据权利要求7所述的构建哈希映射表的装置,其特征在于,所述数据构建模块包括:删除指示接收单元、第二锁定单元以及数组删除单元,其中,
删除指示接收单元,用于根据所述哈希映射表指针信息接收删除指示信息,所述删除指示信息包含哈希键字段;
第二锁定单元,用于设置所述临界区锁字段的值为锁定;
数组删除单元,用于遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,删除获取的节点数组。
11.根据权利要求7至10任一项所述的构建哈希映射表的装置,其特征在于,所述装置还包括:
数组查询模块,用于根据所述哈希映射表指针信息接收查询指示信息,所述查询指示信息包含哈希键字段;设置所述临界区锁字段的值为锁定;遍历所述哈希映射表中的节点数组,获取与所述查询指示信息中的哈希键字段相匹配的节点数组,返回与所述查询指示信息中的哈希键字段相匹配的节点数组中的值字段。
12.根据权利要求7所述的构建哈希映射表的装置,其特征在于,所述键字段为数字类型的字段,值字段为指针类型的字段。
13.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一权利要求1-6所述的构建哈希映射表的方法。

说明书全文

一种构建哈希映射表的方法、装置及电子设备

技术领域

[0001] 本发明涉及软件开发技术,尤其涉及一种构建哈希映射表的方法、装置及电子设备。

背景技术

[0002] 在软件开发中,尤其是安全类软件开发,包括两部分,一部分为内核层的驱动程序开发,另一部分为应用层的应用程序开发。其中,驱动程序的开发要求逻辑清晰且需要具有高效性能,一般需要使用C语言来编程开发,应用程序的开发由于涉及功能较多,逻辑较复杂,因而,需要使用一些面向对象的语言,例如C++语言。由于驱动程序和应用程序基于不同语言进行开发,需要为开发者提供两套的应用程序编程接口(API,Application Programming Interface),用以接入相应的驱动程序或应用程序。
[0003] 目前,由于C++语言可以兼容C语言,因而,在满足开发要求的情形下,应用程序的开发可以共享一部分驱动程序的程序代码段,但对于驱动程序,却不能共享应用程序的程序代码段。例如,对于数据开发,在应用程序开发中,利用C++语言开发了标准模板库(STL,Standard Template Library),利用标准模板库中的标准库函数,可以构建映射表,实现数据的映射(map)功能。举例来说,通过调用标准模板库中的map组件,可以基于map组件中的插入map映射表操作函数、删除map映射表操作函数、修改map映射表操作函数等map映射表操作函数构建映射表,从而实现数据开发。由于标准模板库是基于C++语言实现的,只能在应用程序开发中,通过C++语言调用使用,不能适用于基于C语言的驱动程序开发,使得驱动程序无法使用提供给应用程序使用的map映射表。如果在驱动程序开发中,需要进行数据开发,只能针对相应的驱动程序进行相应的数据开发,不能形成标准化的数据开发,使得驱动程序的开发效率较低;进一步地,驱动程序与应用程序都需要进行独立的数据开发,导致开发工作的冗余,也降低了安全类软件的开发效率。

发明内容

[0004] 有鉴于此,本发明实施例提供一种构建哈希映射表的方法、装置及电子设备,能够提升软件开发效率,以解决现有基于C++语言构建哈希映射表的方法中,不能兼容C语言,使得驱动程序的开发效率较低的问题。
[0005] 第一方面,本发明实施例提供一种构建哈希映射表的方法,包括:
[0006] 定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区字段、数据大小字段以及节点数组;
[0007] 定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;
[0008] 初始化所述哈希映射表,设置所述数据大小字段的值,分配节点数组,初始化所述临界区锁字段;
[0009] 生成哈希映射表指针信息,返回所述哈希映射表指针信息;
[0010] 根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据。
[0011] 结合第一方面,在第一方面的第一种实施方式中,所述构建所述哈希映射表中的数据包括:
[0012] 根据所述哈希映射表指针信息接收插入指示信息,所述插入指示信息包含第一键字段以及值字段;
[0013] 设置所述临界区锁字段的值为锁定;
[0014] 根据第一键字段得到哈希键字段,在所述节点数组中的键字段以及与所述键字段对应的值字段中分别写入所述哈希键字段以及接收到的值字段。
[0015] 结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,在所述写入所述哈希键字段以及接收到的值字段之后,该方法还包括:
[0016] 解锁所述临界区锁字段的锁定状态。
[0017] 结合第一方面,在第一方面的第三种实施方式中,所述构建所述哈希映射表中的数据包括:
[0018] 根据所述哈希映射表指针信息接收删除指示信息,所述删除指示信息包含哈希键字段;
[0019] 设置所述临界区锁字段的值为锁定;
[0020] 遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,删除获取的节点数组。
[0021] 结合第一方面、第一方面的第一种至第三种中任一种实施方式,在第一方面的第四种实施方式中,所述方法还包括:
[0022] 根据所述哈希映射表指针信息接收查询指示信息,所述查询指示信息包含哈希键字段;
[0023] 设置所述临界区锁字段的值为锁定;
[0024] 遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,返回与所述哈希键字段相匹配的节点数组中的值字段。
[0025] 结合第一方面、第一方面的第一种至第三种中任一种实施方式,在第一方面的第五种实施方式中,所述键字段为数字类型的字段,值字段为指针类型的字段。
[0026] 第二方面,本发明实施例提供一种构建哈希映射表的装置,包括:映射表定义模、数组结构定义模块、映射表初始化模块、指针信息生成模块以及数据构建模块,其中,[0027] 映射表定义模块,用于定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区锁字段、数据大小字段以及节点数组;
[0028] 数组结构定义模块,用于定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;
[0029] 映射表初始化模块,用于初始化所述哈希映射表,设置所述数据大小字段的值,分配节点数组,初始化所述临界区锁字段;
[0030] 指针信息生成模块,用于生成哈希映射表指针信息,返回所述哈希映射表指针信息;
[0031] 数据构建模块,用于根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据。
[0032] 结合第二方面,在第二方面的第一种实施方式中,所述数据构建模块包括:插入指示接收单元、第一锁定单元以及数组写入单元,其中,
[0033] 插入指示接收单元,用于根据所述哈希映射表指针信息接收插入指示信息,所述插入指示信息包含第一键字段以及值字段;
[0034] 第一锁定单元,用于设置所述临界区锁字段的值为锁定;
[0035] 数组写入单元,用于根据第一键字段得到哈希键字段,在所述节点数组中的键字段以及与所述键字段对应的值字段中分别写入所述哈希键字段以及接收到的值字段。
[0036] 结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述数据构建模块还包括:
[0037] 第一解锁单元,用于解锁所述临界区锁字段的锁定状态。
[0038] 结合第二方面,在第二方面的第三种实施方式中,所述数据构建模块包括:删除指示接收单元、第二锁定单元以及数组删除单元,其中,
[0039] 删除指示接收单元,用于根据所述哈希映射表指针信息接收删除指示信息,所述删除指示信息包含哈希键字段;
[0040] 第二锁定单元,用于设置所述临界区锁字段的值为锁定;
[0041] 数组删除单元,用于遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,删除获取的节点数组。
[0042] 结合第二方面、第二方面的第一种至第三种中任一种实施方式,在第二方面的第四种实施方式中,所述装置还包括:
[0043] 数组查询模块,用于根据所述哈希映射表指针信息接收查询指示信息,所述查询指示信息包含哈希键字段;设置所述临界区锁字段的值为锁定;遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,返回与所述哈希键字段相匹配的节点数组中的值字段。
[0044] 结合第二方面、第二方面的第一种至第三种中任一种实施方式,在第二方面的第五种实施方式中,所述键字段为数字类型的字段,值字段为指针类型的字段。
[0045] 第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的构建哈希映射表的方法。
[0046] 本发明实施例提供的一种构建哈希映射表的方法、装置及电子设备,通过定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区锁字段、数据大小字段以及节点数组;定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;初始化所述哈希映射表,设置所述数据大小字段的值;分配节点数组,初始化所述临界区锁字段;生成哈希映射表指针信息,返回所述哈希映射表指针信息;根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据,能够提升软件开发效率,以解决现有基于C++语言构建哈希映射表的方法中,不能兼容C语言,使得驱动程序的开发效率较低的问题。附图说明
[0047] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0048] 图1为本发明的实施例一构建哈希映射表的方法流程示意图;
[0049] 图2为本发明的实施例二构建哈希映射表的装置结构示意图;
[0050] 图3为本发明电子设备一个实施例的结构示意图。

具体实施方式

[0051] 下面结合附图对本发明实施例进行详细描述。
[0052] 应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0053] 实施例一
[0054] 图1为本发明的实施例一构建哈希映射表的方法流程示意图,如图1所示,本实施例的方法可以包括:
[0055] 步骤101,定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区锁字段、数据大小字段以及节点数组;
[0056] 本实施例中,利用C语言定义一哈希映射表的结构(HASH_MAP),包含有三个字段,分别为:临界区锁字段、数据大小字段以及节点数组,其中,
[0057] 临界区锁字段用于在多个线程并行访问哈希映射表时,锁定临界区锁,以保证该哈希映射表中的数据安全;
[0058] 数据大小字段(Size)用于标识哈希映射表中所有数据的大小。
[0059] 本实施例中,节点数组由数据组成。
[0060] 本实施例中,节点数组标记为HASH_ENTRY。
[0061] 步骤102,定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;
[0062] 本实施例中,节点数组是哈希映射表中的节点数据,哈希映射表包含有一个或多个节点数组(节点),一节点数组也可以称之为哈希映射表的一元素。
[0063] 节点数组的结构称为节点数组结构,即HASH_ENTR结构,用于保存哈希映射表中的节点数组中的数据。
[0064] 本实施例中,作为一可选实施例,键(Key)字段为数字类型的字段,值(Value)字段为指针类型的字段。其中,Key相当于一索引(Index),利用Key可以查找到与该Key对应的Value,或者,利用Key在哈希映射表中执行插入、删除等操作,可以添加或删除与之对应的Value。
[0065] 步骤103,初始化所述哈希映射表,设置所述数据大小字段的值,分配节点数组,初始化所述临界区锁字段;
[0066] 本实施例中,利用初始化函数对哈希映射表进行初始化,填充HASH_MAP的数据大小字段(Size字段),根据该填充的Size字段申请哈希通用映射表映射表的空间大小。
[0067] 本实施例中,在初始化哈希映射表后,可以在初始化哈希映射表中进行数据开发,例如,开发基于C语言的标准模板库以及标准库函数。在接收到开发者的数据开发请求后,分配节点数组,为了避免多个线程并行访问同一节点数组导致该节点数组中的数据不能同步,使得数据不安全的技术问题,设置HASH_MAP的临界区锁字段(Lock字段),启动对该节点数组的临界区锁机制。
[0068] 本实施例中,作为一可选实施例,初始化所述临界区锁字段的函数为InitializeCriticalSection函数。
[0069] 步骤104,生成哈希映射表指针信息,返回所述哈希映射表指针信息;
[0070] 本实施例中,作为一可选实施例,依据为开发者分配的节点数组生成哈希映射表指针信息。因而,对于不同的开发者,返回的哈希映射表指针信息不同,对应哈希映射表中不同的节点数组,使得开发者可以在接收的哈希映射表指针信息对应的节点数组中进行开发。
[0071] 步骤105,根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据。
[0072] 本实施例中,作为一可选实施例,所述构建所述哈希映射表中的数据包括:
[0073] A11,根据所述哈希映射表指针信息接收插入指示信息,所述插入指示信息包含第一键字段以及值字段;
[0074] 本实施例中,如果需要实现对哈希映射表的数据插入,向哈希映射表传入两个参数,分别为:数字型的键(Key)字段以及指针类型的值(Value)字段。通过所述哈希映射表指针信息接收插入指示信息,可以实现哈希映射表由多个开发者调用,每一开发者可以初始化所需的节点数组,就可以实现多个节点数组的并行开发,以快速构建哈希映射表,提升哈希映射表的开发效率。
[0075] A12,设置所述临界区锁字段的值为锁定;
[0076] 本实施例中,作为一可选实施例,可以调用临界区锁定函数(例如,KeEnterCriticalRegion函数),用以设置所述临界区锁字段的值为锁定。
[0077] A13,根据第一键字段得到哈希键字段,在所述节点数组中的键字段以及与所述键字段对应的值字段中分别写入所述哈希键字段以及接收到的值字段。
[0078] 本实施例中,作为一可选实施例,接收到第一键字段Key1以及值字段value,由第一键字段Key1与哈希映射表指针结构的Size取模,取得一哈希键字段Hash,以哈希键字段Hash为节点数组的键字段Key,将节点数组的键字段Key与接收到的值字段value保存到哈希映射表数组中。例如,Key1=10,Size=100,Hash=10%100=10,即节点数组的键字段Key为10;再例如,Key1=120,Size=100,Hash=120%100=20,即节点数组的键字段Key为20。
[0079] 本实施例中,通过设置哈希键字段为第一键字段与数据大小字段的取模,可以使得无论第一键字段Key1传入何数,与数据大小字段取模的余数永远不会大于数据大小字段Size,从而使得插入哈希映射表的键字段不会大于数据大小字段Size,可以保障插入的数据不会越界。
[0080] 本实施例中,以哈希键字段为索引,值字段为索引映射的数据,将哈希键字段以及接收到的值字段保存到哈希映射表指针信息映射的节点数组中的键字段以及与键字段对应的值字段中,从而完成节点数组中数据的插入。由于对节点数组进行锁定,使得在同一时间,只有一线程可以访问该节点数组。
[0081] 本实施例中,由于哈希键字段值永远小于哈希映射表的数据大小字段值,因而,不会造成越界的技术问题。
[0082] 本实施例中,作为一可选实施例,在所述写入所述哈希键字段以及接收到的值字段之后,该方法还包括:
[0083] A14,解锁所述临界区锁字段的锁定状态。
[0084] 本实施例中,作为一可选实施例,可以调用临界区解锁函数(例如,ExReleaseResourceLite函数),用以解锁所述临界区锁字段的锁定状态。
[0085] 作为另一可选实施例,所述构建所述哈希映射表中的数据包括:
[0086] B11,根据所述哈希映射表指针信息接收删除指示信息,所述删除指示信息包含哈希键字段;
[0087] B12,设置所述临界区锁字段的值为锁定;
[0088] B13,遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,删除获取的节点数组。
[0089] 本实施例中,接收哈希键字段,然后遍历哈希映射表指针信息映射的节点数组,当查找到具有与哈希键字段匹配的键字段的节点数组时,删除在哈希映射表中查找到的节点数组。
[0090] 当然,实际应用中,在删除获取的节点数组之后,该方法还可以包括:
[0091] 解锁所述临界区锁字段的锁定状态。
[0092] 本实施例中,作为一可选实施例,该方法还包括:
[0093] C11,根据所述哈希映射表指针信息接收查询指示信息,所述查询指示信息包含哈希键字段;
[0094] 本实施例中,如果用户输入的是第二键字段,则依据前述步骤A13中的方法,将第二键字段转换为对应的哈希键字段。
[0095] C12,设置所述临界区锁字段的值为锁定;
[0096] C13,遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,返回与所述哈希键字段相匹配的节点数组中的值字段。
[0097] 本实施例中,作为一可选实施例,在所述返回与所述哈希键字段相匹配的节点数组中的值字段之后,该方法还可以包括:
[0098] 解锁所述临界区锁字段的锁定状态。
[0099] 本实施例中,实现哈希映射表的查找函数,通过传入哈希映射表指针信息以及第二键字段Key2,将第二键字段Key2转为哈希键字段,然后遍历哈希映射表中的节点数组,当查询到与哈希键字段相匹配的节点数组时,返回该节点数组中的Value字段。
[0100] 本实施例中,在构建操作哈希映射表以及在构建的哈希映射表中进行数据开发时,例如,插入、删除、查找,都需要使用Lock字段,将相应的节点数组的临界区锁定,操作完后解锁,锁定的目的是在多线程访问哈希映射表的同一节点数组时,可保证各线程从该节点数组中提取到的数据同步,不受其它线程影响,保证数据安全性。
[0101] 本发明实施例一构建哈希映射表的方法,定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区锁字段、数据大小字段以及节点数组;定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;初始化所述哈希映射表,设置所述数据大小字段的值;分配节点数组,初始化所述临界区锁字段;生成哈希映射表指针信息,返回所述哈希映射表指针信息;根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据。这样,可以基于C语言构建一套的哈希映射表,由于C语言是方便于C++调用的,因而,能够应用于应用程序和驱动程序,能够形成于应用程序和驱动程序的标准化数据开发,提升了软件的开发效率;进一步地,构建的哈希映射表可以实现插入、删除、查找数据的关键操作功能,是一种轻量方便的设计,有利于软件开发中对哈希映射表的使用;而且,由于值(Value)字段为一指针,可用于任意类型的数据保存,有利于运用于各种应用情景;此外,通过将键(Key)字段转换为哈希键字段,可以实现数据插入时进行越界判断。
[0102] 实施例二
[0103] 图2为本发明的实施例二构建哈希映射表的装置结构示意图,如图2所示,本实施例的装置可以包括:映射表定义模块21、数组结构定义模块22、映射表初始化模块23、指针信息生成模块24以及数据构建模块25,其中,
[0104] 映射表定义模块21,用于定义一哈希映射表的结构,所述哈希映射表的结构包括:临界区锁字段、数据大小字段以及节点数组;
[0105] 本实施例中,临界区锁字段用于在多个线程并行访问哈希映射表时,锁定临界区锁,以保证该哈希映射表中的数据安全;
[0106] 数据大小字段用于标识哈希映射表中所有数据的大小。
[0107] 本实施例中,节点数组由数据组成。
[0108] 数组结构定义模块22,用于定义所述节点数组的结构,所述节点数组的结构包括:键字段以及与所述键字段对应的值字段;
[0109] 本实施例中,本实施例中,作为一可选实施例,Key字段为数字类型的字段,Value字段为指针类型的字段。其中,Key相当于一Index,利用Key可以查找到与该Key对应的Value,或者,利用Key在哈希映射表中执行插入、删除等操作,可以添加或删除与之对应的Value。
[0110] 映射表初始化模块23,用于初始化所述哈希映射表,设置所述数据大小字段的值,分配节点数组,初始化所述临界区锁字段;
[0111] 本实施例中,调用预先设置的初始化函数对哈希映射表进行初始化,填充HASH_MAP的数据大小字段(Size字段),为该填充的Size字段申请哈希通用映射表映射表的空间大小。
[0112] 本实施例中,为了避免多个线程并行访问同一节点数组导致该节点数组中的数据不能同步,使得数据不安全的技术问题,设置HASH_MAP的临界区锁字段(Lock字段),启动对该节点数组的临界区锁机制。
[0113] 指针信息生成模块24,用于生成哈希映射表指针信息,返回所述哈希映射表指针信息;
[0114] 本实施例中,作为一可选实施例,依据为开发者分配的节点数组生成哈希映射表指针信息。
[0115] 数据构建模块25,用于根据所述哈希映射表指针信息接收对所述哈希映射表中的节点数组的开发,构建所述哈希映射表中的数据。
[0116] 本实施例中,作为一可选实施例,数据构建模块25包括:插入指示接收单元、第一锁定单元以及数组写入单元(图中未示出),其中,
[0117] 插入指示接收单元,用于根据所述哈希映射表指针信息接收插入指示信息,所述插入指示信息包含第一键字段以及值字段;
[0118] 第一锁定单元,用于设置所述临界区锁字段的值为锁定;
[0119] 本实施例中,作为一可选实施例,调用KeEnterCriticalRegion函数设置所述临界区锁字段的值为锁定。
[0120] 数组写入单元,用于根据第一键字段得到哈希键字段,在所述节点数组中的键字段以及与所述键字段对应的值字段中分别写入所述哈希键字段以及接收到的值字段。
[0121] 本实施例中,作为另一可选实施例,数据构建模块25还包括:
[0122] 第一解锁单元,用于解锁所述临界区锁字段的锁定状态。
[0123] 本实施例中,作为一可选实施例,调用ExReleaseResourceLite函数解锁所述临界区锁字段的锁定状态。
[0124] 本实施例中,作为另一可选实施例,数据构建模块25包括:删除指示接收单元、第二锁定单元以及数组删除单元,其中,
[0125] 删除指示接收单元,用于根据所述哈希映射表指针信息接收删除指示信息,所述删除指示信息包含哈希键字段;
[0126] 第二锁定单元,用于设置所述临界区锁字段的值为锁定;
[0127] 数组删除单元,用于遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,删除获取的节点数组。
[0128] 本实施例中,作为另一可选实施例,数据构建模块25还包括:
[0129] 第二解锁单元,用于解锁所述临界区锁字段的锁定状态。
[0130] 本实施例中,作为一可选实施例,该装置还包括:
[0131] 数组查询模块26,用于根据所述哈希映射表指针信息接收查询指示信息,所述查询指示信息包含哈希键字段;设置所述临界区锁字段的值为锁定;遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,返回与所述哈希键字段相匹配的节点数组中的值字段。
[0132] 本实施例中,作为一可选实施例,数组查询模块26包括:查询指示接收单元、第三锁定单元以及查询结果单元(图中未示出),其中,
[0133] 查询指示接收单元,用于根据所述哈希映射表指针信息接收查询指示信息,所述查询指示信息包含哈希键字段;
[0134] 第三锁定单元,用于设置所述临界区锁字段的值为锁定;
[0135] 查询结果单元,用于遍历所述哈希映射表中的节点数组,获取与所述哈希键字段相匹配的节点数组,返回与所述哈希键字段相匹配的节点数组中的值字段。
[0136] 本实施例中,作为另一可选实施例,数组查询模块26还包括:
[0137] 第三解锁单元,用于解锁所述临界区锁字段的锁定状态。
[0138] 本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0139] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0140] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
[0141] 尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0142] 在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,”计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0143] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。
[0144] 在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0145] 本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。
[0146] 图3为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-2所示实施例的流程,如图3所示,上述电子设备可以包括:壳体31、处理器32、存储器33、电路板34和电源电路35,其中,电路板34安置在壳体31围成的空间内部,处理器32和存储器33设置在电路板34上;电源电路35,用于为上述电子设备的各个电路或器件供电;存储器33用于存储可执行程序代码;处理器32通过读取存储器33中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的构建哈希映射表的方法。
[0147] 处理器32对上述步骤的具体执行过程以及处理器32通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-2所示实施例的描述,在此不再赘述。
[0148] 该电子设备以多种形式存在,包括但不限于:
[0149] (1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
[0150] (2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
[0151] (3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
[0152] (4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
[0153] (5)其他具有数据交互功能的电子设备。
[0154] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0155] 为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
[0156] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本[0157] 发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0158] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈