- 博客(9)
- 收藏
- 关注
原创 InnoDB 页内是怎么“排队”和“加速查找”的:记录链表、页目录与那 5 个字节的 Record Header
本文深入解析了InnoDB页内记录的组织结构及其优化机制。主要内容包括:1)页内记录通过单向链表(next_record)维护逻辑顺序,配合页目录(Page Directory)实现快速定位;2)特殊记录infimum和supremum作为边界;3)heap_no管理物理分配,与逻辑顺序无关;4)页目录采用分组机制(n_owned)实现"二分+小步走"的混合查找;5)Record Header各字段协同服务于查找、插入、删除等操作。这种设计兼顾了顺序扫描和随机点查的效率需求,同时考虑了M
2025-12-15 21:49:18
749
原创 从一条记录说起:InnoDB 行记录长什么样?以及为什么会有 COMPACT / DYNAMIC 两种行格式
本文深入解析了InnoDB的行记录存储结构,重点对比了COMPACT和DYNAMIC两种行格式。主要内容包括:1)InnoDB数据存储的基本架构,记录以B+Tree组织在16KB页中;2)COMPACT行格式的四段结构:变长字段长度列表、NULL位图、记录头和真实数据;3)大字段处理机制,当列值过长时会使用溢出页存储,行内保留768B前缀(COMPACT)或仅保留引用(DYNAMIC);4)两种行格式的历史演进,DYNAMIC通过减少行内存储提高页密度。文章还提供了查看和修改行格式的SQL操作指南,帮助开发
2025-12-15 21:26:47
738
原创 Redis的序列化问题
这里我value的部分传入的是一个实体类User,可以看到,在保存到Redis中时,他会同时保存该类的字节码,但这对我们来说是冗余信息,Redis又是存在宝贵的内存空间中的,所以我们一般不会使用JSON序列化器进行序列化和反序列化,而是统一使用Strings序列化器,当要存储java对象时,我们再手动实现对象的序列化和反序列化,比如使用fastJSON等序列化工具。Redis中会把java中所有传入的值都默认当成对象处理,并执行默认的序列化方法。### 1 修改默认的key的序列化器。
2025-04-22 21:14:17
381
原创 【苍穹外卖笔记】PageHealper的使用
逻辑就是先查出Orders,之后把orderDetailList也查出来,之后拼到一块去,拼成OrderVO。首先查询到要展示的数据,放在这个Page里(应该可以看成是一个ArrayList)这里的规范是返回对象是OrderVO这个对象,里面封装了一堆信息,还有一个。这个我当时没理解深入,后面才知道是怎么个事儿。以外卖中查询历史订单为例。
2025-04-20 19:00:53
232
原创 反向代理笔记
因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。它会通过 location /api/ {} 这样的反向代理到 http://localhost:8080/admin/上来。将前半部分 http://localhost/api 替换掉,换成 http://localhost:8080/admin/后端接口地址:http://localhost:8080/admin/employee/login。
2025-03-30 11:22:56
390
原创 RunWith注解的作用
(JUnit 5)使用,以启动 Spring 上下文并注入 Bean。• 根据测试需求选择合适的运行器(如 Mockito、参数化测试)。• 集成 Spring 容器(加载 Bean、注入依赖)。(JUnit 5),导致 Spring 上下文未加载。• 使用 Mock 框架(如 Mockito)。在 Java 测试框架(如 JUnit)中,• 支持参数化测试(多组数据驱动测试)。• 在 Spring Boot 测试中,• 自定义测试逻辑(如分布式测试)。A:可以,继承 JUnit 的。
2025-03-28 09:44:23
478
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅