# 全面解剖 消息中间件 RocketMQ-(3)

全面解剖 消息中间件 RocketMQ-(3)

一、RocketMQ – mqadmin 命令介绍

1、mqadmin 管理工具 使用方式

进入 RocketMQ 安装位置,在 bin 目录下执行 ./mqadmin {command} {args}


# 进入 RocketMQ 安装目录的 bin 目录下:
cd /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/bin/# mqadmin 管理工具 使用方式
./mqadmin {command} {args}

2、mqadmin 命令介绍

1)Topic 相关
名称含义命令选项说明
updateTopic创建更新 Topic 配置-bBroker 地址,表示 topic 所在 Broker,只支持单台 Broker,地址为 ip:port
-ccluster 名称,表示 topic 所在集群(集群可通过 clusterList查询)
-h-打印帮助
-nNameServer服务地址,格式 ip:port
-p指定新topic的读写权限(W=2
-r可读队列数(默认为8)
-w可写队列数(默认为8)
-ttopic 名称(名称只能使用字符 【^ [a-zA-Z0-9_-]+$) 】
deleteTopic删除 Topic-h打印帮助
-nNameServer服务地址,格式 ip:port
-ttopic 名称(名称只能使用字符 【 ^ [a-zA-Z0-9_-]+$) 】
topicList查看 Topic 列表信息-c不配置-c只返回 topic 列表,增加-c返回 clusterName, topic,consumerGroup 信息,即 topic 的所属集群和订阅关系,没有参数
-nNameServer服务地址,格式 ip:port
-ttopic 名称
topicRoute查看 Topic 路由信息-h打印帮助
-nNameServer 服务地址,格式 ip:port
-ttopic 名称
topicStatus查看 Topic 消息队列 offset-h打印帮助
-nNameServer服务地址,格式 ip:port
topicClusterList查看 Topic 所在集群列表-h打印帮助
-nNameServer 服务地址,格式 ip:port
updateTopicPerm更新 Topic 读写权限-ttopic 名称
-h打印帮助
-nNameServer服务地址,格式 ip:port
-bBroker 地址,表示 topic 所在 Broker,只支持单台 Broker,地址为:ip:port
-p指定新 topic 的读写权限(W=2
-ccluster 名称,表示 topic 所在集群(集群可通过 clusterList 查询,-b 优先,如果没有 -b,则对集群中所有 Broker 执行命令
updateOrderConf从 NameServer 上创建,删除,获取特定命名空间的 kv 配置,目前还未启用-ttopic 键
-h打印帮助
-nNameServer服务地址,格式 ip:port
-vorderConf,值
-mmethod,可选 get,put,delete
allocateMQ-ttopic 名称
-h打印帮助
-nNameServer服务地址,格式 ip:port
-vBroker 地址,表示 topic 所在 Broker,只支持单台 Broker,地址为:ip:port
2)集群相关
名称含义命令选项说明
clusterList查看集群信息,集群,BrokerName,Brokerld, TPS 等信息-m#OutTotalYest,#InTotalToday,#OutTotalToday
-h打印帮助
-nNameServer服务地址,格式 ip:port
-i打印间隔,单位秒
-aamount,每次探测总数,RT=总时间/amount
-s消息大小,单位 B
-c探测那个集群
-p是否打印格式化日志,以
-i打印间隔,单位秒
clusterRT发送消息检测集群各 BrokerRT,消息发往 ${BrokerName}Topic-aamount,每次探测总数,RT=总时间/amount
-s消息大小,单位 B
-c探测那个集群
-p是否打印格式化日志,以
-h打印帮助
-m所属机房,打印使用
-i打印间隔,单位秒
-nNameServer服务地址,格式 ip:port
3)Broker 相关
名称含义命令选项说明
updateBrokerConfig更新 Broker 配置文件,会修改 Broker.conf-bBroker 地址,格式 ip:port
-ccluster 名称
-kkey 值
-vvalue 值
-h打印帮助
4)消息相关
名称含义命令选项说明
queryMsgById根据 offsetMsgId 查询 msg,如果使用开源控制台,应使用,此命令还有其他参数,具体作用请阅读QueryMsgByIdSubCommand-imsgId
-h打印帮助
-nNameServer服务地址,格式 ip:port
queryMsgByKey根据消息 Key 查询消息-kmsgKey
-tTopic 名称
-h打印帮助
-nNameServer 服务地址,格式 ip:port
-bBroker 名称,(这里需要注意填写的是 Broker 的名称,不是 Broker 的地址,Broker 名称可以在 clusterList 查到
queryMsgByOffset根据Offset 查询消息-iquery 队列 id
-ooffset 值
-tTopic 名称
-h打印帮助
-nNameServer服务地址,格式 ip:port
queryMsgByUniqueKey根据 msgId 查询,msgId 不同于 offsetMsgId,区别详见常见运维问题,-g,-d 配合使用,查到消息后尝试让特定的消费者消费消息并返回消费结果-h打印帮助
-nNameServer服务地址,格式 ip:port
-iuniqe msg id
-gconsumerGroup
-dclientId
-tTopic 名称
checkMsgSendRT检测向 topic 发消息的 RT,功能类似 clusterRT-h打印帮助
-nNameServer服务地址,格式 ip:port
-ooffset 值
-tTopic 名称
-a探测次数
sendMessage发送一条消息,可以根据配置发往特定 MessageQueue 或普通发送-s消息大小
-h打印帮助
-nNameServer服务地址,格式 ip:port
-tTopic 名称
-pbody 消息体
-kkeys
-ctags
-bBrokerName
-iqueueId
-h打印帮助
-nNameServer服务地址,格式 ip:port
-tTopic 名称
5)消费者、消费组相关
名称含义命令选项说明
consumerProgress查看订阅组消费状态,可以查看具体的 client IP 的消息积累量-g消费者所属组名
-s是否打印 client IP
-h打印帮助
-nNameServer服务地址,格式 ip:port
consumerStatus查看消费者状态,包括同一个分组中是否是相同的订阅,分析 ProcessQueue 是否堆积,返回消费者 jstack 结果,内容较多,使用者参见 ConsumerStatusSubCommand-h打印帮助
-nNameServer服务地址,格式 ip:port
-gconsumer group
-iclientId
-s是否执行 jstack
getConsumerStatus获取 Consumer 消费进度-g消费者所属组名
-t查询主题
-iConsumer 客户端 IP
-h打印帮助
-nNameServer服务地址,格式 ip:port
updateSubGroup更新或创建订阅关系-h打印帮助
-nNameServer服务地址,格式 ip:port
-bBroker 地址
-c集群名称
-g消费者分组名称
-s分组是否允许消费
-m是否从最小 offset 开始消费
-d是否是广播模式
-q重试队列数量
-r最大重试次数
-i当 slaveReadEnable 开启时有效,且还未达到从 slave 消费时建议从哪个 Brokerld 消费,可以配置备机 id,主动从备机消费
-w如果 Broker 建议从 slave 消费,配置决定从哪个 slave 消费,配置 Brokerld,例如
6)连接相关
名称含义命令选项说明
consumerConnection查询 Consumer 的网络连接-g消费者所属组名
-nNameServer服务地址,格式 ip:port
-h打印帮助
-g生产者所属组名
-t主题名称
producerConnection查询 Producer 的网络连-nNameServer服务地址,格式 ip:port
-h打印帮助
7)NameServer 相关
名称含义命令选项说明
updateKvConfig更新 NameServer 的 kv 配置,目前还未使用-s命名空间
-kkey
-vvalue
-nNameServer服务地址,格式 ip:port
8)其它
名称含义命令选项说明
startMonitoring开启监控进程,监控消息误删,重试队列消息数等-nNameServer 服务地址,格式 ip:port
-h打印帮助

3、使用 mqadmin 命令 注意事项:

  • 几乎所有命令都需要配置-n表示NameServer地址,格式为 ip:port。
  • 几乎所有命令都可以通过-h获取帮助。
  • 如果既有 Broker 地址(-b)配置项又有 clusterName(-c) 配置项,则优先以 Broker 地址执行命令;如果不配置 Broker 地址,则对集群中所有主机执行命令。

二、RocketMQ – console 集群监控平台搭建

1、下载安装 RocketMQ – console 监控平台

RocketMQ 有一个对其扩展的开源项目 incubator-rocketmg-externals,这个项目中有一个子模块叫 rocketmq-console,这个便是管
理控制台项目了,先将 incubator-rocketmq-externals 拉到本地,因为我们需要自己对 rocketmq-console 进行编译打包运行。

下载地址:https://github.com/apache/rocketmq-externals

rocketmq-externals-master.zip


git clone https://github.com/apache/rocketmq-externals 
cd rocketmq-console 
mvn clean package -Dmaven.test.skip=true

2、解压即安装

/rocketmq-externals-master/rocketmq-console/

3、修改配置文件:在 rocketmq-console 中配置 namesrv 集群地址:


rocketmq.config.namesrvAddr=192.168.25.135:9876;192.168.25.138:9876

4、打包: 在项目的 pom.xml 所在的目录,打开 cmd 命令提示符


# 进入项目目录
cd /rocketmq-externals-master/rocketmq-console/# 打包
mvn clean package -Dmaven.test.skip=true

5、打包完成: 在项目的 pom.xml 所在的目录,会在 target 文件夹下,生成 rocketmq-console-ng-1.0.1.jar

将此 jar 包上传到两个虚拟机(192.168.25.135:9876;192.168.25.138:9876)的 /usr/local/rocketmq/ 下(/usr/soft/)。

6、启动 rocketmq-console 控制台


java -jar rocketmq-console-ng-1.0.0.jar

7、启动成功后,通过浏览器访问:http://localhost:8080 进入 控制台界面

http://192.168.25.135:8080
http://192.168.25.138:8080

三、RocketMQ – 消息发送样例介绍和步骤分析

1、消息发送样例

1.1 导入 MQ 客户端依赖

<dependency><groupid>org.apache.rocketmq</groupId><artifactid>rocketmq-client</artifactid><version>4.4.0</version>
</dependency>
1.2 消息发送者步骤分析

1.创建消息生产者 producer,并制定生产者组名2.指定 Nameserver 地址3.启动 producer4.创建消息对象,指定主题 Topic、Tag 和消息体5.发送消息6.关闭生产者 producer。
1.3 消息消费者步骤分析

1.创建消费者 Consumer,制定消费者组名2.指定 Nameserver 地址3.订阅主题 Topic 和 Tag4.设置回调函数,处理消息5.启动消费者 consumer。

2、打开 idea,创建 rocketmq_demo 的 maven 工程。

--> idea --> File --> New --> Project --> Maven Project SDK: ( 1.8(java version "1.8.0_131" ) --> Next --> Groupld : ( djh.it )Artifactld : ( rocketmq_demo )Version : 1.0-SNAPSHOT--> Name: ( rocketmq_demo )Location: ( \rocketmq_demo\ )	--> Finish

3、在工程 rocketmq_demo (模块)中的 pom.xml 中导入依赖

<dependency><groupid>org.apache.rocketmq</groupId><artifactid>rocketmq-client</artifactid><version>4.4.0</version>
</dependency>

4、在工程 rocketmq_demo (模块)中,创建包结构:


src/main/java/djh/it/mq/rocketmq/base/
src/main/java/djh/it/mq/rocketmq/batch/
src/main/java/djh/it/mq/rocketmq/delay/
src/main/java/djh/it/mq/rocketmq/filter/
src/main/java/djh/it/mq/rocketmq/order/
src/main/java/djh/it/mq/rocketmq/transaction/

四、RocketMQ – 发送同步消息

1、RocketMQ – 发送同步消息

发送同步消息,这种可靠性同步地发送方式使用的比较广泛,比如:重要的消息通知、短信通知等。

2、在工程 rocketmq_demo (模块)中,创建 发送同步消息类 SyncProducer.java

/***   rocketmq_demo\src\main\java\djh\it\mq\rocketmq\base\producer\SyncProducer.java**   2024-5-24  创建 发送同步消息类 SyncProducer.java*/
package djh.it.mq.rocketmq.base.producer;import org.apache.rocketmq.client.producer.DefaultMQProducer;public class SyncProducer {public static void main(String[] args) throws Exception {//1.创建消息生产者 producer,并制定生产者组名DefaultMQProducer producer = new DefaultMQProducer("group1");//2.指定 Nameserver 地址producer.setNamesrvAddr("192.168.25.135:9876;192.168.25.138:9876");//3.启动 producerproducer.start();for(int i=0; i<10; i++){//4.创建消息对象,指定主题 Topic、Tag 和消息体//参数一:消息主题 Topic, 参数二:消息 Tag, 参数三:消息内容Message msg = new Message("base", "Tag1", ("Hello World"+i).getBytes());//5.发送消息SendResult result = producer.send(msg);//发送状态SendStatus status = result.getSendStatus();//消息 ID //String msgId = result.getMsgId();//消息接受队列 ID //int queueId = result.getMessageQueue().getQueueId();//System.out.println("发送状态:"+result+", 消息ID"+msgId+", 队列"+queueId);System.out.println("发送结果:"+result);TimeUnit.SECONDS.sleep(1);  //线程睡1秒}//6.关闭生产者 producer。producer.shutdown();  	   }
}

3、运行测试类,进行测试。查看发送结果。

五、RocketMQ – 发送异步消息

1、RocketMQ – 发送异步消息

异步消息通常用在对响应时间敏感的业务场景,即发送端不能容忍长时间的等待 Broker 的响应。

2、在工程 rocketmq_demo (模块)中,创建 发送异步消息类 AsyncProducer.java


/***   rocketmq_demo\src\main\java\djh\it\mq\rocketmq\base\producer\AsyncProducer.java**   2024-5-24  创建 发送异步消息类 AsyncProducer.java*/
package djh.it.mq.rocketmq.base.producer;import org.apache.rocketmq.client.producer.DefaultMQProducer;public class AsyncProducer {public static void main(String[] args) throws Exception {//1.创建消息生产者 producer,并制定生产者组名DefaultMQProducer producer = new DefaultMQProducer("group1");//2.指定 Nameserver 地址producer.setNamesrvAddr("192.168.25.135:9876;192.168.25.138:9876");//3.启动 producerproducer.start();for(int i=0; i<10; i++){//4.创建消息对象,指定主题 Topic、Tag 和消息体//参数一:消息主题 Topic, 参数二:消息 Tag, 参数三:消息内容Message msg = new Message("base", "Tag2", ("Hello World"+i).getBytes());//5.发送 异步 消息producer.send(msg, new SendCallback(){//发送成功的回调函数public void onSuccess(SendResult sendResult){System.out.println("发送结果:"+sendResult);}//发送失败的回调函数public void onException(Throwable e){System.out.println("发送异常:"+e);}});System.out.println("发送结果:"+result);TimeUnit.SECONDS.sleep(1);  //线程睡1秒}//6.关闭生产者 producer。producer.shutdown();  	   }
}

3、运行测试类,进行测试。查看发送结果。

六、RocketMQ – 发送单向消息

1、RocketMQ – 发送单向消息

单向消息这种方式主要用在不特别关心发送结果的场景,例如日志发送。

2、在工程 rocketmq_demo (模块)中,创建 发送单向消息类 OneWayProducer.java


/***   rocketmq_demo\src\main\java\djh\it\mq\rocketmq\base\producer\OneWayProducer.java**   2024-5-24  创建 发送单向消息类 OneWayProducer.java*/
package djh.it.mq.rocketmq.base.producer;import org.apache.rocketmq.client.producer.DefaultMQProducer;
import java.util.concurrent.TimeUnit;public class OneWayProducer {public static void main(String[] args) throws Exception {//1.创建消息生产者 producer,并制定生产者组名DefaultMQProducer producer = new DefaultMQProducer("group1");//2.指定 Nameserver 地址producer.setNamesrvAddr("192.168.25.135:9876;192.168.25.138:9876");//3.启动 producerproducer.start();for(int i=0; i<3; i++){//4.创建消息对象,指定主题 Topic、Tag 和消息体//参数一:消息主题 Topic, 参数二:消息 Tag, 参数三:消息内容Message msg = new Message("base", "Tag3", ("Hello World 单向消息"+i).getBytes());//5.发送 单向 消息(无返回值)producer.sendOneway(msg);TimeUnit.SECONDS.sleep(5);  //线程睡5秒}//6.关闭生产者 producer。producer.shutdown();  }
}

3、运行测试类,进行测试。

七、RocketMQ – 消息消费基本流程

1、消息消费者步骤分析


1.创建消费者 Consumer,制定消费者组名2.指定 Nameserver 地址3.订阅主题 Topic 和 Tag4.设置回调函数,处理消息5.启动消费者 consumer。

2、在工程 rocketmq_demo (模块)中,创建 消息消费类 Consumer.java


/***   rocketmq_demo\src\main\java\djh\it\mq\rocketmq\base\consumer\Consumer.java**   2024-5-24  创建 消息消费类 Consumer.java*/
package djh.it.mq.rocketmq.base.consumer;import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import java.util.concurrent.TimeUnit;public class Consumer {public static void main(String[] args) throws Exception {//1.创建消费者 Consumer,制定消费者组名DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("group1");//2.指定 Nameserver 地址consumer.setNamesrvAddr("192.168.25.135:9876;192.168.25.138:9876");//3.订阅主题 Topic 和 Tag//consumer.subscribe("base", "Tag1");  //接收同步消息consumer.subscribe("base", "Tag2");  //接收异步消息前,可以让先发送异步消息。//4.设置回调函数,处理消息consumer.registerMessageListener(new MessageListenerConcurrently(){//接受消息内容public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context){//System.out.println(msgs); //接收到的消息是未转换的字节码for(MessageExt msg : msgs){System.out.println(new String(msg.getBody()));  //转换为字符串消息}return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}});//5.启动消费者 consumer。consumer.start();}
}

3、运行测试类,进行测试。

八、RocketMQ – 消费者广播模式和负载均衡模式

1、RocketMQ – 消费者 广播模式

消费者采用广播的方式消费消息,每个消费者消费的消息都是相同的。

2、RocketMQ – 消费者 负载均衡模式

消费者采用负载均衡方式消费消息,多个消费者共同消费队列消息,每个消费者处理的消息不同。

3、在工程 rocketmq_demo (模块)中,修改 消息消费测试类 Consumer.java


/***   rocketmq_demo\src\main\java\djh\it\mq\rocketmq\base\consumer\Consumer.java**   2024-5-24  修改 消息消费类 Consumer.java 添加消费模式。*/
package djh.it.mq.rocketmq.base.consumer;import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import java.util.concurrent.TimeUnit;public class Consumer {public static void main(String[] args) throws Exception {//1.创建消费者 Consumer,制定消费者组名DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("group1");//2.指定 Nameserver 地址consumer.setNamesrvAddr("192.168.25.135:9876;192.168.25.138:9876");//3.订阅主题 Topic 和 Tag//consumer.subscribe("base", "Tag1");  //接收同步消息//consumer.subscribe("base", "Tag1 | Tag2");  //接收同步消息 和 异步消息//consumer.subscribe("base", "*");  //接收所有消息consumer.subscribe("base", "Tag1");  //接收同步消息前,可以让先发送同步消息。//添加消费模式 //consumer.setMessageModel(MessageModel.CLUSTERING);  //默认是负载均衡模式消费consumer.setMessageModel(MessageModel.BROADCASTING);  //广播模式消费//4.设置回调函数,处理消息consumer.registerMessageListener(new MessageListenerConcurrently(){//接受消息内容public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context){//System.out.println(msgs); //接收到的消息是未转换的字节码for(MessageExt msg : msgs){System.out.println(new String(msg.getBody()));  //转换为字符串消息}return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}});//5.启动消费者 consumer。consumer.start();}
}

4、运行测试类,进行测试。

上一节关联链接请点击:
# 全面解剖 消息中间件 RocketMQ-(2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费、开源、好用的 SQL 客户端合集

免费、开源、好用的 SQL 客户端合集 分类 编程技术 0、SQL Chat SQL Chat 是 2023 年 3 月推出的新型 SQL 客户端&#xff0c;它将数据库管理带入了基于聊天的新时代。 SQL Chat 由 ChatGPT 驱动&#xff0c;能够帮你编写和润色 SQL 语句&#xff0c;让数据库操作变得更加智…

微信小程序开发环境的搭建

一、注册微信小程序账号 二、安装微信开发者工具 1.下载微信开发者工具。 官网下载地址&#xff1a;https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/downloads.html 2、选择稳定版Window64下载安装 3、下载完毕后&#xff0c;点击下一步安装 三、使用微信开发者工具…

SQLite查询优化

文章目录 1. 引言2. WHERE子句分析2.1. 索引项使用示例 3. BETWEEN优化4. OR优化4.1. 将OR连接的约束转换为IN运算符4.2. 分别评估OR约束并取结果的并集 5. LIKE优化6. 跳跃扫描优化7. 连接7.1. 手动控制连接顺序7.1.1. 使用 SQLITE_STAT 表手动控制查询计划 1. 引言 给定一个…

C# 特性(Attribute)超详细教程

文章目录 0.前篇1.特性概念2.特性的声明和使用2.1 特性定义语法2.2 特性目标 3.预定义特性3.1 AttributeUsage3.2 Conditional3.3 其它预定义特性 4.MyAttributeHelper&#xff08;特性使用帮助类&#xff09;5.特性应用5.1 添加说明信息并获取5.2 数据验证 0.前篇 学习本文前…

聊聊Python中的文件读写操作

Python 中的文件读写操作是数据处理和存储的基本操作之一。下面&#xff0c;我将详细解释如何在 Python 中进行文件的读写操作。 1. 打开文件 在 Python 中&#xff0c;使用 open() 函数来打开文件。这个函数需要至少一个参数&#xff0c;即文件名&#xff0c;并且返回一个文件…

数据结构和组成

数据结构组成 数据项&#xff1a;一个数据元素可以由若干数据项组成。 数据对象&#xff1a;有相同性质的数据元素的集合&#xff0c;是数据的子集。 数据结构&#xff1a;是相互之间存在一种或多种特定关系的数据元素的集合。 逻辑结构 数据对象中数据元素之间的相互关系 eg: …

深入理解python列表遍历:两种方法详解与实例

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、使用索引遍历列表 三、直接使用元素遍历列表 四、总结 一、引言 在编程过程…

创建python字典的两种方法:直观与函数式

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、直观创建法&#xff1a;直接定义键值对 二、函数式创建法&#xff1a;使用内置函数dict…

CSRF 攻击

概述 CSRF(Cross-site request forgery,跨站请求伪造)。 它是指攻击者利用了用户的身份信息&#xff0c;执行了用户非本意的操作。 它首先引导用户访问一个危险网站&#xff0c;当用户访问网站后&#xff0c;网站会发送请求到被攻击的站点&#xff0c;这次请求会携带用户的c…

拼多多携手中国农业大学,投建陕西佛坪山茱萸科技小院

5月16日下午&#xff0c;中国农业大学陕西佛坪山茱萸科技小院在佛坪县银厂沟村揭牌。佛坪县素有“中国山茱萸之乡”的美誉&#xff0c;是全国山茱萸三大基地之一&#xff0c;当地山茱萸是国家地理标志产品&#xff0c;山茱萸肉产量位居全国第二。 为充分发挥佛坪县得天独厚的山…

vscode快捷键mac快捷键

vscode快捷键 在 Visual Studio Code 中&#xff0c;可以使用「Ctrl D」快捷键来选中相同内容。还可以使用以下快捷键来操作&#xff1a; 向上/下选择相同内容 Alt ↑/↓ 选择所有相同内容 Ctrl Shift L mac中则是commandshiftL VSCode删除整行快捷键 CtrlShiftK mac中则…

局部放电试验变频电源

局部放电试验中的变频电源设备 局部放电试验变频电源是一种专为电力设备的局部放电检测设计的高性能电源系统。在电力设备的运行和维护过程中&#xff0c;局部放电测试用于探测潜在的绝缘缺陷&#xff0c;防止它们进一步恶化导致设备损坏。传统的局部放电试验通常使用交流电源&…

with关键字

在 Python 中&#xff0c;with 是一个关键字&#xff0c;用于引入一个上下文管理器&#xff08;context manager&#xff09;。上下文管理器是一种特殊的对象&#xff0c;它允许你以一种干净、结构化的方式执行一组特定的操作&#xff0c;通常包括设置和清理资源。 with 语句通…

jmeter之测试计划

一、测试计划作用 测试计划是jmeter的默认控件所有线程组都是测试计划的下级控件测试计划可以配置用户自定义的变量测试计划可以配置线程组的串行或并行 二、查看界面 名称&#xff1a;可以修改自定义的名称注释&#xff1a;解释测试计划是用来做什么的用户自定义的变量&…

Sentinel重要的前置知识

文章目录 1、雪崩问题及解决方案1.1、雪崩问题1.2、超时处理1.3、仓壁模式1.4、断路器1.5、限流1.6、总结 2、服务保护技术对比3、Sentinel介绍和安装3.1、初识Sentinel3.2、安装Sentinel 4、微服务整合Sentinel ​&#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在…

PX4使用yolo仿真环境搭建

文章目录 前言一、修改机架sdf文件二、安装yolo三、运行 前言 ubuntu20.04 PX4 1.13.3 已配置好PX4 ROS gazebo环境 一、修改机架sdf文件 将双目相机加到仿真的iris机架上 修改下图文件 添加如下&#xff1a; <include><uri>model://stereo_camera</uri>…

用nn.Sequential实现图像的数据增强(augmentations)

代码example: import torch import torch.nn as nn# 定义一些增强操作&#xff0c;例如随机水平翻转和归一化 augmentations nn.Sequential(nn.RandomHorizontalFlip(),nn.Normalize(mean[0.5], std[0.5]) )# 创建一个示例 tensor candidate torch.randn(1, 3, 224, 224) #…

QWRT改AP模式 自动获取IP

关闭&#xff08;禁用&#xff09;WAN 和 WAN6接口修改LAN接口 IP地址 改为上级路由的网段&#xff0c;如主路由器IP192.168.2.1&#xff0c;那么就设置为192.168.2.2&#xff08;不要冲突了&#xff09;IPv4 网关 改为上级路由的IP地址&#xff0c;如主路由器IP192.168.2.1&am…

使用 CapSolver API 服务解决 Arkose Labs FunCaptcha 验证码

使用 CapSolver API 服务解决 Arkose Labs FunCaptcha 验证码 FunCaptcha 以其复杂的图像验证而闻名&#xff0c;对自动化系统构成了巨大的挑战。CapSolver 的 API 服务利用先进的 AI 技术轻松应对和解决 FunCaptcha 挑战。本指南探讨了 CapSolver 如何实现无缝自动化&#xff…

什么是html

HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是一种用于创建网页的标准标记语言。它描述了一个网站的结构骨架&#xff0c;使得浏览器能够展示具有特定格式的文本、链接、图片和其他内容。HTML 文档由一系列的元素构成&#xff0c;这些元…