深入浅出 MyBatis - 一级缓存 代码测试 与 原理探究 源码 Executor
详细介绍MyBatis一级缓存的工作原理、代码测试、失效场景以及源码分析。一级缓存是MyBatis默认开启的本地缓存,作用域为SqlSession级别。
Java 后端、消息队列、缓存、分布式系统深入实战,从原理到生产落地。
共 199 篇文章
详细介绍MyBatis一级缓存的工作原理、代码测试、失效场景以及源码分析。一级缓存是MyBatis默认开启的本地缓存,作用域为SqlSession级别。
详细介绍MyBatis二级缓存的工作原理、开启配置、代码测试以及源码分析。二级缓存是基于Mapper的namespace的,多个SqlSession可以共享。
详细介绍MyBatis二级缓存整合Redis的实现方法,通过分布式缓存实现跨服务共享,包含pom配置、mapper配置、测试代码和源码分析。
本文深入介绍MyBatis框架,从ORM概念讲起,详解MyBatis的发展历史、技术优势,以及与Hibernate等常见ORM框架的对比。
深入浅出讲解MySQL事务隔离级别:读未提交、读已提交、可重复读、串行化,剖析脏读、不可重复读、幻读问题及解决方案。
深入浅出讲解MySQL锁机制:悲观锁、乐观锁、表级锁、行级锁(共享锁、排他锁)、意向锁,图文详解锁分类与实战应用。
深入浅出讲解MySQL死锁:死锁定义、必要条件、表锁死锁、行级死锁、共享锁转排他锁、死锁排查与避免策略。
深入浅出讲解MySQL数据库设计:可用性(冗余、故障转移)、扩展性(分库分表、读写分离)、一致性(强一致性与最终一致性)。
深入浅出讲解MySQL主从复制:主从模式、读写分离、半同步复制原理与配置。
深入浅出讲解MySQL并行复制技术:从5.6基于库的并行到5.7基于组提交再到8.0基于writeset的演进。
深入浅出讲解MySQL双主架构与MMM高可用方案:双主模式、MMM故障处理、监控机制。
深入浅出讲解MySQL MHA高可用方案:MHA架构、故障处理、主备切换、延迟问题与解决方案。
本文深入介绍MySQL分布式主键策略,包括UUID、SnowFlake、COMB、Redis和数据库ID表等方案的原理、优缺点及适用场景对比。
分片是分布式数据库中实现横向扩展的核心技术,将完整数据库按规则拆分成多个部分存储在不同节点。常见分片策略包括范围分片、哈希取模分片和一致性哈希分片。
探讨MySQL数据库横向扩容方案,主要解决单库在容量、性能和并发上的瓶颈问题。扩容触发条件包括磁盘使用率超80%、响应时间超500ms、连接数超70%上限。
Apache ShardingSphere是面向关系型数据库的分布式中间件生态系统,核心定位是增强而非替代传统数据库。它通过插件化架构提供水平扩展、分片、读写分离和分布式事务等能力。
详细介绍Sharding-JDBC,一款轻量级Java数据库中间件,主要解决分库分表、读写分离及分布式事务等问题。
在分布式数据库中,分片机制通过真实表、逻辑表、数据节点和绑定表实现数据的高效存储与查询。绑定表确保主表与子表使用相同分片规则,提升关联查询效率。
深入探讨ShardingSphere分片流程,包括SQL解析、查询优化、SQL路由、SQL改写、SQL执行及结果归并六大环节。
深入探讨ShardingSphere在分片场景下对SQL的支持范围、限制条件以及优化实践。
读写分离是一种常见的数据库架构优化方案,通过主从复制机制将写操作集中在主库,而将读操作分散至多个从库。
在分布式数据库场景中,ShardingSphere提供Hint机制,通过显式指定路由配置实现强制路由,绕过默认分片策略直接定向至指定节点执行。
数据脱敏是一种关键的数据安全技术,通过对敏感信息进行替换、加密、扰动等方式实现数据可用与隐私保护的平衡。ShardingSphere提供了完善的脱敏模块。
CAP理论揭示了分布式系统在一致性、可用性和分区容错性之间无法三者兼得的本质限制。2PC通过协调者控制两阶段提交保证强一致性,XA规范引入全局事务管理器协调跨资源事务。
分布式事务模式主要包括TCC、队列模式和Saga。TCC将传统2PC拆解为业务可控的三步,队列模式通过消息中间件实现最终一致性, Saga模式将长事务拆解为一系列有序子事务。
Seata是阿里巴巴开源的分布式事务解决方案,提供一站式事务管理,具备高性能、低侵入性和多语言支持等特性。
传统方式依赖数据库厂商提供的XA驱动和应用服务器的事务管理器,现代系统多采用嵌入式事务管理器。ShardingSphere提供跨库XA事务支持,采用两阶段提交协议保证强一致性。
ShardingSphere通过整合第三方servicecomb-saga组件实现柔性事务,利用SPI动态注入和反向SQL技术自动生成补偿操作。
ShardingSphere生态中的Sharding-Proxy采用透明化数据库代理架构,无需修改应用代码即可实现分库分表、读写分离、分布式事务与数据加密等功能。
MyCat是一个开源的分布式数据库中间件,完全兼容MySQL协议,核心功能包括分库分表、读写分离和结果集合并,支持多种分片策略。
MyCat分布式数据库分片策略包括E-R表分片策略、全局表机制、分片节点、节点主机和分片规则。
server.xml是Mycat的核心配置文件,集中保存了系统运行所需的关键参数,包括系统参数、用户权限、防火墙配置和性能调优。
schema.xml是Mycat的核心配置文件,管理逻辑数据库、逻辑表、数据节点和数据主机。
MyCAT是一款开源的数据库中间件,支持MySQL协议,常用于分库分表和数据分片管理。安装步骤包括解压、配置环境变量及执行启动命令。
MySQL数据库事务是一组作为单个逻辑工作单元执行的SQL操作集合,遵循ACID原则:原子性、一致性、隔离性和持久性。
MySQL事务隔离级别包括READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE四种,每种级别解决不同的并发问题。
数据库事务中的常见问题包括脏读、不可重复读、重复读与幻读。这些问题都与数据库的隔离级别密切相关。
详细介绍Spring Boot中@Transactional注解的各个参数,包括事务传播机制、隔离级别、异常回滚策略等。
介绍声明式事务和编程式事务的概念、使用方式及对比分析。声明式事务通过@Transactional注解实现,编程式事务通过TransactionTemplate实现。
事务传播是Spring中处理事务边界的重要机制,定义了方法在调用链中与事务上下文的交互方式。
Spring事务失效常见于类未被Spring管理、事务管理器未启动、方法修饰不当(final、static、private方法)、同类内部调用等场景。
详细介绍MyBatis插件机制,包括插件原理、自定义插件开发、四大核心组件的拦截、@Intercepts注解使用以及源码分析。
Spring事务失效常见场景包括访问权限不是public、数据库存储引擎不支持事务、readOnly配置错误、事务超时时间过短、错误的传播机制等。
Spring事务失效场景包括rollbackFor配置错误、事务注解被覆盖、嵌套事务问题等。
Spring事务失效场景包括多线程调用、异常捕获未回滚、手动抛出异常错误等。多线程场景下子线程无法继承父线程的ThreadLocal变量导致事务失效。
NoSQL是非关系型数据库的统称,包括文档型MongoDB、键值型Redis、列存储HBase、图数据库Neo4j,各有特点和适用场景。
BSON是MongoDB的核心存储格式,是一种二进制编码的类JSON格式。相比JSON,BSON支持更多数据类型如Date、Binary、ObjectId等,性能更优。
MongoDB常用命令包括show dbs查看数据库、use切换数据库、db.createCollection()创建集合、show collections查看集合、db.collection.drop()删除集合。
MongoDB数据操作包括单条insertOne()插入和批量insertMany()插入。查询操作符包括$eq、$ne、$gt、$lt等,逻辑操作包括$and、$or、$not。
MongoDB通过skip()、limit()和sort()方法组合实现分页查询,性能优化建议包括避免大数据skip和使用范围查询替代。WriteConcern控制写入确认级别和journal日志。
MongoDB聚合框架通过多阶段管道处理文档,实现类似SQL中GROUP BY、JOIN、SUM、AVG等复杂运算。常用阶段包括$match、$group、$project、$sort。
MongoDB索引是提升查询性能的核心机制,包括单键索引、复合索引、多键索引、地理索引、全文索引和哈希索引。
MongoDB索引管理包括createIndex、getIndexes、dropIndex等操作。explain分析支持queryPlanner、executionStats、allPlansExecution三种模式...
MongoDB慢查询分析通过内置Profiler实现,设置db.setProfilingLevel(1, m)记录慢查询。EXPLAIN分析帮助识别性能瓶颈和优化查询。
MongoDB采用B-树索引,节点可同时存储数据与键值;MySQL采用B+树索引,所有数据集中在叶子节点。B+树更适合范围查询,B-树更适合随机点查询。
MongoDB适用于网站数据存储、缓存系统、大数据分析、物联网、社交媒体、直播平台等多种场景。不适合需要复杂事务和高度规范化的场景。
Java访问MongoDB数据库的完整指南,包括环境搭建、Maven依赖、连接MongoDB、CRUD操作、POJO映射、索引管理、聚合查询和事务处理。
Spring Boot连接MongoDB的两种方式:MongoTemplate模板方式和MongoRepository仓库方式,含完整Java代码示例和常见问题排查。
MongoDB数据建模选择内嵌还是引用,遵循三原则:一对少嵌入、增长无上限用引用、跨集合关联用$lookup+索引。WiredTiger默认即可。
MongoDB两种主要存储引擎WiredTiger和InMemory的对比、配置方法及验证步骤。生产环境推荐使用WiredTiger。
MongoDB复制集认知:oplog位置与幂等性,心跳频率与选举超时、成员/投票上限(50/7),并指出4.0起移除主从复制。
MongoDB 7副本集的容器化最佳实践:生成keyfile、显式开启--auth,用一次性容器完成rs.initiate与管理员创建。
MongoDB副本集的单机三实例部署指南,包括配置、初始化、添加/移除节点、选举、读写分离和回滚操作。
MongoDB分片集群详解:分片由Shard、Config Server、Mongos组成。片键选择包括范围分片、哈希分片、区域分片。包含最小可运行示例。
手把手搭建MongoDB分片集群(configsvr×3 + 两套shard副本集×3节点 + 多mongos),包括配置、初始化、添加分片、均衡和回滚。
MongoDB生产环境安全加固指南,包括认证开启、RBAC最小权限、内网bindIp/防火墙ACL、TLS/SSL加密。
MongoDB认证与权限配置,从单实例到分片集群,按先建admin/root→启用authorization→按库分权的顺序落地。
欧拉路径/欧拉回路的判定:无向图看连通性与奇度顶点数,有向图看弱连通与入出度平衡。文内提供基于Python NetworkX的最小可运行示例。
MyBatis快速入门教程,详细介绍MyBatis开发步骤,包括POM依赖配置、Mapper映射文件、SqlMapConfig核心配置文件,以及增删改查操作。
详细介绍MyBatis分页插件PageHelper和通用Mapper的使用方法,包括配置、代码示例、PageInfo类用法以及通用Mapper的CRUD操作。
MyBatis快速入门续篇,详细讲解增删改查操作、XML映射文件核心配置、注解开发方式,以及数据源、事务管理等配置。
详细介绍MyBatis核心架构设计,包括三层架构、SqlSession、Executor、StatementHandler的工作原理和源码分析,以及MyBatis的初始化流程。
Neo4j 图数据库 Docker 安装与远程访问配置,10 分钟快速入门指南。
深入讲解MyBatis核心组件:SqlSessionFactory与SqlSession的工作原理,DAO层传统实现方式,以及MyBatis代理开发模式。
深入讲解MyBatis动态SQL配置,包括if条件判断、where标签、foreach循环遍历、sql片段抽取等核心用法。
Neo4j CQL 查询语言详解:CREATE 创建节点关系、MATCH 查询,附完整代码示例。
详细介绍MyBatis Mapper Proxy动态代理的实现原理,包括getMapper源码解析、MapperMethod执行流程、invoke方法分析。
详细讲解MyBatis中的一对一模型映射,包括数据库表设计、Java实体类定义、Mapper接口与XML配置,以及resultMap高级映射用法。
详细讲解MyBatis中的一对多模型映射,包括数据库表设计、collection标签用法、Java实体类定义,以及一对多查询的实现与测试。
Neo4j CQL 高级查询:WHERE 条件筛选、DELETE 删除、SET 更新、ORDER BY 排序与分页。
详细讲解MyBatis中的多对多模型映射,包括中间表设计、用户与角色关系实现、collection标签用法,以及多对多查询的完整代码示例。
详细介绍MyBatis注解开发方式,包括常用注解(@Select、@Insert、@Update、@Delete、@Results等)的用法,以及注解实现一对一模型映射。
Neo4j CQL 函数速查:字符串函数、聚合函数、关系函数与最短路径查询。
详细介绍MyBatis注解开发中的一对多和多对多映射,包括@Many注解的用法、用户与订单、用户与角色的关系实现,以及注解模式的优缺点分析。
Neo4j事务处理与索引创建实战:事务隔离级别(BEGIN/COMMIT/ROLLBACK)、label级索引与relationship索引、composite index复合索引、constraint唯一约束与存在性约束...
Neo4j数据库备份恢复与数据预热:neo4j-admin dump备份与load恢复、数据预热策略(warm-up)加速查询、执行计划分析(EXPLAIN/PROFILE)、查询性能调优、数据一致性验证。
Neo4j 嵌入式数据库与服务器模式对比,Java API 访问示例。
Spring Boot 整合 Neo4j 完整指南:Java Driver、Neo4jTemplate、Repository 实战。
详细介绍MyBatis源码中使用的设计模式,包括建造者模式、工厂方法模式、单例模式、代理模式、组合模式等,以及在MyBatis中的具体体现。
详细介绍代理设计模式的概念、分类和MyBatis中的具体体现,包括静态代理和动态代理的代码实现,以及MapperProxy的源码分析。
FastDFS 分布式文件系统架构详解,从单机到分布式的演进路径。
手写ORM框架系列第一篇,介绍传统JDBC开发的问题和缺点,以及ORM框架的设计思路和解决方案。
本文手把手教你手写ORM框架,详细介绍Resources、MappedStatement、XMLBuilder等核心组件的实现,包括配置文件解析、映射文件处理等关键步骤。
FastDFS 6.15.0 源码编译安装与 Nginx fastdfs-nginx-module 配置完整指南。
深入剖析手写ORM框架中SqlSession和Executor的工作原理,详细讲解SqlSessionFactoryBuilder、DefaultSqlSession、SimpleExecutor的实现机制。
对手写ORM框架进行优化,重点讲解DefaultSqlSession中getMapper方法的实现,利用JDK动态代理创建Mapper接口的代理对象。
FastDFS 核心架构详解:Tracker Server、Storage Server、Group 分组机制。
全面介绍Spring框架的基本概念、发展历程,从EJB到Spring的演进,详细讲解Spring的核心思想IoC控制反转和AOP面向切面编程。
手把手教你实现简易Spring IoC容器,第一部分介绍Servlet的基本概念、特点和工作原理,并编写第一个Servlet程序。
在没有使用Spring的情况下,手动实现业务逻辑分层,包括DAO层、Service层和Controller层,展示传统开发方式的依赖管理问题。
FastDFS 架构设计理念:轻量级 Tracker、对等存储结构、文件上传与同步原理。
手把手教你手动实现IoC容器,通过BeanFactory和XML配置文件管理Bean依赖,完成依赖注入的核心实现。
在业务基础上手动实现AOP面向切面编程,通过JDK动态代理和CGLIB实现事务管理器,完成事务的自动提交与回滚。
详细介绍Spring IoC容器的启动方式,包括Java环境下的ClassPathXmlApplicationContext、FileSystemXmlApplicationContext,以及Web环境下的XML和配置类方式。
详细讲解Spring纯XML模式下的IoC配置,包括Bean的三种创建方式、生命周期、作用域,以及构造函数注入和Set方法注入的XML配置。
讲解Spring中XML与注解结合的配置模式,包括注解与XML标签的对应关系,@Autowired、@Qualifier、@Resource等依赖注入注解的使用。
详细介绍Spring纯注解配置方式,包括@Configuration、@ComponentScan、@Bean、@PropertySource等注解的使用,以及在Web环境下的配置。
深入讲解Spring中的FactoryBean和BeanFactory的区别,Bean的延迟加载机制,以及BeanPostProcessor和BeanFactoryPostProcessor后置处理器的使用。
详细讲解Spring IoC容器体系结构,Bean生命周期全过程,以及BeanPostProcessor和BeanFactoryPostProcessor的执行时机。
通过断点调试深入分析Spring IoC容器的初始化流程,详细讲解Bean的创建时机、AbstractApplicationContext.refresh方法核心逻辑。
本文深入分析 Spring IoC 容器体系,讲解 BeanFactory 过程分析以及 Bean 懒加载机制。
循环依赖是循环引用,也就是两个或者两个以上的 Bean 互相持有对方,最终形成环。
AOP 的本质:在不改变原有逻辑的情况下,增强横切的逻辑,横切逻辑代码往往是权限校验代码、日志代码、事务控制代码、性能监控代码。
method: 用于指定前置通知的方法名称 pointcut: 用于指定切入点表达式 pointcut-ref: 用于指定切入点表达式的作用
编程式事务 在业务中添加事务控制代码,这样的事务控制机制就叫做编程式事务
事务(Transaction)是指一组操作,要么全部成功,要么全部失败,保持数据一致性。Spring 提供对声明式事务的支持,底层基于 AOP 原理,实现对方法调用的增强。
Nginx是一个高性能的HTTP服务和反向代理的Web服务器,核心特点是占用内存少,并发能力强。
Nginx的配置文件nginx.conf包含三个内容: 全局块 events块 http块
Nginx 之所以能在同一台服务器上支撑数十万并发连接,根本原因不是"高魔法"配置,而是 Master–Worker 多进程 + 事件驱动 的组合设计。Master 进程负责管控,Worker 进程负责真正的网络 I/O。
浏览器访问服务器使用的是HTTP协议,HTTP是应用层的协议,用于定义数据通信的格式,具体的数据传输使用的是TCP/IP协议。
Catalina 是 Apache Tomcat 的 Servlet 容器实现,其主要职责包括
从 Tomcat 官网下载 Core 包:https://tomcat.apache.org/download-90.cgi
我们要手写实现一个 Mini 版的 Tomcat,我们要实现的是,作为一个服务器软件,可以通过我们的浏览器客户端发送HTTP请求,Minicat处理之后,处理结果可以返回给浏览器的客户端。
This article explains how to implement a simplified version of Tomcat called MiniCat. The core components include
我们要手写实现一个 Mini 版的 Tomcat,我们要实现的是,作为一个服务器软件,可以通过我们的浏览器客户端发送HTTP请求,Minicat处理之后,处理结果可以返回给浏览器的客户端。
JVM 的类加载机制(Class Loading Mechanism)是 Java 虚拟机中一个非常核心的部分,它决定了类从哪里来、怎么加载、什么时候初始化等一系列行为。
HTTPS 是用来加强数据传输安全的,HTTP超文本传输协议,明文传输是非常不安全的,HTTPS在传输的过程中会对传输的数据进行加密。
This article covers JVM memory model and Tomcat performance optimization. Key topics include: JVM architecture。
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。分布式服务指的是将系统中的不同功能模块部署在多个服务器节点上,通过网络进行通信与协作,实现整体系统的功能目标。
分布式数据一致性是指在分布式系统中多个副本(replicas)之间保持数据一致。这是分布式系统的核心挑战之一,尤其是在网络不可靠和节点可能发生故障的情况下。
2000年7月的时候,加州大学伯克利分校 Eric Brewer 教授提出了 CAP 猜想,2年后,被来自于麻省理工的 Seth Gilbert 和 Nancy Lynch 从理论上证明了猜想的可能性。
原子性是指事务中的所有操作作为一个不可分割的整体执行,要么全部成功完成,要么全部不执行。如果事务执行过程中任何操作失败,系统会将数据库回滚到事务开始之前的状态。这就像银行转账操作中的"全有或全无"原则。
3PC(Three-Phase Commit)全称为三阶段提交协议,是二阶段提交协议(2PC)的改进版本。
Paxos 算法是由计算机科学家 Leslie Lamport 提出的一种基于消息传递的分布式一致性算法,这项开创性工作使他获得了2013年图灵奖。
Paxos 算法是由计算机科学家 Leslie Lamport 提出的一种基于消息传递的分布式一致性算法,这项开创性工作使他获得了 2013 年图灵奖。
深入浅出讲解分布式服务一致性算法Raft:Leader选举、Log复制、心跳机制、日志压缩与成员变更;以Raft论文为基础分析一致性保证与safety证明;对比Paxos算法;实际工程实现要点与注意事项。
分布式服务心跳检测与高可用设计:心跳协议实现(TCP keepalive/应用层心跳)、故障检测(Phi Accrual Failure Detector)、租约机制与leader选举、分布式共识算法、脑裂问题处理与恢复策略。
在分布式系统设计中,网络通信是最基础也是最重要的组成部分。在Java生态系统中,有多种技术可以实现远程服务通信,每种技术都有其特定的应用场景和实现原理
在分布式系统设计中,网络通信是最基础也是最重要的组成部分。在Java生态系统中,有多种技术可以实现远程服务通信
同步 (Synchronize):用户进程触发IO操作后,必须等待IO操作完成或轮询检查IO操作是否就绪。例如:传统的BIO模式中,当调用read()方法时,必须等到数据真正从内核空间拷贝到用户空间后才能返回。
Netty 是由 JBOSS 提供的一个高性能、异步的、基于事件驱动的网络应用框架。它建立在 Java NIO 技术之上,通过简化和抽象 NIO 的复杂性,让开发者能够专注于业务逻辑的实现,而无需处理底层网络通信的细节。
Netty 是一个面向 JVM 的异步事件驱动网络开发框架,目标是让高并发、高吞吐的网络程序开发像写普通业务代码一样简单。
Netty 是一个面向 JVM 的异步事件驱动网络开发框架,目标是让高并发、高吞吐的网络程序开发像写普通业务代码一样简单。
随着互联网技术的快速发展和移动设备的普及,全球互联网用户数量已从2000年的3.6亿增长至2023年的53亿。与此同时,网站流量呈现出指数级增长态势。
RPC Dubbo技术详解:服务注册与发现(Zookeeper/Nacos)、RPC通信原理(Netty/Tomcat)、Dubbo协议与序列化、负载均衡策略(Random/RoundRobin/LeastActive)、服务降级与熔断机制。
在 Dubbo 分布式服务框架中,所有的服务调用都是基于 Java 接口进行交互的。这种接口契约式设计确保了服务提供者和消费者之间的解耦。具体工作流程如下
Dubbo生产者模块配置与运行机制:服务导出(export)流程、动态代理实现(javassist/javassist)、负载均衡策略、集群容错(Failover/Failfast/Failsafe)、SPI扩展机制与Filter拦截链。
解析配置:ReferenceConfig, DubboBootstrap,读取配置并合并 注册中心订阅:RegistryDirectory,向 Nacos/ZooKeeper 订阅服务列表 目录路由:
Dubbo Admin 是一个功能强大的可视化管理和监控平台,主要用于管理和监控 Dubbo 微服务架构中的各项服务。它提供了直观的用户界面,让运维人员和开发者能够更方便地进行服务治理和运维工作。
Java SPI(Service Provider Interface)是一种内置的服务发现机制,结合接口编程、策略模式和配置文件,允许在运行时动态加载实现类。SPI广泛用于 JDBC、JNDI、日志、XML 解析等场景。
Dubbo 中的 Adaptive 功能是一种动态适配机制,它能够根据运行时条件自动选择并加载最合适的扩展点实现。该功能的核心是解决在分布式系统中如何根据不同的运行环境和配置动态切换具体实现类的问题。
负载均衡(Load Balancing)是一种将工作负载或网络流量分配到多个计算资源的技术。其核心目标是通过合理分配请求,优化资源使用,最大化吞吐量,最小化响应时间,同时避免单个资源过载。
Dubbo 不仅提供了传统的同步阻塞调用方式,还支持高效的异步调用模式。
Dubbo中的路由规则是微服务架构中实现流量控制和分发的重要机制,它决定了客户端请求将被路由到哪些目标服务提供者实例。
服务降级是指当服务器面临突发流量压力或系统资源紧张时,根据当前业务状况和流量特征,有策略地降低某些非核心或次要服务的功能级别,以释放服务器资源,确保核心业务功能的正常运行。这是一种主动的系统保护机制。
MySQL发展历程、主流分支、架构演变(单机->主从->分库分表->云数据库)
MySQL四层架构详解:网络连接层、服务层、存储引擎层、系统文件层
MySQL连接机制深度剖析:半双工通信协议、连接池原理(HikariCP/C3P0/Druid)、线程缓存与threadperconnection模型、查询缓存工作原理、查询优化器执行计划生成与SQL解析流程。
MySQL存储引擎对比:InnoDB、MyISAM、Memory、Archive等,事务、锁机制、索引结构
InnoDB内存结构:Buffer Pool、Change Buffer、Adaptive Hash Index、Log Buffer
InnoDB磁盘结构:系统表空间、独立表空间、通用表空间、临时表空间、Doublewrite Buffer、Redo Log、Undo Log
MySQL 5.7/8.0存储引擎优化、InnoDB线程模型:IO Thread、Purge Thread、Page Cleaner Thread、Master Thread
InnoDB存储结构:Tablespace、Segment、Extent、Page、Row,行格式:REDUNDANT、COMPACT、DYNAMIC、COMPRESSED
Undo Log回滚日志、Redo Log重做日志、事务原子性、持久性、MVCC
Binlog三种记录模式:STATEMENT、ROW、MIXED,文件格式、写入机制、主从复制
索引类型:BTree、Hash、FULLTEXT、RTree,普通索引、唯一索引、主键索引、复合索引、聚簇索引
索引原理:B+Tree、Hash索引、二分查找、InnoDB自适应哈希索引
MySQL聚簇索引与二级索引详解:InnoDB主键索引结构、辅助索引回表查询、覆盖索引避免回表、索引下推ICP、Multi-Range Read优化、ICP与MRR联合优化执行计划分析。
EXPLAIN命令详解:selecttype、type、possiblekeys、key、rows、key_len、Extra
回表查询、覆盖索引、最左前缀原则、LIKE查询、NULL值处理
filesort排序、index排序、双路排序、单路排序、聚簇索引与辅助索引排序
慢查询日志、mysqldumpslow、EXPLAIN分析、常见优化方案
MySQL ACID特性与WAL机制:原子性实现原理、Redo Log与Undo Log协同、隔离级别(RC/RR)与MVCC、持久性保障的CheckPoint机制、Write Ahead Logging写前日志策略与崩溃恢复流程。
并发事务问题:更新丢失、脏读、不可重复读、幻读,锁机制:共享锁、排他锁,MVCC
数据库读写分离架构设计与主从延迟解决方案:MySQL binlog主从复制原理、Canal增量订阅、ShardingSphere读写分离配置、延迟监控与补偿机制、GTID模式与半同步复制。
MHA高可用方案:Manager、Node、故障处理、故障切换
数据库分库分表实战:垂直拆分(按业务模块)与水平拆分(按数据范围/Hash)、分片键选择策略、跨分片查询解决方案、分片规则配置(mycat.yml/sharding.yml)、分布式ID生成器与数据迁移。
三台主机同时部署 tracker、storage、Nginx,按轮询上传存储。关键在 Nginx+mod_fastdfs 路由与监控校验。产出:一套可复用的集群配置清单 + 版本矩阵 + 常见错误速查卡。
高并发 / 海量小文件场景下单盘或 RAID 的优化思路:升级 v5.04+,按 CPU 核数配线程,减少目录层级,根据延迟目标调 sync 参数。
Java 应用接入 FastDFS 的两种方式:官方源码编译(happyfish100/fastdfs-client-java 1.37-SNAPSHOT)和 Maven 依赖(cn.bestwu / com.github.tobato)。
企业与个人将图片/音视频/静态资源迁移至阿里云 OSS,需稳态运维与控费。按区域与权限精确配置,结合防盗链/CNAME/日志即可兼顾可用性与成本。
多团队与跨账号协作下,OSS 需同时满足公开访问、最小权限与可审计。身份用 RAM Policy,来源与资源约束用 Bucket Policy,ACL 仅用于公开读等简单场景。
高并发读多写少业务,数据库顶不住,需要提升吞吐与稳定性。本地缓存做极致读性能,分布式缓存做共享与扩展,多级缓存兼顾一致性与成本。
Guava Cache 采用“懒清理 + LRU+FIFO”策略,被动删除和主动删除需要配合使用。深入解析 expireAfterAccess、expireAfterWrite 与 cleanUp。
深入解析 Guava Cache 的核心实现类 LocalCache,涵盖分段锁设计、五大队列机制、回收策略与惰性清理原理。
concurrencyLevel、refreshAfterWrite 与 LoadingCache 动态加载的底层行为,并结合自定义 LinkedHashMap LRU 实现进行横向对比。
Java 项目中使用 Guava Cache 做本地缓存,线上出现 OOM、命中率异常、线程阻塞和性能回退等疑难问题的排查与修复。
线上项目广泛使用 Guava Cache,但对 LocalCache / Segment / LoadingCache 具体行为缺乏源码级认知。Guava 通过 LocalCache+Segment 分段结构实现并发安全。
想学习 Netflix 的 EVCache 系统进行自研,但只知道它是「基于 Memcached 的分布式缓存」。拆解 EVCache/Rend/Memcached/Mnemonic 四层来理解缓存层职责、性能天花板与多可用区复制模型。
Java 应用想在本地或小团队环境体验 Netflix EVCache,但服务端未开源,只能基于 Memcached 自建。通过源码编译 Memcached 1.6.39,按 EVCache 节点配置规范启动完成基本读写与链路验证。
大规模分布式缓存中使用 EVCache,需要搞清楚底层 Memcached 的内存管理与过期淘汰行为。EVCache 本质依赖 Memcached + Slab Allocation + 惰性过期 + 近似 LRU。
Java 服务接入 Memcached,需要搞清 Spymemcached 的线程模型、分片路由和序列化细节。Spymemcached 基于 NIO+回调实现异步 IO,通过 ketama 一致性哈希做 Sharding。
分布式服务拆分后,服务间通信从同步调用演进到异步解耦,伴随重试、幂等、可靠性问题。同步链路必须「有界重试+可观测+降级」,跨服务副作用用「任务化/MQ+幂等+补偿」兜底。
用 Java 并发实现一个最小可运行的「队列缓冲 + 异步解耦」消息模型。BlockingQueue 可以解释 MQ 的核心交互,但缺少持久化、ACK、重试、集群、可观测性。
传统 IBM MQ 与新系统共存,需要开源、可运维、可扩展、一致性/可靠性。RabbitMQ 适合「可靠性优先的业务解耦」,RocketMQ 适合「事务/顺序/延迟消息」,Kafka 适合「数据管道/日志/流处理」。
电商秒杀/抢票场景瞬时流量高峰,读写并发都很高。使用预静态+限流排队;写路径用 Redis Lua 原子预扣+MQ 异步持久化;读路径用多级缓存;实现全链路监控与隔离降级。
Java 系统做异步解耦与事件驱动,需要统一理解 JMS 的消息模型、对象模型与消息类型。JMS 是标准 API(类似 JDBC),关键在 Queue/Topic 语义、Session 与确认/事务边界、消息类型取舍。
JMS Topic 在应用集群中广播,导致同一业务被多节点重复消费。用 ActiveMQ Virtual Topic(或 JMS 2.0 Shared Subscription)把「组间广播 + 组内竞争消费」落到中间件层。
深入解析 RabbitMQ 消息落盘机制:queue index(.idx)+ msg_store(.rdq)+ ETS 映射 + 垃圾回收/合并策略,包含四种队列状态 alpha/beta/gamma/delta 详解。