如何快速查找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次方的表中。在这里我们取了一个折中。
分类:算法
zji怎么样?zji是一家老牌国人主机商家,公司开办在香港,这个平台主要销售独立服务器业务,和hostkvm是同一样,两个平台销售的产品类别不一平,商家的技术非常不错,机器非常稳定。昨天收到商家的优惠推送,目前针对香港邦联四型推出了65折优惠BGP线路服务器,性价比非常不错,有需要香港独立服务器的朋友可以入手,非常适合做站。zji优惠码:月付/年付优惠码:zji 物理服务器/VDS/虚拟主机空间订...
乐凝网络怎么样?乐凝网络是一家新兴的云服务器商家,目前主要提供香港CN2 GIA、美国CUVIP、美国CERA、日本东京CN2等云服务器及云挂机宝等服务。乐凝网络提供比同行更多的售后服务,让您在使用过程中更加省心,使用零云服务器,可免费享受超过50项运维服务,1分钟内极速响应,平均20分钟内解决运维问题,助您无忧上云。目前,香港HKBN/美国cera云服务器,低至9.88元/月起,支持24小时无理...
ReliableSite怎么样?ReliableSite好不好。ReliableSite是一家成立于2006年的老牌美国商家,主要经营美国独立服务器租赁,数据中心位于:洛杉矶、迈阿密、纽约,带宽1Gbps起步,花19美元/月即可升级到10Gbps带宽,月流量150T足够各种业务场景使用,且免费提供20Gbps DDoS防护。当前商家有几款大硬盘美国独服,地点位于美国洛杉矶或纽约机房,机器配置很具有...