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

AIP-217 不可达资源

编号217
原文链接AIP-217: Unreachable resources
状态批准
创建日期2019-08-26
更新日期2019-08-26

有时,用户可能会请求一系列资源,而其中某些资源暂时不可用。最典型的场景是跨集合读。例如用户可能请求返回多个上级位置的资源,但其中某个位置暂时不可达。此时仍然需要向用户提供所有可用资源,同时告诉客户有部分缺失。

指南

如果查询数据的方法由于若干资源暂时不可达而部分失败,应答消息 必须 包含一个域来表明这一点:

message ListBooksResponse {// 符合请求的书籍。repeated Book books = 1;// 下一页的令牌(如果还有符合请求的书籍)string next_page_token = 2;// 不可达资源。repeated string unreachable = 3 [(google.api.field_behavior) = UNORDERED_LIST];
}
  • 域 必须 是一个重复字符串域, 应该 命名为 unreachable 。
  • 域 必须 包含不可达的、或者阻碍访问所请求集合的资源名字,例如所请求集合的上级资源不可达。
    • 例如整个位置不可达,阻止了访问所请求的本地资源集合,则包含位置资源。
  • 域 必须 包含 服务相对 资源名, 不得 包含完整资源名、资源URI或简单资源标识。有关定义请参考AIP-122。
    • 例如 Book 资源不可达,则 服务相对 资源名 "shelves/scifi1/books/starwars4" 包含在 unreachable 中,而非 完整 资源名 "//library.googleapis.com/shelves/scifi1/books/starwars4" 、/上级相对/ 资源名 "books/starwars4" 、资源标识 "starwars4" 或资源URI。
  • 应答 不得 提供导致所需资源不可达的问题的任何其他信息。
    • 例如应答不能包含额外的域,包括每个 unreachable 条目的错误原因。
  • 服务 必须 提供方法,让用户能够发出具体请求,接收额外错误信息。例如使用标准的Get或List方法,请求不可达集合的上级资源。
    • 服务 必须 允许用户使用更严格的参数重发请求。
  • 出现在 unreachable 中的资源名字 可能 是异构的。
    • unreachable 域 应该 在文档中记录可能包含的资源,注明资源列表可能在将来扩展。
    • 例如整个位置和不同位置的特定资源都不可达,那么不可达位置的名字(如 "projects/example123/locations/us-east1" )和不可达资源的名字(如 "projects/example123/locations/europe-west2/instances/example456" )都将出现在 unreachable 中。
  • unreachable 域 不得 在列表内提供语义上有意义的顺序或结构。换句话说,unreachable 必须 是一个无序列表。
    • 因此 unreachable 域 必须 使用 UNORDERED_LIST 域行为注释(参考AIP-203)。

重要 如果按照规范要求,由于位置或资源不可达,无法返回数据(例如请求列出某个出版商的资源,但该出版商不可达),服务必须终止整个请求,返回错误信息。

分页

在准备分页远程过程调用(例如AIP-132标准List方法)结果时,如果服务遇到不可达资源或集合, 必须 遵照下列执行:

  • 在 unreachable 应答域中包含不可达资源的资源名。
    • 资源名字 必须 是不可达资源或集合的最适当的范围。
      • 例如某地区的特定区域不可达,不可达资源名是区域位置(如 projects/example/locations/us-west1-a )。如果整个地区不可达,资源名是区域位置(如 projects/example/locations/us-west1 )。
    • 如果发现资源不可达,无论分页参数(如 order_by )如何限制, 必须 包含资源名。
  • 如果先前不可达资源恢复可用,分页参数也允许包含这些资源,在后续页中添加它们。
    • 根据分页参数确定包含哪些资源。如果用户没有设定排序规则,遵守文档要求的默认排序规则。
    • 例如在有序分页调用中,地区 projects/example/locations/us-west1 在第一页中不可用。如果包含该地区资源将违反排序规则,那么这些资源不包含在后续页中。
    • 类似的,如果重发同一请求,先前不可达资源恢复可用, 必须 在分页参数约束下添加它们。
  • 如果适当上调资源范围后,不可达资源名数量仍然超过文档要求的最大值,限制应答中返回的不可达资源名数量。
    • 最大值 必须 直接记录在 unreachable 域注释中。
    • 最大值与调用者设定的 page_size 无关。
保持原有行为

如果修改分页行为会产生AIP-180描述的不兼容变更,服务 可以 继续保持以前实现的 unreachable 分页行为,但 必须 在 unreachable 域文档中直接记录具体行为。

适配部分成功

现存API中,默认行为不同于上述指南的(例如API调用返回错误状态而非部分结果),适配 unreachable 模式时 必须 执行下列操作:

  • 必须 保持默认行为,避免行为变更不兼容。
    • 例如默认行为是当任何位置不可达时返回错误,*必须* 保持原默认行为 。
  • 请求消息 必须 包含 bool return_partial_success 域。
  • 应答消息 必须 包含标准 repeated string unreachable 域。
  • 上述两域 必须 同时添加。

如果请求中的 bool return_partial_success 域设定为 true ,API 必须 按照上述指南,填写 repeated string unreachable 应答域。

message ListBooksRequest {// Standard List request fields...// Setting this field to `true` will opt the request into returning the// resources that are reachable, and into including the names of those that// were unreachable in the [ListBooksResponse.unreachable] field. This can// only be `true` when reading across collections e.g. when `parent` is set to//  `"projects/example/locations/-"`.bool return_partial_success = 4;
}message ListBooksResponse {// Standard List Response fields...// Unreachable resources. Populated when the request opts into// `return_partial_success` and reading across collections e.g. when// attempting to list all resources across all supported locations.repeated string unreachable = 3 [(google.api.field_behavior) = UNORDERED_LIST];
}
部分成功的粒度

如果请求的 bool return_partial_success 域设定为 true ,而请求范围超出了API能够合理判断不可达资源能力的粒度,API 应该 返回 INVALID_ARGUMENT 错误,附带说明问题的细节。例如某个API仅在跨集合读时支持 return_partial_success ,如果请求范围限定为特定上级资源集合,则返回 INVALID_ARGUMENT 错误。API支持的粒度 必须 在 return_partial_success 域文档中记录。

理由

使用服务相对资源名

根据AIP-122定义的相对资源名通常是在服务内部或跨服务引用资源的最佳选择,尤其在外部服务明确时。完整资源名严格来说不太好用(例如需要在客户端进行解析),并且对于 unreachable 来说过于具体。资源URI并非与传输无关,因此它们在gRPC标准方法中不可用,而简单资源标识无法提供充足信息,准确指出在异构资源列表中哪个资源不可达。

在应答中提供最少额外错误详情

不可达资源的上下文可能存在敏感信息,系统状态在调用之间也是变化的。因此最好使用更具体的远程过程调用,依赖服务获取特定资源或上级资源的更多详情。这可以让服务在处理上级资源时进行全面检查、判定系统状态。而不是将可能涉密或过期的信息,胡乱塞入遭遇资源不可达的调用中。

不对 unreachable 进行排序

要在许多API之间达成统一, unreachable 内容不存在特定的、有序的语义结构非常重要。如果每个API在标准域中生成特定顺序,无论是客户端或服务器如何实现,都无法保证正确。

每个页都包含 unreachable 资源

每个页都包含 unreachable 资源,允许终端用户立即识别页面是否完整,不需要遍历所有结果。用户未必会分页到末尾,重要的是尽快在页中提示缺少不可达资源。此外,这允许用户识别潜在问题,在后续调用中处理。最后,保留不可达资源信息直到分页末尾,这需要服务在完全隔离的API调用中保持一组相互独立的状态。

使用请求域作为选项

引入新的请求域作为适配部分成功行为的选项,是即能传达用户意图,又能保持默认行为向后兼容的最好的办法。另一种选择,改变默认行为,加入 unreachable 应答域,将导致不向后兼容的变更。预期当某个资源不可达时遇到失败的用户,可能会认为应答成功表示已经包含全部资源。

同时引入域

同时引入请求和应答域,是为了防止只添加一个域时,可能出现无效的中间状态。如果只添加 unreachable ,用户可能假定域为空意味着已经返回全部资源,而实际未必如此。如果只添加 return_partial_success ,用户将无法得知哪些资源不可达。

部分成功的粒度限制

在请求范围的某个粒度级别上,API可能完全无法枚举不可达资源。例如全局性API可能无法提供本地集合级别的粒度。在此场景中,如果 return_partial_success=true 时主动返回错误,可以避免用户遭遇风险:系统存在问题,但用户未收到不可达列表,误以为已经检索全部资源。这与本指南一致:对于无法完整执行的请求,主动返回失败。

历史

分页指南

最初关于填充 unreachable 域的指南的核心思路是:将这些内容视为分页结果。这意味着分页资源与不可达资源不会出现在同一应答(即页)中。用户需要遍历所有结果,才能发现是否存在不可达资源。有关更改的原因,请参考理由部分。

进一步阅读

  • 关于跨集合读,请参考AIP-159。

修订记录

  • 2024-07-29 修改指南格式,添加具体的资源名格式
  • 2024-07-26 修改分页指南要求。
  • 2024-07-19 添加适配部分成功的指南。

相关文章:

AIP-217 不可达资源

编号217原文链接AIP-217: Unreachable resources状态批准创建日期2019-08-26更新日期2019-08-26 有时,用户可能会请求一系列资源,而其中某些资源暂时不可用。最典型的场景是跨集合读。例如用户可能请求返回多个上级位置的资源,但其中某个位置…...

SAP系统控制检验批

问题:同一批物料多检验批问题 现象:同一物料多采购订单同一天到货时,对其采购订单分别收货,导致系统产生多个检验批,需分别请检单、检验报告等,使质量部工作复杂化。 原因:物料主数据质量试图设…...

JavaScript 代码混淆与反混淆技术详解

一、代码混淆:让别人看不懂你的代码 混淆技术就是一种“代码伪装术”,目的是让别人很难看懂你的代码逻辑,从而保护你的核心算法或敏感信息。 1. 变量名压缩 原理:把变量名改成乱码,比如把calculatePrice改成a&#…...

Android studio | From Zero To One ——手机弹幕

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 滚动显示 代码activity_main.xmlactivity_fullscreen.xmlAndroidManife…...

面向对象的需求分析与UML构造块详解

目录 前言1 面向对象的需求分析概述2 UML构造块概述3 UML事物详解3.1 结构事物(Structural Things)3.2 行为事物(Behavioral Things)3.3 分组事物(Grouping Things)3.4 解释事物(Annotational T…...

LeetCode 2843.统计对称整数的数目:字符串数字转换

【LetMeFly】2843.统计对称整数的数目:字符串数字转换 力扣题目链接:https://leetcode.cn/problems/count-symmetric-integers/ 给你两个正整数 low 和 high 。 对于一个由 2 * n 位数字组成的整数 x ,如果其前 n 位数字之和与后 n 位数字…...

RocketMQ深度百科全书式解析

​一、核心架构与设计哲学​ ​1. 设计目标​ ​海量消息堆积​:单机支持百万级消息堆积,适合大数据场景(如日志采集)。​严格顺序性​:通过队列分区(Queue)和消费锁机制保证局部顺序。​事务…...

A2A与MCP Server:AI智能体协作与工具交互的核心协议对比

A2A与MCP Server:AI智能体协作与工具交互的核心协议对比 摘要 在AI智能体技术爆发式增长的今天,谷歌的A2A协议与Anthropic的MCP协议正在重塑AI系统架构。本文通过协议栈分层模型、企业级架构设计案例及开发者实践指南三大维度,揭示二者在AI生…...

如何将网页保存为pdf

要将网页保存为PDF,可以按照以下几种方法操作: 1. 使用浏览器的打印功能 大多数现代浏览器(如Chrome、Firefox、Edge等)都支持将网页保存为PDF文件。步骤如下: 在 Google Chrome 中: 打开你想保存为PDF…...

位运算与实战场景分析-Java代码版

一、为什么每个程序员都要掌握位运算? 在电商秒杀系统中,位运算可以快速判断库存状态;在权限管理系统里,位运算能用极小的空间存储复杂权限配置;在算法竞赛中,位运算更是高频出现的性能优化利器。这项看似…...

【“星睿O6”AI PC开发套件评测】+ Debian 系统安装及 sysbench 跑分对比

很荣幸这次可以得到机会评测 “星睿O6”AI PC开发套件。第一篇文章,我将分为两个部分: 官方 Debian 系统安装到 NVMEsysbench 跑分以及对比 RK3568 和 I712700KF 正文开始之前,忍不住还是想放几张开箱照片,板子实在是太精致了。…...

java——继承

继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。继承是指在原有类的基础上,进行功能扩展,创建新的类型。 概念与作用 代码复用:继承能够避免重…...

STM32嵌入式开发从入门到实战:全面指南与项目实践

STM32嵌入式开发从入门到实战:全面指南与项目实践 一、STM32开发基础概述 1.STM32微控制器核心特性 STM32微控制器基于ARM Cortex - M内核,具备显著的架构优势。其32位处理能力,能够高效处理复杂的计算任务,相较于传…...

企业数据孤岛如何破

企业数据孤岛如何破 背景信息传统方式Flink CDC如何用技术之力 背景信息 在数字化转型的浪潮中,企业数据的价值正从“事后分析”向“实时驱动”快速迁移。企业需要快速、高效地将分散在不同系统中的数据整合起来,以支持实时分析和业务决策。诚然&#x…...

源码编译安装Nginx

源码编译安装Nginx 源码编译安装Nginx创建nginx服务用户安装编译环境依赖包下载Nginx源码构建编译选项,创建makefile文件编译安装nginx为Nginx创建服务单元设置Nginx开机自启服务 yum安装Nginxyum安装openresty 源码编译安装Nginx 如果需要最新版本及定制化模块可以通过源码安…...

查看容器内的eth0网卡对应宿主机上的哪块网卡

查看容器内的eth0网卡对应宿主机上的哪块网卡 问题描述解决办法1. 进入容器,查看网卡的iflink(接口链路索引)值方法1:方法2: 2. 从宿主机过滤查询到的iflink(接口链路索引)值3. 确定veth接口连接的网桥方法2: brctl查看连接到网桥的接口--推荐 4. 查看网桥连接的物理网卡 问题描…...

虚拟偶像“C位出道”:数字浪潮下的崛起与财富密码(3/10)

摘要:虚拟偶像作为数字时代的新宠,凭借数字技术与文化创意的深度融合,在全球范围内迅速崛起。从早期的简单2D形象到如今高度逼真、智能交互的3D虚拟偶像,其发展得益于计算机图形学、动作捕捉、AI等技术的进步。虚拟偶像不仅在娱乐…...

swift菜鸟教程13(函数)

一个朴实无华的目录 今日学习内容:1.Swift 函数1.1函数定义:使用关键字 func。1.2函数参数:以逗号分隔。1.3不带参数函数1.4元组作为函数返回值1.5没有返回值函数1.6函数参数名称1.6.1局部参数名1.6.2外部参数名 1.7可变参数1.8常量&#xff…...

MacOS红队常用攻击命令

MacOS红队常用攻击命令 1.自动化武器2.系统信息3.服务 & 内核信息4.快捷命令5.网络相关6.brew相关 / 软件包相关7.高权限命令8.创建一个管理员权限的后门用户 1.自动化武器 1、linPEAS LinPEAS 是一个脚本,用于在 Linux/Unix/MacOS 主机上搜索提权路径 2、me…...

无人机的振动与噪声控制技术!

一、振动控制技术要点 1. 振动源分析 气动振动:旋翼桨叶涡脱落(如叶尖涡干涉)、动态失速(Dynamic Stall)引发的周期性气动激振力(频率与转速相关)。 机械振动:电机偏心、传动轴不…...

如何使用 Spring Boot 实现分页和排序?

全文目录: 开篇语1. 创建 Spring Boot 项目2. 配置数据库连接3. 创建实体类4. 创建 Repository 接口5. 创建分页和排序服务6. 创建控制器7. 测试分页和排序请求示例:返回结果: 8. 总结 文末 开篇语 哈喽,各位小伙伴们,…...

浅谈编译型语言的运用

如大家所熟悉的,程序在执行之前需要一个专门的编译过程,把程序编译成机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了,程序执行效率高,依赖编译器,如 C/C、Golang 等&#xff0c…...

知识了解02——了解pnpm+vite+turbo+monorepo的完整构建步骤(react子项目)

(1)初始化monorepo 1)创建项目目录并进入当前目录 2)初始化 pnpm 工作区,生成一个package.json文件 3)在项目根目录下创建 pnpm-workspace.yaml 文件,并定义工作区目录 (2)安装 Turborepo 1)安…...

MySQL 半同步复制,给数据找靠谱 “分身”

目录 一背景 二、MySQL 复制基础概念 为何需要 MySQL 复制 传统异步复制 半同步复制的诞生 三、MySQL 半同步复制原理详解 主要组件及作用 工作流程 半同步复制流程图 四、MySQL 半同步复制配置与代码示例 环境准备 主服务器配置 从服务器配置 示例说明 五、MyS…...

uniapp离线打包提示未添加videoplayer模块

uniapp中使用到video标签,但是离线打包放到安卓工程中,运行到真机中时提示如下: 解决方案: 1、把media-release.aar、weex_videoplayer-release.aar放到工程的libs目录下; 文档:https://nativesupport.dcloud.net.cn/…...

机器人零位标定修正流程介绍

如果想看运动学标定可以看看 机器人运动学参数标定, 一次性把运动学参数和零位标定等一起标定求解. 1. 零位标定 零位标定是机器人运动学标定中的一个重要步骤,其目的是校正机器人关节的初始位置误差。以下是需要进行零位标定的主要原因: 制造误差 在机…...

应用层通信报文设计

/* --------------------------------------------------------------- | 魔数 2byte | 协议版本号 1byte | 序列化算法 1byte | 报文类型 1byte | --------------------------------------------------------------- | 状态 1byte | 保留字段 4byte | 数据长…...

一周学会Pandas2 Python数据处理与分析-Pandas2读取Excel

锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Excel格式文件是办公使用和处理最多的文件格式之一,相比CSV文件,Excel是有样式的。Pandas2提…...

技术分享|iTOP-RK3588开发板Ubuntu20系统旋转屏幕方案

iTOP-3588开发板采用瑞芯微RK3588处理器,是全新一代AloT高端应用芯片,采用8nmLP制程,搭载八核64位CPU,四核Cortex-A76和四核Cortex-A55架构,主频高达2.4GHz。是一款可用于互联网设备和其它数字多媒体的高性能产品。 在…...

ubuntu 20.04 安装源码编译 ros humble过程

公司要兼容ros1还需要ros2 这个时候不得不使用ubuntu20.04 安装 humble 但实际上在20.04上安装humble是需要在源码编译的。 根据这个帖子 https://blog.csdn.net/m0_62353836/article/details/129730981 重写一份,以应对无法下载的问题 系统配置 #检查是否为UTF-8编码,是则跳…...

Ubuntu18.04.06安装window虚拟机,安装VirtualBox

VirtualBox官网没有支持Ubuntu18的版本,最低是ubuntu20; 但是现在用的系统是UBuntu18.04.06,又不能升级,查阅了很多办法,最终终于安装VirtualBox可用版本; 1,在Ubuntu18自带的软件应用市场,搜VirtualBox;…...

Matlab 四分之一车体被动悬架、pid、模糊控制和模糊pid控制

1、内容简介 Matlab 198-四分之一车体被动悬架、pid、模糊控制和模糊pid控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Linux-----驱动

一、内核驱动与启动流程 1. Linux内核驱动 Nor Flash: 可线性访问,有专门的数据及地址总线(与内存访问方式相同)。 Nand Flash: 不可线性访问,访问需要控制逻辑(软件)。 2. Linux启动流程 ARM架构: IRAM…...

用HTML和CSS绘制佩奇:我不是佩奇

在这篇博客中,我将解析一个完全使用HTML和CSS绘制的佩奇(Pig)形象。这个项目展示了CSS的强大能力,仅用样式就能创造出复杂的图形,而不需要任何图片或JavaScript。 项目概述 这个名为"我不是佩奇"的项目是一个纯CSS绘制的卡通猪形象…...

Qwen2.5-7B-Instruct FastApi 部署调用教程

1 环境准备 基础环境最低要求说明: 环境名称版本信息1Ubuntu22.04.4 LTSCudaV12.1.105Python3.12.4NVIDIA CorporationRTX 3090 首先 pip 换源加速下载并安装依赖包 # 升级pip python -m pip install --upgrade pip # 更换 pypi 源加速库的安装 pip config set g…...

潇洒浪: Dify 上传自定义文件去除内容校验 File validation failed for file: re.json

Dify上传文件 添加其他文件类型如 my.myselfsuffix 上传成功 执行报错 File validation failed for file: re.json 解决办法 Notepad 搜索dify源码 注释掉,重启容器 或者直接在容器中修改重启...

【力扣hot100题】(088)最长有效括号

这题目真是越做越难了。 但其实只是思路很难想到,一旦会了方法就很好做。 但问题就在方法太难想了…… 思路还是只要遍历一遍数组,维护动态规划数组记录截止至目前位置选取该元素的情况下有效括号的最大值。 光是知道这个还不够,看了答案…...

XML、JSON 和 Protocol Buffers (protobuf) 对比

目录 1. XML (eXtensible Markup Language) 1)xml的特点: 2)xml的适用场景: 2. JSON (JavaScript Object Notation) 1)JSOM的特点: 2)JSON的适用场景: 3. Protocol Buffers (…...

C++ 入门四:类与对象 —— 面向对象编程的核心基石

一、类的定义 1. 类的基本形式 class 类名 { public: // 公有成员(类内外均可访问)数据类型 数据成员; // 公有数据成员数据类型 成员函数(参数列表); // 公有成员函数声明 protected: // 保护成员(类内和派生类可访问&…...

DeepSeek:穿透行业知识壁垒的搜索引擎攻防战

DeepSeek:穿透行业知识壁垒的搜索引擎攻防战 文 / 产业智能观察组(人机协同创作) 一、搜索引擎的"认知折叠"危机 2024年Q1数据显示,百度搜索结果前10页中,61.7%的内容存在"伪专业化"现象——看似…...

SQL 查询中涉及的表及其作用说明

SQL 查询中涉及的表及其作用说明: 涉及的数据库表 表名别名/用途关联关系dbo.s_orderSO(主表)存储订单主信息(订单号、日期、客户等)dbo.s_orderdetailSoD(订单明细)通过 billid SO.billid 关…...

数组 array

1、数组定义 是一种用于存储多个相同类型数据的存储模型。 2、数组格式 (1)数据类型[ ] 变量名(比较常见这种格式) 例如: int [ ] arr0,定义了一个int类型的数组,数组名是arr0; &am…...

Git 查看提交历史

Git作为最流行的版本控制工具,其提交历史管理是开发者日常工作的核心部分。无论是回溯代码变更、定位问题根源,还是进行版本回退,掌握Git提交历史的操作技巧都至关重要。本文将全面解析Git提交历史相关命令,助你成为版本管理高手&…...

电脑提示“找不到mfc140u.dll“的完整解决方案:从原因分析到彻底修复

当你启动某个软件或游戏时,突然遭遇"无法启动程序,因为计算机中丢失mfc140u.dll"的错误提示,这确实令人沮丧。mfc140u.dll是Microsoft Foundation Classes(MFC)库的重要组成部分,属于Visual C Re…...

windows安卓子系统wsa隐藏应用列表的安装激活使用

Windows 11 安卓子系统应用部署全攻略 windows安卓子系统wsa隐藏应用列表的安装激活使用|过检测核心前端 在 Windows 11 系统中,安卓子系统为用户带来了在电脑上运行安卓应用的便利。经过一系列的操作,我们已经完成了 Windows 11 安卓子系统的底层和前端…...

深入探索 PyTorch:回归与分类模型的全方位解析

深入探索 PyTorch:回归与分类模型的全方位解析 在当今数据驱动的时代,机器学习与深度学习技术正广泛应用于各个领域,助力我们从海量数据中挖掘有价值的信息。而 PyTorch 作为一款备受青睐的深度学习框架,为开发者们提供了简洁且高…...

案例分析:东华新径,拉动式生产的智造之路

目录 文章目录 目录南京东华智能转向系统有限公司是一家什么公司?背景知识:新能源汽车生产制造流程简介东华遇见了什么问题?东华希望如何解决?解决思路:从 “推动式生产” 到 “拉动式生产”,从 “冗余式思…...

【android bluetooth 框架分析 01】【关键线程 5】【bt_main_thread介绍】

1. 概述 system/stack/btu/btu_task.cc bt_main_thread 是 Android Bluetooth 协议栈中的核心线程,负责处理蓝牙协议栈中的大部分关键任务和事件。它相当于蓝牙协议栈的"大脑",协调各种蓝牙功能的运行。 2. 重要性 bt_main_thread 的重要性…...

城市应急安防系统EasyCVR视频融合平台:如何实现多源视频资源高效汇聚与应急指挥协同

一、方案背景 1)项目背景 在当今数字化时代,随着信息技术的飞速发展,视频监控和应急指挥系统在公共安全、城市应急等领域的重要性日益凸显。尤其是在关键场所,高效的视频资源整合与传输能力对于应对突发公共事件、实现快速精准的…...

自动化测试常用函数

自动化测试常用函数 前言1. 元素的定位1.1 cssSelector1.2 xpath1.2.1 获取 HTML 页面所有的节点1.2.2 获取 HTML 页面指定的节点1.2.3 获取一个节点中的直接子节点1.2.4 获取一个节点的父节点1.2.5 实现节点属性的匹配1.2.6 使用指定索引的方式获取对应的节点内容 2. 操作测试…...