CN109522306A - 一种全局空间及数据共享方法 - Google Patents
一种全局空间及数据共享方法 Download PDFInfo
- Publication number
- CN109522306A CN109522306A CN201811105543.4A CN201811105543A CN109522306A CN 109522306 A CN109522306 A CN 109522306A CN 201811105543 A CN201811105543 A CN 201811105543A CN 109522306 A CN109522306 A CN 109522306A
- Authority
- CN
- China
- Prior art keywords
- global space
- data
- data item
- array
- hash index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种全局空间,包括,全局空间数组、全局数据的数量,以及第一哈希索引表,其中,所述全局空间数组,进一步包括,全局空间名和全局空间数据项;第一哈希索引表,包括,哈希索引数组+链表、哈希数据大小和全局空间在数组中的存储位置。本发明还提供一种数据共享方法,利用全局空间,在进程内部以及进程间实现一个全局空间,高效存储,快速查找和共享数据,提高应用的效率。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种全局空间及数据共享方法。
背景技术
目前网络游戏在实现各个功能时,涉及到一些全局数据的使用,例如全服的榜单,全服的公会数据和帮派数据,全服的争用资源的一些活动,并且涉及到多进程,查找和修改数据要快速,单一的全局变量已不能满足要求,所以实现了全局空间,用来存储相关全局数据,便于全局读取和修改数据,封装后提供读取和修改接口,应用到各个项目中。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种全局空间及数据共享方法,使用结构数组和哈希索引表,结构数组存储数据,哈希索引表用于快速查找关键项在数据中的存储位置,用来高效存储,快速查找和共享数据。
为实现上述目的,本发明提供的全局空间,包括,全局空间数组、全局数据的数量,以及第一哈希索引表,其中,
所述全局空间数组,进一步包括,全局空间名和全局空间数据项;
第一哈希索引表,包括,哈希索引数组+链表、哈希数据大小和全局空间在数组中的存储位置。
进一步地,所述全局空间数据项,进一步包括,公共数据项信息数组、公共数据项所拥有的数据数组,以及第二哈希索引表、是否可以修改、是否被锁定。
进一步地,所述公共数据项信息数组,进一步包括,哈希索引、数据项拥有的数据类型、数据项可容纳的数据数目、数据项在公共数据项所拥有的数据数组中的起始偏移和数据项名;
所述公共数据项所拥有的数据数组,进一步包括,数据类型和数据值。
为实现上述目的,本发明提供的全局空间数据共享方法,包括以下步骤,
实现全局空间接口;
实现哈希索引表接口;
实现全局空间数据接口;
实现全局空间数据同步。
进一步地,所述实现全局空间接口的步骤,进一步包括,
全局空间数组添加全局空间相关信息,第一哈希索引表执行添加操作;
第一哈希索引表执行移除操作,全局空间数组释放内存,所述第一哈希索引表C重建索引;
全局空间数组释放内存,第一哈希索引表释放内存;
第一哈希索引表查找是否存在全局空间;
第一哈希索引表查找并返回位置,根据位置在全局空间数组中获取。
进一步地,所述实现哈希索引表接口的步骤,进一步包括,
根据全局空间名,将规定的哈希映射到第一哈希索引表,并将新的全局空间名添加到链表头部;
根据全局空间名,映射第一哈希索引表,遍历链表,匹配删除节点,释放节点内存;
根据全局空间名,映射第一哈希索引表,遍历链表,匹配返回结果;
根据全局空间名,映射第一哈希索引表,遍历链表,匹配返回节点中保存的全局空间位置。
进一步地,所述实现全局空间数据接口的步骤,进一步包括,
为公共数据项信息数组进行内存分配,为全局空间数据赋值,第二哈希索引表执行添加操作,全局空间数组执行添加操作;
第二哈希索引表获得数据项在公共数据项信息数组中位置,获取全局空间数据项在公共数据项所拥有的数据数组中的起始偏移和全局空间数据项定义的大小,第二哈希索引表移除索引,释放内存,公共数据项信息数组释放内存,公共数据项所拥有的数据数组释放内存,公共数据项信息数组更新偏移量,第二哈希索引表重建索引;
根据全局空间数据项名,映射第二哈希索引表,遍历链表,匹配返回结果;
根据全局空间数据项名,映射第二哈希索引表,遍历链表,匹配返回节点中保存的全局空间数据项位置;
根据指定的全局空间数据项位置,获取数据项在公共数据项所拥有的数据数组中的起始偏移,再根据指定的公共数据项所拥有的数据数组中的位置,取得具体数据项的值;
根据指定的全局空间数据项位置,获取数据项在公共数据项所拥有的数据数组中的起始偏移,再根据指定的公共数据项所拥有的数据数组中的位置,取得具体数据项的值,修改为指定的新值。
更进一步地,所述为全局空间数据赋值的步骤,是为全局空间数据的全局空间数据名哈希索引、数据类型、要求可容纳的数据数目、数据项在公共数据项所拥有的数据数组中的起始偏移赋值。
本发明的全局空间及数据共享方法,全局空间存储实现使用结构数组和哈希索引表,结构数组存储数据,哈希索引表用于快速查找关键项在数据中的存储位置。全局空间的数据项兼容多种数据类型,实现多种数据类型的保存和修改。全局空间初始化后需要锁定,即只有锁定者才有修改数据的权限,数据读取不涉及到锁定,修改涉及到锁定,所有需要修改的操作都要发送给锁定者去修改,数据修改后涉及到不同进程全局空间同步,当单个进程中的全局空间数据被修改,需要同步数据到其他成员进程。本发明的全局空间数据共享方法经实际测试,能够稳定运行。
本发明的全局空间及数据共享方法,在进程内部,以及进程间实现一个全局空间,用来高效存储,快速查找和共享数据,数据项的定义可以兼容多种数据类型,数据项的存储使用指定内存块的分配和回收,封装后提供读取、快速查找和修改接口,提供一个高效的全局数据存储和共享实现方式,便于应用到各个项目中,提高效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的全局空间数据共享方法流程图。
图2为根据本发明的全局空间结构示意图;
图3为根据本发明的全局空间查找示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1为根据本发明的全局空间数据共享方法流程图,下面将参考图1,对本发明的全局空间数据共享方法进行详细描述。
首先,在步骤101,构建全局空间,具体方法如下:
构建全局空间结构A, 包括:全局空间数组B、全局数据的数量,以及第一哈希索引表C。其中,
全局空间数组B成员信息,包括:全局空间名和全局空间数据项D;
第一哈希索引表C,包括:哈希索引数组+链表、哈希数据大小和全局空间在数组中的存储位置。
全局空间数据项D ,进一步包括:公共数据项信息数组E、公共数据项所拥有的数据数组F,以及第二哈希索引表G、是否可以修改、是否被锁定;
公共数据项信息数组E,进一步包括,哈希索引、数据项拥有的数据类型、数据项可容纳的数据数目、数据项在F中的起始偏移和数据项名;
公共数据项所拥有的数据数组F,进一步包括,数据类型和数据值。
在步骤102,实现全局空间接口,具体方法如下:
添加操作,全局空间数组B添加全局空间相关信息(包括:全局空间名),第一哈希索引表C执行添加操作;
移除操作,第一哈希索引表C执行移除操作,全局空间数组B释放内存,第一哈希索引表C重建索引;
释放操作,全局空间数组B释放内存,第一哈希索引表C释放内存;
查找操作,第一哈希索引表C查找是否存在全局空间;
获取位置,第一哈希索引表C查找并返回位置,使用位置到全局空间数组B中获取。
在步骤103,实现哈希索引表相关接口,具体方法如下:
添加操作,根据全局空间名,按规定的哈希映射到第一哈希索引表C,此索引位置已存在其他全局空间,则新的全局空间名添加到链表头部;所述规定的哈希,是利用乘法的不相关性,使用乘法hash,乘数使用的是131,hash = hash * 131 + name.charAt(i),return(hash%size);
移除操作,根据全局空间名,映射第一哈希索引表C,遍历链表,匹配删除节点,释放节点内存;
查找操作,根据全局空间名,映射第一哈希索引表C,遍历链表,匹配返回结果;
获取位置,根据全局空间名,映射第一哈希索引表C,遍历链表,匹配返回节点中保存的全局空间位置。
在所述步骤104,实现全局空间数据相关接口,具体方法如下:
添加操作,为公共数据项信息数组E进行内存分配,为全局空间数据赋值(全局空间数据名哈希索引,数据类型,要求可容纳的数据数目,数据项在公共数据项所拥有的数据数组F中的起始偏移),第二哈希索引表G执行添加操作,全局空间数组B执行添加操作;
移除操作,第二哈希索引表G获得数据项在公共数据项信息数组E中位置,获取全局空间数据项在公共数据项所拥有的数据数组F中的起始偏移和全局空间数据项定义的大小,第二哈希索引表G移除索引,释放内存,公共数据项信息数组E释放内存,公共数据项所拥有的数据数组F释放内存,公共数据项信息数组E更新偏移量,第二哈希索引表G重建索引。
查找操作,根据全局空间数据项名,映射第二哈希索引表G,遍历链表,匹配返回结果。
获取位置,根据全局空间数据项名,映射第二哈希索引表G,遍历链表,匹配返回节点中保存的全局空间数据项位置。
查询数据项值,根据指定的全局空间数据项位置,获取数据项在公共数据项所拥有的数据数组F中的起始偏移,再根据指定的公共数据项所拥有的数据数组F中的位置,取得具体数据项的值。
设置数据项值,判断锁定,是锁定者,根据指定的全局空间数据项位置,获取数据项在公共数据项所拥有的数据数组F中的起始偏移,再根据指定的公共数据项所拥有的数据数组F中的位置,取得具体数据项的值,修改为指定的新值。
在步骤105, 实现全局空间数据同步,具体方法如下:
当成员进程需要修改数据时,通知锁定者,锁定者接收信息后执行以上所述步骤102-104的流程进行修改操作,修改完成后,通知所有进程更新数据,完成数据的同步。
图2为根据本发明的全局空间结构示意图,如图2所示,本发明的全局空间结构,包括,
全局空间信息成员数组B组成实例p[0]:
全局空间结构名;
全局空间数据项D(pData)。
全局空间数据项D组成(pData)实例:
公共数据项信息数组E;
公共数据项所拥有的数据数组F;
第二哈希索引表G;
是否可以修改;
是否被锁定。
公共数据项信息数组E组成pData[0]实例:
哈希索引;
数据项拥有的数据类型;
数据项可容纳的数据数目;
数据项在F中的起始偏移和数据项名。
公共数据项所拥有的数据数组F组成:
数据类型;
数据值。
图3为根据本发明的全局空间查找示意图,如图3所示,本发明的全局空间查找的流程如下:
第一步:调用全局空间查找接口Find1,传入全局空间名;
第二步:Find1中调用第一哈希索引表C查找接口Find2,传入全局空间名;
第三步:第一哈希索引表C查找接口Find2中根据全局空间名进行哈希映射,根据映射地址获取到链表首地址,遍历链表,查到是否有匹配的全局空间名,返回结果。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种全局空间,其特征在于,包括,全局空间数组、全局数据的数量,以及第一哈希索引表,其中,
所述全局空间数组,进一步包括,全局空间名和全局空间数据项;
第一哈希索引表,包括,哈希索引数组+链表、哈希数据大小和全局空间在数组中的存储位置。
2.根据权利要求1所述的全局空间,其特征在于,所述全局空间数据项,进一步包括,公共数据项信息数组、公共数据项所拥有的数据数组,以及第二哈希索引表、是否可以修改、是否被锁定。
3.根据权利要求2所述的全局空间,其特征在于,
所述公共数据项信息数组,进一步包括,哈希索引、数据项拥有的数据类型、数据项可容纳的数据数目、数据项在公共数据项所拥有的数据数组中的起始偏移和数据项名;
所述公共数据项所拥有的数据数组,进一步包括,数据类型和数据值。
4.一种全局空间数据共享的方法,包括以下步骤,
实现全局空间接口;
实现哈希索引表接口;
实现全局空间数据接口;
实现全局空间数据同步。
5.根据权利要求4所述的全局空间数据共享方法,其特征在于,所述实现全局空间接口的步骤,进一步包括,
全局空间数组添加全局空间相关信息,第一哈希索引表执行添加操作;
第一哈希索引表执行移除操作,全局空间数组释放内存,所述第一哈希索引表C重建索引;
全局空间数组释放内存,第一哈希索引表释放内存;
第一哈希索引表查找是否存在全局空间;
第一哈希索引表查找并返回位置,根据位置在全局空间数组中获取。
6.根据权利要求4所述的全局空间数据共享方法,其特征在于,所述实现哈希索引表接口的步骤,进一步包括,
根据全局空间名,将规定的哈希映射到第一哈希索引表,并将新的全局空间名添加到链表头部;
根据全局空间名,映射第一哈希索引表,遍历链表,匹配删除节点,释放节点内存;
根据全局空间名,映射第一哈希索引表,遍历链表,匹配返回结果;
根据全局空间名,映射第一哈希索引表,遍历链表,匹配返回节点中保存的全局空间位置。
7.根据权利要求4所述的全局空间数据共享方法,其特征在于,所述实现全局空间数据接口的步骤,进一步包括,
为公共数据项信息数组进行内存分配,为全局空间数据赋值,第二哈希索引表执行添加操作,全局空间数组执行添加操作;
第二哈希索引表获得数据项在公共数据项信息数组中位置,获取全局空间数据项在公共数据项所拥有的数据数组中的起始偏移和全局空间数据项定义的大小,第二哈希索引表移除索引,释放内存,公共数据项信息数组释放内存,公共数据项所拥有的数据数组释放内存,公共数据项信息数组更新偏移量,第二哈希索引表重建索引;
根据全局空间数据项名,映射第二哈希索引表,遍历链表,匹配返回结果;
根据全局空间数据项名,映射第二哈希索引表,遍历链表,匹配返回节点中保存的全局空间数据项位置;
根据指定的全局空间数据项位置,获取数据项在公共数据项所拥有的数据数组中的起始偏移,再根据指定的公共数据项所拥有的数据数组中的位置,取得具体数据项的值;
根据指定的全局空间数据项位置,获取数据项在公共数据项所拥有的数据数组中的起始偏移,再根据指定的公共数据项所拥有的数据数组中的位置,取得具体数据项的值,修改为指定的新值。
8.根据权利要求7所述的全局空间数据共享方法,其特征在于,所述为全局空间数据赋值的步骤,是为全局空间数据的全局空间数据名哈希索引、数据类型、要求可容纳的数据数目、数据项在公共数据项所拥有的数据数组中的起始偏移赋值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811105543.4A CN109522306A (zh) | 2018-09-21 | 2018-09-21 | 一种全局空间及数据共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811105543.4A CN109522306A (zh) | 2018-09-21 | 2018-09-21 | 一种全局空间及数据共享方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109522306A true CN109522306A (zh) | 2019-03-26 |
Family
ID=65769759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811105543.4A Withdrawn CN109522306A (zh) | 2018-09-21 | 2018-09-21 | 一种全局空间及数据共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522306A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992701A (zh) * | 2019-04-11 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种链表实现方法、装置、设备及可读存储介质 |
CN111814007A (zh) * | 2020-07-31 | 2020-10-23 | 新华三信息安全技术有限公司 | 双向链表数据处理方法、装置、设备及机器可读存储介质 |
CN116028677A (zh) * | 2023-03-14 | 2023-04-28 | 阿里云计算有限公司 | 数据操作方法以及*** |
-
2018
- 2018-09-21 CN CN201811105543.4A patent/CN109522306A/zh not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992701A (zh) * | 2019-04-11 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种链表实现方法、装置、设备及可读存储介质 |
CN111814007A (zh) * | 2020-07-31 | 2020-10-23 | 新华三信息安全技术有限公司 | 双向链表数据处理方法、装置、设备及机器可读存储介质 |
CN111814007B (zh) * | 2020-07-31 | 2023-03-31 | 新华三信息安全技术有限公司 | 双向链表数据处理方法、装置、设备及机器可读存储介质 |
CN116028677A (zh) * | 2023-03-14 | 2023-04-28 | 阿里云计算有限公司 | 数据操作方法以及*** |
CN116028677B (zh) * | 2023-03-14 | 2023-08-29 | 阿里云计算有限公司 | 数据操作方法以及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105229980B (zh) | 利用可变关键字大小的精确匹配查找的方法及设备 | |
CN109522306A (zh) | 一种全局空间及数据共享方法 | |
US7558802B2 (en) | Information retrieving system | |
AU2002212843B2 (en) | Method and apparatus for data processing | |
US9195701B2 (en) | System and method for flexible distributed massively parallel processing (MPP) database | |
CN103324763B (zh) | 一种手机端树形数据结构的展现方法 | |
CN111190904B (zh) | 一种图-关系数据库混合存储的方法和装置 | |
CN101650646A (zh) | 一种共享数据一致性的实现方法及装置 | |
CN110413611A (zh) | 数据存储、查询方法及装置 | |
CN106156070B (zh) | 一种查询方法、文件合并方法与相关装置 | |
CN103336782B (zh) | 一种关系型分布式数据库*** | |
US11409698B2 (en) | Parallel materialisation of a set of logical rules on a logical database | |
CN104239337B (zh) | 基于tcam的查表处理方法及装置 | |
CN108628969B (zh) | 一种空间关键字索引方法及平台、存储介质 | |
CN111259062B (zh) | 一种能够保证分布式数据库全表查询语句结果集顺序的方法和装置 | |
US11567661B2 (en) | Virtual memory management method and processor | |
JP4362839B1 (ja) | 仮想単一メモリストレージ上におけるメタ情報共有型分散データベース・システム | |
CN109254962A (zh) | 一种基于t-树的索引优化方法及装置 | |
CN103761316A (zh) | 一种基于稀疏矩阵的数据压缩存储方法及装置 | |
CN110019229B (zh) | 数据库配置*** | |
CN107957865B (zh) | 一种神经元重建结果匹配方法 | |
CN116366548A (zh) | 一种IPv6子网的路由匹配方法 | |
CN113934742B (zh) | 数据更新方法、节点信息存储方法、电子设备及介质 | |
CN110209694A (zh) | 数据处理方法及装置 | |
CN107943927A (zh) | 一种分布式存储***中多维数据的存储模式转换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190326 |
|
WW01 | Invention patent application withdrawn after publication |