zoukankan      html  css  js  c++  java
  • 面试常考题 有趣的数据存取,以及攻击行为判断的题目

    题目

    三元组(IP1, IP2, T) 描述了行为: 在T时刻,IP1对IP2进行了访问行为;其中将IP1称为源地址,IP2称为目的地址;地址为IPV4格式,如192.168.0.1 10.10.101.10 时间T为字符串格式,例如2019-06-21 23:02:31

    现在有一批数据(总数据量为100亿条),期中每一条数据描述了一次访问行为

    问题

    1. 请设计一中存储方式,实现数据的存储,并大致描述存储所需要的磁盘空间大小
    2. 若在一定时间X(单位:秒)内,IP1对IP2的访问行为次数超过了N,则称IP1对IP2发生了攻击行为

    解答问题一

    ip一个int存,时间unix时间long存
    这样一个数据是16个字节
    100亿数据 就是 10*16 *10亿 = 160GB

    解答问题二

    开一个大一些的缓存
    用lru,新加入的ip计数为0,已经访问过就加一
    这样短时间访问的应该,内存够大的话,是可以把访问频率高的,拦截到的吧?

    然后一个头条小姐姐这么回答

    redis:计数:key可以构造为ip1toip2的字符串,value是一个list列表,里面存放时间戳,每次都从尾部插入。如果list长度超过n就发生了攻击(判断列表头部的时间戳是否已经在当前时间–x之前了,是的话弹出lpop)在代码端ip1->ip2的时候,rpush ip1toip2

    返回解答问题一

    存储的话,可不可以做成和文件目录那样,分成二级目录,第二级目录里面存时间戳

  • 相关阅读:
    陶瓷电容的结构、工艺、失效模式
    Vue.js最佳实践
    Vue 超快速学习
    CSS 小技巧
    HTML5 Canvas
    webkit下面的CSS设置滚动条
    Some untracked working tree files would be overwritten by checkout. Please move or remove them before you can checkout. View them
    JSCS: Please specify path to 'JSCS' package
    React中ref的使用方法
    React 60S倒计时
  • 原文地址:https://www.cnblogs.com/Draymonder/p/11067316.html
Copyright © 2011-2022 走看看