CN117390029B - 一种表项插入方法、装置、电子设备及存储介质 - Google Patents
一种表项插入方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117390029B CN117390029B CN202311688898.1A CN202311688898A CN117390029B CN 117390029 B CN117390029 B CN 117390029B CN 202311688898 A CN202311688898 A CN 202311688898A CN 117390029 B CN117390029 B CN 117390029B
- Authority
- CN
- China
- Prior art keywords
- empty
- determining
- positions
- determined
- target position
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000003780 insertion Methods 0.000 claims abstract description 39
- 230000037431 insertion Effects 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims description 55
- 238000004891 communication Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 13
- 108090000248 Deleted entry Proteins 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 6
- 238000012966 insertion method Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种表项插入方法、装置、电子设备及存储介质,涉及数据处理技术领域,包括:确定表项待插入的目标位置;判断上述目标位置是否为空;若是,则将上述表项插入上述目标位置;若否,则将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;判断待选位置中的非局部已选位置是否为空;若否,则将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;基于查找到的为空的待选位置进行表项插入。应用本发明实施例提供的方案能够减少插入表项所需的时间。
Description
技术领域
本发明实施例涉及数据处理技术领域,特别是涉及一种表项插入方法、装置、电子设备及存储介质。
背景技术
在网络设备如MAC(Media Access Control,媒体访问控制)器或交换机中维护有MAC表,该表记录有与上述网络设备相连的其它设备的MAC地址及对应接口信息。对于到达MAC器或交换机的数据包,网络设备可以在MAC表中查找目标MAC地址,进而找到对应接口,从而将数据包转发到正确的目标设备。因此,MAC表是实现网络运行的关键部分。
在对MAC表的使用过程中,网络设备往往会在MAC表中插入表项,相关技术中可使用Cuckoo-Hash方式进行表项的插入。在使用Cuckoo-Hash方式插入目标表项到MAC表的过程中,首先使用一个哈希函数计算出一个位置的索引,若该索引对应的位置为空,则将目标表项插入其中,插入过程结束;若该索引对应的位置不为空,则将该索引对应位置处原本存储的表项踢出,将目标表项插入其中,之后继续使用哈希函数为被踢出的表项寻找新的插入位置,重复上述过程,直至寻找到一个为空的位置或达到最大迭代次数,结束插入过程。
理论上,使用Cuckoo-Hash方式进行表项的插入具有常数时间复杂度,即O(1)。在极端情况下,MAC表的规模很大,为完成表项插入所需的迭代次数过多,导致耗时过长,影响往MAC表中插入表项的性能。
发明内容
本发明实施例的目的在于提供一种表项插入方法、装置、电子设备及存储介质,以减少插入表项所需的时间。具体技术方案如下:
第一方面,本发明实施例提供了一种表项插入方法,上述方法包括:
确定表项待插入的目标位置;
判断上述目标位置是否为空;
若是,则将上述表项插入上述目标位置;
若否,则将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;
判断待选位置中的非局部已选位置是否为空;
若否,则将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;
基于查找到的为空的待选位置进行表项插入。
本发明一个实施例中,上述方法还包括:
在达到预设终止条件但未确定出为空的待选位置的情况下,将初始的目标位置确定为全局已选位置;
在插入新表项过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,则结束流程。
本发明一个实施例中,上述方法还包括:
若存在被删除表项,则去除与被删除表项所在空闲位置位于同一路径的全局已选位置,其中,与上述空闲位置位于同一路径表示:在单次表项插入的过程中与上述空闲位置均作为过目标位置。
本发明一个实施例中,在查找到为空的待选位置后,还包括:
去除已确定的局部已选位置。
本发明一个实施例中,使用哈希函数进行各位置的确定,上述基于查找到的为空的待选位置进行表项插入,包括:
基于查找到的为空的待选位置,按照布谷鸟-哈希Cuckoo-Hash方式进行表项插入。
第二方面,本发明实施例提供了一种表项插入装置,上述装置包括:
第一确定模块,用于确定表项待插入的目标位置;
第一判断模块,用于判断上述目标位置是否为空;
第一插入模块,用于在上述第一判断模块判断为是的情况下,将上述表项插入上述目标位置;
第二确定模块,用于在上述第一判断模块判断为否的情况下,将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;
第二判断模块,用于判断待选位置中的非局部已选位置是否为空;
确定与执行模块,用于在上述第二判断模块判断为否的情况下,将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;
第二插入模块,用于基于查找到的为空的待选位置进行表项插入。
本发明一个实施例中,上述装置还包括:
第三确定模块,用于在达到预设终止条件但未确定出为空的待选位置的情况下,将初始的目标位置确定为全局已选位置;
确定与结束模块,用于在插入新表项过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,则结束流程。
本发明一个实施例中,上述装置还包括:
第一去除模块,用于若存在被删除表项,则去除与被删除表项所在空闲位置位于同一路径的全局已选位置,其中,与上述空闲位置位于同一路径表示:在单次表项插入的过程中与上述空闲位置均作为过目标位置。
本发明一个实施例中,在查找到为空的待选位置后,还包括:
第二去除模块,用于去除已确定的局部已选位置。
本发明一个实施例中,使用哈希函数进行各位置的确定,上述第二插入模块,具体用于:
基于查找到的为空的待选位置,按照布谷鸟-哈希Cuckoo-Hash方式进行表项插入。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现第一方面任一的方法步骤。
本发明实施例有益效果:
本发明实施例提供一种表项插入方法,包括:确定表项待插入的目标位置;判断上述目标位置是否为空;若是,则将上述表项插入上述目标位置;若否,则将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;判断待选位置中的非局部已选位置是否为空;若否,则将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;基于查找到的为空的待选位置进行表项插入。
由以上可见,在本发明实施例提供的方案中,在确定目标位置及待选位置的过程中,每次在判断出不为空的位置后,均会将该位置确定为局部已选位置,在后续的位置确定中,会跳过已确定出的局部已选位置,而只将判断为非空的待选位置作为新的目标位置,继续进行待选位置的确定,避免了无效、重复的位置判断,加快了确定出为空位置的进程,从而减少插入表项所需的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本发明实施例提供的一种表项插入方法的流程示意图;
图2为本发明实施例提供的一种表项插入路径的示意图;
图3为本发明实施例提供的一种表项插入装置的结构示意图;
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本发明所获得的所有其他实施例,都属于本发明保护的范围。
相关技术在向表中插入表项的过程中,会出现表的规模较大、重复查找表项位置的情况,导致为完成表项插入所需的迭代次数过多、耗时过长,影响往表中插入表项的性能。
为了解决上述问题,本发明实施例提供了一种表项插入方法、装置、电子设备及存储介质,下面分别进行具体说明。
首先,对本发明实施例提供的一种表项插入方法进行说明。
参见图1,为本发明实施例提供的一种表项插入方法的流程示意图,上述方法包括以下步骤S101至步骤S108。
步骤S101:确定表项待插入的目标位置。
在获取到要插入表中的表项后,可以根据预设的规则来确定该表项待插入的目标位置。
在一种示例性中,预先设置有表项数据类型与待插入的目标位置的对应关系,则在确定表项的数据类型后,便可根据上述对应关系确定出表项待插入的目标位置。
在另一种示例中,可以使用预设函数处理表项来确定表项待插入的目标位置。
本发明一个实施例中,使用哈希函数进行各位置的确定,也就是使用哈希函数处理表项,确定出表项待插入的目标位置。
步骤S102:判断上述目标位置是否为空。
对确定出的目标位置进行检测,判断该目标位置处是否填充有数据,从而判断该目标位置是否为空。具体的,若判断出上述目标位置为空,则执行下述步骤S103;若判断出上述目标位置不为空,则执行下述步骤S104。
步骤S103:将上述表项插入上述目标位置。
若判断出上述目标位置处未填充有数据,即上述目标位置为空,则可直接将上述表项插入上述目标位置,完成表项插入。
步骤S104:将当前的目标位置确定为局部已选位置。
若判断出上述目标位置处填充有数据,即上述目标位置不为空,存在已存储表项,将当前的目标位置确定为局部已选位置。
在一种示例中,可以开辟一块局部已选位置记录存储空间,用以记录当前不为空的目标位置的地址,将当前的目标位置确定为局部已选位置,也就是若存在表中一个位置的地址被记录于上述局部已选位置记录存储空间,则确定记录的地址对应的位置为局部已选位置。
在另一种示例中,可以为当前不为空的目标位置设置局部已选标识,也就是若表中的一个位置存在局部已选标识,则确定该位置为局部已选位置。具体的,局部已选标识可以是数字、字母、字符、字符串等。
步骤S105:确定当前目标位置处已存储表项的待选位置。
具体的,按照步骤S101中描述的确定目标位置的方式,确定当前目标位置处已存储表项的待选位置。
步骤S106:判断待选位置中的非局部已选位置是否为空。
在步骤S105中确定出的待选位置中,可能存在已确定为局部已选位置的待选位置。根据在确定待选位置中使用的函数、参数的不同,每次确定出的待选位置的数量可能不同,如每次确定出的待选位置的数量可能是1个,也可能是2个或3个等。
由于局部已选位置为已经判断过不为空的位置,因此不需要对已判断出不为空的待选位置再进行判断,只需要对待选位置中的非局部已选位置进行是否为空的判断。具体的,对待选位置中的所有非局部已选位置的处理方式相同,并行进行是否为空的判断并执行后续步骤。
若判断出待选位置中的非局部已选位置为空,则执行下述步骤S108;若判断出待选位置中的非局部已选位置不为空,则执行下述步骤S107。
步骤S107:将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置。
在判断出待选位置中的非局部已选位置不为空的情况下,则需继续进行为空位置的查找确定。在这种情况下,将判断出的非空待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述步骤S105、步骤S106及其之后的步骤,直至确定待选位置中的非局部已选位置为空。
步骤S108:基于查找到的为空的待选位置进行表项插入。
在确定出为空的待选位置后,便可进行表项的插入。
在一种示例中,将表项插入步骤S101中确定出的目标位置,即插入初始的目标位置处,并将原存于初始的目标位置处的表项插入确定出的空的待选位置处。
本发明一个实施例中,使用哈希函数进行各位置的确定,上述步骤S108可通过以下步骤A实现。
步骤A:基于查找到的为空的待选位置,按照Cuckoo-Hash方式进行表项插入。
具体的,按照Cuckoo-Hash中对数据进行踢出、插入的方式进行表项插入。
以下通过一个示例,该Cuckoo-Hash通过3个哈希函数来解决冲突,对表项插入的路径过程进行描述,具体如下:
参见图2,为本发明实施例提供的一种表项插入路径的示意图,图2中的字母或数字表示表项位置,数字代表空位。按照步骤S104中描述的方式记录确定出的局部已选位置,具体的,可通过设置的局部已选标识来指示局部已选位置,例如,对于图2,可建立当前表空间的Bitmap(位图),若确定一个表项位置为局部已选位置,则将该表项位置的Bit(比特)位设置为1,也就是上述局部已选标识便是Bit位为1。另外,上述局部已选标识也可以是0,本发明实施例对此不进行限定。
按照步骤S101及步骤S104中描述的方式确定目标位置及待选位置,具体的,可使用Cuckoo-Hash中的哈希函数来计算确定目标位置及待选位置,所使用的哈希函数的参数可根据需求预先设置。
在图2中,首先计算出待插入表项要插入的目标位置A,在判断出目标位置A不为空后,将目标位置A确定为局部已选位置,体现在图2中,便是将位置A显示为灰色,并计算出目标位置A处已存储表项的待选位置:位置B与位置C。
之后,判断位置B、位置C是否为空,在判断出位置B不为空后,将位置B确定为局部已选位置,体现在图2中,便是将位置B显示为灰色,并作为新的目标位置,计算出位置B处已存储表项的待选位置:位置C与位置D;在判断出位置C不为空后,将位置C确定为局部已选位置,体现在图2中,便是将位置C显示为灰色,并作为新的目标位置,计算出位置C处已存储表项的待选位置:位置D与位置E。
由于已将位置C确定为局部已选位置,对于计算出的位置B处已存储表项的待选位置:位置C与位置D,便跳过位置C,不再对位置C进行判断,而只对位置D进行判断,在判断出位置D不为空后,将位置D确定为局部已选位置,体现在图2中,便是将位置D显示为灰色,并作为新的目标位置,计算出位置D处已存储表项的待选位置:位置E与位置F;对于计算出的位置C处已存储表项的待选位置:位置D与位置E,由于已将位置D确定为局部已选位置,故跳过位置D,不再对位置D进行判断,而只对位置E进行判断,在判断出位置E不为空后,将位置E确定为局部已选位置,体现在图2中,便是将位置E显示为灰色,并作为新的目标位置,计算出位置E处已存储表项的待选位置:位置F与位置G。
由于已将位置E确定为局部已选位置,对于计算出的位置D处已存储表项的待选位置:位置E与位置F,便跳过位置E,不再对位置E进行判断,而只对位置F进行判断,在判断出位置F不为空后,将位置F确定为局部已选位置,体现在图2中,便是将位置F显示为灰色,并作为新的目标位置,计算出位置F处已存储表项的待选位置:位置G与位置7;对于计算出的位置E处已存储表项的待选位置:位置F与位置G,由于已将位置F确定为局部已选位置,故跳过位置F,不再对位置F进行判断,而只对位置G进行判断,在判断出位置G不为空后,将位置G确定为局部已选位置,体现在图2中,便是将位置G显示为灰色,并作为新的目标位置,计算出位置G处已存储表项的待选位置:位置7与位置8。
由于已将位置G确定为局部已选位置,对于计算出的位置F处已存储表项的待选位置:位置G与位置7,便跳过位置G,不再对位置G进行判断,而只对位置7进行判断。在图2中,判断出位置7为空,从而可以进行表项插入。之后在位置7中插入表项后,位置7便不为空,体现在图2中,便是将位置7显示为灰色。
由以上描述可知,在图2中,存在两条路径可查找到为空的位置7。第一条路径为:位置A→位置B→位置D→位置F→位置7,第二条路径为:位置A→位置C→位置E→位置G→位置7。具体的,在查找到为空的位置后,便进行表项的插入。例如,若首先经位置F查找到为空的位置7,则不再进行为空位置的查找,直接按上述第一条路径完成表项的插入;若首先经位置G查找到为空的位置7,则不再进行为空位置的查找,直接按上述第二条路径完成表项的插入。示例性的,采用上述第一条路径进行表项的插入,按照Cuckoo-Hash中对数据进行踢出、插入的方式进行表项插入,可描述如下:将位置A处已存储的表项踢出,将获取的要插入表中的表项插入位置A;将位置B处已存储的表项踢出,将从位置A处踢出的表项插入位置B;将位置D处已存储的表项踢出,将从位置B处踢出的表项插入位置D;将位置F处已存储的表项踢出,将从位置D处踢出的表项插入位置F;将从位置F处踢出的表项插入位置7,完成表项插入。
在实际进行表项插入、查找为空位置的过程中,会基于实际考量设置位置查找终止条件,在一种示例中,位置查找终止条件可设置如下:
(1)若查找到为空的位置,则终止位置查找;
(2)若遍历了表中所有的位置,仍未查找到为空的位置,则终止位置查找;
(3)若待选位置均为已查找过的非空位置,则终止位置查找。
在另一种示例中,位置查找终止条件可为:达到预设位置查找次数后停止本次为空位置查找,具体的,可认为每次对确定出的位置完成是否为空的判断便是进行了一次位置查找。
由以上可见,在本发明实施例提供的方案中,在确定目标位置及待选位置的过程中,每次在判断出不为空的位置后,均会将该位置确定为局部已选位置,在后续的位置确定中,会跳过已确定出的局部已选位置,而只将判断为非空的待选位置作为新的目标位置,继续进行待选位置的确定,避免了无效、重复的位置判断,加快了确定出为空位置的进程,从而减少插入表项所需的时间。
在一次插入表项、查找为空位置的过程结束后,为了使得已确定的局部已选位置不对后续插入表项、查找位置过程造成影响,本发明一个实施例中,在查找到为空的待选位置后,还包括以下步骤B。
步骤B:去除已确定的局部已选位置。
具体的,去除已确定的局部已选位置是指改变之前确定的局部已选位置的身份状态,将表中的所有位置均确定为非局部已选位置。
在一种示例中,将局部已选位置记录存储空间中记录的地址对应的位置确定为局部已选位置,则去除已确定的局部已选位置指将局部已选位置记录存储空间中记录的地址全部进行删除,从而不存在局部已选位置,表中的位置均为非局部已选位置。
在另一种示例中,使用局部已选标识指示局部已选位置,则去除已确定的局部已选位置指清除所有局部已选标识,从而不存在局部已选位置,表中的位置均为非局部已选位置。
另外,无论是否查找到为空的待选位置,只要终止了当前的为空位置查找过程,均执行步骤B,去除已确定的局部已选位置,以避免对下一次的为空位置查找过程造成影响。
由以上可见,在本发明实施例提供的方案中,在查找到为空的待选位置,终止当前的为空位置查找过程后,去除已确定的局部已选位置,能够避免对下一次插入表项、查找为空位置的过程造成影响。
在一次插入表项、查找为空位置的过程结束后,为了尽可能利用该次查找为空位置过程的结果来加快后续查找为空位置过程,本发明一个实施例中,还包括以下步骤C与步骤D。
步骤C:在达到预设终止条件但未确定出为空的待选位置的情况下,将初始的目标位置确定为全局已选位置。
具体的,预设终止条件即为上述位置查找终止条件。以图2为例,若在判断出位置7与位置8均不为空后达到预设终止条件,则将初始的目标位置A确定为全局已选位置,表示若从位置A开始进行为空位置的查找,则在达到预设终止条件的情况下,也无法查找到为空位置。
在一种示例中,可以开辟一块全局已选位置记录存储空间,用以记录确定出的全局已选位置的地址,也就是若存在表中一个位置的地址被记录于上述全局已选位置记录存储空间,则确定记录的地址对应的位置为全局已选位置。
在另一种示例中,可以为确定出的全局已选位置设置全局已选标识,也就是若表中的一个位置存在全局已选标识,则确定该位置为全局已选位置。具体的,全局已选标识可以是数字、字母、字符、字符串等。可使用列表的形式记录全局已选位置、全局已选标识,如下表1所示,为全局已选位置记录表。
表1
;
表1为一种示例,从表1中可以看出,使用Bit组来设置全局已选标识,若位置A、位置B、位置C为全局已选位置,则将位置A、位置B、位置C各自对应的Bit组均设置为111。也就是通过查找表1,若发现一个位置的Bit组为111,便表明该位置为全局已选位置。具体的,将Bit组设置为111只是一种示例,还可将Bit组设置为11或1111等,根据实际需要设置即可。
步骤D:在插入新表项过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,则结束流程。
具体的,在插入新表项的过程中,若发现确定的初始目标位置为全局已选位置,则表明若从该初始目标位置开始进行为空位置的查找,则直至达到预设终止条件,也无法找到为空位置,故在确定的初始目标位置为全局已选位置的情况下,便直接结束流程,即结束本次为空位置查找。
若在对初始目标位置进行判断后,继续进行为空位置查找的过程中,发现所有非局部已选位置的待选位置均为全局已选位置,表明若再继续进行为空位置的查找,直至达到预设终止条件,也无法找到为空位置,故在此情况下也直接结束本次为空位置查找。
另外,若在对初始目标位置进行判断后,继续进行为空位置查找的过程中,发现部分非局部已选位置的待选位置为全局已选位置,则不再从上述部分非局部已选位置的待选位置处进行为空位置的查找,只从不为全局已选位置的非局部已选位置的待选位置处继续进行为空位置的查找。例如在图2中,从初始位置A确定出位置B与位置C后,若发现位置B为全局已选位置,位置C不为全局已选位置,则不再从位置B处进行为空位置查找,只从位置C处继续进行为空位置的查找。
由以上可见,在本发明实施例提供的方案中,通过设置全局已选位置,在后续插入新表项的过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,表明若再继续进行为空位置的查找,则直至达到预设终止条件,也无法找到为空位置,故在此情况下直接结束本次为空位置查找,从而加快了每次完成查找为空位置过程的速度。
上述确定的全局已选位置表示,从该位置出发进行为空位置的查找,直至达到预设终止条件,也无法找到为空位置。而在表中存在表项删除的情况下,有可能出现从已确定的全局已选位置开始进行为空位置查找,查找到为空位置的情况。为此,本发明一个实施例中,还包括以下步骤E。
步骤E:若存在被删除表项,则去除与被删除表项所在空闲位置位于同一路径的全局已选位置。
其中,与上述空闲位置位于同一路径表示:在单次表项插入的过程中与上述空闲位置均作为过目标位置。
在一种示例中,如前述的图2中的两条路径,第一条路径为:位置A→位置B→位置D→位置F→位置7,第二条路径为:位置A→位置C→位置E→位置G→位置7,则位置A、位置B、位置C、位置D、位置E、位置F、位置G、位置7为位于同一路径的位置。若在达到预设终止条件下最后判断过的位置7不为空,则确定位置A为全局已选位置,在此情形下,若在位置A、位置B、位置C、位置D、位置E、位置F、位置G、位置7中的任一位置处存在表项被删除,从位置A开始进行位置查找可以查找到为空位置,位置A不再满足作为全局已选位置的条件,则上述去除与被删除表项所在空闲位置位于同一路径的全局已选位置即指,不再将位置A确定为全局已选位置。
在一种示例中,将全局已选位置记录存储空间中记录的地址对应的位置确定为全局已选位置,则去除全局已选位置指将全局已选位置记录存储空间中记录的目标地址进行删除,其中,上述目标地址为待去除的全局已选位置的地址。
在另一种示例中,使用全局已选标识指示全局已选位置,则去除全局已选位置指清除该全局已选位置对应的全局已选标识,不具有全局已选标识的位置便不是全局已选位置。
由以上可见,在本发明实施例提供的方案中,通过去除与被删除表项所在空闲位置位于同一路径的全局已选位置,从而能够根据表项的变化情况及时调整全局已选位置,对不再满足条件的全局已选位置进行去除,使得后续进行的位置查找过程不会出现遗漏。
与前述的一种表项插入方法相对应,本发明实施例还提供了一种表项插入装置。
参见图3,为本发明实施例提供的一种表项插入装置的结构示意图,上述装置包括:
第一确定模块301,用于确定表项待插入的目标位置。
第一判断模块302,用于判断上述目标位置是否为空。
第一插入模块303,用于在上述第一判断模块302判断为是的情况下,将上述表项插入上述目标位置。
第二确定模块304,用于在上述第一判断模块302判断为否的情况下,将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置。
第二判断模块305,用于判断待选位置中的非局部已选位置是否为空。
确定与执行模块306,用于在上述第二判断模块305判断为否的情况下,将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空。
第二插入模块307,用于基于查找到的为空的待选位置进行表项插入。
由以上可见,在本发明实施例提供的方案中,在确定目标位置及待选位置的过程中,每次在判断出不为空的位置后,均会将该位置确定为局部已选位置,在后续的位置确定中,会跳过已确定出的局部已选位置,而只将判断为非空的待选位置作为新的目标位置,继续进行待选位置的确定,避免了无效、重复的位置判断,加快了确定出为空位置的进程,从而减少插入表项所需的时间。
本发明一个实施例中,上述装置还包括:
第三确定模块308,用于在达到预设终止条件但未确定出为空的待选位置的情况下,将初始的目标位置确定为全局已选位置。
确定与结束模块309,用于在插入新表项过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,则结束流程。
由以上可见,在本发明实施例提供的方案中,通过设置全局已选位置,在后续插入新表项的过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,表明若再继续进行为空位置的查找,则直至达到预设终止条件,也无法找到为空位置,故在此情况下直接结束本次为空位置查找,从而加快了每次完成查找为空位置过程的速度。
本发明一个实施例中,上述装置还包括:
第一去除模块310,用于若存在被删除表项,则去除与被删除表项所在空闲位置位于同一路径的全局已选位置。
其中,与上述空闲位置位于同一路径表示:在单次表项插入的过程中与上述空闲位置均作为过目标位置。
由以上可见,在本发明实施例提供的方案中,通过去除与被删除表项所在空闲位置位于同一路径的全局已选位置,从而能够根据表项的变化情况及时调整全局已选位置,对不再满足条件的全局已选位置进行去除,使得后续进行的位置查找过程不会出现遗漏。
本发明一个实施例中,在查找到为空的待选位置后,上述装置还包括:
第二去除模块311,用于去除已确定的局部已选位置。
由以上可见,在本发明实施例提供的方案中,在查找到为空的待选位置,终止当前的为空位置查找过程后,去除已确定的局部已选位置,能够避免对下一次插入表项、查找为空位置的过程造成影响。
本发明一个实施例中,使用哈希函数进行各位置的确定,上述第二插入模块307,具体用于:
基于查找到的为空的待选位置,按照Cuckoo-Hash方式进行表项插入。
参见图4,为本发明实施例提供的一种电子设备的结构示意图,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信;
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现前述表项插入方法中任一项的步骤。
由以上可见,在本发明实施例提供的方案中,在确定目标位置及待选位置的过程中,每次在判断出不为空的位置后,均会将该位置确定为局部已选位置,在后续的位置确定中,会跳过已确定出的局部已选位置,而只将判断为非空的待选位置作为新的目标位置,继续进行待选位置的确定,避免了无效、重复的位置判断,加快了确定出为空位置的进程,从而减少插入表项所需的时间。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一表项插入方法的步骤。
应用本发明实施例提供的计算机可读存储介质中存储的计算机程序进行表项插入时,在确定目标位置及待选位置的过程中,每次在判断出不为空的位置后,均会将该位置确定为局部已选位置,在后续的位置确定中,会跳过已确定出的局部已选位置,而只将判断为非空的待选位置作为新的目标位置,继续进行待选位置的确定,避免了无效、重复的位置判断,加快了确定出为空位置的进程,从而减少插入表项所需的时间。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一表项插入方法。
应用本发明实施例提供的计算机程序产品进行表项插入时,在确定目标位置及待选位置的过程中,每次在判断出不为空的位置后,均会将该位置确定为局部已选位置,在后续的位置确定中,会跳过已确定出的局部已选位置,而只将判断为非空的待选位置作为新的目标位置,继续进行待选位置的确定,避免了无效、重复的位置判断,加快了确定出为空位置的进程,从而减少插入表项所需的时间。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种表项插入方法,其特征在于,所述方法包括:
确定表项待插入的目标位置,所述表项为媒体访问控制MAC表中的表项;
判断所述目标位置是否为空;
若是,则将所述表项插入所述目标位置;
若否,则将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;
判断待选位置中的非局部已选位置是否为空;
若否,则将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行所述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;
基于查找到的为空的待选位置进行表项插入,去除确定的局部已选位置;
在插入表项的过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,去除确定的局部已选位置,结束流程,所述全局已选位置为在一次表项插入过程中,达到预设终止条件仍未确定出为空的待选位置的情况下,该次表项插入过程中初始的目标位置。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若存在被删除表项,则去除与被删除表项所在空闲位置位于同一路径的全局已选位置,其中,与所述空闲位置位于同一路径表示:在单次表项插入的过程中与所述空闲位置均作为过目标位置。
3.根据权利要求1或2所述的方法,其特征在于,使用哈希函数进行各位置的确定,所述基于查找到的为空的待选位置进行表项插入,包括:
基于查找到的为空的待选位置,按照布谷鸟-哈希Cuckoo-Hash方式进行表项插入。
4.一种表项插入装置,其特征在于,所述装置包括:
第一确定模块,用于确定表项待插入的目标位置,所述表项为媒体访问控制MAC表中的表项;
第一判断模块,用于判断所述目标位置是否为空;
第一插入模块,用于在所述第一判断模块判断为是的情况下,将所述表项插入所述目标位置;
第二确定模块,用于在所述第一判断模块判断为否的情况下,将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;
第二判断模块,用于判断待选位置中的非局部已选位置是否为空;
确定与执行模块,用于在所述第二判断模块判断为否的情况下,将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行所述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;
第二插入模块,用于基于查找到的为空的待选位置进行表项插入,去除确定的局部已选位置;
确定与结束模块,用于在插入表项的过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,去除确定的局部已选位置,结束流程,所述全局已选位置为在一次表项插入过程中,达到预设终止条件仍未确定出为空的待选位置的情况下,该次表项插入过程中初始的目标位置。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
第一去除模块,用于若存在被删除表项,则去除与被删除表项所在空闲位置位于同一路径的全局已选位置,其中,与所述空闲位置位于同一路径表示:在单次表项插入的过程中与所述空闲位置均作为过目标位置。
6.根据权利要求4或5所述的装置,其特征在于,使用哈希函数进行各位置的确定,所述第二插入模块,具体用于:
基于查找到的为空的待选位置,按照布谷鸟-哈希Cuckoo-Hash方式进行表项插入。
7.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-3中任一的方法步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-3中任一的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311688898.1A CN117390029B (zh) | 2023-12-11 | 2023-12-11 | 一种表项插入方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311688898.1A CN117390029B (zh) | 2023-12-11 | 2023-12-11 | 一种表项插入方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117390029A CN117390029A (zh) | 2024-01-12 |
CN117390029B true CN117390029B (zh) | 2024-05-17 |
Family
ID=89472495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311688898.1A Active CN117390029B (zh) | 2023-12-11 | 2023-12-11 | 一种表项插入方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117390029B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008037201A1 (fr) * | 2006-09-29 | 2008-04-03 | Huawei Technologies Co., Ltd. | Procédé et appareil permettant de résoudre une collision de hachage |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN102194002A (zh) * | 2011-05-25 | 2011-09-21 | 中兴通讯股份有限公司 | 哈希表的表项添加、删除、查找方法及哈希表存储装置 |
CN104182393A (zh) * | 2013-05-21 | 2014-12-03 | 中兴通讯股份有限公司 | 基于hash表的关键字映射处理方法和装置 |
CN107888588A (zh) * | 2017-11-09 | 2018-04-06 | 上海海事大学 | 一种指定目标结点集合的k最大概率攻击路径求解方法 |
CN111352931A (zh) * | 2018-12-21 | 2020-06-30 | 中兴通讯股份有限公司 | 一种哈希冲突的处理方法、装置及计算机可读存储介质 |
CN113094336A (zh) * | 2021-04-01 | 2021-07-09 | 中山大学 | 基于Cuckoo哈希的文件系统目录管理方法及系统 |
CN116069682A (zh) * | 2023-02-07 | 2023-05-05 | 迈普通信技术股份有限公司 | 表项存储方法、装置、交换芯片、网络设备和存储介质 |
CN116662355A (zh) * | 2023-04-12 | 2023-08-29 | 北京人大金仓信息技术股份有限公司 | 无效索引的标记方法、存储介质和计算机设备 |
CN116991855A (zh) * | 2023-09-27 | 2023-11-03 | 深圳大普微电子股份有限公司 | 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9892057B2 (en) * | 2016-03-31 | 2018-02-13 | Mellanox Technologies Tlv Ltd. | Single double cuckoo hash |
-
2023
- 2023-12-11 CN CN202311688898.1A patent/CN117390029B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008037201A1 (fr) * | 2006-09-29 | 2008-04-03 | Huawei Technologies Co., Ltd. | Procédé et appareil permettant de résoudre une collision de hachage |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN102194002A (zh) * | 2011-05-25 | 2011-09-21 | 中兴通讯股份有限公司 | 哈希表的表项添加、删除、查找方法及哈希表存储装置 |
CN104182393A (zh) * | 2013-05-21 | 2014-12-03 | 中兴通讯股份有限公司 | 基于hash表的关键字映射处理方法和装置 |
CN107888588A (zh) * | 2017-11-09 | 2018-04-06 | 上海海事大学 | 一种指定目标结点集合的k最大概率攻击路径求解方法 |
CN111352931A (zh) * | 2018-12-21 | 2020-06-30 | 中兴通讯股份有限公司 | 一种哈希冲突的处理方法、装置及计算机可读存储介质 |
CN113094336A (zh) * | 2021-04-01 | 2021-07-09 | 中山大学 | 基于Cuckoo哈希的文件系统目录管理方法及系统 |
CN116069682A (zh) * | 2023-02-07 | 2023-05-05 | 迈普通信技术股份有限公司 | 表项存储方法、装置、交换芯片、网络设备和存储介质 |
CN116662355A (zh) * | 2023-04-12 | 2023-08-29 | 北京人大金仓信息技术股份有限公司 | 无效索引的标记方法、存储介质和计算机设备 |
CN116991855A (zh) * | 2023-09-27 | 2023-11-03 | 深圳大普微电子股份有限公司 | 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 |
Non-Patent Citations (2)
Title |
---|
A collision-mitigation hashing scheme utilizing empty slots of cuckoo hash table;ChoongHee Cho 等;IEEE;20170330;第1-4页 * |
分布式缓存系统的内存利用率和并发性能优化机制;杨娣;中国优秀硕士学位论文全文数据库 (信息科技辑);20141015;I137-16 * |
Also Published As
Publication number | Publication date |
---|---|
CN117390029A (zh) | 2024-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103780490B (zh) | 一种更新路由查找树的方法及装置 | |
CN106445476B (zh) | 一种代码变更信息确定方法、装置及电子设备 | |
US20180307700A1 (en) | Method and apparatus for scanning files and intelligent terminal | |
CN109189759B (zh) | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 | |
CN110888837A (zh) | 对象存储小文件归并方法及装置 | |
CN114995759A (zh) | 桶分片处理方法、装置、设备及介质 | |
CN117390029B (zh) | 一种表项插入方法、装置、电子设备及存储介质 | |
CN111539206B (zh) | 一种确定敏感信息的方法、装置、设备及存储介质 | |
CN117473984A (zh) | 一种txt文档内容章节划分方法和系统 | |
CN112565091A (zh) | 一种报文转发方法、装置、存储介质及终端设备 | |
CN109086220B (zh) | 一种回收存储空间的方法和装置 | |
US20170262368A1 (en) | Linked-list-based method and device for application caching management | |
CN109857366B (zh) | 基于外存的插入排序方法、系统、设备及存储介质 | |
CN113821630A (zh) | 一种数据聚类的方法和装置 | |
CN108307001B (zh) | Mac地址老化方法、装置及电子设备 | |
CN110727895A (zh) | 一种敏感词发送方法、装置、电子设备及存储介质 | |
CN115827280A (zh) | 消息处理方法、装置、电子设备及存储介质 | |
JP4549571B2 (ja) | フォールスパス検出装置、フォールスパス検出方法およびそのプログラム | |
CN110990611B (zh) | 图片缓存方法、装置、电子设备及存储介质 | |
CN107870925B (zh) | 一种字符串过滤方法和相关装置 | |
AU2016277745B2 (en) | Linked-list-based method and device for application caching management | |
CN108446144A (zh) | 一种应用程序启动方法、装置、终端及存储介质 | |
CN102110117A (zh) | 用于最长匹配的b树的表项添加、查找、删除方法及装置 | |
CN110413215B (zh) | 用于获取访问权限的方法、设备和计算机程序产品 | |
EP2164005B1 (en) | Content addressable storage systems and methods employing searchable blocks |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |