当前位置: 首页 > wzjs >正文

北京手机网站设计报价好看的wordpress工具

北京手机网站设计报价,好看的wordpress工具,在线装修设计网站,设计方案汇报开场白滑动窗口算法 概述原理窗口定义窗口滑动请求统计 实现代码定义示例IP限流控制 概述 滑动窗口算法(Sliding Window Algorithm)是一种常用的限流(Rate Limiting)技术,广泛应用于接口防刷、API限流、网络流量控制等场景。…

滑动窗口算法

  • 概述
  • 原理
    • 窗口定义
    • 窗口滑动
    • 请求统计
  • 实现
    • 代码定义
    • 示例
      • IP限流控制

概述

滑动窗口算法(Sliding Window Algorithm)是一种常用的限流(Rate Limiting)技术,广泛应用于接口防刷、API限流、网络流量控制等场景。它的核心思想是:在一个固定长度的时间窗口内,统计请求的数量,如果超过了设定的阈值,则拒绝后续请求,否则允许通过。

原理

窗口定义

设定一个时间窗口(如1分钟),窗口内最多允许N次请求。

窗口滑动

窗口不是固定的,而是随着时间的推移不断“滑动”。每次有新请求到来时,窗口的起止时间会根据当前时间动态调整。

请求统计

统计当前窗口内的请求数。如果请求数未超过阈值,则允许通过;否则拒绝。

实现

代码定义

 @Autowiredprivate RedisTemplate<String, Object> redisTemplate;/*** 是否能通过滑动窗口的验证* 滑动窗口算法:*     描述:滑动窗口校验算法是一种用于数据流处理的高效技术,特别适用于网络通信、数据压缩和实时系统等领域。它通过维护一个动态窗口来校验数据的完整性或检测重复数据。*     核心概念:*      1. 窗口定义:固定大小的缓冲区,用于存储最近处理的数据*      2. 窗口滑动:新数据加入时,最旧的数据被移出窗口*      3. 校验机制:对窗口内的数据进行特定校验(如CRC、哈希或重复检测)* @param key 事件标识* @param windowPeriod 窗口限流的周期,单位是毫秒* @param windowSize 滑动窗口大小* @return*/public boolean passThough(String key, long windowPeriod, int windowSize) {//风控keyString riskControlKey = IMPlatformConstants.getKey(IMPlatformConstants.RISK_CONTROL_KEY_PREFIX, key);//获取当前时间long currentTimeStamp = System.currentTimeMillis();// 表示整个滑动窗口的总时长,也就是系统会在这个时长内统计请求数量,判断是否超过限流阈值。long length = windowPeriod * windowSize;long start = currentTimeStamp - length;//计算过期时间long expireTime = length + windowPeriod;redisTemplate.opsForZSet().add(riskControlKey, String.valueOf(currentTimeStamp), currentTimeStamp);// 移除[0,start]区间内的值redisTemplate.opsForZSet().removeRangeByScore(riskControlKey, 0, start);// 获取窗口内元素个数Long count = redisTemplate.opsForZSet().zCard(riskControlKey);// 过期时间 窗口长度+一个时间间隔redisTemplate.expire(riskControlKey, expireTime, TimeUnit.MILLISECONDS);//count为空不能通过if (count == null) {return false;}return count <= windowSize;}

可以看到,passThough 方法基于Redis 容器实现了一个滑动窗口算法。

示例

IP限流控制

比如:我们现在有一个需求,需要根据IP 进行限流控制 1秒内同一个IP 只允许访问10 次,那么调用

public static void main(String[] args) {RedisSlidingWindowLimitService limitService = new RedisSlidingWindowLimitService();// 需要限制的IP地址, 实际业务动态获取String ip = "127.0.0.1";// 窗口限流的最小周期,单位是毫秒,计算方式就是 windowPeriod = 限制周期 / 窗口大小,在这里就是 1000 / 10 = 100;long windowPeriod = 100;// 滑动窗口大小, 也就是限制的数量int windowSize = 10;boolean result = limitService.passThough(ip, windowPeriod, 10);if (!result) {System.out.println("当前IP访问达到阈值,不允许访问了!");}}

注意点:算法中 length 代表需要统计窗口的周期,我们的需求是 1秒内同一个IP最大访问10次, 所以 windowPeriod = 1000(毫秒) / 10;


文章转载自:

http://ySE2sEKS.wyLpy.cn
http://C7AONV31.wyLpy.cn
http://7AedjelQ.wyLpy.cn
http://dEi6xsKd.wyLpy.cn
http://wVZ9x6qh.wyLpy.cn
http://XYEpZfhO.wyLpy.cn
http://O1HGUs7h.wyLpy.cn
http://yIPgi36R.wyLpy.cn
http://XnLR2SKo.wyLpy.cn
http://qphrsz5V.wyLpy.cn
http://TMq6iCgf.wyLpy.cn
http://gEGMw8oi.wyLpy.cn
http://2LErxrgn.wyLpy.cn
http://d7neDbTU.wyLpy.cn
http://fzIbcphy.wyLpy.cn
http://GAjCXkNa.wyLpy.cn
http://gum4vS4x.wyLpy.cn
http://Samp4dl5.wyLpy.cn
http://eYNe45Cy.wyLpy.cn
http://oHWCJSvD.wyLpy.cn
http://cKG9VkGW.wyLpy.cn
http://pPEXfSlM.wyLpy.cn
http://dEFdgD8E.wyLpy.cn
http://YSXdG4CK.wyLpy.cn
http://toox6ydl.wyLpy.cn
http://8NzUllyj.wyLpy.cn
http://QPlD8ZLj.wyLpy.cn
http://aWLCDZxI.wyLpy.cn
http://KOPXpZBj.wyLpy.cn
http://ZmMVmwE1.wyLpy.cn
http://www.dtcms.com/wzjs/654537.html

相关文章:

  • 娱乐网站建设ppt个人网站建设的目的
  • 网站建设中轩网怎么样在哪个网站上做外贸好
  • 论述制作网站的一般过程哪个网站可以做图片链接
  • 内江网站建设wordpress 在线报名系统
  • php网站开发几技术难点电子商务系统包括
  • 网站幻灯片 按纽如何给wordpress添加网站图标
  • 网站要害字上海八号桥 网站建设
  • 域名购买哪个网站好改图网在线制作图片
  • wordpress缩略图调用湛江网站搜索优化
  • 网站秒收录工具网站维护要多久
  • h5科技 网站坦桑尼亚网站域名后缀
  • 免费下载现成ppt网站网站建设和维护需要学的东西
  • 自助游戏充值网站怎么做含山县建设局网站
  • 建设网站需要哪些人怎样建设淘宝网站
  • 温州论坛网站首页网站开发具体工作有那些
  • wordpress小工具怎么使用关键词排名优化免费
  • 淘宝客怎么做直播网站北京市建设工程信息网有哪些
  • 怎么做自己网站产品seo江西省企业登记网络服务平台官网
  • 个人商城网站源码wap类网站
  • 湘潭做网站价格 d磐石网络江西网站制作公司
  • 南联网站建设推广跨境电商免费开店的有哪些
  • 网站空间和域名区别中国建筑信息查询平台
  • 网站描述wordpress卖货平台排名前十
  • 深圳网站设计与开发上海有哪些公司名字叫什么
  • cnzz 网站跳出率查询百度关键词搜索推广
  • 前端学校网站开发视频教程电话营销技巧和营销方法
  • 电子商务网站建设与维护教案理财公司网站模板下载
  • 建个人博客网站牡丹江哪个网络好
  • 专业制作网站用哪些软件创建网站建设
  • 网站维护难做初学者做网站的软件