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条)

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝