首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

协程 Flow 最佳实践 | 基于 Android 开发者峰会应用

本文介绍了我们在开发 2019 Android 开发者峰会 (ADS) 应用时总结整理的 Flow 最佳实践 (应用源码已开源),我们将和大家共同探讨应用中的每个层级将如何处理数据流。...这个扩展函数非常便于使用,因为它共享了 Flow 的底层订阅,同时根据观察者的生命周期管理订阅。此外,LiveData 可以为后续添加的观察者提供最新的数据,其订阅在配置发生变更的时候依旧能够生效。...冷流" 是一种数据源,该类数据源的生产者会在每个监听者开始消费事件的时候执行,从而在每个订阅上创建新的数据流。一旦消费者停止监听或者生产者的阻塞结束,数据流将会被自动关闭。...请注意,这里提到的取消是有条件的,一个永不挂起的 Flow 是永不会被取消的: 在我们的例子中,由于 delay 是一个挂起函数,用于检查取消状态,当订阅者停止监听时,Flow 将会停止并清理资源。...BroadcastChannel 无法感知到当前是否还存在监听者,除非关闭或取消 BroadcastChannel,否则将会一直持有资源。

3.5K11

骑上我心爱的小摩托,再挂上AI摄像头,去认识一下全城的垃圾!

大数据文摘出品 来源:medium 编译:曹培信 垃圾管理是现代城市一个非常有挑战性的任务,每个地区都有其独特的垃圾产生模式,但无论产生垃圾的种类和数量如何变化,优化垃圾的收集方式是降低成本、保持城市清洁的重要手段...我们选择Ionic+Angular进行前端开发和谷歌的Firestore坐标实时数据库。...Firebase客户端SDK包括一个通用的API,可用于订阅客户端应用程序,以添加/更新/删除 Firestore数据库上运行在VespAI上的应用程序产生的活动。...热度图可以快速查看区域中的垃圾分布情况,而标记点可以检查单个垃圾检测点的详细信息。 ?...当我们累积越来越多的垃圾图像时,我们将用这些图像用于进一步训练,以逐步获得更精确的检测。 后端改进。

10.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    泄露2.2亿条数据,谷歌Firebase平台数据库被100%读取

    包含已曝光用户记录样本的数据库 来源:xyzeva 所有详细信息都整理在一个私人数据库中,该数据库提供了公司因安全设置不当而暴露的用户敏感信息的数量概览: 姓名:84221169 条(约 8400 万条...曝光记录总数达 2.23 亿条 扫描互联网、解析原始数据和整理工作耗时约一个月,整个过程从开始到结束并不顺利。...起初,他们使用 MrBruh 制作的 Python 脚本进行扫描,以检查网站或其 JavaScript 捆绑程序中的 Firebase 配置变量。...为了自动检查 Firebase 中的读取权限,研究小组使用了 Eva 的另一个脚本,该脚本会抓取网站或其 JavaScript,以便访问 Firebase 集合(Cloud Firestore NoSQL...一切是如何开始的 在互联网上扫描配置错误的 Firebase 实例所暴露的 PII 是研究人员两个月前开展的另一个项目的后续行动,当时由于配置错误问题,他们获得了人工智能招聘软件解决方案 Chattr

    22110

    Flutter 2.8正式版发布了,还不来看看

    我们在拥有一百万行以上的代码量的 GPay 应用上进行了测试,以确保改动在实际生产的应用上有效。...webview_flutter: ^3.0.0 webview_flutter_web: ^0.1.0 # 显式依赖未经认可的插件 如果你对 webview_flutter v3.0 有任何反馈,无论是否是关于...90292 移除已废弃的 autovalidate 90293 移除已废弃的 FloatingHeaderSnapConfiguration.vsync 90294 移除已废弃的 AndroidViewController.id...90295 移除已废弃的 BottomNavigationBarItem.title 90296 移除已废弃的文本输入格式化类 如果你仍在使用这些 API 并想了解如何迁移代码,你可以阅读 Flutter...总结 在我们结束 2021 年并展望 2022 年之际,Flutter 团队要对整个 Flutter 社区的工作和支持表示感谢。

    22.4K30

    我们弃用 Firebase 了

    Firestore 的文档 / 集合架构:它迫使人们仔细考虑数据建模。它还反映了一个直观的导航方案。 Firestore 中的关系数据也是如此。...fbKeysObject" | jq '.messagingSenderId' | xargs -I {} echo "REACT_APP_FB_MESSAGE_SENDER_ID=""{}" >> .env 附注结束...在最近的 Firebase 项目中,我在想我们是否应该推出自定义的服务。我相信,谷歌不会介意开发人员放弃 Firebase 而单纯使用 GCP。...在 CI 代码中,过滤掉未更改的文件,并部署与已更改的文件相对应的函数。不用说,这两种变通方法都有很多需要改进的地方。...无论如何,Google Cloud Console 是添加此权限的唯一方法。 尽管 Firebase 开发有所下降,但我最近还是经常在这个权限仪表板上看到自己。

    32.7K30

    【干货】手把手教你用苹果Core ML和Swift开发人脸目标识别APP

    根据Dat的建议,我写了一个脚本来调整图像分辨率,以确保没有任何图像宽于600像素。...您可以通过云端控制台来浏览机器学习引擎的“作业”部分,这一部分可以验证您的作业是否运行正确,并且可以检查作业的日志。 ?...检查点文件的第一行将告诉我最新的检查点路径,我将从该检查点本地下载3个文件。每个检查点应该有一个.index,.meta和.data文件。...然后通过将模型指向刚刚上传到云存储的已保存模型ProtoBuf来创建模型的第一个版本: ? 一旦模型部署完成,就可以使用机器学习引擎的在线预测API来预测新图像。...在我的函数中,我向Firestore写预测元数据。

    14.9K60

    Hadoop Raid-实战经验总结

    如何在不降低数据可靠性的基础上,进一步降低存储空间成本,成为腾讯大数据迫切需要解决的问题。...而采用RS编码,如按条带(Stripe length)和校验块(Parity block)个数比例为10,4计算,则只需要1.4倍的存储开销,就可以容忍同一条带内任意4个block丢失,即存储量可以节省...block数据是否丢失,如有丢失,则重新计算以恢复丢失的block l Raid File System:提供访问DRFS的HDFS客户端,其在HDFS Client接口上进行封装,当读取已丢失或损坏的...其二,RaidNode周期性的访问NameNode,查询哪些文件需要做raid、是否存在废弃的parity file(源文件被删除,则对应的parity file已经无效了,需要清理掉)、是否存在Missing...而SYNC标识占用20个字节,且只在job执行结束SequenceFile就会清理掉,存储代价微乎其微。

    2.3K100

    如何用TensorFlow和Swift写个App识别霉霉?

    所谓检查点就是一个二进制文件,包含了训练过程中在具体点时TensorFlow模型的状态。下载和解压检查点后,你会看到它包含3个文件: ?...在训练时,我同时也启动了验证模型的工作,也就是用模型未见过的数据验证它的准确率: 通过导航至 Cloud 终端的 ML Engine 的 Jobs 部分,就可以查看模型的验证是否正在正确进行,并检查具体工作的日志...在我的 train/bucket 中,我可以看到从训练过程的几个点中保存出了检查点文件: ? 检查点文件的第一行会告诉我们最新的检查点路径——我会从本地在检查点中下载这3个文件。...用户选择照片后,会触发程序将照片上传至 Cloud Storage: let firestore = Firestore.firestore()func imagePickerController(_...dismiss(animated: true, completion: nil)} 接着我写了在上传至 Cloud Storage bucket 中用于本项目的文件中触发的 firebase 函数,它会取用照片,以

    12.1K10

    视频编解码学习之二:编解码框架「建议收藏」

    序列结束码:专有的一段比特串,标识该序列的压缩数据的结束 MPEG-2的序列结束码为十六进制数000001(B7)。 5. 图像组编码对象 6....图像头:记录图像信息 图像编码类型,图像距离,图像编码结构,图像是否为逐行扫描。 7. 图像分块编码 8. 条带编码结构 条带:多个宏块的组合。...第一步:检查起始点和其周围步长为R/2的8个点,将最优点作为第二步的起始点; 第二步:以新的起始点为中心检查其周围步长为R/4的8个点,找到最优点作为第三步的起始点; 第三步:以新的起始点为中心检查其周围步长为...正交搜索 起始搜索步长R/2,从起始点开始水平搜索三个点,得到最优点并沿着最优点垂直方向搜索相邻的两个点,得到最优点,以搜索步长为R/4再以同样的方式先水平再垂直搜索,当步长为1时停止搜索 搜索方法检查点的个数为...十字搜索 起始搜索步长R/2,从起始点开始以”X”形十字搜索,当搜索步长降为1时,如果上一步的最优点为中心点,左上点或右下点,则这一步搜索以”+”形状十字搜索,然后结束搜索,否则还是以”X”形十字搜索

    1.6K20

    2021年11个最佳无代码低代码后端开发利器

    我们强调他们的独特功能,工具是否提供可扩展性,以及是否足够灵活。最后,对于每个工具,都有一个偷窥他们的定价计划。下面列出的许多后端工具提供一个API网关,从平台提供的托管后端连接前端。...◆ Cloud Firestore 最适合那些希望快速构建,希望将安全和用户管理委托给后台服务,并能应对一些学习曲线的中间人。 Firebase Firestore是谷歌的一个数据库服务。...定价 Spark计划 (免费):Firestore的总存储数据为1GB Blaze计划(随用随付):总容量为1GB,每多存储1GB的数据在Firestore中加0.108美元。...此外,它还支持认证的用户管理、认证的API请求、关系数据、推送通知、发布/订阅消息、地理位置、视频/音频记录、服务器上的直播、文件服务等。...消息丢失和消息重复发送的处理策略 2022年最该收藏的8个数据分析模型 系统集成服务集成交互技术:REST服务集成—Swagger接口文档规范 Bootstrap实战 - 响应式布局 为什么 Redis 的查询很快,Redis 如何保证查询的高效

    12.6K20

    关于 Virtual SANVSAN 的常见问题解答

    • 问:将条带宽度设置为 2 后,数据如何在主机上的多个磁盘中进行条带化? 答:首先,将条带宽度设置为 2 后,并不能保证数据会在某个主机上的多个磁盘中进行条带化。...但是,请检查 HCL 来了解相关详细信息,因为有一些准则和要求需要注意。 • 问:VSAN必须要使用 10GbE 吗? 答:VSAN 并不强制要求使用 10GbE。...其中两个故障状态为“不存在”和“已降级”。已降级是指磁盘出现故障,而系统已识别此故障,并知道该磁盘尚未恢复。...• 问:将条带宽度设置为 2 后,数据如何在主机上的多个磁盘中进行条带化? 答:首先,将条带宽度设置为 2 后,并不能保证数据会在某个主机上的多个磁盘中进行条带化。...但是,请检查 HCL 来了解相关详细信息,因为有一些准则和要求需要注意。 • 问:VSAN必须要使用 10GbE 吗? 答:VSAN 并不强制要求使用 10GbE。

    2.4K20

    PowerBI 实现全动态图表线 - 精雕细节,打造极致

    实现方案 实现涉及的表: 结构组织: 简单查看就是: 这里的实际数据是叫做“项目汇总”的已汇总过的数据,而作图就仅仅是针对该数据即可。...PowerBI 工程式结构安排 - MVC模式 利用本案例的机会,这里浅谈一下在PowerBI中如何组织复杂的辅助数据用于作图。...如下: 叠图的技巧要求对 PowerBI 的默认图表类型和结构非常熟悉,以至于可以脑补出如何配合两幅图而形成统一的效果。...呈现出区域的效果 如果说实现线图是可以的,那么在本案例中可以想象,如果用区块条带来反映区隔是很有意义的,如下: 而区域的条带也是需要动态设置的并在端点接缝处与图例融合为一体。...—— 本文含视频讲解,年度订阅会员自动更新。决定成为 PowerBI 高手的伙伴几乎都是 Excel120 订阅会员,本文又是一个例证。

    3.4K10

    如何在Debian 9上使用mdadm创建RAID阵列

    键入以下内容验证是否已安装该实用程序 sudo mdadm -V mdadm - v3.4 - 28th January 2016 应显示应用程序版本,表明mdadm已安装并可以使用。...可以参考本节以了解如何在测试新RAID级别之前快速重置组件存储设备。如果尚未设置任何数组,请暂时跳过此部分。 警告:此过程将完全销毁数组以及写入其中的任何数据。...每次检查它们以确保您使用正确的设备。...如上所述,在调整配置之前,请再次检查以确保阵列已完成组装。...决定每个数据块如何存储的可能布局是: 附近:默认安排。当条带化时,每个块的副本被连续写入,这意味着数据块的副本将被写在多个磁盘的相同部分周围。 far:第一个和后续副本被写入阵列中存储设备的不同部分。

    6.2K40

    Flutter 移动端架构实践:Widget-Async-Bloc-Service

    然而,在构建完成并将它们一次次的重构之后,我调整出了一种在我所有项目中都能够运行完好的开发体系,因此,在本文中,我将介绍一种我定义的新的架构模式: 从现有的开发模式中借鉴了很多思想; 调整它们以满足实际开发...它和BLoC一样,我们有可以订阅的输出流;但是,BLoC输入可以包括 同步接收器、异步方法 甚至 共同的两者。...示例: Firestore service 我们可以实现一个FirestoreDatabase的Service作为Firestore的指定域的API包装器。...输入的数据(读取):将来自Firestore文档的键值对的流转换为强类型的不可变数据Model。 数据输出(写入):将数据Model转换为键值对,以便写入Firestore。...无论如何,我发现BLoCs在使用Firestore构建app时效果非常明显,其中数据通过流从后端流入app。 在这种情况下,通常将流进行组合或使用RxDart对其执行转换,BLoC很擅长这个。

    16.1K20

    iOS内购(IAP)自动续订订阅类型总结

    此类订阅不会自动续期。 示例:为期一年的已归档文章目录订阅。 经过完成这次的项目,我觉得其中最麻烦的就是自动续期订阅类型。...您可以在收据中检查订阅重试标记,以确定App Store是否仍在尝试续订订阅。 3. Cancellation消除 订阅在购买时全额支付。用户只能通过联系Apple客户服务获得退款。...要检查Apple客户支持是否已取消购买,请在收据中查找“取消日期”字段。如果该字段包含日期,则无论订阅的到期日期如何,购买都已取消。关于提供内容或服务,将取消的交易视为没有进行过购买。...根据您的应用提供的产品类型,您可能需要检查当前有效的订阅期,或者您可能需要检查所有过去的订阅期。例如,杂志应用程序需要检查所有过去的订阅期,以确定用户应该访问哪些问题。...具有流服务的应用程序仅需要检查当前活动的订阅以确定用户是否应该有权访问其服务。 服务端验证 其实内购也可以完全靠客户端自己去验证,但是为了安全起见,大部分公司都会选择让服务器端去验证订单的有效性。

    12.3K62

    如何在Ubuntu 18.04上使用mdadm创建RAID阵列

    可以参考本节以了解如何在测试新RAID级别之前快速重置组件存储设备。如果尚未设置任何数组,请暂时跳过此部分。 警告:此过程将完全销毁数组以及写入其中的任何数据。...每次检查它们以确保您使用正确的设备。...: sudo mount /dev/md0 /mnt/md0 键入以下命令检查新空间是否可用: df -h -x devtmpfs -x tmpfs Filesystem Size Used...如上所述,在调整配置之前,请再次检查以确保阵列已完成组装。...决定每个数据块如何存储的可能布局是: 附近:默认安排。当条带化时,每个块的副本被连续写入,这意味着数据块的副本将被写在多个磁盘的相同部分周围。 far:第一个和后续副本被写入阵列中存储设备的不同部分。

    18.9K56

    最新!曹雪涛团队已对17篇受质疑论文发表勘误,并表示不存在操纵数据

    之前曹雪涛院士被曝多篇论文图片遭质疑闹得沸沸扬扬,那么现在事情的进展状况如何了呢?...作者可以检查一下吗?组装图形时可能会有混淆 ? 勘误:在图5b的公开版本中,“ ISOTYPE”和“ Control-DC”组的数据呈现有误图像,以另一个独立实验的结果来代替已发表的实验。...虽然曝光时间可能略有不同,条带的形状和间距也似乎有所不同。用彩色框标示。 ?...勘误:在图5的公开版本中,错误地交换了图5a和图5d中的Stat3的条带,并且图5b中的β-肌动蛋白的条带被错误地呈现了错误的图像。现在已纠正了图5a,5b和5d。图5的更正版本如下所示。 ?...作者可以检查一下吗? ? 勘误:在图3D的发布版本中,CFSE-Lovo / Medium板块中的CH和AdCtrl组的数据被错误地呈现为错误的图像。现在已纠正了图3D。图3的更正版本如下所示。 ?

    1.9K10

    Node.js 的 EventEmitter 事件处理详解

    在触发上传事件后,订阅者可以通过向网站的管理员发电子邮件,让他们知道用户已上传照片并对此做出反应;另一个订阅者可能会收集有关操作的信息,并将其保存在数据库中。...setInterval(() => { currentTime++; eventEmitter.emit('update', currentTime); // 检查计时是否已经结束...第一个 if 用来检查计时是否已经结束并停止基于间隔的事件。如果已结束将会发布 end 事件。 如果计时没有结束,那么就检查计时是不是离结束还有 2 秒,如果是则发布 end-soon 事件。...this.currentTime++; this.emit('update', this.currentTime); // 检查计时是否已经结束...这个方法不会返回已发布的事件,而是返回订阅的事件的列表。

    1.6K20

    Co-IP免疫共沉淀

    日常科研中,我们常需要研究多个蛋白(例如蛋白A、B、C)在细胞内的相互作用,会尝试解释其A、B、C上下游关系,那么必然需要涉及一个问题,即这3个蛋白是否能够互相结合。...对于已经研究成熟的蛋白而言,它们之间的相互作用是已确定的,所以蛋白之间能否相互作用这个问题被弱化了。...(IP流程,图片来自网络) Co-IP 是通过免疫沉淀获得已知的蛋白及其互相作用的蛋白,以确定这两种蛋白质在完整细胞内生理性相互作用的方法。 ?...如何才能将温和地释放细胞内蛋白,尽可能保证它们的原始状态呢? 注意三点即可,第一是温和地释放细胞内蛋白,第二是保证释放出的蛋白不被蛋白酶分解,第三是实验过程保持低温。...(图片来自网络,侵删) 至此,Co-IP实验基本过程已结束,接下来主要说下注意事项。 注意事项: (1)确保共沉淀的蛋白是由所加入的抗体沉淀得到的,而不是外源性的非特异蛋白。

    1.3K40
    领券