Mysql 中的 B+树 和 B 树在进行数据增删改查后的结构调整过程是怎样的?
B+ 树的增、删、改、查数据的调整过程
在 MySQL 中,B+ 树 是一种广泛用于存储引擎(如 InnoDB)中的索引结构。B+ 树的结构使得它非常适合于处理大量数据的插入、删除和查询等操作。B+ 树是一种自平衡的树数据结构,其中所有的值都存储在叶子节点中,内部节点则只存储索引信息。
1. 查询操作(查)
查询是 B+ 树最常见的操作。B+ 树查询通过以下几个步骤完成:
- 从根节点开始查找:查询从根节点开始,逐层向下寻找,直到叶子节点。
- 通过比较键值:每个节点(非叶子节点)都包含多个键值,查询时通过与键值的比较,决定进入哪个子树,直到进入叶子节点。
- 叶子节点存储数据:叶子节点存储了实际的数据记录,查询到叶子节点后,可以直接找到对应的记录。
B+树查询的特点:
- B+树是一个有序树,叶子节点按照顺序链接在一起,因此可以进行高效的范围查询(例如
BETWEEN
或LIKE
)。 - 查询过程的复杂度是 O(log n),因为 B+树是一棵平衡树,每次查询都能减少一半的搜索范围。
2. 插入操作(增)
在 B+树中插入数据时,过程相对复杂,可能会触发节点的分裂,甚至导致树的高度增加。插入过程的基本步骤如下:
-
查找插入位置:首先,按照与查询操作相同的方式,找到插入数据的叶子节点。
-
插入数据到叶子节点:如果该叶子节点还有空间容纳新插入的数据,就直接插入。叶子节点通常按顺序存储数据,所以新数据会插入到正确的位置。
-
叶子节点溢出:如果叶子节点满了(超过了预设的容量),就需要进行分裂。分裂过程如下:
- 将叶子节点的中间数据值上升到父节点。
- 将叶子节点一分为二,左侧包含较小的一半数据,右侧包含较大的一半数据。
- 如果父节点也满了,会继续分裂父节点。
- 如果父节点已经满了,需要递归地分裂父节点,直到找到不满的父节点或者分裂到根节点。若根节点分裂,则会增加树的高度。
-
树的高度可能增加:在插入过程中,若分裂操作一直向上传播到根节点,根节点分裂时树的高度会增加。此时,B+树的根节点会变成一个新的内部节点,树的高度会增加 1。
插入总结:
- 插入时从根节点开始,找到叶子节点插入数据。
- 如果叶子节点已满,进行分裂,可能会引起父节点的分裂,甚至根节点的分裂,最终可能导致树的高度增加。
- 插入操作的平均时间复杂度为 O(log n)。
3. 删除操作(删)
删除数据时,B+树也需要处理节点的合并和重新平衡。删除的过程如下:
-
查找要删除的数据:首先根据查询操作,找到需要删除的数据所在的叶子节点。
-
删除数据:如果要删除的数据存在于叶子节点且该叶子节点的剩余空间大于最小要求,则直接删除该数据。
-
节点合并或借位:
- 如果删除数据后,叶子节点的键值数量少于最小要求(通常是
⌈m/2⌉
,其中m
为节点的最大容量),则会尝试与相邻的兄弟节点合并。 - 如果兄弟节点也无法合并,就会将父节点中相应的索引键值下移,进行“借位”操作,从而确保叶子节点保持平衡。
- 合并或借位的操作会沿着树的路径向上进行,直到合适的位置或者根节点。此时如果根节点被合并,树的高度会减少。
- 如果删除数据后,叶子节点的键值数量少于最小要求(通常是
-
树的高度可能减少:当根节点的子树被合并后,如果根节点的子树数目减少了,B+树的高度会减少。
删除总结:
- 删除过程类似于插入过程,首先找到叶子节点,并删除数据。
- 如果叶子节点的数据不足以满足最小要求,B+树会通过合并或借位操作重新平衡。
- 删除操作的平均时间复杂度为 O(log n)。
4. 更新操作(改)
更新操作包括删除和插入两个步骤。对于 B+树中的更新操作,通常涉及以下过程:
- 查找要更新的记录:首先查找要更新的记录。
- 删除旧数据:然后删除旧的数据(这会触发删除过程)。
- 插入新数据:最后插入更新后的数据(这会触发插入过程)。
由于 B+树的插入和删除本身就会触发节点的分裂和合并,因此更新操作的过程也是通过插入和删除来调整树的结构。
更新总结:
- 更新操作本质上是先删除旧数据,再插入新数据。
- 删除和插入过程可能引起节点的分裂和合并,因此更新操作可能导致树的重新平衡。
总结:B+树增删改查的调整过程
- 查询(查):从根节点开始,逐层查找,直到叶子节点,时间复杂度为 O(log n)。
- 插入(增):查找插入位置,如果叶子节点满了,进行分裂,分裂可能导致父节点分裂,甚至增加树的高度,时间复杂度为 O(log n)。
- 删除(删):删除数据后,如果叶子节点的数据量小于最小要求,则进行合并或借位,可能导致树的高度减少,时间复杂度为 O(log n)。
- 更新(改):更新数据等价于删除旧数据并插入新数据,包含插入和删除的调整过程。
B+树的调整过程,尤其是插入和删除操作,会引起节点的分裂和合并,通过这些机制,B+树能够保持平衡,并确保操作的效率。
B 树的增、删、改、查数据的调整过程
在 B树 中,增、删、改、查数据时的调整过程与 B+树 有相似之处,但也有一些关键的区别。B树和B+树的主要区别在于 B树的内部节点也存储数据,而 B+树的内部节点只存储索引。以下是关于 B树 的增、删、改、查操作的详细调整过程。
1. 查询操作(查)
查询操作在 B树中的基本过程如下:
- 从根节点开始查找:与 B+树类似,B树在进行查询时,从根节点开始,逐层比较,判断应该进入哪个子节点,直到最终找到目标数据或者确定数据不存在。
- 节点结构:B树的每个节点都存储键值,并且每个节点内可能有多个子节点。查询时会与节点内的键值进行比较,并选择合适的子节点继续查找。每个节点的键值都是有序的,查找效率很高。
- 查询过程:
- 从根节点开始。
- 根据查询的键值,比较该键值与当前节点内的键值,并决定向左、右子树或者中间子树递归查找。
- 直到找到叶子节点,叶子节点包含实际数据(数据存储在叶子节点和内部节点中)。
B树的查询操作是非常高效的,其时间复杂度是 O(log n),这与树的高度成正比。
2. 插入操作(增)
在 B树中插入数据时,主要有以下几个步骤:
- 查找插入位置:
- 插入操作首先会根据查询过程查找插入数据的正确位置。找到该位置之后,数据将被插入到目标节点的适当位置。由于 B 树的节点是有序的,插入的数据会保持该节点内的键值有序。
- 插入到节点:
- 如果目标节点内有足够的空间容纳新数据(即节点的键数未达到最大值),则直接将数据插入该节点。
- 节点溢出:
- 如果插入数据后,节点的键值数量超出了该节点的最大容量(一般是
m
个键),则会触发 节点分裂。 - 分裂过程如下:
- 将节点内的键值分成两部分,左侧的部分保留在原节点,右侧的部分会移动到新节点。
- 然后,中间的键值会被提升到父节点中。
- 如果父节点也因提升的键值而超出容量,会继续进行 递归分裂,直到找到一个父节点不满的位置。如果分裂一直向上传播到根节点,根节点也会分裂,从而 增加树的高度。
- 如果插入数据后,节点的键值数量超出了该节点的最大容量(一般是
- 树的高度增加:
- 当根节点分裂时,B树的高度会增加 1,新的根节点会包含一个新的子节点。
总结:
- 插入操作首先查找插入位置,然后插入数据。如果节点满了,进行节点分裂,可能会向上递归分裂父节点,最终可能增加树的高度。
- 插入操作的时间复杂度为 O(log n)。
3. 删除操作(删)
在 B树中删除数据时,也需要保证树的平衡性。删除的过程如下:
- 查找要删除的数据:
- 首先,根据查询操作找到要删除的目标数据的位置。
- 直接删除数据:
- 如果目标数据在叶子节点,并且删除后节点的键数依然满足最小要求(例如,不少于
⌈m/2⌉
个键),则直接删除该数据。
- 如果目标数据在叶子节点,并且删除后节点的键数依然满足最小要求(例如,不少于
- 节点不足情况:
- 如果删除数据后,节点内的键数少于最小要求,则需要 合并 或 借位 来恢复平衡。
- 借位:如果相邻的兄弟节点有足够的键值,可以借一个键值过来填补当前节点。
- 合并:如果相邻的兄弟节点无法借位,当前节点与相邻的兄弟节点会合并。合并时,父节点中与当前节点相关的键值也会被删除,可能会导致父节点的键数不足。
- 父节点调整:
- 如果父节点因为删除键值而导致其键数也不足,需要对父节点进行借位或合并操作。这个调整过程会递归向上进行,直到根节点。
- 树的高度减少:
- 如果根节点的子节点减少到 1(即合并后只剩一个子节点),则根节点被删除,树的高度会减少 1。
总结:
- 删除操作可能会触发节点合并或借位,可能会递归影响父节点,最终减少树的高度。
- 删除操作的时间复杂度为 O(log n)。
4. 更新操作(改)
B树中的更新操作本质上是 删除旧数据并插入新数据 的组合过程。步骤如下:
- 查找更新位置:
- 首先,使用查询操作找到要更新的数据的当前位置。
- 删除旧数据:
- 然后,按照删除操作删除旧的数据。如果删除后节点不足,需要进行节点合并或借位的调整。
- 插入新数据:
- 最后,插入新的数据。插入操作会引发节点分裂(如果节点满了),并可能导致树的高度增加。
总结:
- 更新操作等价于删除旧数据并插入新数据,可能引发节点的分裂、合并或借位操作,最终影响树的结构。
总结:B树增、删、改、查的调整过程
- 查询(查):从根节点开始查找,逐层向下查找直到叶子节点,时间复杂度为 O(log n)。
- 插入(增):查找插入位置并插入数据,若节点满了,则进行分裂,分裂可能会递归到父节点,最终可能增加树的高度。时间复杂度为 O(log n)。
- 删除(删):删除数据并进行节点合并或借位,可能会递归影响父节点,最终减少树的高度。时间复杂度为 O(log n)。
- 更新(改):更新操作本质上是删除并插入数据,可能引发节点分裂或合并。时间复杂度为 O(log n)。
B树的自平衡机制保证了操作的效率,因此 B树非常适合高效存储和检索大规模数据。
相关文章:
Mysql 中的 B+树 和 B 树在进行数据增删改查后的结构调整过程是怎样的?
B 树的增、删、改、查数据的调整过程 在 MySQL 中,B 树 是一种广泛用于存储引擎(如 InnoDB)中的索引结构。B 树的结构使得它非常适合于处理大量数据的插入、删除和查询等操作。B 树是一种自平衡的树数据结构,其中所有的值都存储在…...
在Rust生态中探索高性能HTTP服务器:Hyperlane初体验
在Rust生态中探索高性能HTTP服务器:Hyperlane初体验 最近在调研Rust的HTTP服务器方案时,发现了一个有趣的新项目——Hyperlane。这个轻量级库宣称在保持简洁API的同时,性能表现可圈可点。作为Rust生态的长期观察者,我决定深入体验…...
AI医疗诊疗系统设计方案
AI医疗诊疗系统设计方案 1. 项目概述 1.1 项目背景 随着人工智能技术的快速发展,将AI技术应用于医疗诊疗领域已成为提升医疗服务效率和质量的重要途径。本系统旨在通过AI技术辅助医生进行诊疗服务,提供智能化的医疗决策支持。 1.2 项目目标 提供全面…...
k8s的StorageClass存储类和pv、pvc、provisioner、物理存储的链路
k8s的StorageClass存储类和pv、pvc、provisioner、物理存储的链路 StorageClass能自动创建pv 在控制器中,直接声明storageClassName,不仅能自动创建pvc,也能自动创建pv stoageclass来自于provisioner,provisioner来自于pod&#x…...
【移动编程技术】作业1 中国现代信息科技发展史、Android 系统概述与程序结构 作业解析
单选题(共 20 题,每题 5 分,满分 100 分) (单选题) 1946 年第一台计算机问世,计算机的发展经历了 4 个时代,它们是()。 选项: A. 模拟计算机、数字计算机、混合计算机、智…...
SQL Server数据库异常-[SqlException (0x80131904): 执行超时已过期] 操作超时问题及数据库日志已满的解决方案
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,获得2024年博客之星荣誉证书,高级开发工程师,数学专业,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开发技术,…...
使用ollama部署本地大模型(没有GPU也可以),实现IDEA和VS Code的git commit自动生成
详情 问豆包,提示词如下:收集下ollama相关信息,包括但不限于:官网地址/GitHub地址/文档地址 官网地址 https://ollama.com/ GitHub 地址 https://github.com/ollama/ollama 文档地址 https://github.com/ollama/ollama/blo…...
线程同步与互斥(上)
上一篇:线程概念与控制https://blog.csdn.net/Small_entreprene/article/details/146704881?sharetypeblogdetail&sharerId146704881&sharereferPC&sharesourceSmall_entreprene&sharefrommp_from_link我们学习了线程的控制及其相关概念之后&#…...
ngx_test_full_name
定义在 src\core\ngx_file.c static ngx_int_t ngx_test_full_name(ngx_str_t *name) { #if (NGX_WIN32)u_char c0, c1;c0 name->data[0];if (name->len < 2) {if (c0 /) {return 2;}return NGX_DECLINED;}c1 name->data[1];if (c1 :) {c0 | 0x20;if ((c0 &…...
R 列表:深入解析及其在数据分析中的应用
R 列表:深入解析及其在数据分析中的应用 引言 在R语言中,列表(List)是一种非常重要的数据结构,它允许将不同类型的数据项组合在一起。列表在数据分析、统计建模以及数据可视化中扮演着关键角色。本文将深入探讨R列表…...
智能体中的知识库、数据库与大模型详解
前言 在 LLM(大语言模型)驱动的智能体架构中,知识库(Knowledge Base)、数据库(Database)和大模型(LLM)是关键组成部分,它们共同决定了智能体的理解能力、决策…...
AMD Versal™ AI Core Series VCK190 Evaluation Kit
AMD Versal™ AI Core Series VCK190 Evaluation Kit AMD VCK190 是首款 Versal™ AI Core 系列评估套件,可帮助设计人员使用 AI 和 DSP 引擎开发解决方案,与当前的服务器级 CPU 相比,该引擎能够提供超过 100 倍的计算性能。Versal AI Core …...
ARM-外部中断,ADC模数转换器
根据您提供的图片,我们可以看到一个S3C2440微控制器的中断处理流程图。这个流程图展示了从中断请求源到CPU的整个中断处理过程。以下是流程图中各个部分与您提供的寄存器之间的关系: 请求源(带sub寄存器): 这些是具体的…...
【从零实现Json-Rpc框架】- 项目实现 - 客户端注册主题整合 及 rpc流程示意
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
AWS 云运维管理指南
一、总体目标 高可用性:通过跨可用区 (AZ) 和跨区域 (Region) 的架构设计,确保系统运行可靠。性能优化:优化AWS资源使用,提升应用性能。安全合规:利用AWS内置安全服务,满足行业合规要求(如GDPR、ISO 27001、等保2.0)。成本管控:通过成本优化工具,减少浪费,实现FinOp…...
vector的实现:
我们之前讲了vector的接口,我们今天来看一下vector的底层的实现: 在gitee上面我们的这个已经实现好了,我们看gitee就可以:vector的实现/vector的实现/vector的实现.h 拾亿天歌/拾亿天歌 - 码云 - 开源中国 我们在这强调比较难的…...
flutter 专题 九十六 Flutter开发之常用Widgets
上一篇,我们介绍了基础Widgets,接下来,我们看一下Flutter开发中一些比较常见的Widget。 Flutter Widget采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用widget构建你的UI。 Widget描述了他们的视图在…...
Linux环境下内存错误问题排查与修复
最近这几天服务器总是掉线,要查一下服务器的问题。可以首先查看一下计算机硬件,这是一台某鱼上拼凑的服务器: sudo lshw -shortH/W path Device Class Description system NF5270M3 (To be filled by O…...
flutter 专题 六十八 Flutter 多图片上传
使用Flutter进行应用开发时,经常会遇到选图、拍照等需求。如果要求不高,Flutter图库选择可以使用官方提供的image_picker,如果需要多选,那么可以使用multi_image_picker插件库。multi_image_picker库支持图库管理,多选…...
与总社团联合会合作啦
2025.4.2日,我社团向总社团联合会与暮光社团发起合作研究“浔川代码编辑器v2.0”。至3日,我社团收到回复: 总社团联合会: 总社团联合会已收到浔川社团官方联合会的申请,经考虑,我们同意与浔川社团官方联合…...
技巧:使用 ssh 设置隧道代理访问 github
问题 由于不可知的原因,在国内服务器不能访问 Github。但是有clone代码需求,这里介绍一种可行的方法。 解决办法 使用 ssh 设置代理,让代理服务器请求 github 解决。 第一步 ssh -fND 1080 用户名代理服务器IP这里的意思是监听 1080 端口…...
安装 TabbyAPI+Exllamav2 和 vLLM 的详细步骤
在 5090 显卡上成功安装 TabbyAPIExllamav2 和 vLLM 并非易事,经过一番摸索,我总结了以下详细步骤,希望能帮助大家少走弯路。 重要提示: 用户提供的 PyTorch 安装使用了 cu128,这并非标准 CUDA 版本。请根据你的系统实…...
Linux 进程信号
目录 信号 生活角度的信号 技术应用角度的信号 signal函数 信号概念 用kill -l命令可以察看系统定义的信号列表 信号处理常见方式概览 信号的产生 通过键盘组合键发送信号 通过系统函数向进程发信号 由软件条件产生信号 由硬件异常产生信号 信号的保存 阻塞信号 …...
【学习篇】fastapi接口定义学习
fastapi学习链接:用户指南 1. 路径参数 访问fastapi接口的默认http路径为http://127.0.0.1:8000,/items为定义的接口函数read_item的路径,/{item_id}这个用大括号括起来的参数就是路径参数,接口函数可以通过引用这个路径参数名称…...
第十二步:react
React 1、安装 1、脚手架 npm i -g create-react-app:安装react官方脚手架create-react-app 项目名称:初始化项目 2、包简介 react:react框架的核心react-dom:react视图渲染核心react-native:构建和渲染App的核心…...
MySQL简介
MySQL 是由瑞典 MySQL AB 公司开发的一款开源关系型数据库管理系统(RDBMS),现归属 Oracle 公司。以下是其核心特点及简介: 1. 基础特性 - 开源免费:遵循 GPL 协议,个人及中小型企业可免费使用,…...
AIGC时代Kubernetes企业级云原生运维实战:智能重构与深度实践指南
文章目录 一、AIGC技术栈与Kubernetes的深度融合1. 智能配置生成:从YAML到自然语言2. 动态资源优化:AI驱动的弹性伸缩 二、智能运维体系架构深度解析四维能力矩阵增强实现:关键组件升级代码示例: 三、企业级实战策略深度实践策略1…...
市场波动与交易策略优化
市场波动与交易策略优化 在交易市场中,价格波动是常态。如何有效应对市场的波动,制定合理的交易策略,成为许多交易者关注的重点。本文将探讨市场波动的影响因素,并介绍应对不同市场波动环境的策略。 一、市场波动的影响因素 市场供…...
Prolog语言的移动UI设计
Prolog语言的移动UI设计 随着移动设备的普及,用户界面的设计已成为软件开发的重要组成部分。移动UI设计不仅要注重美观,更要关注用户体验和功能的实现。使用Prolog语言进行移动UI设计,虽然相对少见,但其逻辑编程的特性为复杂的交…...
linux 命令 awk
awk 是 Linux/Unix 系统中一个强大的文本处理工具,尤其擅长处理结构化文本数据(如日志、表格数据)。它不仅是命令行工具,还是一种脚本语言,支持变量、条件、循环等编程特性 1. 基本语法 awk [选项] 模式 {动作} 文件名…...
在 PyQt 加载 UI 三种方法
目录 方法一:使用 uic 模块动态加载 (不推荐用于大型项目) 方法二:将 UI 文件编译为 Python 模块后导入 方法3:使用uic模块直接在代码中加载UI文件 注意事项 总结: 在PyQt中,加载UI文件通常…...
前端快速入门学习2-HTML
一、概述 HTML全称是Hypertext Markup Language(超文本标记语言) HTML通过一系列的 标签(也称为元素) 来定义文本、图像、链接等等。HTML标签是由尖括号包围的关键字。 标签通常成对出现,包括开始标签和结束标签(也称为双标签),内容位于这两个标签之间…...
Cortex-M系列MCU的位带操作
Cortex-M系列位带操作详解 位带(Bit-Banding)是Cortex-M3/M4等处理器提供的一种硬件特性,允许通过别名地址对内存或外设寄存器中的单个位进行原子读-改-写操作,无需禁用中断或使用互斥锁。以下是位带操作的完整指南: …...
【嵌入式-stm32电位器控制LED亮灭以及编码器控制LED亮灭】
嵌入式-stm32电位器控制LED亮暗 任务代码Key.cKey.hmain.c 实验现象 任务 本文主要介绍利用stm32f103C8T6实现电位器控制PWM的占空比大小来改变LED亮暗程度,按键实现使用定时器非阻塞式,其中一个按键切换3个LED的控制状态,另一个按键是重置当…...
抖音热点视频识别与分片处理机制解析
抖音作为日活数亿的短视频平台,其热点视频识别和分片处理机制是支撑高并发访问的核心技术。以下是抖音热点视频识别与分片的实现方案: 热点视频识别机制 1. 实时行为监控系统 用户行为聚合:监控点赞、评论、分享、完播率等指标的异常增长曲线内容特征分析:通过AI识别视频…...
添加购物车功能
业务需求: 用户提交三个字段,服务端根据提交的字段判断是菜品还是套餐,根据菜品或者套餐添加购物车表中。 代码实现 RestController Slf4j RequestMapping("/user/shoppingCart") public class ShoppingCartController {Autowired…...
蓝桥杯备赛 Day16 单调数据结构
单调栈和单调队列能够动态的维护,还需用1-2两个数组在循环时从单调栈和单调队列中记录答案 单调栈 要点 1.时刻保持内部元素具有单调性质的栈(先进后出),核心是:入栈时逐个删除所有"更差的点",一般可分为单调递减栈、单调递增栈、单调不减栈、单调不增…...
AI Agent开发大全第十九课-神经网络入门 (Tensorflow)
(前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站)。 一、从买房困惑到神经元:神经网络的灵感来源 1.1 房地产经纪人的定价难题 想象一个周末的房产中介门店,经纪人小李正面对10份不同房源的报...
Mac VM 卸载 win10 安装win7系统
卸载 找到相应直接删除(移动到废纸篓) 可参考:mac如何卸载虚拟机win 下载 win7下载地址...
torch.nn中的非线性激活使用
1、神经网络中的非线性激活 在神经网络中,**非线性激活函数(Non-linear Activation Functions)**是引入非线性变换的关键组件,使神经网络能够学习并建模复杂的非线性关系。如果没有激活函数,无论神经网络有多少层&…...
【安全】Web渗透测试(全流程)_渗透测试学习流程图
1 信息收集 1.1 域名、IP、端口 域名信息查询:信息可用于后续渗透 IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常 端口信息查询:NMap扫描,确认开放端口 发现:一共开放两个端口&…...
要素的选择与转出
1.要素选择的三种方式 当要在已有的数据中选择部分要素时,ArcMap提供了三种方式:按属性选择、位置选择及按图形选择。 1)按属性选择 通过设置 SQL查询表达式,用来选择与选择条件匹配的要素。 (1)单击主菜单下【选择】【按属性选择】,打开【按…...
C 语言命令行参数:让程序交互更灵活
一、引言 在 C 语言编程领域,命令行参数是一种极为实用的机制,它允许我们在执行程序时,从外部向程序传递数据。这一特性极大地增强了程序的灵活性和可控性,避免了在代码中对数据进行硬编码。比如在开发系统工具、脚本程序时&…...
部署nerdctl工具
nerdctl 是一个专为Containerd设计的容器管理命令行工具,旨在提供类似 Docker 的用户体验,同时支持 Containerd 的高级特性(如命名空间、compose等)。 1、下载安装 wget https://github.com/containerd/nerdctl/releases/downlo…...
SOA 架构
定义与概念:SOA 将应用程序的不同功能单元(称为服务)进行封装,并通过定义良好的接口和协议来实现这些服务之间的通信和交互。这些服务可以在不同的平台和编程语言中实现,彼此之间相互独立,能够以松散耦合的…...
K8s私有仓库拉取镜像报错解决:x509 certificate signed by unknown authority
前言 在Kubernetes环境中使用自签名证书的私有Harbor镜像仓库时,常会遇到证书验证失败的问题。本文将详细讲解如何解决这个常见的证书问题。 环境信息: Kubernetes版本:1.28.2容器运行时:containerd 1.6.20私有仓库:…...
在线考试系统带万字文档java项目java课程设计java毕业设计springboot项目
文章目录 在线考试系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档(9.9¥带走) 在线考试系统 一、项目演示 在线考试系统 二、项目介绍 1、管理员角色: 考试管理&…...
Axure RP 9 详细图文安装流程(附安装包)教程包含下载、安装、汉化、授权
文章目录 前言一、Axure RP 9介绍二、Axure RP 9 安装流程1. Axure RP 9 下载2. 启动安装程序3. 安装向导操作4.完成安装 三、Axure RP 9 汉化四、Axure RP 9授权 前言 本基础安装流程教程,将以清晰、详尽且易于遵循的步骤介绍Axure RP 9 详细图文安装流程…...
动态规划练习题④
583. 两个字符串的删除操作 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1: 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 &quo…...
多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测
多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测 目录 多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测&#…...