RX响应式编程就是异步数据流编程:单击事件或事件总线;(观察者模式)

有一堆的函数能够创建流,也能将任何流-,也能将任何流进行组合和过滤.一个流能够作为另一个流的输入,能够将两个流合并,可以通过过滤流得到需要的事件
响应式编程是希望通过某种方式建立联系,而不是执行某种赋值操作(命令);
int a = 1;
int b = a+1;
messagebox.show(b);/b= 2;
a = 10
messagebox.show(b);//b=11
响应式:
int a = 1;
int b <= a+1; ///<=符号只是代表A和B之间的关系的操作符
messagebox.show(b);/b= 2;
a = 10
messagebox.show(b);//b=11
RX是响应式的扩展,即支持响应式编程的一种扩展,
异步和数据流都是为了正确的构建事物的关系而存在,异步是为了区分无关的事务,数据流是为了联系起有关的事物.

优势:
在业务层面实现代码逻辑分离,方便后期维护和拓展;
极大的提高程序的响应速度,充分发掘CPU的能力;
帮助开发者提高代码的抽象能力和充分理解业务逻辑;
Rx丰富的操作符会帮助我们极大地简化代码逻辑.

响应式编程的关键就是将异步可观查对象模块化. Rx有两种常见模式,一是观察者模式,其二是迭代模式

Responsive:可响应的,要求系统尽可能的在任何时候都能做到及时响应;
Resilient:可恢复的,要求系统即使出错了,也要保持可响应性;
Elastic:可伸缩的,要求系统在各种负载下都能保持可响应性;
Message Driven:消息驱动的.要求系统通过异步消息连接各个组件;

数据流(Data streams): 分为静态数据流(数组,文件)和动态数据流(事件流,日志流);
变化传播(The propagation change):简单的来说,就是以一个数据流作为输入,经过转变转化成另一个数据流,然后分发给订阅者的过程.

RP包含了三个特性:
描述而非执行:在执行subscribe()方法之前没有任何事情发生,好比无论多长的水管,只要水龙头不开,水管里的水就不会流动.
提高吞吐量,类似于HTTP/2中的连接复用,通过线程提高吞吐量;
背压支持:背压就是一种反馈机制,使用背压,订阅者只需要发起一次请求,就能连续不断的重复请求数据.
问题:
使用复用线程有助于提高吞吐量,但是一旦在某个回调函数中被卡住,,整个线程都会被阻塞,甚至程序被拖垮;
难以调试;
响应式编程是异步编程下的子集;也是一个范式;响应式编程一般是事件驱动event-driven相比之下,响应式系统是消息驱动Message-dirven的;
响应式编程--专注于短时间的数据流链条上的计算--因此倾向事件驱动;
响应式系统--关注于通过分布式的通信和协作所得到的弹性和韧性--则是消息驱动的.

Rx响应式编程的更多相关文章

  1. 响应式编程知多少 | Rx.NET 了解下

    1. 引言 An API for asynchronous programming with observable streams. ReactiveX is a combination of the ...

  2. Rx.NET响应式编程

    响应式编程 Rx.NET 了解下 1. 引言 An API for asynchronous programming with observable streams.ReactiveX is a co ...

  3. RxJava(一):响应式编程与Rx

    一,响应式编程 响应式编程是一种关注于数据流(data streams)和变化传递(propagation of change)的异步编程方式. 1.1 异步编程 传统的编程方式是顺序执行的,必须在完 ...

  4. 响应式编程(Reactive Programming)(Rx)介绍

    很明显你是有兴趣学习这种被称作响应式编程的新技术才来看这篇文章的. 学习响应式编程是很困难的一个过程,特别是在缺乏优秀资料的前提下.刚开始学习时,我试过去找一些教程,并找到了为数不多的实用教程,但是它 ...

  5. Rx系列---响应式编程

    Rx是ReactiveX的简称,翻译过来就是响应式编程 首先要先理清这么一个问题:Rxjava和我们平时写的程序有什么不同.相信稍微对Rxjava有点认知的朋友都会深深感受到用这种方式写的程序和我们一 ...

  6. iOS开发--Swift RAC响应式编程初探

    时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...

  7. Unity基于响应式编程(Reactive programming)入门

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  8. iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好

    转载: iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好 内容来自stack overflow的一个回答:ReactiveCocoa vs RxSwift – pros an ...

  9. iOS开发--Swift RAC响应式编程

    时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...

随机推荐

  1. 面向对象之三个基本特征(javaScript)

    1. 前言 2. 封装 3. 继承 4. 多态 5. 总结 1. 前言 了解过面向对象的同学应该都知道,面向对象三个基本特征是:封装.继承.多态,但是对于这三个词具体可能不太了解. 2. 封装 在说封 ...

  2. gulp+ThinkPHP配置

    gulp+ThinkPHP配置 gulp+ThinkPHP配置 目录结构: html |-src 开发目录 |-Home 静态页面 |-Public 静态资源目录 |-dist 生产目录 |-Home ...

  3. 【XSS】对抗蠕虫 —— 如何让按钮不被 JS 自动点击

    前言 XSS 自动点按钮有什么危害? 在社交网络里,很多操作都是通过点击按钮发起的,例如发表留言.假如留言系统有 XSS,用户中招后除了基本攻击外,还能进行传播 -- XSS 自动填入留言内容,并模拟 ...

  4. Netty、t-io、Voovan 框架比较

    以下是对三个框架在设计或者说是编码特点中选取的几个我比较关注的点的对比图: 首先我们对几个关键的概念进行一些解析,方便大家更好的理解上面表中的概念: NIO.AIO 的区别? 在这里我们来看一下两者最 ...

  5. Java Main参数解析(Args4j)

    最近实现一个工具,Main函数会有很多参数,而且参数类型不同,为了统一解析,网上找到三方工具类Args4j,轻松搞定. 代码实例如下: 定义解析类: import java.io.File impor ...

  6. 如何取消-"插入耳机自动显示提示框"

    首先我们打开控制面板->1,你可以直接搜索控制面板打开  2,你可以右击我的电脑->点击属性->左上角打开控制面板

  7. #Java学习之路——基础阶段二(第四篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  8. Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!

    Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...

  9. docker初体验,搭建自用的gitlab服务

    一.前言 git在如日中天的版本管理系统,现在如果不是工作在git版本管理系统下,几乎都不好意思给人打招呼.现在就有现成的互联网的git服务器提供给大家使用,例如号称程序的社交网络github. 正好 ...

  10. 强化学习(六)时序差分在线控制算法SARSA

    在强化学习(五)用时序差分法(TD)求解中,我们讨论了用时序差分来求解强化学习预测问题的方法,但是对控制算法的求解过程没有深入,本文我们就对时序差分的在线控制算法SARSA做详细的讨论. SARSA这 ...