如何做全网影视网站手套外包加工网

news/2025/9/24 20:35:05/文章来源:
如何做全网影视网站,手套外包加工网,泊头市建设局官方网站,wordpress无法添加媒体Reactor 是一个基于响应式编程的库#xff0c;主要用于构建异步和事件驱动的应用程序。Reactor 提供了丰富的 API#xff0c;包括创建、转换、过滤、组合等操作符#xff0c;用于处理异步数据流。以下是一些 Reactor 的主要 API 示例#xff1a; pom依赖 dependencyMan… Reactor 是一个基于响应式编程的库主要用于构建异步和事件驱动的应用程序。Reactor 提供了丰富的 API包括创建、转换、过滤、组合等操作符用于处理异步数据流。以下是一些 Reactor 的主要 API 示例 pom依赖 dependencyManagementdependenciesdependencygroupIdio.projectreactor/groupIdartifactIdreactor-bom/artifactIdversion2023.0.0/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdio.projectreactor/groupIdartifactIdreactor-core/artifactId/dependencydependencygroupIdio.projectreactor/groupIdartifactIdreactor-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.7.2/versionscopetest/scope/dependency/dependencies1. 创建 Mono 和 Flux Mono: 用于表示包含零个或一个元素的异步序列。Flux: 用于表示包含零个或多个元素的异步序列。 import reactor.core.publisher.Mono; import reactor.core.publisher.Flux;public class ReactorCreateExample {public static void main(String[] args) {// 创建包含单个元素的 MonoMonoString mono Mono.just(Hello, Reactor!);// 创建包含多个元素的 FluxFluxInteger flux Flux.fromArray(new Integer[]{1, 2, 3, 4, 5});mono.subscribe(System.out::println); // 输出: Hello, Reactor!flux.subscribe(System.out::println); // 输出: 1, 2, 3, 4, 5} }2. 转换操作符 使用转换操作符对数据流进行转换或处理。 import reactor.core.publisher.Flux;public class ReactorTransformExample {public static void main(String[] args) {FluxInteger source Flux.range(1, 5);// 对每个元素进行平方操作FluxInteger squared source.map(x - x * x);squared.subscribe(System.out::println); // 输出: 1, 4, 9, 16, 25} }3. 过滤操作符 使用过滤操作符筛选数据流中的元素。 import reactor.core.publisher.Flux;public class ReactorFilterExample {public static void main(String[] args) {FluxInteger source Flux.range(1, 5);// 筛选偶数FluxInteger evenNumbers source.filter(x - x % 2 0);evenNumbers.subscribe(System.out::println); // 输出: 2, 4} }4. 组合操作符 使用组合操作符组合多个数据流。 import reactor.core.publisher.Flux;public class ReactorCombineExample {public static void main(String[] args) {FluxInteger source1 Flux.range(1, 3);FluxInteger source2 Flux.range(4, 3);// 合并两个数据流FluxInteger merged Flux.concat(source1, source2);merged.subscribe(System.out::println); // 输出: 1, 2, 3, 4, 5, 6} }这些只是 Reactor API 的一小部分示例。Reactor 提供了丰富的操作符和方法用于处理复杂的异步数据流。开发人员可以根据具体需求选择适当的操作符进行组合以构建出符合业务逻辑的异步处理链。 5. 错误处理 Reactor 提供了多种处理错误的方式例如使用 onErrorResume, onErrorReturn, doOnError 等方法。 import reactor.core.publisher.Flux;public class ReactorErrorHandlingExample {public static void main(String[] args) {FluxInteger source Flux.just(1, 2, 0, 4, 5);// 处理除零异常并提供默认值FluxInteger result source.map(x - 10 / x).onErrorResume(ex - Flux.just(-1));result.subscribe(System.out::println); // 输出: 10, 5, -1} }6. 背压处理 Reactor 提供了背压处理的支持允许生产者和消费者之间实现合理的数据流控制。使用 onBackpressureBuffer 或者其他背压操作符可以处理高速生产者和慢速消费者之间的数据流。 import reactor.core.publisher.Flux;public class ReactorBackpressureExample {public static void main(String[] args) {FluxInteger source Flux.range(1, 1000);// 设置缓冲区大小FluxInteger buffered source.onBackpressureBuffer(10);buffered.subscribe(data - {// 模拟慢速消费者try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(data);},error - System.err.println(Error: error),() - System.out.println(Done));} }TODO未能实现没有背压和有背压的对比 7. 使用 Reactor WebFlux 处理 Web 请求 Reactor 还提供了 WebFlux 模块用于处理响应式的 Web 请求。以下是一个简单的示例 import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono;RestController public class WebFluxController {GetMapping(/hello)public MonoResponseEntityString hello() {return Mono.just(ResponseEntity.ok(Hello, Reactor WebFlux!));} }8. Reactor 核心概念 Reactor 中有一些核心概念了解这些概念有助于更好地使用 Reactor API。 Publisher发布者: 代表一个生产数据的源头通常是 Mono 或 Flux。 Subscriber订阅者: 用于消费数据流的组件。通过 subscribe 方法订阅 Publisher。 Subscription订阅: 代表 Subscriber 和 Publisher 之间的连接。Subscriber 可以使用 Subscription 来请求数据取消订阅等。 Processor处理器: 既是 Publisher 又是 Subscriber用于在两者之间进行转换和处理。 public class ReactorCoreConceptsExample {public static void main(String[] args) {// 创建发布者FluxInteger source Flux.range(1, 5);// 创建处理器并进行数据处理UnicastProcessorInteger processor UnicastProcessor.create();source.map(value - value * 2) // Example: doubling the values.subscribe(processor);// 创建订阅者CustomSubscriberInteger subscriber new CustomSubscriber();// 订阅并处理数据processor.subscribe(subscriber);}// 自定义订阅者static class CustomSubscriberT extends BaseSubscriberT {Overrideprotected void hookOnNext(T value) {System.out.println(Processed Value: value);}Overrideprotected void hookOnError(Throwable throwable) {System.err.println(Error: throwable);}Overrideprotected void hookOnComplete() {System.out.println(Done);}} }UnicastProcessor.create()已弃用可以使用Sinks.many().unicast().onBackpressureBuffer() 9. Reactor 调度器 Reactor 提供了多种调度器用于控制异步操作的执行线程。例如Schedulers.boundedElastic() 创建了一个弹性线程池可以根据需要动态调整线程数。 public class ReactorSchedulersExample {public static void main(String[] args) {Flux.range(1, 5).publishOn(Schedulers.boundedElastic()) // 在弹性线程池上发布.map(x - x * x).subscribeOn(Schedulers.parallel()) // 在并行线程池上订阅.subscribe(System.out::println);} }经测试大概率只使用了一个线程 11. 组合多个 Mono 或 Flux 使用 zip 操作符可以组合多个 Mono 或 Flux将它们的元素进行组合。 import reactor.core.publisher.Flux; import reactor.core.publisher.Mono;public class ReactorZipExample {public static void main(String[] args) {MonoString mono1 Mono.just(Hello);MonoString mono2 Mono.just(Reactor);// 将两个 Mono 合并为一个 FluxFluxString result Flux.zip(mono1, mono2).map(tuple - tuple.getT1() tuple.getT2());result.subscribe(System.out::println); // 输出: Hello Reactor} }12. 超时操作 使用 timeout 操作符可以在指定的时间内等待数据流产生结果如果超时则触发错误。 public class ReactorTimeoutExample {public static void main(String[] args) throws InterruptedException {FluxInteger source Flux.just(1, 2, 3).delayElements(Duration.ofSeconds(2)); // 模拟延迟// 在指定时间内等待数据流产生结果否则触发超时source.timeout(Duration.ofSeconds(1)).subscribe(data - System.out.println(Received: data),error - System.err.println(Error: error),() - System.out.println(Done));//睡一会等待任务执行完成Thread.sleep(3333);} } 13. 并行操作 使用 parallel 操作符可以将一个数据流并行处理提高处理速度。 public class ReactorParallelExample {public static void main(String[] args) throws InterruptedException {Flux.range(1, 10).parallel().runOn(Schedulers.parallel()).map(x - x * x).sequential().subscribe(System.out::println);//睡一会等待任务执行完成Thread.sleep(1111);} } 14. 与 Java Stream 集成 Reactor 与 Java Stream 可以方便地进行集成。 import reactor.core.publisher.Flux; import java.util.stream.Stream;public class ReactorJavaStreamIntegrationExample {public static void main(String[] args) {FluxInteger flux Flux.fromStream(Stream.of(1, 2, 3, 4, 5));flux.subscribe(System.out::println); // 输出: 1, 2, 3, 4, 5} }15. 使用 Mono 和 Flux 进行条件操作 Reactor 提供了条件操作符例如 switchIfEmpty 和 filter用于根据条件处理数据流。 public class ReactorConditionalOperatorsExample {public static void main(String[] args) {FluxInteger empty Flux.range(1, 0);FluxInteger source Flux.range(1, 5);// 如果数据流为空则切换到另一个数据流empty.switchIfEmpty(Flux.range(6, 3)).subscribe(System.out::println); // 输出: 6,7,8// 使用 filter 过滤元素source.filter(x - x % 2 0).subscribe(System.out::println); // 输出: 2, 4} }16. 使用 Reactor StepVerifier 进行测试 代码需要写在test测试目录下 Reactor 提供了 StepVerifier 类用于测试异步操作的行为。 public class ReactorTestingExample {public static void main(String[] args) {FluxInteger flux Flux.range(1, 5);// 使用 StepVerifier 验证数据流的行为StepVerifier.create(flux).expectNext(1, 1, 3, 4, 5)//正确顺序应该是12345.expectComplete().verify();} }17. 使用 Mono 和 Flux 进行重试 Reactor 提供了 retryWhen 方法结合 Backoff 操作符用于在发生错误时进行重试。 public class ReactorRetryExample {public static void main(String[] args) throws InterruptedException {MonoObject source Mono.fromCallable(() - {throw new RuntimeException(Simulated error);})//最大重试次数为3次初始重试间隔为1秒并且采用指数回退策略直到达到最大的回退时间这里是5秒。.retryWhen(Retry.backoff(3, Duration.ofSeconds(1)).maxBackoff(Duration.ofSeconds(5)));source.subscribe(data - System.out.println(Received: data),error - System.err.println(Error: error.getMessage()));//得多睡会儿让它跑完最大重试时间Thread.sleep(999999);} }19. 使用 Reactor Context 进行上下文传递 Reactor 提供了 Context 类用于在操作链中传递上下文信息。这对于在异步操作中共享信息非常有用。 import reactor.core.publisher.Mono; import reactor.util.context.Context;public class ReactorContextExample {public static void main(String[] args) {MonoString mono Mono.deferContextual(contextView -Mono.just(Hello, contextView.get(user)));String result mono.contextWrite(Context.of(user, John)).block();System.out.println(result); // 输出: Hello, John} }20. 使用 Reactor 的 doOn 方法进行副作用处理 doOn 系列方法允许在数据流的不同生命周期阶段执行副作用操作如日志记录、统计等。 import reactor.core.publisher.Flux;public class ReactorDoOnExample {public static void main(String[] args) {FluxInteger source Flux.range(1, 5);source.doOnNext(value - System.out.println(Processing element: value)).doOnComplete(() - System.out.println(Processing complete)).subscribe(System.out::println);} }21. 使用 Reactor 的 transform 方法进行操作链重用 transform 方法允许对操作链进行重用将一系列操作组合为一个新的 Function。 import reactor.core.publisher.Flux;import java.util.function.Function;public class ReactorTransformExample {public static void main(String[] args) {FluxInteger source Flux.range(1, 5);// 定义一个操作链FunctionFluxInteger, FluxInteger customTransform flux -flux.filter(x - x % 2 0).map(x - x * 2);// 使用 transform 应用自定义操作链source.transform(customTransform).subscribe(System.out::println); // 输出: 4, 8} }

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

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

相关文章

随便写的

redis高可用性 一台redis服务器:内存16g,一个进程挂了--------->redis服务挂-------------------->系统不可用 那么就会导致项目不可用 ![shuaikun](C:\Users\86135\Pictures\Camera Roll\蝴蝶刃2.jpg) 避免r…

Bcliux-docker-nacos2.2.0升级至2.2.3版本

Linux 系统版本:Redhat7.9IP:192.158.0.3第一步:备份nacos已有第二步:关停已有nacos[test@01 ~/nacos]$ sudo docker stop 0667969d2570第三步:修改镜像信息sudo docker tag f151dab7a111 nacos_x:2.2.3第四部:复…

免费网站制作视频教程成立公司股权怎么分配

详见:张鑫旭 CSS3 pointer-events:none应用举例及扩展 pointer-events:none ,可以使事件穿透, 如: 2 覆盖在 1 上面。 给 2 设置 pointer-events:none;那么点击在 2 上将无效, 可以直接触发 1 上的事件 转载…

社交网络架构。京东场景题:亿级用户100Wqps 社交关系如何设计?如何查看我的关注,关注我的?

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 最近大厂机会多了, 在45岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极…

go 面试题

go中发生panic的场景:数组/切片越界 空指针调用。比如访问一个 nil 结构体指针的成员 过早关闭 HTTP 响应体 除以 0 向已经关闭的 channel 发送消息 重复关闭 channel 关闭未初始化的 channel 未初始化 map。注意访问…

事件和图形界面(暂未完成)

事件: 注:动作监听鼠标时只能监听单击 键盘只能监听空格键

公司做网站需要注意些什么重庆沛宣网站建设

1.下载nginx压缩包 //进入/usr/local目录创建一个文件夹 cd /usr/local mkdir nginx cd nginx //下载tar包 wget http://nginx.org/download/nginx-1.20.1.tar.gz 2.配置nginx安装所需的环境 1. 安装gcc 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gc…

什么是sql 慢日志。哈罗面试:没开sql慢日志,怎么发现慢 sql?

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音…

Spring连环炮。哈罗面试:Spring Bean生命周期,Spring怎么创建Bean的,BFPP和BPP的x别

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 最近大厂机会多了, 在45岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极…

redis 大 key 优化。哈罗面试:redis 有个大 key需要在线优化, 不能影响现有业务,请求不能大量到库,怎么优化?

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音…

ACL高可用架构。希音面试:第三方挂了,我们总在背锅。来一 靠谱的 高可用方案,让 外部依赖 稳如泰山

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 最近大厂机会多了, 在45岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极…

软工9.24

今天学习了枚举类型,enum这个是类似于class的关键字,用枚举定义一个类型,在内部写的东西都是类似于一种对象的,可以用枚举类型做一些特殊的作用。

做网站怎么做连接点下一个页面青岛今天发生的重大新闻

mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令。但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的自身缺陷(不能用作启动分区、使用CPU实现,降低CPU利用率),因此在生产…

网站分站是怎么做的乐清发布网

QT画图功能 每个QWidget都自带的功能,继承了QPainteDevice都可以使用QPainter来进行绘图。 画图需要调用paintEvent绘制事件,paintEvent事件时QWidget类自带的事件。 重写paintEvent事件。(重写事件:如果父类有某个方法&#xff…

无法安装 WebView2! 没有它,此应用就无法运行(解决方式附安装包)

无法安装 WebView2! 没有它,此应用就无法运行(解决方式附安装包)​ 1. 先确认系统与软件环境 ​​系统版本​​:确保你的 Windows 系统是较新的版本(一般 Win10 1809 及以上、Win11 都支持 WebView2;如果是比较旧…

2025CSP-S模拟赛51

2025CSP-S模拟赛51T1 T2 T3 T430 TLE 18 WA 54 TLE -总分:102;排名:19/24。 打得很唐氏。T1 挂了 70 分,T2 本可以做出来的,没调出来。 T1 算术 考虑对原式进行变形(省略过程): \[\left\{\begin{align*} &…

2025年9月24日 - 20243867孙堃2405

今天上午的两门课一是离散数学,讲的有关集合论的知识,主要是序偶和笛卡尔积,马原让我更加了解了社会主义的历史

【星海随笔】RabbitMQ开发篇 - 教程

【星海随笔】RabbitMQ开发篇 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

手机网站建设要注意哪些问题搜索关键词

在Ionic框架中,头部(Header)和底部(Footer)是重要的UI组件,它们分别固定在屏幕的顶部和底部。 头部(Header) 头部组件通常用于显示应用程序的标题、副标题和导航按钮。它是应用程序…