当前位置: 首页 > news >正文

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地址
elk9110.0.0.0.91
elk9210.0.0.0.92
elk9310.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是一个开源的分布式协调服务&#xff0c;由Apache软件基金会提供&#xff0c;主要用于解决分布式应用中的数据管理、状态同步和集群协调等问题。通过提供一个高性能、高可用的协调服务&#xff0c;帮助构建可靠的分布式系统。 Zookeeper的特点和功能…...

DiffuEraser: 一种基于扩散模型的视频修复技术

视频修复算法结合了基于流的像素传播与基于Transformer的生成方法&#xff0c;利用光流信息和相邻帧的信息来恢复纹理和对象&#xff0c;同时通过视觉Transformer完成被遮挡区域的修复。然而&#xff0c;这些方法在处理大范围遮挡时常常会遇到模糊和时序不一致的问题&#xff0…...

CentOS/Linux Python 2.7 离线安装 Requests 库解决离线安装问题。

root@mwcollector1 externalscripts]# cat /etc/os-release NAME=“Kylin Linux Advanced Server” VERSION=“V10 (Sword)” ID=“kylin” VERSION_ID=“V10” PRETTY_NAME=“Kylin Linux Advanced Server V10 (Sword)” ANSI_COLOR=“0;31” 这是我系统的版本,由于是公司内网…...

World of Warcraft [CLASSIC] Jewelcrafting Gemstone 2

World of Warcraft [CLASSIC] Jewelcrafting & Gemstone 2 珠宝加工与常用宝石列表&#xff08;紫色史诗级&#xff09;&#xff1a; World of Warcraft [CLASSIC] Jewelcrafting & Gemstone_wlk宝石属性一览表-CSDN博客...

AI刷题-最小化团建熟悉程度和

目录 问题描述 输入格式 输出格式 解题思路&#xff1a; 状态表示 状态转移 动态规划数组 预处理 实现&#xff1a; 1.初始化&#xff1a; 2.动态规划部分&#xff1a; &#xff08;1&#xff09;对于已分组状态的&#xff0c;跳过&#xff1a; &#xff08;2&…...

一文详解Filter类源码和应用

背景 在日常开发中&#xff0c;经常会有需要统一对请求做一些处理&#xff0c;常见的比如记录日志、权限安全控制、响应处理等。此时&#xff0c;ServletApi中的Filter类&#xff0c;就可以很方便的实现上述效果。 Filter类 是一个接口&#xff0c;属于 Java Servlet API 的一部…...

应用层协议 HTTP 讲解实战:从0实现HTTP 服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; HTTP 协议 &#x1f98b; 认识 URL&#x1f98b; urlencode 和 urldecode 二&#xff1a;&#x1f525; HTTP 协议请求与响应格式 &#x1f98b; HTTP 请求…...

DDD-全面理解领域驱动设计中的各种“域”

一、DDD-领域 在领域驱动设计&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;中&#xff0c;**领域&#xff08;Domain&#xff09;**指的是软件系统所要解决的特定业务问题的范围。它涵盖了业务知识、规则和逻辑&#xff0c;是开发团队与领域专家共同关注的核心…...

PHP防伪溯源一体化管理系统小程序

&#x1f50d; 防伪溯源一体化管理系统&#xff0c;品质之光&#xff0c;根源之锁 &#x1f680; 引领防伪技术革命&#xff0c;重塑品牌信任基石 我们自豪地站在防伪技术的前沿&#xff0c;为您呈现基于ThinkPHP和Uniapp精心锻造的多平台&#xff08;微信小程序、H5网页&…...

纯css实现div宽度可调整

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>纯css实现div尺寸可调整</title><style…...

C# 中使用Hash用于密码加密

通过一定的哈希算法&#xff08;典型的有MD5&#xff0c;SHA-1等&#xff09;&#xff0c;将一段较长的数据映射为较短小的数据&#xff0c;这段小数据就是大数据的哈希值。他最大的特点就是唯一性&#xff0c;一旦大数据发生了变化&#xff0c;哪怕是一个微小的变化&#xff0…...

如何建设一个企业级的数据湖

建设一个企业级的数据湖是一项复杂且系统化的工程&#xff0c;需要从需求分析、技术选型、架构设计到实施运维等多个方面进行综合规划和实施。以下是基于我搜索到的资料&#xff0c;详细阐述如何建设企业级数据湖的步骤和关键要点&#xff1a; 一、需求分析与规划 明确业务需…...

目标跟踪之sort算法(3)

这里写目录标题 1 流程1 预处理2 跟踪 2 代码 参考&#xff1a;sort代码 https://github.com/abewley/sort 1 流程 1 预处理 1.1 获取离线检测数据。1.2 实例化跟踪器。2 跟踪 2.1 轨迹处理。根据上一帧的轨迹预测当前帧的轨迹&#xff0c;剔除到当前轨迹中为空的轨迹得到当前…...

【java数据结构】HashMapOJ练习题

【java数据结构】HashMapOJ练习题 一、只出现一次的数字二 、随机链表的复制三 、宝石与石头四、坏键盘打字五、前K个高频单词 博客最后附有整篇博客的全部代码&#xff01;&#xff01;&#xff01; 一、只出现一次的数字 只出现一次的数字 思路&#xff1a; 先遍历一遍数组…...

Nginx前端后端共用一个域名如何配置

在 Nginx 中配置前端和后端共用一个域名的情况&#xff0c;通常是通过路径或子路径将请求转发到不同的服务。以下是一个示例配置&#xff0c;假设&#xff1a; 前端静态文件在 /var/www/frontend/。 后端 API 服务运行在 http://127.0.0.1:5000。 域名是 example.com&#xff…...

SpringBoot3+Vue3开发学生选课管理系统

功能介绍 分三个角色登录&#xff1a;学生登录&#xff0c;老师登录&#xff0c;教务管理员登录&#xff0c;不同用户功能不同&#xff01; 1.学生用户功能 选课记录&#xff0c;查看选课记录&#xff0c;退选。选课管理&#xff0c;进行选课。通知管理&#xff0c;查看通知消…...

Linux系统 C/C++编程基础——基于GTK+的图形用户界面编程

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天星期三了&#xff0c;距离除夕又少了一天&#xff0c;新年的钟声就快敲响了&#x1f606; 本文是有关Linux C/C编程中的基于GTK的图形用户界面编程知识点&#xff0c;后续会不断添加相关内容 ~~ 回顾:【使用make工具和Makefil…...

【Leetcode 每日一题】40. 组合总和 II

问题背景 给定一个候选人编号的集合 c a n d i d a t e s candidates candidates 和一个目标数 t a r g e t target target&#xff0c;找出 c a n d i d a t e s candidates candidates 中所有可以使数字和为 t a r g e t target target 的组合。 c a n d i d a t e s c…...

python 变量范围的定义与用法

文章目录 1. 局部变量&#xff08;Local Scope&#xff09;示例&#xff1a; 2. 嵌套函数变量&#xff08;Enclosing Scope&#xff09;示例&#xff1a;说明&#xff1a; 3. 全局变量&#xff08;Global Scope&#xff09;示例&#xff1a;说明&#xff1a; 4. 内置变量&#…...

TRTC实时对话式AI解决方案,助力人机语音交互极致体验

近年来&#xff0c;AI热度持续攀升&#xff0c;无论是融资规模还是用户热度都大幅增长。2023 年&#xff0c;中国 AI 行业融资规模达2631亿人民币&#xff0c;较2022年上升51%&#xff1b;2024年第二季度&#xff0c;全球 AI 初创企业融资规模为 240 亿美金&#xff0c;较第一季…...

Goframe项目实战:从数据库表到API接口的全链路开发指南(含避坑点)

Goframe项目实战&#xff1a;从数据库表到API接口的全链路开发指南&#xff08;含避坑点&#xff09;在当今微服务架构盛行的时代&#xff0c;Go语言因其高性能和并发优势成为后端开发的热门选择。而Goframe作为一款企业级的Go应用开发框架&#xff0c;提供了从数据库操作到API…...

Taotoken的TokenPlan套餐如何实现更经济的模型调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken的TokenPlan套餐如何实现更经济的模型调用 1. 理解TokenPlan的计费模式 在模型应用开发过程中&#xff0c;成本的可预测性…...

钱钟书《围城》第1-5章阅读笔记:一场关于人生困境的提前预演

前言 钱钟书先生的《围城》被誉为"新儒林外史"&#xff0c;是中国现代文学史上风格独特的讽刺经典。这部创作于20世纪40年代的长篇小说&#xff0c;以抗战初期为背景&#xff0c;通过主人公方鸿渐的人生轨迹&#xff0c;深刻揭示了知识分子群体的精神困境与人性弱点。…...

Burp Suite深度解析:从流量抓包到业务逻辑漏洞挖掘

1. 这不是“学个插件”——Burp Suite 是渗透测试的呼吸系统 很多人第一次听说 Burp Suite&#xff0c;是在某篇“三步拿下登录框”的速成教程里&#xff1a;装好Java、拖进浏览器代理、点几下Repeater就弹出密码明文。结果真去测一个中型SaaS后台&#xff0c;不到十分钟就卡在…...

轻量化部署,异地机房快速接入,多机房管理不用再大动干戈

随着业务拓展&#xff0c;不少企业、单位陆续建起异地分部机房、多区域节点机房。传统资产管理系统部署复杂、对接困难&#xff0c;异地机房接入成本高、周期长&#xff0c;改造繁琐&#xff0c;让很多运维团队望而却步&#xff0c;只能继续沿用分散人工管理&#xff0c;资产混…...

Mysql:事务管理(中)

在前面的章节中&#xff0c;我们提到了 MVCC&#xff08;多版本并发控制&#xff09;&#xff0c;它巧妙地通过“版本快照”解决了“读-写”冲突&#xff0c;实现了非阻塞读。但如果两个事务同时执行 UPDATE 操作修改同一行数据&#xff0c;即 写-写&#xff08;Write-Write&am…...

手把手教你用Mind+和Blynk,让手机轻松遥控掌控板(含自建服务器避坑指南)

从零搭建物联网控制平台&#xff1a;Mind与Blynk深度整合实战 当你第一次尝试用手机控制硬件设备时&#xff0c;那种"隔空取物"的奇妙感总会让人兴奋不已。想象一下&#xff0c;躺在沙发上就能调节书桌上的智能台灯亮度&#xff0c;或者在外出时随时查看家中的温湿度…...

企业云盘签章技术方案:从数字签名原理到工程落地

背景 电子签章在企业云盘中的落地&#xff0c;不只是一个"上传盖章图片"的功能实现。本质上&#xff0c;它是一套涉及数字签名、PKI基础设施、文档完整性校验的综合性技术方案。本文从技术选型角度&#xff0c;说清楚企业云盘内置签章需要解决哪些问题、主流实现方案…...

DeepSeek代码风格检查避坑指南(内部审计报告首次披露:37个被忽略的合规红线)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek代码风格检查的合规性本质与审计背景 DeepSeek代码风格检查并非单纯的技术偏好约束&#xff0c;而是嵌入研发治理链条中的合规性控制节点。其本质是将编程实践与组织级安全策略、行业监管要求&…...

3分钟告别英文恐惧:Android Studio中文界面轻松切换指南

3分钟告别英文恐惧&#xff1a;Android Studio中文界面轻松切换指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 你是否曾经因…...