场景题
场景题:ipv4白名单缓存,传入一个IP,判断是否在白名单里,给你一个2G的机器,怎么设计这样一个缓存。
将ip转换为整数,每段用一个字节表示,用4个字节即可表示所有的IP。整数最大为2^32-1 = 4,294,967,296 约为40亿个ip。新建一个长度为40亿的bitmap,大小为512M。
先加载白名单ip到bitmap中,即将相应的bit置为1。判断时先将ip转换为整数n,再左移n位,判断bitmap中改为是否为1.
开个长度为524288的数组,元素长度为1K。先做除法定位到具***置,再模除得到余数,将余数左移n位看该位是否为1.