<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MarchRS的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/MarchRS</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MarchRS]]></copyright><item><title><![CDATA[RabbitMQ入门-AMQP协议]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104790768</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104790768</guid><author>MarchRS</author><pubDate>Wed, 11 Mar 2020 11:14:46 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;RabbitMQ和AMQP
&nbsp;&nbsp;&nbsp;AMQP生产者流转过程
&nbsp;&nbsp;&nbsp;AMQP消费者流转过程

&nbsp;&nbsp;&nbsp;RabbitMQ和AMQP
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RabbitMQ遵从AMQP协议，AMQP的模型架构和RabbitMQ的模型架构是一样的，...]]></description><category></category></item><item><title><![CDATA[RabbitMQ入门-相关概念介绍]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104769809</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104769809</guid><author>MarchRS</author><pubDate>Tue, 10 Mar 2020 14:59:17 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;生产者和消费者
&nbsp;&nbsp;&nbsp;队列
&nbsp;&nbsp;&nbsp;交换器、路由键、绑定
&nbsp;&nbsp;&nbsp;RabbitMQ运转流程
&nbsp;&nbsp;&nbsp;连接和信道

&nbsp;&nbsp;&nbsp;生产者和消费者
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;生产者：Producer...]]></description><category></category></item><item><title><![CDATA[Netty-流量整形注意事项]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104674905</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104674905</guid><author>MarchRS</author><pubDate>Fri, 06 Mar 2020 10:17:27 +0800</pubDate><description><![CDATA[上一篇：流量整形工作机制

&nbsp;&nbsp;&nbsp;1. 并发编程在流量整形中的使用
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1 volatile的使用
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.2 减小锁的范围
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.3 原子类
&nbsp;&n...]]></description><category></category></item><item><title><![CDATA[Netty-流量整形工作机制]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104632097</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104632097</guid><author>MarchRS</author><pubDate>Thu, 05 Mar 2020 10:25:27 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;流量整形工作原理及源码分析
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;消息读取的流量整形
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;消息发送流量整形

流量整形工作原理及源码分析
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;流量整形工作原理：拦截channelRead()和write()...]]></description><category></category></item><item><title><![CDATA[Netty-流量整形实践]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104616286</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104616286</guid><author>MarchRS</author><pubDate>Tue, 03 Mar 2020 11:00:31 +0800</pubDate><description><![CDATA[当系统负载压力比较大时，系统进入过负荷状态，可能是CPU、内存资源已经过载，也可能是应用进程内部的资源几乎耗尽，如果继续全量处理业务，可能会导致长时间的Full GC、消息严重积压或者应用进程宕机，最终将压力转移到集群中的其他节点，引起级联故障。通过动态流控，拒绝一定比例新接入的请求消息，可以保障系统不被压垮
除了动态流控，有时候还需要对消息的读取和发送速度做控制，以便消息能以比较恒定的速度发送...]]></description><category></category></item><item><title><![CDATA[Netty-NioEventLoop线程工作机制]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104546014</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104546014</guid><author>MarchRS</author><pubDate>Fri, 28 Feb 2020 15:19:29 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;I/O读写操作原理
&nbsp;&nbsp;&nbsp;异步任务执行原理
&nbsp;&nbsp;&nbsp;定时任务执行原理

I/O读写操作原理
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NioEventLoop作为Reactor线程，负责TCP连接的创建和接入，以及TCP消息的读写，Reactor线程职责如下：

作为NIO服务端，接受客...]]></description><category></category></item><item><title><![CDATA[Netty-服务端接收不到客户端发送消息案例]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104532563</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104532563</guid><author>MarchRS</author><pubDate>Thu, 27 Feb 2020 16:46:43 +0800</pubDate><description><![CDATA[得益于高性能、低时延的优势，Netty被广泛应用于物联网领域，用于海量终端设备的协议接入、消息收发和数据处理。
当服务端出现性能瓶颈或者阻塞时，就会导致终端设备连接超时和掉线，引发各种问题，因此在物联网场景下，一定要防止服务端代码因为编码不当导致的意外阻塞，进而无法处理终端请求消息。


&nbsp;&nbsp;&nbsp;服务端接收不到客户端发送消息案例
&nbsp;&nbsp;&nbsp;堆...]]></description><category></category></item><item><title><![CDATA[JAVA-文件操作工具类]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104501536</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104501536</guid><author>MarchRS</author><pubDate>Tue, 25 Feb 2020 17:32:50 +0800</pubDate><description><![CDATA[文件操作工具类

/********************************************
 * 文件操作工具类
 *
 * @author p.ww
 *********************************************/

import java.io.*;
import java.util.concurrent.ExecutorService;
im...]]></description><category></category></item><item><title><![CDATA[Netty-DefaultEventExecutor工作机制]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104423221</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104423221</guid><author>MarchRS</author><pubDate>Fri, 21 Feb 2020 16:16:04 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;DefaultEventExecutor源码
&nbsp;&nbsp;&nbsp;业务线程池优化策略
&nbsp;&nbsp;&nbsp;Netty线程绑定机制原理

DefaultEventExecutor源码
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultEventExecutor是JDK线程池ExecutorService的一种...]]></description><category></category></item><item><title><![CDATA[Netty-并发失效案例之DefaultEventExecutorGroup特性]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104406070</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104406070</guid><author>MarchRS</author><pubDate>Thu, 20 Feb 2020 16:39:36 +0800</pubDate><description><![CDATA[为了提升性能，如果用户实现的ChannelHandler包含复杂或者可能导致同步阻塞的业务逻辑，往往需要通过线程池来提升并发能力，线程池添加有两种策略：用户自定义线程池执行业务ChannelHandler，以及通过Netty的EventExecutorGroup机制来并行执行ChannelHandler。


&nbsp;&nbsp;&nbsp;案例重现
&nbsp;&nbsp;&nbsp;无法...]]></description><category></category></item><item><title><![CDATA[Netty-channelReadComplete方法多次触发问题]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104312146</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104312146</guid><author>MarchRS</author><pubDate>Mon, 17 Feb 2020 15:46:17 +0800</pubDate><description><![CDATA[针对Channel上发生的各种网络操作，例如链路创建、链路关闭、消息读写等，Netty将这些消息封装成事件，触发ChannelPipeline调用ChannelHandler链，由系统或者用户实现的ChannelHandler对网络事件做处理。
由于网络事件种类比较多，触发和执行机制也存在一些差异，如果掌握不到位很有可能发生一些莫名其妙的问题。


channelReadComplete被多次调...]]></description><category></category></item><item><title><![CDATA[线程池的三种阻塞队列]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104096534</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104096534</guid><author>MarchRS</author><pubDate>Tue, 28 Jan 2020 00:39:47 +0800</pubDate><description><![CDATA[三种阻塞队列：
&nbsp;&nbsp;&nbsp;SynchronousQueue
&nbsp;&nbsp;&nbsp;ArrayBlockingQueue
&nbsp;&nbsp;&nbsp;LinkedBlockingQueue


SynchronousQueue
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无缓冲无界等待队列，超出核心线程个数的任务时，创建新的线程执行任务...]]></description><category></category></item><item><title><![CDATA[线程池的4种拒绝策略]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/104053229</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/104053229</guid><author>MarchRS</author><pubDate>Mon, 20 Jan 2020 16:50:21 +0800</pubDate><description><![CDATA[四种拒绝策略：
&nbsp;&nbsp;&nbsp;AbortPolicy
&nbsp;&nbsp;&nbsp;CallerRunsPolicy
&nbsp;&nbsp;&nbsp;DiscardPolicy
&nbsp;&nbsp;&nbsp;DiscardOldestPolicy

AbortPolicy
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认拒绝策略，丢弃任务并触发...]]></description><category></category></item><item><title><![CDATA[Netty-ChannelHandler并发安全分析]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/103961106</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/103961106</guid><author>MarchRS</author><pubDate>Wed, 15 Jan 2020 16:09:08 +0800</pubDate><description><![CDATA[ChannelHandler是Netty中使用最广的接口，Netty提供了大量内置的ChannelHandler实现类，包括编解码、SSL、日志打印等等。用户通过实现ChannelHandler接口，来接口和发送业务消息，并进行业务逻辑处理。


&nbsp;&nbsp;&nbsp;Netty ChannelHandler并发安全问题
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...]]></description><category></category></item><item><title><![CDATA[Netty-发送队列积压导致内存泄漏]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/103952718</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/103952718</guid><author>MarchRS</author><pubDate>Tue, 14 Jan 2020 09:52:21 +0800</pubDate><description><![CDATA[导致Netty内存泄漏的原因很多，如使用内存池方式创建的对象忘记释放，或者系统处理压力过大导致发送队列积压，尽管Netty采用NIO非阻塞通信，I/O处理往往不会成为业务瓶颈，但如果客户端并发压力过大，超过了服务端处理能力，又没有流控保护，则容易发生内存泄漏


&nbsp;&nbsp;&nbsp;高并发故障场景
&nbsp;&nbsp;&nbsp;内存泄漏原因分析
&nbsp;&nbsp;&n...]]></description><category></category></item><item><title><![CDATA[Netty-消息发送工作机制]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/103919942</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/103919942</guid><author>MarchRS</author><pubDate>Mon, 13 Jan 2020 09:26:48 +0800</pubDate><description><![CDATA[业务调用write后，经过ChannelPipeline职责链处理，消息被投递到消息发送缓冲区待发送，调用flush之后会执行真正的发送操作，底层通过调用Java NIO的SocketChannel进行非阻塞write操作，将消息发送到网络上。


&nbsp;&nbsp;&nbsp;WriteAndFlushTask原理和源码分析
&nbsp;&nbsp;&nbsp;ChannelOutbou...]]></description><category></category></item><item><title><![CDATA[Netty-什么是串行无锁化？]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/103920649</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/103920649</guid><author>MarchRS</author><pubDate>Fri, 10 Jan 2020 11:40:51 +0800</pubDate><description><![CDATA[为尽可能提升性能，Netty中有提到一个串行无锁化概念。


什么是串行无锁化？
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NioEventLoop维护了一个任务队列，队列在创建NioEventLoop时被初始化，是用来实现串行无锁化的载体。
//SingleThreadEventExecutor类
this.taskQueue = this.newTaskQueue(this...]]></description><category></category></item><item><title><![CDATA[Netty-ByteBuf使用注意事项]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/103892537</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/103892537</guid><author>MarchRS</author><pubDate>Wed, 08 Jan 2020 18:04:10 +0800</pubDate><description><![CDATA[根据一个具体案例来分析ByteBuf申请和释放时的线程并发安全问题和非法引用问题


&nbsp;&nbsp;&nbsp;HTTP响应Body获取时异常
&nbsp;&nbsp;&nbsp;ByteBuf非法引用问题

HTTP响应Body获取时异常
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP客户端示例代码，采用同步HTTP调用方式：
public class Http...]]></description><category></category></item><item><title><![CDATA[Netty-ByteBuf实现机制]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/103881611</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/103881611</guid><author>MarchRS</author><pubDate>Wed, 08 Jan 2020 14:06:14 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;应用在进行数据传输时，往往需要使用缓冲区，最常用的缓冲区就是JDK NIO类库提供的java.nio.Buffer。由于JDK原生的Buffer存在一些缺点，Netty提供了自己的ByteBuffer实现(ByteBuf类);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByteBuf种类繁多，支...]]></description><category></category></item><item><title><![CDATA[Netty-内存池原理分析]]></title><link>https://blog.youkuaiyun.com/MarchRS/article/details/103856358</link><guid>https://blog.youkuaiyun.com/MarchRS/article/details/103856358</guid><author>MarchRS</author><pubDate>Mon, 06 Jan 2020 20:42:19 +0800</pubDate><description><![CDATA[作为高性能的NIO通信框架，性能优势是Netty的核心竞争力之一，自Netty4.x引入内存池机制后，Netty默认采用内存池模式创建ByteBuf对象，性能得到很大提升，GC压力也得到很大缓解。


内存池原理分析
&nbsp;&nbsp;&nbsp;&nbsp;主要数据结构
&nbsp;&nbsp;&nbsp;&nbsp;Netty内存池内存的几种类型
&nbsp;&nbsp;&nbsp;&...]]></description><category></category></item></channel></rss>