黑马程序员技术交流社区

标题: 从40亿个IP地址的数据中判断某IP地址是否存在的原理 [打印本页]

作者: forward进    时间: 2017-10-30 21:43
标题: 从40亿个IP地址的数据中判断某IP地址是否存在的原理
须知:IP地址格式:192.168.1.1;          理论最小IP地址0.0.0.0;
          理论最大IP地址255.255.255.255;
因此理论IP地址总数为256^4=2^32(0-255有256个数),即0.0.0.0 , 0.0.0.1 , 0.0.0.2  ...... 255.255.255.255。
首选需要把所有IP地址数据换算成32位的二进制形式,并排序,如0.0.0.0为第一位,0.0.0.1为第二位……255.255.255.255为第2^32位。
如直接把40亿个IP地址转换为int进行比较(每个int在内存空间内存储为4个Byte,共32Bit),共需4GB内存空间。
但如果把所有IP地址组成一个集合并排序,每个地址下标组成数组,最大只需2^32 Bit=2^32/8/1024/1024=512MB的内存空间。
所以只需把某IP地址转换为第XX位,并与所有地址下标进行比较,遍历比较,存在记为1,不存在记为0,即可判断某IP地址是否在40亿个IP地址中存在。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2