# 全面解剖 消息中間件 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.pswp.cn/bicheng/15014.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15014.shtml
英文地址,請注明出處:http://en.pswp.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;這些元…