- 博客(23)
- 收藏
- 关注
原创 第 5 章 盛放记录的大盒子——InnoDB数据页结构
InnoDB为了不同的目的设计了许多不同类型的页。InnoDB为了不同的目的设计了不同类型的页。一个数据页可以被大致分为7个部分每个记录的头信息中都有一个属性,形成一个单链表。InnoDB会把页中的记录划分为若干个组,每个组的最后一个记录的地址偏移量作为一个槽,存放在Page Directory中。每个数据页的File Header部分都有上一个和下一个页的编号,形成一个双链表。为保证从内存中同步到磁盘的页的完整性,页的尾部会进行二次校验。
2024-08-23 16:27:21
442
原创 第 4 章 从一条记录说起——InnoDB记录存储结构
将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB 中页的大小一般为 16KB。也就是在一般情况下,一次最少从磁盘中读取 16KB 的内容到内存中,一次最少把内存中的 16KB 内容刷新到磁盘中。页是MySQL中磁盘和内存交互的基本单位,也是MySQL管理存储空间的基本单位。可以指定和修改行格式。InnoDB定义了4种行格式,分别是Compact、Redundant、Dynamic和Compressed。一个页一般是16KB,当记录太大时,会发生行溢出。
2024-08-21 00:06:55
557
原创 第 3 章 乱码的前世今生——字符集和比较规则
字符集:人们抽象出来的用来描述某个字符范围的编码规则。如何比较两个字符,最简单的方法是直接比较两个字符对应的二进制编码大小。但很多情况下并不适用。字符集指的是某个字符范围的编码规则比较规则是对某个字符集的字符比较大小的一种规则在 MySQL 中,一个字符集可以有多个比较规则。
2024-08-18 23:48:44
251
原创 第 2 章 MySQL的调控按钮——启动选项和系统变量
- SHOW VARIABLES [LIKE 匹配的模式] SHOW VARIABLES LIKE 'default_storage_engine';略。
2024-08-17 00:54:49
210
原创 编码与解码
字符集编码和解码是计算机处理文本数据的基础过程。这个过程涉及到两个主要的概念:字符集(Character Set)和字符编码(Character Encoding)。字符集(Character Set):字符集是一个定义了一组字符和它们对应的数字的系统。例如,ASCII字符集定义了128个字符,包括英文字母、数字、标点符号等,每个字符都对应一个0到127之间的数字。字符编码(Character Encoding):字符编码是一种将字符集中的字符转换为可以在计算机中存储和传输的二进制形式的方法。
2024-07-12 10:51:02
934
原创 145. 二叉树的后序遍历
二叉树的后序遍历,即按照左右根的顺序遍历二叉树,常规的解题思路有三种,分别是递归、根右左遍历后倒置和迭代法。其中,递归方式最为简单,不再赘述;根右左遍历后倒置解法是前序遍历的变体,可参考[144. 二叉树的前序遍历](https://editor.csdn.net/md/?articleId=135030790),但其本质是一种投机取巧,骗兄弟可以,别把自己也骗了。最后,迭代法是三种解法中最难的一种,也是三种遍历(前、中、后序遍历)方式中迭代解法最难的一种。
2023-12-23 11:07:18
79
1
原创 144. 二叉树的前序遍历
LeetCode 144. 二叉树的前序遍历 递归 + 迭代两种解法。使用图码结合的方式,尽可能清晰地描述迭代过程。
2023-12-16 11:57:53
81
1
原创 Spring 揭密—— 第 3 章 掌管大局的 IoC Service Provider
本章内容 IoC Service Provider的职责 运筹帷幄的秘密——IoC Service Provider如何管理对象间的依赖关系
2022-10-17 23:08:21
168
原创 Spring 揭密—— 第 2 章 IoC 的基本概念
第 2 章 IoC 的基本概念本章内容 我们的理念是:让别人为你服务 手语,呼喊,还是心有灵犀 IoC的附加值
2022-10-17 22:52:28
161
原创 SpringBoot 2.0.x 升级踩坑记录
公司近期整体架构升级,沉登负责所在项目的具体升级,过程中出现了一些意料之外的big,在这里记录下来,给自己提个醒,也作后来者的前车之鉴。升级工程目前已上线,后续有其他问题出现,会持续更新的。
2022-05-29 13:29:24
678
原创 springboot mongodb 脱敏数据的明文查询
所谓四要素是指姓名、身份证号、手机号、银行卡号四个比较重要的敏感信息,为防止用户信息泄密造成的损失,所以四要素在存储到数据库时,需要进行脱敏,即加密后落库。
2022-05-27 19:27:51
1131
原创 第 1 章 装作自己是个小白——重新认识MySQL
《MySQL是怎样运行的:从根儿上理解 MySQL》采用诙谐幽默的表达方式,对MySQL的底层运行原理进行了介绍,内容涵盖了使用MySQL的同学在求职面试和工作中常见的一些核心概念。《MySQL是怎样运行的:从根儿上理解 MySQL》总计22 章,划分为4个部分。第1部分介绍了MySQL入门的一些知识,比如MySQL的服务器程序和客户端程序有哪些、MySQL的启动选项和系统变量,以及使用的字符集等。第2部分是本书后续章节的基础,介绍了MySQL的一些基础知识,比如记录、页面、索引、表空间的结构和用法等。
2022-03-26 23:34:08
2266
原创 Spring 揭密——第 1 章 Spring 框架的由来
第 1 章 Spring 框架的由来1.1 Spring 之崛起Spring 倡导一切从实际出发,以实用的态度来选择适合当前开发场景的解决方案,因而得以快速崛起。1.2 Spring 框架概述Core:整个 Spring 框架构建在 Core 核心模块之上,它是整个框架的基础。在该模块中,Spring 为我们提供了一个 IoC 容器(IoC Container)实现,用于帮助我们以依赖注入的方式管理对象之间的依赖关系。此外,Core 核心模块中还包括框架内部使用的各种工具类。AOP:该模块提供
2022-02-14 00:21:09
335
原创 141. 环形链表
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。如果链表中存在环,则返回true。否则,返回false。
2022-01-16 16:31:27
152
原创 第13章 线程安全与锁优化
在一项工作进行期间,对象会被不停地中断和切换,对象的属性(数据)可能会在中断期间被修改和变脏,在计算机中这是再正常不过的事。所以我们必须让程序在计算机中正确无误地运行,然后再考虑如何将代码组织得更好,让程序运行得更快。要保证程序正确运行,首先需要确保并发的正确性。
2022-01-15 11:59:06
3251
原创 以 InnoDB 为例——深入理解事务隔离级别是如何实现的
隔离性保证了每个事务各自读、写的数据互相独立,不会彼此影响。在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,哪些在事务内和事务间可见的,哪些是不可见的。越高级别的隔离可以保证数据的一致性,但执行并发也就越低;同样较低级别的隔离可以执行更高的并发,但却会产生幻读、不可能重复读、脏读等各种可能的问题。虽然隔离性问题属于数据库理论的基础知识,但大多数人可能只是将它们当作数据库的某种固有属性,而忽视了不同的隔离级别的本质,实际上就是各种锁在不同加锁时间上组合而产生的结果。所以下面我将以
2022-01-08 13:53:22
849
原创 log4j日志级别小结
1. Log4j的日志级别有哪些?从源码中看,一共分为8个等级,按优先组排序依次是:OFF:最高等级的,用于关闭所有日志记录。FATAL:指出每个严重的错误事件将会导致应用程序的退出。ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行.就是显示错误信息。WARN:表明会出现潜在错误的情形,就是显示警告信息。INFO:表明消息在粗粒度级别上突出强调应用程序的运行过程,就是输出提示信息。DEBUG:指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。
2021-12-26 19:14:36
677
原创 log4j漏洞复现
12 月 10 日凌晨,Apache 开源项目 Log4j 的远程代码执行漏洞细节被公开,由于 Log4j 的广泛使用,该漏洞一旦被攻击者利用会造成严重危害。Apache Log4j 2.x <= 2.14.1 版本均回会受到影响。一、lookup 功能造成的漏洞Log4j 是一款开源 Java 日志记录工具。Log4j 2 是对 Log4j 的重大升级,此次漏洞的出现,正是由用于 Log4j 2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过
2021-12-23 00:18:46
9102
1
原创 leetcode(26) 删除有序数组中的重复项
方法一:思路与算法要删除数组中元素,却不要求改变数据的长度,那么只需要将”不同的元素“前移,由于最后输出结果时,只返回规定长度的数组元素,所以甚至不必”交换“元素,而只是简单地将”不同的元素“复制到”相同的元素“占用的位置即可。完整代码如下:class Solution { public int removeDuplicates(int[] nums) { // 左指针记录最大不重复元素的下标 int left = 0; // 右指针从头开始遍历数组
2021-08-26 21:47:09
84
原创 leetcode(25) K 个一组翻转链表
文章目录方法一:思路与算法复杂度分析总结方法一:思路与算法根据题干,很容易可以联想到,使用递归地方式,只需要翻转链表的前 K 个元素,再将第 K 个元素的 next 指针,指向链表剩余节点反转后的结果即可。既然使用递归,需要明确的是,递归的两个条件:递归条件:链表的长度不小于 K 时,递归继续;边界条件:链表的长度小于 K 时,递归结束,剩余节点不再翻转,直接拼到链表末尾。值得说明的是,这里可以使用额外的方法来实时计算链表长度,以判断是否满足递归条件,但是这样无疑多进行了一次链表遍历,增加了算
2021-08-25 22:32:56
108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人