|
|
import { defineConfig } from 'vitepress'
|
|
|
|
|
|
export default defineConfig({
|
|
|
title: "Source Code Hunter",
|
|
|
description: "读尽天下源码,心中自然无码——源码猎人",
|
|
|
head: [
|
|
|
['meta', { name: 'keywords', content: 'doc,docs,doocs,documentation,github,gitee,source-code-hunter' }],
|
|
|
['meta', { name: 'description', content: '读尽天下源码,心中自然无码——源码猎人' }],
|
|
|
['link', { rel: 'icon', type: 'image/png', href: 'https://fastly.jsdelivr.net/gh/doocs/source-code-hunter@main/images/favicon-32x32.png' }]
|
|
|
],
|
|
|
ignoreDeadLinks: true,
|
|
|
themeConfig: {
|
|
|
search: {
|
|
|
provider: 'local'
|
|
|
},
|
|
|
footer: {
|
|
|
message: 'Released under the CC-BY-SA-4.0 license.',
|
|
|
copyright: `Copyright © 2018-${new Date().getFullYear()} <a href="https://github.com/doocs">Doocs</a>`
|
|
|
},
|
|
|
logo: 'https://fastly.jsdelivr.net/gh/doocs/source-code-hunter@main/images/favicon-32x32.png',
|
|
|
docFooter: {
|
|
|
prev: '上一篇',
|
|
|
next: '下一篇'
|
|
|
},
|
|
|
editLink: {
|
|
|
pattern: 'https://github.com/doocs/source-code-hunter/edit/main/docs/:path',
|
|
|
text: '在 GitHub 编辑'
|
|
|
},
|
|
|
nav: [
|
|
|
{ text: '首页', link: '/' },
|
|
|
{ text: 'Spring系列', link: '/Spring/IoC/1、BeanDefinition的资源定位过程' },
|
|
|
{ text: 'Mybatis', link: '/Mybatis/基础支持层/1、反射工具箱和TypeHandler系列' },
|
|
|
{ text: 'Netty', link: '/Netty/IOTechnologyBase/把被说烂的BIO、NIO、AIO再从头到尾扯一遍' },
|
|
|
{ text: 'Dubbo', link: '/Dubbo/architectureDesign/Dubbo整体架构' },
|
|
|
{ text: 'Tomcat', link: '/Tomcat/servlet-api源码赏析' },
|
|
|
{ text: 'Redis', link: '/Redis/redis-sds' },
|
|
|
{ text: 'JDK 1.8', link: '/JDK/basic/String' },
|
|
|
{ text: '学习心得', link: '/LearningExperience/PersonalExperience/初级开发者应该从spring源码中学什么' }
|
|
|
],
|
|
|
sidebar: [
|
|
|
{
|
|
|
text: 'Spring 系列',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{
|
|
|
text: 'IoC 容器',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'BeanDefinition 的资源定位过程', link: '/Spring/IoC/1、BeanDefinition的资源定位过程' },
|
|
|
{ text: '将 bean 解析封装成 BeanDefinition', link: '/Spring/IoC/2、将bean解析封装成BeanDefinition' },
|
|
|
{ text: '将 BeanDefinition 注册进 IoC 容器', link: '/Spring/IoC/3、将BeanDefinition注册进IoC容器' },
|
|
|
{ text: '依赖注入(DI)', link: '/Spring/IoC/4、依赖注入(DI)' },
|
|
|
{ text: 'BeanFactoryPostProcessor', link: '/Spring/IoC/BeanFactoryPostProcessor' },
|
|
|
{ text: 'BeanPostProcessor', link: '/Spring/IoC/BeanPostProcessor' },
|
|
|
{ text: 'Spring BeanFactory 源码解析', link: '/Spring/clazz/Spring-beanFactory' },
|
|
|
{ text: '循环依赖', link: '/Spring/IoC/循环依赖' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'AOP',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'AOP 源码实现及分析', link: '/Spring/AOP/AOP源码实现及分析' },
|
|
|
{ text: 'JDK 动态代理的实现原理解析', link: '/Spring/AOP/JDK动态代理的实现原理解析' },
|
|
|
{ text: 'Spring AOP 如何生效', link: '/Spring/AOP/Spring-Aop如何生效' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'SpringMVC',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'IoC 容器在 Web 环境中的启动', link: '/Spring/SpringMVC/IoC容器在Web环境中的启动' },
|
|
|
{ text: 'SpringMVC 的设计与实现', link: '/Spring/SpringMVC/SpringMVC的设计与实现' },
|
|
|
{ text: 'SpringMVC 跨域解析', link: '/Spring/SpringMVC/SpringMVC-CROS' },
|
|
|
{ text: 'Spring-MVC-HandlerMapping', link: '/Spring/mvc/Spring-MVC-HandlerMapping' },
|
|
|
{ text: 'Spring-mvc-MappingRegistry', link: '/Spring/mvc/Spring-mvc-MappingRegistry' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'SpringJDBC',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '努力编写中...', link: '' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Spring 事务',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Spring 与事务处理', link: '/Spring/SpringTransaction/Spring与事务处理' },
|
|
|
{ text: 'Spring 声明式事务处理', link: '/Spring/SpringTransaction/Spring声明式事务处理' },
|
|
|
{ text: 'Spring 事务处理的设计与实现', link: '/Spring/SpringTransaction/Spring事务处理的设计与实现' },
|
|
|
{ text: 'Spring 事务管理器的设计与实现', link: '/Spring/SpringTransaction/Spring事务管理器的设计与实现' },
|
|
|
{ text: 'Spring 事务解析', link: '/Spring/TX/Spring-transaction' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Spring 源码故事(瞎编版)',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '面筋哥 IoC 容器的一天(上)', link: '/Spring/Spring源码故事(瞎编版)/面筋哥IoC容器的一天(上)' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Spring 整体脉络',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '16 张图解锁 Spring 的整体脉络', link: '/Spring/Spring整体脉络/16张图解锁Spring的整体脉络' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Spring 类解析',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Spring 自定义标签解析', link: '/Spring/clazz/Spring-Custom-label-resolution' },
|
|
|
{ text: 'Spring Scan 包扫描', link: '/Spring/clazz/Spring-scan' },
|
|
|
{ text: 'Spring 注解工具类', link: '/Spring/clazz/Spring-AnnotationUtils' },
|
|
|
{ text: 'Spring 别名注册', link: '/Spring/clazz/Spring-SimpleAliasRegistry' },
|
|
|
{ text: 'Spring 标签解析类', link: '/Spring/clazz/Spring-BeanDefinitionParserDelegate' },
|
|
|
{ text: 'Spring ApplicationListener', link: '/Spring/clazz/Spring-ApplicationListener' },
|
|
|
{ text: 'Spring messageSource', link: '/Spring/clazz/Spring-MessageSource' },
|
|
|
{ text: 'Spring 自定义属性解析器', link: '/Spring/clazz/Spring-Custom-attribute-resolver' },
|
|
|
{ text: 'Spring 排序工具', link: '/Spring/clazz/Spring-OrderUtils' },
|
|
|
{ text: 'Spring-import 注解', link: '/Spring/clazz/Spring-Import' },
|
|
|
{ text: 'Spring-定时任务', link: '/Spring/clazz/Spring-Scheduling' },
|
|
|
{ text: 'Spring StopWatch', link: '/Spring/clazz/Spring-StopWatch' },
|
|
|
{ text: 'Spring 元数据', link: '/Spring/clazz/Spring-Metadata' },
|
|
|
{ text: 'Spring 条件接口', link: '/Spring/clazz/Spring-Conditional' },
|
|
|
{ text: 'Spring MultiValueMap', link: '/Spring/clazz/Spring-MultiValueMap' },
|
|
|
{ text: 'Spring MethodOverride', link: '/Spring/clazz/Spring-MethodOverride' },
|
|
|
{ text: 'Spring BeanDefinitionReaderUtils', link: '/Spring/clazz/Spring-BeanDefinitionReaderUtils' },
|
|
|
{ text: 'Spring PropertyPlaceholderHelper', link: '/Spring/clazz/Spring-PropertyPlaceholderHelper' },
|
|
|
{ text: 'Spring PropertySources', link: '/Spring/clazz/Spring-PropertySources' },
|
|
|
{ text: 'Spring-AnnotationFormatterFactory', link: '/Spring/clazz/format/Spring-AnnotationFormatterFactory' },
|
|
|
{ text: 'Spring-Formatter', link: '/Spring/clazz/format/Spring-Formatter' },
|
|
|
{ text: 'Spring-Parser', link: '/Spring/clazz/format/Spring-Parser' },
|
|
|
{ text: 'Spring-Printer', link: '/Spring/clazz/format/Spring-Printer' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Spring5 新特性',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Spring5-spring.components 解析', link: '/Spring/Spring5新特性/Spring-spring-components' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Spring RMI',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Spring RMI', link: '/Spring/RMI/Spring-RMI' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Spring Message',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Spring EnableJMS', link: '/Spring/message/Spring-EnableJms' },
|
|
|
{ text: 'Spring JmsTemplate', link: '/Spring/message/Spring-JmsTemplate' },
|
|
|
{ text: 'Spring MessageConverter', link: '/Spring/message/Spring-MessageConverter' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'SpringBoot',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'SpringBoot run 方法解析', link: '/SpringBoot/Spring-Boot-Run' },
|
|
|
{ text: 'SpringBoot 配置加载解析', link: '/SpringBoot/SpringBoot-application-load' },
|
|
|
{ text: 'SpringBoot 自动装配', link: '/SpringBoot/SpringBoot-自动装配' },
|
|
|
{ text: 'SpringBoot ConfigurationProperties', link: '/SpringBoot/SpringBoot-ConfigurationProperties' },
|
|
|
{ text: 'SpringBoot 日志系统', link: '/SpringBoot/SpringBoot-LogSystem' },
|
|
|
{ text: 'SpringBoot ConditionalOnBean', link: '/SpringBoot/SpringBoot-ConditionalOnBean' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Spring Cloud',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Spring Cloud Commons 源码', link: '/SpringCloud/spring-cloud-commons-source-note' },
|
|
|
{ text: 'Spring Cloud OpenFeign 源码', link: '/SpringCloud/spring-cloud-openfeign-source-note' },
|
|
|
{ text: 'Spring Cloud Gateway 源码', link: '/SpringCloud/spring-cloud-gateway-source-note' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'SpringSecurity',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'SpringSecurity 请求全过程解析', link: '/SpringSecurity/SpringSecurity请求全过程解析' },
|
|
|
// { text: 'SpringSecurity 自定义用户认证', link: '/SpringSecurity/SpringSecurity自定义用户认证' },
|
|
|
// { text: 'SpringSecurity 流程补充', link: '/SpringSecurity/SpringSecurity流程补充' },
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'MyBatis',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{
|
|
|
text: '基础支持层',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '反射工具箱和 TypeHandler 系列', link: '/Mybatis/基础支持层/1、反射工具箱和TypeHandler系列' },
|
|
|
{ text: 'DataSource 及 Transaction 模块', link: '/Mybatis/基础支持层/2、DataSource及Transaction模块' },
|
|
|
{ text: 'binding 模块', link: '/Mybatis/基础支持层/3、binding模块' },
|
|
|
{ text: '缓存模块', link: '/Mybatis/基础支持层/4、缓存模块' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '核心处理层',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'MyBatis 初始化', link: '/Mybatis/核心处理层/1、MyBatis初始化' },
|
|
|
{ text: 'SqlNode 和 SqlSource', link: '/Mybatis/核心处理层/2、SqlNode和SqlSource' },
|
|
|
{ text: 'ResultSetHandler', link: '/Mybatis/核心处理层/3、ResultSetHandler' },
|
|
|
{ text: 'StatementHandler', link: '/Mybatis/核心处理层/4、StatementHandler' },
|
|
|
{ text: 'Executor 组件', link: '/Mybatis/核心处理层/5、Executor组件' },
|
|
|
{ text: 'SqlSession 组件', link: '/Mybatis/核心处理层/6、SqlSession组件' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '类解析',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Mybatis-Cache', link: '/Mybatis/基础支持层/Mybatis-Cache' },
|
|
|
{ text: 'Mybatis-log', link: '/Mybatis/基础支持层/Mybatis-log' },
|
|
|
{ text: 'Mybatis-Reflector', link: '/Mybatis/基础支持层/Mybatis-Reflector' },
|
|
|
{ text: 'Mybatis-Alias', link: '/Mybatis/核心处理层/Mybatis-Alias' },
|
|
|
{ text: 'Mybatis-Cursor', link: '/Mybatis/核心处理层/Mybatis-Cursor' },
|
|
|
{ text: 'Mybatis-DataSource', link: '/Mybatis/核心处理层/Mybatis-DataSource' },
|
|
|
{ text: 'Mybatis-DynamicSqlSource', link: '/Mybatis/核心处理层/Mybatis-DynamicSqlSource' },
|
|
|
{ text: 'Mybatis-MapperMethod', link: '/Mybatis/核心处理层/Mybatis-MapperMethod' },
|
|
|
{ text: 'Mybatis-MetaObject', link: '/Mybatis/核心处理层/Mybatis-MetaObject' },
|
|
|
{ text: 'Mybatis-MethodSignature', link: '/Mybatis/核心处理层/Mybatis-MethodSignature' },
|
|
|
{ text: 'Mybatis-ObjectWrapper', link: '/Mybatis/核心处理层/Mybatis-ObjectWrapper' },
|
|
|
{ text: 'Mybatis-ParamNameResolver', link: '/Mybatis/核心处理层/Mybatis-ParamNameResolver' },
|
|
|
{ text: 'Mybatis-SqlCommand', link: '/Mybatis/核心处理层/Mybatis-SqlCommand' },
|
|
|
{ text: 'Mybatis-GenericTokenParser', link: '/Mybatis/核心处理层/Mybatis-GenericTokenParser' },
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Netty',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{
|
|
|
text: '网络 IO 技术基础',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '把被说烂的 BIO、NIO、AIO 再从头到尾扯一遍', link: '/Netty/IOTechnologyBase/把被说烂的BIO、NIO、AIO再从头到尾扯一遍' },
|
|
|
{ text: 'IO 模型', link: '/Netty/IOTechnologyBase/IO模型' },
|
|
|
{ text: '四种 IO 编程及对比', link: '/Netty/IOTechnologyBase/四种IO编程及对比' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'JDK1.8 NIO 包 核心组件源码剖析',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Selector、SelectionKey 及 Channel 组件', link: '/Netty/IOTechnologyBase/Selector、SelectionKey及Channel组件' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Netty 粘拆包及解决方案',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'TCP 粘拆包问题及 Netty 中的解决方案', link: '/Netty/TCP粘拆包/TCP粘拆包问题及Netty中的解决方案' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Netty 多协议开发',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '基于 HTTP 协议的 Netty 开发', link: '/Netty/Netty多协议开发/基于HTTP协议的Netty开发' },
|
|
|
{ text: '基于 WebSocket 协议的 Netty 开发', link: '/Netty/Netty多协议开发/基于WebSocket协议的Netty开发' },
|
|
|
{ text: '基于自定义协议的 Netty 开发', link: '/Netty/Netty多协议开发/基于自定义协议的Netty开发' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '基于 Netty 开发服务端及客户端',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '基于 Netty 的服务端开发', link: '/Netty/基于Netty开发服务端及客户端/基于Netty的服务端开发' },
|
|
|
{ text: '基于 Netty 的客户端开发', link: '/Netty/基于Netty开发服务端及客户端/基于Netty的客户端开发' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Netty 主要组件的源码分析',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'ByteBuf 组件', link: '/Netty/Netty主要组件源码分析/ByteBuf组件' },
|
|
|
{ text: 'Channel 组件 和 Unsafe 组件', link: '/Netty/Netty主要组件源码分析/Channel和Unsafe组件' },
|
|
|
{ text: 'EventLoop 组件', link: '/Netty/Netty主要组件源码分析/EventLoop组件' },
|
|
|
{ text: 'ChannelPipeline 和 ChannelHandler 组件', link: '/Netty/Netty主要组件源码分析/ChannelPipeline和ChannelHandler组件' },
|
|
|
{ text: 'Future 和 Promise 组件', link: '/Netty/Netty主要组件源码分析/Future和Promise组件' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Netty 高级特性',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Netty 架构设计', link: '/Netty/AdvancedFeaturesOfNetty/Netty架构设计' },
|
|
|
{ text: 'Netty 高性能之道', link: '/Netty/AdvancedFeaturesOfNetty/Netty高性能之道' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Netty 技术细节源码分析',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'FastThreadLocal 源码分析', link: '/Netty/Netty技术细节源码分析/FastThreadLocal源码分析' },
|
|
|
{ text: 'Recycler 对象池原理分析', link: '/Netty/Netty技术细节源码分析/Recycler对象池原理分析' },
|
|
|
{ text: 'MpscLinkedQueue 队列原理分析', link: '/Netty/Netty技术细节源码分析/MpscLinkedQueue队列原理分析' },
|
|
|
{ text: 'HashedWheelTimer 时间轮原理分析', link: '/Netty/Netty技术细节源码分析/HashedWheelTimer时间轮原理分析' },
|
|
|
{ text: 'HashedWheelTimer & schedule', link: '/Netty/Netty技术细节源码分析/HashedWheelTimer&schedule' },
|
|
|
{ text: 'ByteBuf 的内存泄漏原因与检测原理', link: '/Netty/Netty技术细节源码分析/ByteBuf的内存泄漏原因与检测原理' },
|
|
|
{ text: '内存池之 PoolChunk 设计与实现', link: '/Netty/Netty技术细节源码分析/内存池之PoolChunk设计与实现' },
|
|
|
{ text: '内存池之从内存池申请内存', link: '/Netty/Netty技术细节源码分析/内存池之从内存池申请内存' },
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Dubbo',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{
|
|
|
text: '架构设计',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Dubbo 整体架构', link: '/Dubbo/architectureDesign/Dubbo整体架构' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'SPI 机制',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Dubbo 与 Java 的 SPI 机制', link: '/Dubbo/SPI/Dubbo与Java的SPI机制' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '注册中心',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Dubbo 注册中心模块简析', link: '/Dubbo/registry/Dubbo注册中心模块简析' },
|
|
|
{ text: '注册中心的 Zookeeper 实现', link: '/Dubbo/registry/注册中心的Zookeeper实现' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '远程通信',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Dubbo 远程通信模块简析', link: '/Dubbo/remote/Dubbo远程通信模块简析' },
|
|
|
{ text: 'Transport 组件', link: '/Dubbo/remote/Transport组件' },
|
|
|
{ text: 'Exchange 组件', link: '/Dubbo/remote/Exchange组件' },
|
|
|
{ text: 'Buffer 组件', link: '/Dubbo/remote/Buffer组件' },
|
|
|
{ text: '基于 Netty 实现远程通信', link: '/Dubbo/remote/基于Netty实现远程通信' },
|
|
|
{ text: '基于 HTTP 实现远程通信', link: '/Dubbo/remote/基于HTTP实现远程通信' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'RPC',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'RPC 模块简析', link: '/Dubbo/RPC/RPC模块简析' },
|
|
|
{ text: 'Protocol 组件', link: '/Dubbo/RPC/Protocol组件' },
|
|
|
{ text: 'Proxy 组件', link: '/Dubbo/RPC/Proxy组件' },
|
|
|
{ text: 'Dubbo 协议', link: '/Dubbo/RPC/Dubbo协议' },
|
|
|
{ text: 'Hessian 协议', link: '/Dubbo/RPC/Hessian协议' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '集群',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Dubbo 集群模块简析', link: '/Dubbo/cluster/Dubbo集群模块简析' },
|
|
|
{ text: '负载均衡', link: '/Dubbo/cluster/负载均衡' },
|
|
|
{ text: '集群容错', link: '/Dubbo/cluster/集群容错' },
|
|
|
{ text: 'mock 与服务降级', link: '/Dubbo/cluster/mock与服务降级' },
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Tomcat',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{
|
|
|
text: 'Servlet 与 Servlet 容器',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'servlet-api 源码赏析', link: '/Tomcat/servlet-api源码赏析' },
|
|
|
{ text: '一个简单的 Servlet 容器', link: '/Tomcat/一个简单的servlet容器代码设计' },
|
|
|
{ text: 'Servlet 容器详解', link: '/Tomcat/servlet容器详解' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Web 容器',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '一个简单的 Web 服务器', link: '/Tomcat/一个简单的Web服务器代码设计' },
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Redis',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '深挖 Redis 6.0 源码——SDS', link: '/Redis/redis-sds' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Nacos',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'nacos 服务注册', link: '/nacos/nacos-discovery' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'Sentinel',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'sentinel 时间窗口实现', link: '/Sentinel/Sentinel时间窗口的实现' },
|
|
|
{ text: 'Sentinel 底层 LongAdder 的计数实现', link: '/Sentinel/Sentinel底层LongAdder的计数实现' },
|
|
|
{ text: 'Sentinel 限流算法的实现', link: '/Sentinel/Sentinel限流算法的实现' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: 'RocketMQ',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'RocketMQ NameServer 与 Broker 的通信', link: '/rocketmq/rocketmq-nameserver-broker' },
|
|
|
{ text: 'RocketMQ 生产者启动流程', link: '/rocketmq/rocketmq-producer-start' },
|
|
|
{ text: 'RocketMQ 消息发送流程', link: '/rocketmq/rocketmq-send-message' },
|
|
|
{ text: 'RocketMQ 消息发送存储流程', link: '/rocketmq/rocketmq-send-store' },
|
|
|
{ text: 'RocketMQ MappedFile 内存映射文件详解', link: '/rocketmq/rocketmq-mappedfile-detail' },
|
|
|
{ text: 'RocketMQ ConsumeQueue 详解', link: '/rocketmq/rocketmq-consumequeue' },
|
|
|
{ text: 'RocketMQ CommitLog 详解', link: '/rocketmq/rocketmq-commitlog' },
|
|
|
{ text: 'RocketMQ IndexFile 详解', link: '/rocketmq/rocketmq-indexfile' },
|
|
|
{ text: 'RocketMQ 消费者启动流程', link: '/rocketmq/rocketmq-consumer-start' },
|
|
|
{ text: 'RocketMQ 消息拉取流程', link: '/rocketmq/rocketmq-pullmessage' },
|
|
|
{ text: 'RocketMQ Broker 处理拉取消息请求流程', link: '/rocketmq/rocketmq-pullmessage-processor' },
|
|
|
{ text: 'RocketMQ 消息消费流程', link: '/rocketmq/rocketmq-consume-message-process' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '番外篇(JDK 1.8)',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{
|
|
|
text: '基础类库',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'String 类 源码赏析', link: '/JDK/basic/String' },
|
|
|
{ text: 'Thread 类 源码赏析', link: '/JDK/basic/Thread' },
|
|
|
{ text: 'ThreadLocal 类 源码赏析', link: '/JDK/basic/ThreadLocal' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '集合',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'HashMap 类 源码赏析', link: '/JDK/collection/HashMap' },
|
|
|
{ text: 'ConcurrentHashMap 类 源码赏析', link: '/JDK/collection/ConcurrentHashMap' },
|
|
|
{ text: 'LinkedHashMap 类 源码赏析', link: '/JDK/collection/LinkedHashMap' },
|
|
|
{ text: 'ArrayList 类 源码赏析', link: '/JDK/collection/ArrayList' },
|
|
|
{ text: 'LinkedList 类 源码赏析', link: '/JDK/collection/LinkedList' },
|
|
|
{ text: 'HashSet 类 源码赏析', link: '/JDK/collection/HashSet' },
|
|
|
{ text: 'TreeSet 类 源码赏析', link: '/JDK/collection/TreeSet' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '并发编程',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'JUC 并发包 UML 全量类图', link: '/JDK/concurrentCoding/JUC并发包UML全量类图' },
|
|
|
{ text: 'Executor 线程池组件 源码赏析', link: '/JDK/concurrentCoding/Executor线程池组件' },
|
|
|
{ text: 'Lock 锁组件 源码赏析', link: '/JDK/concurrentCoding/Lock锁组件' },
|
|
|
{ text: '详解 AbstractQueuedSynchronizer 抽象类', link: '/JDK/concurrentCoding/详解AbstractQueuedSynchronizer' },
|
|
|
{ text: 'Semaphore 类 源码赏析', link: '/JDK/concurrentCoding/Semaphore' },
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '学习心得',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{
|
|
|
text: '个人经验',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '初级开发者应该从 Spring 源码中学什么', link: '/LearningExperience/PersonalExperience/初级开发者应该从spring源码中学什么' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '设计模式',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: '从 Spring 及 Mybatis 框架源码中学习设计模式(创建型)', link: '/LearningExperience/DesignPattern/从Spring及Mybatis框架源码中学习设计模式(创建型)' },
|
|
|
{ text: '从 Spring 及 Mybatis 框架源码中学习设计模式(行为型)', link: '/LearningExperience/DesignPattern/从Spring及Mybatis框架源码中学习设计模式(行为型)' },
|
|
|
{ text: '从 Spring 及 Mybatis 框架源码中学习设计模式(结构型)', link: '/LearningExperience/DesignPattern/从Spring及Mybatis框架源码中学习设计模式(结构型)' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
text: '多线程',
|
|
|
collapsed: true,
|
|
|
items: [
|
|
|
{ text: 'Java 并发编程在各主流框架中的应用', link: '/LearningExperience/ConcurrentProgramming/Java并发编程在各主流框架中的应用' },
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
socialLinks: [
|
|
|
{ icon: 'github', link: 'https://github.com/doocs/source-code-hunter' }
|
|
|
],
|
|
|
}
|
|
|
})
|