• Kafka - 3.x Kafka命令行操作



    在这里插入图片描述


    OverView

    在这里插入图片描述

    Topic主题命令行操作

    重要参数

    参数描述
    --bootstrap-server连接Kafka Broker的主机名和端口号
    --topic操作的主题名称
    --create创建主题
    --delete删除主题
    --alter修改主题
    --list查看所有主题
    --describe查看主题详细描述
    --partitions设置主题分区数
    --replication-factor设置主题分区副本
    --config更新系统默认的配置

    这些参数是用于操作和管理Apache Kafka主题的命令行工具参数,通常用于kafka-topics.sh工具。以下是每个参数的描述:

    1. --bootstrap-server:指定要连接的Kafka Broker的主机名和端口号,用于建立连接到Kafka集群的初始引导服务器。

    2. --topic:指定操作的主题的名称,这是执行各种操作的目标主题。

    3. --create:用于创建一个新的Kafka主题。在使用此参数时,需要提供主题名称和其他相关配置,例如分区数、副本因子等。

    4. --delete:用于删除指定的Kafka主题。要谨慎使用此参数,因为删除主题将删除主题的所有数据和配置。

    5. --alter:用于修改主题的配置,例如更改分区数、副本因子等。需要指定要修改的主题以及新的配置。

    6. --list:列出Kafka集群中所有的主题名称。

    7. --describe:查看指定主题的详细描述,包括主题的配置、分区信息、副本分配等。

    8. --partitions:用于设置主题的分区数,通常与--create--alter一起使用,以定义主题的分区数量。

    9. --replication-factor:用于设置主题的分区副本因子,通常与--create--alter一起使用,以定义主题的分区副本数量。

    10. --config:用于更新系统默认的Kafka主题配置,可以设置不同的主题级别的配置参数。

    这些参数是Kafka管理工具的一部分,用于在Kafka集群上执行各种管理任务,例如创建、删除、配置和查看主题。根据具体的任务,您可以使用这些参数中的一个或多个来执行相应的操作。


    帮助文档

    [root@localhost bin]# ./kafka-topics.sh
    Create, delete, describe, or change a topic.
    Option                                   Description
    ------                                   -----------
    --alter                                  Alter the number of partitions and
                                               replica assignment. Update the
                                               configuration of an existing topic
                                               via --alter is no longer supported
                                               here (the kafka-configs CLI supports
                                               altering topic configs with a --
                                               bootstrap-server option).
    --at-min-isr-partitions                  if set when describing topics, only
                                               show partitions whose isr count is
                                               equal to the configured minimum.
    --bootstrap-server <String: server to    REQUIRED: The Kafka server to connect
      connect to>                              to.
    --command-config <String: command        Property file containing configs to be
      config property file>                    passed to Admin Client. This is used
                                               only with --bootstrap-server option
                                               for describing and altering broker
                                               configs.
    --config <String: name=value>            A topic configuration override for the
                                               topic being created or altered. The
                                               following is a list of valid
                                               configurations:
                                                    cleanup.policy
                                                    compression.type
                                                    delete.retention.ms
                                                    file.delete.delay.ms
                                                    flush.messages
                                                    flush.ms
                                                    follower.replication.throttled.
                                               replicas
                                                    index.interval.bytes
                                                    leader.replication.throttled.replicas
                                                    local.retention.bytes
                                                    local.retention.ms
                                                    max.compaction.lag.ms
                                                    max.message.bytes
                                                    message.downconversion.enable
                                                    message.format.version
                                                    message.timestamp.after.max.ms
                                                    message.timestamp.before.max.ms
                                                    message.timestamp.difference.max.ms
                                                    message.timestamp.type
                                                    min.cleanable.dirty.ratio
                                                    min.compaction.lag.ms
                                                    min.insync.replicas
                                                    preallocate
                                                    remote.storage.enable
                                                    retention.bytes
                                                    retention.ms
                                                    segment.bytes
                                                    segment.index.bytes
                                                    segment.jitter.ms
                                                    segment.ms
                                                    unclean.leader.election.enable
                                             See the Kafka documentation for full
                                               details on the topic configs. It is
                                               supported only in combination with --
                                               create if --bootstrap-server option
                                               is used (the kafka-configs CLI
                                               supports altering topic configs with
                                               a --bootstrap-server option).
    --create                                 Create a new topic.
    --delete                                 Delete a topic
    --delete-config <String: name>           A topic configuration override to be
                                               removed for an existing topic (see
                                               the list of configurations under the
                                               --config option). Not supported with
                                               the --bootstrap-server option.
    --describe                               List details for the given topics.
    --exclude-internal                       exclude internal topics when running
                                               list or describe command. The
                                               internal topics will be listed by
                                               default
    --help                                   Print usage information.
    --if-exists                              if set when altering or deleting or
                                               describing topics, the action will
                                               only execute if the topic exists.
    --if-not-exists                          if set when creating topics, the
                                               action will only execute if the
                                               topic does not already exist.
    --list                                   List all available topics.
    --partitions <Integer: # of partitions>  The number of partitions for the topic
                                               being created or altered (WARNING:
                                               If partitions are increased for a
                                               topic that has a key, the partition
                                               logic or ordering of the messages
                                               will be affected). If not supplied
                                               for create, defaults to the cluster
                                               default.
    --replica-assignment <String:            A list of manual partition-to-broker
      broker_id_for_part1_replica1 :           assignments for the topic being
      broker_id_for_part1_replica2 ,           created or altered.
      broker_id_for_part2_replica1 :
      broker_id_for_part2_replica2 , ...>
    --replication-factor <Integer:           The replication factor for each
      replication factor>                      partition in the topic being
                                               created. If not supplied, defaults
                                               to the cluster default.
    --topic <String: topic>                  The topic to create, alter, describe
                                               or delete. It also accepts a regular
                                               expression, except for --create
                                               option. Put topic name in double
                                               quotes and use the '\' prefix to
                                               escape regular expression symbols; e.
                                               g. "test\.topic".
    --topic-id <String: topic-id>            The topic-id to describe.This is used
                                               only with --bootstrap-server option
                                               for describing topics.
    --topics-with-overrides                  if set when describing topics, only
                                               show topics that have overridden
                                               configs
    --unavailable-partitions                 if set when describing topics, only
                                               show partitions whose leader is not
                                               available
    --under-min-isr-partitions               if set when describing topics, only
                                               show partitions whose isr count is
                                               less than the configured minimum.
    --under-replicated-partitions            if set when describing topics, only
                                               show under replicated partitions
    --version                                Display Kafka version.
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server  127.0.0.1:9092 --list
    
    [root@localhost bin]#
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128

    实操

    [root@localhost bin]#  创建一个主题名为artisan的topic
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server  127.0.0.1:9092 --create --replication-factor 3 --partitions 3 --topic artisan
    Error while executing topic command : Replication factor: 3 larger than available brokers: 1.
    [2023-10-25 15:11:52,489] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
     (kafka.admin.TopicCommand$)
    [root@localhost bin]#
    [root@localhost bin]#
    [root@localhost bin]# 创建一个主题名为artisan的topic
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server  127.0.0.1:9092 --create --replication-factor 1  --partitions 3 --topic artisan
    Created topic artisan.
    [root@localhost bin]#
    [root@localhost bin]# 看当前服务器中的所有topic
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server  127.0.0.1:9092 --list
    artisan
    [root@localhost bin]# 查看Topic的详情
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server  127.0.0.1:9092 --describe --topic artisan
    Topic: artisan  TopicId: CQ8T4OtdR_aPJVYRTp9Jbg PartitionCount: 3       ReplicationFactor: 1    Configs:
            Topic: artisan  Partition: 0    Leader: 0       Replicas: 0     Isr: 0
            Topic: artisan  Partition: 1    Leader: 0       Replicas: 0     Isr: 0
            Topic: artisan  Partition: 2    Leader: 0       Replicas: 0     Isr: 0
    [root@localhost bin]#
    [root@localhost bin]#
    [root@localhost bin]#
    [root@localhost bin]#  修改分区数(注意:分区数只能增加,不能减少)
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server  127.0.0.1:9092 --alter --topic artisan  --partitions 4
    [root@localhost bin]#
    [root@localhost bin]#
    [root@localhost bin]#
    [root@localhost bin]# 再次查看Topic的详情
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server  127.0.0.1:9092 --describe --topic artisan
    Topic: artisan  TopicId: CQ8T4OtdR_aPJVYRTp9Jbg PartitionCount: 4       ReplicationFactor: 1    Configs:
            Topic: artisan  Partition: 0    Leader: 0       Replicas: 0     Isr: 0
            Topic: artisan  Partition: 1    Leader: 0       Replicas: 0     Isr: 0
            Topic: artisan  Partition: 2    Leader: 0       Replicas: 0     Isr: 0
            Topic: artisan  Partition: 3    Leader: 0       Replicas: 0     Isr: 0
    [root@localhost bin]# 删除artian主题
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --delete --topic artisan
    [root@localhost bin]#
    [root@localhost bin]#
    [root@localhost bin]#
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list
    
    [root@localhost bin]#
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    修改分区数( 分区数只能增加,不能减少


    生产者命令行操作

    重要参数

    参数描述
    --bootstrap-server连接Kafka Broker的主机名和端口号
    --topic操作的主题名称

    帮助文档

    # 查看帮助文档 
    [root@localhost bin]# ./kafka-console-producer.sh
    Missing required option(s) [bootstrap-server]
    Option                                   Description
    ------                                   -----------
    --batch-size <Integer: size>             Number of messages to send in a single
                                               batch if they are not being sent
                                               synchronously. please note that this
                                               option will be replaced if max-
                                               partition-memory-bytes is also set
                                               (default: 16384)
    --bootstrap-server <String: server to    REQUIRED unless --broker-list
      connect to>                              (deprecated) is specified. The server
                                               (s) to connect to. The broker list
                                               string in the form HOST1:PORT1,HOST2:
                                               PORT2.
    --broker-list <String: broker-list>      DEPRECATED, use --bootstrap-server
                                               instead; ignored if --bootstrap-
                                               server is specified.  The broker
                                               list string in the form HOST1:PORT1,
                                               HOST2:PORT2.
    --compression-codec [String:             The compression codec: either 'none',
      compression-codec]                       'gzip', 'snappy', 'lz4', or 'zstd'.
                                               If specified without value, then it
                                               defaults to 'gzip'
    --help                                   Print usage information.
    --line-reader <String: reader_class>     The class name of the class to use for
                                               reading lines from standard in. By
                                               default each line is read as a
                                               separate message. (default: kafka.
                                               tools.
                                               ConsoleProducer$LineMessageReader)
    --max-block-ms <Long: max block on       The max time that the producer will
      send>                                    block for during a send request.
                                               (default: 60000)
    --max-memory-bytes <Long: total memory   The total memory used by the producer
      in bytes>                                to buffer records waiting to be sent
                                               to the server. This is the option to
                                               control `buffer.memory` in producer
                                               configs. (default: 33554432)
    --max-partition-memory-bytes <Integer:   The buffer size allocated for a
      memory in bytes per partition>           partition. When records are received
                                               which are smaller than this size the
                                               producer will attempt to
                                               optimistically group them together
                                               until this size is reached. This is
                                               the option to control `batch.size`
                                               in producer configs. (default: 16384)
    --message-send-max-retries <Integer>     Brokers can fail receiving the message
                                               for multiple reasons, and being
                                               unavailable transiently is just one
                                               of them. This property specifies the
                                               number of retries before the
                                               producer give up and drop this
                                               message. This is the option to
                                               control `retries` in producer
                                               configs. (default: 3)
    --metadata-expiry-ms <Long: metadata     The period of time in milliseconds
      expiration interval>                     after which we force a refresh of
                                               metadata even if we haven't seen any
                                               leadership changes. This is the
                                               option to control `metadata.max.age.
                                               ms` in producer configs. (default:
                                               300000)
    --producer-property <String:             A mechanism to pass user-defined
      producer_prop>                           properties in the form key=value to
                                               the producer.
    --producer.config <String: config file>  Producer config properties file. Note
                                               that [producer-property] takes
                                               precedence over this config.
    --property <String: prop>                A mechanism to pass user-defined
                                               properties in the form key=value to
                                               the message reader. This allows
                                               custom configuration for a user-
                                               defined message reader.
                                             Default properties include:
                                              parse.key=false
                                              parse.headers=false
                                              ignore.error=false
                                              key.separator=\t
                                              headers.delimiter=\t
                                              headers.separator=,
                                              headers.key.separator=:
                                              null.marker=   When set, any fields
                                               (key, value and headers) equal to
                                               this will be replaced by null
                                             Default parsing pattern when:
                                              parse.headers=true and parse.key=true:
                                               "h1:v1,h2:v2...\tkey\tvalue"
                                              parse.key=true:
                                               "key\tvalue"
                                              parse.headers=true:
                                               "h1:v1,h2:v2...\tvalue"
    --reader-config <String: config file>    Config properties file for the message
                                               reader. Note that [property] takes
                                               precedence over this config.
    --request-required-acks <String:         The required `acks` of the producer
      request required acks>                   requests (default: -1)
    --request-timeout-ms <Integer: request   The ack timeout of the producer
      timeout ms>                              requests. Value must be non-negative
                                               and non-zero. (default: 1500)
    --retry-backoff-ms <Long>                Before each retry, the producer
                                               refreshes the metadata of relevant
                                               topics. Since leader election takes
                                               a bit of time, this property
                                               specifies the amount of time that
                                               the producer waits before refreshing
                                               the metadata. This is the option to
                                               control `retry.backoff.ms` in
                                               producer configs. (default: 100)
    --socket-buffer-size <Integer: size>     The size of the tcp RECV size. This is
                                               the option to control `send.buffer.
                                               bytes` in producer configs.
                                               (default: 102400)
    --sync                                   If set message send requests to the
                                               brokers are synchronously, one at a
                                               time as they arrive.
    --timeout <Long: timeout_ms>             If set and the producer is running in
                                               asynchronous mode, this gives the
                                               maximum amount of time a message
                                               will queue awaiting sufficient batch
                                               size. The value is given in ms. This
                                               is the option to control `linger.ms`
                                               in producer configs. (default: 1000)
    --topic <String: topic>                  REQUIRED: The topic id to produce
                                               messages to.
    --version                                Display Kafka version.
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128

    实操

    
    [root@localhost bin]# ./kafka-topics.sh --bootstrap-server  127.0.0.1:9092 --create --replication-factor 1  --partitions 3 --topic artisan
    Created topic artisan.
    [root@localhost bin]#
    [root@localhost bin]#
    [root@localhost bin]# ./kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic artisan
    >test
    >artisan  (在这之后启动consumer的消费,默认只能收到之后的消息)
    >666
    >
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    消费者命令行操作

    重要参数

    参数描述
    --bootstrap-server连接Kafka Broker的主机名和端口号
    --topic操作的topic名称
    --from-beginning从头开始消费
    --group指定消费者组名称

    帮助文档

    # 查看帮助文档   
    [root@localhost bin]# ./kafka-console-consumer.sh
    This tool helps to read data from Kafka topics and outputs it to standard output.
    Option                                   Description
    ------                                   -----------
    --bootstrap-server <String: server to    REQUIRED: The server(s) to connect to.
      connect to>
    --consumer-property <String:             A mechanism to pass user-defined
      consumer_prop>                           properties in the form key=value to
                                               the consumer.
    --consumer.config <String: config file>  Consumer config properties file. Note
                                               that [consumer-property] takes
                                               precedence over this config.
    --enable-systest-events                  Log lifecycle events of the consumer
                                               in addition to logging consumed
                                               messages. (This is specific for
                                               system tests.)
    --formatter <String: class>              The name of a class to use for
                                               formatting kafka messages for
                                               display. (default: kafka.tools.
                                               DefaultMessageFormatter)
    --formatter-config <String: config       Config properties file to initialize
      file>                                    the message formatter. Note that
                                               [property] takes precedence over
                                               this config.
    --from-beginning                         If the consumer does not already have
                                               an established offset to consume
                                               from, start with the earliest
                                               message present in the log rather
                                               than the latest message.
    --group <String: consumer group id>      The consumer group id of the consumer.
    --help                                   Print usage information.
    --include <String: Java regex (String)>  Regular expression specifying list of
                                               topics to include for consumption.
    --isolation-level <String>               Set to read_committed in order to
                                               filter out transactional messages
                                               which are not committed. Set to
                                               read_uncommitted to read all
                                               messages. (default: read_uncommitted)
    --key-deserializer <String:
      deserializer for key>
    --max-messages <Integer: num_messages>   The maximum number of messages to
                                               consume before exiting. If not set,
                                               consumption is continual.
    --offset <String: consume offset>        The offset to consume from (a non-
                                               negative number), or 'earliest'
                                               which means from beginning, or
                                               'latest' which means from end
                                               (default: latest)
    --partition <Integer: partition>         The partition to consume from.
                                               Consumption starts from the end of
                                               the partition unless '--offset' is
                                               specified.
    --property <String: prop>                The properties to initialize the
                                               message formatter. Default
                                               properties include:
                                              print.timestamp=true|false
                                              print.key=true|false
                                              print.offset=true|false
                                              print.partition=true|false
                                              print.headers=true|false
                                              print.value=true|false
                                              key.separator=<key.separator>
                                              line.separator=<line.separator>
                                              headers.separator=<line.separator>
                                              null.literal=<null.literal>
                                              key.deserializer=<key.deserializer>
                                              value.deserializer=<value.
                                               deserializer>
                                              header.deserializer=<header.
                                               deserializer>
                                             Users can also pass in customized
                                               properties for their formatter; more
                                               specifically, users can pass in
                                               properties keyed with 'key.
                                               deserializer.', 'value.
                                               deserializer.' and 'headers.
                                               deserializer.' prefixes to configure
                                               their deserializers.
    --skip-message-on-error                  If there is an error when processing a
                                               message, skip it instead of halt.
    --timeout-ms <Integer: timeout_ms>       If specified, exit if no message is
                                               available for consumption for the
                                               specified interval.
    --topic <String: topic>                  The topic to consume on.
    --value-deserializer <String:
      deserializer for values>
    --version                                Display Kafka version.
    --whitelist <String: Java regex          DEPRECATED, use --include instead;
      (String)>                                ignored if --include specified.
                                               Regular expression specifying list
                                               of topics to include for consumption.
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95

    实操

    
    [root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic artisan
    
    666
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 从头开始消费
    
    [root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning  --topic artisan
    test
    artisan
    666
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    go-zero直连与etcd服务注册中心
    (一) 使用 Hugo 搭建个人博客保姆级教程(下篇)
    Day29_8 Java学习之MySQL数据库
    Vue学习
    品尝葡萄酒要注意的重点事项有哪些?
    07架构管理之架构评审方法
    AlGaN/GaN HEMT 中缓冲区相关电流崩溃的缓冲区电位模拟表征
    2022年已经过去一半了,是不是很突然呢?
    初学vue.js
    智慧工地扬尘监测系统
  • 原文地址:https://blog.csdn.net/yangshangwei/article/details/134035745