guava-retry使用笔记
guava-retry使用笔记
xml依赖
<dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version> </dependency>
使用案例
重试3次,每次间隔3秒
/*** 重试3次,每次间隔3秒*/@Testvoid testGuavaRetry(){//定义请求实现Callable<Boolean> callable = ()->{//do something...log.info("call task... ...");throw new RuntimeException();};//定义重试机制Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder()//重试条件.retryIfResult(Objects::isNull)//异常重试源.retryIfExceptionOfType(IOException.class).retryIfRuntimeException().retryIfResult(res->res=false)//等待间隔时间.withWaitStrategy(WaitStrategies.fixedWait(3, TimeUnit.SECONDS))//设置最大重试次数.withStopStrategy(StopStrategies.stopAfterAttempt(3)).build();try {retryer.call(callable);}catch (RetryException | ExecutionException e){e.printStackTrace();}}
以指数递增的间隔等待重试
@Testvoid testGuavaRetry2(){Callable<Boolean> callable = ()->{//do something...log.info("call task... ...");throw new RuntimeException();};Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder().retryIfExceptionOfType(IOException.class).retryIfRuntimeException()//以指数递增的间隔等待,直到最多5分钟,5分钟后,每隔5分钟重试1次.withWaitStrategy(WaitStrategies.exponentialWait(100,5,TimeUnit.MINUTES))//设置永远重试.withStopStrategy(StopStrategies.neverStop()).build();try {retryer.call(callable);}catch (RetryException | ExecutionException e){e.printStackTrace();}}
失败后重试,按斐波那契回退间隔重试
@Testvoid testGuavaRetry3(){Callable<Boolean> callable = ()->{//do something...log.info("call task... ...");throw new RuntimeException();};Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder().retryIfExceptionOfType(IOException.class).retryIfRuntimeException()//失败后重试,按斐波那契回退间隔,直到2分钟,2分钟后,每隔2分钟重试1次.withWaitStrategy(WaitStrategies.fibonacciWait(100,2,TimeUnit.MINUTES))//设置永远重试.withStopStrategy(StopStrategies.neverStop()).build();try {retryer.call(callable);}catch (RetryException | ExecutionException e){e.printStackTrace();}}
相关文章:
guava-retry使用笔记
guava-retry使用笔记 xml依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version> </dependency>使用案例 重试3次,每次间隔3秒 /*** 重试…...
P1226 【模板】快速幂 | 取余运算
【模板】快速幂 | 取余运算 题目描述 给你三个整数 a , b , p a,b,p a,b,p,求 a b m o d p a^b \bmod p abmodp。 输入格式 输入只有一行三个整数,分别代表 a , b , p a,b,p a,b,p。 输出格式 输出一行一个字符串 a^b mod ps,其中 …...

常用开源的弱口令检查审计工具
常用开源的弱口令检查审计工具 1、SNETCracker 1.1、超级弱口令检查工具 SNETCracker超级弱口令检查工具是一款开源的Windows平台的弱口令安全审计工具,支持批量多线程检查,可快速发现弱密码、弱口令账号,密码支持和用户名结合进行检查&am…...
云监控插件cloudmonitor安装保姆级教程
1、 需要isv把这些域名和ip加入到hosts中; 192.168.31.61 update.aegis.cloud.jiashan.gov.cn; 192.168.31.61 update.aegis.aliyun.com; 192.168.31.61 update2.aegis.cloud.jiashan.gov.cn; 192.168.31.61 update2.aegis.aliyun…...
借用和引用
文章目录 所有权引用和借用可变引用悬垂引用 所有权 Rust通过所有权来管理内存,最妙的是,这种检查只发生在编译期,因此对于程序运行期,不会有任何性能上的损失。 使用堆和栈的性能区别: 写入方面:入栈比在…...

WPF上位机9——Lambda和Linq
Lambda Linq 操作集合 使用类sql形式查询 Linq To SQL...

从0到1搭建uniapp
一、什么是uniapp UniApp是一款基于Vue.js框架的全端开发工具,可以实现同时开发多个平台(包括H5、小程序、APP等)应用的能力。使用UniApp,开发者只需要编写一份代码就可以快速地发布到多个平台,极大地提高了开发效率和…...

安全杂记 - Linux文本三剑客之awk
目录 1.什么是AWK2.正则表达式3.语法4.内置变量示例printf命令5.复现awk经典实例(1).插入几个新字段(2).格式化空白(3).筛选IPv4地址(4).筛选给定时间范围内的日志 1.什么是AWK awk、grep、sed是linux操作文本的三大利器,合称文本三剑客。三者的功能都是处理文本&a…...

Android 开发者选项日志存储路径
android开发者选项中存在两个item是关于系统日志的。 1.日志记录器缓冲区大小 2.在设备上永久存储日志记录器数据 一个是用来设置缓冲区大小,一个是用来日志存储开关及过滤。 通过分析 system/core/logcat/logcatd.rc mkdir /data/misc/logd 0770 logd log 日志的…...

jupyter lab build失败,提示需要安装版本>=12.0.0的nodejs但其实已从官网安装18.17.0版本 的解决方法
出现的问题如题目所示,这个问题差点要把我搞死了。。。但还是在没有重装的情况下解决了😘。 问题来源 初衷是想安装lsp扩展,直接在jupyter lab网页界面的extensions中搜索lsp并点击install krassowski/jupyterlab-lsp,会提示需要…...
【set】个人练习-Leetcode-817. Linked List Components
题目链接:https://leetcode.cn/problems/linked-list-components/description/ 题目大意:给出一个vector<int> nums,其中有一些数字。再给出一个链表的头指针head,链表内的元素各不相同。如果链表中有某一段(长…...

Linux IPIP隧道连通两个局域网
拓扑结构 现有两台主机,它们具有两个网口分别接入到不同网络中。 主机A: eth0:处于 10.0.1.2/24 网段eth1: 处于192.168.1.100/24 网段 主机B: eth0:处于10.0.2.3/24 网段eth1: 处于192.168.2…...

华为QinQ技术的基本qinq和灵活qinq 2种配置案例
基本qinq配置: 运营商pe设备在收到同一个公司的ce发来的的包,统一打上同样的vlan ,如上图,同一个家公司两边统一打上vlan 2,等于在原内网vlan 10或20过来的包再统一打上vlan 2的标签,这样传输就不会和其它…...

python爬虫1:基础知识
python爬虫1:基础知识 前言 python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 目录结构 文章目录 python爬虫1:基础知识1. 基础认知1.1 什么是爬虫&…...

【FAQ】安防监控视频EasyCVR平台分发的FLV视频流在VLC中无法播放
众所周知,TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上,视频监控…...

python爬虫2:requests库-原理
python爬虫2:requests库-原理 前言 python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 目录结构 文章目录 python爬虫2:requests库-原理1. 概述2. re…...
纹理贴图和渲染
纹理贴图 纹理映射(也就是纹理图或者叫做纹理贴图)是一种在计算机图形学中常用的技术,它可以将二维的图像(纹理)映射到三维物体的表面上,以增强视觉效果。“atlas”通常是指纹理图集,也就是将多…...

BLIP2
BLIP2的任务是基于已有的固定参数的图像encoder和语言大模型(LLM)搭建一个具有图像理解能力的图文模型,输入是图像和文本,输出是文本。 BLIP2基于Q-Former结构,如下图所示。Q-Former包含图像transformer和文本transfo…...

陀螺玩具跨境电商亚马逊CPC认证
陀螺指的是绕一个支点高速转动的刚体。陀螺是中国民间最早的娱乐工具之一.形状上半部分为圆形,下方尖锐。从前多用木头制成,现代多为塑料或铁制。玩时可用绳子缠绕,用力抽绳,使直立旋转。或利用发条的弹力旋转。传统古陀螺大致是木…...
TS学习02-接口
接口 ts原则之一就是对值所具有的结构进行类型检查。 结构的左右就是为了这些类型命名和代码定义契约 interface LabelValue {label: string } function point(label: LabelValue) {} let obj {label:标题,age: 18} point(obj)类型检查器不会去检查属性的顺序&a…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...