# RxJavaDemo **Repository Path**: lzbgit/RxJavaDemo ## Basic Information - **Project Name**: RxJavaDemo - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-05-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## RxJava示例要点 #### 一 操作符 #### 二 什么是背压 1.概念 > 上游的发送事件与下游处理的事件不一致,就是生产者(被观察者)的生产速度大于消费者(观察者)消费速度从而导致的问题,生产速度与消费者速度的一个比值
> 举一个简单点的例子
> 如果被观察者快速发送消息,但是观察者处理消息的很缓慢,如果没有特定的流(Flow)控制,就会导致大量消息积压占用系统资源,最终导致十分缓慢
> 当发生大量的网络请求时,网速比较慢的情况下由于不能及时处理请求,会导致请求积压下来,这就是我们要面临的背压
2.为什么要设计背压呢? > 为了解决上游发送事件和下游处理事件速度不一致的问题我们需要一个策略能让下游告诉上游,下游的处理能力是怎样的,这两处不同就是为了解决这个问题.
3.背压四中策略 > BackpressureStrategy.ERROR:若上游发送事件速度超出下游处理事件能力,且事件缓存池已满,则抛出异常
> //阻塞时队列
> BackpressureStrategy.BUFFER:若上游发送事件速度超出下游处理能力,则把事件存储起来等待下游处理
> BackpressureStrategy.DROP:若上游发送事件速度超出下游处理能力,事件缓存池满了后将之后发送的事件丢弃
> BackpressureStrategy.LATEST:若上有发送时间速度超出下游处理能力,则只存储最新的128个事件