ZooKeeper知识点总结及分布式锁实现

    最初接触ZooKeeper是之前的一个公司的微服务项目中,涉及到Dubbo和ZooKeeper,ZooKeeper作为微服务的注册和配置中心。好了,开始介绍ZooKeeper了。

目录

1.ZooKeeper的基本概念

2.ZooKeeper的节点(ZNode)

3. ZooKeeper的Watcher机制

4. ZooKeeper的会话(Session)

5. ZooKeeper的领导者选举

6. ZooKeeper的持久性和临时性节点

7. ZooKeeper的ACL(访问控制列表)

 8.ZooKeeper的集群模式

9. ZooKeeper的典型应用场景

 10.ZooKeeper的会话超时和重连机制

11. ZooKeeper的故障恢复机制

 12.ZooKeeper的事务处理

13. ZooKeeper的Watcher事件和状态

14. ZooKeeper的四字节数字表示

 15.ZooKeeper的Chroot特性

16.ZooKeeper的JMX(Java Management Extensions)管理 

17. ZooKeeper的Quorum Peer通信

18. ZooKeeper的Follower和Observer角色

19. ZooKeeper Administrator(ZK Admin)命令行工具

20.ZooKeeper的ZooInspector可视化工具

​ 21.Spring Boot整合ZooKeeper实现分布式锁


1.ZooKeeper的基本概念
知识点描述示例
什么是ZooKeeper分布式协调服务ZooKeeper是一个开源的分布式协调服务,用于维护配置信息、命名、提供分布式同步和提供组服务等。
设计目标简单、健壮、易于编程ZooKeeper的设计目标是简单、健壮、易于编程,它能够保证在分布式环境中的一致性。
核心特性一致性、可靠性、有序性ZooKeeper的核心特性包括一致性、可靠性和有序性,确保分布式环境中的数据一致性。
数据模型树形结构ZooKeeper的数据模型是类似于文件系统的树形结构,称为ZNode。每个ZNode可以存储数据和子节点。
应用场景分布式锁、配置管理等ZooKeeper常用于实现分布式锁、配置管理、负载均衡、命名服务等。
2.ZooKeeper的节点(ZNode)
知识点描述示例
ZNode类型持久节点和临时节点持久节点会一直存在,直到被显式删除;临时节点在创建它的会话结束时自动删除。
ZNode数据存储数据每个ZNode可以存储一定量的数据,通常用于存储配置信息或状态信息。
顺序性顺序ZNode可以创建顺序ZNode,ZooKeeper会在创建时在ZNode名称后添加一个数字,表示创建顺序。
监听器监听节点变化可以为ZNode设置监听器,当ZNode的数据或子节点发生变化时,监听器会被触发。
权限控制ACL(Access Control Lists)ZooKeeper支持权限控制,可以为不同的ZNode设置不同的访问权限。
3. ZooKeeper的Watcher机制
知识点描述示例
Watcher定义事件监听器Watcher是ZooKeeper中的事件监听器,用于监听ZNode上的变化。
触发事件数据变更、状态变更Watcher可以监听数据节点的内容变化、子节点的添加或删除,以及客户端与服务器之间的状态变化。
一次性触发单次触发Watcher是一次性的,一旦触发,就会移除,如果需要持续监听,需要重新注册。
事件类型多种事件类型包括节点创建、删除、更改以及客户端连接状态变化等。
应用场景状态同步、触发动作常用于实现分布式协调、状态同步,以及在节点变化时触发某些动作。
4. ZooKeeper的会话(Session)
知识点描述示例
会话概念客户端与ZooKeeper的连接会话是客户端与ZooKeeper之间的一个TCP连接,用于客户端与ZooKeeper之间的通信。
会话ID唯一标识每个会话都有一个唯一的会话ID,用于识别特定的会话。
超时机制保持会话活跃如果会话在一定时间内没有收到心跳,ZooKeeper将认为会话超时,并释放该会话创建的所有临时节点。
心跳维持连接客户端周期性地向ZooKeeper发送心跳以保持会话活跃。
状态连接状态会话状态包括连接成功、连接超时、会话关闭等。
5. ZooKeeper的领导者选举
知识点描述示例
领导者选举集群中的主节点在ZooKeeper集群中,领导者(Leader)负责处理所有事务请求,并与跟随者(Follower)和观察者(Observer)进行通信。
选举过程自动进行当集群中的领导者崩溃或失去连接时,集群会自动进行领导者选举。
投票机制基于ZXID领导者选举过程中,节点通过投票来决定新的领导者,投票通常基于ZXID(事务ID)来确保一致性。
法定人数多数投票选举新的领导者需要集群中多数节点的投票。
容错能力高可用性领导者选举机制确保了ZooKeeper集群的高可用性,即使部分节点失效,集群也能继续工作。
6. ZooKeeper的持久性和临时性节点
知识点描述示例
持久性节点长期存储创建后,除非被客户端显式删除,否则持久性节点会一直存在于ZooKeeper中。
临时性节点会话关联临时性节点与创建它的会话生命周期绑定,会话结束时,临时节点被自动删除。
顺序节点自增序号可以创建带有顺序的持久性或临时性节点,ZooKeeper会在节点名后添加一个自增的序列号。
持久性顺序节点持久且有序结合了持久性和顺序性的特点,适用于需要持久化存储且需要顺序标识的场景。
应用场景任务调度、分布式锁持久性节点常用于存储长时间不变的信息,而临时性节点常用于实现轻量级的分布式锁或任务调度。
7. ZooKeeper的ACL(访问控制列表)
知识点描述示例
ACL定义访问控制机制ACL是ZooKeeper提供的访问控制机制,用于控制对ZNode的访问权限。
权限类型认证与授权包括对ZNode的读、写、创建、删除等操作的权限。
认证方案基于角色的访问控制可以为不同的角色或用户设置不同的权限,实现细粒度的访问控制。
权限设置与ZNode关联权限是与特定的ZNode关联的,可以为每个ZNode设置不同的ACL。
安全性增强系统安全性通过ACL可以增强ZooKeeper集群的安全性,防止未授权访问。
 8.ZooKeeper的集群模式
知识点描述示例
集群组成多个ZooKeeper服务器一个ZooKeeper集群由多个ZooKeeper服务器组成,提供高可用性和可扩展性。
领导者(Leader)事务处理Leader服务器负责处理所有事务请求,是集群中的主要工作节点。
跟随者(Follower)数据复制Follower服务器从Leader复制数据,处理非事务请求,参与领导者选举。
观察者(Observer)读请求处理Observer服务器不参与投票,只用于处理客户端的读请求,提高集群的读取性能。
容错机制自动故障转移当Leader服务器出现故障时,集群会自动进行领导者选举,实现故障转移。
9. ZooKeeper的典型应用场景
知识点描述示例
分布式锁协调分布式系统中的进程使用ZooKeeper的临时性节点和监听器实现分布式锁,确保资源在分布式环境中的互斥访问。
配置管理集中管理配置信息将系统配置存储在ZooKeeper的ZNode中,便于分布式系统中的各个节点获取和监听配置变化。
集群管理管理集群节点状态利用ZooKeeper来监控和管理集群中的节点状态,如节点的加入、退出和故障检测。
队列管理分布式队列使用ZooKeeper的顺序节点和监听器实现分布式队列,用于任务调度和负载均衡。
发布/订阅事件通知客户端可以订阅ZooKeeper上的主题,当主题发生变化时,ZooKeeper可以通知所有订阅的客户端。
 10.ZooKeeper的会话超时和重连机制
序号知识点描述示例
1会话超时客户端连接丢失当客户端与ZooKeeper服务器的连接中断,如果在超时时间内未能重新连接,则会话将被认为超时。
2超时时间可配置会话超时时间是可以配置的,通常根据应用需求和网络状况来设置。
3临时节点自动删除如果会话超时,客户端创建的所有临时节点将被ZooKeeper自动删除。
4重连机制客户端尝试重新连接客户端在检测到连接丢失后,会尝试重连到ZooKeeper集群中的其他服务器。
5监听器重新注册在重连成功后,客户端需要重新注册之前设置的监听器,以继续监控ZNode的变化。
11. ZooKeeper的故障恢复机制
知识点描述示例
故障检测心跳机制ZooKeeper使用心跳机制来检测服务器和客户端的连接状态,如果心跳超时则认为连接断开。
领导者选举自动进行当领导者出现故障时,集群会自动触发领导者选举过程以选出新的领导者。
数据同步确保一致性跟随者和观察者节点会与领导者节点进行数据同步,以保证数据的一致性。
持久化存储保证数据不丢失ZooKeeper的事务日志和快照用于数据的持久化存储,确保在故障恢复后数据不会丢失。
快速恢复减少停机时间通过优化故障恢复流程,ZooKeeper可以快速从故障中恢复,减少系统的停机时间。
 12.ZooKeeper的事务处理
知识点描述示例
事务定义操作序列事务是一组不可分割的ZooKeeper操作序列,要么全部成功,要么全部失败。
事务IDZXID每个事务都有一个唯一的事务ID(ZXID),用于标识事务操作。
写操作更新ZNode写操作包括创建节点、删除节点、设置节点数据等。
原子性事务操作的原子性事务保证了操作的原子性,要么所有操作都被执行,要么都不执行。
事务日志持久化事务信息事务信息会被记录在事务日志中,确保事务的持久性和可靠性。
13. ZooKeeper的Watcher事件和状态
知识点描述示例
事件类型多种事件Watcher可以监听包括节点变更、子节点列表变更、连接状态变更等多种事件。
事件触发异步通知当Watcher监听的事件被触发时,ZooKeeper会异步地通知客户端。
状态变化连接状态Watcher可以监听客户端与ZooKeeper服务器之间的连接状态,如连接丢失或重新连接。
一次性触发后移除Watcher在触发一次后会被自动移除,需要重新设置以继续监听。
应用实时响应通过Watcher机制,客户端可以实时响应ZooKeeper中的变化,如节点数据更新或子节点添加。
14. ZooKeeper的四字节数字表示
知识点描述示例
四字节数字计数方式ZooKeeper使用四字节数字来表示节点版本号、事务ID等,范围从1到2^31-1。
计数器递增每个事务后,相关的计数器(如ZXID的计数器)递增,确保每个事务ID唯一。
持久性持久化四字节数字的持久化确保了在ZooKeeper重启后,计数器不会丢失。
版本号节点版本控制每个ZNode都有版本号,包括节点版本和子节点版本,用于冲突解决和缓存一致性。
应用事务一致性四字节数字在ZooKeeper的内部事务处理中起到关键作用,确保事务的顺序和一致性。
 15.ZooKeeper的Chroot特性
知识点描述示例
Chroot特性命名空间隔离Chroot允许在ZooKeeper实例中创建一个命名空间,用于隔离不同用户或应用的数据。
使用场景多租户支持通过Chroot,可以在单个ZooKeeper实例上运行多个虚拟ZooKeeper服务。
语法路径指定使用Chroot时,通过在ZooKeeper的连接字符串后面添加一个斜杠和特定路径来指定命名空间。
限制性能影响Chroot特性可能会对ZooKeeper的性能产生一定影响,尤其是在大量的watcher和频繁的节点操作时。
应用数据隔离适用于需要严格数据隔离和安全性要求的场景,如不同团队或项目之间的数据隔离。
16.ZooKeeper的JMX(Java Management Extensions)管理 
知识点描述示例
JMX定义管理接口JMX是Java平台内建的一套管理接口,用于监控和管理Java应用程序。
MBeans管理豆MBeans是JMX的组件,代表可以被监控和管理的资源,如内存使用、线程状态等。
连接使用JMX连接ZooKeeper提供了JMX连接,允许管理员远程监控和操作ZooKeeper实例。
监控实时数据通过JMX可以实时监控ZooKeeper的运行状态,包括客户端连接数、请求数、数据节点状态等。
管理动态调整JMX允许管理员在运行时动态地调整ZooKeeper的配置,如更改日志级别、重启服务等。
17. ZooKeeper的Quorum Peer通信
知识点描述示例
Quorum Peer集群节点在ZooKeeper中,每个服务器节点被称为一个Quorum Peer,它们组成一个领导者和多个跟随者的集群。
通信机制TCP/IP协议Quorum Peers之间的通信基于TCP/IP协议,用于数据同步和领导者选举。
领导者选举集群协调当集群中的领导者崩溃时,Quorum Peers会进行领导者选举以选出新的领导者。
消息传递心跳和提案Quorum Peers通过发送心跳消息来维持连接,并使用提案消息来提交事务。
持久化事务日志每个Quorum Peer都会持久化事务日志,确保在故障恢复后数据的一致性。
18. ZooKeeper的Follower和Observer角色
知识点描述示例
Follower角色数据复制Follower节点接收来自Leader的更新,并将这些更新应用到本地数据库。
Observer角色读请求Observer节点不参与投票,主要处理客户端的读取请求,提高读取吞吐量。
角色转换动态变化在ZooKeeper集群中,Follower可以在需要时被配置为Observer,反之亦然。
数据同步保持一致Follower和Observer都会从Leader同步数据,以保证集群中数据的一致性。
应用场景高可用与扩展性Observer用于提高集群的读取性能,而不增加投票过程的开销,适用于读多写少的场景。
19. ZooKeeper Administrator(ZK Admin)命令行工具
知识点描述示例
ZK Admin命令行工具ZK Admin是ZooKeeper提供的命令行工具,用于管理ZooKeeper集群。
功能集群管理可以执行如查看集群状态、查看服务器统计信息、触发领导者选举等操作。
使用命令行界面通过命令行界面,输入特定的命令来执行管理任务。
参数命令选项提供多种参数和选项,允许管理员根据需要定制操作。
应用场景集群运维常用于ZooKeeper的日常运维,如配置更改、状态监控和故障排查。
20.ZooKeeper的ZooInspector可视化工具
知识点描述示例
ZooInspector可视化工具ZooInspector是一个用于可视化ZooKeeper数据树的Java应用程序。
功能数据浏览允许用户浏览和管理ZooKeeper服务中的ZNode数据。
用户界面图形界面提供图形用户界面,使得操作ZooKeeper的数据更加直观和方便。
特点实时更新可以实时显示ZooKeeper中的更改,包括节点的创建、删除和数据变更。
应用场景数据管理和调试适用于开发和测试阶段,帮助开发者更好地理解和管理ZooKeeper中的数据结构。

Windows系统可以使用zktool工具,需要jdk1.8以上。

 
21.Spring Boot整合ZooKeeper实现分布式锁

在Spring Boot中整合ZooKeeper实现分布式锁,通常需要以下步骤:

  1. 添加ZooKeeper依赖:在项目的pom.xml文件中添加ZooKeeper客户端库的依赖。

  2. 配置ZooKeeper连接:在application.propertiesapplication.yml中配置ZooKeeper的连接字符串。

  3. 创建分布式锁的接口:定义一个分布式锁的接口,包含加锁和释放锁的方法。

  4. 实现分布式锁:使用ZooKeeper的客户端库实现分布式锁的逻辑。

  5. 使用分布式锁:在需要同步的代码块中使用分布式锁。

下面是一个简单的代码示例:

pom.xml 添加ZooKeeper依赖:

<dependencies><!-- ZooKeeper客户端 --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.7.0</version></dependency><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.7.0</version></dependency>
</dependencies>

application.yml 配置ZooKeeper连接:

spring:zookeeper:host: localhost:2181 # ZooKeeper服务器地址

 分布式锁接口和实现

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.util.concurrent.CountDownLatch;@Component
public class DistributedLock {@Value("${spring.zookeeper.host}")private String zkHost;private ZooKeeper zkClient;private static final String LOCK_PATH = "/distributed_lock";public void init() throws Exception {// 连接ZooKeeperCountDownLatch countDownLatch = new CountDownLatch(1);zkClient = new ZooKeeper(zkHost, 5000, (watchedEvent) -> {if (watchedEvent.getState() == Watcher.Event.KeeperState.SyncConnected) {countDownLatch.countDown();}});countDownLatch.await();}public boolean tryLock(String lockName) throws Exception {String lockNode = zkClient.create(LOCK_PATH + "/" + lockName,"".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);// 检查是否是最小序号的节点,即获取锁Stat stat = zkClient.exists(lockNode, false);if (stat != null) {long currentSequence = Long.parseLong(lockNode.substring(lockNode.lastIndexOf('-') + 1));while (true) {List<String> children = zkClient.getChildren(LOCK_PATH, false);long minSequence = Long.MAX_VALUE;for (String node : children) {long sequence = Long.parseLong(node.substring(node.lastIndexOf('-') + 1));if (sequence < minSequence) {minSequence = sequence;}}if (currentSequence == minSequence) {// 成功获得锁return true;}Thread.sleep(100);}} else {// 创建节点失败return false;}}public void unlock(String lockNode) throws Exception {zkClient.delete(lockNode, -1);}
}

使用分布式锁

@Service
public class SomeService {private final DistributedLock distributedLock;public SomeService(DistributedLock distributedLock) {this.distributedLock = distributedLock;}public void someMethod() {try {if (distributedLock.tryLock("myLock")) {// 执行业务逻辑distributedLock.unlock("/path/to/lock/node");} else {// 没有获得锁,进行其他逻辑处理}} catch (Exception e) {e.printStackTrace();}}
}

请注意,这个示例只是一个比较简略的版本,实际的项目中使用,可能需要考虑更多的异常处理和资源清理。另外,分布式锁的实现可能需要根据具体的业务场景和需求进行调整。

      昨晚把大学时期总结的英语形近词从我的百度文库个人主页下载下来优化整理了一下,那时候大概总结整理了几千个英语形近词,当时是为了应付一下考研英语科目。现在准备学习英语口语,单词仍然是基础,还需要再次复习复习。过几天会把这些整理到CSDN中,哈哈哈,马上要做英语博主了!

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

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

相关文章

机器学习之基于Tensorflow(LSTM)进行多变量时间序列预测股价

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 项目简介&#xff1a;机器学习之基于TensorFlow&#xff08;LSTM&#xff09;进行多变量时间序列预测股价 一、项目…

Python量化炒股的获取数据函数—get_fundamentals_continuously()

Python量化炒股的获取数据函数—get_fundamentals_continuously() get_fundamentals()函数只能用于查询某一交易日的股票财务数据信息&#xff0c;如果要查询多个交易日的股票财务数据信息&#xff0c;就要使用get_fundamentals_continuously()函数&#xff0c;语法格式如下&a…

Django数据库创建存储及管理

一、什么是ORM Django的ORM(Object-Relational Mapping)是Django框架中一个非常重要的组件。ORM可以让开发者以面向对象的方式操作数据库,而不需要直接编写SQL语句。 具体来说,Django ORM提供了以下功能: 模型定义:开发者可以在Django应用中定义Python类来表示数据库表,这些…

tensorflow报错

参考 TensorFlow binary is optimized to use available CPU instructions in performance-critical operations._this tensorflow binary is optimized to use availab-CSDN博客 解决Python中cuBLAS插件无法注册问题_unable to register cudnn factory: attempting to re-CS…

45. UE5 RPG 使用元属性(Meta Attributes)以及使用Set by Caller修改伤害

在RPG游戏中&#xff0c;我们是不会直接修改生命值的属性&#xff0c;是因为在修改角色属性时&#xff0c;需要获取角色的属性并进行复杂的计算&#xff0c;所以&#xff0c;我们正常情况下使用元属性&#xff08;Meta Attributes&#xff09;作为计算的中间的媒。在服务器上先…

【讲解下如何解决一些常见的 Composer 错误】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Ex1-C6油气化工防爆轮式巡检机器人

Ex1系列防爆轮式巡检机器人整机采用防爆设计&#xff0c;防爆等级为Exd II CT4 Gb。机器人通过无轨3D形态导航技术&#xff0c;结合360度防爆云台和无线防爆充电桩&#xff0c;实现整套防爆标准&#xff0c;可广泛应用于石油、燃气、化工、冶金等II类爆炸环境中&#xff0c;代替…

大模型公开可用的模型检查点或 API

文章目录 公开可用的模型检查点或 APILLaMA 变体系列大语言模型的公共 API 公开可用的模型检查点或 API 众所周知&#xff0c;大模型预训练是一项对计算资源要求极高的任务。因此&#xff0c;经过预训练的公开模型检查点&#xff08;Model Checkpoint&#xff09;对于推动大语言…

IDEA 申请学生许可证

如果你有学生账号&#xff0c;并且账号是 EDU 结尾的&#xff0c;可以申请 IDEA 的学生许可证。 有效期一年&#xff0c;完全免费。 在界面上输入邮件地址&#xff0c;然后单击按钮提交。 邮件中单击链接 JetBrains 会把一个带有链接的邮件发送到你的邮箱中。 单击邮箱中的…

分类规则挖掘(三)

目录 四、贝叶斯分类方法&#xff08;一&#xff09;贝叶斯定理&#xff08;二&#xff09;朴素贝叶斯分类器&#xff08;三&#xff09;朴素贝叶斯分类方法的改进 五、其它分类方法 四、贝叶斯分类方法 贝叶斯 (Bayes) 分类方法是以贝叶斯定理为基础的一系列分类算法的总称。贝…

【C++STL详解(五)】--------list的介绍与使用

目录 前言 一、list的介绍 二、list的使用 Ⅰ.默认成员函数 1、构造函数 2、赋值重载 3、析构函数 Ⅱ、容量 1.size() Ⅲ、迭代器与遍历 1.beginend (正向迭代器) 2.rbeginrend (反向迭代器) 3.front 4.back Ⅳ、增删查改 1.push_front 2.pop_front 3.push_b…

c3 笔记7 css基本语法

相关内容&#xff1a;字体、段落、词间距、文字效果&#xff08;对齐、上下标、阴影&#xff09;、背景图、背景渐变、…… 单位pt与px的差别pt是印刷使用的字号单位&#xff0c;不管屏幕分辨率是多少&#xff0c;打印到纸上看起来都是相同的&#xff0c;lot的长度是0.01384英寸…

【STM32+HAL】SDIO+DMA模式读写SD卡

一、准备工作 有关CUBEMX的初始化配置&#xff0c;参见我的另一篇blog&#xff1a;【STM32HAL】CUBEMX初始化配置 二、所用工具 1、芯片&#xff1a; STM32F407ZGT6 2、IDE&#xff1a; MDK-Keil软件 3、库文件&#xff1a;STM32F4xxHAL库 三、实现功能 实现用SDIODMA读写S…

05_机器学习赛事_优惠券使用预测

1. 函数库导入 # import libraries necessary for this project import os, sys, pickleimport numpy as np import pandas as pdimport matplotlib.pyplot as plt import matplotlib.dates as mdatesimport seaborn as sns import datetime as dtfrom datetime import datefr…

如何删除BigKey

③第三方工具 利用第三方工具&#xff0c;如 Redis-Rdb-Tools 分析RDB快照文件&#xff0c;全面分析内存使用情况https://github.com/sripathikrishnan/redis-rdb-tools ④网络监控 自定义工具&#xff0c;监控进出Redis的网络数据&#xff0c;超出预警值时主动告警一般阿里…

拼多多新店和老店哪个好做

拼多多新店和老店哪个好做 拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金&#xff0c;不成交不扣费。是商…

34.Docker基本操作

镜像相关的命令 镜像名称分为两部分组成&#xff1a;[repository]:[tag],tag就是镜像的版本。如果tag没有指定默认就是latest,表示最新版本的镜像。 查看docker命令的帮助信息 docker --help 具体某条命令的帮助信息 docker images --help 案例一&#xff1a;从DockerHub中…

5G赋能 扬帆未来|AGV无人仓成黑科技“顶流”

AGV 近年来&#xff0c;无人化这个概念逐渐被运用到了社会中的各个行业&#xff0c;而跟物流有关的就有无人分拣机器人、无人驾驶卡车、和无人叉车&#xff0c;越来越多的新装备也开始投入到实际运用中。 仓储管理在物流管理中占据着核心地位。传统的仓储管理中存在诸多的弊端…

发卡盗u源码系统搭建ZHU

2024最新UI发卡盗U/支持多语言/更新UI界面/支持多个主流钱包去除后门板&#xff0c;最好是部署智能合约后用合约地址来授权包含转账支付页面盗U授权源码。 完美提U&#xff0c;教程包含如何提u 。功能完美。 1.Php静态 2.目录puicta 3.扩sal 4.ssl不强https

SQL数据库

一.什么是数据库 数据库&#xff1a;存储数据的仓库&#xff0c;数据是有组织的进行存储。&#xff08;database 简称DB&#xff09; 数据库管理系统&#xff1a;管理数据库的大型软禁&#xff08;DataBase Management System 简称DBMS&#xff09; SQL&#xff1a;操作关系…