2019年10月16日

摘要:PooledByteBuf是使用PoolArena内存 阅读全文
posted @ 2019-10-16 09:32 自带buff 阅读 (97) 评论 (0) 编辑

2019年10月9日

摘要:unpooled类型的ByteBuf内存管理 阅读全文
posted @ 2019-10-09 15:03 自带buff 阅读 (137) 评论 (0) 编辑

2019年9月24日

摘要:    ByteBuf的I/O主要解决的问题有两个: 管理readerIndex和writerIndex。这个在在AbstractByteBuf中解决。 从内存中读写数据。ByteBuf的不同实现主要使用两种内存:堆内存表示为byte[];直接内,可能是Dir 阅读全文
posted @ 2019-09-24 14:47 自带buff 阅读 (148) 评论 (0) 编辑

2019年9月21日

摘要:netty ByteBuf的设计原理 阅读全文
posted @ 2019-09-21 13:53 自带buff 阅读 (23) 评论 (0) 编辑

2019年9月3日

摘要:本章不会直接分析Netty源码,而是通过使用Netty的能力实现一个自定义协议的服务器和客户端。通过这样的实践,可以更深刻地理解Netty的相关代码,同时可以了解,在设计实现自定义协议的过程中需要解决的一些关键问题。 本周章涉及到的代码可以从github上下载: http://github.com 阅读全文
posted @ 2019-09-03 16:52 自带buff 阅读 (159) 评论 (0) 编辑

2019年8月29日

摘要:数据包编解码过程中主要的工作就是:在编码过程中进行序列化,在解码过程中从Byte流中分离出数据包然后反序列化。在MessageToByteEncoder中,已经解决了序列化之后的问题,ByteToMessageDecoder中已经部分第解决了从Byte流中分离出数据包的问题。实现具体的数据包编解码, 阅读全文
posted @ 2019-08-29 15:58 自带buff 阅读 (123) 评论 (0) 编辑

2019年8月14日

摘要:io.netty.handler.timeout.IdleStateHandler功能是监测Channel上read, write或者这两者的空闲状态。当Channel超过了指定的空闲时间时,这个Handler会触发一个IdleStateEvent事件。 在第一次检测到Channel变成active 阅读全文
posted @ 2019-08-14 15:34 自带buff 阅读 (142) 评论 (1) 编辑

2019年7月29日

摘要:本章开始分析ChannelHandler实现代码。ChannelHandler是netty为开发者提供的实现定制业务的主要接口,开发者在使用netty时,最主要的工作就是实现自己的ChannelHandler。ChannelHandler在设计上需要和ChannelPipeline配合共同实现pip 阅读全文
posted @ 2019-07-29 16:00 自带buff 阅读 (62) 评论 (0) 编辑

2019年3月28日

摘要:写数据是NIO Channel实现的另一个比较复杂的功能。每一个channel都有一个outboundBuffer,这是一个输出缓冲区。当调用channel的write方法写数据时,这个数据被一系列ChannelOutboundHandler处理之后,它被放进这个缓冲区中,并没有真正把数据写到soc 阅读全文
posted @ 2019-03-28 15:59 自带buff 阅读 (245) 评论 (0) 编辑

2019年2月27日

摘要:本章分析Nio Channel的数据读取功能的实现。 Channel读取数据需要Channel和ChannelHandler配合使用,netty设计数据读取功能包括三个要素:Channel, EventLoop和ChannelHandler。Channel有个read方法,这个方法不会直接读取数据, 阅读全文
posted @ 2019-02-27 00:08 自带buff 阅读 (234) 评论 (1) 编辑

2019年1月30日

摘要:Channel提供了3个方法用来实现关闭清理功能:disconnect,close,deregister。本章重点分析这个3个方法的功能的NIO实现。 disconnect实现: 断开连接 disconnect方法的调用栈如下: disconnect稍微复杂一些, 在io.netty.channel 阅读全文
posted @ 2019-01-30 10:56 自带buff 阅读 (1045) 评论 (0) 编辑

2019年1月22日

摘要:创建一个channel实例,并把它register到eventLoopGroup中之后,这个channel然后处于inactive状态,仍然是不可用的。只有在bind或connect方法调用成功之后才能正常。因此bind或connect算是channel初始化的最后一步,本章这就重点分析这两个功能的 阅读全文
posted @ 2019-01-22 15:47 自带buff 阅读 (273) 评论 (0) 编辑

2019年1月15日

摘要:结构设计 Channel的NIO实现位于io.netty.channel.nio包和io.netty.channel.socket.nio包中,其中io.netty.channel.nio是抽象实现,io.netty.channel.socket.nio最终实现。下面是Channel NIO相关类的 阅读全文
posted @ 2019-01-15 13:45 自带buff 阅读 (261) 评论 (0) 编辑

2019年1月8日

摘要:事件触发、传递、处理是DefaultChannelPipleline实现的另一个核心能力。在前面在章节中粗略地讲过了事件的处理流程,本章将会详细地分析其中的所有关键细节。这些关键点包括: 事件触发接口和对应的ChannelHandler处理方法。 inbound事件的传递。 outbound事件的传 阅读全文
posted @ 2019-01-08 15:45 自带buff 阅读 (176) 评论 (0) 编辑

2019年1月2日

摘要:io.netty.channel.DefaultChannelPipeline implements ChannelPipleline DefaultChannelPiple给出了ChannelPipleline的默认实现。ChannelPipleline是一个双向链表,本章的内容是分析默认实现中双 阅读全文
posted @ 2019-01-02 15:46 自带buff 阅读 (153) 评论 (0) 编辑

2018年12月24日

摘要:io.netty.channel.ChannelPipeline 设计原理 <!--5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6Ijc0NzAtMTU0NDcxMDI3ODc5NCIsImJsb2NrVHlwZSI6InBhcmFncmF 阅读全文
posted @ 2018-12-24 23:43 自带buff 阅读 (216) 评论 (0) 编辑

2018年12月18日

摘要:把NIO事件转换成对channel unsafe的调用或NioTask的调用 processSelectedKeys()方法是处理NIO事件的入口: private void processSelectedKeys() { if (selectedKeys != null) { processSel 阅读全文
posted @ 2018-12-18 00:07 自带buff 阅读 (122) 评论 (0) 编辑

2018年12月11日

摘要:接口定义 io.netty.channel.EventLoopGroup extends EventExecutorGroup 方法 说明 ChannelFuture register(Channel channel) 把一个channel注册到一个EventLoop ChannelFuture r 阅读全文
posted @ 2018-12-11 00:45 自带buff 阅读 (264) 评论 (1) 编辑

2018年12月4日

摘要:上一章讲了EventExecutorGroup的整体结构和原理,这一章我们来探究一下它的具体实现。EventExecutorGroup和EventExecutor接口io.netty.util.concurrent.EventExecutorGroupjava.util.concurrent.Sch 阅读全文
posted @ 2018-12-04 00:23 自带buff 阅读 (228) 评论 (0) 编辑

2018年11月27日

摘要:派生体系 java.util.concurrent ThreadPoolExecutor AbstractExecutorService ExecutorService Executor 这个类是Executor框的核心实现,它的名字向我们表明,它是使用thread pool实现的。这个thread 阅读全文
posted @ 2018-11-27 00:06 自带buff 阅读 (171) 评论 (0) 编辑

2019年10月16日

摘要:PooledByteBuf是使用PoolArena内存 阅读全文
posted @ 2019-10-16 09:32 自带buff 阅读 (97) 评论 (0) 编辑

2019年10月9日

摘要:unpooled类型的ByteBuf内存管理 阅读全文
posted @ 2019-10-09 15:03 自带buff 阅读 (137) 评论 (0) 编辑

2019年9月24日

摘要:    ByteBuf的I/O主要解决的问题有两个: 管理readerIndex和writerIndex。这个在在AbstractByteBuf中解决。 从内存中读写数据。ByteBuf的不同实现主要使用两种内存:堆内存表示为byte[];直接内,可能是Dir 阅读全文
posted @ 2019-09-24 14:47 自带buff 阅读 (148) 评论 (0) 编辑

2019年9月21日

摘要:netty ByteBuf的设计原理 阅读全文
posted @ 2019-09-21 13:53 自带buff 阅读 (23) 评论 (0) 编辑

2019年9月3日

摘要:本章不会直接分析Netty源码,而是通过使用Netty的能力实现一个自定义协议的服务器和客户端。通过这样的实践,可以更深刻地理解Netty的相关代码,同时可以了解,在设计实现自定义协议的过程中需要解决的一些关键问题。 本周章涉及到的代码可以从github上下载: http://github.com 阅读全文
posted @ 2019-09-03 16:52 自带buff 阅读 (159) 评论 (0) 编辑

2019年8月29日

摘要:数据包编解码过程中主要的工作就是:在编码过程中进行序列化,在解码过程中从Byte流中分离出数据包然后反序列化。在MessageToByteEncoder中,已经解决了序列化之后的问题,ByteToMessageDecoder中已经部分第解决了从Byte流中分离出数据包的问题。实现具体的数据包编解码, 阅读全文
posted @ 2019-08-29 15:58 自带buff 阅读 (123) 评论 (0) 编辑

2019年8月20日

摘要:编解码框架和一些常用的实现位于io.netty.handler.codec包中。 编解码框架包含两部分:Byte流和特定类型数据之间的编解码,也叫序列化和反序列化。不类型数据之间的转换。 下图是编解码框架的类继承体系: 其中MessageToByteEncoder和ByteToMessageDeco 阅读全文
posted @ 2019-08-20 14:50 自带buff 阅读 (105) 评论 (0) 编辑

2019年8月14日

摘要:io.netty.handler.timeout.IdleStateHandler功能是监测Channel上read, write或者这两者的空闲状态。当Channel超过了指定的空闲时间时,这个Handler会触发一个IdleStateEvent事件。 在第一次检测到Channel变成active 阅读全文
posted @ 2019-08-14 15:34 自带buff 阅读 (142) 评论 (1) 编辑

2019年7月29日

摘要:本章开始分析ChannelHandler实现代码。ChannelHandler是netty为开发者提供的实现定制业务的主要接口,开发者在使用netty时,最主要的工作就是实现自己的ChannelHandler。ChannelHandler在设计上需要和ChannelPipeline配合共同实现pip 阅读全文
posted @ 2019-07-29 16:00 自带buff 阅读 (62) 评论 (0) 编辑

2019年3月28日

摘要:写数据是NIO Channel实现的另一个比较复杂的功能。每一个channel都有一个outboundBuffer,这是一个输出缓冲区。当调用channel的write方法写数据时,这个数据被一系列ChannelOutboundHandler处理之后,它被放进这个缓冲区中,并没有真正把数据写到soc 阅读全文
posted @ 2019-03-28 15:59 自带buff 阅读 (245) 评论 (0) 编辑

导航

统计