<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sunshine052697的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sunshine052697</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sunshine052697]]></copyright><item><title><![CDATA[Netty客户端创建]]></title><link>https://blog.youkuaiyun.com/sunshine052697/article/details/87979387</link><guid>https://blog.youkuaiyun.com/sunshine052697/article/details/87979387</guid><author>sunshine052697</author><pubDate>Thu, 28 Feb 2019 10:48:39 +0800</pubDate><description><![CDATA[1、Netty客户端创建时序图





2、Netty客户端创建流程分析

步骤1：用户线程创建Bootstrap实例，通过API设置创建客户端相关的参数，异步发起客户端连接；

步骤2：创建处理客户端连接、I/O读写的Reactor线程组NioEventLoopGroup。可以通过构造函数指定I/O线程的个数，默认为CPU内核数的2倍；

步骤3：通过Bootstrap的ChannelFac...]]></description><category></category></item><item><title><![CDATA[Netty服务端创建]]></title><link>https://blog.youkuaiyun.com/sunshine052697/article/details/87979271</link><guid>https://blog.youkuaiyun.com/sunshine052697/article/details/87979271</guid><author>sunshine052697</author><pubDate>Thu, 28 Feb 2019 10:20:36 +0800</pubDate><description><![CDATA[1、Netty服务端创建时序图



分步详细说明：

1）创建ServerBootstrap实例。ServerBootstrap是Netty服务端的启动辅助类，她提供了一系列的方法用于设置服务端启动相关的参数。

2）设置并绑定Reactor线程池。Netty的Reactor线程池是 EventLoopGroup，它实际上是EventLoop的数组。Eventloop的职责是处理所有注册到本线程...]]></description><category></category></item><item><title><![CDATA[ByteBuf和相关辅助类]]></title><link>https://blog.youkuaiyun.com/sunshine052697/article/details/87973449</link><guid>https://blog.youkuaiyun.com/sunshine052697/article/details/87973449</guid><author>sunshine052697</author><pubDate>Wed, 27 Feb 2019 16:03:39 +0800</pubDate><description><![CDATA[1、ByteBuf功能说明

ByteBuffer的缺点

     1）ByteBuffer长度固定，一旦分配完成，它的容量不能动态扩展和收缩，当需要编码的POJO对象大于ByteBuf的容量时，会发生索引越界异常

   2）ByteBuffer只有一个标志位置的指针position，读写的时候需要手工平调用flip()和rewind()等，使用者必须小心谨慎地处理这些API,否则容易导致程序...]]></description><category></category></item><item><title><![CDATA[Future和Promise]]></title><link>https://blog.youkuaiyun.com/sunshine052697/article/details/87972699</link><guid>https://blog.youkuaiyun.com/sunshine052697/article/details/87972699</guid><author>sunshine052697</author><pubDate>Wed, 27 Feb 2019 14:55:58 +0800</pubDate><description><![CDATA[1、Future功能

Future最早来源于java.util.concurrent.Future，用于代表异步操作的结果。

可以通过get方法获取操作结果，如果操作尚未完成，则会同步阻塞当前调用的线程；如果不允许阻塞太长时间或者无限期阻塞，可以通过带超时时间的get获取结果；如果达到超时时间你操作仍然没有完成，则抛出TimeoutException。

可以通过isDone方法可以判断当前的...]]></description><category></category></item><item><title><![CDATA[EventLoop和EventLoopGroup]]></title><link>https://blog.youkuaiyun.com/sunshine052697/article/details/87969668</link><guid>https://blog.youkuaiyun.com/sunshine052697/article/details/87969668</guid><author>sunshine052697</author><pubDate>Wed, 27 Feb 2019 11:39:10 +0800</pubDate><description><![CDATA[1、Netty的线程模型
Reactor单线程模型
指所有的I/O操作都在同一个NIO线程上面完成。NIO线程的职责如下：
①作为NIO服务端，接受客户端的TCP链接
②作为NIO客户端，向服务端发起TCP连接
③读取通信对端的请求或者应答消息
④向通信对端发送消息请求或者应答消息
不适用高负载、大并发的场景：
①一个NIO线程同时处理成百上千的链路，性能上无法支撑，即便NIO线程的CPU符合导到...]]></description><category></category></item><item><title><![CDATA[ChannelPipeline和ChannelHandler]]></title><link>https://blog.youkuaiyun.com/sunshine052697/article/details/87969167</link><guid>https://blog.youkuaiyun.com/sunshine052697/article/details/87969167</guid><author>sunshine052697</author><pubDate>Wed, 27 Feb 2019 11:19:59 +0800</pubDate><description><![CDATA[Channel过滤器实现原理与Servlet filter机制一致，它将Channel的数据管道抽象为ChannelPipeline，消息在ChannelPipeline中流动和传递。ChannelPipeline持有I/O事件拦截器ChannelHandler的链表，由ChannelHandler对I/O事件进行拦截和处理，可以方便的通过新增和删除ChannelHandler来实现不同的业务逻辑...]]></description><category></category></item></channel></rss>