自己考虑的算法是这样的,先取当前时间记为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级别的才对。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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时被拒绝