当前位置: 首页 > wzjs >正文

网站静态页面生成怎么做高端品牌网站设计

网站静态页面生成,怎么做高端品牌网站设计,网站开发要用多少钱,宽带动态ip如何做网站访问前言:Reactor 是一种事件驱动的高性能网络编程模型,主要用于处理高并发的网络 I/O 请求。其核心思想是通过一个或多个线程监听事件,并将事件分发给相应的处理程序,从而实现高效的并发处理。在响应式编程(如 Project Re…

前言:Reactor 是一种事件驱动的高性能网络编程模型,主要用于处理高并发的网络 I/O 请求。其核心思想是通过一个或多个线程监听事件,并将事件分发给相应的处理程序,从而实现高效的并发处理。在响应式编程(如 Project Reactor)中,理解 发布(Publish)与订阅(Subscribe)、生产者(Producer)与消费者(Consumer) 的概念非常重要。它们是构建异步、非阻塞数据流的基础模型。


一、Reactor基本概念

1. 发布者(Publisher)

  • 是数据的提供方。

  • 在 Project Reactor 中,Flux 和 Mono 都实现了 Publisher<T> 接口。

  • 它不主动发送数据,而是等待被订阅后才开始发射数据。

类比:就像一个电台频道,在没有人收听时它不会“广播”内容,只有当有人打开收音机(订阅),才会开始播放节目。

Flux<String> publisher = Flux.just("A", "B", "C"); // Publisher

2. 订阅者(Subscriber)

  • 是数据的接收方。

  • 实现 Subscriber<T> 接口,或者使用 .subscribe() 方法作为简化方式。

  • 订阅者会通过回调方法接收数据(onNext)、异常(onError)或完成信号(onComplete)。

publisher.subscribe(data -> System.out.println("Received: " + data), // onNexterr -> System.err.println("Error: " + err),      // onError() -> System.out.println("Done!")                // onComplete
);

3. 订阅(Subscription)

  • 是连接 Publisher 和 Subscriber 的桥梁。

  • 每次调用 .subscribe() 都会创建一个新的 Subscription

  • 支持背压(backpressure)控制:消费者可以告诉生产者“我一次只能处理 N 个元素”。

publisher.subscribe(new Subscriber<>() {private Subscription subscription;@Overridepublic void onSubscribe(Subscription s) {this.subscription = s;subscription.request(1); // 请求第一个数据}@Overridepublic void onNext(String t) {System.out.println("Got: " + t);subscription.request(1); // 继续请求下一个}@Overridepublic void onError(Throwable t) {t.printStackTrace();}@Overridepublic void onComplete() {System.out.println("Completed");}
});

二、生产者和消费者模型(Producer/Consumer)

角色描述
生产者(Producer)提供数据流的一方,即 Publisher(如 FluxMono
消费者(Consumer)接收并处理数据的一方,即 Subscriber
  • 数据从生产者流向消费者。

  • 这种模型支持异步非阻塞的数据传输。

  • 可以通过 背压机制 控制流量,避免消费者被过量数据淹没。


三、Reactor 中的发布与订阅流程

[Publisher] --> (onSubscribe) --> [Subscriber]↓(request)↓
[Publisher emits data via onNext]↓
[Subscriber receives data]↓
[Eventually onComplete or onError]

流程说明:

  1. 订阅建立

    • 调用 .subscribe() 后,Publisher 会调用 onSubscribe(Subscription)

  2. 请求数据

    • Subscriber 调用 subscription.request(n) 表示希望接收 n 个数据。

  3. 数据发射

    • Publisher 发射数据项,调用 onNext(T)

  4. 结束或错误

    • 成功结束:调用 onComplete()

    • 出错:调用 onError(Throwable)


 四、实际应用举例

示例:模拟生产者和消费者的协作(带背压)

Flux.range(1, 100).subscribe(new Subscriber<>() {private Subscription subscription;private int count = 0;@Overridepublic void onSubscribe(Subscription s) {this.subscription = s;subscription.request(5); // 初始请求5个数据}@Overridepublic void onNext(Integer integer) {System.out.println("Consuming: " + integer);count++;if (count % 5 == 0) {subscription.request(5); // 每消费5个再请求5个}}@Overridepublic void onError(Throwable throwable) {throwable.printStackTrace();}@Overridepublic void onComplete() {System.out.println("All items consumed!");}});

 五、常见误区

错误理解正确理解
Flux.just(...) 会立即发射数据不会,除非有订阅者才会发射
Flux 是热源(Hot)默认是冷源(Cold),每次订阅都会重新开始
subscribe() 返回值无关紧要可用于取消订阅(返回 Disposable
所有操作符都是同步的很多操作符是异步的,比如 flatMapdelayElements 等

六、总结

概念说明
Publisher数据源,如 Flux 或 Mono
Subscriber数据消费者,实现 onNextonErroronComplete
Subscription控制数据流动的接口,支持背压
生产者/消费者模型数据从生产者流向消费者,由订阅驱动
背压(Backpressure)消费者可以控制生产者的发射速率
冷流 vs 热流冷流每次订阅都从头开始;热流共享数据流(如 ConnectableFlux

如果你正在使用 Spring WebFluxRSocketKafka Streams 或其他响应式框架,理解这些核心概念将帮助你更好地设计和调试异步系统。


文章转载自:

http://zAAzgxQR.xwqxz.cn
http://xqsjgHwn.xwqxz.cn
http://LAEGZim4.xwqxz.cn
http://oRLVBREr.xwqxz.cn
http://pyMMR8D3.xwqxz.cn
http://Gc24artY.xwqxz.cn
http://5SWdbfJp.xwqxz.cn
http://2mOEMJbl.xwqxz.cn
http://FxCFwuQg.xwqxz.cn
http://ZBP4xiwI.xwqxz.cn
http://ODMiJ8RS.xwqxz.cn
http://d74wxD5b.xwqxz.cn
http://AbCcjc4K.xwqxz.cn
http://3yZEaxTA.xwqxz.cn
http://LXBrqcBF.xwqxz.cn
http://5hhGbql7.xwqxz.cn
http://NAX77Zbe.xwqxz.cn
http://IMgt0NgF.xwqxz.cn
http://t76gAG59.xwqxz.cn
http://y36mRIX4.xwqxz.cn
http://yCYEitmV.xwqxz.cn
http://hZCE5YrF.xwqxz.cn
http://6FZcqVVK.xwqxz.cn
http://oBYRnzHL.xwqxz.cn
http://mcD80SMR.xwqxz.cn
http://WP1c2r5I.xwqxz.cn
http://V2voTJG5.xwqxz.cn
http://IibFOWP3.xwqxz.cn
http://dLLW4118.xwqxz.cn
http://qNKUQ24l.xwqxz.cn
http://www.dtcms.com/wzjs/704282.html

相关文章:

  • php 企业网站系统下载网站建设合同应注意
  • 镇江智能网站建设哪家好中山网站建设找阿 n 2
  • 法语网站建站公司网页广告太多怎么办
  • 免费网站源码保险咨询免费
  • 广州网站建设公司万齐网络科技做业务在那几个网站上找客户端
  • 优秀手机网站案例企业网站的建设思维导图
  • 滁州建设网站深圳企业网站备案
  • 建设银行 产品管理中心网站google搜索引擎入口下载
  • 网线水晶头接法图解淄博seo网络推广
  • iis 网站绑定域名开发公司都有什么部门
  • 建网站手机怎么做wordpress手机投稿
  • 黄岛建网站成全视频在线观看高清版
  • 电商网站有哪些官网济南企业型网站
  • 西安市城乡建设管理局网站6企业网站建设方案撰写
  • 免费ps素材图片大全google seo
  • 合肥网站建设网页设计漳州本地新闻头条
  • 济南做网站互联网公司排名空调seo是什么意思
  • 门户网站建设的作用及意义网站更换ip地址
  • 厦门微网站建设公司哪家好网页设计网站开发
  • 佛山网站推广软件公司的英文网站
  • 装修网站怎么做的好建设电影网站视频
  • 自助建站自己要做网站的来看下网站开发建设公司电话
  • 深圳网站设计clhngrok 群晖wordpress
  • h5手机网站建设是什么意思专门做包包的网站
  • 万维网域名注册网站曲阜网站建设哪家便宜
  • 南山专业做网站公司怀集建设房管部门网站
  • asp.net网站开发典型模块与实例精讲源码社区
  • 做网站花了三万块源码下载工具
  • 网站后台做1个多少钱网站开发定制合同
  • 都匀市城乡建设局网站深圳出台多个利好政策