蚂蚁金服笔试题--实现一个基于内存的ip黑/白名单具体实现类

zhanmushid 2017-03-10 04:31:16
/**
* ip黑/白名单工具接口, 请为本interface实现一个基于内存的ip黑/白名单具体实现类<br/>
* 要求’isInList’操作为常数级时间复杂度<br/>
* 要求’isInList’内部操作完全基于内存,不得有网络或文件读取; 对象初始化部分如构造函数则不受此限制(如初始化时可从文件中load ip名单列表)<br/>
* 程序设计上,请在满足上述条件的前提下,让此工具所能支持的ip列表数量尽可能大(甚至能否覆盖整个ipv4地址空间?), 内存占用尽可能小;
* 此工具可能在多线程环境被使用
*/
public interface IpList {
/**
* 判断指定的ipv4地址是否在当前名单中
*
* @param ip
* 指定的ip地址值(v4)
* @return true: 在名单中, false: 不在名单中
*/
boolean isInList(String ip);
}


1.常数级复杂度;
2.ip列表最大覆盖整个IPv4空间,即4G条IP记录,而且内存占用尽可能小;
...全文
890 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ipad_down 2017-05-16
  • 打赏
  • 举报
回复
我也遇到了,用的BitMap算法可以解决
小武格 2017-03-14
  • 打赏
  • 举报
回复
把ipv4的地址以整形变量的形式存储起来,用HashSet存放黑名单,判断ip地址是否在集合中即可

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧