zoukankan      html  css  js  c++  java
  • Rx响应式编程

    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的;
    响应式编程--专注于短时间的数据流链条上的计算--因此倾向事件驱动;
    响应式系统--关注于通过分布式的通信和协作所得到的弹性和韧性--则是消息驱动的.

  • 相关阅读:
    删除ubuntu中多余的主题和背景文件
    android 开发之动画Activity
    android开发之自定义组件
    android 开发之Activity切换
    程序设计课件
    初识Proximal Policy Optimization (PPO)
    初识Auction Theory
    什么是Experience Replay和Seperate Target Networks
    初识ActorCritic
    初识Stackelberg Game
  • 原文地址:https://www.cnblogs.com/hexi707/p/8555810.html
Copyright © 2011-2022 走看看