刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
在计算机中,响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。响应式编程是一种编程的思维模式,区别于声明式编程,响应式编程更注重数据流转,每一段程序都是围围绕着数据来设计的,原始数据,在哪,经过那些处理之后,最终变成什么样子。像这样围绕着数据流转的程序,我们可以简称为执行序列。
从设计的角度讲,响应式编程的数据返回值,实际上返回的是一个数据的发布者( Publisher),调用方相当于是数据的订阅者( Subscriber )(这里还存在冷热序列,和推拉模式的区别),只有当订阅者去订阅数据( Flux#subscribe() )的时候,发布者提供的数据以及相应的执行序列才会真正被执行,有另外一种叫法叫做 Lazy Compute ,延迟计算。
传统的编程方式,是顺序执行的,上一个任务没有完成的话需要等待直至完成之后才会执行下一个任务。无论是提升机器的性能还是代码的性能,本质上都需要依赖上一个任务的完成。如果需要响应迅速,就得把同步执行的方式换成异步,方法执行变成消息发送。这变成了异步编程的方式,它是响应式编程的重要特性之一。
响应式编程有以下几个特点:
随着硬件能力不断提升,单核CPU的计算能力几乎达到了极限,CPU进入了多核时代,程序员转而通过并发编程、分布式系统来应对越来越复杂的计算任务。
然而并发编程并不是银弹,做为一种基于共享内存的并发编程,多线程编程有常见的死锁、线程饥饿、race condition等问题,而且多线程的bug难以重现和定位。
于是,函数式编程开始兴起。在函数式编程中,由于数据全部都是不可变的,所以没有并发编程的问题,是线程安全的。它将计算机运算看做是数学中函数的计算,主要特点是将计算过程分解成多个可复用的函数,并且避免了状态以及变量的概念。函数式编程虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。
函数式编程的特点:
函数响应式结合了函数式和响应式的优点,把函数范式里的一套思路和响应式编程合起来就是函数响应式编程。
我们知道,传统的面向对象编程通过抽象出的对象关系来解决问题。函数式编程通过function的组合来解决问题,响应式编程通过函数式编程的方式来解决回调地狱的问题。
用传统的面向对象来处理异步事件不是很直观,处理并发也是件麻烦的事情,所以才产生了函数响应式编程。
函数式编程和响应式编程是两个不同的概念,刚接触RxJava那会我也经常搞混两者的概念。
两者的结合函数响应式编程确实是给开发带来了一种新的方式和思维上的突破。
本文链接:说说响应式和函数式
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!
