发布:2022/12/22 11:12:21作者:管理员 来源:本站 浏览次数:849
业务的要求
· 限制或者只开放中国IP(需要判断该IP是否属于中国段)
· 时间复杂度尽量小,适用于请求量大的业务场景
· 不要请求第三方接口,防止出现网络异常
由于只需要判断到国家的维度,所以只需要去匹配中国的IP段,下面网站有个中国IP段的列表
http://ipblock.chacuo.net/down/t_txt=c_CN
可以看到IP段有2700多个,如果用二分查询法,时间复杂度是logN。基本上能够满足需求了。
摘取部位IP段
算法思路:
ip2long(36.223.255.255)=36*256^3+223*256^2+255*256+255
ip2long(36.96.0.0)=36*256^3+96*256^2
ip2long(36.223.255.255) - ip2long(36.96.0.0) + 1= 8388608 //+1为算上起始IP
对整个数组按left字段进行升序排序得到一个有序数组(php代码示例)
二分查找法
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4