kafka 开启认证授权

前言

1、前面自己写了一篇关于各个环境各个模式的安装的文章,大家可以去看看 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

2、使用版本 kafka_2.13-3.4.1

3、kafka验证方式,有两大类如下,文档内容在 kafka官方文档的 第七节 security,强烈建议大家去看下,不想看英文的可以翻译中文后看

  • SSL ( 官方3.4.x SSL 文档链接)
  • SASL ( 官方3.4.x SASL 文档链接)

在这里插入图片描述

4、而SASL 又细分如下 4 小类,这四种都可以使用

类型说明官方文档链接
SASL/GSSAPI (Kerberos)使用的Kerberos认证,可以集成目录服务,比如AD。从Kafka0.9版本开始支持Kerberos
SASL/PLAIN使用简单用户名和密码形式。从Kafka0.10版本开始支持,不支持动态增加账户和密码SASL/PLAIN
SASL/SCRAM-SHA-256主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAM
SASL/SCRAM-SHA-512主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAM
SASL/OAUTHBEARER基于OAuth 2认证框架,从Kafka2.0版本开始支持OAUTHBEARER

5、在后面指定java 实现的时候,可以去源码里面找对应的,如下
在这里插入图片描述

6、需要先明确的一点是,用户认证和权限控制是两码事。用户认证是确认这个用户能否访问当前的系统,而权限控制是控制用户对当前系统中各种资源的访问权限。用户认证就是今天要讲的内容,而kafka的权限控制,则是对应 bin/kafka-acls.sh 工具所提供的一系列功能,这里不详细展开。

一、Linux 环境

SASL/PLAIN 模式中 Kafka的SASL_SSL和SASL_PLAINTEXT是两种不同的安全协议,用于保护Kafka集群中的通信。它们提供了不同级别的安全性和身份验证选项:

  1. SASL_SSL (Simple Authentication and Security Layer over SSL/TLS):这是Kafka的高度安全的传输协议。它结合了SSL/TLS(用于加密通信)和SASL(用于身份验证)来提供强大的安全性。使用SASL_SSL,Kafka客户端和服务器之间的通信将是加密的,并且需要经过身份验证才能建立连接。常见的身份验证机制包括GSSAPI(Kerberos)、PLAIN(用户名和密码)等。SASL_SSL是Kafka中最安全的选项,适用于敏感数据和合规性要求高的场景。

  2. SASL_PLAINTEXT (Simple Authentication and Security Layer over plaintext):这是Kafka的另一种SASL支持方式,但不涉及加密。使用SASL_PLAINTEXT,身份验证是必需的,但通信不加密。这意味着数据在传输过程中是以明文形式传输的,因此对于保护数据隐私要求较低的场景或在内部网络中使用时,可以选择此选项。常见的身份验证机制也包括PLAIN(用户名和密码)等。

通常,SASL_SSL是更安全的选项,因为它不仅提供身份验证,还提供数据的加密,从而更好地保护了数据的隐私和完整性。但是,它的配置相对复杂,可能需要设置SSL/TLS证书和密钥以及身份验证机制。SASL_PLAINTEXT相对来说更容易配置,但数据在传输过程中不加密,可能不适用于对数据隐私有更高要求的场景。

你的选择应该根据你的具体安全需求来决定。在需要高度安全性的生产环境中,通常会选择SASL_SSL,而在开发和测试环境中,SASL_PLAINTEXT可能更为方便。无论选择哪种方式,都需要谨慎配置和管理Kafka的安全设置,以确保系统的安全性。

所以下面文章中的 SASL_PLAINTEXT 可以替换为 SASL_SSL,相应的配置可以改成如下(可以看官网的 SASL/PLAIN)这一节,采用的就是这种

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

3、下载后解压

tar -xzf kafka_2.13-3.4.1.tgz
cd kafka_2.13-3.4.1

1.1、Kafka with KRaft 单节点 SASL/PLAIN 模式授权

1.1.1、服务端

1.1.1.1、编写服务端授权文件

1、编写授权文件 kafka_server_jaas.conf,此配置定义了两个用户(admin 和 client )。代理使用 KafkaServer 部分中的属性用户名和密码来启动与其他代理的连接。在此示例中,admin 是代理间通信的用户。属性集 user_用户名定义 是连接到代理的所有用户的密码,代理验证所有客户端连接。

# 因为我这里是使用 kraft 模式启动,所以,就把服务端的配置都放在这里了
cd /opt/kafka/kafka_2.13-3.4.1/config/kraft# 创建文件内容如下
vim kafka_server_jaas.conf### 末尾 分号一定不能忘记
KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret"user_admin="admin-secret"user_client="client-secret";
};

在这里插入图片描述

1.1.1.2、编写服务端启动脚本

1、复制kafka服务端启动脚本

cd /opt/kafka/kafka_2.13-3.4.1/bin/
cp kafka-server-start.sh kafka-server-start-sasl.sh

在这里插入图片描述

2、修改我们copy的启动脚本,将我们前面将要创建的配置文件(kafka_jaas.conf),给指定进去

cd /opt/kafka/kafka_2.13-3.4.1/bin
vim kafka-server-start-sasl.sh# 将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"修改为:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/opt/kafka/kafka_2.13-3.4.1/config/kraft/kafka_server_jaas.conf"

在这里插入图片描述

1.1.1.3、修改服务端 配置文件 server.properties

1、我这边是启动的 kraft 模式,所以我就修改对应的 kraft 目录下的配置文件即可

# 进入kraft/config目录
cd /opt/kafka/kafka_2.13-3.4.1/config/kraft# copy并编辑server.properties文件
cp server.properties  server-sasl.properties# 修改
vim server-sasl.properties# 修改以下内容
###
listeners=SASL_PLAINTEXT://:9092,CONTROLLER://:9093
inter.broker.listener.name=SASL_PLAINTEXT
advertised.listeners=SASL_PLAINTEXT://192.168.173.129:9092
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
###

在这里插入图片描述

在这里插入图片描述

1.1.2、客户端

1.1.2.1、编写客户端授权文件
# 因为我这里是使用 kraft 模式启动,所以,就把客户端的配置都放在这里了
cd /opt/kafka/kafka_2.13-3.4.1/config/kraft# 创建文件内容如下
vim kafka_client_jaas.conf### 末尾 分号一定不能忘记
KafkaClient {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="client"password="client-secret";
};

在这里插入图片描述

1.1.2.2、编写消费者启动脚本
cd /opt/kafka/kafka_2.13-3.4.1/bin# copy 并修改 
cp kafka-console-consumer.sh kafka-console-consumer-sasl.sh# 修改,指定我们前面写的客户端配置文件
vim kafka-console-consumer-sasl.sh# ★ 将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"修改为:
export KAFKA_HEAP_OPTS="-Xmx512M -Djava.security.auth.login.config=/opt/kafka/kafka_2.13-3.4.1/config/kraft/kafka_client_jaas.conf"

在这里插入图片描述

1.1.2.3、编写消费者启动脚本的配置文件 consumer.properties
# 进入kafka/config目录
cd /opt/kafka/kafka_2.13-3.4.1/config# copy编辑consumer-sasl.properties内容
cp consumer.properties  consumer-sasl.properties
vim consumer-sasl.properties###
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
###

在这里插入图片描述

1.1.2.4、编写生产者启动脚本
cd /opt/kafka/kafka_2.13-3.4.1/bin# copy 并修改 
cp kafka-console-producer.sh kafka-console-producer-sasl.sh# 修改,指定我们前面写的客户端配置文件
vim kafka-console-producer-sasl.sh# ★ 将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"修改为:
export KAFKA_HEAP_OPTS="-Xmx512M  -Djava.security.auth.login.config=/opt/kafka/kafka_2.13-3.4.1/config/kraft/kafka_client_jaas.conf"

在这里插入图片描述

1.1.2.3、编写生产者启动脚本的配置文件 producer.properties
# 进入kafka/config目录
cd /opt/kafka/kafka_2.13-3.4.1/config# copy编辑consumer-sasl.properties内容
cp producer.properties  producer-sasl.properties
vim producer-sasl.properties###
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
###

在这里插入图片描述

1.1.1.5、修改通用命令脚本的配置文件

1、什么是通用命令脚本,比如说,创建topic的脚本,它链接kafka也是需要认证的,所以,我们为这一类没有指定配置的脚本,创建一个通用的

# 进入kafka/config目录
cd /opt/kafka/kafka_2.13-3.4.1/config/kraft
# 创建command_config文件
touch command_config
# 编辑command_config内容
vim command_config###  千万注意 最后的分号 不能忘记了
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="client" password="client-secret";
###

在这里插入图片描述

1.1.3、启动

1、完成上面的配置,那么我们就可以启动了,就是正常的 kraft 模式启动流程。

1.1.3.1、生成集群 UUID
# 进入到文件夹
cd /opt/kafka/kafka_2.13-3.4.1
# 创建 集群id
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
# 查看集群id是多少
echo $KAFKA_CLUSTER_ID

在这里插入图片描述

1.1.3.2、格式化日志目录

1、使用上面的 KAFKA_CLUSTER_ID 参数,默认存储目录是/tmp/kraft-combined-logs,你可以修改配置文件的值

注意这里使用的是 config/kraft/sasl.properties, 你可以点进去看下配置,可以看到,当前的这个配置的角色是 broker,controller了,就不再需要zookeeper了.
在这里插入图片描述

cd /opt/kafka/kafka_2.13-3.4.1
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server-sasl.properties

在这里插入图片描述

2、可以看到了 /tmp/kraft-combined-logs 文件夹也存在了

在这里插入图片描述

1.1.3.3、启动kafka 服务

1、为了方便观察启动状态,这里就直接前台启动了

记得这里一定要用我们修改过后的脚本来启动 kafka-server-start-sasl.sh,这个脚本里面指定认证文件

cd /opt/kafka/kafka_2.13-3.4.1
# 启动
bin/kafka-server-start-sasl.sh config/kraft/server-sasl.properties# 如果希望后台启动,则如下 加上 -daemon 即可  对应的日志文件在  /opt/kafka/kafka_2.13-3.4.1/logs 目录下,最新的日志文件是 erver.log
bin/kafka-server-start-sasl.sh -daemon config/kraft/server-sasl.properties# 关闭kafka ,如果是前台的,直接 CTRL C 关闭当前进程就好,如果是后台的,可以执行命令
bin/kafka-server-stop.sh config/kraft/server-sasl.properties

在这里插入图片描述

1.1.4、链接测试

1.1.3.1、不使用认证的方式脚本命令行(服务端会提示无法链接)

1、我们先不使用认证授权的文件链接试一下,会发现下面这三个都是无法访问的,可以看到对应的服务端输出的日志

2、通用脚本

# 进入目录
cd /opt/kafka/kafka_2.13-3.4.1
# 查看当前服务器中的所有 topic
bin/kafka-topics.sh --list --bootstrap-server localhost:9092

在这里插入图片描述

3、消费者脚本

# 进入目录
cd /opt/kafka/kafka_2.13-3.4.1
# 消费者链接
bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning 

在这里插入图片描述

4、生产者脚本

# 进入目录
cd /opt/kafka/kafka_2.13-3.4.1
# 生产者链接
bin/kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic test 

在这里插入图片描述

5、springBoot 项目,具体配置这里就不再细说了,链接之后,只要对kafak执行操作,就会如下错误,超时

记得部署 kafka 的服务器开放 9092 端口,或者关闭防火墙

在这里插入图片描述

在这里插入图片描述

1.1.3.2、使用认证的方式脚本命令行(链接成功)

1、通用脚本,第一开始因为这里还未创建过topic ,所以没有数据,后面可以再运行一下。

# 进入目录
cd /opt/kafka/kafka_2.13-3.4.1
# 查看当前服务器中的所有 topic
bin/kafka-topics.sh --list --bootstrap-server localhost:9092 --command-config /opt/kafka/kafka_2.13-3.4.1/config/kraft/command_config# 创建topic 
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --partitions 1 --replication-factor 1 --topic test  --command-config /opt/kafka/kafka_2.13-3.4.1/config/kraft/command_config

在这里插入图片描述

3、消费者脚本,执行完成后,页面会等待队列消息

# 进入目录
cd /opt/kafka/kafka_2.13-3.4.1
# 消费者链接  --consumer.config 指定消费者配置文件
bin/kafka-console-consumer-sasl.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning --consumer.config config/consumer-sasl.properties

在这里插入图片描述

4、生产者脚本

# 进入目录
cd /opt/kafka/kafka_2.13-3.4.1
# 生产者链接  --producer.config  指定消费者配置文件
bin/kafka-console-producer-sasl.sh --bootstrap-server 127.0.0.1:9092 --topic test --producer.config config/producer-sasl.properties

在这里插入图片描述
此刻,消费者控制台也收到消息了

在这里插入图片描述

5、springBoot 项目,增加账号密码,如下,后面的分号一定不能忘记,加上如下配置之后就可以了

consumer和producer可以统一配置也可以单独配置(Kafka stream SASL/PLANTEXT配置也一样,统一配置对stream同样生效)

记得部署 kafka 的服务器开放 9092 端口,或者关闭防火墙

    properties:security.protocol: SASL_PLAINTEXTsasl.mechanism: PLAINsasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret";

在这里插入图片描述

1.2、Kafka with KRaft 单节点 SSL 模式授权

参考这篇文章:写的很好 kafka SSL认证

二、kafka-ui 链接开启认证授权的kafka

连接带认证的kafka集群在kafka-ui的github上面也有,但是文章写的不太全面。如果没有配置SASL_PLAINTEXT认证可以参考我之前写的这篇文章 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

2.1、SASL_PLAINTEXT

1、连接SASL_PLAINTEXT认证的kafka需要添加如下三个环境变量,KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG 变量指定的用户名密码需要与实际情况一致。

我这里因为镜像已经前提下载过了,所以就没有显示下载镜像的步骤

docker run -d -p 1992:8080 --name kafka-ui  \
--restart=always \
-v /data/docker/kafka/kafka-ui/config.yml:/etc/kafkaui/dynamic_config.yaml \
-e KAFKA_CLUSTERS_0_NAME=local \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=192.168.173.129:9092 \
-e DYNAMIC_CONFIG_ENABLED='true' \
-e AUTH_TYPE=LOGIN_FORM   \
-e SPRING_SECURITY_USER_NAME=admin \
-e SPRING_SECURITY_USER_PASSWORD=admin \
-e KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL=SASL_PLAINTEXT \
-e KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM=PLAIN \
-e KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG='org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret";' \
provectuslabs/kafka-ui:latest

在这里插入图片描述

2、如果报错,查看 /data/docker/kafka/kafka-ui/config.yml 文件是否存在,可以先提前创建,参数含义,大家也能看出来,如果有不明白的,大家可以参考我之前写的这篇文章 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

3、登录 http://192.168.173.129:1992,密码就是我们在启动时配置的 -e SPRING_SECURITY_USER_NAME-e SPRING_SECURITY_USER_PASSWORD admin admin

在这里插入图片描述

4、登录进去如下,如果能获取带信息,就说明没有问题了
在这里插入图片描述

2.2、SSL认证

1、连接SSL认证的kafka需要额外添加如下四个环境变量,其中KAFKA_CLUSTERS_0_PROPERTIES_SSL_TRUSTSTORE_LOCATION 变量指定的配置文件需要时在配置ssl时候提前生成的。

2、另外注意 KAFKA_CLUSTERS_0_PROPERTIES_SSL_TRUSTSTORE_PASSWORD 变量中指定的密码也是实际的密码。

docker run -p 1993:8080 \--name kafka-ui-pwd \-e KAFKA_CLUSTERS_0_NAME=kafka8082 \-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=localhost:8082 \-e KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL=SSL \-e KAFKA_CLUSTERS_0_PROPERTIES_SSL_TRUSTSTORE_LOCATION=/cert/client.truststore.jks \-e KAFKA_CLUSTERS_0_PROPERTIES_SSL_TRUSTSTORE_PASSWORD=admin \-e KAFKA_CLUSTERS_0_PROPERTIES_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM='' \-e TZ=Asia/Shanghai \-e LANG=C.UTF-8 \-v /data/users/yulei/ssl_cert:/cert \-d provectuslabs/kafka-ui:latest 

结尾

1、kafka配置个账号密码… 确实有些麻烦!

参考文章:

  • Authentication using SASL/PLAIN

  • 【保姆式通关宝典】使用Kraft快速搭建Kafka集群(含服务鉴权)

  • kafka服务端设置用户和密码登录及springboot访问实现

  • Kafka配置用户名密码访问

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

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

相关文章

蓝桥杯每日一题2023.10.14

年号字串 - 蓝桥云课 (lanqiao.cn) 题目描述 我们发现每个字母都与26紧密相关&#xff0c;其%26的位置就是最后一个字母&#xff0c;由于最开始将0做为了1故在写答案时需要注意细节问题 #include<bits/stdc.h> using namespace std; char s[] "ABCDEFGHIJKLMNOPQ…

编译linux的设备树

使用make dtbs命令时 在arch/arm 的目录Makefile文件中有 boot : arch/arm/boot prepare 和scripts是空的 在文件scripts/Kbuild.include中 变量build : -f $(srctree)/scripts/Makefile.build obj 在顶层Makefile中 $(srctree)&#xff1a;. 展开后-f ./scripts/Mak…

Linux:mongodb数据库源码包安装(4.4.25版本)

环境 系统&#xff1a;centos7 本机ip&#xff1a;192.168.254.1 准备的mongodb包 版本 &#xff1a; 4.4.25 全名称&#xff1a;mongodb-linux-x86_64-rhel70-4.4.25.tgz 下载源码包 Download MongoDB Community Server | MongoDBhttps://www.mongodb.com/try/downloa…

论文学习——Class-Conditioned Latent Diffusion Model For DCASE 2023

文章目录 引言正文AbstractIntroductionSystem Overview2.1 Latent Diffusion with sound-class-based conditioning以声音类别为条件的潜在扩散模型2.2 Variational Autoencoder and neural vocoder变分自编码器和神经声码器FAD-oriented Postprocessing filter&#xff08;专…

数据中心机房供电配电及能效管理系统设计

安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 摘要&#xff1a;现代的数据中心中都包括大量的计算机&#xff0c;对于这种场所的电力供应&#xff0c;都要求供电系统需要在所有的时间都有效&#xff0c;这就不同于一般建筑的供配电系统&#xff0c;它是一个交叉的系统&#xff0c;涉及…

使用图像处理跟踪瞳孔(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

HTTPS 加密全过程

加密协议以前是SSL,现在都是TLS, 而证书现在大多数都是SSL证书 抓包流程: TCP三次握手过后, 客户端发送Client Hello 服务器相应Server Hello 服务器再次响应发送证书: 服务器再发送公钥:

国内常用源开发环境换源(flutter换源,python换源,Linux换源,npm换源)

flutter换源 使用环境变量:PUB_HOSTED_URL FLUTTER_STORAGE_BASE_URL&#xff0c; upgrade出问题时可能会提示设置FLUTTER_GIT_URL变量。 flutter中国 PUB_HOSTED_URLhttps://pub.flutter-io.cn FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn FLUTTER_GIT_URLhtt…

Python3无法调用Sqlalchemy解决(mysqldb)

原因 在安装Sqlalchemy后运行程序报错 无法导入mysqldb&#xff0c;缺失模块 ImportError: No module named ‘MySQLdb’ 既然缺少 MySQLdb 这个模块&#xff0c;尝试按照正常的想法执行 pip install MySQLdbpip install mysql-python 应该能解决&#xff0c;但是却找不到…

Zookeeper【Curator客户端Java版】从0到1——万字学习笔记

目录 初识Zookeeper Zookeeper作用 维护配置信息 分布式锁服务 集群管理 生产分布式唯一ID Zookeeper的设计目标 Zookeeper 工作机制 数据模型 ZooKeeper 命令操作 服务端常用命令 客户端常用命令 ZooKeeper JavaAPI操作 Curator 介绍 Curator API 常用操作 导入依赖 建立连接 …

SQL Server修改表结构

在SQL Server中修改的关键字是 ALTER(改变;(使)更改;修改(衣服使更合身);改动&#xff09; 列操作 添加列 添加列操作 alter tabel 表名 add 列名 数据类型--给员工表添加一个邮箱 alter的翻译是&#xff08;改变&#xff09; alter table people add PeopleMail varchar(2…

微信小程序获取当前日期时间

一、直接使用方式 在小程序中获取当前系统日期和时间&#xff0c;可直接拿来使用的常用的日期格式 //1. 当前日期 YYYY-MM-DDnew Date().toISOString().substring(0, 10)new Date().toJSON().substring(0, 10)//2. 当前日期 YYYY/MM/DDnew Date().toLocaleDateString()//3.…

解决jmeter软件显示为英文、返回数据乱码、设置编码格式的问题

一.jmeter软件每次打开都需要手动切换中文 1.修改配置文件&#xff0c;可以把jmeter设置成中文&#xff1a; 2.打开jmeter.properties配置文件&#xff0c;修改languagezh_CN 二.返回数据乱码 改配置文件 进入Jmeter的bin目录下&#xff0c;找到jmeter.properties文件&#…

工业互联网系列2 - 赋能传统制造业

工业互联网被称为“第四次工业革命”&#xff0c;它将计算、信息与通讯网络相融合&#xff0c;应用于传统的制造业带来制造业的全面升级&#xff0c;实现了生产效率的提高、质量的改进、成本的降低和生产流程的优化。 汽车制造已经达到非常高的智能化和自动化水平&#xff0c;让…

云计算是什么?学习云计算能做什么工作?

很多人经常会问云计算是什么&#xff1f;云计算能干什么&#xff1f;学习云计算能做什么工作&#xff1f;其实我们有很多人并不知道云计算是什么&#xff0c;小知今天来给大家讲讲学习云计算能做什么。 中国的云计算行业目前正处于快速发展阶段&#xff0c;随着互联网和数字化…

Jenkins UI 自动化持续化集成测试

一&#xff1a;安装jenkins 环境 在官网下载msi 直接安装即可 二&#xff1a;设置全局变量 设置allure 路径 三&#xff1a;创建项目 1、创建自由风格项目 2、如果项目在本地&#xff0c;且本地服务器是windows &#xff0c;找到Jenkins安装根目录&#xff0c;寻找config…

Anaconda prompt中使用conda下载pytorch,一直卡在solving environment解决方案

关闭梯子 清空镜像源&#xff1a; conda config --remove-key channels 在pytorch官网找到对应的版本与命令&#xff1a;PyTorch conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia&#xff08;我的电脑CUDA版本为12.1.103&#xff0c;…

204、RabbitMQ 之 使用 topic 类型的 Exchange 实现通配符路由

目录 ★ 使用topic实现通配符路由代码演示topic通配符类型的Exchange代码演示:ConstantUtilConnectionUtilProducerConsumer01执行结果生产者消费者01消费者02 完整代码&#xff1a;ConstantUtilConnectionUtilProducerConsumer01Consumer02pom.xml ★ 使用topic实现通配符路由…

用servlet实现一个简单的猜数字游戏。

需要两个页面&#xff0c;一个jsp页面&#xff08;guess.jsp&#xff09;和servlet页面&#xff08;servlet&#xff09;。 一.jsp页面 在jsp页面中需要实现&#xff1a; 1.创建随机数并且保存在session中。 2.做个form表单提交猜的数字给servlet页面。 <%page import&…

MySQL数据库的基本操作一

目录 什么是MySQL数据库? 数据库的基本操作 数据库操作 表操作 MySQL的增删改查 插入操作 查找操作 修改操作 删除操作 什么是MySQL数据库? MySQL 是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;目前属于 Oracle 公司。MySQL 是一种关…