Ekko Blog

路漫漫其修远兮 ,吾将上下而求索

JVM class 文件结构与类加载流程

从 ClassFile、常量池到加载、链接与初始化

这篇笔记围绕 JVM 中最容易混淆的两条主线展开:class 文件的二进制结构,以及类从字节流进入运行时后的加载、链接、初始化过程。重点不在于罗列名词,而在于把字段、索引、描述符、符号引用与类生命周期串成一条连续链路。 本文聚焦 ClassFile 结构和类加载主线,不展开运行时数据区、垃圾回收器、JIT 等主题。阅读目标是建立一份可以直接对照 javap -verbose ...

MySQL 核心知识查缺补漏

从 InnoDB、索引优化、MVCC、锁到日志与主从复制

这篇笔记的目标,是把零散的 MySQL 知识点收束成一条主线:先理解 InnoDB 如何组织数据和索引,再理解查询为什么快或慢,最后把事务、锁、日志和主从复制串起来。 它偏向底层原理和工程判断,不展开执行计划字段逐项说明,也不覆盖具体业务 SQL 的专项调优案例。阅读时重点抓住四件事:数据怎么存、索引怎么查、并发怎么控、数据怎么保住。 参考资料: 官方文档...

Redis 持久化与主从同步

RDB、AOF、AOF 重写与复制链路的工作机制、权衡与版本差异

这篇笔记把 Redis 的数据落盘与复制链路放在一起梳理,核心是弄清楚 RDB、AOF、AOF 重写、全量复制、增量复制分别在什么时机发生,谁负责执行,哪里可能阻塞,哪里只保证最终一致。 内容以 Redis Open Source 的通用机制为主,尽量保留原始笔记结构,同时补上容易混淆的版本差异,尤其是 Redis 7.0 之后的 multi-part AOF,以及复制里 r...

Redis 数据结构

Redis 底层编码、核心数据结构与版本演进梳理

这篇笔记主要用来梳理 Redis 常见底层数据结构的设计思路,包括 redisObject、SDS、dict、quicklist、skiplist,以及小对象编码从 ziplist 向 listpack 的演进关系。重点不在命令用法,而在“逻辑类型如何映射到底层结构”和“为什么 Redis 会这样设计”。 文章内容以经典对象模型为主,同时补充 Redis 6.x、7.x 之后...

Redis 核心机制汇总

从数据结构、事务与 Lua、缓存一致性到集群与内存管理的整体梳理

这篇笔记的目标,是把 Redis 的高频问题和工程实践放到一张图里理解:它是什么、适合存什么、事务和 Lua 的边界在哪里、缓存一致性怎么收敛、集群和内存管理要关注什么。 内容以概念梳理、关键差异辨析和工程边界说明为主。结构上尽量按“基础能力 -> 运行机制 -> 工程问题”的顺序收口,避免只堆术语不解释原因。 参考资料: 官方文档:Redis...

Spring Boot 启动流程

基于 Spring Boot 2.x 源码梳理从 SpringApplication.run 到 ApplicationContext.refresh 的主链路

这篇笔记聚焦 SpringApplication.run(...) 背后的启动主链路,核心是把“谁在创建环境、谁在装配容器、谁在触发刷新、谁在发布启动事件”串成一条完整执行链,方便在阅读源码、排查启动异常或理解自动装配入口时快速定位。 文中的代码片段与类名主要对应 Spring Boot 2.x 时代实现,尤其包含 spring.factories、ConfigFileApp...

缓存并发与 MySQL 核心机制

从缓存击穿、JOIN 语义、联合索引到 InnoDB 锁模型

这篇笔记把几个在面试和日常开发里很容易混在一起的知识点集中梳理一遍,包括缓存击穿场景下的双重检锁、JOIN 的逻辑语义、联合索引与 ICP/MRR 优化、InnoDB 的锁模型、聚簇索引,以及 InnoDB 与 MyISAM 的差异。 重点不是只记结论,而是把“它为什么成立”“在哪些前提下成立”“什么场景下容易误用”说清楚。这样再回头看 EXPLAIN、死锁、慢查询和锁等待时...

文件系统

从 inode、目录项、VFS 到块分配、页缓存与文件 I/O 的整体视图

这篇笔记的目标是把文件系统放回操作系统的整体语境里来理解:文件到底如何映射到磁盘,目录、inode、VFS、页缓存分别负责什么,以及应用程序调用 open、read、write、mmap、fsync 时内核究竟做了哪些事。 它更偏概念梳理和关系辨析,重点是建立一张完整心智图,而不是展开某一种具体文件系统的源码细节。文中会以 Linux 和 ext 系文件系统为主线,同时把路径...

Maven详解

从项目结构、POM、依赖管理到生命周期的 Maven 实用笔记

这篇笔记用于梳理 Maven 的核心模型:标准目录结构、pom.xml、依赖管理、构建生命周期、插件机制与多模块工程。它适合作为 Java 项目的 Maven 入门与回查手册,而不是覆盖所有冷门配置项的完整手册。 文章重点放在日常开发最常见的用法上,例如如何组织项目、如何声明依赖、什么时候改 settings.xml、为什么 mvn clean package 能完成一整套构...

Linux常用命令

Linux 与 Java 生产排障常用命令速查

这篇笔记主要整理 Linux 日常使用和 Java 生产排障里最常见的一批命令,重点放在“先定位进程、再看端口、再看日志、最后看线程和堆栈”这条高频排查路径上。 它更偏向速查和结构化梳理,不展开内核原理,也不替代完整的 man 手册;重点覆盖进程、端口、日志、systemd 服务状态以及 JVM 诊断工具之间的衔接关系,适合作为上线后排查 Java 服务问题时的第一份命令清单...