如何快速查找IP归属地
这两天遇到这么一个问题就是查找一个IP的归属地。当然我会有一个IP段的分配列表格式如下
16777472 16778239 XX省XX市
第一列是IP段的起始IP第二列是IP段的终止IP第三列是对应的省份。一共大概200万条左右。
那么好了如何进行查找呢
想到的最简单的办法就是二分查找。首先对这些IP段进行首位相接的排序之后一个二分查找。那么有没有比这个还快的方法呢
我们分析一下上面的二分查找的一个缺点就是要在所有的IP段上进行二分查找大概要查找log(2000000)次才能找到一个IP的归属地。那么我们一个自然的想法就是缩小二分的IP段的数量。可以这样做
根据IP的前两个字节把IP段进行分组。之后在对要查找的IP首先根据IP的前两个字节快速定位到某一个分组之后在这个分组中进行查找。 由于分组后每一个组中的IP段会少很多。所以这个方法要比赤裸裸的二分快50%左右。
左面代表所有两字节组合每个单元都有两个索引记录其在右侧数组中的起始位置。起始位置之间的IP的前两字节都等于左侧单元编号。
当来一个ip时 首先计算ip>> 16之后找到相应的索引区间之后在相应的区间上进行查找。
其实第二中方法就是一个以空间换时间的方法。如果内存放得下我们完全可以计算出每个IP的对应的省和市存放在一个大小为2^32次方的表中。在这里我们取了一个折中。
分类:算法
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...
v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...
香港ctg云服务器香港ctg云服务器官网链接 点击进入妮妮云官网优惠活动 香港CTG云服务器地区CPU内存硬盘带宽IP价格购买地址香港1核1G20G3M5个19元/月点击购买香港2核2G30G5M10个40元/月点击购买香港2核2G40G5M20个450元/月点击购买香港4核4G50G6M30个80元/月点击购买香...