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的;
响应式编程--专注于短时间的数据流链条上的计算--因此倾向事件驱动;
响应式系统--关注于通过分布式的通信和协作所得到的弹性和韧性--则是消息驱动的.
Rx响应式编程的更多相关文章
- 响应式编程知多少 | Rx.NET 了解下
1. 引言 An API for asynchronous programming with observable streams. ReactiveX is a combination of the ...
- Rx.NET响应式编程
响应式编程 Rx.NET 了解下 1. 引言 An API for asynchronous programming with observable streams.ReactiveX is a co ...
- RxJava(一):响应式编程与Rx
一,响应式编程 响应式编程是一种关注于数据流(data streams)和变化传递(propagation of change)的异步编程方式. 1.1 异步编程 传统的编程方式是顺序执行的,必须在完 ...
- 响应式编程(Reactive Programming)(Rx)介绍
很明显你是有兴趣学习这种被称作响应式编程的新技术才来看这篇文章的. 学习响应式编程是很困难的一个过程,特别是在缺乏优秀资料的前提下.刚开始学习时,我试过去找一些教程,并找到了为数不多的实用教程,但是它 ...
- Rx系列---响应式编程
Rx是ReactiveX的简称,翻译过来就是响应式编程 首先要先理清这么一个问题:Rxjava和我们平时写的程序有什么不同.相信稍微对Rxjava有点认知的朋友都会深深感受到用这种方式写的程序和我们一 ...
- iOS开发--Swift RAC响应式编程初探
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
- Unity基于响应式编程(Reactive programming)入门
系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...
- iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好
转载: iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好 内容来自stack overflow的一个回答:ReactiveCocoa vs RxSwift – pros an ...
- iOS开发--Swift RAC响应式编程
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
随机推荐
- SpringBoot系列——利用系统环境变量与配置文件的分支选择实现“智能部署”
前言 通过之前的博客:SpringBoot系列——jar包与war包的部署,我们已经知道了如果实现项目的简单部署,但项目部署的时候最烦的是什么?修改成发布环境对应的配置!数据库连接地址.Eureka注 ...
- 如何通过get,set方法访问到父类的私有属性
刚学习继承的时候,总是会有这样的疑问. 子类继承父类时,会继承所有的非私有的属性和方法.那么在用set方法修改父类的私有属性时,怎么没有报空指针异常呢? 后来仔细想过这个问题,既然没有报空指针,那么在 ...
- AI,如何影响你在看的影视剧和综艺?
文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 转自 | 涵的硅谷成长笔记(公众号ID:HanGrowth) 作者 | Han涵 前段时间,作为奥斯 ...
- Android 启动优化
对与Android的项目来说,app的启动速度是非常重要的.因为用户打开你的app给别人的第一体验就是打开软件的速度.但是app的启动速度是比较难以缩短的,因为一般来说开发者在app的启动入口都会创建 ...
- PHP Socket编程(转)
[PHPsocket编程专题(理论篇)]初步理解TCP/IP.Http.Socket.md [PHPsocket编程专题(实战篇①)]php-socket通信演示 [PHPsocket编程专题(实战篇 ...
- Spring Aop源码分析
最近看了SpringAop的源码实现 大概记录一下aop的源码流程 创建一个最简单的一个测试类 package com.zcg.learn.Test; import org.aopalliance. ...
- xshell6 评估期已过 解决办法
xshell6 评估期已过,因为我下载的版本是evaluation版本,是有期限的.大家可以修改为Home and school use 的版本,这样就不会出现这个提示了.具体的操作步骤如下: 1.前 ...
- 简单读!zookeeper单机模式的启动逻辑
zk用处如此之多,以至于每个地方都要你理解zk原理! 请按如下操作姿势打开: 1. 打开zk的git仓库地址:https://github.com/apache/zookeeper , 确认过眼神,它 ...
- vue的基本指令
1.创建vue对象 <script src="vue.js"></script> var vm = new Vue({ el:"#ap ...
- Docker & ASP.NET Core (5):Docker Compose
第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 第四篇:容器间的连接 Docker Compose简介 Compose是一个用来定义和运行多容器Docker应用的工具.使用C ...