news 2026/10/18 11:01:18

Netty学习笔记03、Netty组件学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Netty学习笔记03、Netty组件学习

文章目录

  • 前言
  • 一、认识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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 10:59:13

虚拟列表原理与实现:固定高度模型从零搭建高性能滚动列表

1. 为什么非用虚拟列表不可:渲染巨量数据前的最后一道防线做前端的人迟早会遇到一个经典场景:后端一次性给你甩了 10000 条甚至 100000 条数据,要求在页面上做成列表展示。第一次遇到的人多半直接map一把梭,结果浏览器立刻教做人—…

作者头像 李华
网站建设 2026/10/18 10:57:57

PSR开关电源EMC设计实战:从噪声源头到PCB布局的完整指南

1. 从一块炸机的电源板说起:为什么PSR架构的EMC这么难缠PSR,也就是原边反馈(Primary Side Regulation),在中小功率开关电源里是个绕不开的架构。它省掉了光耦和TL431那一套副边反馈网络,成本低、元件少、可…

作者头像 李华
网站建设 2026/10/18 10:57:49

CLIP原理拆解与复现实践:从对比学习到零样本图文检索

CLIP 这篇论文,我前后迭代了差不多三周,从最初只跑通预训练模型做零样本分类,到后来把完整的对比学习流程在小规模图文对上复现出来,中间踩的坑比想象中多得多。作为一个一直做单模态模型的人,第一次接触图文联合表征时…

作者头像 李华
网站建设 2026/10/18 10:56:47

MATLAB实现RD算法的SAR点目标成像全流程

简介:本资源是一份面向雷达信号处理初学者与遥感方向研究生的MATLAB实践代码包,聚焦SAR成像核心环节——单点及多点目标的距离徙动校正、距离压缩与方位压缩,帮助用户深入理解Range-Doppler(RD)算法原理并完成端到端仿…

作者头像 李华
网站建设 2026/10/18 10:53:49

基于Spring Boot的民宿管理与推荐系统毕业设计实战指南

每年到毕业季,总有一批卡在选题上的同学来问我同一个问题:又想系统里有点“推荐”或“智能”的味道,又怕复杂度太高做不完。我的建议一直很明确——像“基于Spring Boot的民宿管理与推荐系统”这种题目,就是典型的好选题。它对Jav…

作者头像 李华
网站建设 2026/10/18 10:53:40

RBF神经网络驱动PID参数自整定原理与工程实现

1. 项目概述与实际应用价值PID控制器在工业现场中的地位不需要我多废话了,从温度控制、液位调节到伺服电机速度环,百分之八九十的控制回路仍然是PID在撑场面。但传统PID参数整定有一个绕不开的痛点:要么靠工程师经验试凑,要么用Zi…

作者头像 李华