System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术实施例涉及数据处理,特别是涉及一种表项插入方法、装置、电子设备及存储介质。
技术介绍
1、在网络设备如mac(media access control,媒体访问控制)器或交换机中维护有mac表,该表记录有与上述网络设备相连的其它设备的mac地址及对应接口信息。对于到达mac器或交换机的数据包,网络设备可以在mac表中查找目标mac地址,进而找到对应接口,从而将数据包转发到正确的目标设备。因此,mac表是实现网络运行的关键部分。
2、在对mac表的使用过程中,网络设备往往会在mac表中插入表项,相关技术中可使用cuckoo-hash方式进行表项的插入。在使用cuckoo-hash方式插入目标表项到mac表的过程中,首先使用一个哈希函数计算出一个位置的索引,若该索引对应的位置为空,则将目标表项插入其中,插入过程结束;若该索引对应的位置不为空,则将该索引对应位置处原本存储的表项踢出,将目标表项插入其中,之后继续使用哈希函数为被踢出的表项寻找新的插入位置,重复上述过程,直至寻找到一个为空的位置或达到最大迭代次数,结束插入过程。
3、理论上,使用cuckoo-hash方式进行表项的插入具有常数时间复杂度,即o(1)。在极端情况下,mac表的规模很大,为完成表项插入所需的迭代次数过多,导致耗时过长,影响往mac表中插入表项的性能。
技术实现思路
1、本专利技术实施例的目的在于提供一种表项插入方法、装置、电子设备及存储介质,以减少插入表项所需的时间。具体技术方案
2、第一方面,本专利技术实施例提供了一种表项插入方法,上述方法包括:
3、确定表项待插入的目标位置;
4、判断上述目标位置是否为空;
5、若是,则将上述表项插入上述目标位置;
6、若否,则将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;
7、判断待选位置中的非局部已选位置是否为空;
8、若否,则将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;
9、基于查找到的为空的待选位置进行表项插入。
10、本专利技术一个实施例中,上述方法还包括:
11、在达到预设终止条件但未确定出为空的待选位置的情况下,将初始的目标位置确定为全局已选位置;
12、在插入新表项过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,则结束流程。
13、本专利技术一个实施例中,上述方法还包括:
14、若存在被删除表项,则去除与被删除表项所在空闲位置位于同一路径的全局已选位置,其中,与上述空闲位置位于同一路径表示:在单次表项插入的过程中与上述空闲位置均作为过目标位置。
15、本专利技术一个实施例中,在查找到为空的待选位置后,还包括:
16、去除已确定的局部已选位置。
17、本专利技术一个实施例中,使用哈希函数进行各位置的确定,上述基于查找到的为空的待选位置进行表项插入,包括:
18、基于查找到的为空的待选位置,按照布谷鸟-哈希cuckoo-hash方式进行表项插入。
19、第二方面,本专利技术实施例提供了一种表项插入装置,上述装置包括:
20、第一确定模块,用于确定表项待插入的目标位置;
21、第一判断模块,用于判断上述目标位置是否为空;
22、第一插入模块,用于在上述第一判断模块判断为是的情况下,将上述表项插入上述目标位置;
23、第二确定模块,用于在上述第一判断模块判断为否的情况下,将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;
24、第二判断模块,用于判断待选位置中的非局部已选位置是否为空;
25、确定与执行模块,用于在上述第二判断模块判断为否的情况下,将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;
26、第二插入模块,用于基于查找到的为空的待选位置进行表项插入。
27、本专利技术一个实施例中,上述装置还包括:
28、第三确定模块,用于在达到预设终止条件但未确定出为空的待选位置的情况下,将初始的目标位置确定为全局已选位置;
29、确定与结束模块,用于在插入新表项过程中,若所确定的初始目标位置或所有非局部已选位置的待选位置均为全局已选位置,则结束流程。
30、本专利技术一个实施例中,上述装置还包括:
31、第一去除模块,用于若存在被删除表项,则去除与被删除表项所在空闲位置位于同一路径的全局已选位置,其中,与上述空闲位置位于同一路径表示:在单次表项插入的过程中与上述空闲位置均作为过目标位置。
32、本专利技术一个实施例中,在查找到为空的待选位置后,还包括:
33、第二去除模块,用于去除已确定的局部已选位置。
34、本专利技术一个实施例中,使用哈希函数进行各位置的确定,上述第二插入模块,具体用于:
35、基于查找到的为空的待选位置,按照布谷鸟-哈希cuckoo-hash方式进行表项插入。
36、第三方面,本专利技术实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
37、存储器,用于存放计算机程序;
38、处理器,用于执行存储器上所存放的程序时,实现第一方面任一的方法步骤。
39、第四方面,本专利技术实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现第一方面任一的方法步骤。
40、本专利技术实施例有益效果:
41、本专利技术实施例提供一种表项插入方法,包括:确定表项待插入的目标位置;判断上述目标位置是否为空;若是,则将上述表项插入上述目标位置;若否,则将当前的目标位置确定为局部已选位置,确定当前目标位置处已存储表项的待选位置;判断待选位置中的非局部已选位置是否为空;若否,则将判断为非空的待选位置确定为局部已选位置,并作为新的目标位置,返回执行上述确定当前目标位置处已存储表项的待选位置的步骤,直至确定待选位置中的非局部已选位置为空;基于查找到的为空的待选位置进行表项插入。
42、由以上可见,在本专利技术实施例提供的方案中,在确定目标位置及待选位置的过程中,每次在判断出不为空的位置后,均会将该位置确定为局部已选位置,在后续的位置确定中,会跳过已确定出的局部已选位置,而只将判断为非空的待选位置作为新的目标位置,继续进行待选位置的确定,避免了无效、重复的位置判断,加快了确定出为空位置的进程,从而减少插入表项所需的时间本文档来自技高网...
【技术保护点】
1.一种表项插入方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1-3中任一项所述的方法,其特征在于,在查找到为空的待选位置后,还包括:
5.根据权利要求1-3中任一项所述的方法,其特征在于,使用哈希函数进行各位置的确定,所述基于查找到的为空的待选位置进行表项插入,包括:
6.一种表项插入装置,其特征在于,所述装置包括:
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
9.根据权利要求6-8中任一项所述的装置,其特征在于,在查找到为空的待选位置后,还包括:
10.根据权利要求6-8中任一项所述的装置,其特征在于,使用哈希函数进行各位置的确定,所述第二插入模块,具体用于:
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5中任一项所述的方法步骤。
...【技术特征摘要】
1.一种表项插入方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1-3中任一项所述的方法,其特征在于,在查找到为空的待选位置后,还包括:
5.根据权利要求1-3中任一项所述的方法,其特征在于,使用哈希函数进行各位置的确定,所述基于查找到的为空的待选位置进行表项插入,包括:
6.一种表项插入装置,其特征在于,所述装置包括:
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
8.根...
【专利技术属性】
技术研发人员:李铭洋,
申请(专利权)人:格创通信浙江有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。