Netty学习之ByteBuf

Netty学习之ByteBuf

简介

Netty是一个高性能、高可扩展性的异步事件驱动的网络应用程序框架,它极大地简化了TCP和UDP客户端和服务器开发等网络编程。

Netty重要的四个重要内容:

1)Reactor线程模型:一种高性能的多线程程序设计思路;

2)Netty中自己定义的Channel概念:增强版的通道概念;

3)ChannelPipeline责任链设计模式:事件处理机制;

4)内存管理:增强的ByteBuf缓冲区。

目的

ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的。

JDK ByteBuffer的缺点:

1)无法动态扩容

长度是固定的,不能动态扩展和收缩,当数据大于ByteBuffer容量时,会发生索引越界异常。

2)API使用复杂

读写的时候需要手动调用flip()和rewind()等方法,使用时需要非常谨慎地使用这些api,否则很容易出错。

ByteBuf操作

ByteBuf三个重要内容:capacity容量、readerIndex读取位置、writerIndex写入位置。提供了两个指针变量来支持顺序读和写操作,分别是读操作readerIndex和写操作writerIndex。
在这里插入图片描述

ByteBuf动态扩容

在这里插入图片描述

ByteBuf实现

在这里插入图片描述

在使用中,都是通过ByteBufAllocator分配器进行申请,同时分配器具备有内存管理的功能。

零拷贝机制

在这里插入图片描述

使用ByteBuf是Netty高性能很重要的一个原因!

零拷贝机制,没有改变原来的数据,原来数据内存的内存地址没有改变,只是引用方式改变了,避免了buffer之间的拷贝,从而提升了性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值