部署zookeeper+kafka

目录

一、二进制安装

1.安装jdk

(1)yum 安装

(2)二进制安装

2.部署 zookeeper

3.部署kafka

01.安装

02.常用命令

03.示例

创建topic

创建 Kafka 生产者

创建Kafka消费者

运行示例

二、 docker 安装

1.搭建zookeeper集群

01.docker镜像拉取、docker网络创建

02.创建挂载目录

03.创建配置文件

04.zoo.cfg配置文件内容

05.集群模式启动

01.主节点启动

02.从节点1启动

03.从节点2启动

06.查看集群启动的状态

2.Kafka集群的搭建

01.拉取kafka的镜像文件

02.运行kafka_zookeeper_master节点

03.运行kafka_zookeeper_node1节点

04.运行kafka_zookeeper_node2节点

3.测试Zookeeper中Kafka节点信息

01.进入容器,开启客户端

02.查看全部节点信息

03.查看brokers

04.查看ids,kafka的broker.id以及节点下存储的详细信息

4.测试Kafka中创建Topic,Zookeeper中的接受情况

01.创建一个Topic

02.查看zookeeper集群中topic的信息

03.其它kafka节点查看这个topic


一、二进制安装

1.安装jdk

(1)yum 安装

yum search java | greo jdk
yum install -y java-1.8.0-openjdk
java -verison

(2)二进制安装

# 下载包
mkdir /usr/local/java && cd /usr/local/java
wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz
tar -zxvf jdk-22_linux-x64_bin.tar.gz
​
# 配置环境变量
vi /etc/profile
#set jdk
JAVA_HOME=/usr/local/java/jdk-22.0.1
CLASSPATH=$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
​
# 使配置生效
source /etc/profile
​
# 查看版本
java -version

2.部署 zookeeper

# zookeeper 官网
https://zookeeper.apache.org/
# 下载安装最新稳定版 3.8.4 版本
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz --no-check-certificate
#创建工作目录
mkdir /app/zookeeper
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
#声明环境变量
vim /etc/profile
#zookeeper
export ZOOKEEPER_HOME=/app/zookeeper/apache-zookeeper-3.8.4-bin
export PATH=$PATH:${ZOOKEEPER_HOME}/bin
# 使环境变量生效
source /etc/profile
#配置zookeeper
cd /app/zookeeper/apache-zookeeper-3.8.4-bin/conf
​
cp -p zoo_sample.cfg zoo.cfg
​
vim zoo.cfg
#用于计算的时间单元,以毫秒为单位,比如session超时:N*tickTime
tickTime=2000
#用于集群,允许从节点链接并同步到master节点的初始化连接时间,以tickTime的倍数来表示
initLimit=10
#用于集群,master主节点与从节点之间发送消息,请求和应答时间长度(心跳机制)
syncLimit=5
#连接服务器的端口,默认是2181
clientPort=2181
​
#存放数据文件夹
dataDir=/app/zookeeper/apache-zookeeper-3.8.4-bin/data
#添加日志存放文件夹
dataLogDir=/app/zookeeper/apache-zookeeper-3.8.4-bin/dataLog
#集群信息,地址:LF通信端口:选举端口
server.1=10.88.62.179:2888:3888
server.2=10.88.62.180:2888:3888
server.3=10.88.62.181:2888:3888
#在/app/zookeeper/apache-zookeeper-3.8.4-bin/data数据目录下创建新文件 myid ,分别写入1,2,3
#主节点
echo 1 > /app/zookeeper/apache-zookeeper-3.8.4-bin/data/myid#从节点1
echo 2 > /app/zookeeper/apache-zookeeper-3.8.4-bin/data/myid#从节点2
echo 3 > /app/zookeeper/apache-zookeeper-3.8.4-bin/data/myid
#启动zk服务
zkServer.sh start
​
#查看集群状态
zkServer.sh status

3.部署kafka

01.安装

# 官网地址
https://kafka.apache.org/downloads
https://kafka.apache.org/documentation.html#gettingStarted 
# 下载3.7.0版本
wget https://www.apache.org/dist/kafka/3.7.0/kafka_2.12-3.7.0.tgz --no-check-certificate
#创建工作目录
mkdir /app/kafka
tar -zxvf kafka_2.13-3.7.0.tgz
#配置环境变量
vim /etc/profile
#kafka
KAFKA_HOME=/app/kafka/kafka_2.13-3.7.0/
PATH=$PATH:$KAFKA_HOME/bin/
#配置文件
cd /app/kafka/kafka_2.13-3.7.0/config
vim server.properties
#broker 的全局唯一id值,用于集群下每个 kafka 的唯一标识,可以是任意的整数值,默认为 0。
#三个节点,分别修改为1,2,3
broker.id=0
​
#删除 topic 时是否物理删除。默认为 false 或者无此配置项(此时手动添加即可)
#1、如果没有配置 delete.topic.enable,或者值为 false,则删除 topic 时是标记删除,不是真正的物理删除,在 log.dirs 配置的目录下仍然能看到数据,以及在 zk 服务器的 /brokers/topics 路径也能看到数据。
#2、想要删除 topic 时真正的物理删除,此必须配置为 true.
delete.topic.enable=true
​
#处理网络请求与响应的线程数量,默认为 3
num.network.threads=3
​
#服务器用于处理请求的线程数,可能包括磁盘I/O,默认为 8
num.io.threads=8
​
#发送套接字的缓冲区大小,默认为 102400,100 kb
socket.send.buffer.bytes=102400
​
#接收套接字的缓冲区大小,默认为 102400,100 kb
socket.receive.buffer.bytes=102400
​
#请求套接字的缓冲区大小,默认为 104857600,100M
socket.request.max.bytes=104857600
​
#kafka 运行日志存放的路径,改成自定义的即可,kafka 以日志的形式存储数据,这个路径不能随意删除。
log.dirs=/app/kafka/kafka_2.13-3.7.0/logs
​
#topic在当前broker上的分区个数,默认为 1
num.partitions=1
​
#用来恢复和清理data下数据的线程数量,默认为 1
num.recovery.threads.per.data.dir=1
​
#日志文件保留的最长时间,超时将被删除,默认 168 小时,7 天
log.retention.hours=168
​
#日志文件最大大小,超过时会新建
log.segment.bytes=1073741824
​
#基于大小的日志(数据)保留策略,当存储的数据量超过此大小时,就删除旧数据。默认为 1G。此配置默认是被注释的。
log.retention.bytes=1073741824  
​
#检查日志段以查看是否可以根据保留策略删除日志段的间隔
log.retention.check.interval.ms=300000
​
#配置连接 Zookeeper 集群地址,默认为 localhost:2181
zookeeper.connect=10.88.62.179:2181,10.88.62.180:2181,10.88.62.181:2181
​
#连接到zookeeper的超时(毫秒),默认 18 秒
zookeeper.connection.timeout.ms=18000
#三个kafka节点,添加hosts文件,解析主机名
vim /etc/hosts
10.88.62.182    iZl4y0116dv9vahi5mtdjtZ
10.88.62.183    iZl4y0116dv9vahi5mtdjuZ
10.88.62.184    iZl4y0116dv9vahi5mtdjvZ

02.常用命令

#前台启动
kafka-server-start.sh /app/kafka/kafka_2.13-3.7.0/config/server.properties
#后台启动
nohup kafka-server-start.sh -daemon /app/kafka/kafka_2.13-3.7.0/config/server.properties &
#停止
kafka-server-stop.sh
#列出所有topic
kafka-topics.sh --list --bootstrap-server 10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092
#查看topic详细信息
kafka-topics.sh --bootstrap-server 10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092 --describe --topic mytopic
# 调用生产者生产消息
kafka-console-producer.sh --broker-list 10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092 --topic mytopic
# 调用消费者消费消息,from-beginning表示读取全部的消息
vim config/consumer.properties# 配置 kafka服务地址,多个服务使用逗号分隔
bootstrap.servers=localhost:9092
# 消费者组id
group.id=test-consumer-group
#启动消费者
kafka-console-consumer.sh --bootstrap-server 10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092 --topic mytopic --from-beginning
#消费者拉取消息
kafka-console-consumer.sh --bootstrap-server 10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092 --topic test --consumer.config ../config/consumer.properties
# 删除topic
kafka-topics.sh --bootstrap-server 10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092 --delete --topic mytopic

03.示例

创建topic
kafka-topics.sh --create --topic my-topic --bootstrap-server 10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092 --partitions 3 --replication-factor 1
创建 Kafka 生产者
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
​
import java.util.Properties;
​
public class KafkaProducerExample {
​public static void main(String[] args) {Properties properties = new Properties();properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092");properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
​KafkaProducer<String, String> producer = new KafkaProducer<>(properties);String topic = "my-topic";
​for (int i = 0; i < 10; i++) {String message = "Message " + i;producer.send(new ProducerRecord<>(topic, message));System.out.println("Sent: " + message);}
​producer.close();}
}
创建Kafka消费者
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;
​
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;
​
public class KafkaConsumerExample {
​public static void main(String[] args) {Properties properties = new Properties();properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "10.88.62.182:9092,10.88.62.183:9092,10.88.62.184:9092");properties.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group");properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
​Consumer<String, String> consumer = new KafkaConsumer<>(properties);String topic = "my-topic";
​consumer.subscribe(Collections.singletonList(topic));
​while (true) {ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));records.forEach(record -> {System.out.println("Received: " + record.value());});}}
}
运行示例
#打开一个终端窗口,运行 Kafka 生产者示例
java KafkaProducerExample
​
#打开另一个终端窗口,运行 Kafka 消费者示例:
java KafkaConsumerExample

二、 docker 安装

1.搭建zookeeper集群

01.docker镜像拉取、docker网络创建

#Docker拉取Zookeeper的镜像文件
docker pull wurstmeister/zookeeper
​
#Docker创建 bridge 网络,创建自定义网络
docker network create --driver bridge --subnet 172.18.0.0/16 zookeeper_network
​
#查看已经存在的网络
docker network ls

02.创建挂载目录

主节点创建目录

# 创建 zookeeper 主节点配置存放目录
mkdir -p /mydata/zookeeper_kafka/master/conf
# 创建 zookeeper 主节点数据存放目录
mkdir -p /mydata/zookeeper_kafka/master/data
# 创建 zookeeper 主节点数据日志存放目录
mkdir -p /mydata/zookeeper_kafka/master/datalog
# 创建 zookeeper 主节点日志存放目录
mkdir -p /mydata/zookeeper_kafka/master/logs

从节点1创建目录

# 创建 zookeeper 节点1 配置存放目录
mkdir -p /mydata/zookeeper_kafka/node1/conf
# 创建 zookeeper 节点1 数据存放目录
mkdir -p /mydata/zookeeper_kafka/node1/data
# 创建 zookeeper 节点1 数据日志存放目录
mkdir -p /mydata/zookeeper_kafka/node1/datalog
# 创建 zookeeper 节点1 日志存放目录
mkdir -p /mydata/zookeeper_kafka/node1/logs

​从节点2创建目录

# 创建 zookeeper 节点2 配置存放目录
mkdir -p /mydata/zookeeper_kafka/node2/conf
# 创建 zookeeper 节点2 数据存放目录
mkdir -p /mydata/zookeeper_kafka/node2/data
# 创建 zookeeper 节点2 数据日志存放目录
mkdir -p /mydata/zookeeper_kafka/node2/datalog
# 创建 zookeeper 节点2 日志存放目录
mkdir -p /mydata/zookeeper_kafka/node2/logs

03.创建配置文件

主节点创建配置文件

# zookeeper 主节点配置存放目录
cd /mydata/zookeeper_kafka/master/conf
# 编辑配置文件
vim zoo.cfg
​
#创建myid文件
echo 1 > /mydata/zookeeper_kafka/master/data/myid

从节点1配置文件

# zookeeper 节点1 配置存放目录
cd /mydata/zookeeper_kafka/node1/conf
# 编辑配置文件
vim zoo.cfg
​
#创建myid文件
echo 2 > /mydata/zookeeper_kafka/node1/data/myid

从节点2配置文件

# zookeeper 节点2 配置存放目录
cd /mydata/zookeeper_kafka/node2/conf
# 编辑配置文件
vim zoo.cfg
​
#创建myid文件
echo 3 > /mydata/zookeeper_kafka/node2/data/myid
补充:也可以直接使用cp命令,将文件复制拷贝到其他目录下:cp zoo.cfg /mydata/zookeeper_kafka/node1/conf 
cp zoo.cfg /mydata/zookeeper_kafka/node2/conf 
cd /mydata/zookeeper_kafka/node2/conf

04.zoo.cfg配置文件内容

# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里
dataDir=/opt/zookeeper-3.4.13/data
​
# 事物日志存储地点,如果没提供的话使用的则是 dataDir
dataLogDir=/opt/zookeeper-3.4.13/datalog
​
# 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位
tickTime=2000
​
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
initLimit=5
​
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)
syncLimit=2
​
# 默认值为3,不支持以系统属性方式配置。用于配置Zookeeper在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件。此参数的最小值为3,如果配置的值小于3会自动调整到3
autopurge.snapRetainCount=3
​
# 默认值为0,单位为小时,不支持以系统属性方式配置。用于配置Zookeeper进行历史文件自动清理的频率。如果配置为0或负数,表示不需要开启定时清理功能
autopurge.purgeInterval=0
​
# 默认为60,不支持以系统属性方式配置。从Socket层面限制单个客户端与单台服务器之间的并发连接数,即以ip地址来进行连接数的限制。
# 如果设置为0,表示不做任何限制。仅仅是单台客户端与单个Zookeeper服务器连接数的限制,不能控制所有客户端的连接数总和
maxClientCnxns=60
​
# 3.5.0中的新功能:当设置为false时,可以在复制模式下启动单个服务器,单个参与者可以使用观察者运行,并且群集可以重新配置为一个节点,并且从一个节点。
# 对于向后兼容性,默认值为true。可以使用QuorumPeerConfig的setStandaloneEnabled方法或通过将“standaloneEnabled = false”或“standaloneEnabled = true”添加到服务器的配置文件来设置它。
standaloneEnabled=false
​
# 内嵌的管理控制台,停用这个服务
admin.enableServer=false
​
# 开启四字命令,将所有命令添加到白名单中
4lw.commands.whitelist=*
​
# 服务端口
clientPort=2181
​
# 集群中服务的列表
server.1=172.18.0.6:2888:3888
server.2=172.18.0.7:2888:3888
server.3=172.18.0.8:2888:3888

05.集群模式启动

01.主节点启动
# 启动命令
docker run -d --restart always \
--name zookeeper_kafka_master \
--network zookeeper_network \
--ip 172.18.0.6 \
-p 2181:2181 \
-e ZOO_MY_ID=1 \
-v /mydata/zookeeper_kafka/master/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg \
-v /mydata/zookeeper_kafka/master/data:/opt/zookeeper-3.4.13/data \
-v /mydata/zookeeper_kafka/master/datalog:/opt/zookeeper-3.4.13/datalog \
-v /mydata/zookeeper_kafka/master/logs:/opt/zookeeper-3.4.13/logs \
wurstmeister/zookeeper
02.从节点1启动
# 启动命令
docker run -d --restart always \
--name zookeeper_kafka_node1 \
--network zookeeper_network \
--ip 172.18.0.7 \
-p 2182:2181 \
-e ZOO_MY_ID=2 \
-v /mydata/zookeeper_kafka/node1/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg \
-v /mydata/zookeeper_kafka/node1/data:/opt/zookeeper-3.4.13/data \
-v /mydata/zookeeper_kafka/node1/datalog:/opt/zookeeper-3.4.13/datalog \
-v /mydata/zookeeper_kafka/node1/logs:/opt/zookeeper-3.4.13/logs \
wurstmeister/zookeeper
03.从节点2启动
# 启动命令
docker run -d --restart always \
--name zookeeper_kafka_node2 \
--network zookeeper_network \
--ip 172.18.0.8 \
-p 2183:2181 \
-e ZOO_MY_ID=3 \
-v /mydata/zookeeper_kafka/node2/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg \
-v /mydata/zookeeper_kafka/node2/data:/opt/zookeeper-3.4.13/data \
-v /mydata/zookeeper_kafka/node2/datalog:/opt/zookeeper-3.4.13/datalog \
-v /mydata/zookeeper_kafka/node2/logs:/opt/zookeeper-3.4.13/logs \
wurstmeister/zookeeper

06.查看集群启动的状态

# 在容器 zookeeper-master 中开启一个交互模式的终端
docker exec -it zookeeper_kafka_master /bin/bash
​
# 查看 zookeeper 状态
cd bin
zkServer.sh status

2.Kafka集群的搭建

01.拉取kafka的镜像文件

docker pull wurstmeister/kafka

02.运行kafka_zookeeper_master节点

docker run -d --name kafka_zookeeper_master  --network zookeeper_network -p 9096:9096 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.18.0.6:2181,172.18.0.7:2181,172.18.0.8:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.0.4.9:9096 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9096 wurstmeister/kafka

03.运行kafka_zookeeper_node1节点

docker run -d --name kafka_zookeeper_node1 --network zookeeper_network -p 9097:9097 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=172.18.0.6:2181,172.18.0.7:2181,172.18.0.8:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.0.4.9:9097 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9097  wurstmeister/kafka

04.运行kafka_zookeeper_node2节点

docker run -d --name kafka_zookeeper_node2 --network zookeeper_network -p 9098:9098 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=172.18.0.6:2181,172.18.0.7:2181,172.18.0.8:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.0.4.9:9098 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9098  wurstmeister/kafka

3.测试Zookeeper中Kafka节点信息

01.进入容器,开启客户端

zkCli.sh

02.查看全部节点信息

ls /
get /controller

03.查看brokers

ls /brokers

04.查看ids,kafka的broker.id以及节点下存储的详细信息

ls /brokers
ls /brokers/ids
ls /brokers/ids/0
ls /brokers/ids/1
ls /brokers/ids/2

4.测试Kafka中创建Topic,Zookeeper中的接受情况

01.创建一个Topic

kafka-topics.sh --create --topic topic_example_1 --zookeeper 172.18.0.6:2181,172.18.0.7:2181,172.18.0.8:2181 --replication-factor 3 --partitions 3

02.查看zookeeper集群中topic的信息

#节点123都要查看
ls /brokers
ls /brokers/topics
ls /brokers/topics/topic_ex
...

03.其它kafka节点查看这个topic

kafka-topics.sh --zookeeper 172.18.0.6:2181,172.18.0.7:2181,172.18.0.8:2181 --list

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

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

相关文章

linux环境下的MySQL UDF提权

linux环境下的MySQL UDF提权 ##1. 背景介绍 ###UDF UDF&#xff08;user defined function&#xff09;用户自定义函数,是MySQL的一个扩展接口&#xff0c;称为用户自定义函数,是用来拓展MySQL的技术手段&#xff0c;用户通过自定义函数来实现在MySQL中无法实现的功能。文件…

LINUX基础培训三十之理论基础知识自测题(附答案)

一、单选题(50题) 1. Linux是一套类( )操作系统。 A、 POSIX B、 BSD C、 WINDOWS D、 UNIX 2. Linux系统中,所提供的安装软件包,默认格式为( )。 A、 .tar B、.tar.gz C、.rpm D、 .zip 3. Linux系统中,以下哪个是管道符( )。 A、| B、> …

Node.js -- 模块化

文章目录 1. 模块化介绍2. 模块化初体验3. 模块暴露数据4. 导入文件(夹)模块5. 导入模块的基本流程6. CommonJS 规范 这里是引用 1. 模块化介绍 之前我们所编写的文件都是单个文件&#xff0c;这就会出现一些问题&#xff1a; 变量不能重复命名&#xff1b;代码复用性差&…

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024)

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024) 会议简介 我们诚挚邀请您参加2024年大数据应用、智能控制和软件工程国际会议&#xff08;BDAICSE2024&#xff09;。这次会议将在美丽的长沙市举行。 本次大会旨在汇聚全球大数据应用、智能控制、软件工程等领…

【华为OD机试】生成哈夫曼树【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。 请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。 …

云LIS系统概述JavaScript+前端框架JQuery+EasyUI+Bootstrap医院云HIS系统源码 开箱即用

云LIS系统概述JavaScript前端框架JQueryEasyUIBootstrap医院云HIS系统源码 开箱即用 云LIS&#xff08;云实验室信息管理系统&#xff09;是一种结合了计算机网络化信息系统的技术&#xff0c;它无缝嵌入到云HIS&#xff08;医院信息系统&#xff09;中&#xff0c;用于连…

[iOS]CocoaPods安装和使用

1.了解brew、rvm、ruby、gem、cocaspods之间的关系 在 macOS 环境中&#xff0c;Brew、RVM、Ruby、Gem 和 CocoaPods 之间存在以下关系&#xff1a; Homebrew (Brew)&#xff1a;Homebrew 是 macOS 上的包管理器&#xff0c;用于安装和管理各种开源软件包。它使您能够轻松地从…

信息系统项目管理师0069:数据运维(5信息系统工程—5.2数据工程—5.2.3数据运维)

点击查看专栏目录 文章目录 5.2.3数据运维1.数据存储2.数据备份3.数据容灾4.数据质量评价与控制记忆要点总结5.2.3数据运维 数据开发利用的前提是通过合适的方式将数据保存到存储介质上,并能保证有效的访问,还要通过数据备份和容灾手段,保证数据的高可用性。数据质量管理是在…

Pytorch实用教程:Pytorch的nn.LSTM中参数的含义

文章目录 基本组成关键特性使用`nn.LSTM`的基本步骤注意事项Pytorch的nn.LSTM中参数的含义示例课外分享PyTorch的nn.LSTM模块是一个用于构建长短期记忆(LSTM)网络的类,它是一种特殊类型的循环神经网络(RNN),能够学习序列数据中的长期依赖关系。 LSTM网络被广泛用于时间序…

频裂变加群推广强制分享引流源码

视频裂变加群推广强制分享引流源码&#xff0c;用户达到观看次数后需要分享给好友或者群,好友必须点击推广链接后才会增加观看次数。 引导用户转发QV分享,达到快速裂变引流的效果&#xff01; 视频裂变推广程序&#xff0c;强制分享链接&#xff0c;引导用户转发&#xff0c;…

场内股票期权和场外期权(附场内期权交易攻略)

期权是交易双方关于未来买卖权利达成的合约。 就股票期权来说&#xff0c;期权的买方(权利方)通过向卖方(义务方)支付一定的费用(即期权费或权利金)&#xff0c;获得一种权利&#xff0c;即有权在约定的时间以约定的价格向期权卖方买入或卖出约定数量的标的股票或ETF。 买方(…

【SQL】SQL语句执行顺序

今天写一个相当基础的知识点&#xff0c;主要是之前对这块比较模糊&#xff0c;也没有细究&#xff0c;这次一并记录一下。 用一个例子说明SQL语句在逻辑执行计划时候的执行顺序&#xff0c;实际物理计划可能由于不同数据库优化策略的不同而略有差异。 例如&#xff0c;一个典型…

PyQt介绍——动画使用详解之QPropertyAnimation

一、继承关系 PyQt5的动画框架是QAbstractAnimation&#xff0c;它是一个抽象类&#xff0c;不能直接使用&#xff0c;需要使用它的子类。它的类结构如下&#xff1a; QAbstractAnimation&#xff1a;抽象动画&#xff0c;是所有动画的基类&#xff0c;不能直接使用。 QVariant…

Wi-Fi HaLow:重塑物联网的未来

Wi-Fi HaLow&#xff1a;引领物联网连接的革命 数字时代的蓬勃发展正在引发一场深刻的变革&#xff0c;物联网已经融入到我们的日常生活和工作中&#xff0c;成为不可或缺的一部分。随着新一代Wi-Fi技术一Wi-Fi HaLow的崭露头角&#xff0c;有望在2024年及未来&#xff0c;重新…

Mybatis 动态Sql标签使用总结

一、前言 常用的动态sql标签包括 if、choose(when、otherwise)、trim(where、set)、foreach。 二、标签介绍 2.1、if 标签 1、动态拼接查询条件 select DISTINCT ksid as id,ksdm as cd , ksmc as na ,id_org ,1 as fg_active,kspydm as py FROMV_CIS_RO_USERWHERE 11<…

数据结构 - 链表详解(二)—— 带头双向循环链表

链表的介绍 链表的结构一共有八种&#xff1a;带头单向循环链表、带头单向非循环链表、带头双向循环链表、带头双向非循环链表、无头单向循环链表、无头单向非循环链表、无头双向循环链表、无头双向非循环链表。 今天我们来详解带头双向循环链表 带头双向循环链表是一种数据结…

Flutter开发好用插件url_launcher详解-启动 URL

文章目录 url_launcher介绍安装用法错误处理自定义行为其他功能 url_launcher介绍 url_launcher 是一个 Flutter 插件&#xff0c;用于启动 URL。它支持网络、电话、短信和电子邮件方案。您可以使用它从您的 Flutter 应用程序中打开网站、拨打号码、发送短信或撰写电子邮件。 …

javaSE (七):异常

目录 一、Java 异常概述 1.异常概念 2.异常的抛出机制 3.如何对待异常 二、 java异常体系结构 1.Throwable 2. Throwable分类 三、常见的异常 1.Error 2.异常--运行时异常 四、异常处理 1.try 2.catch 3.finally 4.throws 5.throw 五、运行期异常和编译期异常…

commvault学习(6):备份oracle(包括oracle的安装)

1.环境 CS、MA&#xff1a;一台windows server2012 客户端&#xff1a;2台安装了oracle11g的windows server2008 1.1 windows server2008安装oracle11g &#xff08;1&#xff09;右击安装包内的setup&#xff0c;以管理员方式运行 &#xff08;2&#xff09;取消勾选接收安…

仿真-Carla初识-安装

仿真方面研究,希望掌握仿真技术 目录 前言1. Carla基本架构2.Carla安装2.1 Pre-comiled版本2.1.1 安装要求2.1.2 安装前言 学习参考文档: 1.小飞自动驾驶系列分享 1. Carla基本架构 Client-Server的交互形式:Carla主要分为Server与Client两个模块,Server端用来建立这个仿…