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

Java的guava 限流写法

第一步先引入 maven

<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>32.0.1-jre</version> 
</dependency>

然后上方法

private final double rateLimiter10 = 1.0 / 10.0; // 每 10 秒最多访问 1 次 005 u05 004
private final double rateLimiter20 = 1.0 / 20.0; // 每 20 秒最多访问 1 次 CFD
private final double rateLimiter30 = 1.0 / 30.0; // 每 30 秒最多访问 1 次 002
private final double rateLimiter50 = 1.0 / 50.0; // 每 50 秒最多访问 1 次 003//这map注意一下,必须是线程安全的
private final Map<String, RateLimiter> userRateLimiters = new ConcurrentHashMap<>();/**** @param userId 限制的唯一码* @param rate 这个是执行频率* @return*/
public  boolean tryAcquire(String userId,double rate) {userRateLimiters.putIfAbsent(userId, RateLimiter.create(rate));RateLimiter userRateLimiter = userRateLimiters.get(userId);return userRateLimiter.tryAcquire();
}

然后调用方法

    @CCBMapping("/SLSCFD")public NotifyQueryVO notifQuery(@Valid @RequestBody NotifyQueryDTO notifyQueryDTO) {//唯一码是 预授信编号+查询类型String key = "SLSCFD"+notifyQueryDTO.getCredApprSeriNO()+"_"+notifyQueryDTO.getQueryType();if( tryAcquire(key,rateLimiter20)){return ccbBankService.notifQuery( notifyQueryDTO);}else{CommonError commonError = new CommonError();commonError.setCode(key);commonError.setValued(JsonUtils.toJSONString(notifyQueryDTO));commonError.setExpand("20秒/次,限流中,请稍后再试!");genTables.save(commonError);NotifyQueryVO notifyQueryVO = new NotifyQueryVO();notifyQueryVO.setRetCode("E0011");notifyQueryVO.setRetMsg("20秒/次,限流中,请稍后再试!");System.out.println("通知查询 SLSCFD:"+notifyQueryDTO.getCredApprSeriNO()+",20秒/次,限流中,请稍后再试!");return notifyQueryVO;}}

就这么简单!

相关文章:

Java的guava 限流写法

第一步先引入 maven <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>32.0.1-jre</version> </dependency> 然后上方法 private final double rateLimiter10 1.0 / 10.0; // 每…...

[uniapp] scroll-view 简单实现 u-tabbar效果

文章目录 方案踩坑1.scroll-view 横向失败2.点击item不滚动?3. scrollLeft从哪里来? 效果图 方案 官方scroll-view 进行封装 配合属性 scroll-left Number/String 设置横向滚动条位置 即可 scroll-into-view 属性尝试过,方案较难实现 踩坑 1.scroll-view 横向失败 安装…...

vue常见问题汇总

来源&#xff1a;https://www.fly63.com/ Q1&#xff1a;安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本/*cnpm website: https://npm.taobao.org/*/npm install -g cnpm --registryhttps://registry.npm.taobao.org// cnpm 的大多命令跟 npm 的是一致的…...

GPT-3在化学中进行低数据发现是否足够?

今天介绍一份洛桑联邦理工学院进行的工作&#xff0c;这份工作被发表在化学期刊预印本网站上。 对于这份工作&#xff0c;有兴趣的朋友可以通过我们的国内ChatGPT镜像站进行测试使用&#xff0c;我们的站点并没有针对特定任务进行建设&#xff0c;是通用性质的。 化学领域进行…...

gitlab升级

1.下载需要的版本 wget -c https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.7.6-ce.0.el7.x86_64.rpm --no-check-certificate gitlab-ce-15.4.6-ce.0.el7.x86_64.rpm gitlab-ce-15.7.6-ce.0.el7.x86_64.rpm gitlab-ce-15.9.7-ce.0.el7.x86_64.rpm g…...

Matlab图像处理-灰度插值法

最近邻法 最近邻法是一种最简单的插值算法&#xff0c;输出像素的值为输入图像中与其最邻近的采样点的像素值。是将(u0,v0)(u_0,v_0)点最近的整数坐标u,v(u,v)点的灰度值取为(u0,v0)(u_0,v_0)点的灰度值。 在(u0,v0)(u_0,v_0)点各相邻像素间灰度变化较小时&#xff0c;这种方…...

axios 或 fetch 如何实现对发出的请求的终止?

终止 HTTP 请求是一个重要的功能&#xff0c;特别是在需要优化性能、避免不必要的请求或在某些事件发生时&#xff08;例如用户点击取消&#xff09;中断正在进行的请求时。以下是如何使用 axios 和 fetch 实现请求终止的方法&#xff1a; 1. axios axios 使用了 CancelToken…...

ChatGPT Prompting开发实战(四)

一、chaining prompts应用解析及输出文本的设定 由于输入和输出都是字符串形式的自然语言&#xff0c;为了方便输入和输出信息与系统设定使用的JSON格式之间进行转换&#xff0c;接下来定义从输入字符串转为JSON list的方法&#xff1a; 定义从JSON list转为输出字符串的方法&…...

Windows和Linux环境中安装Zookeeper具体操作

1.Windows环境中安装Zookeeper 1.1 下载Zookeeper安装包 ZooKeeper官网下载地址 建议下载稳定版本的 下载后进行解压后得到如下文件&#xff1a; 1.2 修改本地配置文件 进入解压后的目录&#xff0c;将zoo_example.cfg复制一份并重命名为zoo.cfg,如图所示&#xff1a; 打…...

41、Flink之Hive 方言介绍及详细示例

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

docker环境安装软件、更换镜像源以及E: Unable to locate package xxx解决

docker环境安装vim、ifconfig、ping、更换镜像源以及E: Unable to locate package vim 一. E: Unable to locate package vim 问题解决一、问题分析二、解决方案三、再次安装四. 此镜像源已失效 二. 解决 “E: 仓库xx没有 Release 文件。N: 无法安全地用该源进行更新&#xff0…...

夸克扫描王App用上了AI大模型 让扫描更清楚、提取文字更方便

对上班族来说&#xff0c;找到一个好用的工具类APP&#xff0c;绝对可以提升工作效率。比如最常见的扫描文件&#xff0c;公司的扫描仪虽然好用但是很难进行深度编辑且不能外出使用&#xff1b;很多手机App也有扫描功能&#xff0c;但技术能力总是差一点&#xff0c;当面对复杂…...

代价高昂的 IT 错误:识别并避免供应商锁定

陷入不提供所需服务的云服务器合同中可能会非常痛苦、令人沮丧且成本高昂。 供应商锁定是提供商难以切换的地方&#xff0c;这意味着企业迁移到新供应商的成本太高、破坏性太大或耗时。 这使得公司受到供应商的摆布&#xff0c;尽管该服务可能无法提供他们所需的可靠性或可扩…...

HBase集群环境搭建与测试

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…...

【iOS】Masonry的基本使用

文章目录 前言一、使用Masonry的原因二、约束的常识三、Masonry的简单使用四、Masonry的用例总结 前言 暑假安装了cocoapods&#xff0c;简单使用其调用了SVGKit&#xff0c;但是没有学习Masonry&#xff0c;特此总结博客记录Masonry的学习 一、使用Masonry的原因 Masonry是一…...

浅析SAS协议:链路层

文章目录 概述原语通用原语连接管理原语连接通信原语 地址帧IDENTIFY地址帧OPEN地址帧 链路复位Link ResetHard ResetSATA的Link Reset 连接管理建立连接连接仲裁 流量控制SSP流控Credit Advance SMP流控 相关参考 概述 SAS链路层用于定义原语、地址帧以及连接相关的内容&…...

ES6之浅尝辄止1:class的用法

class是es6新增的一种语法糖&#xff0c;用于简化js中构造类的过程 1.es5中如何构造类&#xff1f; function Person(name,age){this.name name;this.age age; } Person.prototype.sayName function(){return this.name; } let p1 new Person(小明,22);2.es6中的class方式…...

django-发送邮件

一、业务场景 业务警告 邮箱验证 密码找回 二、邮件相关协议 1.SMYTP&#xff08;简答邮件传输协议 25端口&#xff09; 属于“推送”协议 负责发送 2.IMAP&#xff08;交互式邮件访问协议&#xff0c;应用层协议&#xff0c;143端口&#xff09; 用于从本地邮件客户端…...

IP私域系统搭建课,视频号打通你的个人ip私域

标题&#xff1a;搭建IP私域系统课程&#xff1a;打通视频号&#xff0c;打造个人IP私域的关键策略 导语&#xff1a; 在当今信息爆炸的时代&#xff0c;个人IP&#xff08;知识产权&#xff09;的价值越来越受到重视。搭建IP私域系统通过打通视频号&#xff0c;成为了打造个人…...

咸虾米之一些快捷方式的操作,一行方块的左右滑动,方块在一区域内的任意移动

由于本着只学习微信小程序的目的&#xff0c;上面的几篇博文都是跟着黑马程序的课程走的&#xff01;后面的就讲解uni-app的实验呢&#xff01;一个人的精力是有限的&#xff0c;于是换了们课程继续深造微信小程序&#xff01;&#xff01;&#xff01; 以下是在 .wxml中的一些…...

时间序列预测中的注意力剪枝技术:SPAT方法解析

1. 项目概述&#xff1a;当时间序列预测遇上注意力剪枝在多元时间序列预测领域&#xff0c;Transformer架构凭借其强大的注意力机制已成为主流解决方案。这种机制通过动态计算序列元素间的关联权重&#xff0c;能够有效捕捉电力负荷、交通流量等场景中的复杂时序模式。然而在实…...

iOS 27 Siri 自动删除聊天记录:深度解析与行业启示

上周同事跟我吐槽&#xff0c;说他跟Siri聊了点私事&#xff0c;换手机时发现聊天记录全在iCloud里躺着。我跟他说&#xff0c;等iOS 27吧&#xff0c;Siri终于要加自动删除功能了。这个功能不算革命性创新&#xff0c;但方向是对的。下面从用户价值、技术实现和行业影响三个维…...

DDoS防护架构解析与实战经验

随着互联网业务的迅猛发展&#xff0c;企业在享受技术红利的同时&#xff0c;也面临着越来越复杂的安全挑战。分布式拒绝服务攻击&#xff08;DDoS&#xff09;作为一种常见的网络攻击手段&#xff0c;能够通过大量的虚假流量导致服务器过载&#xff0c;从而影响业务的正常运行…...

MCP39F501电能计量芯片:高精度单相计量方案与工程实践详解

1. 项目概述&#xff1a;为什么我们需要一颗专用的电能计量芯片&#xff1f;在智能家居、工业物联网和新能源领域&#xff0c;精确测量交流电&#xff08;AC&#xff09;的用电参数——比如电压、电流、功率、电能——是底层最核心的需求之一。你可能觉得&#xff0c;用个高精度…...

npc_gzip异常处理与调试手册:解决压缩器错误的10个实用技巧

npc_gzip异常处理与调试手册&#xff1a;解决压缩器错误的10个实用技巧 【免费下载链接】npc_gzip Code for Paper: “Low-Resource” Text Classification: A Parameter-Free Classification Method with Compressors 项目地址: https://gitcode.com/gh_mirrors/np/npc_gzip…...

从CVE到ATTCK:如何用Elastic Stack构建你的个人安全情报仪表盘

从CVE到ATT&CK&#xff1a;如何用Elastic Stack构建你的个人安全情报仪表盘 在安全运营领域&#xff0c;数据孤岛一直是分析师面临的主要挑战。CVE漏洞数据库、CWE弱点分类、CAPEC攻击模式以及ATT&CK框架各自提供了宝贵的安全情报&#xff0c;但这些数据往往分散在不同…...

从‘人脑理解’到‘图解表达’:我是如何拆解小米便签项目结构的(附避坑指南)

从混沌到清晰&#xff1a;解码小米便签架构的思维可视化实战 第一次打开小米便签的源码时&#xff0c;我仿佛闯入了一个陌生的城市。高耸的Activity大厦、错综复杂的Manager街道、隐藏在角落的Helper小巷...作为刚入门的Android开发者&#xff0c;面对这样一个成熟项目的代码库…...

War3地图制作入门:不用写代码,用触发器和变量也能做出有趣玩法

War3地图制作入门&#xff1a;用触发器和变量打造专属游戏玩法 魔兽争霸3&#xff08;War3&#xff09;地图编辑器是游戏史上最强大的玩家创作工具之一&#xff0c;即使没有任何编程基础&#xff0c;也能通过触发器和变量系统创造出令人惊叹的游戏玩法。本文将带你从零开始&…...

高级磁盘空间管理:WinDirStat深度配置与自动化清理指南

高级磁盘空间管理&#xff1a;WinDirStat深度配置与自动化清理指南 【免费下载链接】windirstat WinDirStat is a disk usage statistics viewer and cleanup tool for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/wi/windirstat 在当今数据爆炸的时代…...

Multi-Agent产品创新:从单一场景到跨域协同的演进

Multi-Agent产品创新:从单一场景到跨域协同的演进 关键词:多智能体系统、产品创新、跨域协同、单一场景智能、Agent协作框架、LLM驱动Agent、分布式智能 摘要:大语言模型的爆发式发展,让智能Agent从实验室走向了大众消费级产品。本文从生活场景的真实痛点切入,逐层拆解Mul…...