System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别是涉及用于查询ip地址位置信息的数据结构优化方法和装置。
技术介绍
1、随着计算机技术的发展,为了实现灵活的网络划分,通常基于无类别域间路由(英文全称:classless inter-domain routing,简称为:cidr)对ip地址进行归类。
2、ip地址实际上是一种二进制序列。比如,ip地址(internet protocol address,互联网协议地址)127.0.0.1转换为二进制形式可以表示为“01111111.00000000.00000000.00000001”。
3、cidr使用斜线记法来表示ip地址块。比如,127.0.0.1/8中的“/8”表示网络地址的长度为8,即在ip地址的二进制形式中前8位是网络地址段,后24位是主机地址。因此,127.0.0.1/8实际上指的是一个包含256个ip地址的地址块,在这个地址块中的ip地址的网络地址段均为“01111111”。
4、在实现网络通信连接的过程中,存在确定出ip地址对应的位置信息的需求,该位置信息可以为ip地址所属国家、所属城市等区域。
5、由于每个地址块具有唯一的网络地址段,一个网络地址段对应唯一的区域位置信息。为了能够实现ip地址位置信息查询,通常将用于查询ip地址位置信息的数据按照预设的ip地址位置信息查询规则以二叉树的形式进行存储。
6、比如:地址块127.0.0.1/8的网络地址段为:11111110,11111110对应的位置信息是abc,创建二叉树的根节点
7、确定出目标二叉树后,可以基于目标二叉树实现ip地址的查询,具体查询过程如下:
8、获得待查询ip地址,若待查询ip地址的网络地址段由32位的二进制数字组成,基于32位二进制数字遍历目标二叉树,二进制参数为0时,在目标二叉树查询过程中走左边的节点,二进制参数为1时,在目标二叉树查询过程中走右边的节点,根据最后一个二进制参数遍历至最后一个的节点后,读取最后一个节点对应的位置信息,得到待查询ip地址对应的位置信息。
9、基于上述的描述,计算机根据0或1走到目标二叉树对应的某个节点时,都需要在查询过程中实现一次内存空间的访问,因此,现有的查询过程需要访问32次内存空间,但是,当目标二叉树对应的数据量庞大时,占据计算机系统的内存空间较大,当前基于目标二叉树查询ip地址对应的位置信息的方式将导致查询效率低。
技术实现思路
1、基于此,提供用于查询ip地址位置信息的数据结构优化方法和装置,用以解决现有技术中基于二叉树查询ip地址对应的位置信息的查询效率低的问题。
2、第一方面,提供一种用于查询ip地址位置信息的数据结构优化方法,所述方法包括:
3、获取初始数据,所述初始数据用于按照预设的ip地址位置信息查询规则以二叉树的形式存储位置信息,其中,所述初始数据包括多个节点,用于存储所述位置信息的所述节点为数据节点,用于存储两个节点信息的所述节点为非数据节点,所述节点信息用于确定所述非数据节点的子节点;
4、将所述初始数据中的第一目标节点中的两个所述节点信息替换为第一位置信息,得到第一目标数据,所述第一目标节点的两个所述子节点中的所述位置信息相同,所述第一位置信息为所述第一目标节点的子节点中的所述位置信息;和/或
5、对所述非数据节点去重,得到第二目标数据,使得所述初始数据或所述第一目标数据中的任意两个所述非数据节点中至少存在一个不同的所述节点信息。
6、通过上述的方法,对初始数据的数据结构进行优化,减少了初始数据占据计算机的存储空间的体积,从而能够提高确定出待查询ip地址的位置信息的效率。
7、在一个实施例中,所述将所述初始数据中的第一目标节点中的两个所述节点信息替换为第一位置信息,包括:
8、遍历所述初始数据,对每个所述非数据节点执行如下步骤:
9、根据所述非数据节点中的两个第一节点信息,确定两个第一节点;
10、若两个所述第一节点中存储有相同的所述位置信息,将所述非数据节点确定为所述第一目标节点,将所述第一节点中的所述位置信息确定为所述第一位置信息,将所述第一目标节点中的两个所述第一节点信息替换为所述第一位置信息。
11、通过上述的方法,将非数据节点的第一节点信息替换为第一节点第一位置信息,从而达到删除初始数据中的两个第一节点的目的,确保能够减小初始数据的体积。
12、在一个实施例中,在所述对所述非数据节点去重前,还包括:
13、对所述初始数据或所述第一目标数据中每个所述节点生成对应的节点标识;
14、和/或,
15、在所述对所述非数据节点去重后,还包括:
16、对所述第二目标数据中每个所述节点生成对应的节点标识。
17、通过上述的方法,对初始数据或者第一模板数据中的每个数据节点与每个非数据节点都作上节点标识,确保基于节点标识能够快速定位出初始数据或者第一模板数据中的节点。
18、在一个实施例中,所述节点标识在第一预设范围内对应所述非数据节点;
19、所述对所述非数据节点去重,包括:
20、创建第一映射表,所述第一映射表用于存储所述节点信息和节点标识组的映射关系;
21、遍历所述初始数据或所述第一目标数据,对其中的每个所述非数据节点执行如下步骤:
22、根据所述非数据节点中的第一节点信息,确定所述非数据节点的第一子节点;
23、若所述第一子节点中包括两个第二节点信息,将所述第一子节点确定为第二目标节点;
24、根据所述第二目标节点的两个第二子节点的所述节点标识,组成所述第二目标节点对应的目标节点标识组;
25、若所述第一映射表中不存在所述目标节点标识组,将所述目标节点标识组和用于确定所述第二目标节点的所述第一节点信息作为键值对写入所述第一映射表;
26、若所述第一映射表中存在所述目标节点标识组,从所述第一映射表中获得所述目标节点标识组对应的第二节点信息,将所述非数据节点中用于确定所述第二目标节点的所述第一节点信息替换成所述第二节点信息。
27、通过上述的方法,基于第一映射表对初始数据或者第一目标数据中非数据节点对应的节点标识组进行去重,使得不同的数据存储在不同的存储空间,避免在数据查询过程中访问各个存储空间,从而确保了查询位置信息的效率。
28、在一个实施例中,所述节点还用于存储访问标识,所述访问标识为初始值表征所述节点为待访问状态,所述访问标识为目标值表征所述节点为已访问状态;<本文档来自技高网...
【技术保护点】
1.一种用于查询IP地址位置信息的数据结构优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述将所述初始数据中的第一目标节点中的两个所述节点信息替换为第一位置信息,包括:
3.根据权利要求1或2所述的方法,其特征在于,在所述对所述非数据节点去重前,还包括:
4.根据权利要求3所述的方法,其特征在于,所述节点标识在第一预设范围内对应所述非数据节点;
5.根据权利要求3所述的方法,其特征在于,所述节点还用于存储访问标识,所述访问标识为初始值表征所述节点为待访问状态,所述访问标识为目标值表征所述节点为已访问状态;
6.一种IP地址位置信息的查询方法,其特征在于,包括:
7.根据权利要求6所述的方法,其特征在于,所述确定所述待查询IP地址对应的目标位置信息,包括:
8.根据权利要求7所述的方法,其特征在于,所述获取快速查询数组,包括:
9.根据权利要求7所述的方法,其特征在于,所述根据所述目标节点标识从目标位置信息数组和所述目标数据中确定出所述目标位置信息,包括:
>10.一种用于查询IP地址位置信息的数据结构优化装置,其特征在于,所述装置包括:
11.一种IP地址位置信息的查询装置,其特征在于,所述装置包括:
12.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9中任一项所述方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法。
...【技术特征摘要】
1.一种用于查询ip地址位置信息的数据结构优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述将所述初始数据中的第一目标节点中的两个所述节点信息替换为第一位置信息,包括:
3.根据权利要求1或2所述的方法,其特征在于,在所述对所述非数据节点去重前,还包括:
4.根据权利要求3所述的方法,其特征在于,所述节点标识在第一预设范围内对应所述非数据节点;
5.根据权利要求3所述的方法,其特征在于,所述节点还用于存储访问标识,所述访问标识为初始值表征所述节点为待访问状态,所述访问标识为目标值表征所述节点为已访问状态;
6.一种ip地址位置信息的查询方法,其特征在于,包括:
7.根据权利要求6所述的方法,其特征在于,所述确定所述待查询ip地址对应的目...
【专利技术属性】
技术研发人员:刘金松,施扬,申习之,
申请(专利权)人:成都卓拙科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。