diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 144625d3026..bee4100fa2b 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -10,19 +10,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v6
- name: Install pnpm
- uses: pnpm/action-setup@v2
- with:
- run_install: true
+ uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4
- name: Setup Node.js
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v6
with:
- node-version: 18
+ node-version: 22
cache: pnpm
+ - name: Install deps
+ run: pnpm install --frozen-lockfile
+
- name: Build test
env:
NODE_OPTIONS: --max_old_space_size=4096
diff --git a/.gitignore b/.gitignore
index e094687fd0c..e374f9a968c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,8 +10,18 @@ node_modules/
**/.vuepress/.temp/
# VuePress Output
dist/
-# Build files
-packages/*/lib/
traversal-folder-replace-string.py
format-markdown.py
+
+.npmrc
package-lock.json
+lintmd-config.json
+.claude/settings.local.json
+/.obsidian
+docs/ai/claude.md
+scripts/docsearch-index.mjs
+PERFORMANCE_NOTES.md
+docs/cs-basics/network/TODO.md
+PERFORMANCE_NOTES.md
+dist.zip
+/TODO
diff --git a/.husky/pre-commit b/.husky/pre-commit
index 523f31ae8c8..74821141635 100755
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,4 +1 @@
-#!/bin/sh
-. "$(dirname "$0")/_/husky.sh"
-
pnpm nano-staged
diff --git a/.markdownlint-cli2.mjs b/.markdownlint-cli2.mjs
new file mode 100644
index 00000000000..c2bda64a99b
--- /dev/null
+++ b/.markdownlint-cli2.mjs
@@ -0,0 +1,28 @@
+export default {
+ config: {
+ default: true,
+ MD003: {
+ style: "atx",
+ },
+ MD004: {
+ style: "dash",
+ },
+ MD010: false,
+ MD013: false,
+ MD024: {
+ allow_different_nesting: true,
+ },
+ MD035: {
+ style: "---",
+ },
+ MD036: false,
+ MD040: false,
+ MD045: false,
+ MD046: false,
+ },
+ ignores: [
+ "**/node_modules/**",
+ // markdown import demo
+ "**/*.snippet.md",
+ ],
+};
diff --git a/.markdownlint.json b/.markdownlint.json
deleted file mode 100644
index b6f98c5112d..00000000000
--- a/.markdownlint.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "default": true,
- "MD003": {
- "style": "atx"
- },
- "MD004": {
- "style": "dash"
- },
- "MD013": false,
- "MD024": {
- "allow_different_nesting": true
- },
- "MD035": {
- "style": "---"
- },
- "MD040": false,
- "MD045": false,
- "MD046": false,
- "MD049": false
-}
diff --git a/.markdownlintignore b/.markdownlintignore
deleted file mode 100644
index d5d67721c60..00000000000
--- a/.markdownlintignore
+++ /dev/null
@@ -1,4 +0,0 @@
-**/node_modules/**
-
-# markdown snippets
-*.snippet.md
diff --git a/README.md b/README.md
index 79175f4b469..bdc911b419c 100755
--- a/README.md
+++ b/README.md
@@ -1,46 +1,51 @@
-推荐你通过在线阅读网站进行阅读,体验更好,速度更快!
+**[English](./README_EN.md)** | **[日本語](./README_JA.md)** | **简体中文**
-- **[JavaGuide 在线阅读网站(新版,推荐 👍)](https://javaguide.cn/)**
-- [JavaGuide 在线阅读版(老版)](https://snailclimb.gitee.io/javaguide/#/)
-
-[
](https://sourl.cn/e7ee87)
+- 推荐在线阅读(体验更好,速度更快):[javaguide.cn](https://javaguide.cn/)
+- 面试突击版本(只保留重点,附带精美 PDF 下载):[interview.javaguide.cn](https://interview.javaguide.cn/)
[](https://github.com/Snailclimb/JavaGuide)
-[](https://javaguide.cn/)
-
-
-
-
[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)
+

+
-> - **面试专版**:准备 Java 面试的小伙伴可以考虑面试专版:**[《Java 面试指北 》](./zhuanlan/java-mian-shi-zhi-bei.md)** (质量很高,专为面试打造,配合 JavaGuide 食用)。
-> - **知识星球**:专属面试小册/一对一交流/简历修改/专属求职指南,欢迎加入 **[JavaGuide 知识星球](./about-the-author/zhishixingqiu-two-years.md)**(点击链接即可查看星球的详细介绍,一定确定自己真的需要再加入)。
-> - **使用建议** :有水平的面试官都是顺着项目经历挖掘技术问题。一定不要死记硬背技术八股文!详细的学习建议请参考:[JavaGuide 使用建议](./javaguide/use-suggestion.md)。
-> - **求个Star**:如果觉得 JavaGuide 的内容对你有帮助的话,还请点个免费的 Star,这是对我最大的鼓励,感谢各位一起同行,共勉!Github 地址:[https://github.com/Snailclimb/JavaGuide](https://github.com/Snailclimb/JavaGuide) 。
+> - **大模型实战项目**: [⭐AI 智能面试辅助平台 + RAG 知识库](https://javaguide.cn/zhuanlan/interview-guide.html)(基于 Spring Boot 4.0 + Java 21 + Spring AI 2.0,非常适合作为学习和简历项目,学习门槛低)。
+> - **面试资料补充**:
+> - [《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html):四年打磨,和 [JavaGuide 开源版](https://javaguide.cn/)的内容互补,带你从零开始系统准备面试!
+> - [《后端面试高频系统设计&场景题》](https://javaguide.cn/zhuanlan/back-end-interview-high-frequency-system-design-and-scenario-questions.html):30+ 道高频系统设计和场景面试,助你应对当下中大厂面试趋势。
+> - **使用建议** :如果你想要系统准备 Java 后端面试但又不知道如何开始的,可以参考 [Java 后端面试通关计划(后端通用)](https://javaguide.cn/interview-preparation/backend-interview-plan.html)。
+> - **求个 Star**:如果觉得 JavaGuide 的内容对你有帮助的话,还请点个免费的 Star,这是对我最大的鼓励,感谢各位一起同行,共勉!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)。
> - **转载须知**:以下所有文章如非文首说明为转载皆为 JavaGuide 原创,转载请在文首注明出处。如发现恶意抄袭/搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!
-
-

-
-
-## 项目相关
+## AI 应用开发面试指南
+
+面向后端开发者的 AI 应用开发、AI 编程实战与面试指南已开源,涵盖 LLM、Agent、RAG、MCP、Claude Code、Codex 等核心技术与工程实践。对标 JavaGuide!有帮助的话,欢迎 Star!
+
+- **项目地址**:[https://github.com/Snailclimb/AIGuide](https://github.com/Snailclimb/AIGuide)
+- **在线阅读**:[https://javaguide.cn/ai/](https://javaguide.cn/ai/)
-- [项目介绍](./docs/javaguide/intro.md)
-- [贡献指南](./docs/javaguide/contribution-guideline.md)
-- [常见问题](./docs/javaguide/faq.md)
+## 后端面试准备
+
+- [⭐Java 后端面试通关计划(涵盖后端通用体系)](./docs/interview-preparation/backend-interview-plan.md) (一定要看 :+1:)
+- [如何高效准备 Java 面试?](./docs/interview-preparation/teach-you-how-to-prepare-for-the-interview-hand-in-hand.md)
+- [Java 后端面试重点总结](./docs/interview-preparation/key-points-of-interview.md)
+- [Java 学习路线(最新版,4w+ 字)](./docs/interview-preparation/java-roadmap.md)
+- [程序员简历编写指南](./docs/interview-preparation/resume-guide.md)
+- [项目经验指南](./docs/interview-preparation/project-experience-guide.md)
+- [面试太紧张怎么办?](./docs/interview-preparation/how-to-handle-interview-nerves.md)
+- [校招没有实习经历怎么办?实习经历怎么写?](./docs/interview-preparation/internship-experience.md)
## Java
### 基础
-**知识点/面试题总结** : (必看:+1: ):
+**知识点/面试题总结**(必看:+1:):
- [Java 基础常见知识点&面试题总结(上)](./docs/java/basis/java-basic-questions-01.md)
- [Java 基础常见知识点&面试题总结(中)](./docs/java/basis/java-basic-questions-02.md)
@@ -62,8 +67,8 @@
**知识点/面试题总结**:
-- [Java 集合常见知识点&面试题总结(上)](./docs/java/collection/java-collection-questions-01.md) (必看 :+1:)
-- [Java 集合常见知识点&面试题总结(下)](./docs/java/collection/java-collection-questions-02.md) (必看 :+1:)
+- [Java 集合常见知识点&面试题总结(上)](./docs/java/collection/java-collection-questions-01.md) (必看 :+1:)
+- [Java 集合常见知识点&面试题总结(下)](./docs/java/collection/java-collection-questions-02.md) (必看 :+1:)
- [Java 容器使用注意事项总结](./docs/java/collection/java-collection-precautions-for-use.md)
**源码分析**:
@@ -72,17 +77,22 @@
- [LinkedList 核心源码分析](./docs/java/collection/linkedlist-source-code.md)
- [HashMap 核心源码+底层数据结构分析](./docs/java/collection/hashmap-source-code.md)
- [ConcurrentHashMap 核心源码+底层数据结构分析](./docs/java/collection/concurrent-hash-map-source-code.md)
+- [LinkedHashMap 核心源码分析](./docs/java/collection/linkedhashmap-source-code.md)
- [CopyOnWriteArrayList 核心源码分析](./docs/java/collection/copyonwritearraylist-source-code.md)
+- [ArrayBlockingQueue 核心源码分析](./docs/java/collection/arrayblockingqueue-source-code.md)
+- [PriorityQueue 核心源码分析](./docs/java/collection/priorityqueue-source-code.md)
+- [DelayQueue 核心源码分析](./docs/java/collection/delayqueue-source-code.md)
### IO
- [IO 基础知识总结](./docs/java/io/io-basis.md)
- [IO 设计模式总结](./docs/java/io/io-design-patterns.md)
- [IO 模型详解](./docs/java/io/io-model.md)
+- [NIO 核心知识总结](./docs/java/io/nio-basis.md)
### 并发
-**知识点/面试题总结** : (必看 :+1:)
+**知识点/面试题总结**(必看 :+1:)
- [Java 并发常见知识点&面试题总结(上)](./docs/java/concurrent/java-concurrent-questions-01.md)
- [Java 并发常见知识点&面试题总结(中)](./docs/java/concurrent/java-concurrent-questions-02.md)
@@ -90,6 +100,9 @@
**重要知识点详解**:
+- [Java 锁详解](./docs/java/concurrent/java-lock.md)
+- [乐观锁和悲观锁详解](./docs/java/concurrent/optimistic-lock-and-pessimistic-lock.md)
+- [CAS 详解](./docs/java/concurrent/cas.md)
- [JMM(Java 内存模型)详解](./docs/java/concurrent/jmm.md)
- **线程池**:[Java 线程池详解](./docs/java/concurrent/java-thread-pool-summary.md)、[Java 线程池最佳实践](./docs/java/concurrent/java-thread-pool-best-practices.md)
- [ThreadLocal 详解](./docs/java/concurrent/threadlocal.md)
@@ -98,9 +111,9 @@
- [AQS 详解](./docs/java/concurrent/aqs.md)
- [CompletableFuture 详解](./docs/java/concurrent/completablefuture-intro.md)
-### JVM (必看 :+1:)
+### JVM(必看 :+1:)
-JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle.com/javase/specs/jvms/se8/html/index.html) 和周志明老师的[《深入理解 Java 虚拟机(第 3 版)》](https://book.douban.com/subject/34907497/) (强烈建议阅读多遍!)。
+JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8](https://docs.oracle.com/javase/specs/jvms/se8/html/index.html) 和周志明老师的[《深入理解 Java 虚拟机(第 3 版)》](https://book.douban.com/subject/34907497/) (强烈建议阅读多遍!)。
- **[Java 内存区域](./docs/java/jvm/memory-area.md)**
- **[JVM 垃圾回收](./docs/java/jvm/jvm-garbage-collection.md)**
@@ -124,6 +137,10 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
- [Java 18 新特性概览](./docs/java/new-features/java18.md)
- [Java 19 新特性概览](./docs/java/new-features/java19.md)
- [Java 20 新特性概览](./docs/java/new-features/java20.md)
+- [Java 21 新特性概览](./docs/java/new-features/java21.md)
+- [Java 22 & 23 新特性概览](./docs/java/new-features/java22-23.md)
+- [Java 24 新特性概览](./docs/java/new-features/java24.md)
+- [Java 25 新特性概览](./docs/java/new-features/java25.md)
## 计算机基础
@@ -131,6 +148,12 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
- [操作系统常见知识点&面试题总结(上)](./docs/cs-basics/operating-system/operating-system-basic-questions-01.md)
- [操作系统常见知识点&面试题总结(下)](./docs/cs-basics/operating-system/operating-system-basic-questions-02.md)
+- [进程与线程详解:区别、状态、通信、上下文切换与虚拟线程](./docs/cs-basics/operating-system/process-and-thread.md)
+- [进程间通信(IPC)详解:管道、消息队列、共享内存、Socket 与 Binder](./docs/cs-basics/operating-system/ipc.md)
+- [死锁详解:四个必要条件、Java 死锁排查与数据库死锁处理](./docs/cs-basics/operating-system/dead-lock.md)
+- [虚拟内存详解:地址转换、TLB、缺页中断与页面置换](./docs/cs-basics/operating-system/virtual-memory.md)
+- [I/O 多路复用详解:select、poll、epoll 原理与区别](./docs/cs-basics/operating-system/io-multiplexing.md)
+- [零拷贝详解:mmap、sendfile 与 splice](./docs/cs-basics/operating-system/zero-copy.md)
- **Linux**:
- [后端程序员必备的 Linux 基础知识总结](./docs/cs-basics/operating-system/linux-intro.md)
- [Shell 编程基础知识总结](./docs/cs-basics/operating-system/shell-intro.md)
@@ -152,7 +175,11 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
- [HTTP 常见状态码(应用层)](./docs/cs-basics/network/http-status-codes.md)
- [DNS 域名系统详解(应用层)](./docs/cs-basics/network/dns.md)
- [TCP 三次握手和四次挥手(传输层)](./docs/cs-basics/network/tcp-connection-and-disconnection.md)
+- [TCP Keepalive 和 HTTP Keep-Alive 有什么区别?(传输层)](./docs/cs-basics/network/tcp-keepalive-vs-http-keepalive.md)
- [TCP 传输可靠性保障(传输层)](./docs/cs-basics/network/tcp-reliability-guarantee.md)
+- [能 Ping 通,TCP 就一定能连通吗?(传输层)](./docs/cs-basics/network/can-ping-but-tcp-may-not-connect.md)
+- [TCP 和 UDP 可以使用同一个端口吗?(传输层)](./docs/cs-basics/network/can-tcp-and-udp-use-the-same-port.md)
+- [一台主机最多能保持多少个 TCP 连接?(传输层)](./docs/cs-basics/network/maximum-number-of-tcp-connections-per-host.md)
- [ARP 协议详解(网络层)](./docs/cs-basics/network/arp.md)
- [NAT 协议详解(网络层)](./docs/cs-basics/network/nat.md)
- [网络攻击常见手段总结(安全)](./docs/cs-basics/network/network-attack-means.md)
@@ -174,17 +201,17 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
算法这部分内容非常重要,如果你不知道如何学习算法的话,可以看下我写的:
-- [算法学习书籍+资源推荐](https://www.zhihu.com/question/323359308/answer/1545320858) 。
+- [算法学习书籍+资源推荐](https://www.zhihu.com/question/323359308/answer/1545320858)。
- [如何刷 Leetcode?](https://www.zhihu.com/question/31092580/answer/1534887374)
**常见算法问题总结**:
-- [几道常见的字符串算法题总结 ](./docs/cs-basics/algorithms/string-algorithm-problems.md)
-- [几道常见的链表算法题总结 ](./docs/cs-basics/algorithms/linkedlist-algorithm-problems.md)
+- [几道常见的字符串算法题总结](./docs/cs-basics/algorithms/string-algorithm-problems.md)
+- [几道常见的链表算法题总结](./docs/cs-basics/algorithms/linkedlist-algorithm-problems.md)
- [剑指 offer 部分编程题](./docs/cs-basics/algorithms/the-sword-refers-to-offer.md)
- [十大经典排序算法](./docs/cs-basics/algorithms/10-classical-sorting-algorithms.md)
-另外,[GeeksforGeeks](https://www.geeksforgeeks.org/fundamentals-of-algorithms/) 这个网站总结了常见的算法 ,比较全面系统。
+另外,[GeeksforGeeks](https://www.geeksforgeeks.org/fundamentals-of-algorithms/) 这个网站总结了常见的算法,比较全面系统。
## 数据库
@@ -201,12 +228,13 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
**知识点/面试题总结:**
-- **[MySQL 常见知识点&面试题总结](./docs/database/mysql/mysql-questions-01.md)** (必看 :+1:)
+- **[MySQL 常见知识点&面试题总结](./docs/database/mysql/mysql-questions-01.md)** (必看 :+1:)
- [MySQL 高性能优化规范建议总结](./docs/database/mysql/mysql-high-performance-optimization-specification-recommendations.md)
**重要知识点:**
- [MySQL 索引详解](./docs/database/mysql/mysql-index.md)
+- [MySQL 索引失效场景总结](./docs/database/mysql/mysql-index-invalidation.md)
- [MySQL 事务隔离级别图文详解)](./docs/database/mysql/transaction-isolation-level.md)
- [MySQL 三大日志(binlog、redo log 和 undo log)详解](./docs/database/mysql/mysql-logs.md)
- [InnoDB 存储引擎对 MVCC 的实现](./docs/database/mysql/innodb-implementation-of-mvcc.md)
@@ -219,7 +247,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
### Redis
-**知识点/面试题总结** : (必看:+1: ):
+**知识点/面试题总结**(必看:+1:):
- [Redis 常见知识点&面试题总结(上)](./docs/database/redis/redis-questions-01.md)
- [Redis 常见知识点&面试题总结(下)](./docs/database/redis/redis-questions-02.md)
@@ -227,6 +255,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
**重要知识点:**
- [3 种常用的缓存读写策略详解](./docs/database/redis/3-commonly-used-cache-read-and-write-strategies.md)
+- [Redis 能做消息队列吗?怎么实现?](./docs/database/redis/redis-stream-mq.md)
- [Redis 5 种基本数据结构详解](./docs/database/redis/redis-data-structures-01.md)
- [Redis 3 种特殊数据结构详解](./docs/database/redis/redis-data-structures-02.md)
- [Redis 持久化机制详解](./docs/database/redis/redis-persistence.md)
@@ -249,7 +278,8 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
### Maven
-[Maven 核心概念总结](./docs/tools/maven/maven-core-concepts.md)
+- [Maven 核心概念总结](./docs/tools/maven/maven-core-concepts.md)
+- [Maven 最佳实践](./docs/tools/maven/maven-best-practices.md)
### Gradle
@@ -267,20 +297,20 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
## 系统设计
-- [系统设计常见面试题总结](./docs/system-design/system-design-questions.md)
-- [设计模式常见面试题总结](./docs/system-design/design-pattern.md)
+- [⭐系统设计常见面试题总结](./docs/system-design/system-design-questions.md)
+- [⭐设计模式常见面试题总结](https://interview.javaguide.cn/system-design/design-pattern.html)
### 基础
- [RestFul API 简明教程](./docs/system-design/basis/RESTfulAPI.md)
-- [软件工程简明教程简明教程](./docs/system-design/basis/software-engineering.md)
+- [软件工程简明教程](./docs/system-design/basis/software-engineering.md)
- [代码命名指南](./docs/system-design/basis/naming.md)
- [代码重构指南](./docs/system-design/basis/refactoring.md)
- [单元测试指南](./docs/system-design/basis/unit-test.md)
### 常用框架
-#### Spring/SpringBoot (必看 :+1:)
+#### Spring/SpringBoot(必看 :+1:)
**知识点/面试题总结** :
@@ -291,6 +321,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
**重要知识点详解**:
+- [IoC & AOP详解(快速搞懂)](./docs/system-design/framework/spring/ioc-and-aop.md)
- [Spring 事务详解](./docs/system-design/framework/spring/spring-transaction.md)
- [Spring 中的设计模式详解](./docs/system-design/framework/spring/spring-design-patterns-summary.md)
- [SpringBoot 自动装配原理详解](./docs/system-design/framework/spring/spring-boot-auto-assembly-principles.md)
@@ -309,13 +340,13 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
- [SSO 单点登录详解](./docs/system-design/security/sso-intro.md)
- [权限系统设计详解](./docs/system-design/security/design-of-authority-system.md)
-#### 数据脱敏
-
-数据脱敏说的就是我们根据特定的规则对敏感信息数据进行变形,比如我们把手机号、身份证号某些位数使用 \* 来代替。
+#### 数据安全
-#### 敏感词过滤
-
-[敏感词过滤方案总结](./docs/system-design/security/sentive-words-filter.md)
+- [常见加密算法总结](./docs/system-design/security/encryption-algorithms.md)
+- [敏感词过滤方案总结](./docs/system-design/security/sentive-words-filter.md)
+- [数据脱敏方案总结](./docs/system-design/security/data-desensitization.md)
+- [为什么前后端都要做数据校验](./docs/system-design/security/data-validation.md)
+- [为什么忘记密码时只能重置,不能告诉你原密码?](./docs/system-design/security/why-password-reset-instead-of-retrieval.md)
### 定时任务
@@ -327,12 +358,16 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
## 分布式
+- [⭐分布式高频面试题](https://interview.javaguide.cn/distributed-system/distributed-system.html)
+
### 理论&算法&协议
- [CAP 理论和 BASE 理论解读](https://javaguide.cn/distributed-system/protocol/cap-and-base-theorem.html)
- [Paxos 算法解读](https://javaguide.cn/distributed-system/protocol/paxos-algorithm.html)
- [Raft 算法解读](https://javaguide.cn/distributed-system/protocol/raft-algorithm.html)
-- [Gossip 协议详解](https://javaguide.cn/distributed-system/protocol/gossip-protocl.html)
+- [ZAB 协议解读](https://javaguide.cn/distributed-system/protocol/zab.html)
+- [Gossip 协议详解](https://javaguide.cn/distributed-system/protocol/gossip-protocol.html)
+- [一致性哈希算法详解](https://javaguide.cn/distributed-system/protocol/consistent-hashing.html)
### RPC
@@ -353,7 +388,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
### 分布式 ID
-- [分布式 ID 常见知识点&面试题总结](https://javaguide.cn/distributed-system/distributed-id.html)
+- [分布式ID介绍&实现方案总结](https://javaguide.cn/distributed-system/distributed-id.html)
- [分布式 ID 设计指南](https://javaguide.cn/distributed-system/distributed-id-design.html)
### 分布式锁
@@ -371,18 +406,17 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
## 高性能
-### 数据库读写分离&分库分表
+### 数据库优化
-[数据库读写分离和分库分表常见知识点&面试题总结](./docs/high-performance/read-and-write-separation-and-library-subtable.md)
+- [数据库读写分离和分库分表](./docs/high-performance/read-and-write-separation-and-library-subtable.md)
+- [数据冷热分离](./docs/high-performance/data-cold-hot-separation.md)
+- [常见 SQL 优化手段总结](./docs/high-performance/sql-optimization.md)
+- [深度分页介绍及优化建议](./docs/high-performance/deep-pagination-optimization.md)
### 负载均衡
[负载均衡常见知识点&面试题总结](./docs/high-performance/load-balancing.md)
-### SQL 优化
-
-[常见 SQL 优化手段总结](./docs/high-performance/sql-optimization.md)
-
### CDN
[CDN(内容分发网络)常见知识点&面试题总结](./docs/high-performance/cdn.md)
@@ -423,7 +457,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
**灾备** = 容灾 + 备份。
-- **备份**:将系统所产生的的所有重要数据多备份几份。
+- **备份**:将系统所产生的所有重要数据多备份几份。
- **容灾**:在异地建立两个完全相同的系统。当某个地方的系统突然挂掉,整个应用系统可以切换到另一个,这样系统就可以正常提供服务了。
**异地多活** 描述的是将服务部署在异地并且服务同时对外提供服务。和传统的灾备设计的最主要区别在于“多活”,即所有站点都是同时在对外提供服务的。异地多活是为了应对突发状况比如火灾、地震等自然或者人为灾害。
@@ -436,6 +470,6 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。
-
+
diff --git a/README_EN.md b/README_EN.md
new file mode 100644
index 00000000000..9d2228cf75c
--- /dev/null
+++ b/README_EN.md
@@ -0,0 +1,449 @@
+# JavaGuide
+
+**English** | **[日本語](./README_JA.md)** | **[简体中文](./README.md)**
+
+Recommended to read online for a better experience and faster speed: [javaguide.cn](https://javaguide.cn/)
+
+## AI Application Development Interview Guide
+
+An open-source guide for backend developers on AI application development, AI programming practices, and interviews, covering core technologies and engineering practices such as LLM, Agent, RAG, MCP, Claude Code, Codex, and more. Benchmarking JavaGuide! If it helps, welcome to Star!
+
+- **Project URL**: [https://github.com/Snailclimb/AIGuide](https://github.com/Snailclimb/AIGuide)
+- **Online Reading**: [https://javaguide.cn/ai/](https://javaguide.cn/ai/)
+
+## Backend Interview Preparation
+
+- [⭐Java Backend Interview Preparation Plan (Covering General Backend System)](./docs/interview-preparation/backend-interview-plan.md) (Must-read :+1:)
+- [How to Efficiently Prepare for Java Interviews?](./docs/interview-preparation/teach-you-how-to-prepare-for-the-interview-hand-in-hand.md)
+- [Key Summary of Java Backend Interviews](./docs/interview-preparation/key-points-of-interview.md)
+- [Java Learning Roadmap (Latest, 4w+ Words)](./docs/interview-preparation/java-roadmap.md)
+- [Programmer Resume Writing Guide](./docs/interview-preparation/resume-guide.md)
+- [Project Experience Guide](./docs/interview-preparation/project-experience-guide.md)
+- [How to Deal with Interview Nervousness?](./docs/interview-preparation/how-to-handle-interview-nerves.md)
+- [What to Do Without Internship Experience in Campus Recruitment? How to Write About Internship Experience?](./docs/interview-preparation/internship-experience.md)
+
+## Java
+
+### Java Basics
+
+**Knowledge Points/Interview Questions Summary** (Must-read :+1:):
+
+- [Summary of Common Java Basics Knowledge Points & Interview Questions (Part 1)](./docs/java/basis/java-basic-questions-01.md)
+- [Summary of Common Java Basics Knowledge Points & Interview Questions (Part 2)](./docs/java/basis/java-basic-questions-02.md)
+- [Summary of Common Java Basics Knowledge Points & Interview Questions (Part 3)](./docs/java/basis/java-basic-questions-03.md)
+
+**Important Knowledge Points Explanation**:
+
+- [Why is There Only Pass-by-Value in Java?](./docs/java/basis/why-there-only-value-passing-in-java.md)
+- [Serialization in Java Explained](./docs/java/basis/serialization.md)
+- [Generics & Wildcards Explained](./docs/java/basis/generics-and-wildcards.md)
+- [Java Reflection Mechanism Explained](./docs/java/basis/reflection.md)
+- [Java Proxy Pattern Explained](./docs/java/basis/proxy.md)
+- [BigDecimal Explained](./docs/java/basis/bigdecimal.md)
+- [Java Magic Class Unsafe Explained](./docs/java/basis/unsafe.md)
+- [Java SPI Mechanism Explained](./docs/java/basis/spi.md)
+- [Java Syntactic Sugar Explained](./docs/java/basis/syntactic-sugar.md)
+
+### Collections
+
+**Knowledge Points/Interview Questions Summary**:
+
+- [Summary of Common Java Collection Knowledge Points & Interview Questions (Part 1)](./docs/java/collection/java-collection-questions-01.md) (Must-read :+1:)
+- [Summary of Common Java Collection Knowledge Points & Interview Questions (Part 2)](./docs/java/collection/java-collection-questions-02.md) (Must-read :+1:)
+- [Summary of Java Container Usage Precautions](./docs/java/collection/java-collection-precautions-for-use.md)
+
+**Source Code Analysis**:
+
+- [ArrayList Core Source Code + Expansion Mechanism Analysis](./docs/java/collection/arraylist-source-code.md)
+- [LinkedList Core Source Code Analysis](./docs/java/collection/linkedlist-source-code.md)
+- [HashMap Core Source Code + Underlying Data Structure Analysis](./docs/java/collection/hashmap-source-code.md)
+- [ConcurrentHashMap Core Source Code + Underlying Data Structure Analysis](./docs/java/collection/concurrent-hash-map-source-code.md)
+- [LinkedHashMap Core Source Code Analysis](./docs/java/collection/linkedhashmap-source-code.md)
+- [CopyOnWriteArrayList Core Source Code Analysis](./docs/java/collection/copyonwritearraylist-source-code.md)
+- [ArrayBlockingQueue Core Source Code Analysis](./docs/java/collection/arrayblockingqueue-source-code.md)
+- [PriorityQueue Core Source Code Analysis](./docs/java/collection/priorityqueue-source-code.md)
+- [DelayQueue Core Source Code Analysis](./docs/java/collection/delayqueue-source-code.md)
+
+### IO
+
+- [IO Basic Knowledge Summary](./docs/java/io/io-basis.md)
+- [IO Design Patterns Summary](./docs/java/io/io-design-patterns.md)
+- [IO Model Explanation](./docs/java/io/io-model.md)
+- [NIO Core Knowledge Summary](./docs/java/io/nio-basis.md)
+
+### Concurrency
+
+**Knowledge Points/Interview Questions Summary** (Must-read :+1:)
+
+- [Common Java Concurrency Knowledge Points & Interview Questions Summary (Part 1)](./docs/java/concurrent/java-concurrent-questions-01.md)
+- [Common Java Concurrency Knowledge Points & Interview Questions Summary (Part 2)](./docs/java/concurrent/java-concurrent-questions-02.md)
+- [Common Java Concurrency Knowledge Points & Interview Questions Summary (Part 3)](./docs/java/concurrent/java-concurrent-questions-03.md)
+
+**Important Knowledge Points Explanation**:
+
+- [Optimistic Lock and Pessimistic Lock Explanation](./docs/java/concurrent/optimistic-lock-and-pessimistic-lock.md)
+- [CAS Explanation](./docs/java/concurrent/cas.md)
+- [JMM (Java Memory Model) Explanation](./docs/java/concurrent/jmm.md)
+- **Thread Pool**: [Java Thread Pool Explanation](./docs/java/concurrent/java-thread-pool-summary.md), [Java Thread Pool Best Practices](./docs/java/concurrent/java-thread-pool-best-practices.md)
+- [ThreadLocal Explanation](./docs/java/concurrent/threadlocal.md)
+- [Java Concurrent Collections Summary](./docs/java/concurrent/java-concurrent-collections.md)
+- [Atomic Classes Summary](./docs/java/concurrent/atomic-classes.md)
+- [AQS Explanation](./docs/java/concurrent/aqs.md)
+- [CompletableFuture Explanation](./docs/java/concurrent/completablefuture-intro.md)
+
+### JVM (Must-read :+1:)
+
+The JVM part mainly refers to the [JVM Specification - Java 8](https://docs.oracle.com/javase/specs/jvms/se8/html/index.html) and Zhou Zhiming's book [《Deep Understanding of Java Virtual Machine (3rd Edition)》](https://book.douban.com/subject/34907497/) (strongly recommend to read it several times!).
+
+- **[Java Memory Area](./docs/java/jvm/memory-area.md)**
+- **[JVM Garbage Collection](./docs/java/jvm/jvm-garbage-collection.md)**
+- [Class File Structure](./docs/java/jvm/class-file-structure.md)
+- **[Class Loading Process](./docs/java/jvm/class-loading-process.md)**
+- [Class Loader](./docs/java/jvm/classloader.md)
+- [【To Be Completed】Most Important JVM Parameters Summary (Half Translated)](./docs/java/jvm/jvm-parameters-intro.md)
+- [【Bonus】Understand JVM in Plain Language](./docs/java/jvm/jvm-intro.md)
+- [JDK Monitoring and Troubleshooting Tools](./docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md)
+
+### New Features
+
+- **Java 8**: [Java 8 New Features Summary (Translated)](./docs/java/new-features/java8-tutorial-translate.md), [Common Java 8 New Features Summary](./docs/java/new-features/java8-common-new-features.md)
+- [Java 9 New Features Overview](./docs/java/new-features/java9.md)
+- [Java 10 New Features Overview](./docs/java/new-features/java10.md)
+- [Java 11 New Features Overview](./docs/java/new-features/java11.md)
+- [Java 12 & 13 New Features Overview](./docs/java/new-features/java12-13.md)
+- [Java 14 & 15 New Features Overview](./docs/java/new-features/java14-15.md)
+- [Java 16 New Features Overview](./docs/java/new-features/java16.md)
+- [Java 17 New Features Overview](./docs/java/new-features/java17.md)
+- [Java 18 New Features Overview](./docs/java/new-features/java18.md)
+- [Java 19 New Features Overview](./docs/java/new-features/java19.md)
+- [Java 20 New Features Overview](./docs/java/new-features/java20.md)
+- [Java 21 New Features Overview](./docs/java/new-features/java21.md)
+- [Java 22 & 23 New Features Overview](./docs/java/new-features/java22-23.md)
+- [Java 24 New Features Overview](./docs/java/new-features/java24.md)
+- [Java 25 New Features Overview](./docs/java/new-features/java25.md)
+
+## Computer Fundamentals
+
+### Operating Systems
+
+- [Summary of Common Operating System Knowledge Points & Interview Questions (Part 1)](./docs/cs-basics/operating-system/operating-system-basic-questions-01.md)
+- [Summary of Common Operating System Knowledge Points & Interview Questions (Part 2)](./docs/cs-basics/operating-system/operating-system-basic-questions-02.md)
+- **Linux**:
+ - [Summary of Essential Linux Basics for Backend Developers](./docs/cs-basics/operating-system/linux-intro.md)
+ - [Summary of Shell Scripting Basics](./docs/cs-basics/operating-system/shell-intro.md)
+
+### Networking
+
+**Knowledge Points/Interview Questions Summary**:
+
+- [Summary of Common Computer Network Knowledge Points & Interview Questions (Part 1)](./docs/cs-basics/network/other-network-questions.md)
+- [Summary of Common Computer Network Knowledge Points & Interview Questions (Part 2)](./docs/cs-basics/network/other-network-questions2.md)
+- [Summary of Professor Xie Xiren's "Computer Network" Content (Supplementary)](./docs/cs-basics/network/computer-network-xiexiren-summary.md)
+
+**Important Knowledge Points Explanation**:
+
+- [Detailed Explanation of the OSI and TCP/IP Network Layer Models (Basics)](./docs/cs-basics/network/osi-and-tcp-ip-model.md)
+- [Summary of Common Application Layer Protocols (Application Layer)](./docs/cs-basics/network/application-layer-protocol.md)
+- [HTTP vs HTTPS (Application Layer)](./docs/cs-basics/network/http-vs-https.md)
+- [HTTP 1.0 vs HTTP 1.1 (Application Layer)](./docs/cs-basics/network/http1.0-vs-http1.1.md)
+- [Common HTTP Status Codes (Application Layer)](./docs/cs-basics/network/http-status-codes.md)
+- [Detailed Explanation of the DNS Domain Name System (Application Layer)](./docs/cs-basics/network/dns.md)
+- [TCP Three-Way Handshake and Four-Way Termination (Transport Layer)](./docs/cs-basics/network/tcp-connection-and-disconnection.md)
+- [What's the Difference Between TCP Keepalive and HTTP Keep-Alive? (Transport Layer)](./docs/cs-basics/network/tcp-keepalive-vs-http-keepalive.md)
+- [TCP Transmission Reliability Guarantee (Transport Layer)](./docs/cs-basics/network/tcp-reliability-guarantee.md)
+- [If You Can Ping Through, Does TCP Definitely Connect? (Transport Layer)](./docs/cs-basics/network/can-ping-but-tcp-may-not-connect.md)
+- [Can TCP and UDP Use the Same Port? (Transport Layer)](./docs/cs-basics/network/can-tcp-and-udp-use-the-same-port.md)
+- [What's the Maximum Number of TCP Connections a Host Can Maintain? (Transport Layer)](./docs/cs-basics/network/maximum-number-of-tcp-connections-per-host.md)
+- [Detailed Explanation of the ARP Protocol (Network Layer)](./docs/cs-basics/network/arp.md)
+- [Detailed Explanation of the NAT Protocol (Network Layer)](./docs/cs-basics/network/nat.md)
+- [Summary of Common Network Attack Means (Security)](./docs/cs-basics/network/network-attack-means.md)
+
+### Data Structures
+
+**Illustrated Data Structures:**
+
+- [Linear Data Structures: Arrays, Linked Lists, Stacks, Queues](./docs/cs-basics/data-structure/linear-data-structure.md)
+- [Graphs](./docs/cs-basics/data-structure/graph.md)
+- [Heaps](./docs/cs-basics/data-structure/heap.md)
+- [Trees](./docs/cs-basics/data-structure/tree.md): Focus on [Red-Black Trees](./docs/cs-basics/data-structure/red-black-tree.md), B-, B+, B\* Trees, and LSM Trees
+
+Other Commonly Used Data Structures:
+
+- [Bloom Filters](./docs/cs-basics/data-structure/bloom-filter.md)
+
+### Algorithms
+
+The algorithm part is very important. If you don't know how to learn algorithms, you can refer to:
+
+- [Recommended Algorithm Learning Books and Resources](https://www.zhihu.com/question/323359308/answer/1545320858).
+- [How to Solve LeetCode Problems?](https://www.zhihu.com/question/31092580/answer/1534887374)
+
+**Summary of Common Algorithm Problems**:
+
+- [Summary of Several Common String Algorithm Problems](./docs/cs-basics/algorithms/string-algorithm-problems.md)
+- [Summary of Several Common Linked List Algorithm Problems](./docs/cs-basics/algorithms/linkedlist-algorithm-problems.md)
+- [Part of the Coding Questions from the "Sword Refers to Offer"](./docs/cs-basics/algorithms/the-sword-refers-to-offer.md)
+- [Ten Classic Sorting Algorithms](./docs/cs-basics/algorithms/10-classical-sorting-algorithms.md)
+
+Additionally, [GeeksforGeeks](https://www.geeksforgeeks.org/fundamentals-of-algorithms/) has a comprehensive summary of common algorithms.
+
+## Database
+
+### Database Basics
+
+- [Summary of Database Basics](./docs/database/basis.md)
+- [Summary of NoSQL Basics](./docs/database/nosql.md)
+- [Explanation of Character Sets](./docs/database/character-set.md)
+- SQL:
+ - [Summary of SQL Syntax Basics](./docs/database/sql/sql-syntax-summary.md)
+ - [Summary of Common SQL Interview Questions](./docs/database/sql/sql-questions-01.md)
+
+### MySQL
+
+**Knowledge Points/Interview Questions Summary:**
+
+- **[MySQL Common Knowledge Points & Interview Questions Summary](./docs/database/mysql/mysql-questions-01.md)** (Must-read :+1:)
+- [MySQL High-Performance Optimization Specification Recommendations](./docs/database/mysql/mysql-high-performance-optimization-specification-recommendations.md)
+
+**Important Knowledge Points:**
+
+- [MySQL Index Details](./docs/database/mysql/mysql-index.md)
+- [Summary of MySQL Index Invalidation Scenarios](./docs/database/mysql/mysql-index-invalidation.md)
+- [Detailed Explanation of MySQL Transaction Isolation Levels (with Pictures)](./docs/database/mysql/transaction-isolation-level.md)
+- [Detailed Explanation of MySQL's Three Logs (binlog, redo log, and undo log)](./docs/database/mysql/mysql-logs.md)
+- [InnoDB Storage Engine's Implementation of MVCC](./docs/database/mysql/innodb-implementation-of-mvcc.md)
+- [How SQL Statements are Executed in MySQL](./docs/database/mysql/how-sql-executed-in-mysql.md)
+- [Detailed Explanation of MySQL Query Cache](./docs/database/mysql/mysql-query-cache.md)
+- [MySQL Query Execution Plan Analysis](./docs/database/mysql/mysql-query-execution-plan.md)
+- [Are MySQL Auto-Increment Primary Keys Always Continuous?](./docs/database/mysql/mysql-auto-increment-primary-key-continuous.md)
+- [Suggestions on Storing Time-Related Data in MySQL](./docs/database/mysql/some-thoughts-on-database-storage-time.md)
+- [Index Invalidation Caused by Implicit Conversion in MySQL](./docs/database/mysql/index-invalidation-caused-by-implicit-conversion.md)
+
+### Redis
+
+**Knowledge Points/Interview Questions Summary** (Must-read :+1:):
+
+- [Redis Common Knowledge Points & Interview Questions Summary (Part 1)](./docs/database/redis/redis-questions-01.md)
+- [Redis Common Knowledge Points & Interview Questions Summary (Part 2)](./docs/database/redis/redis-questions-02.md)
+
+**Important Knowledge Points:**
+
+- [Detailed Explanation of 3 Common Cache Read and Write Strategies](./docs/database/redis/3-commonly-used-cache-read-and-write-strategies.md)
+- [Can Redis Be Used as a Message Queue? How to Implement It?](./docs/database/redis/redis-stream-mq.md)
+- [Detailed Explanation of Redis' 5 Basic Data Structures](./docs/database/redis/redis-data-structures-01.md)
+- [Detailed Explanation of Redis' 3 Special Data Structures](./docs/database/redis/redis-data-structures-02.md)
+- [Detailed Explanation of Redis Persistence Mechanism](./docs/database/redis/redis-persistence.md)
+- [Detailed Explanation of Redis Memory Fragmentation](./docs/database/redis/redis-memory-fragmentation.md)
+- [Summary of Common Causes of Redis Blocking](./docs/database/redis/redis-common-blocking-problems-summary.md)
+- [Detailed Explanation of Redis Cluster](./docs/database/redis/redis-cluster.md)
+
+### MongoDB
+
+- [MongoDB Common Knowledge Points & Interview Questions Summary (Part 1)](./docs/database/mongodb/mongodb-questions-01.md)
+- [MongoDB Common Knowledge Points & Interview Questions Summary (Part 2)](./docs/database/mongodb/mongodb-questions-02.md)
+
+## Search Engines
+
+[Elasticsearch Common Interview Questions Summary (Paid)](./docs/database/elasticsearch/elasticsearch-questions-01.md)
+
+
+
+## Development Tools
+
+### Maven
+
+- [Maven Core Concepts Summary](./docs/tools/maven/maven-core-concepts.md)
+- [Maven Best Practices](./docs/tools/maven/maven-best-practices.md)
+
+### Gradle
+
+[Gradle Core Concepts Summary](./docs/tools/gradle/gradle-core-concepts.md) (Optional, Maven is still more widely used in China)
+
+### Docker
+
+- [Docker Core Concepts Summary](./docs/tools/docker/docker-intro.md)
+- [Docker in Action](./docs/tools/docker/docker-in-action.md)
+
+### Git
+
+- [Git Core Concepts Summary](./docs/tools/git/git-intro.md)
+- [Useful GitHub Tips Summary](./docs/tools/git/github-tips.md)
+
+## System Design
+
+- [⭐Common System Design Interview Questions Summary](./docs/system-design/system-design-questions.md)
+- [⭐Common Design Pattern Interview Questions Summary](https://interview.javaguide.cn/system-design/design-pattern.html)
+
+### System Design Basics
+
+- [A Brief Tutorial on RESTful API](./docs/system-design/basis/RESTfulAPI.md)
+- [A Brief Tutorial on Software Engineering](./docs/system-design/basis/software-engineering.md)
+- [Code Naming Guide](./docs/system-design/basis/naming.md)
+- [Code Refactoring Guide](./docs/system-design/basis/refactoring.md)
+- [Unit Testing Guide](./docs/system-design/basis/unit-test.md)
+
+### Common Frameworks
+
+#### Spring/SpringBoot (Must-read :+1:)
+
+**Knowledge Points/Interview Questions Summary**:
+
+- [Summary of Common Spring Knowledge Points and Interview Questions](./docs/system-design/framework/spring/spring-knowledge-and-questions-summary.md)
+- [Summary of Common SpringBoot Knowledge Points and Interview Questions](./docs/system-design/framework/spring/springboot-knowledge-and-questions-summary.md)
+- [Summary of Common Spring/Spring Boot Annotations](./docs/system-design/framework/spring/spring-common-annotations.md)
+- [SpringBoot Beginner's Guide](https://github.com/Snailclimb/springboot-guide)
+
+**Detailed Explanation of Important Knowledge Points**:
+
+- [Detailed Explanation of IoC & AOP (Quick Understanding)](./docs/system-design/framework/spring/ioc-and-aop.md)
+- [Detailed Explanation of Spring Transactions](./docs/system-design/framework/spring/spring-transaction.md)
+- [Detailed Explanation of Design Patterns in Spring](./docs/system-design/framework/spring/spring-design-patterns-summary.md)
+- [Detailed Explanation of SpringBoot Auto-Configuration Principles](./docs/system-design/framework/spring/spring-boot-auto-assembly-principles.md)
+
+#### MyBatis
+
+[Summary of Common MyBatis Interview Questions](./docs/system-design/framework/mybatis/mybatis-interview.md)
+
+### Security
+
+#### Authentication and Authorization
+
+- [Detailed Explanation of Authentication and Authorization Fundamentals](./docs/system-design/security/basis-of-authority-certification.md)
+- [Detailed Explanation of JWT Basics](./docs/system-design/security/jwt-intro.md)
+- [Analysis of Advantages and Disadvantages of JWT and Common Problem Solutions](./docs/system-design/security/advantages-and-disadvantages-of-jwt.md)
+- [Detailed Explanation of SSO (Single Sign-On)](./docs/system-design/security/sso-intro.md)
+- [Detailed Explanation of Permission System Design](./docs/system-design/security/design-of-authority-system.md)
+
+#### Data Security
+
+- [Summary of Common Encryption Algorithms](./docs/system-design/security/encryption-algorithms.md)
+- [Summary of Sensitive Word Filtering Solutions](./docs/system-design/security/sentive-words-filter.md)
+- [Summary of Data Desensitization Solutions](./docs/system-design/security/data-desensitization.md)
+- [Why Both Front-end and Back-end Need to Perform Data Validation](./docs/system-design/security/data-validation.md)
+- [Why Can Passwords Only Be Reset When Forgotten, Not Told the Original Password?](./docs/system-design/security/why-password-reset-instead-of-retrieval.md)
+
+### Scheduled Tasks
+
+[Detailed Explanation of Java Scheduled Tasks](./docs/system-design/schedule-task.md)
+
+### Web Real-time Message Pushing
+
+[Detailed Explanation of Web Real-time Message Pushing](./docs/system-design/web-real-time-message-push.md)
+
+## Distributed System
+
+- [⭐High-Frequency Distributed System Interview Questions](https://interview.javaguide.cn/distributed-system/distributed-system.html)
+
+### Theory, Algorithms, and Protocols
+
+- [Interpretation of CAP Theory and BASE Theory](https://javaguide.cn/distributed-system/protocol/cap-and-base-theorem.html)
+- [Interpretation of Paxos Algorithm](https://javaguide.cn/distributed-system/protocol/paxos-algorithm.html)
+- [Interpretation of Raft Algorithm](https://javaguide.cn/distributed-system/protocol/raft-algorithm.html)
+- [Interpretation of ZAB Protocol](https://javaguide.cn/distributed-system/protocol/zab.html)
+- [Detailed Explanation of Gossip Protocol](https://javaguide.cn/distributed-system/protocol/gossip-protocol.html)
+- [Detailed Explanation of Consistent Hashing Algorithm](https://javaguide.cn/distributed-system/protocol/consistent-hashing.html)
+
+### RPC
+
+- [Summary of RPC Basics](https://javaguide.cn/distributed-system/rpc/rpc-intro.html)
+- [Summary of Common Dubbo Knowledge Points and Interview Questions](https://javaguide.cn/distributed-system/rpc/dubbo.html)
+
+### ZooKeeper
+
+> These two articles may have some overlapping content, it is recommended to read both.
+
+- [Summary of ZooKeeper Relevant Concepts (Beginner)](https://javaguide.cn/distributed-system/distributed-process-coordination/zookeeper/zookeeper-intro.html)
+- [Summary of ZooKeeper Relevant Concepts (Advanced)](https://javaguide.cn/distributed-system/distributed-process-coordination/zookeeper/zookeeper-plus.html)
+
+### API Gateway
+
+- [Summary of API Gateway Basics](https://javaguide.cn/distributed-system/api-gateway.html)
+- [Summary of Common Spring Cloud Gateway Knowledge Points and Interview Questions](./docs/distributed-system/spring-cloud-gateway-questions.md)
+
+### Distributed ID
+
+- [Introduction to Distributed ID and Summary of Implementation Solutions](https://javaguide.cn/distributed-system/distributed-id.html)
+- [Design Guide for Distributed ID](https://javaguide.cn/distributed-system/distributed-id-design.html)
+
+### Distributed Lock
+
+- [Introduction to Distributed Locks](https://javaguide.cn/distributed-system/distributed-lock.html)
+- [Summary of Common Distributed Lock Implementation Solutions](https://javaguide.cn/distributed-system/distributed-lock-implementations.html)
+
+### Distributed Transactions
+
+[Summary of Common Distributed Transaction Knowledge Points and Interview Questions](https://javaguide.cn/distributed-system/distributed-transaction.html)
+
+### Distributed Configuration Center
+
+[Summary of Common Distributed Configuration Center Knowledge Points and Interview Questions](./docs/distributed-system/distributed-configuration-center.md)
+
+## High Performance
+
+### Database Optimization
+
+- [Database Read-Write Separation and Database Sharding](./docs/high-performance/read-and-write-separation-and-library-subtable.md)
+- [Data Separation of Cold and Hot Data](./docs/high-performance/data-cold-hot-separation.md)
+- [Summary of Common SQL Optimization Methods](./docs/high-performance/sql-optimization.md)
+- [Introduction to Deep Pagination and Optimization Suggestions](./docs/high-performance/deep-pagination-optimization.md)
+
+### Load Balancing
+
+[Summary of Common Load Balancing Knowledge Points and Interview Questions](./docs/high-performance/load-balancing.md)
+
+### CDN
+
+[Summary of Common CDN (Content Delivery Network) Knowledge Points and Interview Questions](./docs/high-performance/cdn.md)
+
+### Message Queue
+
+- [Summary of Message Queue Basic Knowledge](./docs/high-performance/message-queue/message-queue.md)
+- [Summary of Common Disruptor Knowledge Points and Interview Questions](./docs/high-performance/message-queue/disruptor-questions.md)
+- [Summary of Common RabbitMQ Knowledge Points and Interview Questions](./docs/high-performance/message-queue/rabbitmq-questions.md)
+- [Summary of Common RocketMQ Knowledge Points and Interview Questions](./docs/high-performance/message-queue/rocketmq-questions.md)
+- [Summary of Common Kafka Knowledge Points and Interview Questions](./docs/high-performance/message-queue/kafka-questions-01.md)
+
+## High Availability
+
+[Guide to High Availability System Design](./docs/high-availability/high-availability-system-design.md)
+
+### Redundancy Design
+
+[Detailed Explanation of Redundancy Design](./docs/high-availability/redundancy.md)
+
+### Rate Limiting
+
+[Detailed Explanation of Service Rate Limiting](./docs/high-availability/limit-request.md)
+
+### Fallback & Circuit Breaker
+
+[Detailed Explanation of Fallback & Circuit Breaker](./docs/high-availability/fallback-and-circuit-breaker.md)
+
+### Timeout & Retry
+
+[Detailed Explanation of Timeout & Retry](./docs/high-availability/timeout-and-retry.md)
+
+### Clustering
+
+Deploying multiple instances of the same service to avoid single point of failure.
+
+### Disaster Recovery Design and Active-Active Deployment
+
+**Disaster Recovery** = Disaster Tolerance + Backup.
+
+- **Backup**: Backing up all important data generated by the system multiple times.
+- **Disaster Tolerance**: Establishing two completely identical systems in different locations. When the system in one location suddenly fails, the entire application system can be switched to the other one, so that the system can continue to provide services normally.
+
+**Active-Active Deployment** describes deploying services in different locations and simultaneously providing services externally. The main difference from traditional disaster recovery design is the "active-active" nature, i.e., all sites are simultaneously providing external services. Active-active deployment is to cope with unexpected situations such as fires, earthquakes and other natural or man-made disasters.
+
+## Star Trend
+
+
+
+## Official Public Account
+
+If you want to stay up-to-date with my latest articles and share my valuable content, you can follow my official public account.
+
+
+
+
diff --git a/README_JA.md b/README_JA.md
new file mode 100644
index 00000000000..b715a9cfb74
--- /dev/null
+++ b/README_JA.md
@@ -0,0 +1,432 @@
+**[English](./README_EN.md)** | **日本語** | **[简体中文](./README.md)**
+
+より快適でスピーディーな体験のため、オンライン閲覧プラットフォームでの閲覧をおすすめします!リンク: [javaguide.cn](https://javaguide.cn/)。
+
+## プロジェクト関連
+
+- [プロジェクト紹介](https://javaguide.cn/javaguide/intro.html)
+- [使い方の提案](https://javaguide.cn/javaguide/use-suggestion.html)
+- [コントリビューションガイド](https://javaguide.cn/javaguide/contribution-guideline.html)
+- [FAQ](https://javaguide.cn/javaguide/faq.html)
+
+## Java
+
+### 基礎
+
+**知識ポイント/面接問題のまとめ**: (必見 :+1:):
+
+- [Java 基礎のよく出る知識ポイント&面接問題まとめ(その 1)](./docs/java/basis/java-basic-questions-01.md)
+- [Java 基礎のよく出る知識ポイント&面接問題まとめ(その 2)](./docs/java/basis/java-basic-questions-02.md)
+- [Java 基礎のよく出る知識ポイント&面接問題まとめ(その 3)](./docs/java/basis/java-basic-questions-03.md)
+
+**重要な知識ポイントの解説**:
+
+- [Java はなぜ値渡ししかないのか?](./docs/java/basis/why-there-only-value-passing-in-java.md)
+- [Java のシリアライズ詳解](./docs/java/basis/serialization.md)
+- [ジェネリクス&ワイルドカード詳解](./docs/java/basis/generics-and-wildcards.md)
+- [Java リフレクション機構詳解](./docs/java/basis/reflection.md)
+- [Java プロキシパターン詳解](./docs/java/basis/proxy.md)
+- [BigDecimal 詳解](./docs/java/basis/bigdecimal.md)
+- [Java のマジッククラス Unsafe 詳解](./docs/java/basis/unsafe.md)
+- [Java SPI 機構詳解](./docs/java/basis/spi.md)
+- [Java のシンタックスシュガー詳解](./docs/java/basis/syntactic-sugar.md)
+
+### コレクション
+
+**知識ポイント/面接問題のまとめ**:
+
+- [Java コレクションのよく出る知識ポイント&面接問題まとめ(その 1)](./docs/java/collection/java-collection-questions-01.md) (必見 :+1:)
+- [Java コレクションのよく出る知識ポイント&面接問題まとめ(その 2)](./docs/java/collection/java-collection-questions-02.md) (必見 :+1:)
+- [Java コンテナ使用上の注意点まとめ](./docs/java/collection/java-collection-precautions-for-use.md)
+
+**ソースコード解析**:
+
+- [ArrayList コアソースコード+拡張メカニズム解析](./docs/java/collection/arraylist-source-code.md)
+- [LinkedList コアソースコード解析](./docs/java/collection/linkedlist-source-code.md)
+- [HashMap コアソースコード+基盤データ構造解析](./docs/java/collection/hashmap-source-code.md)
+
+# Java コレクション&並行処理シリーズ
+
+## コレクション
+
+- [ConcurrentHashMap コアソースコード+基盤データ構造解析](./docs/java/collection/concurrent-hash-map-source-code.md)
+- [LinkedHashMap コアソースコード解析](./docs/java/collection/linkedhashmap-source-code.md)
+- [CopyOnWriteArrayList コアソースコード解析](./docs/java/collection/copyonwritearraylist-source-code.md)
+- [ArrayBlockingQueue コアソースコード解析](./docs/java/collection/arrayblockingqueue-source-code.md)
+- [PriorityQueue コアソースコード解析](./docs/java/collection/priorityqueue-source-code.md)
+- [DelayQueue コアソースコード解析](./docs/java/collection/delayqueue-source-code.md)
+
+### IO
+
+- [IO 基礎知識まとめ](./docs/java/io/io-basis.md)
+- [IO デザインパターンまとめ](./docs/java/io/io-design-patterns.md)
+- [IO モデル詳解](./docs/java/io/io-model.md)
+- [NIO コア知識まとめ](./docs/java/io/nio-basis.md)
+
+### 並行処理
+
+**知識ポイント/面接問題のまとめ** : (必読 :+1:)
+
+- [Java 並行処理のよく出る知識ポイント&面接問題まとめ(その 1)](./docs/java/concurrent/java-concurrent-questions-01.md)
+- [Java 並行処理のよく出る知識ポイント&面接問題まとめ(その 2)](./docs/java/concurrent/java-concurrent-questions-02.md)
+- [Java 並行処理のよく出る知識ポイント&面接問題まとめ(その 3)](./docs/java/concurrent/java-concurrent-questions-03.md)
+
+**重要な知識ポイントの解説**:
+
+- [楽観ロックと悲観ロック詳解](./docs/java/concurrent/optimistic-lock-and-pessimistic-lock.md)
+- [CAS 詳解](./docs/java/concurrent/cas.md)
+- [JMM(Java メモリモデル)詳解](./docs/java/concurrent/jmm.md)
+- **スレッドプール**: [Java スレッドプール詳解](./docs/java/concurrent/java-thread-pool-summary.md)、[Java スレッドプールのベストプラクティス](./docs/java/concurrent/java-thread-pool-best-practices.md)
+- [ThreadLocal 詳解](./docs/java/concurrent/threadlocal.md)
+- [Java 並行コレクションまとめ](./docs/java/concurrent/java-concurrent-collections.md)
+- [Atomic クラスまとめ](./docs/java/concurrent/atomic-classes.md)
+- [AQS 詳解](./docs/java/concurrent/aqs.md)
+- [CompletableFuture 詳解](./docs/java/concurrent/completablefuture-intro.md)
+
+### JVM (必読 :+1:)
+
+JVM の部分は主に [JVM 仕様 - Java 8](https://docs.oracle.com/javase/specs/jvms/se8/html/index.html) と、周志明氏の著書 [《Java 仮想マシンの深い理解(第 3 版)》](https://book.douban.com/subject/34907497/)(何度も読むことを強くおすすめします!)を参考にしています。
+
+- **[Java メモリ領域](./docs/java/jvm/memory-area.md)**
+- **[JVM ガベージコレクション](./docs/java/jvm/jvm-garbage-collection.md)**
+- [クラスファイルの構造](./docs/java/jvm/class-file-structure.md)
+- **[クラスローディングのプロセス](./docs/java/jvm/class-loading-process.md)**
+- [クラスローダー](./docs/java/jvm/classloader.md)
+- [【未完成】最も重要な JVM パラメータまとめ(一部翻訳)](./docs/java/jvm/jvm-parameters-intro.md)
+- [【おまけ】わかりやすく学ぶ JVM](./docs/java/jvm/jvm-intro.md)
+- [JDK 監視・トラブルシューティングツール](./docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md)
+
+### 新機能
+
+- **Java 8**: [Java 8 新機能まとめ(翻訳)](./docs/java/new-features/java8-tutorial-translate.md)、[Java 8 のよく使う新機能まとめ](./docs/java/new-features/java8-common-new-features.md)
+- [Java 9 新機能概要](./docs/java/new-features/java9.md)
+- [Java 10 新機能概要](./docs/java/new-features/java10.md)
+- [Java 11 新機能概要](./docs/java/new-features/java11.md)
+- [Java 12 & 13 新機能概要](./docs/java/new-features/java12-13.md)
+- [Java 14 & 15 新機能概要](./docs/java/new-features/java14-15.md)
+- [Java 16 新機能概要](./docs/java/new-features/java16.md)
+- [Java 17 新機能概要](./docs/java/new-features/java17.md)
+- [Java 18 新機能概要](./docs/java/new-features/java18.md)
+- [Java 19 新機能概要](./docs/java/new-features/java19.md)
+- [Java 20 新機能概要](./docs/java/new-features/java20.md)
+
+# Java 21、22、23、24、25 の新機能概要
+
+## コンピュータ基礎
+
+### オペレーティングシステム
+
+- [オペレーティングシステムのよく出る知識ポイント&面接問題まとめ(その 1)](./docs/cs-basics/operating-system/operating-system-basic-questions-01.md)
+- [オペレーティングシステムのよく出る知識ポイント&面接問題まとめ(その 2)](./docs/cs-basics/operating-system/operating-system-basic-questions-02.md)
+- **Linux**:
+ - [バックエンド開発者が押さえておくべき Linux 基礎まとめ](./docs/cs-basics/operating-system/linux-intro.md)
+ - [シェルスクリプト基礎まとめ](./docs/cs-basics/operating-system/shell-intro.md)
+
+### ネットワーク
+
+**知識ポイント/面接問題のまとめ**:
+
+- [コンピュータネットワークのよく出る知識ポイント&面接問題まとめ(その 1)](./docs/cs-basics/network/other-network-questions.md)
+- [コンピュータネットワークのよく出る知識ポイント&面接問題まとめ(その 2)](./docs/cs-basics/network/other-network-questions2.md)
+- [謝希仁教授『コンピュータネットワーク』内容まとめ(補足)](./docs/cs-basics/network/computer-network-xiexiren-summary.md)
+
+**重要概念の解説**:
+
+- [OSI と TCP/IP ネットワーク階層モデル詳解(基礎)](./docs/cs-basics/network/osi-and-tcp-ip-model.md)
+- [よく使うアプリケーション層プロトコルまとめ(アプリケーション層)](./docs/cs-basics/network/application-layer-protocol.md)
+- [HTTP と HTTPS の比較(アプリケーション層)](./docs/cs-basics/network/http-vs-https.md)
+- [HTTP 1.0 と HTTP 1.1 の比較(アプリケーション層)](./docs/cs-basics/network/http1.0-vs-http1.1.md)
+- [よく出る HTTP ステータスコード(アプリケーション層)](./docs/cs-basics/network/http-status-codes.md)
+- [DNS ドメインネームシステム詳解(アプリケーション層)](./docs/cs-basics/network/dns.md)
+- [TCP の 3 ウェイハンドシェイクと 4 ウェイハンドシェイク(トランスポート層)](./docs/cs-basics/network/tcp-connection-and-disconnection.md)
+- [TCP 通信の信頼性保証(トランスポート層)](./docs/cs-basics/network/tcp-reliability-guarantee.md)
+- [ARP プロトコル詳解(ネットワーク層)](./docs/cs-basics/network/arp.md)
+- [NAT プロトコル詳解(ネットワーク層)](./docs/cs-basics/network/nat.md)
+- [よくあるネットワーク攻撃手段まとめ(セキュリティ)](./docs/cs-basics/network/network-attack-means.md)
+
+### データ構造
+
+**図解データ構造:**
+
+- [線形データ構造: 配列、連結リスト、スタック、キュー](./docs/cs-basics/data-structure/linear-data-structure.md)
+- [グラフ](./docs/cs-basics/data-structure/graph.md)
+- [ヒープ](./docs/cs-basics/data-structure/heap.md)
+- [木](./docs/cs-basics/data-structure/tree.md): [赤黒木](./docs/cs-basics/data-structure/red-black-tree.md)、B 木、B+ 木、B\* 木、LSM 木を重点的に解説
+
+その他のよく使うデータ構造:
+
+- [ブルームフィルター](./docs/cs-basics/data-structure/bloom-filter.md)
+
+### アルゴリズム
+
+アルゴリズムの部分は非常に重要です。アルゴリズムの学習方法がわからない場合は、以下を参考にしてください:
+
+- [おすすめのアルゴリズム学習書籍・リソース](https://www.zhihu.com/question/323359308/answer/1545320858)。
+- [LeetCode の問題はどう解くべきか?](https://www.zhihu.com/question/31092580/answer/1534887374)
+
+**よく出るアルゴリズム問題まとめ**:
+
+- [よく出る文字列アルゴリズム問題まとめ](./docs/cs-basics/algorithms/string-algorithm-problems.md)
+- [よく出る連結リストアルゴリズム問題まとめ](./docs/cs-basics/algorithms/linkedlist-algorithm-problems.md)
+- [『剣指 Offer』のコーディング問題(一部)](./docs/cs-basics/algorithms/the-sword-refers-to-offer.md)
+- [10 大古典ソートアルゴリズム](./docs/cs-basics/algorithms/10-classical-sorting-algorithms.md)
+
+さらに、[GeeksforGeeks](https://www.geeksforgeeks.org/fundamentals-of-algorithms/) には、よく使うアルゴリズムの包括的なまとめがあります。
+
+## データベース
+
+### 基礎
+
+- [データベース基礎まとめ](./docs/database/basis.md)
+- [NoSQL 基礎まとめ](./docs/database/nosql.md)
+- [文字セット詳解](./docs/database/character-set.md)
+- SQL:
+ - [SQL 構文基礎まとめ](./docs/database/sql/sql-syntax-summary.md)
+ - [よく出る SQL 面接問題まとめ](./docs/database/sql/sql-questions-01.md)
+
+### MySQL
+
+**知識ポイント/面接問題のまとめ:**
+
+# MySQL のよく出る知識ポイント&面接問題まとめ (必読 :+1:)
+
+- [MySQL のよく出る知識ポイント&面接問題まとめ](./docs/database/mysql/mysql-questions-01.md)
+- [MySQL 高性能最適化の規範に関する提案](./docs/database/mysql/mysql-high-performance-optimization-specification-recommendations.md)
+
+**重要な知識ポイント:**
+
+- [MySQL インデックス詳解](./docs/database/mysql/mysql-index.md)
+- [MySQL トランザクション分離レベル詳解(図解付き)](./docs/database/mysql/transaction-isolation-level.md)
+- [MySQL の 3 つのログ詳解(binlog、redo log、undo log)](./docs/database/mysql/mysql-logs.md)
+- [InnoDB ストレージエンジンによる MVCC の実装](./docs/database/mysql/innodb-implementation-of-mvcc.md)
+- [MySQL における SQL 文の実行プロセス](./docs/database/mysql/how-sql-executed-in-mysql.md)
+- [MySQL クエリキャッシュ詳解](./docs/database/mysql/mysql-query-cache.md)
+- [MySQL クエリ実行計画の分析](./docs/database/mysql/mysql-query-execution-plan.md)
+- [MySQL の自動増分主キーは常に連続するのか?](./docs/database/mysql/mysql-auto-increment-primary-key-continuous.md)
+- [データベースへの時間関連データ保存に関する提案](./docs/database/mysql/some-thoughts-on-database-storage-time.md)
+- [MySQL における暗黙の型変換が引き起こすインデックス無効化](./docs/database/mysql/index-invalidation-caused-by-implicit-conversion.md)
+
+### Redis
+
+**知識ポイント/面接問題のまとめ** (必読 :+1:):
+
+- [Redis のよく出る知識ポイント&面接問題まとめ(その 1)](./docs/database/redis/redis-questions-01.md)
+- [Redis のよく出る知識ポイント&面接問題まとめ(その 2)](./docs/database/redis/redis-questions-02.md)
+
+**重要な知識ポイント:**
+
+- [よく使う 3 つのキャッシュ読み書き戦略詳解](./docs/database/redis/3-commonly-used-cache-read-and-write-strategies.md)
+- [Redis をメッセージキューとして使えるか?どう実装するか?](./docs/database/redis/redis-stream-mq.md)
+- [Redis の 5 つの基本データ構造詳解](./docs/database/redis/redis-data-structures-01.md)
+- [Redis の 3 つの特殊データ構造詳解](./docs/database/redis/redis-data-structures-02.md)
+- [Redis 永続化メカニズム詳解](./docs/database/redis/redis-persistence.md)
+- [Redis メモリ断片化詳解](./docs/database/redis/redis-memory-fragmentation.md)
+- [Redis ブロッキングのよくある原因まとめ](./docs/database/redis/redis-common-blocking-problems-summary.md)
+- [Redis クラスタ詳解](./docs/database/redis/redis-cluster.md)
+
+### MongoDB
+
+- [MongoDB のよく出る知識ポイント&面接問題まとめ(その 1)](./docs/database/mongodb/mongodb-questions-01.md)
+- [MongoDB のよく出る知識ポイント&面接問題まとめ(その 2)](./docs/database/mongodb/mongodb-questions-02.md)
+
+## 検索エンジン
+
+[Elasticsearch のよく出る面接問題まとめ(有料)](./docs/database/elasticsearch/elasticsearch-questions-01.md)
+
+
+
+## 開発ツール
+
+### Maven
+
+- [Maven コアコンセプトまとめ](./docs/tools/maven/maven-core-concepts.md)
+- [Maven ベストプラクティス](./docs/tools/maven/maven-best-practices.md)
+
+### Gradle
+
+[Gradle コアコンセプトまとめ](./docs/tools/gradle/gradle-core-concepts.md)(任意。中国では依然として Maven のほうが広く使われています)
+
+### Docker
+
+- [Docker コアコンセプトまとめ](./docs/tools/docker/docker-intro.md)
+- [Docker 実践](./docs/tools/docker/docker-in-action.md)
+
+### Git
+
+- [Git コアコンセプトまとめ](./docs/tools/git/git-intro.md)
+- [役立つ GitHub の便利テクニックまとめ](./docs/tools/git/github-tips.md)
+
+## システム設計
+
+- [よく出るシステム設計の面接問題まとめ](./docs/system-design/system-design-questions.md)
+- [よく出るデザインパターンの面接問題まとめ](./docs/system-design/design-pattern.md)
+
+### 基礎
+
+- [RESTful API 簡易チュートリアル](./docs/system-design/basis/RESTfulAPI.md)
+- [ソフトウェア工学簡易チュートリアル](./docs/system-design/basis/software-engineering.md)
+- [コード命名ガイド](./docs/system-design/basis/naming.md)
+- [コードリファクタリングガイド](./docs/system-design/basis/refactoring.md)
+- [単体テストガイド](./docs/system-design/basis/unit-test.md)
+
+### よく使うフレームワーク
+
+#### Spring/SpringBoot (必読 :+1:)
+
+**知識ポイント/面接問題のまとめ**:
+
+- [Spring のよく出る知識ポイント&面接問題まとめ](./docs/system-design/framework/spring/spring-knowledge-and-questions-summary.md)
+- [SpringBoot のよく出る知識ポイント&面接問題まとめ](./docs/system-design/framework/spring/springboot-knowledge-and-questions-summary.md)
+- [Spring/SpringBoot のよく使うアノテーションまとめ](./docs/system-design/framework/spring/spring-common-annotations.md)
+- [SpringBoot 初心者ガイド](https://github.com/Snailclimb/springboot-guide)
+
+**重要な知識ポイントの詳解**:
+
+- [IoC & AOP 詳解(さっと理解する)](./docs/system-design/framework/spring/ioc-and-aop.md)
+- [Spring トランザクション詳解](./docs/system-design/framework/spring/spring-transaction.md)
+- [Spring におけるデザインパターン詳解](./docs/system-design/framework/spring/spring-design-patterns-summary.md)
+- [SpringBoot 自動構成の原理詳解](./docs/system-design/framework/spring/spring-boot-auto-assembly-principles.md)
+
+#### MyBatis
+
+[よく出る MyBatis 面接問題まとめ](./docs/system-design/framework/mybatis/mybatis-interview.md)
+
+### セキュリティ
+
+#### 認証と認可
+
+- [認証と認可の基礎詳解](./docs/system-design/security/basis-of-authority-certification.md)
+- [JWT 基礎詳解](./docs/system-design/security/jwt-intro.md)
+- [JWT のメリット・デメリットの分析とよくある問題の解決策](./docs/system-design/security/advantages-and-disadvantages-of-jwt.md)
+- [SSO(シングルサインオン)詳解](./docs/system-design/security/sso-intro.md)
+- [権限システム設計詳解](./docs/system-design/security/design-of-authority-system.md)
+
+#### データセキュリティ
+
+- [よく使う暗号化アルゴリズムまとめ](./docs/system-design/security/encryption-algorithms.md)
+- [禁止ワードフィルタリングのソリューションまとめ](./docs/system-design/security/sentive-words-filter.md)
+- [データマスキングのソリューションまとめ](./docs/system-design/security/data-desensitization.md)
+- [なぜフロントエンドとバックエンドの両方でデータ検証を行う必要があるのか](./docs/system-design/security/data-validation.md)
+
+### スケジュールタスク
+
+[Java スケジュールタスク詳解](./docs/system-design/schedule-task.md)
+
+### Web リアルタイムメッセージプッシュ
+
+[Web リアルタイムメッセージプッシュ詳解](./docs/system-design/web-real-time-message-push.md)
+
+## 分散システム
+
+### 理論、アルゴリズム、プロトコル
+
+- [CAP 理論と BASE 理論の解説](https://javaguide.cn/distributed-system/protocol/cap-and-base-theorem.html)
+- [Paxos アルゴリズムの解説](https://javaguide.cn/distributed-system/protocol/paxos-algorithm.html)
+- [Raft アルゴリズムの解説](https://javaguide.cn/distributed-system/protocol/raft-algorithm.html)
+- [Gossip プロトコル詳解](https://javaguide.cn/distributed-system/protocol/gossip-protocol.html)
+- [コンシステントハッシュアルゴリズム詳解](https://javaguide.cn/distributed-system/protocol/consistent-hashing.html)
+
+### RPC
+
+- [RPC 基礎まとめ](https://javaguide.cn/distributed-system/rpc/rpc-intro.html)
+- [Dubbo のよく出る知識ポイント&面接問題まとめ](https://javaguide.cn/distributed-system/rpc/dubbo.html)
+
+### ZooKeeper
+
+> この 2 つの記事は内容が一部重複している可能性がありますが、両方読むことをおすすめします。
+
+- [ZooKeeper 関連概念まとめ(入門)](https://javaguide.cn/distributed-system/distributed-process-coordination/zookeeper/zookeeper-intro.html)
+- [ZooKeeper 関連概念まとめ(応用)](https://javaguide.cn/distributed-system/distributed-process-coordination/zookeeper/zookeeper-plus.html)
+
+### API ゲートウェイ
+
+- [API ゲートウェイ基礎まとめ](https://javaguide.cn/distributed-system/api-gateway.html)
+- [Spring Cloud Gateway のよく出る知識ポイント&面接問題まとめ](./docs/distributed-system/spring-cloud-gateway-questions.md)
+
+### 分散 ID
+
+- [分散 ID 入門と実装ソリューションまとめ](https://javaguide.cn/distributed-system/distributed-id.html)
+- [分散 ID の設計ガイド](https://javaguide.cn/distributed-system/distributed-id-design.html)
+
+### 分散ロック
+
+# 分散ロック
+
+- [分散ロック入門](https://javaguide.cn/distributed-system/distributed-lock.html)
+- [よく使う分散ロック実装ソリューションまとめ](https://javaguide.cn/distributed-system/distributed-lock-implementations.html)
+
+### 分散トランザクション
+
+[よく出る分散トランザクションの知識ポイント&面接問題まとめ](https://javaguide.cn/distributed-system/distributed-transaction.html)
+
+### 分散設定センター
+
+[よく出る分散設定センターの知識ポイント&面接問題まとめ](./docs/distributed-system/distributed-configuration-center.md)
+
+## 高性能
+
+### データベース最適化
+
+- [データベースの読み書き分離とシャーディング(分库分表)](./docs/high-performance/read-and-write-separation-and-library-subtable.md)
+- [コールドデータとホットデータの分離](./docs/high-performance/data-cold-hot-separation.md)
+- [よく使う SQL 最適化手法まとめ](./docs/high-performance/sql-optimization.md)
+- [深いページネーション入門と最適化の提案](./docs/high-performance/deep-pagination-optimization.md)
+
+### ロードバランシング
+
+[よく出るロードバランシングの知識ポイント&面接問題まとめ](./docs/high-performance/load-balancing.md)
+
+### CDN
+
+[よく出る CDN(コンテンツデリバリーネットワーク)の知識ポイント&面接問題まとめ](./docs/high-performance/cdn.md)
+
+### メッセージキュー
+
+- [メッセージキュー基礎知識まとめ](./docs/high-performance/message-queue/message-queue.md)
+- [Disruptor のよく出る知識ポイント&面接問題まとめ](./docs/high-performance/message-queue/disruptor-questions.md)
+- [RabbitMQ のよく出る知識ポイント&面接問題まとめ](./docs/high-performance/message-queue/rabbitmq-questions.md)
+- [RocketMQ のよく出る知識ポイント&面接問題まとめ](./docs/high-performance/message-queue/rocketmq-questions.md)
+- [Kafka のよく出る知識ポイント&面接問題まとめ](./docs/high-performance/message-queue/kafka-questions-01.md)
+
+## 高可用性
+
+[高可用性システム設計ガイド](./docs/high-availability/high-availability-system-design.md)
+
+### 冗長設計
+
+[冗長設計詳解](./docs/high-availability/redundancy.md)
+
+### レート制限
+
+[サービスのレート制限詳解](./docs/high-availability/limit-request.md)
+
+### フォールバック&サーキットブレーカー
+
+[フォールバック&サーキットブレーカー詳解](./docs/high-availability/fallback-and-circuit-breaker.md)
+
+### タイムアウト&リトライ
+
+[タイムアウト&リトライ詳解](./docs/high-availability/timeout-and-retry.md)
+
+### クラスタリング
+
+同一サービスのインスタンスを複数デプロイすることで、単一障害点を回避します。
+
+### 災害復旧設計とアクティブ-アクティブ構成
+
+**災害復旧(Disaster Recovery)** = 災害耐性(Disaster Tolerance)+ バックアップ(Backup)。
+
+- **バックアップ**: システムが生成するすべての重要なデータを複数回バックアップすること。
+- **災害耐性**: 異なる場所に完全に同一のシステムを 2 つ構築すること。一方の場所のシステムが突然故障した場合、アプリケーションシステム全体をもう一方に切り替えられるため、システムが正常にサービスを提供し続けられます。
+
+**アクティブ-アクティブ構成(Active-Active Deployment)** は、異なる場所にサービスをデプロイし、同時に外部へサービスを提供する構成を指します。従来の災害復旧設計との主な違いは「アクティブ-アクティブ」、つまりすべてのサイトが同時に外部へサービスを提供している点です。アクティブ-アクティブ構成は、火災、地震などの自然災害や人為的災害といった予期せぬ事態に備えるためのものです。
+
+## Star のトレンド
+
+
+
+## 公式公衆号
+
+私の最新記事を見逃さず、価値ある内容を共有したい方は、私の公式公衆号をフォローしてください。
+
+
diff --git a/docs/.vuepress/client.ts b/docs/.vuepress/client.ts
new file mode 100644
index 00000000000..ce78c371142
--- /dev/null
+++ b/docs/.vuepress/client.ts
@@ -0,0 +1,48 @@
+import { defineClientConfig } from "vuepress/client";
+import { defineAsyncComponent, h } from "vue";
+import DeferredLayoutToggle from "./components/DeferredLayoutToggle.vue";
+import ClickImagePreview from "./components/ClickImagePreview.vue";
+import LazyMermaid from "./components/LazyMermaid.vue";
+import GlobalUnlock from "./components/unlock/GlobalUnlock.vue";
+
+const UnlockContent = defineAsyncComponent(
+ () => import("./components/unlock/UnlockContent.vue"),
+);
+
+const CHUNK_LOAD_ERROR_PATTERN =
+ /Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|Unable to preload CSS/i;
+
+const getCurrentLocation = (): string =>
+ `${window.location.pathname}${window.location.search}${window.location.hash}`;
+
+export default defineClientConfig({
+ enhance({ app, router }) {
+ app.component("Mermaid", LazyMermaid);
+ app.component("UnlockContent", UnlockContent);
+
+ router.onError((error, to) => {
+ if (typeof window === "undefined") return;
+
+ const message = error instanceof Error ? error.message : String(error);
+ if (!CHUNK_LOAD_ERROR_PATTERN.test(message)) return;
+
+ const target = to?.fullPath || getCurrentLocation();
+ const reloadKey = `javaguide:chunk-reload:${target}`;
+
+ if (window.sessionStorage.getItem(reloadKey) === "1") return;
+
+ window.sessionStorage.setItem(reloadKey, "1");
+ window.location.assign(target);
+ });
+
+ router.afterEach((to) => {
+ if (typeof window === "undefined") return;
+ window.sessionStorage.removeItem(`javaguide:chunk-reload:${to.fullPath}`);
+ });
+ },
+ rootComponents: [
+ () => h(DeferredLayoutToggle),
+ () => h(GlobalUnlock),
+ () => h(ClickImagePreview),
+ ],
+});
diff --git a/docs/.vuepress/components/ClickImagePreview.vue b/docs/.vuepress/components/ClickImagePreview.vue
new file mode 100644
index 00000000000..3eab943803f
--- /dev/null
+++ b/docs/.vuepress/components/ClickImagePreview.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
diff --git a/docs/.vuepress/components/DeferredLayoutToggle.vue b/docs/.vuepress/components/DeferredLayoutToggle.vue
new file mode 100644
index 00000000000..04975151665
--- /dev/null
+++ b/docs/.vuepress/components/DeferredLayoutToggle.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
diff --git a/docs/.vuepress/components/LayoutToggle.vue b/docs/.vuepress/components/LayoutToggle.vue
new file mode 100644
index 00000000000..17eda78cb7f
--- /dev/null
+++ b/docs/.vuepress/components/LayoutToggle.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
diff --git a/docs/.vuepress/components/LazyMermaid.vue b/docs/.vuepress/components/LazyMermaid.vue
new file mode 100644
index 00000000000..797515ed6d0
--- /dev/null
+++ b/docs/.vuepress/components/LazyMermaid.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+ {{ loadError ?? "图表加载中" }}
+
+
+
+
+
+
+
diff --git a/docs/.vuepress/components/unlock/GlobalUnlock.vue b/docs/.vuepress/components/unlock/GlobalUnlock.vue
new file mode 100644
index 00000000000..f4606340f5c
--- /dev/null
+++ b/docs/.vuepress/components/unlock/GlobalUnlock.vue
@@ -0,0 +1,471 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 为保障正常阅读体验,本站部分内容已开启一次性验证。验证后全站解锁。
+
+
+
+
![公众号二维码]()
+
+ 扫码/微信搜索关注
+ “JavaGuide”
+
+
回复 “验证码”
+
+
+
+
+
+
+
+
+ 验证码错误,请重试
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/.vuepress/components/unlock/UnlockContent.vue b/docs/.vuepress/components/unlock/UnlockContent.vue
new file mode 100644
index 00000000000..f85351ae8f4
--- /dev/null
+++ b/docs/.vuepress/components/unlock/UnlockContent.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+ 为保障正常阅读体验,本站部分内容已开启一次性验证。验证后全站自动解锁。
+
+
+
+
![公众号二维码]()
+
+ 扫码关注公众号,回复 “验证码”
+
+
+
+
+
+
+
+
+
+ 验证码错误,请重新输入
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts
index b8b2364da30..626566a7e39 100644
--- a/docs/.vuepress/config.ts
+++ b/docs/.vuepress/config.ts
@@ -1,86 +1,85 @@
+import { createRequire } from "node:module";
+import { viteBundler } from "@vuepress/bundler-vite";
import { defineUserConfig } from "vuepress";
-import { searchPlugin } from "@vuepress/plugin-search";
import theme from "./theme.js";
+const require = createRequire(import.meta.url);
+const mermaidComponentPath = require.resolve(
+ "@vuepress/plugin-markdown-chart/client/components/Mermaid.js",
+);
+
export default defineUserConfig({
dest: "./dist",
- title: "JavaGuide(Java面试 + 学习指南)",
+ title: "JavaGuide",
description:
- "「Java学习指北 + Java面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,复习 Java 知识点,首选 JavaGuide! ",
+ "JavaGuide 是一份面向后端开发/后端面试的学习与复习指南,覆盖 Java、数据库/MySQL、Redis、分布式、高并发、高可用、系统设计等核心知识。",
lang: "zh-CN",
head: [
// meta
["meta", { name: "robots", content: "all" }],
["meta", { name: "author", content: "Guide" }],
- [
- "meta",
- {
- "http-equiv": "Cache-Control",
- content: "no-cache, no-store, must-revalidate",
- },
- ],
- ["meta", { "http-equiv": "Pragma", content: "no-cache" }],
- ["meta", { "http-equiv": "Expires", content: "0" }],
- [
- "meta",
- {
- name: "keywords",
- content:
- "Java基础, 多线程, JVM, 虚拟机, 数据库, MySQL, Spring, Redis, MyBatis, 系统设计, 分布式, RPC, 高可用, 高并发",
- },
- ],
+ // [
+ // "meta",
+ // {
+ // name: "keywords",
+ // content:
+ // "JavaGuide, 后端面试, 后端开发, Java面试, Java基础, 并发编程, JVM, 数据库, MySQL, Redis, Spring, 分布式, 高并发, 高性能, 高可用, 系统设计, 消息队列, 缓存, 计算机网络, Linux",
+ // },
+ // ],
+ // [
+ // "meta",
+ // {
+ // name: "description",
+ // content:
+ // "JavaGuide 是一份面向后端开发/后端面试的学习与复习指南,覆盖 Java、数据库/MySQL、Redis、分布式、高并发、高可用、系统设计等核心知识。",
+ // },
+ // ],
["meta", { name: "apple-mobile-web-app-capable", content: "yes" }],
- // 添加百度统计
+ // 添加百度统计 - 异步加载避免阻塞渲染
[
"script",
- {},
+ { defer: true },
`var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?5dd2e8c97962d57b7b8fea1737c01743";
+ hm.async = true;
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();`,
],
],
- theme,
-
- plugins: [
- searchPlugin({
- // https://v2.vuepress.vuejs.org/zh/reference/plugin/search.html
- // 排除首页
- isSearchable: (page) => page.path !== "/",
- maxSuggestions: 10,
- hotKeys: ["s", "/"],
- // 用于在页面的搜索索引中添加额外字段
- getExtraFields: () => [],
- locales: {
- "/": {
- placeholder: "搜索",
+ bundler: viteBundler({
+ viteOptions: {
+ resolve: {
+ alias: {
+ "@vuepress/plugin-markdown-chart/client/components/Mermaid.js":
+ mermaidComponentPath,
},
},
- }),
- // searchProPlugin({
- // indexContent: true,
- // indexOptions: {
- // tokenize: (text, fieldName) =>
- // fieldName === "id" ? [text] : cut(text, true),
- // },
- // customFields: [
- // {
- // getter: ({ frontmatter }) =>
- // frontmatter.category ?? null,
- // formatter: "分类: $content",
- // },
- // ],
- // suggestDelay: 60,
- // }),
- ],
+ css: {
+ preprocessorOptions: {
+ scss: {
+ silenceDeprecations: ["if-function"],
+ },
+ },
+ },
+ },
+ }),
+
+ theme,
- pagePatterns: ["**/*.md", "!**/*.snippet.md", "!.vuepress", "!node_modules"],
+ pagePatterns: [
+ "**/*.md",
+ "!**/*.snippet.md",
+ "!**/TODO.md",
+ "!.vuepress",
+ "!node_modules",
+ ],
shouldPrefetch: false,
+ shouldPreload: false,
});
diff --git a/docs/.vuepress/features/unlock/config.ts b/docs/.vuepress/features/unlock/config.ts
new file mode 100644
index 00000000000..752909cb9fd
--- /dev/null
+++ b/docs/.vuepress/features/unlock/config.ts
@@ -0,0 +1,41 @@
+import { PREVIEW_HEIGHT } from "./heights";
+
+const withDefaultHeight = (
+ paths: readonly string[],
+ height: string = PREVIEW_HEIGHT.XL,
+): Record =>
+ Object.fromEntries(paths.map((path) => [path, height]));
+
+export const unlockConfig = {
+ // 版本号变更可强制用户重新验证
+ unlockVersion: "v1",
+ // 调试用:设为 true 时无视本地已解锁状态,始终触发限制
+ forceLock: false,
+ code: "8888",
+ // 使用相对路径,图片放在 docs/.vuepress/public/images 下
+ qrCodeUrl: "/images/qrcode-javaguide.jpg",
+ // 路径 -> 可见高度(建议使用 PREVIEW_HEIGHT 预设)
+ protectedPaths: {
+ ...withDefaultHeight([
+ "/java/jvm/memory-area.html",
+ "/cs-basics/network/tcp-connection-and-disconnection.html",
+ "/cs-basics/network/http-vs-https.html",
+ "/cs-basics/network/dns.html",
+ ]),
+ // 如需特殊高度,再单独覆盖
+ // "/some/page.html": PREVIEW_HEIGHT.MEDIUM,
+ },
+ // 目录前缀 -> 可见高度(该目录下所有文章都触发验证)
+ // 例如 "/java/collection/" 会匹配 "/java/collection/**"
+ protectedPrefixes: {
+ ...withDefaultHeight([
+ "/database/",
+ "/high-performance/",
+ "/java/basis/",
+ "/java/collection/",
+ "/ai/",
+ ]),
+ },
+} as const;
+
+export { PREVIEW_HEIGHT };
diff --git a/docs/.vuepress/features/unlock/heights.ts b/docs/.vuepress/features/unlock/heights.ts
new file mode 100644
index 00000000000..34ba390ca45
--- /dev/null
+++ b/docs/.vuepress/features/unlock/heights.ts
@@ -0,0 +1,10 @@
+export const PREVIEW_HEIGHT = {
+ SHORT: "500px",
+ MEDIUM: "1000px",
+ LONG: "1500px",
+ XL: "2000px",
+ XXL: "2500px",
+} as const;
+
+export type PreviewHeight =
+ (typeof PREVIEW_HEIGHT)[keyof typeof PREVIEW_HEIGHT];
diff --git a/docs/.vuepress/navbar.ts b/docs/.vuepress/navbar.ts
index 88d85c94049..10a33a58ddb 100644
--- a/docs/.vuepress/navbar.ts
+++ b/docs/.vuepress/navbar.ts
@@ -1,43 +1,50 @@
import { navbar } from "vuepress-theme-hope";
export default navbar([
- { text: "面试指南", icon: "java", link: "/home.md" },
- { text: "开源项目", icon: "github", link: "/open-source-project/" },
- { text: "技术书籍", icon: "book", link: "/books/" },
+ { text: "后端开发", icon: "mdi:language-java", link: "/home.md" },
+ { text: "计算机基础", icon: "mdi:desktop-classic", link: "/cs-basics/" },
+ { text: "AI应用开发", icon: "mdi:robot-outline", link: "/ai/" },
+ { text: "AI编程", icon: "mdi:code-tags", link: "/ai-coding/" },
{
- text: "程序人生",
- icon: "article",
- link: "/high-quality-technical-articles/",
- },
- {
- text: "知识星球",
- icon: "planet",
+ text: "推荐阅读",
+ icon: "mdi:book-open-page-variant-outline",
children: [
+ { text: "学习路线", icon: "mdi:map-outline", link: "/roadmap/" },
+ { text: "开源项目", icon: "mdi:github", link: "/open-source-project/" },
{
- text: "星球介绍",
- icon: "about",
- link: "/about-the-author/zhishixingqiu-two-years.md",
+ text: "技术书籍",
+ icon: "mdi:book-open-page-variant-outline",
+ link: "/books/",
},
{
- text: "星球专属优质专栏",
- icon: "about",
- link: "/zhuanlan/",
- },
- {
- text: "星球优质主题汇总",
- icon: "star",
- link: "https://www.yuque.com/snailclimb/rpkqw1/ncxpnfmlng08wlf1",
+ text: "程序人生",
+ icon: "mdi:code-tags",
+ link: "/high-quality-technical-articles/",
},
],
},
{
text: "网站相关",
- icon: "about",
+ icon: "mdi:information-outline",
children: [
- { text: "关于作者", icon: "zuozhe", link: "/about-the-author/" },
+ {
+ text: "关于作者",
+ icon: "mdi:account-edit-outline",
+ link: "/about-the-author/",
+ },
+ {
+ text: "PDF下载",
+ icon: "mdi:file-pdf-box",
+ link: "/interview-preparation/pdf-interview-javaguide.md",
+ },
+ {
+ text: "面试突击",
+ icon: "mdi:file-pdf-box",
+ link: "https://interview.javaguide.cn/home.html",
+ },
{
text: "更新历史",
- icon: "history",
+ icon: "mdi:history",
link: "/timeline/",
},
],
diff --git a/docs/.vuepress/public/images/qrcode-javaguide.jpg b/docs/.vuepress/public/images/qrcode-javaguide.jpg
new file mode 100644
index 00000000000..731d912ae05
Binary files /dev/null and b/docs/.vuepress/public/images/qrcode-javaguide.jpg differ
diff --git a/docs/.vuepress/shims-vue.d.ts b/docs/.vuepress/shims-vue.d.ts
new file mode 100644
index 00000000000..525d5f827b6
--- /dev/null
+++ b/docs/.vuepress/shims-vue.d.ts
@@ -0,0 +1,5 @@
+declare module "*.vue" {
+ import type { DefineComponent } from "vue";
+ const component: DefineComponent