响应式编程要点 (Java)

整体学习概览 

  1. 前置知识函数式编程+Lambda表达式实践、Java8 Stream Api的使用
  2. 响应式编程的原理和思想
  3. Reactive Stream的思想和Api实践
  4. Reactor思想和Api实践
  5. WebFlux的使用
  6. SpringData R2DBC

前置知识:函数式编程

函数式编程要点-CSDN博客

响应式编程原理和思想

  1. 全链路无阻塞
  2. 负压模式
  3. 消息驱动
  4. 事件驱动
  5. 观察者模式
  6. 函数式+声明式编程+链式调用
  7. 可编排装配流水线

Reactive Stream的思想和Api实践

官网:https://www.reactive-streams.org/

GitHub:GitHub - reactive-streams/reactive-streams-jvm: Reactive Streams Specification for the JVM

Reactive Stream是指Java 9中引入的一组规范,它旨在促进异步数据流处理的标准化。这组规范为创建可互操作的异步库提供了基础,使得开发人员可以更轻松地编写符合标准的、可替换的异步数据流处理组件。许多第三方库(如RxJava、Project Reactor等)都采用了这些规范,并且Java标准库中的一些类也开始支持Reactive Stream。

 核心类

  1. Publisher(发布者)
  2. Subscriber(订阅者)
  3. Subscription(订阅)
  4. Processor(处理器)

Reactor思想和Api实践

官网:Project Reactor

官网核心Api文档:Reactor 3 Reference Guide

GitHub:GitHub - reactor/reactor: Reactor Bill Of Materials (tracking reactor-core, reactor-netty and more)

Reactor 的 API 主要包括以下几个核心部分:

  1. Flux 类:表示一个包含零个或多个元素的异步序列。Flux 提供了一系列操作符,可以用于对序列进行转换、过滤、组合等操作。常用的操作符包括 map、 filter、 flatMap、 zip 等。

  2. Mono 类:表示一个包含零个或一个元素的异步序列。Mono 也提供了类似于 Flux 的一系列操作符,用于处理单个元素的异步操作。

  3. Schedulers 接口:Reactor 提供了一些默认的调度器,如 immediate、single、 parallel 等,用于定义异步任务在何时、何地执行。开发者可以根据需求选择合适的调度器来实现异步任务的调度和执行。

  4. StepVerifier 类:用于测试 Reactor 流的工具类,可以验证流的行为是否符合预期,如期望的值、顺序等。

  5. Operators 操作符:Reactor 提供了丰富的操作符,用于处理数据流的转换、过滤、组合等。一些常用的操作符包括 flatMap、 mergeWith、 filter、 map 等。

  6. Context 类:用于在 Reactive 流之间传递共享的上下文信息,可以通过 Context 对象在流之间传递数据或状态。

  7. Hooks 钩子:Reactor 提供了一些钩子函数,如 onAssembly、 onOperator、 onLastOperator 等,可以用于在操作符执行前、后以及流处理完毕后执行一些额外的操作。

待续。。。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SwiftUI 更自然地向自定义视图传递参数的“另类”方式

概览 在 SwiftUI 中,正是自定义视图让我们的 App 变得与众不同!然而,除了传统的视图接口定义方式以外,我们其实还可以有更“银杏化”的选择。 如上图所示:对于 SubView 子视图所需的参数我们一开始并没有操之过急&…

[office] excel成绩表格数据排名次的教程 #职场发展#知识分享#媒体

excel成绩表格数据排名次的教程 Excel中经常需要使用到排名次的技巧,成绩表格数据具体该如何排名呢?接下来是小编为大家带来的excel成绩表格数据排名次的教程,供大家参考。 excel成绩表格数据排名次教程(一) 步骤1:不管在学校还是各个统计领…

MySQL8的ONLY_FULL_GROUP_BY SQL模式兼容问题

文章目录 1. 问题描述2. 解决方法1. 修改查询2. 修改SQL模式3. 使用ANY_VALUE()函数 1. 问题描述 Cause: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column btc-cloud.t1.id which is not funct…

网络入山太困难?看格行随身WiFi如何助力大山教育!

近日,一则关于偏远大山的上网问题冲上了热搜,引发了社会关注。虽然很多山区都已经通了电、通了网,但是在一些贫困的地区,网络基础设施依旧薄弱,村民想要使用固定宽带,仍然十分困难。 而在山区的学生们&…

【漏洞复现】H3C Web网管登录任意文件读取漏洞

Nx01 产品简介 H3C设备的Web网管是指H3C公司生产的网络设备的网络管理界面。它可以通过Web浏览器进行访问和操作,以实现对网络设备的配置、管理和监控。 Nx02 漏洞描述 jquery旧版本存在任意文件读取漏洞,允许攻击者在受害者的服务器上读取任意文件。H3…

SQL数据库基础语法-查询语句

SQL数据库基础语法-查询语句 Group By #对数据进行分组 >select name,count(id) from student group by name; #查询name字段人数,cont函数进行计数 >select * from users group by users; >select * from users where id1 group by 2; >select * from …

Excel练习:双层图表

Excel练习:双层图表 学习视频Excel制作双层图表,很多人都不会,其实只需1步操作就够了!_哔哩哔哩_bilibili ​​ 通过调整两个图形的显示范围实现 增加折现图的负数显示范围,使折现图仅出现在整体图形的上方增加柱形…

MQ最终一致性理论与实践

MQ最终一致性理论与实践 原理 分布式事务无论是2PC&3PC还是TCC,基本都遵守XA协议的思想,但全局事务方案并发性较差; 最终一致性方案指的是将最有可能出错的业务以本地事务的方式完成后,采用不断重试的方式(不限…

代码随想录算法训练营(贪心6)| 738.单调递增的数字 968.监控二叉树

738.单调递增的数字 题目链接/文章讲解 968.监控二叉树 (可以跳过) leetcode题目链接 本题是贪心和二叉树的一个结合,比较难,一刷大家就跳过吧。 题目链接/文章讲解 class Solution { private:int result;int traversal(TreeN…

视频接入协议之MIPI

MIPI(Mobile Industry Processor Interface)是一种用于移动设备的串行接口标准,旨在提供高速、低功耗、低成本的接口解决方案。MIPI联盟是一个全球性的组织,致力于开发、推广和管理MIPI标准。 MIPI接口包括了多种协议和规范&…

人工智能之数学基础【梯度下降法】

梯度下降法是求解无约束优化问题的一种简单而有效的优化方法,是一种利用目标函数的Taylor展开构造搜索方向的方法。 思想 梯度下降法三要素:出发点、下降方向、下降步长。用梯度下降法求解优化问题的基本思想可以类比为一个下山的过程,可微分的函数代表一座山,目标就是找…

K8S临时小结

k8s是什么?能解决什么问题? k8s是容器管理平台,一套复杂的开源系统 如何更好的维护pod,k8s第二大要素(pod控制器) k8s的很多对容器(pod)管理的高级特性,都是基于控制器…

4.【架构师成长之路】职场新人:如何快速变得专业(上)

文章目录 导言一、快速变得熟练1、研发类工具2、运维类工具3、泛文档类工具 二、能够系统化思考1、提升思考全面性2、提升内容逻辑性 三、最佳实践本文总结说明 导言 前三篇文章我们讲了在校期间及临近毕业时,你需要做一些怎样的准备。而这些准备本身不仅仅是为了毕…

【算法】树状数组

文章目录 一、基本概念二、核心操作三、常见应用 一、基本概念 树状数组用于动态维护一段区间,操作的时间复杂度为 O ( l o g n ) O(logn) O(logn) 定义: t [ i ] [ i − l o w b i t ( i ) 1 , i ] t[i] [i - lowbit(i) 1, i] t[i][i−lowbit(i)…

harmony 鸿蒙系统学习 安装ohpm报错 ohpm install failed

一. 安装配置 DevEco Studio 安装包时报错 execute ohpm install failed. Install task failed: ArkTS 3.2.12.5. Install ArkTS dependencies failed. 解决办法 找原因,首先,我的电脑中之前安装过node,也许是因为这个。(其实…

Git 使用教程

一、Git的认识 1.1版本控制 什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 a) 还原:如果你是程序开发者,在新写一个促销活动的java文…

Linux常见基本指令

本文将详细的介绍Linux中各常见指令的用法,并且在每个指令都有使用样例。一共有以下指令: 1. man指令 2.目录基础指令:2.1 pwd指令、2.2 ls指令、2.3 cd指令 3.文件创建与删除:3.1 touch指令、3.2 mkdir指令、3.3 rmdir 指令 &…

Rabbitmq入门与应用(二)-RabbitMQ工作模型

RabbitMQ工作模型 RabbitMQ Tutorials — RabbitMQ Broker RabbitMQ服务。 Connection 生产者或是服务者都需要与Broker建立的TCP连接。 Channel 保持的TCP长连接里面去创建和释放Channel,从而减少资源的消耗。其中Channel是相互隔离的,不能共享。 Queu…

PHP如何利用post与get方式传值接收数据

目录 一、POST传值1. 使用curl库发送 POST 请求:2. 使用file_get_contents()函数发送 POST 请求:3. 使用stream_socket_client()函数发送 POST 请求:4. 利用from表单提交数据: 二、GET传值1. 使用http_build_query()函数构建 URL …

Java IO:同步阻塞和装饰器模式详解

前言 大家好,我是chowley,今天来介绍一下Java IO中的两个重要概念——同步阻塞和装饰器模式。 同步阻塞 在计算机编程中,同步阻塞(Synchronous Blocking)指的是在进行某个操作时,当前线程会被阻塞&#…