价格: 30 学币
Java读源码之Netty深入剖析 解析netty各大组件细节/百万级性能调优/设计模式实际运用 Netty的横空出世让Java开发者眼前一亮,数据流处理、应用程序开启、处理协议编码等工作因为Netty都变得更加简单,也正因如此,掌握Netty也成为了抢手Java开发的必备素质。本次课程从Socket例子入手,一步步深入探究Netty源码,剖析代码背后的原理,解决面试中遇到的Netty问题,彻底掌握Netty。
=====
1 服务的socket在哪里初始化?在哪里accept连接?
理顺服务端启动流程
ServerBootstrap外观,NioServerSocketChannel创建,初始化,注册selector,绑定端口,接受新连接
2 默认情况下,Netty服务端启动多少线程?何时启动?Netty如何解决JDK空轮询bug?Netty如何保证异步串行无锁化?
吃透高并发线程模型
深入理解Netty无锁化串行设计,精心设计的reactor线程模型将榨干你的cpu,打满你的网卡,让你的应用程序性能爆表
3 Netty在哪里检测有新连接接入的?新连接是怎样注册到NioEventLoop线程的?
通晓新连接接入流程
boos reactor线程,监测新连接,创建NioSocketChannel,IO线程分配,selector注册事件
4 Netty是如何判断ChannelHandler类型的?对于ChannelHandler的添加应遵循什么顺序?用户手动触发事件传播,不同触发方式的区别?
明晰事件传播机制脉络
大动脉pipeline,处理器channelHandler,inbound、outbound事件传播,异常传播
5 Netty内存类别有哪些?如何减少多线程内存分配之间的竞争?不同大小的内存是如何进行分配的?
攻破内存分配机制
ByteBufAllocator分类,ByteBuf分类,堆内堆外,池化非池化,Unsafe非Unsafe,area、chunk、page、subpage,内存分级,内存缓存片段等概念一网打尽
6 解码器抽象的解码过程是什么样的?Netty里面有哪些拆箱即用的解码器?如何把对象变成字节流,最终写到Socket底层?
掌握编解码原理
编解码顶层抽象,定长解码器,行解码器,分隔符解码器,基于长度域解码器全面分析,编码抽象,writeAndFlush深入分析
读完源码,也许你也能像老师一样,给框架作者提Issue,并被采纳
=====
类比Socket通信流程,降低学习难度,搞清Netty源码
想写出好代码先看好代码怎么写
晓悟通用性能工具类
FastThreadLocal,比jdk的ThreadLocal更快轻量级对象池Recycler,对象复用,减少gc
高并发长连生产环境调优技能
从系统层面和应用层面通过多种手段来提高单机连接数,提升应用程序性能
问答专区
关于课程的问题都可在问答区随时提问,讲
师会进行集中答疑
源码开放
课程案例代码完全开放给你,你可以根据
所学知识自行修改、优化
有Netty编程经验,想了解Netty底层实现的小伙伴,IDE不熟悉的小伙伴可以学习老师的《IntelliJ IDEA神器使用技巧》课程
1-1 Netty深入剖析试看<input type="hidden" value="15013">
使用一个简单的socket例子概括Netty里面的基本组件,包括NioEventLoop,Channel,ByteBuf,Pipeline,ChannelHandler
分析服务端启动流程,包括服务端Channel的创建,初始化,以及注册到selector
分析Netty reactor线程处理过程,包括事件监听,事件处理,常规任务处理和定时任务处理
分析新连接接入以及绑定reactor线程,绑定到selector的过程
分析pipeline的创建,初始化,添加和删除ChannelHandler,事件传播机制,异常传播机制
详细分析ByteBuf种类,如何减少多线程内存分配竞争,不同大小内存是如何分配的
详细分析Netty解码原理,解码器抽象,以及几种常见的解码器
writeAndFlush传播流程,编码器抽象,writeAndFlush详细流程
详细分析Netty里面最高频使用的两个性能优化类FastThreadLocal以及轻量级对象池Recycler
分析各类常见设计模式以及在Netty中的应用
系统层面单机如何支持百万连接,如何提升应用层面性能
对本课程做一个回顾总结