Java读源码之Netty深入剖析

第1章 课程介绍

介绍本课程需要的前提知识和内容概要

1-1 Netty深入剖析

第2章 Netty基本组件

使用一个简单的socket例子概括Netty里面的基本组件,包括NioEventLoop,Channel,ByteBuf,Pipeline,ChannelHandler

2-1 一个简单的socket例子

2-2 Netty对于socket的抽象

2-3 Netty组件简单介绍

第3章 Netty服务端启动

分析服务端启动流程,包括服务端Channel的创建,初始化,以及注册到selector

3-1 服务端启动demo

3-2 服务端Channel的创建

3-3 服务端Channel的初始化

3-4 注册selector

3-5 服务端口的绑定

3-6 服务端启动总结

第4章 NioEventLoop

分析Netty reactor线程处理过程,包括事件监听,事件处理,常规任务处理和定时任务处理

4-1 NioEventLoop概述

4-2 NioEventLoop创建概述

4-3 ThreadPerTaskThread

4-4 创建NioEventLoop线程

4-5 创建线程选择器

4-6 NioEventLoop的启动

4-7 NioEventLoop执行概述

4-8 检测IO事件

4-9 处理IO事件

4-10 -reactor线程任务的执行

4-11 -NioEventLoop总结

第5章 新连接接入

分析新连接接入以及绑定reactor线程,绑定到selector的过程

5-1 新连接接入概述

5-2 新连接检测

5-3 NioSocketChannel的创建

5-4 Channel的分类

5-5 新连接NioEventLoop的分配和selector注册

5-6 NioSocketChannel读事件的注册

5-7 新连接接入总结

第6章 pipeline

分析pipeline的创建,初始化,添加和删除ChannelHandler,事件传播机制,异常传播机制

6-1 pipeline概述

6-2 pipeline初始化

6-3 添加ChannelHandler

6-4 删除ChannelHandler

6-5 inBound事件的传播

6-6 outBound事件的传播

6-7 异常的传播

6-8 pipeline总结.mp4

第7章 ByteBuf

详细分析ByteBuf种类,如何减少多线程内存分配竞争,不同大小内存是如何分配的

7-1 内存分配概述

7-2 ByteBuf结构以及重要api

7-3 ByteBuf分类

7-4 内存分配器ByteBufAllocator分析

7-5 UnPooledByteBufAllocator分析

7-6 PooledByteBufAllocator概述

7-7 directArena分配direct内存的流程

7-8 内存规格的介绍

7-9 缓存数据结构

7-10 命中缓存的分配流程

7-11 arena、chunk、page、subpage概念

7-12 page 级别内存分配

7-13 subpage 级别的内存分配

7-14 ByteBuf的回收

7-15 总结

第8章 Netty解码

详细分析Netty解码原理,解码器抽象,以及几种常见的解码器

8-1 Netty解码概述

8-2 抽象解码器ByteToMessageDecoder

8-3 基于固定长度解码器分析

8-4 行解码器分析

8-5 基于分隔符解码器分析

8-6 基于长度域解码器参数分析

8-7 基于长度域解码器分析

8-8 解码器总结

第9章 Netty编码及writeAndFlush()

writeAndFlush传播流程,编码器抽象,writeAndFlush详细流程

9-1 Netty编码概述

9-2 writeAndFlush()抽象步骤

9-3 抽象编码器MessageToByteEncoder

9-4 写buffer队列

9-5 刷新buffer队列

9-6 总结

第10章 Netty性能优化工具类解析

详细分析Netty里面最高频使用的两个性能优化类FastThreadLocal以及轻量级对象池Recycler

10-1 性能优化工具类概述

10-2 FastThreadLocal的使用

10-3 FastThreadLocal的创建和get()实现

10-4 FastThreadLocal的set实现

10-5 Recycler的使用

10-6 Recycler的创建

10-7 从Recycler中获取对象

10-8 同线程回收对象

10-9 异线程回收对象

10-10 异线程收割对象

10-11 性能优化工具类总结

第11章 Netty设计模式应用

分析各类常见设计模式以及在Netty中的应用

11-1 单例模式在Netty里面的应用

11-2 策略模式在Netty里面的应用

11-3 装饰者模式在Netty里面的应用

11-4 观察者模式在Netty里面的应用

11-5 迭代器模式在Netty里面的应用

11-6 责任链模式在Netty里面的应用

第12章 Netty高性能并发调优

系统层面单机如何支持百万连接,如何提升应用层面性能

12-1 性能调优概述

12-2 单机百万连接模拟与瓶颈

12-3 单机百万连接调优过程

12-4 Netty应用级别性能瓶颈

12-5 Netty应用级别性能调优过程

第13章 课程总结

对本课程做一个回顾总结

13-1 课程回顾和总结

下载地址:百度网盘下载

原文地址:https://www.cnblogs.com/lrb520/p/9461872.html

时间: 2024-07-31 19:19:50

Java读源码之Netty深入剖析的相关文章

Java读源码学设计模式:适配器Adapter

适配器模式相关源码:slf4j-1.6.1.hibernate-3.6.7 大家都知道,log4j是一个广泛使用的日志工具,除此之外,sun公司在JDK中也有自己的日志工具,也就是java.util.logging.Logger.当然还有其他一些日志工具. 多种日志工具功能和使用方式类似,一般都包含debug.info.warn.error等日志级别的方法,但却没有实现共同的接口.这一点不像JDBC,虽然关系型数据库种类很多,例如MySQL.Oracle等,但是有一套统一的接口,也就是JDBC.

【Java集合源码剖析】HashMap源码剖析

转载请注明出处:http://blog.csdn.net/ns_code/article/details/36034955 HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,

【Java集合源码剖析】ArrayList源码剖析

转载请注明出处:http://blog.csdn.net/ns_code/article/details/35568011 ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的C

java集合类源码剖析

java集合类源码剖析 hashmap 底层实现 HashMap.Entry数组,数组+拉链 static class Entry<K,V> implements Map.Entry<K,V> { final K key; V value; Entry<K,V> next; final int hash; } Entry对象代表了HashMap中的一个元素(键值对) hashCode相同(碰撞)的元素将分配到Entry数组的同一个桶中 同一个桶中的Entry对象由nex

【Java集合源码剖析】Vector源码剖析

转载请注明出处:http://blog.csdn.net/ns_code/article/details/35793865 Vector简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长. LinkedList是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境. LinkedList没有丝线Serializable接口,因此它不支持序列化,实现了Cloneable接口,

【Java集合源码剖析】LinkedList源码剖析

转载请注明出处:http://blog.csdn.net/ns_code/article/details/35787253 LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全的,只在单线程下适合使用. LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆. Linked

【Java集合源码剖析】HashMap源码剖析(转)

HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆. HashMap源码剖析 HashMap的源码如下(加入了比较详细的注释): [ja

Java ArrayList源码剖析

转自: Java ArrayList源码剖析 总体介绍 ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现.除该类未实现同步外,其余跟Vector大致相同.每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量.当向容器中添加元素时,如果容量不足,容器会自动增大底层数组的大小.前面已经提过,Java泛型只是编译器提供的语法糖,所以这里的数组是一个Object数组

Java集合源码分析(二)ArrayList

ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类. ArrayList实现了Serializable接口,因此它支持序列化,能够通过