高并发
自带buff
这个作者很懒,什么都没留下…
展开
-
netty源码解析(4.0)-29 Future模式的实现
Future模式是一个重要的异步并发模式,在JDK有实现。但JDK实现的Future模式功能比较简单,使用起来比较复杂。Netty在JDK Future基础上,加强了Future的能力,具体体现在:更加简单的结果返回方式。在JDK中,需要用户自己实现Future对象的执行及返回结果。而在Netty中可以使用Promise简单地调用方法返回结果。 更加灵活的结果处理方式。JDK中只提供了主...原创 2019-11-20 15:13:18 · 369 阅读 · 0 评论 -
netty源码解析(4.0)-24 ByteBuf基于内存池的内存管理
io.netty.buffer.PooledByteBuf<T>使用内存池中的一块内存作为自己的数据内存,这个块内存是PoolChunk<T>的一部分。PooledByteBuf<T>是一个抽象类型,它有4个派生类:PooledHeapByteBuf,PooledUnsafeHeapByteBuf 使用堆内存的PooledByteBuffer<by...原创 2019-10-09 15:54:44 · 224 阅读 · 0 评论 -
netty源码解析(4.0)-22 ByteBuf的I/O
整个ByteBuf框架的抽象实现分为两部分:ByteBuf接口的抽象实现:AbstractByteBuf, AbstractReferenceCountedByteBuf。分配器ByteBufAllocator接口的抽象实现: AbstractByteBufAllocator。ByteBuf接口的抽象实现AbstractByteBuf&...原创 2019-10-04 10:13:11 · 148 阅读 · 0 评论 -
netty源码解析(4.0)-20 ChannelHandler: 自己实现一个自定义协议的服务器和客户端
本章不会直接分析Netty源码,而是通过使用Netty的能力实现一个自定义协议的服务器和客户端。通过这样的实践,可以更深刻地理解Netty的相关代码,同时可以了解,在设计实现自定义协议的过程中需要解决的一些关键问题。 本周章涉及到的代码可以从github上下载:https://github.com/brandonlyg/tinytransport.git。设计协议 本章...原创 2019-09-30 13:49:34 · 353 阅读 · 0 评论 -
netty源码解析(4.0)-19 ChannelHandler: codec--常用编解码实现
数据包编解码过程中主要的工作就是:在编码过程中进行序列化,在解码过程中从Byte流中分离出数据包然后反序列化。在MessageToByteEncoder中,已经解决了序列化之后的问题,ByteToMessageDecoder中已经部分第解决了从Byte流中分离出数据包的问题。实现具体的数据包编解码,只需要实现MessageToByteEncoder的encode和ByteToMessageDe...原创 2019-09-26 20:43:34 · 170 阅读 · 0 评论 -
netty源码解析(4.0)-18 ChannelHandler: codec--编解码框架
编解码框架和一些常用的实现位于io.netty.handler.codec包中。 编解码框架包含两部分:Byte流和特定类型数据之间的编解码,也叫序列化和反序列化。不类型数据之间的转换。 下图是编解码框架的类继承体系: 其中MessageToByteEncoder和ByteToMessageDecoder是实现了序列化和反序列化框架。 MessageToMessage是不同类...原创 2019-09-24 14:56:24 · 170 阅读 · 0 评论 -
netty源码解析(4.0)-17 ChannelHandler: IdleStateHandler实现
io.netty.handler.timeout.IdleStateHandler功能是监测Channel上read, write或者这两者的空闲状态。当Channel超过了指定的空闲时间时,这个Handler会触发一个IdleStateEvent事件。 在第一次检测到Channel变成active状态时向EventExecutor中提交三个延迟任务: ReaderIdleT...原创 2019-09-17 16:03:23 · 222 阅读 · 0 评论 -
netty源码解析(4.0)-16 ChannelHandler概览
本章开始分析ChannelHandler实现代码。ChannelHandler是netty为开发者提供的实现定制业务的主要接口,开发者在使用netty时,最主要的工作就是实现自己的ChannelHandler。ChannelHandler在设计上需要和ChannelPipeline配合共同实现pipeline的事件传递能力,这要求ChannelHandler需要实现一些固定的基本功能。由于...原创 2019-09-03 16:56:26 · 133 阅读 · 0 评论 -
netty源码解析(4.0)-21 ByteBuf的设计原理
ByteBufAbstractByteBufEmptyByteBufSwappedByteBufWrappedByteBufAbstractByteBufAbstractReferenceCountedByteBufCompositeByteBufFixedCompositeByteBufPooledByteBufReadOnlyByteBufferBufCompositeByteBufWra...原创 2019-10-02 15:38:00 · 166 阅读 · 0 评论 -
netty源码解析(4.0)-15 Channel NIO实现:写数据
写数据是NIO Channel实现的另一个比较复杂的功能。每一个channel都有一个outboundBuffer,这是一个输出缓冲区。当调用channel的write方法写数据时,这个数据被一系列ChannelOutboundHandler处理之后,它被放进这个缓冲区中,并没有真正把数据写到socket channel中。然后再调用channel的flush方法,flush会把outboundB...原创 2019-08-29 16:01:55 · 347 阅读 · 0 评论