Mysql InnoDB B+Tree是什么?
“mysql中常用的数据库搜索引擎InnoDB,其索引通过B+Tree的方式进行构建。”
实在想不起来B+Tree是怎么一回事了。以点带线,将涉及到的数据结构一起复习一下。
文章目录
- 数据结构定义
- 红黑树
- 定义
- 使命
- BTree
- 定义
- 使命
- B+Tree
- 定义
- InnoDB B+Tree
- 旋转与调整
- 二叉排序树
- 插入
- 删除
- 平衡二叉树
- 插入
- 删除
- 红黑树
- 插入
- 删除
- m阶BTree
- 插入
- 删除
- m 阶B+Tree
- 插入
- 删除
- 参考内容
数据结构定义
数据结构 | 定义 |
---|---|
二叉树 | 每个节点最多有两个子树 |
二叉排序树 | 又叫二叉搜索树。在二叉树的基础上,递归定义 任意子树根节点大于其左子树最大值小于右子树最小值. 左<根<右 |
平衡二叉树 | 在二叉排序树的基础上, 递归定义 任意节点 左右子树的高度差≤1. |
红黑树 | 在二叉排序树的基础上,递归定义 见下方 |
BTree | B-Tree 同一个东西。见下方 |
B+Tree | 见下方 |
如果插入的是有序序列, 二叉排序树的效率降低为O(n). 所以推出 平衡二叉树
红黑树
定义
- 左中右: 前提是一棵二叉搜索树(左<中<右)
- 根、叶黑: 根节点和叶子结点都是黑色
- 不红红: 不存在两个红色节点有直接父子关系
- 黑路同: 任意节点到所有叶子节点经过的黑色节点数相同
使命
红黑树并不是在平衡二叉树的基础上定义的。
由于平衡二叉树左右子树高度差≤1,要求过于严格。虽然查询效率较高,但插入、删除时,调整频繁, 因此引入红黑树。
由于不红红和黑路同的性质可以推断出:红黑树左右子树最长路径节点数不超过最短路径的2倍。
相对于平衡二叉树,插入、删除效率有所提升。
BTree
BTree 就是多路查找树(一个节点内可以有多个元素),每个元素都有左右子树。 2阶BTree, 退化成平衡二叉树
定义
-
有序 1. 结点元素内有序 2. 元素的左子树都小于它,右子树都大于它
-
平衡 所有的叶结点都在同一层
-
节点限制 m阶BTree
根节点至少有1个元素,2个分支
其他节点 至少有(m+1)/2个分支, (m-1)/2个元素(左右间隙肯定要比元素数多1)
所有节点元素数<m, 分支数≤m。 所有叶子节点在同一层上
使命
数据是存储在磁盘上,每次将节点读入内存,就需要一次IO操作,IO操作是比较耗时。树的高度,限制了数据的查找效率。
一次IO读取连续地址的多个字节和读取一个字节几乎没有什么差别。
通过增加节点元素数,降低树的高度 就成为了必然的选择。
一个节点可以有多个元素 每个元素左右间隙指向后续节点。将左右间隙视为左右子树。
B+Tree
定义
从BTree基础上发展而来,
- 非叶子结点直接存储索引,>左子树最大值,<=右子树最小值
- 叶结点包含全部关键字及指向相应记录的指针,非叶结点只作索引
- 所有节点元素数<m(也有地方说是<=m), 分支数≤m
- 每一个叶子节点都有指向后续叶子节点的指针
InnoDB B+Tree
对经典B+Tree进行改造,除了记录叶子节点的头部位置,后续叶子节点外, 记录了前驱节点。提升了中序遍历和范围查找效率。
旋转与调整
二叉树就是为了阐述的需要,没有实际应用的意义,不存在调整的问题。
二叉排序树
插入
与当前节点比较, 小于当前节点在左子树进行比较 大于当前节点在右子树进行比较。
最后插入到叶子节点上。
Insert 4 2 3 1
删除
通过比较查找定位到待删除的节点
叶子节点,直接删除
只有左子树或只有右子树 删除后,让子树占据其位置
左右子树都有 需要进行转化 让其中序遍历前驱节点或后继结点占据其位置,转化为删除中序遍历前驱节点或后继结点。转化为前两种情况。
演示一下删除节点50的过程
- 节点50左右子树都有,使用中序遍历定位后继节点。将节点65放到节点50的位置
- 待删除的节点只有右子树, 将右子树直接挂上
平衡二叉树
插入
通过递归进行节点比较,插入到叶子节点。 然后判定是否出现左右子树高度差>1的情况。
没有出现, 插入结束。否则根据下面四种情况进行调整
类型 | 调整方式 |
---|---|
LL | 爷爷节点顺时针旋转(右旋) |
RR | 爷爷节点逆时针旋转(左旋) |
LR | 父节点逆时针旋转,爷爷节点顺时针旋转(右旋) |
RL | 父节点顺时针旋转,爷爷节点逆时针旋转(左旋) |
所有的旋转都是绕着直接子孩子进行的旋转。 调整之后, 高度-1. 调整完成。
删除
分为两个过程
- 删除 删除方法与二叉搜索树相同
- 调整 找到层级最低(靠近叶子节点)失衡的节点C,然后确定类型和调整方式
找到C层级更深的子树A.
找到A层级更深的子树B.
AB对应上面的LL、RR、LR、RL四种情况,然后进行调整。
这里面有一种特殊情况: B不存在(A的左右子树深度一致)
如果是L型(A是左子树),进行顺时针旋转.如果是R型,进行逆时针旋转。
红黑树
插入
红黑树的插入容易违反:根叶黑和不红红的特性。
新插入的节点定义为红色
分下面几种情况进行讨论:
1. 新插入节点是根节点: 直接变黑 调整完成
2. 新插入节点的父节点是黑节点: 不需要调整
3. 新插入节点的父节点是红节点: 违反不红红的特点,参照下面的方法进行调整。
2.插入的是红色节点, 父亲是红色节点
如果叔叔是黑色,违反黑路同;
如果叔叔为红色,不能有子节点(红色违反不红红,黑色违反黑路同)
叔叔节点 | 调整方式 |
---|---|
R | 叔叔节点R->B, 父亲节点R->B,爷爷节点B->R, 从爷爷开始继续调整(不违反根叶黑、不红红就完成) |
不存在(或者为黑色节点) | 插入节点、父节点、爷爷节点 根据LL\RR\LR\RL进行旋转调整 |
变换后,设置新根节点(三个节点中)为黑色,其他2个节点为红色.
来一个插入演示。
Insert 34、23、15、10、13、14、35、36.
删除
红黑树删除容易破坏黑路同的性质。
通过节点比较 定位到要删除的节点
与二叉搜索树一样:如果左右子树都有 转化为中序遍历直接前驱或者直接后继(将节点内容用直接前驱或直接后继的值进行代替), 转化为对叶子节点或者单子树的删除。
叶子节点可能为红或者黑;
单子树只可能为黑色节点下面挂一个红色节点。
待删除节点为红色叶子节点,直接删除
待删除节点有单子树,将红色节点挂到子树上,变成黑色。
待删除节点为黑色叶子节点较为复杂:
兄弟节点颜色 | 兄弟节点有红孩 | 调整方式 |
---|---|---|
B | 有 | 待删除节点变成双黑节点 根据其类型参照下面表格进行旋转变色。 |
B | 无 | 兄弟变红, 双黑节点(可以理解为-1黑节点)上移到父节点 |
R | 无 | 兄父变色, 然后父节点绕兄弟节点旋转 双黑节点继续调整 |
双黑节点碰到红色节点 Red->Black 调整结束。
双黑碰到根节点, 直接变成黑节点 调整结束。
双黑节点碰到兄弟节点是null,调整结束。
删除节点为黑色节点,兄弟节点为黑色节点,兄弟至少有一个红孩
表格中的孩子指的是:兄弟的孩子,父节点指的是:当前节点的父节点(当然也是兄弟父节点)
变色和旋转情况如下:
兄弟 | 兄弟左孩子 | 兄弟右孩子 | 类型 | 变色与旋转 |
---|---|---|---|---|
左子树 | R | - | LL | 左孩子R->B, 兄弟节点变成父节点颜色, 父节点变黑。 然后进行旋转 |
右子树 | - | R | RR | 右孩子R->B, 兄弟节点变成父节点颜色, 父节点变黑。 然后进行旋转 |
左子树 | B(或者null) | R | LR | 右孩子变成父节点颜色, 父节点变黑。 然后进行旋转 |
右子树 | R | - | RL | 左孩子变成父节点颜色,父节点变黑。 然后进行旋转 |
删除顺序:
17 15 13 34 25 23 18 27 37 10 9 6
m阶BTree
插入
所有直接的插入都在叶子节点进行(从根节点定位到叶子节点);
1. 只有一个元素作为根节点
2. 从根部进行比较, 跳转到叶子节点后, 进行插入。
如果节点元素数=m, 需要进行分裂。 m/2位置元素上移, 以该元素作为分界点,将一个节点拆分为两个节点。然后将比较节点(m/2位置元素)移动到父节点。 继续判断父节点是否发生上溢, 继续进行调整。
m = 3
插入序列:
27 14 18 36 70 3 17 20 23 34 45 53 58 84
删除
- 定位到要删除的元素,如果发生在非叶子节点: 将中序遍历直接前驱或直接后继进行替换。 修改为删除直接前驱或直接后继节点
删除后,节点元素数>= (m-1)/2,结束.
如果<(m-1)/2,寻找左兄弟节点或者右兄弟节点进行借元素。
寻找左兄弟借元素 ,左兄弟 最大值上位, 父节点里面的父元素移动到节点左侧。
寻找右兄弟借元素 ,右兄弟 最小值上位, 父节点里面的父元素移动到节点右侧。
如果左右兄弟都不够借, 就与左兄弟或右兄弟合并。 与左兄弟合并的时候, 父节点的父元素下移到左兄弟,然后当前节点所有元素合并到左兄弟节点右侧。 此时, 如果父节点发生向下溢出,对父节点继续调整, 否则,调整结束。
m=3 最小节点数 (3-1)/2 == 1 ,不存在向下溢出的情况了, 这里使用m=5.进行演示
84 36 90 58 70 53 34 27 45 21 20 23 17
m 阶B+Tree
B+Tree所有元素都保存在叶子节点
插入都发生在叶子节点,进行分裂时, 分裂点左侧断裂, 向上copy一份中间元素。
左侧指向的索引节点小于当前索引值,右侧>=当前索引值
叶子节点有指向中序遍历后续叶子节点的指针。
插入
m = 5.
插入序列:
27 14 18 36 70 3 17 20 23 34 45 53 58 84 90
删除
删除非索引节点时,直接删除。
发生向下溢出,左右可以借的话, 进行左右借位。借位后,索引修改为借到元素,并将该元素合并过去
如果不够借,进行作用合并,注意索引的调整。 以及可能发生的父节点向下溢出。
删除序列:
53 36 34 20 58 70 20 84 14 27 45 18
参考内容
B站蓝不过海呀数据结构教学视频
旧金山大学数据结构可视化工具
相关文章:
Mysql InnoDB B+Tree是什么?
“mysql中常用的数据库搜索引擎InnoDB,其索引通过BTree的方式进行构建。” 实在想不起来BTree是怎么一回事了。以点带线,将涉及到的数据结构一起复习一下。 文章目录 数据结构定义红黑树定义使命 BTree定义使命 BTree定义 InnoDB BTree 旋转与调整二叉排序树插入删…...
C语言进阶习题【1】指针和数组(1)——一维数组
1. 数组名的意义: sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。除此之外所有的数组名都表示首元素的地址。(一维数…...
2024:成长、创作与平衡的年度全景回顾
文章目录 1.前言2.突破自我:2024年个人成长与关键突破3.创作历程:从构想到落笔,2024年的文字旅程4.生活与学业的双重奏:如何平衡博客事业与个人生活5.每一步都是前行:2024年度的挑战与收获6.总结 1.前言 回首2024年&a…...
【Linux】网络基础探索:开启你的网络之旅
🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 计算机网络背景 🦋 1-1 网络发展 二:🔥 初识协议 🦋 2-1 协议分层协议分层 vs. 软件分层 🦋 2-…...
function isBulkReadStatement, file SQLiteDatabaseTracking.cpp
一问题:Xcode16.0运行在iPhone16/ios18.0 以上发生闪退, 闪退在 YYCache–>YYKVStorage 文件内。 以上删除保以下错误: function isBulkReadStatement, file SQLiteDatabaseTracking.cpp 解决方案: 找到YYKVStorage文件中_d…...
React 中hooks之useTransition使用总结
目录 概述基本用法使用场景最佳实践注意事项 概述 什么是 useTransition? useTransition 是 React 18 引入的新 Hook,用于标记非紧急的状态更新。它允许组件在状态转换期间保持响应,通过将某些更新标记为"过渡"来推迟它们的渲染。 主要特…...
leetcode 3097. 或值至少为 K 的最短子数组 II 中等
给你一个 非负 整数数组 nums 和一个整数 k 。 如果一个数组中所有元素的按位或运算 OR 的值 至少 为 k ,那么我们称这个数组是 特别的 。 请你返回 nums 中 最短特别非空 子数组 的长度,如果特别子数组不存在,那么返回 -1 。 示例 1&…...
C# OpenCV机器视觉:特征匹配 “灵魂伴侣”
在一个阳光仿佛被施了魔法,欢快得直蹦跶的早晨,阿强像个即将踏上神秘寻宝之旅的探险家,一屁股墩在实验室那张堆满各种奇奇怪怪小玩意儿的桌前。桌上,零件、线路、半成品设备乱成一团,唯有他那宝贝电脑屏幕散发着清冷又…...
DDD - 整洁架构_解决技术设计困局
文章目录 Pre如何落地 DDD底层技术的更迭 整洁架构的设计主动适配器/北向适配器被动适配器/南向适配器 整洁架构的落地总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对象的两种设计思路…...
金融项目实战 07|Python实现接口自动化——连接数据库和数据清洗、测试报告、持续集成
目录 一、投资模块(投资接口投资业务) 二、连接数据库封装 和 清洗数据 1、连接数据库 2、数据清洗 4、调用 三、批量执行测试用例 并 生成测试报告 四、持续集成 1、代码上传gitee 2、Jenkin持续集成 一、投资模块(投资接口投资业务…...
Ceph与RAID在存储中的协同工作过程
本文将结合架构图,详细讲解Ceph与RAID如何在存储环境中相互配合,共同提供高效且可靠的存储服务。 架构概述 从上图中可以看到,Ceph的架构主要分为四个层次: 客户端和服务接口层:这一层包括客户端访问存储应用的接口…...
《重生到现代之从零开始的C++生活》—— 类和对象2
类的默认成员函数 默认成员函数就是用户没有显示实现,编译器会自动生成的成员函数,一个类会默认生成6个成员函数 构造函数 构造函数时特殊的成员函数,构造函数的初始化对象 函数名与类名相同 没有返回值 对象实例化的时候胡自动调用构造…...
MFC 使用 32位带Alpha通道的位图
最近需要做一个MFC界面上的图片,众所周知,MFC 好像只支持 bmp 格式的! 先看我的原始24位图片,RGB 三个颜色各占8位 (256色), 所以是24位。 如果放到MFC界面上,是这个很丑的效果 它是一个正方形图片,周围的白色可以看见。 解下来,进入今天的主题: 32位带 Alpha 通…...
QT:子控件VLC播放视频时,父控件无法截取鼠标事件
具体来说: 反复验证,结论正确。只要是播放区(即传递给VLC的窗口区域),就无法点击。 比如WidgetA,新建一个WidgetB,设置位置时留有一点边框。这个时候WidgetA的边框区是能收到鼠标事件的。 这…...
力扣 739. 每日温度
🔗 https://leetcode.cn/problems/daily-temperatures 题目 给定一个数组,表示每天的天气返回一个数组,index i 表示几天后比当前的温度要高,没有则为 0 思路 维护一个单调递减栈,若当前的温度比栈顶大,…...
蓝桥杯 阶乘的和(C++完整代码+详细分析)
题目描述 原题链接 阶乘的和 问题描述 给定 n 个数 Ai,问能满足 m! 为 ∑(Ai!) 的因数的最大的 m 是多少。其中 m! 表示 m 的阶乘,即 123⋯m。 输入格式 输入的第一行包含一个整数 n。 第二行包含 n 个整数,分别表示 Ai,相…...
OpenAI进军实体机器人:GPT赋能的智能未来
近年来,人工智能技术飞速发展,深刻地改变着我们的生活。而OpenAI作为人工智能领域的领军者,其最新动作更是引人注目:进军实体机器人领域!这不仅标志着人工智能技术应用场景的重大拓展,也预示着未来智能机器…...
【Python运维】用Python管理Docker容器:从`docker-py`到自动化部署的全面指南
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代软件开发和运维过程中,Docker容器化技术因其高效、轻量和可移植性而被广泛应用。Python作为一种灵活且功能强大的编程语言,通过doc…...
【机器学习实战入门项目】MNIST数字分类机器学习项目
Python 深度学习项目:手写数字识别 为了使机器更加智能,开发者们正在深入研究机器学习和深度学习技术。人类通过不断练习和重复来学习执行某项任务,从而记住如何完成这些任务。然后,大脑中的神经元会自动触发,他们能够…...
【统计信号处理基础——估计与检测理论】Vol1.Ch1 引言
文章目录 1. 信号处理中的估计2. 估计的数学问题3. 估计量性能评估习题1.11.21.31.41.5 1. 信号处理中的估计 从离散时间波形或一组数据集中提取参数的问题。我们有 N N N点数据集 { x [ 0 ] , x [ 1 ] , ⋯ , x [ N − 1 ] } \{x[0],x[1],\cdots,x[N-1]\} {x[0],x[1],⋯,x[N−…...
Linux 存储设备和 Ventoy 启动盘制作指南
一、Linux 存储设备基础知识 1. 设备路径(/dev) 设备路径是 Linux 系统中物理存储设备的唯一标识,类似设备的"身份证号"。 命名规则解析 /dev/sda: /dev:device(设备)的缩写&…...
第14章:Python TDD应对货币类开发变化(一)
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
网络协议入门:OSI模型与TCP/IP栈
在网络通信的世界中,数据从一台设备传输到另一台设备,需要遵循一系列规则,这些规则统称为网络协议。OSI模型和TCP/IP协议栈作为网络通信的基石,帮助我们理解数据传输的全流程。这篇文章将深入解析它们的结构、功能和实际应用&…...
pthread_exit函数
pthread_exit 是 POSIX 线程库(pthread)中的一个函数,用于显式地终止调用线程。与 exit 函数不同,pthread_exit 仅影响调用它的线程,而不是整个进程。使用 pthread_exit 可以确保线程在退出时能够正确地释放线程相关的…...
从语音识别到图像识别:AI如何“看”和“听”
引言 随着人工智能技术的不断进步,AI的“听”和“看”能力正变得越来越强大。从语音识别到图像识别,AI不仅能够通过声音与我们互动,还能通过视觉理解和分析周围的世界。这些技术不仅改变了我们与机器的交互方式,也在各行各业中带…...
UML-对象图(Object Diagram)
定义 在UML(统一建模语言)中,对象图用于描述在某一时刻,一组对象以及它们之间关系的图形。它是系统详细状态在某一时刻的快照,常用于表示复杂的类图的一个实例。关联、依赖和继承是对象图中常见的三种关系,下面将对这三种关系进行详细说明,并阐述它们之间的区别。 Pla…...
Pytorch - YOLOv11自定义资料训练
►前言 本篇将讲解目前最新推出的YOLOv11搭配Roboflow进行自定义资料标注训练流程,透过Colab上进行实作说明,使大家能够容易的了解YOLOv11的使用。 ►YOLO框架下载与导入 ►Roboflow的资料收集与标注 进行自定义资料集建置与上传 透过Roboflow工具进行…...
大模型GUI系列论文阅读 DAY2续2:《使用指令微调基础模型的多模态网页导航》
摘要 自主网页导航的进展一直受到以下因素的阻碍: 依赖于数十亿次的探索性交互(通常采用在线强化学习),依赖于特定领域的模型设计,难以利用丰富的跨领域数据进行泛化。 在本研究中,我们探讨了基于视觉-语…...
Docker 搭建mysql 连接超时问题,xxl-job启动mysql连接报错,禁用dns
1.本地连接Navicat报错信息,猜测是navicat默认连接超时导致的,后面换成idea一个插件虽然慢但连接上了 2013 - Lost connection to MySQL server at reading initial communication packet 2.启动xxl-job会报错,网上有人mysql驱动与数据库不匹…...
SSM课设-学生管理系统
【课设者】SSM课设-学生管理系统 技术栈: 后端: SpringSpringMVCMybatisMySQLJSP 前端: HtmlCssJavaScriptEasyUIAjax 功能: 学生端: 登陆 学生信息管理 个人信息管理 老师端: 多了教师信息管理 管理员端: 多了班级信息管理 多了年级信息管理 多了系统用户管理...
JavaScript笔记APIs篇03——DOM节点Bom操作本地存储正则表达式
黑马程序员视频地址:黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p78https://www.bilibili.com/video/BV1Y84y1L7Nn?…...
JS 有哪些模块化规范
一、CommonJS 规范 1. 主要应用场景 主要用于服务器端开发,尤其是 Node.js 环境。 2. 核心思想 使用 require() 函数来引入模块,使用 module.exports 或 exports 对象来导出模块中的内容。 // math.js 模块const add (a, b) > a b;const subtr…...
摘录人工智能面试笔试题汇总
一、人工智能面试问答题汇总 1、什么是人工智能? 人工智能(AI)是一种计算机科学,它增强了像人类一样工作和反应的智能机器。机器模拟人类智能行为的能力。人工智能通常用于各种应用,如决策、语音识别、感知、认知能力…...
【PCIe 总线及设备入门学习专栏 6.1 -- PCIe MCTP】
文章目录 1 什么是 MCTP?2 MCTP 消息在 PCIe 中的传输特点3 PCIe MCTP 的局限性(1) 出站(Outbound)MCTP 消息分解的限制(2) 入站(Inbound)MCTP 消息组装的限制4 MCTP 消息的实际使用流程发送端处理流程接收端处理流程5 实际使用场景例 1:管理命令传输例 2:监控数据报告例…...
RabbitMQ集群安装rabbitmq_delayed_message_exchange
1、单节点安装rabbitmq安装延迟队列 安装延迟队列rabbitmq_delayed_message_exchange可以参考这个文章: rabbitmq安装延迟队列-CSDN博客 2、集群安装rabbitmq_delayed_message_exchange 在第二个节点 join_cluster 之后,start_app 就会报错了 (CaseC…...
doris 2.1 Queries Acceleration-Hints 学习笔记
1 Hint Classification 1.1 Leading Hint:Specifies the join order according to the order provided in the leading hint. 1.2 Ordered Hint:A specific type of leading hint that specifies the join order as the original text sequence. 1.3 Distribute Hint:Speci…...
【网络协议】【http】【https】TLS解决了HTTP存在的问题-加密通信+摘要,数字签名+CA证书
【网络协议】【http】【https】TLS解决了HTTP存在的问题-加密通信摘要数字签名CA证书 ps:TLS前期发送的密码套件里面主要就是约定:密钥交换算法,签名算法,对称加密算法,摘要算法 1加密通信 一般选择非对称加密交换密钥 对称加密…...
某讯一面,感觉问Redis的难度不是很大
前不久,有位朋友去某讯面试,他说被问到了很多关于 Redis 的问题,比如为什么用 Redis 作为 MySQL 的缓存?Redis 中大量 key 集中过期怎么办?如何保证缓存和数据库数据的一致性?我将它们整理出来,…...
【json_object】mysql中json_object函数过长,显示不全
问题:json只显示部分 解决: SET GLOBAL group_concat_max_len 1000000; -- 设置为1MB,根据需要调整如果当前在navicat上修改,只有效本次连接和后续会话,重新连接还是会恢复默认值1024 在my.ini配置文件中新增或者修…...
【KOA框架】koa框架基础入门
koa是express的一层封装,语法比express更加简洁。所以有必要了解下koa的相关开发方法。 代码实现 package.json {"name": "koapp","version": "1.0.0","main": "index.js","scripts": {&…...
kubernetes 集群 YAML 文件详解
Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。在 Kubernetes 中,YAML 文件扮演着至关重要的角色,因为它们是用来定义资源对象(如 Pods、Deployments、Services 等)的配置文件。正确…...
【STM32G4xx的CAN驱动记录】
STM32G4xx的CAN驱动记录 CAN说明CAN的波特率计算数据测试总结 本文主要记录了基于STM32G4xx的CAN接口解析某型号雷达数据遇到的问题及规避方法,CAN总线波特率500Kbps,采样点要求80%附近。 注意CAN总线同步段的时间!!! …...
VSCode下EIDE插件开发STM32
VSCode下STM32开发环境搭建 本STM32教程使用vscode的EIDE插件的开发环境,完全免费,有管理代码文件的界面,不需要其它IDE。 视频教程见本人的 VSCodeEIDE开发STM32 安装EIDE插件 Embedded IDE 嵌入式IDE 这个插件可以帮我们管理代码文件&am…...
HTML之拜年/跨年APP(改进版)
目录: 一:目录 二:效果 三:页面分析/开发逻辑 1.页面详细分析: 2.开发逻辑: 四:完整代码(不多废话) index.html部分 app.json部分 二:效果 三:页面…...
解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
问题场景 安装Docker后,执行sudo service docker start启动Docker,提示启动成功 rootDev:~# sudo service docker start * Starting Docker: docker [ OK ]执行su…...
Chrome 132 版本新特性
Chrome 132 版本新特性 一、Chrome 132 版本浏览器更新 1. 在 iOS 上使用 Google Lens 搜索 在 Chrome 132 版本中,开始在所有平台上推出这一功能。 1.1. 更新版本: Chrome 126 在 ChromeOS、Linux、Mac、Windows 上:在 1% 的稳定版用户…...
《贪心算法:原理剖析与典型例题精解》
必刷的贪心算法典型例题! 算法竞赛(蓝桥杯)贪心算法1——数塔问题-CSDN博客 算法竞赛(蓝桥杯)贪心算法2——需要安排几位师傅加工零件-CSDN博客 算法(蓝桥杯)贪心算法3——二维数组排序与贪心算…...
CSS笔记基础篇02——浮动、标准流、定位、CSS精灵、字体图标
黑马程序员视频地址: 前端Web开发HTML5CSS3移动web视频教程https://www.bilibili.com/video/BV1kM4y127Li?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p70https://www.bilibili.com/video/BV1kM4y127Li?vd_source…...
Golang Gin系列-6:Gin 高级路由及URL参数
在本章中,我们将深入研究使用Gin框架的高级路由和URL参数。我们将介绍如何创建和使用路由组、应用中间件、提取路径参数、处理查询字符串、处理静态文件以及使用HTML模板。 路由分组 为什么要使用路由组? 使用路由组有助于保持代码结构整洁有序。当路由…...
重温STM32之环境安装
缩写 CMSIS:common microcontroller software interface standard 1,keil mdk安装 链接 Keil Product Downloads 安装好后,开始安装平台软件支持包(keil 5后不在默认支持所有的平台软件开发包,需要自行下载&#…...