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

做外卖在哪个网站做好h5特效网站欣赏

做外卖在哪个网站做好,h5特效网站欣赏,微网站对比,久久建筑网20g三维图集下载一、什么是背压(Backpressure)? 背压是指:数据生产速度 > 数据消费速度,导致的数据堆积问题。 举个简单例子: 假设你在做一个网络数据流展示的功能: 数据源:每秒从服务器推送 10…

一、什么是背压(Backpressure)?

背压是指:数据生产速度 > 数据消费速度,导致的数据堆积问题。

举个简单例子:

假设你在做一个网络数据流展示的功能:

  • 数据源:每秒从服务器推送 1000 条日志。

  • 你的处理逻辑:只能每秒显示/处理 100 条。

这时,900 条数据每秒堆积下来。如果不处理,几秒后内存就爆炸了。


二、背压问题的根本来源

1. 不对称的速率

  • 生产者异步、高速、不断产出数据。

  • 消费者是有限资源(UI线程、IO线程、磁盘、数据库等)。

2. 异步流处理天然存在“流速失控”的可能

  • 你用的流式框架(RxJava、Flow)默认都很“热情”,默认生产者一口气发完。

  • 如果没有对消费者能力加限制,就出现“背压”问题。


三、背压未处理的后果

  • OOM(内存溢出):缓存数据太多。

  • ANR(卡死):主线程被大量任务挤压。

  • UI 卡顿/掉帧:不断处理 backlog。

  • 数据丢失:部分框架默认丢掉旧数据(比如 ConflatedChannel)。

  • 崩溃:RxJava 默认会抛出 MissingBackpressureException


四、背压处理的核心策略(框架无关)

策略含义举例
缓存(Buffer)用队列先缓存,慢慢消费Flow 的 buffer()
丢弃(Drop)不处理旧数据,保活系统Flow 的 conflate(),Rx 的 onBackpressureDrop()
保留最新(Latest)总是处理最新值Flow 的 collectLatest(),Rx 的 onBackpressureLatest()
限速(Throttle)控制发射频率Rx 的 throttleFirst(),Flow 的 debounce()
反压反馈(Request)消费者主动拉取Rx 的 Flowable.request()
挂起/阻塞不缓存,发射阻塞等待消费Flow 默认行为

五、完整示例对比:RxJava vs Kotlin Flow 背压处理


✅ Kotlin Flow 背压处理示例

kotlin

import kotlinx.coroutines.*

import kotlinx.coroutines.flow.*

fun main() = runBlocking {

                 println("Start")

                val flow = flow {

                        for (i in 1..1000) {

                                println("Emit: $i") emit(i)

                        }

                }

                .buffer(capacity = 50) // 缓冲最多50条

                //.conflate() // 或者只保留最新

                //.debounce(100) // 或控制速率

                flow.collect {

                        value -> delay(100) // 模拟处理耗时                         println("Collect: $value")

                 }

                  println("End")

}

👉 输出节选:

Emit: 1

Emit: 2 ...

Collect: 1

Collect: 2 ...

你可以通过 .buffer().conflate().collectLatest() 等方式切换不同策略。


✅ RxJava Flowable 背压处理示例

java

复制编辑

Flowable.interval(1, TimeUnit.MILLISECONDS) // 每毫秒发一次 .onBackpressureDrop() // 丢弃处理不了的

.observeOn(Schedulers.io()) // 切换线程处理

.subscribe(item -> {

        Thread.sleep(100); // 模拟慢处理

        System.out.println("Received: " + item);

}, Throwable::printStackTrace);

👉 输出节选:

Received: 5

Received: 102

Received: 201 ...

你会发现中间的很多值被“跳过”,因为你每100ms才能处理一个,而上游每1ms就发一个,系统只能保最新。


六、总结建议(Android 实战)

场景建议方案
UI 层收集数据(如 LiveData -> Compose)用 Flow,buffer() + collectLatest()
高频传感器或点击事件使用 debounce()throttleFirst()
网络请求分页/长轮询Flow + Retrofit + emitAll()
文件读写、数据库导入Flowable/Flow + onBackpressureBuffer()
多生产者合并数据使用 merge() + 合理背压策略

文章转载自:

http://kgKQ6zHQ.fksxs.cn
http://Iz4x2RlX.fksxs.cn
http://Z99RxsN8.fksxs.cn
http://EkWf6MkS.fksxs.cn
http://NgLrf7uZ.fksxs.cn
http://2r1bbE6N.fksxs.cn
http://fuRGm9bG.fksxs.cn
http://D5edUwLJ.fksxs.cn
http://IonJyno2.fksxs.cn
http://Sj7lXUIs.fksxs.cn
http://EJ1ZyN9Z.fksxs.cn
http://xVfBwQXx.fksxs.cn
http://PgZBDuJF.fksxs.cn
http://K10VHeTy.fksxs.cn
http://ajToR6kD.fksxs.cn
http://WrgQIzgu.fksxs.cn
http://PDUiQ3kO.fksxs.cn
http://X7h6wBIl.fksxs.cn
http://9K81RHpd.fksxs.cn
http://sGl4seeN.fksxs.cn
http://mOr3FB2Q.fksxs.cn
http://3T8j9RMe.fksxs.cn
http://uUsaHwCq.fksxs.cn
http://yRwI58qV.fksxs.cn
http://CmuqFfGG.fksxs.cn
http://iytVM2Sv.fksxs.cn
http://rVmDPfBS.fksxs.cn
http://YivQlTEJ.fksxs.cn
http://pb6S5vaD.fksxs.cn
http://p3gA5URY.fksxs.cn
http://www.dtcms.com/wzjs/776366.html

相关文章:

  • 网站运营模式长尾词seo排名优化
  • 住房和城乡建设部的网站做服装外单的网站
  • 网站空间在哪买好购物网站排名2015
  • 规划网站的总结吉林长春有做网站的吗
  • 网站推广的工具( )南通网站建设果尔
  • 设计网站做什么内容好广州抖音推广
  • 美的网站建设水平swot分析app的设计
  • 青岛哪家做网站的公司莱芜搬家公司电话
  • wordpress movies themes旺道seo软件
  • 微信平台与微网站开发h5免费制作平台火蚁邀请函怎么写
  • 网站设计报价怎么做网站主机查询
  • psd网站首页图片安徽元鼎建设工程 网站
  • 企业网站seo推广方案app下载平台服务
  • 男女做暧昧小视频网站自己做的网站外网访问
  • 网站建设培训学校广州如何优化网站提高排名
  • seo排名优化课程珠海网站建设优化
  • 政务网站建设相关文件用python 做网站
  • 网站添加 备案wordpress 云存储
  • 怎么做电商网站 用户画像上海缪斯设计公司官网
  • 网站备案查询站长工具seo搜索引擎优化价格
  • 佛山营销型网站设计宁波企业建站
  • 东莞中小型网站建设网址你懂我意思正能量2021
  • python网站开发网站建设 深度网
  • 易网官方网站中国互联网企业排名前十名
  • 网站推广策划公司做微商网站公司
  • 电子商务网站平台建设目标eclipse做企业网站
  • 汕尾东莞网站建设小程序商店怎么做
  • 免费网站建设招商施工企业营销人员培训
  • 南京网站建设润洽网站icp备案信息不能为空
  • 教学网站前台er图门户型网站特点