zookeeper的介绍和简单使用
1 zookerper介绍
zookeeper是一个开源的分布式协调服务,由Apache软件基金会提供,主要用于解决分布式应用中的数据管理、状态同步和集群协调等问题。通过提供一个高性能、高可用的协调服务,帮助构建可靠的分布式系统。
Zookeeper的特点和功能:
- 数据模型:Zookeeper的数据模型类似于Unix文件系统,采用层次化的树形结构,称为Znode。每个Znode可以存储数据和子节点,支持临时节点和持久节点
- 一致性保证:Zookeeper保证了顺序一致性、原子性、单一系统映像、实时性和持久性
- 核心功能:包括领导者选举、分布式锁、配置管理、服务注册与发现等
Zookeeper的工作原理:
Zookeeper采用Leader-Follower架构,集群通常由奇数个节点组成,以确保在网络分区或节点故障时仍能实现一致性与可用性。核心机制是ZAB协议(Zookeeper Atomic Broadcast),一种崩溃恢复的原子广播协议,保证了在网络分区和崩溃时的最终一致性和持久性
Zookeeper的应用场景:
-
Leader选举:在分布式系统中,协调多个节点选出一个领导者是关键操作,例如Hadoop HDFS使用Zookeeper进行Namenode的故障转移和选举
-
分布式锁:实现资源竞争的控制,Zookeeper提供了强大的分布式锁功能
-
配置管理:保持配置的一致性和动态更新,例如Apache Storm使用Zookeeper来协调任务拓扑和节点状态。
-
服务注册与发现:Zookeeper常作为服务注册中心,允许服务提供者注册其服务,消费者动态发现服务
配置中心简单理解:
假设多个应用有自己的配置文件,如果经常变更的话,修改起来比较麻烦;就可以使用配置中心统一存储配置,让应用程序去配置中心获取配置
注册中心简单理解:
酒店商家到飞旅平台 注册,消费者在平台上查看酒店信息。酒店平台就是注册中心供商家注册
2 zookerper集群部署
2.1 部署zookerper集群
| 主机 | IP地址 |
|---|---|
| elk91 | 10.0.0.0.91 |
| elk92 | 10.0.0.0.92 |
| elk93 | 10.0.0.0.93 |
端口规划:
- 2181:供客户端访问的端口
- 5888:zookerper数据同步和交换
- 6888:leader选举
1.下载地址:https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
2.所有节点创建zookerper相关目录,添加hosts文件解析
[root@elk91 ~]# mkdir -pv /zhiyong18/{softwares,data,logs}/[root@elk91 ~]# cat >> /etc/hosts <<EOF
10.0.0.91 elk91
10.0.0.92 elk92
10.0.0.93 elk93
EOF
3.配置elk91节点免密登录其他节点
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' -qssh-copy-id elk91
ssh-copy-id elk92
ssh-copy-id elk93
4.解压软件包,拷贝配置文件
[root@elk91 ~]# tar xvf apache-zookeeper-3.8.4-bin.tar.gz -C /zhiyong18/softwares/[root@elk91 ~]# cp /zhiyong18/softwares/apache-zookeeper-3.8.4-bin/conf/zoo{_sample.cfg,.cfg}[root@elk91 ~]# ll /zhiyong18/softwares/apache-zookeeper-3.8.4-bin/conf/zoo*
/zhiyong18/softwares/apache-zookeeper-3.8.4-bin/conf/zoo.cfg
/zhiyong18/softwares/apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg
5.修改zookeeper的配置文件,指定数据目录、集群主机。然后同步配置文件到其他节点
cat > /zhiyong18/softwares/apache-zookeeper-3.8.4-bin/conf/zoo.cfg <<EOF
# 定义最小单元的时间范围tick。
tickTime=2000
# 启动时最长等待tick数量。
initLimit=5
# 数据同步时最长等待的tick时间进行响应ACK
syncLimit=2
# 指定数据目录
dataDir=/zhiyong18/data/zk
# 监听端口
clientPort=2181
# 开启四字命令允许所有的节点访问。
4lw.commands.whitelist=*server.91=10.0.0.91:5888:6888
server.92=10.0.0.92:5888:6888
server.93=10.0.0.93:5888:6888# # 监控相关
## Metrics Providers
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpHost=0.0.0.0
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
EOF
scp -r /zhiyong18/softwares/apache-zookeeper-3.8.4-bin/ 10.0.0.92:/zhiyong18/softwares/
scp -r /zhiyong18/softwares/apache-zookeeper-3.8.4-bin/ 10.0.0.93:/zhiyong18/softwares/
6.准备myID文件,ID必须和配置文件中的一样
for ((host_id=91; host_id<=93; host_id++)); dossh elk${host_id} "mkdir /zhiyong18/data/zkecho ${host_id} > /zhiyong18/data/zk/myid"
done
7.编写启动脚本并传输到其他节点,最后启动zookerper集群
cat > /lib/systemd/system/zk.service <<EOF
[Unit]
Description=zhiyong18 zookeeper server
After=network.target[Service]
Type=forking
Environment=JAVA_HOME=/usr/share/elasticsearch/jdk
ExecStart=/zhiyong18/softwares/apache-zookeeper-3.8.4-bin/bin/zkServer.sh start [Install]
WantedBy=multi-user.target
EOF
scp /lib/systemd/system/zk.service elk92:/lib/systemd/system/
scp /lib/systemd/system/zk.service elk93:/lib/systemd/system/
systemctl daemon-reload
systemctl enable --now zk
systemctl status zk
8.检查各端口是否监听
[root@elk92~]# ss -ntl | grep 2181
LISTEN 0 50 *:2181 *:*
9.配置环境变量,便于直接使用zookerper的变量进行操作
cat > /etc/profile.d/zk.sh <<EOF
#!/bin/bash
export JAVA_HOME=/usr/share/elasticsearch/jdk
export ZK_HOME=/zhiyong18/softwares/apache-zookeeper-3.8.4-bin
export PATH=$PATH:$ZK_HOME/bin:$JAVA_HOME/bin
EOF
scp /etc/profile.d/zk.sh elk92:/etc/profile.d
scp /etc/profile.d/zk.sh elk93:/etc/profile.dsource /etc/profile.d/zk.sh
10.连接zookeeper集群
[root@elk91 ~]# zkCli.sh -server 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181
...
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 1]
11.查看zookeeper集群的状态。有2个是follower,1个是leader
zkServer.sh status
2.2 zookerper变量
设置占用的内存容量
[root@elk91 ~]# grep ^ZK_SERVER_HEAP /zhiyong18/softwares/apache-zookeeper-3.8.4-bin/bin/zkEnv.sh
ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-128}"
2.2 图形化连接工具zk-web
使用方式:java -jar jar包名
注意不要超过 jdk1.8
访问地址:http://10.0.0.91:8099/

2.2 zookerper四字监控
zookeeper的四字监控命令
echo srvr | nc 10.0.0.93 2181
echo ruok | nc 10.0.0.93 2181
echo conf | nc 10.0.0.93 2181
3 zookerper常用命令增删改查
连接集群:zkCli.sh -server 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181
1.查看zookeeper node列表
[zk: 10.0.0.93:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: 10.0.0.93:2181(CONNECTED) 2]
2.创建zookeeper node并存储数据
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 2] create /wzy666 xixi
Created /wzy666
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 3] get /wzy666
xixi
3.创建zookeeper node不存储数据
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 4] create /wzy666/wzy999
Created /wzy666/wzy999[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 6] get /wzy666/wzy999
null
4.修改zookeeper node的数据
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 7] set /wzy666/wzy999 999
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 8] get /wzy666/wzy999
999
5.删除zookeeper node(必须为空,换句话说,没有子目录)
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 8] create /wzy666/wzy999/1
Created /wzy666/wzy999/1
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 9] create /wzy666/wzy999/2
Created /wzy666/wzy999/[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 10] ls /wzy666/wzy999
[1, 2][zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 11] delete /wzy666/wzy999
Node not empty: /wzy666/wzy999
6.删除zookeeper node(递归删除,换句话说,有子目录也可以被删除)
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 15] deleteall /wzy666/wzy999
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 16] ls /wzy666/wzy999
Node does not exist: /wzy666/wzy999
4 zookerper的节点类型
- 临时zookeeper node:当与客户端链接断开时,超出了一定的时间范围(默认30s),则自动删除该zookeeper node
- 永久zookeeper node:当与客户端断开链接时,zookeeper node并不会被删除,除非手动删除
1.create + -e可以创建临时node
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 12] create /wzy666/dev
Node does not exist: /zhiyong18/dev
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 13] create -e /wzy666/test
Node does not exist: /zhiyong18/test
2.对比2个node的状态;ephemeralOwner = 0x0 表示永久node,不是则表示临时node
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 22] stat /wzy666/dev
cZxid = 0x20000000d
ctime = Fri Nov 22 10:29:02 UTC 2024
mZxid = 0x20000000d
mtime = Fri Nov 22 10:29:02 UTC 2024
pZxid = 0x20000000d
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 0
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 23] stat /wzy666/tst
Node does not exist: /wzy666/tst
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 24] stat /wzy666/test
cZxid = 0x20000000e
ctime = Fri Nov 22 10:29:09 UTC 2024
mZxid = 0x20000000e
mtime = Fri Nov 22 10:29:09 UTC 2024
pZxid = 0x20000000e
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x5c000066919c0000
dataLength = 0
numChildren = 0
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 25]
3.退出30秒,node会被删除
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 0] ls /wzy666/test
Node does not exist: /wzy666/test
4.ephemeralOwner ID和 当前连接终端ID相同,当然也可以用随机的:create -s
5 watch机制
客户端可以监控znode状态,一旦发生变化,就立刻通知客户端。watch事件是一次性的
1.在第一个会话监视/wzy666的数据
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 1] get -w /wzy666
6x6
2.在第二个会话修改数据
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 2] set /wzy666 6x9
这时在第一个就能看能通知了
[zk: 10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181(CONNECTED) 2]
WATCHER::WatchedEvent state:SyncConnected type:NodeDataChanged path:/wzy666
6 zookerper数据写入机制
1.客户端发去数据写入请求如果到了follwer节点,那么 follower 会转发写请求到leader节点;
2.eader 节点接收到写入请求后,会分配一个全局唯一的事务 ID(ZXID),然后发起写操作的提案;leader 节点将写操作的提案广播给所有 follower 节点
3.每个 follower 节点收到提案后,会尝试在本地日志中记录(写入磁盘),然后向 leader 节点发送一个 ACK(确认消息),表明提案已被记录
4.当 leader 节点收到超过半数(包括自身)节点的 ACK 后,认为该写操作被集群大多数接受(满足 ZooKeeper 的强一致性需求),于是将该事务标记为已提交(commit)。随后,leader 节点通知所有 follower 节点提交该事务
wzy666
# 6 zookerper数据写入机制1.客户端发去数据写入请求如果到了follwer节点,那么 follower 会转发写请求到leader节点;2.eader 节点接收到写入请求后,会分配一个全局唯一的事务 ID(ZXID),然后发起写操作的提案;leader 节点将写操作的提案广播给所有 follower 节点3.每个 follower 节点收到提案后,会尝试在本地日志中记录(写入磁盘),然后向 leader 节点发送一个 ACK(确认消息),表明提案已被记录4.当 leader 节点收到超过半数(包括自身)节点的 ACK 后,认为该写操作被集群大多数接受(满足 ZooKeeper 的强一致性需求),于是将该事务标记为已提交(commit)。随后,leader 节点通知所有 follower 节点提交该事务5.最后,leader 节点向客户端返回写入成功的响应
相关文章:
zookeeper的介绍和简单使用
1 zookerper介绍 zookeeper是一个开源的分布式协调服务,由Apache软件基金会提供,主要用于解决分布式应用中的数据管理、状态同步和集群协调等问题。通过提供一个高性能、高可用的协调服务,帮助构建可靠的分布式系统。 Zookeeper的特点和功能…...
【学习笔记】深度学习网络-深度前馈网络(MLP)
作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 在之前的文章中介绍了深度学习中用…...
使用Java技术开发软件详细流程
1. 需求分析 与客户沟通:与客户或项目负责人交流,了解需要开发的软件目标、功能需求、性能要求、使用场景等。例如,如果要开发一个在线购物系统,需要明确用户是否可以浏览商品、添加到购物车、下单支付等功能。收集和整理需求&am…...
Kubectl 与 Helm 详解
在 Kubernetes 生态中,kubectl 和 Helm 是两个核心工具,分别用于直接管理 Kubernetes 资源和简化应用的部署与管理。本文将深入探讨 kubectl 和 Helm 的功能、使用场景、部署与更新方式,并对比它们的优缺点。 1. Kubectl 详解 1.1 什么是 Kubectl? kubectl 是 Kubernetes…...
uni-app 程序打包 Android apk、安卓夜神模拟器调试运行
1、打包思路 云端打包方案(每天免费次数限制5,最简单,可以先打包尝试一下你的程序打包后是否能用): HBuilderX 发行App-Android云打包 选择Android、使用云端证书、快速安心打包本地打包: HBuilderX …...
全面评测 DOCA 开发环境下的 DPU:性能表现、机器学习与金融高频交易下的计算能力分析
本文介绍了我在 DOCA 开发环境下对 DPU 进行测评和计算能力测试的一些真实体验和记录。在测评过程中,我主要关注了 DPU 在高并发数据传输和深度学习场景下的表现,以及基本的系统性能指标,包括 CPU 计算、内存带宽、多线程/多进程能力和 I/O 性…...
AI学习(vscode+deepseek+cline)
1、网页生成不成功时,直接根据提示让模型替你解决问题 2、http://localhost:3000 拒绝链接时,cmd输入命令InetMgr,网站右键新建-配置你的网页代码物理地址,这里我还输入本机登录名及密码了,并把端口地址由默认80修改为…...
速通 AI+Web3 开发技能: 免费课程+前沿洞察
AI 正以前所未有的速度重塑各行各业,从生成式模型到大规模数据处理,AI 逐渐成为核心驱动力。与此同时,Web3 去中心化技术也在重新定义信任、交易和协作方式。当这两大前沿技术相遇,AI Web3 的融合已不再是理论,而是未…...
使用LPT wiggler jtag自制三星单片机(sam88 core)编程器-S3F9454
写在前面 新年好,各位,今天来分享制作一个三星单片机的编程器 嘿嘿,x鱼垃圾佬元件库有些三星单片机s3f9454,编程器不想买,基本拿来拆件玩的。但,前些时候csdn下载到它的编程时序,自己来做个编程…...
【Unity3D】《跳舞的线》游戏的方块单方向拉伸实现案例
通过网盘分享的文件:CubeMoveMusic.unitypackage 链接: https://pan.baidu.com/s/1Rq-HH4H9qzVNtpQ84WXyUA?pwda7xn 提取码: a7xn 运行游戏点击空格动态创建拉伸的方块,由Speed控制速度,新方向是随机上下左右生成。 using System.Collect…...
Chameleon(变色龙) 跨平台编译C文件,并一次性生成多个平台的可执行文件
地址:https://github.com/MartinxMax/Chameleon Chameleon 跨平台编译C文件,并一次性生成多个平台的可执行文件。可以通过编译Chameleon自带的.C文件反向Shell生成不同平台攻击载荷。 登录 & 代理设置 按照以下步骤设置 Docker 的代理: 创建配置目…...
解读2025年生物医药创新技术:展览会与论坛的重要性
2025生物医药创新技术与应用发展展览会暨论坛,由天津市生物医药行业协会、BIO CHINA生物发酵展组委会携手主办,山东信世会展服务有限公司承办,定于2025年3月3日至5日在济南黄河国际会展中心盛大开幕。展会规模60000平方米、800参展商、35场会…...
WPF基础 | WPF 布局系统深度剖析:从 Grid 到 StackPanel
WPF基础 | WPF 布局系统深度剖析:从 Grid 到 StackPanel 一、前言二、Grid 布局:万能的布局王者2.1 Grid 布局基础:构建网格世界2.2 子元素定位与跨行列:布局的精细操控2.3 自适应布局:灵活应变的秘诀 三、StackPanel…...
Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用
在人工智能的浩瀚宇宙中,深度学习犹如一颗璀璨的星辰,引领着机器学习和计算机视觉领域的前沿探索。而神经网络,作为深度学习的核心架构,更是以其强大的数据建模能力,成为解决复杂问题的重要工具。今天,我们…...
git常用命令学习
目录 文章目录 目录第一章 git简介1.Git 与SVN2.Git 工作区、暂存区和版本库 第二章 git常用命令学习1.ssh设置2.设置用户信息3.常用命令设置1.初始化本地仓库init2.克隆clone3.查看状态 git status4.添加add命令5.添加评论6.分支操作1.创建分支2.查看分支3.切换分支4.删除分支…...
vue中使用jquery 实现table 拖动改变尺寸
使用 CDN , 降低打包文件的大小在index.html中 <script src"https://.../cdns/jquery-1.12.4.min.js"></script>在 Vue 中使用 jQuery 一旦你引入 jQuery,你可以在 Vue 实例中使用它。有两种主要方式: 1. 使用全局变量 $ jQue…...
Linux的基本指令(上)
1.ls指令 语法:ls [选项] [目录或文件] 功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。 常用选项: -a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。 -d 将…...
【单链表算法实战】解锁数据结构核心谜题——相交链表
题目如下: 解题过程如下: 相交链表只可以在中间任意位置/头/尾结点相交,如下图: 一个next指针只能指向一块地址,所以不会出现这种情况: 在返回相交链表的起始结点之前先要判断两个链表是否相交࿰…...
HTTP 配置与应用(不同网段)
想做一个自己学习的有关的csdn账号,努力奋斗......会更新我计算机网络实验课程的所有内容,还有其他的学习知识^_^,为自己巩固一下所学知识,下次更新校园网设计。 我是一个萌新小白,有误地方请大家指正,谢谢…...
深度学习 Pytorch 单层神经网络
神经网络是模仿人类大脑结构所构建的算法,在人脑里,我们有轴突连接神经元,在算法中,我们用圆表示神经元,用线表示神经元之间的连接,数据从神经网络的左侧输入,让神经元处理之后,从右…...
政安晨的AI大模型训练实践三:熟悉一下LF训练模型的WebUI
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 目录 启动WebUI 微调模型 LLaMA-Factory 支持通过 WebUI 零代码微调大语言模型。 启动Web…...
Flink Gauss CDC:深度剖析存量与增量同步的创新设计
目录 设计思路 1.为什么不直接用FlinkCDC要重写Flink Gauss CDC 2.存量同步的逻辑是什么 2.1、单主键的切片策略是什么 2.2、复合主键作切片,怎么保证扫描到所有的数据 3、增量同步的逻辑是什么 4、存量同步结束之后如何无缝衔接增量同步 5、下游数据如何落…...
【深入理解SpringCloud微服务】Sentinel规则持久化实战
Sentinel规则持久化实战 Sentinel规则推送模式原始模式pull(拉模式)push(推模式) 实现拉模式实现推模式 Sentinel规则推送模式 原始模式 原始模式由Sentinel控制台直接推送规则到Sentinel客户端,Sentinel客户端将规则…...
三高“高性能、高并发、高可靠”系统架构设计系列文章
目录 高并发系统的艺术:如何在流量洪峰中游刃有余 《数据密集型应用系统设计》读后感与高并发高性能实践案例 系统稳定性与高可用保障的几种思路 软件系统限流的底层原理解析 技术解决方案调研 延迟队列调研 重试调研 异步回调调研 分库分表调研 分布式事…...
ray.rllib-入门实践-11: 自定义模型/网络
在ray.rllib中定义和使用自己的模型, 分为以下三个步骤: 1. 定义自己的模型。 2. 向ray注册自定义的模型 3. 在config中配置使用自定义的模型 环境配置: torch2.5.1 ray2.10.0 ray[rllib]2.10.0 ray[tune]2.10.0 ray[serve]2.10.0 numpy1.23.…...
C语言小项目——通讯录
功能介绍: 1.联系人信息:姓名年龄性别地址电话 2.通讯录中可以存放100个人的信息 3.功能: 1>增加联系人 2>删除指定联系人 3>查找指定联系人的信息 4>修改指定联系人的信息 5显示所有联系人的信息 6>排序(名字&…...
C#牵手Blazor,解锁跨平台Web应用开发新姿势
一、引言 在当今数字化时代,Web 应用已成为人们生活和工作中不可或缺的一部分 ,而开发跨平台的 Web 应用则是满足不同用户需求、扩大应用影响力的关键。C# 作为一种强大的编程语言,拥有丰富的类库和强大的功能,在企业级开发、游戏…...
PCIE模式配置
对于VU系列FPGA,当DMA/Bridge Subsystem for PCI Express IP配置为Bridge模式时,等同于K7系列中的AXI Memory Mapped To PCI Express IP。...
【论文阅读】RT-SKETCH: GOAL-CONDITIONED IMITATION LEARNING FROM HAND-DRAWN SKETCHES
RT-Sketch:基于手绘草图的目标条件模仿学习 摘要:在目标条件模仿学习(imitation learning,IL)中,自然语言和图像通常被用作目标表示。然而,自然语言可能存在歧义,图像则可能过于具体…...
【由浅入深认识Maven】第2部分 maven依赖管理与仓库机制
文章目录 第二篇:Maven依赖管理与仓库机制一、前言二、依赖管理基础1.依赖声明2. 依赖范围(Scope)3. 依赖冲突与排除 三、Maven的仓库机制1. 本地仓库2. 中央仓库3. 远程仓库 四、 版本管理策略1. 固定版本2. 版本范围 五、 总结 第二篇&…...
