文章目录
- 前言
- 一、认识Netty
- 1.1 Netty 是什么?
- 1.2 Netty 的作者
- 1.3 Netty 的地位
- 1.4 Netty 的优势
- 二、netty入门程序HelloWorld!
- 2.1、netty入门:客户端->服务端 helloworld
- 2.1.1、服务端
- 2.1.2、客户端
- 2.2、流程梳理
- 2.3、netty-helloworld的各个组件通俗介绍
- 三、组件
- 3.1、EventLoop
- 3.1.1、认识EventLoop和EventLoopGroup
- 3.1.2、执行普通、定时任务
- 3.1.3、执行IO任务(含2点细化)
- 3.1.3、源码分析(不同eventLoop,线程如何切换)
- 3.2、channel
- 3.2.1、介绍Channel、ChannelFuture
- 3.2.2、连接问题
- 3.2.3、ChannelFuture的实际应用
- 3.2.3.1、处理连接操作(两种方式:同步、异步)
- 3.2.3.2、处理关闭channel连接操作与eventloop(两种方式:同步、异步)
- 3.2.3.3、同步与异步解决方案区别
- 为什么netty要用异步?异步提升了什么?
- 3.3、Future & Promise
- 3.3.1、介绍Future与Promise
- 3.3.2、JDK的Future示例(线程间取值)
- 3.3.3、netty的Future示例(同步、异步)
- 3.3.4、netty的promise示例
- 3.4、handler & pipeline
- 3.4.1、入站、出站handler执行顺序
- 3.4.2、InBoundHandler案例(加工数据)
- 3.4.3、OutBoundHandler案例(不同对象发出数据效果不一致)
- 3.5、EmbeddedChannel(快速测试入站、出站handler业务)
- 3.6、ByteBuf
- 3.6.1、创建
- 3.6.2、直接内存 vs 堆内存
- 3.6.3、池化 vs 非池化
- 3.6.4、ByteBuf组成
- 3.6.5、写入
- 3.6.5、扩容
- 3.6.7、读取
- 3.6.8、retain & release (释放ByteBuf)
- 3.6.8.1、释放分析
- 3.6.8.2、源码分析(head、tail)
- 3.6.8、零拷贝
- 3.6.8.1、slice:切割
- 3.6.8.2、duplicate:整块
- 3.6.8.3、copy:深拷贝(非零拷贝)
- 3.6.8.4、CompositeBuffer:组装ByteBuf
- 3.6.8.5、工具类Unpooled(提供了非池化的 ByteBuf 创建、组合、复制等操作)
- 3.6.9、ByteBuf优势汇总
- 案例、回显服务器(双向通信)
- 描述+code(netty)
- 扩展:读写误解解答(含socket实现)
- 参考文章
前言
本文是付费专栏《Java后端开发从入门到进阶》的配套文章,所属阶段与专题为「阶段四:Java主流框架应用 / 4.5 Netty」。前两篇把 NIO 的地基打好,从本篇开始正式进入 Netty 的组件世界。
专栏介绍:适合 Java 初学者及希望系统查漏补缺的开发者。专栏不仅讲“怎么用”,还会深入源码与底层原理,结合真实开发场景和代码案例,帮助你建立完整的 Java 技术知识体系。
本文从 Netty 的定位与作者讲起,先跑通 HelloWorld 入门程序,再逐个拆解 EventLoop、Channel、Future 与 Promise、Handler 与 Pipeline、ByteBuf 这些核心组件,理解它们如何配合完成一次网络请求。
本文所属付费专栏目录:Java后端开发从入门到进阶整体专栏目录汇总
一、认识Netty
1.1 Netty 是什么?
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance proto