Kafka (快速)安装部署

news2024/11/16 19:55:47

文章目录

  • 1、软件下载&配置环境
    • 1_JDK安装
    • 2_Zookeeper安装
    • 3_Kafka安装
  • 2、单机安装
    • 1_配置主机名和IP映射
    • 2_单机Kafka配置
  • 3、集群安装
    • 1_配置主机名和IP的映射关系
    • 2_时钟同步
    • 3_Zookeeper配置信息
    • 4_集群Kafka配置
  • 4、kafka的其他脚本命令
  • 5、监控工具Kafka-eagle安装

1、软件下载&配置环境

下面的操作无论是单机部署还是分布式集群环境下都是通用的。

准备好安装的目录,我们将所有软件安装包统一上传至/export/software目录下,下载完毕后软件解压至/export/server

mkdir -p /export/server /export/software

1_JDK安装

下载地址:https://www.oracle.com/java/technologies/downloads/

在这里插入图片描述

下载并上传至服务器对应的目录中。

解压缩JDK安装文件:

tar -zxvf jdk-8u421-linux-x64.tar.gz -C /export/server

配置JDK的软链接:

ln -s /export/server/jdk1.8.0_421 jdk

配置JAVA_HOME环境变量,以及将$JAVA_HOME/bin文件夹加入PATH环境变量中

 vim /etc/profile

尾部添加如下:

export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin

生效环境变量:

source /etc/profile

有些安装的系统可能自带jdk,这种jdk可以使用java -version检查,但如果使用javac就不行了,最好进行卸载。

如果是 yum 安装,可以按照下述流程卸载:

#1.查看CentOS自带JDK是否已安装
 
yum list installed | grep java
#2.假使存在自带的jdk,删除centos自带的JDK
 
yum -y remove java-1.8.0-openjdk*
yum -y remove tzdata-java.noarch
#删除系统自带的Java程序
rm -f /usr/bin/java
#软连接我们自己安装的Java程序
ln -s /export/server/jdk/bin/java /usr/bin/java

rpm安装的,可以按照下述流程卸载:

rpm -qa | grep jdk #查看是否存在安装的jdk
rpm -e `rpm -qa | grep jdk` # 卸载,如果存在依赖的情况可以使用下方的强制卸载
rpm -e --nodeps `rpm -qa | grep jdk` # 强制删除jdk

2_Zookeeper安装

下载地址:https://zookeeper.apache.org/releases.html#download

在这里插入图片描述

选择历史版本——本次选择3.5.7进行安装下载

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

下载完成后,上传到服务器后进行解压:

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /export/server

配置 Zookeeper 的软链接:

ln -s apache-zookeeper-3.5.7-bin zookeeper

配置 ZK_HOME 环境变量,以及将$ZK_HOME/bin文件夹加入PATH环境变量中

 vim /etc/profile

尾部添加如下:

export ZK_HOME=/export/server/zookeeper
export PATH=$PATH:$ZK_HOME/bin

生效环境变量:

source /etc/profile

Zookeeper的下载和安装已经完成,我们接下来直接对其配置进行修改:

cd /export/server/zookeeper/conf #进入zookeeper配置文件目录下
cp zoo_sample.cfg zoo.cfg #将Zookeeper提供的配置文件复制一份,复制成Zookeeper默认寻找的文件

进入 zookeeper 目录下,创建数据存放的目录:

cd /export/server/zookeeper
mkdir data

修改 zookeeper 配置文件,将数据存放目录指定为我们创建的目录:

vim /export/server/zookeeper/conf/zoo.cfg
##修改以下配置
dataDir=/export/server/zookeeper/data

启动 Zookeeper,Zookeeper的bin目录下为我们提供了服务脚本:

#./zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|restart|status|print-cmd}
./bin/zkServer.sh start zoo.cfg #启动

查看是否启动成功

jps # 看到控制台成功输出 QuorumPeerMain,表示启动成功

使用jps发现Zookeeper成功启动了,也并不代表我们可以正常使用了,使用如下命了查看其状态:

./bin/zkServer.sh status zoo.cfg ## Mode: standalone表示ok

控制台打印 Mode: standalone 表示可以正常使用了。

3_Kafka安装

下载地址:https://kafka.apache.org/downloads。

在这里插入图片描述

选择 kafka_2.12-3.8.0.tgz 进行下载,Scala 2.12 和 Scala 2.13 主要是使用Scala编译的版本不同,两者皆可。

下载完成后,上传到服务器后进行解压:

tar -zxvf kafka_2.12-3.8.0.tgz -C /export/server

配置 Kafka 的软链接:

ln -s kafka_2.12-3.8.0.tgz kafka

配置 KAFKA_HOME 环境变量,以及将$KAFKA_HOME/bin文件夹加入PATH环境变量中

 vim /etc/profile

尾部添加如下:

export KAFKA_HOME=/export/server/kafka
export PATH=:$PATH:${KAFKA_HOME}

生效环境变量:

source /etc/profile

2、单机安装

Kafka一般情况下都是分布式架构的,单机节点的使用情况基本不存在——了解即可。

按照以下步骤执行:

  • 安装JDK1.8+,配置JAVA_HOME (CentOS 64bit)
  • 配置主机名和IP映射
  • 关闭防火墙 | 防火墙开机自启动
  • 安装&启动Zookeeper
  • 安装&启动|关闭Kafka

上述有些步骤部分已经完成,不再重复叙述。

1_配置主机名和IP映射

配置主机名——我是用的是SHENYANG,替换成自己的即可:

echo HOSTNAME=SHENYANG >> /etc/sysconfig/network
cat /etc/sysconfig/network
reboot #重启生效

如果上述方式不成功可以试试下面这种:

hostnamectl set-hostname SHENYANG

配置主机名和IP的映射关系——使用自己当前服务器的主机名和IP:

vi /etc/hosts
192.168.193.141 SHENYANG
ping SHENYANG #测试是否ok

如果在内网测试环境下最好关闭防火墙。

2_单机Kafka配置

在Kafka的config目录下存在相关的配置信息——本次我们只想让Kafka快速启动起来只关注server.properties文件即可:

cd ${KAFKA_HOME}/config
ls
#connect-console-sink.properties    connect-file-source.properties   consumer.properties  server.properties
#connect-console-source.properties  connect-log4j.properties         kraft                tools-log4j.properties
#connect-distributed.properties     connect-mirror-maker.properties  log4j.properties     trogdor.conf
#connect-file-sink.properties       connect-standalone.properties    producer.properties  zookeeper.properties

打开配置文件,并主要注意以下几个配置:

vim server.properties

broker.id=0 #kafka服务节点的唯一标识,这里是单机不用修改
#     listeners = PLAINTEXT://your.host.name:9092  别忘了设置成自己的主机名
listeners=PLAINTEXT://SHENYANG:9092 #kafka底层监听的服务地址,注意是使用主机名,不是ip。
# log.dirs 指定的目录 kafka启动时可以自动创建,因此不要忘了让kafka可以有读写这个目录的权限。
log.dirs=/export/server/kafka/data ##kafka的分区以日志的形式存储在集群中(其实就是broker数据存储的目录)
# The minimum age of a log file to be eligible for deletion due to age
log.retention.hours=168 #日志的留存策略,默认168小时也就是一周
# zookeeper 的连接地址 ,别忘了设置成自己的主机名,单机情况下可以使用 localhost
zookeeper.connect=SHENYANG:2181

上述配置完成后就可以在单机环境下成功启动 Kafka了。

./bin/kafka-server-start.sh -daemon config/server.properties #后台启动kafka

使用 jps 查看是否成功启动kafka:

jps
34843 QuorumPeerMain
21756 Jps
116076 Kafka

单机启动完成。

3、集群安装

Kafka 集群模式是kafka最常见的使用架构,按照以下步骤执行:

  • 安装JDK1.8+,配置JAVA_HOME (CentOS 64bit)

  • 配置主机名和IP映射

  • 关闭防火墙 | 防火墙开机自启动

  • 同步时钟 ntpdate cn.pool.ntp.org | ntp[1-7].aliyun.com

  • 安装&启动Zookeeper

  • 安装&启动|关闭Kafka

本次使用三个节点模拟集群环境:CentOSA、CentOSB、CentOSC。

针对每个节点修改主机名称,查看当前主机的ip地址并固定,添加子网掩码,网关,DNS1。

#修改主机名
hostnamectl set-hostname node1
#修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33

#不要直接copy,针对自己的进行修改
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0d7ad579-b7c8-4b92-a94c-00633288d421"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.193.151"
NETMASK="255.255.255.0"
GETEWAY="192.168.193.2"
DNS1="192.168.193.2"

按照第一节,每个节点都将软件下载并配置好环境变量和配置信息。

1_配置主机名和IP的映射关系

针对每一个节点的hosts文件添加节点的ip映射信息:

vim  /etc/hosts
192.168.193.141 CentOSA
192.168.193.142 CentOSB
192.168.193.143 CentOSC
ping #测试

也可以采取修改一个主机的hosts文件,通过 scp的方式进行拷贝——比如在CentOSA节点修改完成后执行:

scp /etc/hosts CentOSB:/etc/
scp /etc/hosts CentOSC:/etc/

别忘了在自行测试时关闭防火墙。

2_时钟同步

因为是在集群环境下,所以不要忘记同步三个主机节点的时钟:

yum install ntp -y
ntpdate cn.pool.ntp.org | ntp[1-7].aliyun.com #两个时钟同步地址选择一个就行

3_Zookeeper配置信息

在第一节中我们编辑了 zoo.cfg 文件配置,但是如果是集群环境下,还需要添加服务节点的信息:

vim /export/server/zookeeper/conf/zoo.cfg
##额外添加以下配置
server.1=CentOSA:2888:3888 #数据同步端口:领导选举时服务器监听的端口
server.2=CentOSB:2888:3888
server.3=CentOSC:2888:3888

配置完成后通过scp命令将配置文件拷贝到其他节点——假设当前配置的是A节点:

scp -r /export/server/zookeeper/conf/zoo.cfg CentOSB:/export/server/zookeeper/conf/
scp -r /export/server/zookeeper/conf/zoo.cfg CentOSC:/export/server/zookeeper/conf/

当然,也可以只安装并配置一台zookeeper,然后将整个软件拷贝过去。

接下来我们还需要在每个 zookeeper 节点的数据目录下创建对应的服务id文件与上面配置的server.id进行绑定:

# A
echo 1 > /export/server/zookeeper/data/myid #在这个文件中写入自己服务的id号
# B
echo 2 > /export/server/zookeeper/data/myid
# C
echo 3 > /export/server/zookeeper/data/myid

接下来启动所有的zookeeper节点。别忘了关防火墙!

4_集群Kafka配置

集群的 server.properties配置文件与单机的有所不同:

cd ${KAFKA_HOME}/config
vim server.properties

broker.id=0 #kafka服务节点的唯一标识 A 0,B 1,C 2
#     listeners = PLAINTEXT://your.host.name:9092  别忘了设置成自己的主机名
listeners=PLAINTEXT://CentOSA:9092 #集群中需要设置成每个节点自己的
# log.dirs 指定的目录 kafka启动时可以自动创建,因此不要忘了让kafka可以有读写这个目录的权限。
log.dirs=/export/server/kafka/data ##kafka的分区以日志的形式存储在集群中(其实就是broker数据存储的目录)
# The minimum age of a log file to be eligible for deletion due to age
log.retention.hours=168 #日志的留存策略,默认168小时也就是一周
# zookeeper 集群的连接地址 
zookeeper.connect=CentOSA:2181,CentOSB:2181,CentOSC:2181

在配置完成 A节点后,还是使用 scp命令进行传输配置文件,然后再修改broker.idlisteners

scp -r /export/server/kafka/config/server.properties CentOSB:/export/server/kafka/config/
scp -r /export/server/kafka/config/server.properties CentOSC:/export/server/kafka/config/

##修改差异配置
cd ${KAFKA_HOME}/config
vim server.properties

# B节点
broker.id=1
listeners=PLAINTEXT://CentOSB:9092
# C节点
broker.id=2
listeners=PLAINTEXT://CentOSC:9092

配置完成后,kafka集群即可正常启动。集群的配置和单机的配置基本相似。

4、kafka的其他脚本命令

kafka服务还提供了除了启动外的其他命令:

./bin/kafka-server-stop.sh #关闭kafka
kafka-console-consumer.sh #消费命令
kafka-console-producer.sh #生产命令
kafka-consumer-groups.sh #查看消费者组,重置消费位点等
kafka-topics.sh #查询topic状态,新建,删除,扩容
kafka-acls.sh #配置,查看kafka集群鉴权信息
kafka-configs.sh #查看,修改kafka配置
kafka-mirror-maker.sh #kafka集群间同步命令
kafka-preferred-replica-election.sh #重新选举topic分区leader
kafka-producer-perf-test.sh #kafka自带生产性能测试命令
kafka-reassign-partitions.sh #kafka数据重平衡命令
kafka-run-class.sh #kafka执行脚本

重点关注前面几个,消费者,生产、消费者组和Topic管理:

创建Topic;

#副本因子数不能大于broker数,如果同一台机器上存储了多个备份就多余了
./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --create --topic topic02 --partitions 3 --replication-factor 3 

查看:

./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list

详情:

./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --describe --topic topic01
Topic:topic01	PartitionCount:3	ReplicationFactor:3	Configs:segment.bytes=1073741824
	Topic: topic01	Partition: 0	Leader: 0	Replicas: 0,2,3	Isr: 0,2,3
	Topic: topic01	Partition: 1	Leader: 2	Replicas: 2,3,0	Isr: 2,3,0
	Topic: topic01	Partition: 2	Leader: 0	Replicas: 3,0,2	Isr: 0,2,3

修改:

./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --alter --topic topic01 --partitions 2

删除:

./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --delete --topic topic03

消费者订阅:

# 别忘了指定消费者组
./bin/kafka-console-consumer.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --topic topic01 --group g1 --property print.key=true --property print.value=true --property key.separator=,

生产:

./bin/kafka-console-producer.sh --broker-list CentOSA:9092,CentOSB:9092,CentOSC:9092 --topic topic01

消费组:

 ./bin/kafka-consumer-groups.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list g1

./bin/kafka-consumer-groups.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --describe --group g1

TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID    HOST            CLIENT-ID
topic01 1                      0                    0                           0     consumer-1-**    /192.168.52.130 consumer-1
topic01 0                      0                    0                          0      consumer-1-**   /192.168.52.130 consumer-1
topic01 2                      1                     1                          0      consumer-1-**   /192.168.52.130 consumer-1

5、监控工具Kafka-eagle安装

这是一个监视系统,国内开发的产品,监视您的kafka群集以及可视的使用者线程,偏移量,所有者等。当您安装Kafka Eagle时,用户可以看到当前的使用者组,对于每个组,他们正在消耗的Topic以及该组在每个主题中的偏移量,滞后,日志大小和位置。这对于了解用户从消息队列消耗的速度以及消息队列增加的速度很有用。

下载地址:https://www.kafka-eagle.org/。

在这里插入图片描述

安装包下载完成后还是上传到服务器的/export/software文件目录下,,下载完毕后软件解压至/export/server

本文安装的是3.0.1版本,支持Kafka版本0.8,0.9.x,0.10.x,0.11.x,1.x,2.x

tar -zxvf kafka-eagle-bin-3.0.1.tar.gz -C ../server/

这个软件比较特殊,解压后会发现里面还有一个压缩包,需要再次解压。

cd /export/server/kafka-eagle-bin-3.0.1/
tar -zxvf efak-web-3.0.1-bin.tar.gz -C /export/server/
cd ../
ln -s efak-web-3.0.1 efak

设置环境变量——必须设置,ke.sh启动的脚本中需要这个环境变量

vim /etc/profile
#添加以下内容
export KE_HOME=/export/server/efak
export PATH=$PATH:$KE_HOME/bin

source /etc/profile

修改配置文件system-config.properties

cd ${KE_HOME}/conf
vim system-config.properties

注意以下配置:

#zookeeper集群信息id
kafka.eagle.zk.cluster.alias=cluster1
#集群配置的zookeeper节点信息 可以监测这三台机器上的kafka
cluster1.zk.list=CentOSA:2181,CentOSB:2181,CentOSC:2181
#有的老版本是把偏移量存储在zookeeper中,这里是存储在kafka中的,默认可以不改
cluster1.kafka.eagle.offset.storage=kafka
# 报表信息 开启后kafka必须开启JMX的服务管理端口,用于统计信息
kafka.eagle.metrics.charts=true
# mysql的连接信息 eagle 需要将信息存储在数据库中,数据库eagle启动时会自行创建,配置好mysql的地址就行。
kafka.eagle.driver=com.mysql.cj.jdbc.Driver
kafka.eagle.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
kafka.eagle.username=root
kafka.eagle.password=123456

开启JMX监控,修改kafka启动文件或在启动时添加JMX_PORT=9999参数:

vim ${KAFKA_HOME}/bin/kafka-server-start.sh
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-server -Xms2G -Xmx2G -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
    export JMX_PORT="9999" #添加此行即可
    #export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

重启kafka后,启动 eagle 就可以监控kafka集群信息了。

chmod u+x bin/ke.sh#如果没有文件的执行权限
$KE_HOME/bin/ke.sh start#启动程序

在这里插入图片描述

登录账号和密码默认为 admin/123456——内网测试不要忘记开放对应的访问端口或关闭防火墙。

在这里插入图片描述

登录成功后即可看到以上信息。

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

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

相关文章

Java并发编程实战 07 | 如何正确停止线程

什么时候需要停止一个线程&#xff1f; 一个线程被创建并启动之后&#xff0c;大部分情况下都会自然运行至结束&#xff0c;但是也有一些情况需要主动停止线程&#xff0c;比如&#xff1a; 用户主动取消执行&#xff1a;用户可能会中止一个正在进行的操作&#xff0c;这时需…

Python系统教程004(字符串)

一、input函数的算术运算 一包奥特曼卡片卖0.5元&#xff0c;小华想编写一个只需要输入卡片的包数就能自动计算价格的程序&#xff0c;请你帮帮它。 解题 报出类型错误 注意&#xff1a; input函数接收到的键盘信息&#xff0c;默认都是字符串的数据类型。 字符串的数据类型…

书生浦语三期实战营 [进阶] LMDeploy 量化部署进阶实践

LMDeploy 量化部署进阶实践 1 配置LMDeploy环境 1.1 InternStudio开发机创建与环境搭建 在终端中&#xff0c;让我们输入以下指令&#xff0c;来创建一个名为lmdeploy的conda环境&#xff0c;python版本为3.10&#xff0c;创建成功后激活环境并安装0.5.3版本的lmdeploy及相关…

IM即时通讯,稳定可靠的即时通讯服务-WorkPlus

在现代企业日常工作中&#xff0c;即时通讯已成为了一种不可或缺的沟通工具。为了满足企业对稳定可靠的即时通讯服务的需求&#xff0c;WorkPlus提供了一款优秀的IM即时通讯平台&#xff0c;以满足企业高效沟通和协作的要求。本文将深入探讨IM即时通讯服务的重要性以及WorkPlus…

Linux下的RTC应用

RTC RTC基础知识 1. RTC简介 RTC 全称是 Real-Time clock&#xff0c;翻译过来是实时时钟。实时时钟在日常生活中的应用也比较泛&#xff0c;比如电子时钟。实时时钟可以为系统提供精确的实时时间&#xff0c;通常带有电池&#xff0c;可以保证系统断电时还可以正常工作&…

JVM虚拟机 - 基础篇

一、初始JVM 1. JVM是什么 2. JVM的三大核心功能是什么&#xff1f; 3. 常见的JVM虚拟机有哪些&#xff1f; 二、字节码文件详解 1. Java虚拟机的组成 2. 字节码文件的组成 &#xff08;1&#xff09;基本信息 Magic魔数 主副版本号 &#xff08;2&#xff09;常量池 &#…

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1&#xff08;高级消息队列协议&#xff09;是一种网络协议&#xff0c;它允许遵从该协议的客户端&#xff08;Publisher或者Consumer&#xff09;应用程序与遵从该协议的消息中间件代理&#xff08;Broker&#xff0c;如RabbitMQ&#xff09;…

Day19_0.1基础学习MATLAB学习小技巧总结(19)——MATLAB绘图篇(2)

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍&#xff0c;为了在这个过程中加深印象&#xff0c;也为了能够有所足迹&#xff0c;我会把自己的学习总结发在专栏中&#xff0c;以便学习交流。 参考书目&#xff1a;《MATLAB基础教程 (第三版) (薛山)》 之前的章节都是…

H5漂流瓶社交系统源码

一个非常有创意的H5漂流瓶社交系统源码&#xff0c;带完整前端h5和后台管理系统。 环境&#xff1a;Nginx 1.20.1-MySQL 5.6.50-PHP-7.3 代码下载

python简单计算入门教程|加减法

python通过调用numpy模块&#xff0c;非常擅长数学计算。再通过调用matplotlib模块&#xff0c;可以自由自在地输出numpy计算的结果。 今天&#xff0c;我们就尝试一些基本计算。 下述是正弦函数和余弦函数的加法和减法计算结果。 图1 代码为&#xff1a; import matplotli…

【stata】处理城市名和城市代码

写了两个简单的外部命令&#xff0c;在这里分享一下&#xff0c;希望能帮到大家 1.citycode_mutate 第一个命令是citycode_mutate&#xff0c;用于识别字符串中可能存在的城市信息&#xff0c;并生成城市代码&#xff08;图1图2&#xff09;。 2.cityname_mutate 第二个命令…

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_word(struct pci_…

C++(一)----C++基础

1.C的发展史 C语言诞生后&#xff0c;很快普及使用&#xff0c;但是随着编程规模增大且越来越复杂&#xff0c;并且需要高度的抽象和建模时&#xff0c;C语言的诸多短板便表现了出来&#xff0c;为了解决软件危机&#xff0c;上世纪八十年代&#xff0c;计算机界提出了oop&…

拓扑排序-广度优先遍历思路

本质&#xff1a; 【广度优先遍历 】【贪心算法】应用于【有向图】的专有名词 应用场景&#xff1a;任务调度&#xff0c;课程安排 作用&#xff1a; 得到一个不唯一的【拓扑序】检测【有向图】是否有环&#xff0c;使用数据【并查集】 使用&#xff1a;先找度为0的前驱节点…

Linux运维排查常见故障_在tmp目录下有大量包含picture_ 的临时文件,每天晚上2 30需要对一天前的文件进行

echo“”>>/etc/security/limits.conf echo“*softnproc65535″>>/etc/security/limits.conf echo“*hardnproc65535″>>/etc/security/limits.conf echo“*softnofile65535″>>/etc/security/limits.conf echo“*hardnofile65535″>>/etc/secur…

【自动驾驶】控制算法(八)横向控制Ⅲ | 代码与模型

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

以太网--TCP/IP协议(一)

概述 以太网是局域网的一种&#xff0c;其他的比如还有令牌环、FDDI。和局域网对应的就是广域网&#xff0c;如Internet&#xff0c;城域网等。 从网络层次看&#xff0c;局域网协议主要偏重于低层&#xff08;业内一般把物理层、数据链路层归为低层&#xff09;。以太网协议…

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP…

vue动态统计图的绘画

效果图&#xff1a; 实现&#xff1a; 一、导入依赖 import echarts from echarts 二、vue的代码实现 1.在main.js导入文件 // 引入 echarts 插件 import echarts from echarts // 配置成全局组件 Vue.prototype.$echarts echarts2.代码实现 <template><!--为echa…

韩国火烧车影响出现,浙江出现限制电车进入地下车库,车主难受了

韩国电动汽车起火&#xff0c;烧毁140辆汽车&#xff0c;还导致大楼损坏以及居民受伤的后果&#xff0c;如今在中国市场也产生了影响&#xff0c;《华商报》旗下的《大风新闻》报道指&#xff0c;浙江多地的饭店、大厦禁止电动汽车进入地下车库&#xff0c;这下子电动汽车车主又…