RocketMQ的Admin Tool工具

文档:https://github.com/apache/rocketmq/blob/develop/docs/cn/operation.md写的很全面,我写了一半就偷懒了,地址放这里。
命令大全:https://github.com/apache/rocketmq/blob/develop/docs/cn/operation.md

1. 删除讨厌的告警

在这里插入图片描述
如上sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0两个异常太烦人了。

  1. 删除sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
    • 执行localedef -f UTF-8 -i en_US en_US.UTF-8
  2. 删除OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
    • 修改tools.sh脚本,删除-XX:PermSize=128m -XX:MaxPermSize=128m
      在这里插入图片描述

2. 生产者和消费者代码

2.1 生产者代码

package com.tom.lrocket;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;public class Producer1 {public static void main(String[] args) throws Exception {// 实例化消息生产者ProducerDefaultMQProducer producer = new DefaultMQProducer("demo-producer-group");// 设置NameServer的地址producer.setNamesrvAddr("localhost:9876");// 启动Producer实例producer.start();int count = 1000;for (int i = 0; i < count; i++) {String topic = "TOPIC-1";// 创建消息,并指定Topic,Tag和消息体Message msg = new Message(topic, "TagB", (topic + " Hello RocketMQ " + i).getBytes());// 发送消息到一个BrokerSendResult send = producer.send(msg);System.out.println(send);Thread.sleep(1000);}// 如果不再发送消息,关闭Producer实例。producer.shutdown();}
}
SendResult [sendStatus=SEND_OK, msgId=AC1086D51C7518B4AAC2948F2B740000, offsetMsgId=AC1086D500002A9F0000000000063E0C, messageQueue=MessageQueue [topic=TOPIC-2, brokerName=broker-a, queueId=1], queueOffset=163]
SendResult [sendStatus=SEND_OK, msgId=AC1086D51C7518B4AAC2948F2F6A0001, offsetMsgId=AC1086D500002A9F0000000000063F7C, messageQueue=MessageQueue [topic=TOPIC-2, brokerName=broker-a, queueId=2], queueOffset=164]
SendResult [sendStatus=SEND_OK, msgId=AC1086D51C7518B4AAC2948F33550002, offsetMsgId=AC1086D500002A9F00000000000640EC, messageQueue=MessageQueue [topic=TOPIC-2, brokerName=broker-a, queueId=3], queueOffset=164]

2.2 消费者代码

package com.tom.lrocket;import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;import java.util.List;public class Consumer1 {public static void main(String[] args) throws Exception {// 实例化消费者DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("lixi");// 设置NameServer的地址consumer.setNamesrvAddr("localhost:9876");// 订阅一个或者多个Topic,以及Tag来过滤需要消费的消息String topic = "TOPIC-1";consumer.subscribe(topic, "TagB");// 注册回调实现类来处理从broker拉取回来的消息consumer.registerMessageListener(new MessageListenerConcurrently() {@Overridepublic ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);// 标记该消息已经被成功消费return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}});// 启动消费者实例consumer.start();System.out.printf("Consumer Started.%n");}
}
Consumer Started.
ConsumeMessageThread_lixi_10 Receive New Messages: [MessageExt [brokerName=broker-a, queueId=1, storeSize=185, queueOffset=287, sysFlag=0, bornTimestamp=1722255624569, bornHost=/172.18.0.1:60040, storeTimestamp=1722255624572, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F0000000000065181, commitLogOffset=414081, bodyCRC=1939369001, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOPIC-1', flag=0, properties={CONSUME_START_TIME=1722255633739, UNIQ_KEY=AC1086D51C6E18B4AAC2948F61790013, MIN_OFFSET=0, TAGS=TagB, WAIT=true, MAX_OFFSET=289}, body=[84, 79, 80, 73, 67, 45, 49, 32, 72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 57], transactionId='null'}]] 
ConsumeMessageThread_lixi_19 Receive New Messages: [MessageExt [brokerName=broker-a, queueId=2, storeSize=185, queueOffset=288, sysFlag=0, bornTimestamp=1722255625577, bornHost=/172.18.0.1:60040, storeTimestamp=1722255625582, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F00000000000652F3, commitLogOffset=414451, bodyCRC=560564046, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOPIC-1', flag=0, properties={CONSUME_START_TIME=1722255633739, UNIQ_KEY=AC1086D51C6E18B4AAC2948F65690014, MIN_OFFSET=0, TAGS=TagB, WAIT=true, MAX_OFFSET=290}, body=[84, 79, 80, 73, 67, 45, 49, 32, 72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 50, 48], transactionId='null'}]] 
ConsumeMessageThread_lixi_13 Receive New Messages: [MessageExt [brokerName=broker-a, queueId=0, storeSize=184, queueOffset=284, sysFlag=0, bornTimestamp=1722255613500, bornHost=/172.18.0.1:60040, storeTimestamp=1722255613503, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F00000000000641A4, commitLogOffset=410020, bodyCRC=852255292, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOPIC-1', flag=0, properties={CONSUME_START_TIME=1722255633739, UNIQ_KEY=AC1086D51C6E18B4AAC2948F363C0008, MIN_OFFSET=0, TAGS=TagB, WAIT=true, MAX_OFFSET=289}, body=[84, 79, 80, 73, 67, 45, 49, 32, 72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 56], transactionId='null'}]] 

2.3 解释Message Key 、Unique Key、Message Id 的区别

from:https://cloud.tencent.com/developer/article/1581366
github的解释
在这里插入图片描述

RocketMQ提供了3种消息查询方式:

  • 按照Message Key 查询:消息的key是业务开发同学在发送消息之前自行指定的,通常会把具有业务含义,区分度高的字段作为消息的key,如用户id,订单id等。
  • 按照Unique Key查询:除了业务开发同学明确的指定消息中的key,RocketMQ生产者客户端在发送发送消息之前,会自动生成一个UNIQ_KEY,设置到消息的属性中,从逻辑上唯一代表一条消息。
  • 按照Message Id 查询:Message Id 是消息发送后,在Broker端生成的,其包含了Broker的地址,和在CommitLog中的偏移信息,并会将Message Id作为发送结果的一部分进行返回。Message Id中属于精确匹配,从物理上唯一代表一条消息,查询效率更高。

从发送端可以看到msgId=AC1086D51C6E18B4AAC2948F16B10000, offsetMsgId=AC1086D500002A9F00000000000639BCmsgIdUnique KeyoffsetMsgIdMessage Id

SendResult [sendStatus=SEND_OK, msgId=AC1086D51C6E18B4AAC2948F16B10000, offsetMsgId=AC1086D500002A9F00000000000639BC, messageQueue=MessageQueue [topic=TOPIC-1, brokerName=broker-a, queueId=2], queueOffset=284]

从接受的消息可以看到msgId=AC1086D500002A9F00000000000639BCUNIQ_KEY=AC1086D51C6E18B4AAC2948F16B10000

ConsumeMessageThread_lixi_2 Receive New Messages: [MessageExt [brokerName=broker-a, queueId=2, storeSize=184, queueOffset=284, sysFlag=0, bornTimestamp=1722255605426, bornHost=/172.18.0.1:60040, storeTimestamp=1722255605436, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F00000000000639BC, commitLogOffset=407996, bodyCRC=1008200206, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOPIC-1', flag=0, properties={CONSUME_START_TIME=1722255633739, UNIQ_KEY=AC1086D51C6E18B4AAC2948F16B10000, MIN_OFFSET=0, TAGS=TagB, WAIT=true, MAX_OFFSET=290}, body=[84, 79, 80, 73, 67, 45, 49, 32, 72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 48], transactionId='null'}]] 

Message Key
在这里插入图片描述

3. 查看topic中的消息统计、消费组的消费状态

  • topicStatus 查看 Topic 消息队列offset
  • consumerProgress 订阅组消费状态

4. Admin Tool命令

4.1 Topic相关
名称含义命令选项说明
updateTopic创建更新Topic配置-bBroker 地址,表示 topic 所在 Broker,只支持单台Broker,地址为ip:port
-ccluster 名称,表示 topic 所在集群(集群可通过 clusterList 查询)
-h打印帮助
-nNameServer服务地址,格式 ip:port
-p指定新topic的读写权限( W=2|R=4|WR=6 )
-r可读队列数(默认为 8)
-w可写队列数(默认为 8)
-ttopic 名称(名称只能使用字符 ^[a-zA-Z0-9_-]+$ )
deleteTopic删除Topic-ccluster 名称,表示删除某集群下的某个 topic (集群 可通过 clusterList 查询)
-h打印帮助
-nNameServer 服务地址,格式 ip:port
-ttopic 名称(名称只能使用字符 ^[a-zA-Z0-9_-]+$ )
topicList查看 Topic 列表信息-h打印帮助
-c不配置-c只返回topic列表,增加-c返回clusterName, topic, consumerGroup信息,即topic的所属集群和订阅关系,没有参数
-nNameServer 服务地址,格式 ip:port
topicRoute查看 Topic 路由信息-ttopic 名称
-h打印帮助
-nNameServer 服务地址,格式 ip:port
topicStatus查看 Topic 消息队列offset-ttopic 名称
-h打印帮助
-nNameServer 服务地址,格式 ip:port
topicClusterList查看 Topic 所在集群列表-ttopic 名称
-h打印帮助
-nNameServer 服务地址,格式 ip:port
updateTopicPerm更新 Topic 读写权限-ttopic 名称
-h打印帮助
-nNameServer 服务地址,格式 ip:port
-bBroker 地址,表示 topic 所在 Broker,只支持单台Broker,地址为ip:port
-p指定新 topic 的读写权限( W=2|R=4|WR=6 )
-ccluster 名称,表示 topic 所在集群(集群可通过 clusterList 查询),-b优先,如果没有-b,则对集群中所有Broker执行命令
updateOrderConf从NameServer上创建、删除、获取特定命名空间的kv配置,目前还未启用-h打印帮助
-nNameServer 服务地址,格式 ip:port
-ttopic,键
-vorderConf,值
-mmethod,可选get、put、delete
allocateMQ以平均负载算法计算消费者列表负载消息队列的负载结果-ttopic 名称
-h打印帮助
-nNameServer 服务地址,格式 ip:port
-iipList,用逗号分隔,计算这些ip去负载Topic的消息队列
statsAll打印Topic订阅关系、TPS、积累量、24h读写总量等信息-h打印帮助
-nNameServer 服务地址,格式 ip:port
-a是否只打印活跃topic
-t指定topic

deleteTopic 删除topic

sh-4.2$ sh mqadmin deleteTopic -h
usage: mqadmin deleteTopic -c <arg> [-h] [-n <arg>] -t <arg>-c,--clusterName <arg>   delete topic from which cluster-h,--help                Print help-n,--namesrvAddr <arg>   Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876-t,--topic <arg>         topic name
sh-4.2$ 
sh-4.2$ 
sh-4.2$ sh mqadmin  deleteTopic -n namesrv:9876  -t TopicA  -c DefaultCluster
delete topic [TopicA] from cluster [DefaultCluster] success.
delete topic [TopicA] from NameServer success.

topicList 查看 Topic 列表信息

sh-4.2$ sh mqadmin topicList -n namesrv:9876 -c
#Cluster Name         #Topic                                            #Consumer Group                                 
DefaultCluster        RMQ_SYS_TRANS_HALF_TOPIC                                                                          
DefaultCluster        TOM                                                                                               
DefaultCluster        TopicA                                                                                            
DefaultCluster        BenchmarkTest                                                                                     
DefaultCluster        OFFSET_MOVED_EVENT                                                                                
DefaultCluster        broker-a                                                                                          
DefaultCluster        TBW102                                                                                            
DefaultCluster        SELF_TEST_TOPIC                                                                                   
DefaultCluster        DefaultCluster                                                                                    sh-4.2$ 
sh-4.2$ 
sh-4.2$ 

topicRoute 查看 Topic 路由信息

sh-4.2$ sh mqadmin  topicRoute -n namesrv:9876  -t TOM
{"brokerDatas":[{"brokerAddrs":{0:"172.16.134.213:10911"},"brokerName":"broker-a","cluster":"DefaultCluster"}],"filterServerTable":{},"queueDatas":[{"brokerName":"broker-a","perm":6,"readQueueNums":3,"topicSynFlag":0,"writeQueueNums":3}]
}
sh-4.2$ 
sh-4.2$ sh mqadmin topicStatus -n namesrv:9876  -t TOM#Broker Name                      #QID  #Min Offset           #Max Offset             #Last Updated
broker-a                          0     0                     1                       2024-07-29 07:13:33,155
broker-a                          1     0                     0                       
broker-a                          2     0                     1                       2024-07-29 07:18:07,281
sh-4.2$ 
sh-4.2$ 

在这里插入图片描述

topicClusterList 查看 Topic 所在集群列表
sh-4.2$ 
sh-4.2$ sh mqadmin  topicClusterList  -n namesrv:9876  -t TOM
DefaultCluster
sh-4.2$ 
updateTopicPerm 更新 Topic 读写权限
sh-4.2$ 
sh-4.2$ sh mqadmin updateTopicPerm  -n namesrv:9876  -t TOM -b localhost:10911 -p 2
update topic perm from 6 to 2 in localhost:10911 success.
TopicConfig [topicName=TOM, readQueueNums=3, writeQueueNums=3, perm=-W-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false]
sh-4.2$ 
sh-4.2$ 
sh-4.2$ sh mqadmin consumeMessage -n namesrv:9876   -t TOM  -b broker-a -c 1 -g lixi   
org.apache.rocketmq.client.exception.MQClientException: Can not find Message Queue for this topic, TOM
See http://rocketmq.apache.org/docs/faq/ for further details.at org.apache.rocketmq.client.impl.MQAdminImpl.fetchSubscribeMessageQueues(MQAdminImpl.java:162)at org.apache.rocketmq.client.impl.consumer.DefaultMQPullConsumerImpl.fetchSubscribeMessageQueues(DefaultMQPullConsumerImpl.java:138)at org.apache.rocketmq.client.consumer.DefaultMQPullConsumer.fetchSubscribeMessageQueues(DefaultMQPullConsumer.java:225)at org.apache.rocketmq.tools.command.message.ConsumeMessageCommand.executeDefault(ConsumeMessageCommand.java:251)at org.apache.rocketmq.tools.command.message.ConsumeMessageCommand.execute(ConsumeMessageCommand.java:195)at org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:135)at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:86)
Caused by: org.apache.rocketmq.client.exception.MQClientException: Can not find Message Queue for this topic, TOM Namesrv return empty
For more information, please visit the url, http://rocketmq.apache.org/docs/faq/at org.apache.rocketmq.client.impl.MQAdminImpl.fetchSubscribeMessageQueues(MQAdminImpl.java:157)... 6 more
sh-4.2$ 

在这里插入图片描述

sh-4.2$ 
sh-4.2$ sh mqadmin updateTopicPerm  -n namesrv:9876  -t TOM -b localhost:10911 -p 4
update topic perm from 2 to 4 in localhost:10911 success.
TopicConfig [topicName=TOM, readQueueNums=3, writeQueueNums=3, perm=R--, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false]
sh-4.2$ 
sh-4.2$ 
sh-4.2$ 
sh-4.2$ 
sh-4.2$ sh mqadmin consumeMessage -n namesrv:9876   -t TOM  -b broker-a -c 1 -g lixi
Consume ok
MSGID: 7F000001000831CEFDE091BEFDDB0000 MessageExt [queueId=0, storeSize=181, queueOffset=0, sysFlag=0, bornTimestamp=1722237213147, bornHost=/172.18.0.1:45436, storeTimestamp=1722237213155, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F0000000000000000, commitLogOffset=0, bodyCRC=54431857, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOM', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=1, KEYS=key-1, UNIQ_KEY=7F000001000831CEFDE091BEFDDB0000, WAIT=true, TAGS=tag-1}, body=[109, 101, 115, 115, 97, 103, 101, 66, 111, 100, 121, 45, 49], transactionId='null'}] BODY: messageBody-1
MessageQueue [topic=TOM, brokerName=broker-a, queueId=0] print msg finished. status=NO_NEW_MSG, offset=1
The older -1 message of the 1 queue will be provided
sh-4.2$ 
statsAll 打印Topic订阅关系、TPS、积累量、24h读写总量等信息
sh-4.2$ 
sh-4.2$ 
sh-4.2$ sh mqadmin  statsAll -n namesrv:9876   -t TOM  
#Topic                            #Consumer Group                  #Accumulation      #InTPS     #OutTPS   #InMsg24Hour  #OutMsg24Hour
TOM                                                                           0        0.00                          0    NO_CONSUMER
sh-4.2$ 

查看rocketmq消息堆积

1. sh mqadmin consumerProgress -n namesrv:9876 -g lixi -s true
sh-4.2$ sh mqadmin  consumerProgress -n namesrv:9876  -g lixi -s true
#Topic                            #Broker Name                      #QID  #Broker Offset        #Consumer Offset      #Client IP           #Diff                 #LastTime
%RETRY%lixi                       broker-a                          0     0                     0                     172.16.134.213       0                     N/A
TOM                               broker-a                          0     2                     2                     172.16.134.213       0                     2024-07-29 08:53:11
TOM                               broker-a                          1     1                     1                     172.16.134.213       0                     2024-07-29 09:20:30
TOM                               broker-a                          2     2                     2                     172.16.134.213       0                     2024-07-29 08:58:33Consume TPS: 0.00
Diff Total: 0
2. 从管理页面的topic查看

在这里插入图片描述

在这里插入图片描述

从管理页面的消费者组查看

在这里插入图片描述
在这里插入图片描述

sh-4.2$ sh mqadmin consumerStatus -n namesrv:9876  -g lixi 
001  172.16.134.213@5084                      V4_6_0               1722245834703/172.16.134.213@5084Same subscription in the same group of consumerRebalance OK
sh-4.2$ 
sh-4.2$ 
sh-4.2$ 
sh-4.2$ 
sh-4.2$ 
sh-4.2$ 
sh-4.2$ sh mqadmin consumeMessage -n namesrv:9876   -t TOM  -b broker-a -g lixi
Consume ok
MSGID: 7F000001000831CEFDE091BEFDDB0000 MessageExt [queueId=0, storeSize=181, queueOffset=0, sysFlag=0, bornTimestamp=1722237213147, bornHost=/172.18.0.1:45436, storeTimestamp=1722237213155, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F0000000000000000, commitLogOffset=0, bodyCRC=54431857, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOM', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=2, KEYS=key-1, UNIQ_KEY=7F000001000831CEFDE091BEFDDB0000, WAIT=true, TAGS=tag-1}, body=[109, 101, 115, 115, 97, 103, 101, 66, 111, 100, 121, 45, 49], transactionId='null'}] BODY: messageBody-1
MSGID: 7F000001000831CEFDE0921A38420005 MessageExt [queueId=0, storeSize=175, queueOffset=1, sysFlag=0, bornTimestamp=1722243191874, bornHost=/172.18.0.1:35472, storeTimestamp=1722243191877, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F0000000000000166, commitLogOffset=358, bodyCRC=532952986, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOM', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=2, KEYS=key, UNIQ_KEY=7F000001000831CEFDE0921A38420005, WAIT=true, TAGS=tag}, body=[109, 101, 115, 115, 97, 103, 101, 66, 111, 100, 121], transactionId='null'}] BODY: messageBody
MessageQueue [topic=TOM, brokerName=broker-a, queueId=0] print msg finished. status=NO_NEW_MSG, offset=2
MessageQueue [topic=TOM, brokerName=broker-a, queueId=1] print msg finished. status=NO_NEW_MSG, offset=0
Consume ok
MSGID: 7F000001000831CEFDE091C32CAC0002 MessageExt [queueId=2, storeSize=177, queueOffset=0, sysFlag=0, bornTimestamp=1722237487276, bornHost=/172.18.0.1:58402, storeTimestamp=1722237487281, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F00000000000000B5, commitLogOffset=181, bodyCRC=439861707, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOM', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=2, KEYS=key, UNIQ_KEY=7F000001000831CEFDE091C32CAC0002, WAIT=true, TAGS=tag}, body=[109, 101, 115, 115, 97, 103, 101, 66, 111, 100, 121, 45, 50], transactionId='null'}] BODY: messageBody-2
MSGID: 7F000001000831CEFDE0921F1FF30007 MessageExt [queueId=2, storeSize=181, queueOffset=1, sysFlag=0, bornTimestamp=1722243513331, bornHost=/172.18.0.1:40958, storeTimestamp=1722243513334, storeHost=/172.16.134.213:10911, msgId=AC1086D500002A9F0000000000000215, commitLogOffset=533, bodyCRC=439861707, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TOM', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=2, KEYS=key-2, UNIQ_KEY=7F000001000831CEFDE0921F1FF30007, WAIT=true, TAGS=tag-2}, body=[109, 101, 115, 115, 97, 103, 101, 66, 111, 100, 121, 45, 50], transactionId='null'}] BODY: messageBody-2
MessageQueue [topic=TOM, brokerName=broker-a, queueId=2] print msg finished. status=NO_NEW_MSG, offset=2

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

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

相关文章

文献笔记|综述|A Survey of Large Language Models (前3章)

A Survey of Large Language Models 题目&#xff1a;大语言模型综述 作者&#xff1a;Wayne Xin Zhao, Kun Zhou, Junyi Li et al. 来源&#xff1a;arXiv 单位&#xff1a;中国人民大学高瓴人工智能学院、中国人民大学信息学院 关键词&#xff1a;Large Language Models; Eme…

AI之AI by Hand:AI by Hand(手动自定义AI算法的数学逻辑)的简介、使用方法、案例应用之详细攻略

AI之AI by Hand&#xff1a;AI by Hand(手动自定义AI算法的数学逻辑)的简介、使用方法、案例应用之详细攻略 目录 AI by Hand的简介 AI by Hand的使用方法 1、解读混合专家&#xff08;MoE&#xff09; 2、解读LSTM (Long Short-Term Memory) AI by Hand的案例应用 AI by …

学习大数据DAY25 Shell脚本的书写2与Shell工具的使用

目录 自定义函数 递归-自己调用自己 上机练习 12 Shell 工具 sort sed awk 上机练习 13 自定义函数 name(){ action; } function name { Action; } name 因为 shell 脚本是从上到下逐行运行&#xff0c;不会像其它语言一样先编译&#xff0c;所以函数必 须在调…

MyBatis-Plus自动生成代码

目录 前言一. 什么是 MyBatis-Plus1. Mybatis-Plus 的特点2. Mybatis-Plus 结构二. MyBatis-Plus 自动生成步骤1. 数据库准备2. 环境准备(1) 创建一个空的 Spring Boot 工程(2) 导入pom依赖(3) 编辑application.yml文件(4) 在启动类加入 @MapperScan 注解3. 配置代码4. 运行三.…

江科大/江协科技 STM32学习笔记P15

文章目录 TIM输出比较1、输出比较简介2、PWM简介3、输出比较通道&#xff08;高级&#xff09;4、输出比较通道&#xff08;通用&#xff09;5、输出比较模式6、PWM基本结构参数计算 7、舵机简介8、直流电机及驱动简介驱动芯片 TIM输出比较 1、输出比较简介 CNT计数器&#x…

VUE3——003、VUE 项目中的文件结构(index.html、main.ts、App.vue)

虽然是号称是小白初学&#xff0c;但本文只是对 VUE 小白&#xff0c;其它的基功还是有一丢丢的&#xff0c;不太懂的同学去看看一下详解&#xff0c;我这里记述的是自己的理解和观点。见谅&#xff01; index.html&#xff1a;入口文件&#xff08;以创建 vue3 项目的默认文件…

ElasticSearch(es)倒排索引

目录 一、ElasticSearch 二、倒排索引 1. 正向索引 2. 倒排索引 具体细节 1. 文档分析 2. 索引构建 3. 索引存储 4. 词条编码 5. 索引优化 6. 查询处理 示例 总结 3. 正向和倒排 三、总结 倒排索引的基本概念 为什么倒排索引快 一、ElasticSearch Elasticsear…

Vue 3 中使用 InMap 绘制热力图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue 3 中使用 InMap 绘制热力图 应用场景介绍 InMap 是一款强大的地图组件库&#xff0c;它提供了一系列丰富的可视化功能&#xff0c;包括热力图。热力图可以将数据点在地图上以颜色编码的方式可视化&#x…

论文阅读_字节的语音生成模型_Seed-TTS

英文名称: Seed-TTS: A Family of High-Quality Versatile Speech Generation Models 中文名称: Seed-TTS&#xff1a;高质量多功能语音生成模型系列 链接: http://arxiv.org/abs/2406.02430v1 代码: https://github.com/BytedanceSpeech/seed-tts-eval (评测工具) 演示网站&am…

找出所有点到一个点的距离的最小值

这个题的看一眼有点像树形dp&#xff0c;但是要怎么去优化我们转移方程呢 这是为什么呢&#xff0c;我们的树形dp很难考虑来之前的答案&#xff0c;那么d[y] 怎么办&#xff0c;我们可以先以1为根计算出以1为根的答案 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.…

js 计算小数精度问题 ,引入decimal.js库 解决

安装 npm install --save decimal.js 引入 import Decimal from "decimal.js" 使用 new Decimal function adddDecimals (...decimals) { let sum new Decimal(0) decimals.forEach(decimal > { sum sum.plus(decimal) }) return sum.toNumber() } const res …

【刷题汇总 -- 笨小猴、 主持人调度(一)、分割等和子集】

C日常刷题积累 今日刷题汇总 - day0251、笨小猴1.1、题目1.2、思路1.3、程序实现 2、主持人调度&#xff08;一&#xff09;2.1、题目2.2、思路2.3、程序实现 3、分割等和子集3.1、题目3.2、思路3.3、程序实现 -- 0/1背包问题 4、题目链接 今日刷题汇总 - day025 1、笨小猴 1…

【MIT 6.5840(6.824)学习笔记】Raft

1 脑裂 许多容错系统使用一个单主节点来决定主副本。 MapReduce&#xff1a;由单主节点控制计算复制。GFS&#xff1a;主备复制数据&#xff0c;并由单主节点确定主拷贝的位置。VMware FT&#xff1a;主虚机和备份虚机之间复制指令&#xff0c;需要单点的Test-and-Set服务确认…

【JavaEE】通过Linux部署Web项目到云服务器上

一.配置部署所需的环境. 1.1 什么是部署? 要想知道什么是部署, 就要先了解我们在日常开发的过程中所设计到的几种环境: 开发环境: 软件开发环境指的是开发人员在创建、测试和部署软件应用程序时所需的一系列硬件、软件、工具和流程的集合。它是为了支持软件开发过程而构建的…

[算法]归并排序(C语言实现)

一、归并排序的定义 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法。该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。 二、归并排序的算法原理 归并排序的算法可以用递归法和非递归法来实现…

Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支、如何将本地文件推送至github、.gitignore文件的使用

借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。 Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时…

【ROS 最简单教程 002/300】ROS 环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

vue3实战(通用后台管理系统)问题总结

npm install less vue-router element-plus -s elementplus 路由引入组件第二种写法&#xff1a; 使用动态的import( )语法(推荐使用)&#xff08;路由懒加载&#xff09; component:()>import(路径)component:()>import(/views/Main.vue)打包之后的文件将会异常的大&a…

《昇思25天学习打卡营第25天|第28天》

今天是打卡的第二十八天&#xff0c;实践应用篇中的计算机视觉中Vision Transformer图像分类。 从Vision Transformer&#xff08;ViT&#xff09;简介开始了解&#xff0c;模型结构&#xff0c;模型特点&#xff0c;实验的环境准备和数据读取&#xff0c;模型解析&#xff08…

深入探索PHP框架:Symfony框架全面解析

1. 引言 在现代Web开发领域&#xff0c;PHP作为一种广泛使用的服务器端脚本语言&#xff0c;其框架的选择对于项目的成功至关重要。PHP框架不仅能够提高开发效率&#xff0c;还能确保代码的质量和可维护性。本文将深入探讨Symfony框架&#xff0c;这是一个功能强大且灵活的PHP…