RxJava背压问题
背(回)压问题什么是背压?背压可以拆开来理解“背”和“压”,比如我们在高峰期挤地铁,下地铁的时候,因为人太多,地铁卸载的速度太慢了,就会感觉有人在背后推着我们走,这就是背压backpress。
背压严格来说叫做回压,backpress指的是“回”,比如,小明在高峰期挤地铁,上地铁的人数远远高于下地铁,导致车厢满载,小明努力挤地铁,车厢的人也会 反“回”作用力给他。而他这时不得不选择其它办法,比如等下一班,坐公交。这种回作用力就是背压(回压),等下一班,坐公交就是背压的处理策略。
背压是指在异步场景中,被观察者发送事件速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略
简而言之,背压是流速控制的一种策略。
需要强调两点:
背压策略的一个前提是异步环境,也就是说,被观察者和观察者处在不同的线程环境中。
背压(Backpressure)并不是一个像flatMap一样可以在程序中直接使用的操作符,他只是一种控制事件流速的策略。
响应式拉取(reactive pull)首先我们回忆之前那篇《关于Rxjava最友好的文章》,里面其实提到,在RxJava的观察者模型中, ...
RxJava背压问题
背(回)压问题什么是背压?背压可以拆开来理解“背”和“压”,比如我们在高峰期挤地铁,下地铁的时候,因为人太多,地铁卸载的速度太慢了,就会感觉有人在背后推着我们走,这就是背压backpress。
背压严格来说叫做回压,backpress指的是“回”,比如,小明在高峰期挤地铁,上地铁的人数远远高于下地铁,导致车厢满载,小明努力挤地铁,车厢的人也会 反“回”作用力给他。而他这时不得不选择其它办法,比如等下一班,坐公交。这种回作用力就是背压(回压),等下一班,坐公交就是背压的处理策略。
背压是指在异步场景中,被观察者发送事件速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略
简而言之,背压是流速控制的一种策略。
需要强调两点:
背压策略的一个前提是异步环境,也就是说,被观察者和观察者处在不同的线程环境中。
背压(Backpressure)并不是一个像flatMap一样可以在程序中直接使用的操作符,他只是一种控制事件流速的策略。
响应式拉取(reactive pull)首先我们回忆之前那篇《关于Rxjava最友好的文章》,里面其实提到,在RxJava的观察者模型中, ...
Rx模式
Rx模式使用观察者模式
创建:Rx可以方便的创建事件流和数据流
组合:Rx使用查询式的操作符组合和变换数据流
监听:Rx可以订阅任何可观察的数据流并执行操作
简化代码
函数式风格:对可观察数据流使用无副作用的输入输出函数,避免了程序里错综复杂的状态
简化代码:Rx的操作符通通常可以将复杂的难题简化为很少的几行代码
异步错误处理:传统的try/catch没办法处理异步计算,Rx提供了合适的错误处理机制
轻松使用并发:Rx的Observables和Schedulers让开发者可以摆脱底层的线程同步和各种并发问题
使用Observable的优势Rx扩展了观察者模式用于支持数据和事件序列,添加了一些操作符,它让你可以声明式的组合这些序列,而无需关注底层的实现:如线程、同步、线程安全、并发数据结构和非阻塞IO。
Observable通过使用最佳的方式访问异步数据序列填补了这个间隙
单个数据
多个数据
同步
T getData()
Iterable<T> getData()
异步
Future<T> getData()
Observable& ...
Rx模式
Rx模式使用观察者模式
创建:Rx可以方便的创建事件流和数据流
组合:Rx使用查询式的操作符组合和变换数据流
监听:Rx可以订阅任何可观察的数据流并执行操作
简化代码
函数式风格:对可观察数据流使用无副作用的输入输出函数,避免了程序里错综复杂的状态
简化代码:Rx的操作符通通常可以将复杂的难题简化为很少的几行代码
异步错误处理:传统的try/catch没办法处理异步计算,Rx提供了合适的错误处理机制
轻松使用并发:Rx的Observables和Schedulers让开发者可以摆脱底层的线程同步和各种并发问题
使用Observable的优势Rx扩展了观察者模式用于支持数据和事件序列,添加了一些操作符,它让你可以声明式的组合这些序列,而无需关注底层的实现:如线程、同步、线程安全、并发数据结构和非阻塞IO。
Observable通过使用最佳的方式访问异步数据序列填补了这个间隙
单个数据
多个数据
同步
T getData()
Iterable<T> getData()
异步
Future<T> getData()
Observable& ...
RxJava概述
reactivex
ReactiveX与RxJava讲到RxJava之前我们首先要了解什么是ReactiveX,因为RxJava是ReactiveX的一种Java实现。ReactiveX是Reactive Extensions的缩写,一般简写为Rx。微软给的定义是,Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序。开发者可以用Observables表示异步数据流,用LINQ操作符查询异步数据流,用Schedulers参数化异步数据流的并发处理,Rx可以这样定义:Rx=Observables+LINQ+Schedulers。
什么是ReactiveX微软给的定义是,Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序,使用Rx,开发者可以用Observables表示异步数据流,用LINQ操作符查询异步数据流, 用Schedulers参数化异步数据流的并发处理,Rx可以这样定义:Rx = Observables + LINQ + Schedulers。ReactiveX.io给的定义是,Rx是一个使用可 ...
RxJava概述
reactivex
ReactiveX与RxJava讲到RxJava之前我们首先要了解什么是ReactiveX,因为RxJava是ReactiveX的一种Java实现。ReactiveX是Reactive Extensions的缩写,一般简写为Rx。微软给的定义是,Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序。开发者可以用Observables表示异步数据流,用LINQ操作符查询异步数据流,用Schedulers参数化异步数据流的并发处理,Rx可以这样定义:Rx=Observables+LINQ+Schedulers。
什么是ReactiveX微软给的定义是,Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序,使用Rx,开发者可以用Observables表示异步数据流,用LINQ操作符查询异步数据流, 用Schedulers参数化异步数据流的并发处理,Rx可以这样定义:Rx = Observables + LINQ + Schedulers。ReactiveX.io给的定义是,Rx是一个使用可 ...
线性代数
线性代数为什么叫线性代数?
向量是什么?
线性组合
张成的空间
基
线性相关 与 线性无关
矩阵与线性变换
AOP
面向切面编程:
横切关注点(cross-cutting consern):散布于应用中多处,影响应用多处的功能。
切面(aspect):横切关注点集中在被模块化为特殊类的切面中;使业务代码更简洁。
AOP相关术语
通知Advice a. 前置通知(Before) b. 后置通知(After) c. 返回通知(After-returning) d. 异常通知(After-throwing) e. 环绕通知(Around)
连接点(Join point)
切点(Pointcut)
切面(Aspect)
引入(Introduction)
织入(Weaving) a. 编译期 b. 类加载期 c. 运行期
GC机制
GC:找到垃圾,回收。 找到垃圾:
引用计数法 2. 可达性分析法 回收:
标记清除算法 2. 复制算法
标记整理算法 4. 分代算法