avatar
文章
98
标签
40
分类
15
首页
时间轴
标签
分类
清单
  • 音乐
  • 照片
  • 电影
友链
关于
JIE的笔记本
首页
时间轴
标签
分类
清单
  • 音乐
  • 照片
  • 电影
友链
关于

JIE的笔记本

深度解析 JDK1.8 ConcurrentHashMap:从底层结构到并发核心原理
发表于2026年03月14日|更新于2026年03月14日|八股面试Java基础
一、JDK1.8 底层数据结构:彻底抛弃分段锁JDK1.7 的 ConcurrentHashMap 采用 Segment 分段锁,锁粒度较大;而 JDK1.8 直接摒弃该设计,采用与 HashMap1.8 同源的 数组 + 链表 + 红黑树 结构,并发控制升级为 CAS + synchronized 桶级锁。 1.1 核心结构组成12345678ConcurrentHashMap ├── Node[] table (volatile) // 哈希桶数组(主线存储) │ ├── Node (普通链表节点) │ ├── TreeBin (红黑树包装节点) │ └── ForwardingNode (扩容标记节点) ├── Node[] nextTable // 扩容时的新数组 ├── LongAdder baseCount // 基础元素计数 └── CounterCell[] counterCells // 并发计数单元格(减少竞争) 1.2 三大关键节点类型 Node 基础链表节点,存储 k...
从零起步学习 Redis 第三章 Redis 常用数据类型深层剖析
发表于2026年03月14日|更新于2026年03月14日|八股面试Redis
前言: 在前文中,我们已经初步认识了 Redis 并完成了本地环境配置,接下来将开启 Redis 核心知识点的深入学习 ——Redis 常用数据类型的底层实现。不同于表面的 API 使用,深入底层能让我们理解 Redis 的性能优化逻辑、内存占用原理,更是后端面试中 Redis 相关考点的核心。 本文将整合两章内容,一次性讲解 Redis 中 5 种常用数据类型(String、List、Hash、Set、Zset)的底层实现、编码转换、优缺点及实际应用场景,从底层结构体到项目实战,层层递进,适合零基础入门,也适合巩固核心知识点。 先掌握:Redis 数据类型的高层共性 ——redisObject在讲解具体数据类型之前,必须先明确一个核心概念:Redis 中所有键值对的 value,本质上都是一个 redisObject(简称 robj) 。 无论是 String、List 还是 Hash,Redis 都会先创建一个 redisObject 对象,通过该对象的字段,指向真正存储数据的底层结构。这也是 Redis 能灵活支持多种数据类型、实现高效内存管理的基础。 redisObje...
从零起步学习 Redis 第七章:Redis 持久化方案的实现及底层原理解析(RDB 快照与 AOF 日志)
发表于2026年03月14日|更新于2026年03月14日|八股面试Redis
引言Redis 是典型的内存型键值数据库,其高性能、高吞吐、低延迟的核心优势,源于 “将数据主要存储在内存中” 的设计。但纯内存存储存在一个致命缺陷:一旦发生断电、进程崩溃或机器重启,内存中的所有数据都会丢失,这在生产环境中是无法接受的。 为了兼顾 “内存的速度优势” 与 “数据的持久性需求”,Redis 提供了完善的持久化机制 —— 将内存中的数据定期写入磁盘,当 Redis 重启时,再从磁盘读取数据恢复到内存中。目前 Redis 主要支持两大类持久化方式:RDB(快照式持久化) 和 AOF(日志式持久化),在实际生产部署中,更常见两者组合使用,以平衡数据恢复速度与数据安全性。 一、RDB:快照式持久化(整体备份)RDB(Redis Database)是 Redis 最基础的持久化方式,核心思想是 “拍摄内存数据的完整快照”,将某一时刻的全量数据集序列化后,写入磁盘的二进制文件(默认文件名:dump.rdb),重启时通过读取该文件反序列化,恢复数据状态。 1.1 底层原理RDB 的核心是 “全量快照 + 异步执行”,为了避免持久化操作阻塞主线程(影响客户端响应),Redis ...
02第二章:DDL语句定义及常见用法示例
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
上一章我们入门了MySQL的基础概念,了解了数据库、表的核心作用,今天我们正式进入SQL语句的学习,首先要掌握的就是DDL语句——它是构建数据库结构的“基石”,学会DDL,你才能真正开始创建属于自己的数据库和表,为后续的数据存储、查询打下基础。 一、什么是DDL?新手必懂的核心定义DDL 的全称是 Data Definition Language(数据定义语言),它是SQL语言的三大分类之一(另外两类是DML数据操纵语言、DCL数据控制语言),核心作用是 定义和管理数据库对象的结构。 这里要重点强调一个新手容易踩坑的点:执行DDL语句时,MySQL会自动提交事务,也就是说,语句一旦执行就会立即生效,无法通过ROLLBACK回滚。举个例子,如果你不小心用DDL语句删除了一张表,哪怕没有手动提交,这张表也会被永久删除,数据无法恢复,所以执行DDL语句一定要格外谨慎! 常见的DDL操作主要分为5类,用表格总结更清晰,新手建议收藏: 操作类型 核心关键字 功能说明 创建 CREATE 创建数据库、数据表、视图、索引等数据库对象 修改 ALTER 修改数据库的字符集、排序规...
01第一章:初识MySQL及深入理解内部数据类型
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
引言从今天开始,我们正式启动MySQL的系统性学习之旅!本专栏将完全从零起步,循序渐进地带大家吃透MySQL的整个知识库——从最基础的概念、操作,到进阶的优化、调优,再到生产环境的实战技巧,全程干货无冗余。无论你是刚入门的后端新手,还是想巩固基础的开发从业者,都能从中有所收获。学习过程中,大家有任何疑问、困惑,或者不同的见解,都可以在评论区交流探讨,我们一起进步、一起成长,感谢大家的支持! 一、MySQL 是什么?—— 后端开发的“数据管家”在后端开发的世界里,无论你是开发简单的注册登录接口、复杂的商品管理系统,还是核心的订单交易系统,都离不开一个核心组件——数据库。而在众多数据库中,MySQL 凭借其开源免费、高效稳定、兼容性强的特点,成为了后端开发者的首选,更是Java后端开发中最常用的关系型数据库,没有之一。 ✅ 核心定义MySQL 是一种 关系型数据库管理系统(RDBMS),它基于关系模型设计,使用 SQL(结构化查询语言)作为数据的存取和管理工具。简单来说,MySQL 就像一个“智能文件柜”,它把杂乱无章的数据,按照固定的规则(表格)整理存放,并且表与表之间通过特定的关...
03第三章:DML语句定义及常见用法示例
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
上一章我们学习了DDL语句,掌握了数据库和表的“创建、修改、删除”等结构定义操作,相当于搭建好了数据存储的“容器”。今天我们进入更核心的学习——DML语句,它是操作“容器”中数据的关键,学会DML,你才能真正实现数据的增、删、改、查,解锁MySQL的核心使用场景。 一、什么是DML?新手必懂的核心定义DML 的全称是 Data Manipulation Language(数据操作语言),它与上一章的DDL(数据定义语言)核心区别在于:DDL操作的是“数据库对象的结构”,而DML操作的是“表中的数据”,不改变表的结构本身。 简单来说,DDL是“建房子”(搭建表结构),DML就是“住人、装修”(操作表中数据)。在MySQL中,DML语句的核心作用是对表中的数据进行增、删、改、查,也是我们日常开发中使用频率最高的SQL语句。 这里有一个新手容易混淆的知识点:严格来说,“查询数据”的SELECT语句属于DQL(Data Query Language,数据查询语言),但在很多书籍、教程以及面试中,SELECT语句通常会被包含在DML的范畴中,我们今天也统一按这个习惯讲解,更贴合实际开发场景...
04第四章:DQL查询全解析
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
对于后端开发者、数据库初学者来说,MySQL中的DQL(数据查询语言)是日常工作中最常用、最核心的知识点之一。不同于DML(数据操纵语言)的“增删改”,DQL专注于“查数据”——如何快速、准确地从数据库中提取所需信息,直接决定了系统的性能和开发效率。今天,我们就从概念到实战,一步步拆解DQL的核心用法,帮你彻底吃透MySQL查询技巧。 一、先搞懂:DQL到底是什么?DQL的全称是Data Query Language,即数据查询语言,它的核心作用就是从数据库表中查询符合条件的数据,是MySQL中使用频率最高的语言模块。 这里我们可以用一个简单的类比理解DQL与DML的区别: DML(INSERT、UPDATE、DELETE):相当于“修改数据仓库”,负责往仓库里放数据、改数据、删数据; DQL(核心是SELECT语句):相当于“从仓库里找东西”,根据你的需求,精准找到想要的数据,不会对原有数据做任何修改。 简单来说,只要你需要从数据库中“查东西”,就离不开DQL,而SELECT语句,就是DQL的灵魂。 二、核心框架:SELECT语句的基本结构与执行顺序很多新手写SELECT语...
06第六章:MySQL数据库中的一条数据是如何存储的?
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
在MySQL的学习之路中,我们已经掌握了表的创建、SQL语句的执行,但你有没有想过一个问题:当我们执行 INSERT INTO 插入一条数据后,这条数据在底层到底是如何被存储的?它以什么格式存在磁盘上?为什么有的字段能存很长的内容,有的却会被限制?今天这一章,我们就结合InnoDB源码(基于MySQL 8.0版本),深度解析一条MySQL数据的存储全过程,从行格式到数据页,从元数据到底层存储,帮你彻底搞懂数据存储的核心逻辑。 注:MySQL的存储引擎有很多,但InnoDB是目前默认且最常用的引擎(支持事务、索引、MVCC等核心特性),因此本文所有分析均围绕InnoDB展开,这也是面试中考察的重点。 一、InnoDB 的行格式(Row Format):数据存储的“容器”InnoDB 在物理层面存储表数据时,并不是直接将用户插入的列值堆砌在一起,而是将每一行(row)按照固定的“行格式”组织起来,再存储到数据页(data page)中。简单来说,行格式就是一条数据的“包装规范”,定义了数据的组织方式、元数据的存储规则,不同的行格式对应不同的存储优化策略。 1. InnoDB 支持的四...
07第七章:初识索引底层运用及性能优化
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
上一章我们讲解了MySQL数据的底层存储逻辑,了解了一行数据如何以特定行格式存储在数据页中。但当表中数据量达到几十万、几百万甚至上亿条时,单纯依靠全表扫描查询数据,速度会变得极其缓慢——就像在一本没有目录的厚书中找某个知识点,只能逐页翻找,效率极低。而索引,就是MySQL为我们打造的“图书目录”,能让查询速度实现质的飞跃。 本章我们将从索引的定义、作用出发,结合底层数据结构(重点是B+树),详解MySQL索引的分类、核心原则(最左匹配)和优化机制(索引下推),同时补充实操案例和避坑指南,让你不仅“知道索引是什么”,更能“会用索引、用好索引”。 一、什么是 MySQL 中的索引?1. 核心定义索引是数据库中一种用于加快数据查询速度的数据结构,由存储引擎(如InnoDB、MyISAM)负责维护,独立于表数据存在,本质是“对表中一列或多列数据进行排序后的数据结构”。 很多人误以为索引是“额外的表”,其实不然:索引是一种独立的存储结构,它存储了索引字段的值和对应数据的物理地址(或主键值),通过这种映射关系,MySQL可以跳过全表扫描,直接定位到目标数据的位置。 2. 通俗比喻(秒懂索引作...
05第五章:select语句的执行过程是怎么样的?
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
对于MySQL初学者而言,我们每天写的SELECT语句,看似只是简单的“查数据”,背后却隐藏着MySQL内核复杂的执行逻辑。很多人只会写SQL,却不懂其执行过程,遇到性能瓶颈时无从下手——比如为什么同样的查询,换个索引就快了?为什么有些查询会频繁访问磁盘? 本章我们就从零开始,结合MySQL源码(基于8.0版本),深度拆解SELECT语句的完整执行过程,从连接器到存储引擎,每一个阶段都讲透原理、结合实例,帮你真正理解“MySQL是怎么查数据的”,为后续SQL优化、性能调优打下坚实基础。 🧩 一、整体流程概览:Server层与存储引擎层的分工在解析具体执行步骤前,我们先明确MySQL的核心架构——整个MySQL服务分为两大核心层级,二者分工明确、协同工作,这也是理解SELECT执行过程的关键。 核心分工如下: Server 层(SQL 层):这是MySQL的“大脑”,负责处理SQL语句的整个逻辑流程,包括连接管理、SQL解析、优化、执行调度等,不直接负责数据的存储和读取。简单说,Server层决定“查什么”“怎么查”。 存储引擎层(Engine 层):这是MySQL的“手脚”,...
1…8910
avatar
Lumjiel
文章
98
标签
40
分类
15
Github
公告
欢迎来到我的blog
最新文章
日记 - 2026-03-31
日记 - 2026-03-312026年03月31日
日记 - 2026-03-30
日记 - 2026-03-302026年03月30日
日记 - 2026-03-29
日记 - 2026-03-292026年03月29日
日记 - 2026-03-28
日记 - 2026-03-282026年03月28日
日记 - 2026-03-27
日记 - 2026-03-272026年03月27日
分类
  • AI追踪3
  • Linux5
  • c语言10
  • database1
  • datastruct11
  • python2
  • 八股面试26
    • Java基础4
标签
AI追踪LinuxC语言数据库面试Python数据结构复盘杂谈日记真题日复盘工具探索社交反思技术教训时间管理技术探索工具效率生活智慧消费观生活记录工具反思认知转折信息源技术突破生活决策生活感悟技术学习收入突破家庭关系宿舍生活项目反思状态反思情绪记录前端调试社交焦虑技术反思工具折腾内容运营焦虑情绪
归档
  • 三月 2026 98
网站信息
文章数目 :
98
本站总字数 :
232.3k
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2021 - 2026 By Lumjiel