Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1612 commits
Select commit Hold shift + click to select a range
8e8575f
feat:优化阅读全文插件
Snailclimb Feb 23, 2026
9f2eca9
feat:优化阅读全文插件
Snailclimb Feb 23, 2026
4baa23d
fix: 修改 GlobalUnlock.vue 解决 SSR 水合阶段 + 动态 DOM 操作冲突。
Snailclimb Feb 23, 2026
932df09
Fix typo in 'GitHub Topics' section
understarsky Feb 26, 2026
394ebc0
docs: 分布式和数据库面试题完善
Snailclimb Feb 28, 2026
63fd517
Update cap-and-base-theorem.md
Snailclimb Feb 28, 2026
a81bfb2
docs:分布式理论知识优化完善(改动很大)
Snailclimb Feb 28, 2026
1151b5e
docs: gossip 和 raft 协议完善,绘制配图帮助理解
Snailclimb Feb 28, 2026
26e0c7a
docs:新增一篇文章详细解读 Redis 可以做消息队列么?怎么实现?
Snailclimb Mar 1, 2026
04f88a5
docs:Paxos 算法详解完善
Snailclimb Mar 1, 2026
34db003
feat:升级 rollup 依赖修复 CVE 漏洞
Snailclimb Mar 1, 2026
1b71b65
docs:完善降级&熔断详解、性能测试入门
Snailclimb Mar 1, 2026
25a15e8
Update key-points-of-interview.md
Snailclimb Mar 2, 2026
2f9fee8
Merge pull request #2785 from understarsky/patch-1
Snailclimb Mar 2, 2026
bff8cc6
Merge branch 'main' of github.com:Snailclimb/JavaGuide
Snailclimb Mar 2, 2026
c07482a
fix: Fix formatting in distributed-id.md
Hazehacker Mar 2, 2026
643b19f
docs:新增Java 后端面试通关计划(涵盖后端通用体系)
Snailclimb Mar 2, 2026
804e53c
Enhance explanation of MySQL redo log and binlog handling
Ka1Yann Mar 3, 2026
4a67a0e
docs:补充 zab 协议介绍&分布式内容完善
Snailclimb Mar 4, 2026
148959b
docs:面试准备内容优化
Snailclimb Mar 4, 2026
15e369c
Merge pull request #2788 from Ka1Yann/patch-2
Snailclimb Mar 4, 2026
c4c9a13
Merge branch 'main' of github.com:Snailclimb/JavaGuide
Snailclimb Mar 4, 2026
eaed166
Merge pull request #2787 from Hazehacker/main
Snailclimb Mar 4, 2026
744d1dd
Merge branch 'main' of github.com:Snailclimb/JavaGuide
Snailclimb Mar 4, 2026
90135e9
Update ConcurrentHashMap summary for Java 8
memeer Mar 5, 2026
cffb9d3
docs: 线程池文章新增生命周期状态、Worker机制、拒绝策略应用场景三节
REALROOK1E Mar 7, 2026
3dddee3
docs: 完善Java并发面试题和AQS详解文档
REALROOK1E Mar 7, 2026
d11d56b
docs: 补充 ThreadLocal 内存泄漏深入分析
REALROOK1E Mar 7, 2026
002f332
fix:外键描述修正
Snailclimb Mar 8, 2026
763ea09
Merge pull request #2794 from REALROOK1E/main
Snailclimb Mar 8, 2026
5738a15
Merge pull request #2790 from memeer/patch-1
Snailclimb Mar 8, 2026
159044c
Fix Shell script examples to use double brackets for safer variable c…
04cb Mar 8, 2026
4f08d5c
Merge pull request #2795 from 04cb/fix/shell-script-single-brackets
Snailclimb Mar 8, 2026
4f4fee1
docs:优化 shell 编程内容
Snailclimb Mar 8, 2026
3a9524c
docs:优化完善对redis持久化机制的介绍
Snailclimb Mar 8, 2026
ae94636
Fix typo in RabbitMQ documentation
creeper521 Mar 8, 2026
e7a157a
docs:补充redis持久化机制历程配图,优化fork性能分析、如何选择 RDB 和 AOF等内容介绍
Snailclimb Mar 8, 2026
1da9bda
Merge pull request #2796 from creeper521/patch-3
Snailclimb Mar 8, 2026
34a08fe
Merge branch 'main' of github.com:Snailclimb/JavaGuide
Snailclimb Mar 8, 2026
3a59af8
Merge branch 'main' of github.com:Snailclimb/JavaGuide
Snailclimb Mar 8, 2026
8d5f129
fix: Java 后端面试通关计划(涵盖后端通用体系)中的链接错误修复
Snailclimb Mar 9, 2026
2db3811
docs:mysql索引失效场景面试高频考点,单独提取一篇文章详解
Snailclimb Mar 9, 2026
de0f5f5
docs:完善rabbitmq面试题
Snailclimb Mar 9, 2026
8627578
docs:优化MySQL执行计划分析+MySQL查询缓存详解
Snailclimb Mar 10, 2026
df19c6a
docs:MySQL执行计划分析新增测试案例
Snailclimb Mar 10, 2026
5a9a584
docs:完善多篇文章内容(MySQL索引失效/Redis持久化/RabbitMQ面试题/LinkedHashMap源码)
Snailclimb Mar 11, 2026
2d0d63f
docs:分布式配置中心开放阅读
Snailclimb Mar 12, 2026
526a76d
docs:《后端面试高频系统设计&场景题》介绍完善
Snailclimb Mar 12, 2026
9923b26
docs: 完善 CDN 和数据冷热分离
Snailclimb Mar 13, 2026
6798a05
docs:高并发部分文章优化完善
Snailclimb Mar 13, 2026
0f960e3
fix: 修正路由示例错误
UserXSX Mar 20, 2026
2a19e80
fix: Issue#2650 - 修复CAS示例代码的并发打印问题和livelock
Senrian Mar 20, 2026
7d311a5
docs:新增 java26 新特性
Snailclimb Mar 21, 2026
a744f6a
Merge pull request #2798 from UserXSX/main
Snailclimb Mar 23, 2026
7fb60cf
docs:新增为什么忘记密码时只能重置,不能告诉你原密码?
Snailclimb Mar 23, 2026
92f3ac1
docs:完善敏感词过滤方案总结
Snailclimb Mar 23, 2026
80566c5
fix: pin 1 unpinned action(s)
dagecko Mar 26, 2026
7a4b977
docs:AI 相关文章添加
Snailclimb Mar 26, 2026
dd436d6
feat: 新增 AI 应用开发面试指南模块
Snailclimb Mar 26, 2026
f39d76d
Merge pull request #2800 from dagecko/runner-guard/fix-ci-security
Snailclimb Mar 26, 2026
2568cf8
Merge pull request #2801 from Senrian/main
Snailclimb Mar 26, 2026
684ee3f
build(deps): bump undici from 7.18.2 to 7.24.6
dependabot[bot] Mar 26, 2026
0126e03
Merge pull request #2802 from Snailclimb/dependabot/npm_and_yarn/undi…
Snailclimb Mar 26, 2026
456f536
Update java8-tutorial-translate.md
kimagery Mar 27, 2026
5bba638
docs:新增两篇 AI Coding 实践
Snailclimb Mar 29, 2026
512f335
Update comments on static variable storage in Java
ZhangChunJie1 Mar 29, 2026
a6df146
docs(ai): 补充 Agent 文章并更新 AI 区导航
Snailclimb Mar 29, 2026
4978a39
Merge pull request #2806 from ZhangChunJie1/patch-1
Snailclimb Mar 30, 2026
a0ac4de
Merge pull request #2803 from kimagery/kimagery-patch-1
Snailclimb Mar 30, 2026
b2d4759
test
Senrian Mar 31, 2026
3a44d67
fix: 修正Spring注解文章标题并添加注解分类总结表 (fix #2656)
Senrian Mar 31, 2026
721a06f
Merge pull request #2807 from Senrian/fix/spring-annotations-title
Snailclimb Mar 31, 2026
9fe4f7c
fix: remove duplicate content in agent-basis.md (fix #2808)
Senrian Apr 1, 2026
eaaa61d
Merge pull request #2810 from Senrian/fix-duplicate-v3
Snailclimb Apr 2, 2026
6110a49
docs: clarify thread pool worker count wording
suyua9 Apr 3, 2026
1819ec4
fix(redis): correct appendfsync always description - main thread fsyn…
Senrian Apr 6, 2026
826161e
fix(redis): correct appendfsync always description in blocking proble…
Senrian Apr 6, 2026
646757a
fix(redis): correct appendfsync always in Q&A doc
Senrian Apr 6, 2026
192a543
chore: remove translation tool scripts and docs
Snailclimb Apr 6, 2026
f41207d
Merge pull request #2816 from Senrian/fix-appendfsync-always
Snailclimb Apr 6, 2026
d8677d4
Merge pull request #2813 from suyua9/docs/clarify-thread-pool-worker-…
Snailclimb Apr 6, 2026
e2d92c3
docs: update MCP transport from HTTP+SSE to Streamable HTTP
Snailclimb Apr 6, 2026
fa84d91
fix: clarify classloader core-class loading example
buyua9 Apr 7, 2026
c2ef132
docs: 优化 RAG 和敏感词过滤文档,更新依赖版本
Snailclimb Apr 8, 2026
3f86a8c
docs:格式修正
Snailclimb Apr 8, 2026
ae512a6
Merge pull request #2817 from buyua9/fix/classloader-parent-delegatio…
Snailclimb Apr 8, 2026
6931160
docs: 新增 Claude Code 接入第三方模型实战文章
Snailclimb Apr 8, 2026
b459f6d
docs: 新增 Harness Engineering 文章
Snailclimb Apr 8, 2026
c66d659
docs(sidebar): reorder data-structure entries in VuePress sidebar
paigeman Apr 9, 2026
6a2ce6e
Merge pull request #2819 from paigeman/main
Snailclimb Apr 9, 2026
2839f2b
fix: 修正增强 for 循环中 Iterator fail-fast 机制的描述
Snailclimb Apr 9, 2026
d30088b
Merge pull request #2820 from Snailclimb/fix/syntactic-sugar-iterator…
Snailclimb Apr 9, 2026
3d22d02
docs:AI部分文章文字优化润色
Snailclimb Apr 10, 2026
1c5e23b
改正了类型擦除的英文表述
makabakai Apr 12, 2026
8570160
docs:新增Context Engineering和Prompt Engineering
Snailclimb Apr 12, 2026
bc97054
docs:AI部分文章文字优化润色
Snailclimb Apr 13, 2026
d901c75
Add files via upload
6666ccc Apr 13, 2026
96bf7d9
Merge pull request #2826 from 6666ccc/main
Snailclimb Apr 13, 2026
aac8d31
Merge pull request #2824 from makabakai/patch-1
Snailclimb Apr 13, 2026
6358a37
docs: 新增 AI 工作流 Workflow、Graph 与 Loop 文章
Snailclimb Apr 13, 2026
9be884e
docs: 移除 AI Agent 系列文章中无效的 icon 字段
Snailclimb Apr 13, 2026
226f968
docs: 优化工作流文章排版,配图改用 SVG 格式
Snailclimb Apr 13, 2026
38f77e3
fix: 修正 GC 章节中"运行时常量池"为"字符串常量池" (#2828)
xdydx Apr 15, 2026
b7b3f1a
fix: correct volatile description for AQS state variable (issue #2516…
Senrian Apr 15, 2026
9693847
docs: 规范化 zhuanlan 目录文章排版,优化 Harness Engineering 文章
Snailclimb Apr 15, 2026
dfda90c
fix: 修复 Dependabot 安全告警,升级间接依赖版本
Snailclimb Apr 16, 2026
33a7c3a
Update interview-guide.md
Snailclimb Apr 16, 2026
8b9d7da
Update mysql-questions-01.md (#2830)
173846635 Apr 16, 2026
21795fc
docs: fix tryReleaseShared parameter type (issue #2832)
Senrian Apr 17, 2026
bf17588
docs: 新增 Claude Code 使用指南与 Codex 最佳实践指南
Snailclimb Apr 21, 2026
b9d5d7e
build(deps): bump @xmldom/xmldom from 0.9.9 to 0.9.10
dependabot[bot] Apr 22, 2026
f30f7d5
docs: 优化完善对skills和AI工作流的介绍
Snailclimb Apr 22, 2026
d64903a
docs: clarify connector permission check in MySQL execution flow (fix…
Senrian Apr 25, 2026
85a0bb4
补充 OpenAI 官方工具 (#2839)
5ME Apr 25, 2026
673e6af
fix: 修正关于CountDownLatch使用场景的描述 (#2837)
YuchangLi Apr 25, 2026
0fc3530
Update rag-vector-store.md
Snailclimb Apr 25, 2026
acf1426
docs(mysql): clarify boolean type mapping
zuyua9 Apr 30, 2026
c2579a7
更新下README和主页
Snailclimb Apr 30, 2026
a6064ba
fix: 修正 ZonedDateTime 转 LocalDateTime 输出示例中的时间错误
Snailclimb Apr 30, 2026
629860f
Merge pull request #2841 from zuyua9/docs/mysql-boolean-type
Snailclimb Apr 30, 2026
56c7b13
Merge pull request #2838 from Senrian/fix-issue-2466
Snailclimb Apr 30, 2026
c0198d7
Merge pull request #2835 from Snailclimb/dependabot/npm_and_yarn/xmld…
Snailclimb Apr 30, 2026
39a3022
fix: 修正 AQS 表格中 tryReleaseShared 的参数类型为 int
Snailclimb Apr 30, 2026
210d711
优化 StringBuffer 与 StringBuilder 性能说明,避免歧义 (#2843)
fffg-o May 3, 2026
01ab2d8
fix: 修正 AOT/JIT 优势描述中打包体积的归属 (#2842)
fffg-o May 3, 2026
f4e0c04
Update explanation of reentrant locks in Java
LunaSpica May 4, 2026
a7395d1
Merge pull request #2846 from LunaSpica/patch-1
Snailclimb May 5, 2026
64541c6
fix: 修正优先级队列描述,区分消息优先级与队列优先级 (close #2847)
Senrian May 7, 2026
341b5ff
docs(ai): 完善 Claude Code 记忆系统文档
Snailclimb May 7, 2026
3bb1560
docs(rag): 恢复 RAG 系列文档
Snailclimb May 7, 2026
a0c7363
docs(ai): 恢复 Agent 系列文档优化
Snailclimb May 7, 2026
cd61664
Update agent-memory.md
Snailclimb May 7, 2026
231f8a9
style: 运行 prettier 格式化文档
Snailclimb May 7, 2026
54f2f73
docs(ai): 更新侧边栏目录
Snailclimb May 7, 2026
5f2cfb3
docs(rag): 修复文档处理篇错误并优化表达
Snailclimb May 8, 2026
8ab2d26
docs(ai): 新增三篇生产级 AI 应用开发文章
Snailclimb May 8, 2026
4306625
docs(ai): 补充 llm-api-engineering 和 structured-output 两篇文章
Snailclimb May 8, 2026
53ed109
docs(ai): 新增两篇文章到目录
Snailclimb May 8, 2026
09aef98
docs(ai): 优化文章标题为「AI 编程必备 Skills 推荐」
Snailclimb May 8, 2026
0980754
docs(ai): 将 AI 编程拆分为「实战」和「技巧」两个模块
Snailclimb May 8, 2026
669d51f
refactor: 重构导航栏结构
Snailclimb May 8, 2026
37057a0
fix: 调整 AI 编程分类并移除无效链接
Snailclimb May 8, 2026
87d3079
fix(database): 修正 MySQL MVCC机制描述中的概念错误
May 8, 2026
00b9473
docs: fix method reference formatting
bengbengbalabalabeng May 8, 2026
8e4f7c2
docs(ai-coding): 新增 Claude Code 核心命令详解文章
Snailclimb May 8, 2026
08a1ee5
docs(ai-coding): 新增 CLI vs IDE 对比文章
Snailclimb May 8, 2026
f9261d5
docs(ai-coding): 新增 DeepSeek V4 + Claude Code 实战文章
Snailclimb May 8, 2026
c2fe027
docs(ai): 新增大模型结构化输出详解文章
Snailclimb May 8, 2026
8ffeb6b
docs(ai): 更新 README 中 AI 编程文章链接
Snailclimb May 8, 2026
9628dca
style: lint markdown files
Snailclimb May 8, 2026
9ccc4bf
fix(ai): 修复 llm-basis 目录中引用 AI 编程文章的链接路径
Snailclimb May 8, 2026
0a44aea
docs: 移动 AI 编程开放性面试题到 AI 编程模块
Snailclimb May 8, 2026
90c10e9
style(claudecode-tips): 统一 CLAUDE.md 为代码块格式
Snailclimb May 8, 2026
d0297f5
refactor(agent-basis): 深度去AI化重写
Snailclimb May 9, 2026
60a2814
docs(ai): Agent部分内容优化完善
Snailclimb May 9, 2026
dff8aa7
merge(agent-basis): 以远程深度重写版本解决合并冲突
Snailclimb May 9, 2026
85ef352
feat(vuepress): 添加 LazyMermaid 组件,接入 DocSearch,修复 GlobalUnlock 锁样式清理
Snailclimb May 10, 2026
c3a4bf1
docs(ai): Agent 系列文章内容优化与格式规范化
Snailclimb May 10, 2026
e064221
style(ai): 规范化 mcp 与 workflow-graph-loop 文章格式
Snailclimb May 10, 2026
73cd6e9
perf(vuepress): 延迟加载 LayoutToggle 和 UnlockContent 组件
Snailclimb May 10, 2026
2dd4bb4
perf(vuepress): 图片放大组件
Snailclimb May 11, 2026
53b65b3
docs(rag): 新增文档处理与切分策略、知识库文档更新策略两篇文章到目录
Snailclimb May 11, 2026
ea32dde
docs(rag): RAG 系列文章内容优化与格式规范化
Snailclimb May 11, 2026
561cdaa
fix(vuepress): resolve mermaid component import for Vite 8/Rolldown
Snailclimb May 11, 2026
514e0ee
fix(vuepress): add @vite-ignore to LazyMermaid dynamic import
Snailclimb May 11, 2026
93f3962
docs(spring): fix method reference formatting (#2850)
Snailclimb May 11, 2026
83280a1
fix(database): correct MVCC write mechanism description (#2849)
Snailclimb May 11, 2026
b6834f3
docs(java): merge reflection advantage points per community feedback …
Snailclimb May 11, 2026
f7485b4
Update rag-basis.md
Snailclimb May 11, 2026
c060f26
Create PERFORMANCE_NOTES.md
Snailclimb May 11, 2026
ad1097d
docs(java):规范markdown格式
Snailclimb May 11, 2026
85eb51d
docs: simplify AI guide links in README and site intros
Snailclimb May 12, 2026
5db9abe
fix vuepress hydration blank page
Snailclimb May 13, 2026
debb2e3
fix vuepress hydration mismatch
Snailclimb May 13, 2026
fd6f0e0
docs(ai):AI 应用评测体系
Snailclimb May 14, 2026
c6b787f
fix(docs): fix typo.
bengbengbalabalabeng May 14, 2026
9d5aff9
feat(scripts): 新增本地 DocSearch 索引生成脚本,Mermaid 组件增加加载失败提示
Snailclimb May 15, 2026
2f28ac9
fix(deps): resolve 6 open Dependabot security alerts
Snailclimb May 15, 2026
5b7f2d2
Merge branch 'worktree-fix-security-alerts'
Snailclimb May 15, 2026
a5f8bf0
Merge pull request #2853 from bengbengbalabalabeng/main
Snailclimb May 15, 2026
63b678f
docs(network): TCP 文章优化完善,新增 TIME_WAIT 排查指南与配图
Snailclimb May 17, 2026
bfeaee5
docs(ai): AI 模块内容更新与结构优化
Snailclimb May 17, 2026
1ed171b
refactor(cs-basics): 计算机基础拆分为独立导航模块
Snailclimb May 17, 2026
cd9bb72
chore: migrate icons to Iconify
Snailclimb May 17, 2026
23a97a0
docs(cs-basics): 侧边栏优化、数据结构标题规范化、TIME_WAIT 拆分独立文章
Snailclimb May 17, 2026
8ce155c
docs(network): 新增 HTTPS RSA vs ECDHE 和 TCP 字节流 vs UDP 报文
Snailclimb May 17, 2026
db07f90
docs: 优化网络文章开头
Snailclimb May 17, 2026
28b9b03
style(network): 网络文章格式规范化与 README 标题同步
Snailclimb May 17, 2026
e823c25
style: 网络文章规范化收尾与引号修复
Snailclimb May 17, 2026
9496336
feat:SEO优化
Snailclimb May 18, 2026
49ef145
docs: add ai interview question directory
Snailclimb May 18, 2026
0889b6c
docs(ai): 面试题目录拆分与结构化输出配图
Snailclimb May 18, 2026
676eabd
feat: VuePress 主题增强、SEO 优化与内容结构调整
Snailclimb May 18, 2026
d0e24ce
style(cs-basics): 计算机基础文章格式规范化与引号修复
Snailclimb May 18, 2026
4a4378d
style(ai): AI 模块文章格式微调与首页更新
Snailclimb May 18, 2026
01a8eaf
docs: 网络面试题补充与文章内容更新
Snailclimb May 18, 2026
c9ffd03
Refactor CAS operation condition in unsafe.md
paigeman May 19, 2026
899ba4b
docs(ai): 完善 MCP 介绍,新增几个常见问题
Snailclimb May 19, 2026
767f732
docs(ai): 完善上下文工程(Context Engineering) 介绍,让整体更容易理解
Snailclimb May 21, 2026
1f29c17
fix(spring): correcting the description of the instantiation and prop…
bengbengbalabalabeng May 21, 2026
62237bb
docs(分布式): 新增2026 最新版分布式面试题总结:CAP、RPC、分布式锁、分布式事务、分布式 ID
Snailclimb May 21, 2026
6ed4631
docs: update AI and system design articles
Snailclimb May 21, 2026
c3f3c40
docs: improve high availability content SEO
Snailclimb May 21, 2026
ed5f2b7
Merge pull request #2856 from bengbengbalabalabeng/main
Snailclimb May 21, 2026
10033d3
Merge pull request #2855 from paigeman/main
Snailclimb May 21, 2026
2dcbd22
docs(网络): 重写有了 HTTP 协议,为什么还要 RPC?
Snailclimb May 22, 2026
b6635da
docs(网络): 新增⭐️TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?
Snailclimb May 24, 2026
c6c945e
docs(网络): 完善⭐️TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?并添加到侧边栏
Snailclimb May 24, 2026
f1b4484
docs(网络): 完善⭐️TCP 如何保证可靠传输?
Snailclimb May 24, 2026
589a416
docs(分布式): 完善分布式ID常见实现方案
Snailclimb May 25, 2026
c44e11f
docs(分布式): 规范分布式部分内容格式
Snailclimb May 25, 2026
e6bb661
docs(AI编程): 新增 CC GUI 插件实战和 Agent View 多会话管理文章
Snailclimb May 26, 2026
354db22
docs: 完善 AI Agent、高可用、分布式网关等内容并新增 LLM 网关架构图
Snailclimb May 26, 2026
15d3d95
docs: 重构各模块首页与侧边栏,新增子目录索引页
Snailclimb May 27, 2026
2e5118a
docs(网络): 新增三篇传输层文章并更新侧边栏与README目录
Snailclimb May 28, 2026
40c90a1
docs(网络): 新增三道面试题到计算机网络面试题上下篇
Snailclimb May 28, 2026
fe29fa6
docs(AI编程): 新增 Spec Coding 规范驱动编程文章并完善 TCP 三次握手四次挥手
Snailclimb May 28, 2026
1530814
docs(mysql): clarify UNSIGNED storage requirements (#2860)
vuyua9 May 28, 2026
8fd6934
docs(mysql): align delayed join pagination example (#2859)
vuyua9 May 28, 2026
1a9a92d
fix(mybatis): correcting the description of namespace (#2858)
bengbengbalabalabeng May 28, 2026
8fd27cb
docs: 修正 Map 有序性描述和 AQS PROPAGATE 推演 (#2861, #2863)
Snailclimb May 28, 2026
719a969
docs(network): enhance TCP retransmission explanation
Heyflyingpig May 28, 2026
bc53e52
Merge branch 'main' of github.com:Snailclimb/JavaGuide
Snailclimb May 28, 2026
c3e11a9
docs(ai-coding): 补充 /ultrareview、/run、/verify 等命令详解及总结速查
Snailclimb May 29, 2026
9b00bb1
docs(ai-coding): 优化 Claude Code 使用技巧和 Agent View 文档
Snailclimb May 29, 2026
4f3b65d
docs(mysql): add the order by condition to the pagination statement.
bengbengbalabalabeng May 29, 2026
6a890fa
docs(high-availability): 为冗余设计详解添加 10 张 draw.io 配图
Snailclimb May 30, 2026
6680c6e
docs(high-availability): 更新降级熔断、高可用系统设计、超时重试文章及侧边栏配置
Snailclimb May 30, 2026
72fb906
fix(docs): 修正线程池调度描述中的错别字
tanhuang2016 Jun 1, 2026
93ed562
docs: 修正 README.md 中文标点符号错误
Ayanamy000 Jun 1, 2026
503cf4f
docs(ai): 完善Agent介绍
Snailclimb Jun 1, 2026
c9905af
Merge pull request #2867 from tanhuang2016/main
Snailclimb Jun 1, 2026
cd30df4
Merge pull request #2869 from Ayanamy000/fix/chinese-punctuation
Snailclimb Jun 1, 2026
4fd2eea
Merge pull request #2866 from bengbengbalabalabeng/docs-mysql-paginat…
Snailclimb Jun 1, 2026
63aed0b
docs(ai-coding): 新增 MiniMax M3 + Claude Code 实战与 Vibe Coding 技巧,按类型重组…
Snailclimb Jun 5, 2026
b7e53bd
docs(ai): Agent 基础和 Cluade code技巧完善
Snailclimb Jun 7, 2026
d5901ae
docs(ai-coding): 新增 CLAUDE.md 最佳实践
Snailclimb Jun 7, 2026
887c6c6
Update codex-best-practices.md
Snailclimb Jun 7, 2026
c6a1819
fix(ci): add @vuepress/helper to lockfile importers
Snailclimb Jun 9, 2026
4a8400a
docs: add Japanese README
eltociear Jun 10, 2026
5006098
fix: update Context Engineering link and add @vuepress/helper dependency
Snailclimb Jun 10, 2026
ee4d82f
Merge pull request #2872 from eltociear/add-ja-doc
Snailclimb Jun 10, 2026
4267766
docs: add operating system articles
Snailclimb Jun 10, 2026
a344311
docs: group operating system sidebar
Snailclimb Jun 10, 2026
df53b0d
docs: refine operating system sidebar
Snailclimb Jun 10, 2026
d11a9b6
docs: highlight operating system must-read articles
Snailclimb Jun 10, 2026
62044a3
docs: add os io interview questions
Snailclimb Jun 10, 2026
a005d80
docs: refine virtual memory interview question title
Snailclimb Jun 10, 2026
0d6d4e0
docs: improve os memory interview answers
Snailclimb Jun 10, 2026
8b95e8b
docs: optimize java and os articles
Snailclimb Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Docs Test

on:
- push
- pull_request

jobs:
test-docs:
name: Test docs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm

- name: Install deps
run: pnpm install --frozen-lockfile

- name: Build test
env:
NODE_OPTIONS: --max_old_space_size=4096
run: pnpm docs:build
28 changes: 19 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,17 +1,27 @@
/node_modules
/package-lock.json
node_modules/
# *.drawio
*.drawio.bkp
.DS_Store
# VS Code Config file
.vscode/
# Vuepress Cache
.cache/
# Vuepress Temp
.temp/
# Vuepress Output
# VuePress Cache
**/.vuepress/.cache/
# VuePress Temp
**/.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
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pnpm nano-staged
28 changes: 28 additions & 0 deletions .markdownlint-cli2.mjs
Original file line number Diff line number Diff line change
@@ -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",
],
};
15 changes: 15 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Vuepress Cache
**/.vuepress/.cache/**
# Vuepress Temp
**/.vuepress/.temp/**
# Vuepress Output
dist/

# Node modules
node_modules/

# pnpm lock file
pnpm-lock.yaml

index.html
sw.js
375 changes: 0 additions & 375 deletions README.en.md

This file was deleted.

317 changes: 173 additions & 144 deletions README.md

Large diffs are not rendered by default.

447 changes: 447 additions & 0 deletions README_EN.md

Large diffs are not rendered by default.

432 changes: 432 additions & 0 deletions README_JA.md

Large diffs are not rendered by default.

48 changes: 48 additions & 0 deletions docs/.vuepress/client.ts
Original file line number Diff line number Diff line change
@@ -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),
],
});
173 changes: 173 additions & 0 deletions docs/.vuepress/components/ClickImagePreview.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
<template>
<Teleport v-if="isMounted" to="body">
<transition name="image-preview-fade">
<div
v-if="previewImage"
class="image-preview-mask"
role="dialog"
aria-modal="true"
@click.self="closePreview"
>
<button
class="image-preview-close"
type="button"
aria-label="关闭图片预览"
@click="closePreview"
>
×
</button>
<img
class="image-preview-img"
:src="previewImage.src"
:alt="previewImage.alt"
@click.stop
/>
</div>
</transition>
</Teleport>
</template>

<script setup lang="ts">
import { onMounted, onUnmounted, ref, watch } from "vue";

interface PreviewImage {
src: string;
alt: string;
}

const CONTENT_SELECTOR =
"#markdown-content, .theme-hope-content, .vp-page-content, .vp-content";
const IMAGE_SELECTOR = "img:not([no-view])";

const isMounted = ref(false);
const previewImage = ref<PreviewImage | null>(null);

const getPreviewableImage = (
target: EventTarget | null,
): HTMLImageElement | null => {
if (!(target instanceof Element)) return null;

const img = target.closest(IMAGE_SELECTOR);
if (!(img instanceof HTMLImageElement)) return null;
if (!img.closest(CONTENT_SELECTOR)) return null;
if (img.closest("a")) return null;

return img;
};

const closePreview = () => {
previewImage.value = null;
};

const handleClick = (event: MouseEvent) => {
const img = getPreviewableImage(event.target);
if (!img) return;

const src = img.currentSrc || img.src;
if (!src) return;

event.preventDefault();
previewImage.value = {
src,
alt: img.alt || "图片预览",
};
};

const handleKeydown = (event: KeyboardEvent) => {
if (event.key === "Escape") closePreview();
};

watch(previewImage, (image) => {
if (typeof document === "undefined") return;

document.documentElement.classList.toggle(
"image-preview-open",
Boolean(image),
);
});

onMounted(() => {
isMounted.value = true;

document.addEventListener("click", handleClick);
document.addEventListener("keydown", handleKeydown);
});

onUnmounted(() => {
document.removeEventListener("click", handleClick);
document.removeEventListener("keydown", handleKeydown);
document.documentElement.classList.remove("image-preview-open");
});
</script>

<style scoped lang="scss">
:global(
#markdown-content :not(a) > img:not([no-view]),
.theme-hope-content :not(a) > img:not([no-view]),
.vp-page-content :not(a) > img:not([no-view]),
.vp-content :not(a) > img:not([no-view])
) {
cursor: zoom-in;
}

:global(.image-preview-open) {
overflow: hidden;
}

.image-preview-mask {
position: fixed;
inset: 0;
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
padding: 32px;
background: rgb(0 0 0 / 82%);
cursor: zoom-out;
}

.image-preview-img {
display: block;
max-width: min(100%, 1280px);
max-height: 100%;
object-fit: contain;
border-radius: 6px;
box-shadow: 0 18px 48px rgb(0 0 0 / 35%);
cursor: default;
}

.image-preview-close {
position: fixed;
top: 16px;
right: 16px;
width: 40px;
height: 40px;
border: 0;
border-radius: 50%;
color: #fff;
background: rgb(255 255 255 / 16%);
font-size: 30px;
line-height: 38px;
cursor: pointer;
}

.image-preview-close:hover {
background: rgb(255 255 255 / 24%);
}

.image-preview-fade-enter-active,
.image-preview-fade-leave-active {
transition: opacity 0.16s ease;
}

.image-preview-fade-enter-from,
.image-preview-fade-leave-to {
opacity: 0;
}

@media (max-width: 719px) {
.image-preview-mask {
padding: 16px;
}
}
</style>
23 changes: 23 additions & 0 deletions docs/.vuepress/components/DeferredLayoutToggle.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<template>
<LayoutToggle v-if="shouldShow" />
</template>

<script setup lang="ts">
import { defineAsyncComponent, onMounted, ref } from "vue";

const LayoutToggle = defineAsyncComponent(() => import("./LayoutToggle.vue"));
const shouldShow = ref(false);

onMounted(() => {
const show = () => {
shouldShow.value = true;
};

if ("requestIdleCallback" in window) {
window.requestIdleCallback(show, { timeout: 2000 });
return;
}

window.setTimeout(show, 1200);
});
</script>
Loading