侧边栏壁纸
  • 累计撰写 247 篇文章
  • 累计创建 16 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

IP 地址对应城市查询

kaixindeken
2021-04-20 / 0 评论 / 0 点赞 / 85 阅读 / 572 字

我们知道每个城市都有对应的 IP 地址段,这个在网上搜一下就能拿到。然后我们可以将这些不同城市 IP 地址段起始值转化为整型数字(转化函数Google/百度搜下就能找到),进而对其进行排序,就可以得到一个有序的序列。比如杭州和北京,IP区间分别是 [183.128.0.0,183.159.255.255] 和 [110.96.0.0,110.127.255.255],转化为数字后对应区间分别是 [3078619136,3080716287] 和 [1851785216,1853882367],这样,就可以对这两个区间起始值排序为 [1851785216,3078619136]。

此外我们还需要存储每个区间值对应的城市,以便找到对应位置后可以快速定位对应城市,我们可以把这个映射关系存储到数据库里面,存储字段包括城市、起始 IP、结束 IP,这里有一个前提是不同城市区间值不可能交叉,否则没法玩。

接下来就是二分查找排上用场的时候了,我们将待查找 IP 转化为数字,然后在排序序列中查找最后一个起始 IP 小于等于待查找 IP 的位置,通过该起始 IP 在数据库中定位到对应记录,判断待查找 IP 是否在这个 IP 区间范围内,如果在的话则返回对应城市,不在的话,就返回没找到。

如果你在面试的时候遇到这个问题,也就可以从容作答了。

0

评论区