如何快速查找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次方的表中。在这里我们取了一个折中。
分类:算法
搬瓦工最近上线了一个新的荷兰机房,荷兰 EUNL_9 机房,这个 9 的编号感觉也挺随性的,之前的荷兰机房编号是 EUNL_3。这次荷兰新机房 EUNL_9 采用联通 AS9929 高端路线,三网都接入了 AS9929,对于联通用户来说是个好消息,又多了一个选择。对于其他用户可能还是 CN2 GIA 机房更合适一些。其实对于联通用户,这个荷兰机房也是比较远的,相比之下日本软银 JPOS_1 机房可...
IMIDC是一家香港本土运营商,商家名为彩虹数据(Rainbow Cloud),全线产品自营,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非等地机房,CN2网络直连到中国大陆。目前主机商针对日本独立服务器做促销活动,而且提供/28 IPv4,国内直连带宽优惠后每月仅88美元起。JP Multiple IP Customize...
阿里云香港配置图提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 阿里云香港 16核32G 20M 这款产品,单单说价格上就是十分的离谱原价8631元/月的现价只要 999元 而且还有个8折循环优惠。废话不多说直接进入正题。优惠时间 2021年8月20日-2021年9月20日 优惠码 wn789 8折优惠阿里云香港BGP专线 16核32G 10M带宽 优惠购买 399元购买链接阿里云...