chop123 2013-02-17 12:00
浏览 1470
已采纳

如何判断1分钟内请求次数在20次之内

自己考虑的算法是这样的,先取当前时间记为startTime,然后请求判断部分,对于第一个请求判断当前时间-startTime是否小于1分钟,如果小于1分钟则请求计数加1,第二个请求判断当前时间-startTime是否小于1分钟。。。。(这里的startTime我设为static Date startTime = new Date();但是每次都会将初始的给定时间设为当前时间,这个怎样能让startTime保持为静态时间变量,当时间到达1分钟后再更新他为当前时间那)有没有大侠遇到过?

  • 写回答

10条回答 默认 最新

  • clxy大叔 2013-02-17 12:27
    关注

    首先,这个处理应该是IP地址级别或session级别的。就是说每个IP地址或每个session做此限制。所以你这个时间设成static即jvm级别的,恐怕不大对头吧?

    我的计算逻辑是这样的:

    1.每个IP或session维护个访问时间的列表。
    2.每次该IP或session有访问时,取当前时间,然后减去1分钟。
    3.删除【1】中的列表里,所有小于【2】的时间的数据。
    4.a. 如果【3】处理后的列表个数小于20,允许访问,添加本次访问时间。
    4.b. 如果大于等于20,拒绝访问。

    但是,除非这是你们已经规定好的逻辑。
    否则,通常的限制是,刷新间隔不得小于某固定时间(比如1秒或几秒)。

    逻辑就会简单多了,像你上面那样,只需要个上次访问时间即可。
    但还得是IP地址或session级别的才对。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料