source-code-hunter icon indicating copy to clipboard operation
source-code-hunter copied to clipboard

😱 从源码层面,剖析挖掘互联网行业主流技术的底层实现原理,为广大开发者 “提升技术深度” 提供便利。目前开放 Spring 全家桶,Mybatis、Netty、Dubbo 框架,及 Redis、Tomcat 中间件等

互联网公司常用框架源码赏析

license stars contributors help-wanted issues PRs Welcome

“技术深度” 与 “技术广度”是对开发者来说最为重要的两个维度,本项目致力于从源码层面,剖析和挖掘互联网行业主流技术的底层实现原理,为广大开发者 “提升技术深度” 提供便利

加入我们,一起通读互联网行业主流框架及中间件源码,成为强大的 “源码猎人”,目前开放的有 Spring 全家桶MybatisNettyDubbo 框架,及 RedisTomcat 中间件等,让我们一起开拓新的领地,揭开这些源码的神秘面纱。

本项目主要用于记录框架及中间件源码的阅读经验、个人理解及解析,希望能够使阅读源码变成一件简单有趣,且有价值的事情,抽空更新中... (如果本项目对您有帮助,请 watch、star、fork 素质三连一波,鼓励一下作者,谢谢)

  • Gitee Pages: https://doocs.gitee.io/source-code-hunter
  • GitHub Pages: https://doocs.github.io/source-code-hunter

Spring 系列

IoC 容器

  • BeanDefinition 的资源定位过程
  • 将 bean 解析封装成 BeanDefinition
  • 将 BeanDefinition 注册进 IoC 容器
  • 依赖注入(DI)
  • BeanFactoryPostProcessor
  • BeanPostProcessor
  • Spring BeanFactory 源码解析
  • 循环依赖

AOP

  • AOP 源码实现及分析
  • JDK 动态代理的实现原理解析
  • Spring AOP 如何生效(Spring AOP 标签解析)

SpringMVC

  • IoC 容器 在 Web 环境 中的启动
  • SpringMVC 的设计与实现
  • SpringMVC 跨域解析
  • Spring-MVC-HandlerMapping
  • Spring-mvc-MappingRegistry

SpringJDBC

  • 努力编写中...

Spring 事务

  • Spring 与事务处理
  • Spring 声明式事务处理
  • Spring 事务处理的设计与实现
  • Spring 事务管理器的设计与实现
  • Spring 事务解析

Spring 源码故事(瞎编版)

  • 面筋哥 IoC 容器的一天(上)

Spring 整体脉络

  • 16 张图解锁 Spring 的整体脉络

Spring 类解析

  • Spring 自定义标签解析

  • Spring Scan 包扫描

  • Spring 注解工具类

  • Spring 别名注册

  • Spring 标签解析类

  • Spring ApplicationListener

  • Spring messageSource

  • Spring 自定义属性解析器

  • Spring 排序工具

  • Spring-import 注解

  • Spring-定时任务

  • Spring StopWatch

  • Spring 元数据

  • Spring 条件接口

  • Spring MultiValueMap

  • Spring MethodOverride

  • Spring BeanDefinitionReaderUtils

  • Spring PropertyPlaceholderHelper

  • Spring PropertySource

  • Spring PlaceholderResolver

  • Spring-AnnotationFormatterFactory

  • Spring-Formatter

  • Spring-Parser

  • Spring-Printer

Spring5 新特性

  • Spring5-spring.components 解析

Spring RMI

  • Spring RMI

Spring Message

  • Spring EnableJMS
  • Spring JmsTemplate
  • Spring MessageConverter

SpringBoot

  • SpringBoot run 方法解析
  • SpringBoot 配置加载解析
  • SpringBoot 自动装配
  • SpringBoot ConfigurationProperties
  • SpringBoot 日志系统
  • SpringBoot ConditionalOnBean

SpringSecurity

  • SpringSecurity 请求全过程解析
  • SpringSecurity 自定义用户认证

MyBatis

基础支持层

  • 反射工具箱和 TypeHandler 系列
  • DataSource 及 Transaction 模块
  • binding 模块
  • 缓存模块

核心处理层

  • MyBatis 初始化
  • SqlNode 和 SqlSource
  • ResultSetHandler
  • StatementHandler
  • Executor 组件
  • SqlSession 组件

类解析

  • Mybatis-Cache
  • Mybatis-log
  • Mybatis-Reflector
  • Mybatis-Alias
  • Mybatis-Cursor
  • Mybatis-DataSource
  • Mybatis-DyanmicSqlSourcce
  • Mybatis-MapperMethod
  • Mybatis-MetaObject
  • Mybatis-MethodSignature
  • Mybatis-ObjectWrapper
  • Mybatis-ParamNameResolver
  • Mybatis-SqlCommand
  • Mybats-GenericTokenParser

Netty

网络 IO 技术基础

  • 把被说烂的 BIO、NIO、AIO 再从头到尾扯一遍
  • IO 模型
  • 四种 IO 编程及对比

JDK1.8 NIO 包 核心组件源码剖析

  • Selector、SelectionKey 及 Channel 组件

Netty 粘拆包及解决方案

  • TCP 粘拆包问题及 Netty 中的解决方案

Netty 多协议开发

  • 基于 HTTP 协议的 Netty 开发
  • 基于 WebSocket 协议的 Netty 开发
  • 基于自定义协议的 Netty 开发

基于 Netty 开发服务端及客户端

  • 基于 Netty 的服务端开发
  • 基于 Netty 的客户端开发

Netty 主要组件的源码分析

  • ByteBuf 组件
  • Channel 组件 和 Unsafe 组件
  • EventLoop 组件
  • ChannelPipeline 和 ChannelHandler 组件
  • Future 和 Promise 组件

Netty 高级特性

  • Netty 架构设计
  • Netty 高性能之道

Netty 技术细节源码分析

  • FastThreadLocal 源码分析
  • Recycler 对象池原理分析
  • MpscLinkedQueue 队列原理分析
  • HashedWheelTimer 时间轮原理分析
  • HashedWheelTimer & schedule
  • ByteBuf 的内存泄漏原因与检测原理
  • 内存池之 PoolChunk 设计与实现
  • 内存池之从内存池申请内存

Dubbo

架构设计

  • Dubbo 整体架构

SPI 机制

  • Dubbo 与 Java 的 SPI 机制

注册中心

  • Dubbo 注册中心模块简析
  • 注册中心的 Zookeeper 实现

远程通信

  • Dubbo 远程通信模块简析
  • Transport 组件
  • Exchange 组件
  • Buffer 组件
  • 基于 Netty 实现远程通信
  • 基于 HTTP 实现远程通信

RPC

  • RPC 模块简析
  • Protocol 组件
  • Proxy 组件
  • Dubbo 协议
  • Hessian 协议

集群

  • Dubbo 集群模块简析
  • 负载均衡
  • 集群容错
  • mock 与服务降级

Tomcat

Servlet 与 Servlet 容器

  • servlet-api 源码赏析
  • 一个简单的 Servlet 容器
  • Servlet 容器详解

Web 容器

  • 一个简单的 Web 服务器

Redis

  • 深挖 Redis 6.0 源码——SDS

Nacos

  • nacos 服务注册

Sentinel

  • sentinel 时间窗口实现
  • Sentinel 底层 LongAdder 的计数实现
  • Sentinel 限流算法的实现

RocketMQ

  • RocketMQ NameServer 与 Broker 的通信
  • RocketMQ 生产者启动流程
  • RocketMQ 消息发送流程
  • RocketMQ 消息发送存储流程
  • RocketMQ MappedFile 内存映射文件详解
  • RocketMQ ConsumeQueue 详解
  • RocketMQ CommitLog 详解
  • RocketMQ IndexFile 详解
  • RocketMQ 消费者启动流程
  • RocketMQ 消息拉取流程
  • RocketMQ Broker 处理拉取消息请求流程
  • RocketMQ 消息消费流程

番外篇(JDK 1.8)

基础类库

  • String 类 源码赏析
  • Thread 类 源码赏析
  • ThreadLocal 类 源码赏析

集合

  • HashMap 类 源码赏析
  • ConcurrentHashMap 类 源码赏析
  • LinkedHashMap 类 源码赏析
  • ArrayList 类 源码赏析
  • LinkedList 类 源码赏析
  • HashSet 类 源码赏析
  • TreeSet 类 源码赏析

并发编程

  • JUC 并发包 UML 全量类图
  • Executor 线程池组件 源码赏析
  • Lock 锁组件 源码赏析
  • 详解 AbstractQueuedSynchronizer 抽象类
  • CountdownLatch 类 源码赏析
  • CyclicBarrier 类 源码赏析
  • Semaphore 类 源码赏析

学习心得

个人经验

  • 初级开发者应该从 Spring 源码中学什么

编码规范

  • 一个程序员的自我修养

设计模式

  • 从 Spring 及 Mybatis 框架源码中学习设计模式(创建型)
  • 从 Spring 及 Mybatis 框架源码中学习设计模式(行为型)
  • 从 Spring 及 Mybatis 框架源码中学习设计模式(结构型)

多线程

  • Java 并发编程在各主流框架中的应用

Stars 趋势

Star History Chart

Doocs 社区优质项目

GitHub 技术社区 Doocs,致力于打造一个内容完整、持续成长的互联网开发者学习生态圈!以下是 Doocs 的一些优秀项目,欢迎各位开发者朋友持续保持关注。

# 项目 描述 热度
1 advanced-java 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。
2 leetcode 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解。
3 source-code-hunter 互联网常用组件框架源码分析。
4 jvm Java 虚拟机底层原理知识总结。
5 coding-interview 代码面试题集,包括《剑指 Offer》、《编程之美》等。
6 md 一款高度简洁的微信 Markdown 编辑器。
7 technical-books 值得一看的技术书籍列表。

贡献者

感谢以下所有朋友对 GitHub 技术社区 Doocs 所做出的贡献,参与项目维护请戳这儿

公众号

Doocs 技术社区旗下唯一公众号「Doocs」​,欢迎扫码关注,专注分享技术领域相关知识及行业最新资讯。当然,也可以加我个人微信(备注:GitHub),拉你进技术交流群。


公众平台


个人微信

关注「Doocs」公众号,回复 PDF,即可获取 互联网 Java 工程师进阶知识完全扫盲 项目离线 PDF 文档(283 页精华),学习更加方便!