Netty4.x 的逆袭之路 —— 初识 Netty

本文介绍了Netty4.x的学习历程,从BIO、NIO、AIO的基础知识到Netty的入门案例,涵盖了EventLoopGroup、ChannelFuture、解码器、编码器、ChannelGroup、客户端、自定义编解码等内容,揭示了Netty的管道思想和事件驱动模型。通过逐步深入,展现了Netty在网络通信中的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Netty4.x 的逆袭之路

2020年9月18日

(傅哥的谆谆教诲)

Java 目前有三种IO共存;分别是 BIO、NIO 和 AIO

  • BIO : Block-IO 阻塞 IO 发起请求, 阻塞等待, 完成请求 (并发场景通过开启多条线程来完成)
  • NIO : New - IO 阻塞 IO 轮询事件查询器(轮询为阻塞等待, 此处可手动释放阻塞), 当有事件产生时解除阻塞
  • AIO : Asynchronous IO 异步 IO 轮询动作不在阻塞用户线程, 当有事件产生时通知用户线/.

BIO : 面向流 一个字节输入一个字节输出
NIO : 面向缓冲区;

补充: IO 的四种模型
BIO、NIO、AIO、多路复用

按照傅哥的例子写了两个IO的操作 AIO 和 BIO , 之前自己用 NIO 写过一个 reactor 主从多线程的模式. 所以没有继续去写 NIO 的代码

写下来发现傅哥他从第一行代码开始就将整个架构的思想放了进去. 包括抽象的 适配器与通道的处理器 channelhandler. 思想领会了
即开闭原则, 这里用到了模板方法设计模式, 定制了规范, 不同的处理器由自己去实现.

整体感觉代码较复杂 , 可扩展性较好. 入门学习难度 128 颗星.

总结:

  • 有些事情,先不要想为什么,先去做。做完也许你就知道了答案。不做就一直在怀疑。

接触到Netty之后发现, 原来傅哥从一开始就想着用Netty的思路来进行代码编写案例教程 此时竖起大拇指.

2020年9月23日

傅哥英语不怎么样, bing. emm…

public static void main(String[] args) {
   
   
        new NettyServer().bing(7397);
    }

    private void bing(int port) {
   
   

netty 正式开始, 这里为了学习效率, 使用的为源码包. 直接拉的netty github 4.1 的分支代码
这里有个比较有意思的事情, 就是netty源码拿下来运行时发现少个包
import io.netty.util.collection.IntObjectMap;

当然最后来发现这个包是在编译期使用groovy脚本生成的
a-source-code/netty4.1/common/src/main/script/codegen.groovy


使用.java的源码netty, 然后根据傅哥的代码下来, 程序正常执行. 日志正常输出

链接报告开始
链接报告信息:有一客户端链接到本服务端
链接报告IP:192.168.30.32
链接报告Port:2333
链接报告完毕

总结

101:

  1. EventLoopGroup 是什么? 这个模式很像之前写的 NIO 主从模型

  2. ChannelFuture sync = bootstrap.bind(port).sync();
    sync.channel().closeFuture().sync();

    这两行代码干了什么? sync

  3. parentGroup.shutdownGracefully();
    childGroup.shutdownGracefully();
    优雅的关闭?? 有多优雅?

  4. bootstrap 配置的一系列参数问题, 为什么是 128 ? 为什么用 childhandler

2020年9月23日

傅哥前面的大篇幅代码没解释有点难受

102 案例跑通

链接报告开始
链接报告信息:有一客户端链接到本服务端
链接报告IP:192.168.30.32
链接报告Port:2333
链接报告完毕
Wed Sep 23 14:40:22 CST 2020接收到消息:1111
Wed Sep
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值