本文档介绍了如何在日历模式下创建未来预留请求。您可以使用这些请求来预留高需求资源,以便创建挂接了 GPU 或 TPU 的虚拟机 (VM) 实例,这些实例的运行时间最长为 90 天。
您可以在日历模式下使用未来预留请求来预留需求量较高的资源,以运行以下工作负载:
- 模型预训练作业 
- 模型微调作业 
- 高性能计算 (HPC) 模拟工作负载 
- 短期增加推理工作负载 
Google Cloud 在日历模式下批准请求后,您预留的资源将可供您在指定的交付日期和时间创建 GPU 或 TPU 虚拟机。如需详细了解在日历模式下创建请求时需要遵循的要求和限制,请参阅日历模式下的未来预留请求概览。
准备工作
- 如果您无法在日历模式下使用未来预留请求,则您可能不符合访问和使用此功能的条件。在这种情况下,请与您的客户支持团队或销售团队联系。
- 如需与贵组织中的其他项目共享预留容量,请确保您要在日历模式下创建未来预留请求时所在的项目允许创建共享预留。否则,您将遇到错误。
- 
  
  如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
  
   
   
     
   
  
   
   
     
   
  
   
   
     
   
  
 
 
 
  
    
      Select the tab for how you plan to use the samples on this page: ConsoleWhen you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication. gcloud- 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI: gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 
- Set a default region and zone.
 REST如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。 安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI: gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。 所需的角色如需获得在日历模式下创建未来预留请求所需的权限,请让您的管理员为您授予项目的 Compute Future Reservation User ( roles/compute.futureReservationUser) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含在日历模式下创建未来预留请求所需的权限。如需查看所需的确切权限,请展开所需权限部分: 所需权限在日历模式下创建未来预留请求需要具备以下权限: - 
                创建未来预留请求:针对项目的 compute.futureReservations.create权限
- 
                让 Compute Engine 自动创建预留:针对项目的 compute.reservations.create权限
- 
                如需指定实例模板:实例模板的 compute.instanceTemplates.useReadOnly权限
- 
                查看资源的未来可用情况:针对项目的 compute.advice.calendarMode权限
 概览如需在日历模式下创建未来预留请求,请完成以下步骤: - 查看资源的未来可用情况。查看您要预留的 GPU 虚拟机或 TPU 的未来可用情况。然后,在创建请求时,指定您已确认为可用的资源的数量、类型和预留时长。如果您提供此信息, Google Cloud 更有可能批准您的请求。 
- 为 GPU 虚拟机或 TPU 创建预留请求。在日历模式下为 GPU 虚拟机或 TPU 创建并提交未来预留请求。如果您可以成功创建请求,则 Google Cloud 会在 1 分钟内批准请求。 
 查看资源的未来可用情况您可以按如下方式查看某个区域内 GPU 虚拟机或 TPU 的未来可用情况: - 对于 GPU 虚拟机,最多可提前 60 天 
- 对于 TPU,最多可提前 120 天 
 如需查看某个区域内 GPU 虚拟机或 TPU 的未来可用情况,请选择以下选项之一: 控制台在日历模式下创建未来预留请求时,您可以查看某个区域内 GPU 虚拟机或 TPU 的未来可用情况。如需了解详情,请参阅本文档中的为 GPU 虚拟机或 TPU 创建预留请求。 gcloud如需查看某个区域内 GPU 虚拟机或 TPU 的未来可用情况,请使用以下 gcloud beta compute advice calendar-mode命令之一。 根据您要查看的资源,添加以下标志:- 如需查看 GPU 虚拟机可用情况,请添加 - --vm-count和- --machine-type标志:- gcloud beta compute advice calendar-mode \ --vm-count=NUMBER_OF_VMS \ --machine-type=MACHINE_TYPE \ --region=REGION \ --start-time-range=from=FROM_START_TIME,to=TO_START_TIME \ --end-time-range=from=FROM_END_TIME,to=TO_END_TIME
- 如需查看 TPU 可用情况,请添加 - --chip-count和- --tpu-version标志:- gcloud beta compute advice calendar-mode \ --chip-count=NUMBER_OF_CHIPS \ --tpu-version=TPU_VERSION \ --region=REGION \ --start-time-range=from=FROM_START_TIME,to=TO_START_TIME \ --end-time-range=from=FROM_END_TIME,to=TO_END_TIME
 替换以下内容: - NUMBER_OF_VMS:要预留的 GPU 虚拟机数量。该值必须介于- 1到- 80之间。
- MACHINE_TYPE:要预留的 GPU 机器类型。 请指定以下某个值:- 对于 A4 机器类型: - a4-highgpu-8g
- 对于 A3 Ultra 机器类型: - a3-ultragpu-8g
 
- NUMBER_OF_CHIPS:要预留的 TPU 芯片数量。 值必须是- 1、- 4、- 8、- 16、- 32、- 64、- 128、- 256、- 512或- 1024。
- TPU_VERSION:要预留的 TPU 版本。请指定以下某个值:- 对于 TPU v6e: - V6E
- 对于 TPU v5p: - V5P
- 对于 TPU v5e: - V5E
 - 如果您指定 TPU v5e,则必须添加 - --workload-type标志。 将此标志设置为您要在 TPU 上运行的工作负载类型:- 对于在单个或多个操作中处理大量数据的工作负载(例如机器学习训练工作负载),请指定 - BATCH。
- 对于处理并发请求且需要尽可能降低网络延迟的工作负载(例如机器学习推理工作负载),请指定 - SERVING。
 
- REGION:预留 GPU 虚拟机或 TPU 的区域。 如需查看支持的区域和可用区,请参阅限制。
- FROM_START_TIME和- TO_START_TIME:您希望预留容量的最早日期和最新日期。 将这些日期的格式设置为 RFC 3339 时间戳:- YYYY-MM-DDTHH:MM:SSOFFSET- 替换以下内容: - YYYY-MM-DD:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (- -) 分隔的日期。
- HH:MM:SS:格式为 2 位数小时、2 位数分钟和 2 位数秒钟而且相互之间以冒号 (- :) 分隔的 24 小时制时间。
- OFFSET:采用世界协调时间 (UTC) 的偏移量格式的时区。 例如,要使用太平洋标准时间 (PST),请指定- -08:00。如需不使用偏移量,请指定- Z。
 
- FROM_END_TIME和- TO_END_TIME:您希望容量预留结束的最早日期和最新日期。将这些日期的格式设置为 RFC 3339 时间戳。如果您想为预留期指定时长范围(而非结束时间),请将- --end-time-range标志替换为- --duration-range标志。
 输出类似于以下内容: - recommendationsPerSpec: spec: endTime: '2025-09-07T00:00:00Z' location: zones/us-east5-a otherLocations: zones/us-east5-b: details: this machine family is not supported in this zone status: NOT_SUPPORTED zones/us-east5-c: details: this machine family is not supported in this zone status: NOT_SUPPORTED recommendationId: 0d3f005d-f952-4fce-96f2-6af25e1591eb recommendationType: FUTURE_RESERVATION startTime: '2025-06-09T00:00:00Z'如果您请求的资源可用,输出将包含 startTime、endTime和location字段。这些字段用于指定资源可用时的最早开始时间、最晚结束时间和可用区。REST如需查看某个区域内 GPU 虚拟机或 TPU 的未来可用情况,请向 Beta 版 advice.calendarMode方法发出GET请求。 根据您要查看的资源,在请求正文中添加以下字段:- 如需查看 GPU 虚拟机的可用情况,请添加 - instanceCount和- machineType字段:- POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/calendarMode { "futureResourcesSpecs": { "spec": { "targetResources": { "specificSkuResources": { "instanceCount": "NUMBER_OF_VMS", "machineType": "MACHINE_TYPE" } }, "timeRangeSpec": { "startTimeNotEarlierThan": "FROM_START_TIME", "startTimeNotLaterThan": "TO_START_TIME", "endTimeNotEarlierThan": "FROM_END_TIME", "endTimeNotLaterThan": "TO_END_TIME" } } } }
- 如需查看 TPU 可用情况,请添加 - acceleratorCount和- vmFamily字段:- POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/calendarMode { "futureResourcesSpecs": { "spec": { "targetResources": { "aggregateResources": { "acceleratorCount": "NUMBER_OF_CHIPS", "vmFamily": "TPU_VERSION" } }, "timeRangeSpec": { "startTimeNotEarlierThan": "FROM_START_TIME", "startTimeNotLaterThan": "TO_START_TIME", "endTimeNotEarlierThan": "FROM_END_TIME", "endTimeNotLaterThan": "TO_END_TIME" } } } }
 替换以下内容: - PROJECT_ID:您要在其中预留资源的项目的 ID。
- REGION:您要预留 GPU 虚拟机或 TPU 的区域。如需查看支持的区域和可用区,请参阅限制。
- NUMBER_OF_VMS:要预留的 GPU 虚拟机数量。该值必须介于- 1到- 80之间。
- MACHINE_TYPE:要预留的 GPU 机器类型。 请指定以下某个值:- 对于 A4 机器类型: - a4-highgpu-8g
- 对于 A3 Ultra 机器类型: - a3-ultragpu-8g
 
- NUMBER_OF_CHIPS:要预留的 TPU 芯片数量。 值必须是- 1、- 4、- 8、- 16、- 32、- 64、- 128、- 256、- 512或- 1024。
- TPU_VERSION:要预留的 TPU 版本。请指定以下某个值:- 对于 TPU v6e: - VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT6E
- 对于 TPU v5p: - VM_FAMILY_CLOUD_TPU_POD_SLICE_CT5P
- 对于 TPU v5e: - VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP
 - 如果您指定 TPU v5e,则必须在 - aggregateResources字段中添加- workloadType字段。 将此字段设置为您要在 TPU 上运行的工作负载类型:- 对于在单个或多个操作中处理大量数据的工作负载(例如机器学习训练工作负载),请指定 - BATCH。
- 对于处理并发请求且需要尽可能降低网络延迟的工作负载(例如机器学习推理工作负载),请指定 - SERVING。
 
- FROM_START_TIME和- TO_START_TIME:您希望预留容量的最早日期和最新日期。 将这些日期的格式设置为 RFC 3339 时间戳:- YYYY-MM-DDTHH:MM:SSOFFSET- 替换以下内容: - YYYY-MM-DD:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (- -) 分隔的日期。
- HH:MM:SS:格式为 2 位数小时、2 位数分钟和 2 位数秒钟而且相互之间以冒号 (- :) 分隔的 24 小时制时间。
- OFFSET:采用世界协调时间 (UTC) 的偏移量格式的时区。 例如,要使用太平洋标准时间 (PST),请指定- -08:00。如需不使用偏移量,请指定- Z。
 
- FROM_END_TIME和- TO_END_TIME:您希望容量预留结束的最早日期和最新日期。将这些日期的格式设置为 RFC 3339 时间戳。如果您想为预留期指定时长范围(而非结束时间),请将- endTimeNotEarlierThan和- endTimeNotLaterThan字段替换为- minDuration和- maxDuration字段。
 输出类似于以下内容: { "recommendations": [ { "recommendationsPerSpec": { "spec": { "recommendationId": "a21a2fa0-72c7-4105-8179-88de5409890b", "recommendationType": "FUTURE_RESERVATION", "startTime": "2025-06-09T00:00:00Z", "endTime": "2025-09-07T00:00:00Z", "otherLocations": { "zones/us-east5-b": { "status": "NOT_SUPPORTED", "details": "this machine family is not supported in this zone" }, "zones/us-east5-c": { "status": "NOT_SUPPORTED", "details": "this machine family is not supported in this zone" } }, "location": "zones/us-east5-a" } } } ] }如果您请求的资源可用,输出将包含 startTime、endTime和location字段。这些字段用于指定资源可用时的最早开始时间、最晚结束时间和可用区。为 GPU 虚拟机或 TPU 创建预留请求在日历模式下创建未来预留请求时,您只能按如下方式指定预留期: - 开始时间:根据您要预留的资源,您必须在创建和提交请求时指定一个至少为以下值之一的开始时间: - 对于 GPU 虚拟机,为 87 小时(3 天 15 小时) 
- 对于 TPU,为 6 小时 
 
- 结束时间:您可以预留资源,预留时长最长为 90 天。 
 如需使用现有 GPU 虚拟机作为参考来创建请求,请使用Google Cloud 控制台。否则,请选择以下选项之一: 控制台- 在 Google Cloud 控制台中,前往预留页面。 
- 点击未来预留标签页。 
- 点击 创建未来预留。系统会显示创建未来预留页面,并选择硬件配置窗格。 
- 在配置部分中,通过执行以下操作之一来指定要预留的 GPU 虚拟机或 TPU 的属性: - 如需直接指定 GPU 虚拟机或 TPU 属性,请完成以下步骤: - 选择指定机器类型。 
- 点击 GPU 或 TPU 标签页,然后选择要预留的 GPU 机器类型或 TPU 版本。 
 
- 如需使用现有实例模板指定 GPU 虚拟机属性,请选择实例模板,然后选择相应模板。 
- 如需使用现有虚拟机作为参考来指定 GPU 虚拟机属性,请选择使用现有虚拟机,然后选择相应虚拟机。 
 
- 如果您在上一步中指定了 TPU v5e (CT5LP),请在 TPU v5 工作负载类型列表中选择以下选项之一: - 如需在 TPU 上运行在单个或多个操作中处理大量数据的工作负载(例如机器学习训练工作负载),请选择批量。 
- 如需在 TPU 上运行处理并发请求且要求极低网络延迟的工作负载(例如机器学习推理工作负载),请选择服务。 
 
- 在搜索容量部分中,完成以下步骤: - 在区域和可用区列表中,指定您要预留资源的区域和可用区。如需查看支持的区域和可用区,请参阅限制。 
- 在所需总容量字段(预留 GPU 虚拟机时)或芯片数量列表(预留 TPU 时)中,指定要预留的 GPU 虚拟机或 TPU 芯片的数量。您可以指定以下值: - 对于 GPU 虚拟机,该值为介于 - 1和- 80之间的值
- 对于 TPU 芯片,值为 - 1、- 4、- 8、- 16、- 32、- 64、- 128、- 256、- 512或- 1024
 
- 在开始时间列表中,选择请求的开始时间。 
- 可选:在选择开始日期灵活性列表中,选择开始日期的准确性。 
- 在预留时长字段中,指定您要预留资源的时长。 
- 点击搜索容量。然后,在可用容量表中,选择一个包含要预留的 GPU 虚拟机或 TPU 的类型、数量和预留期的可用选项。 
 
- 点击下一步。 
- 在共享类型部分,选择要与之共享您所请求容量的项目: - 如需仅在项目中使用预留容量,请选择本地。 
- 如需与其他项目共享预留容量,请选择已共享,点击 添加项目,然后按照提示选择项目。 
 
- 点击下一步。 
- 在未来预留名称字段中,输入请求的名称。 
- 在预留名称字段中,输入 Compute Engine 自动创建的预留名称,以预配您请求的容量。 
- 点击创建。 
 gcloud如需在日历模式下创建未来预留请求并提交以供审核,请使用以下 gcloud beta compute future-reservations create命令之一。根据您要预留的资源,添加以下标志:- 如需预留 GPU 虚拟机,请添加 - --total-count、- --machine-type和- --deployment-type=DENSE标志:- gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \ --auto-delete-auto-created-reservations \ --total-count=NUMBER_OF_VMS \ --machine-type=MACHINE_TYPE \ --deployment-type=DENSE \ --planning-status=SUBMITTED \ --require-specific-reservation \ --reservation-mode=CALENDAR \ --reservation-name=RESERVATION_NAME \ --share-setting=SHARE_TYPE \ --start-time=START_TIME \ --end-time=END_TIME \ --zone=ZONE
- 如需预留 TPU,请添加 - --chip-count和- --tpu-version标志:- gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \ --auto-delete-auto-created-reservations \ --chip-count=NUMBER_OF_CHIPS \ --tpu-version=TPU_VERSION \ --planning-status=SUBMITTED \ --require-specific-reservation \ --reservation-mode=CALENDAR \ --reservation-name=RESERVATION_NAME \ --share-setting=SHARE_TYPE \ --start-time=START_TIME \ --end-time=END_TIME \ --zone=ZONE
 替换以下内容: - FUTURE_RESERVATION_NAME:请求的名称。
- NUMBER_OF_VMS:要预留的 GPU 虚拟机数量。该值必须介于- 1到- 80之间。
- MACHINE_TYPE:要预留的 GPU 机器类型。 请指定以下某个值:- 对于 A4 机器类型: - a4-highgpu-8g
- 对于 A3 Ultra 机器类型: - a3-ultragpu-8g
 
- NUMBER_OF_CHIPS:要预留的 TPU 芯片数量。 值必须是- 1、- 4、- 8、- 16、- 32、- 64、- 128、- 256、- 512或- 1024。
- TPU_VERSION:要预留的 TPU 版本。请指定以下某个值:- 对于 TPU v6e: - V6E
- 对于 TPU v5p: - V5P
- 对于 TPU v5e: - V5E
 - 如果您指定 TPU v5e,则必须添加 - --workload-type标志。 将该标志设置为您要在 TPU 上运行的工作负载类型:- 对于在单个或多个操作中处理大量数据的工作负载(例如机器学习训练工作负载),请指定 - BATCH。
- 对于处理并发请求且需要尽可能降低网络延迟的工作负载(例如机器学习推理工作负载),请指定 - SERVING。
 
- RESERVATION_NAME:Compute Engine 自动创建的用于预配所请求容量的预留的名称。
- SHARE_TYPE:贵组织中的其他项目是否可以使用预留容量。请指定以下某个值:- 如需仅在项目中使用容量,请指定: - local
- 如需与其他项目共享容量,请指定: - projects
 - 如果您指定了 - projects,则必须包含- --share-with标志,并将其设置为以英文逗号分隔的项目 ID 列表,例如- project-1,project-2。您最多可以指定组织内的 100 个项目。请勿在此列表中添加您的项目 ID。默认情况下,您可以使用预留容量。
- START_TIME:请求的开始时间,采用 RFC 3339 时间戳格式。
- END_TIME:采用 RFC 3339 时间戳格式的预留期结束时间。如果您想为预留期指定时长(以秒为单位),而不是结束时间,请将- --end-time标志替换为- --duration标志。
- ZONE:您要在其中预留资源的可用区。
 REST如需在日历模式下创建未来预留请求并提交以供审核,请向 Beta 版 futureReservations.insert方法发送以下POST请求。根据您要预留的资源,在请求正文中添加以下字段:- 如需预留 GPU 虚拟机,请添加 - totalCount和- machineType字段,并将- deploymentType字段设置为- DENSE:- POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations { "name": "FUTURE_RESERVATION_NAME", "autoDeleteAutoCreatedReservations": true, "deploymentType": "DENSE", "planningStatus": "SUBMITTED", "reservationMode": "CALENDAR", "reservationName": "RESERVATION_NAME", "shareSettings": { "shareType": "SHARE_TYPE" }, "specificReservationRequired": true, "specificSkuProperties": { "totalCount": NUMBER_OF_VMS, "instanceProperties": { "machineType": "MACHINE_TYPE" } }, "timeWindow": { "startTime": "START_TIME", "endTime": "END_TIME" } }
- 如需预留 TPU,请添加 - acceleratorCount和- vmFamily标志:- POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations { "name": "FUTURE_RESERVATION_NAME", "autoDeleteAutoCreatedReservations": true, "planningStatus": "SUBMITTED", "reservationMode": "CALENDAR", "reservationName": "RESERVATION_NAME", "shareSettings": { "shareType": "SHARE_TYPE" }, "specificReservationRequired": true, "aggregateReservation": { "reservedResources": [ { "accelerator": { "acceleratorCount": NUMBER_OF_CHIPS } } ], "vmFamily": "TPU_VERSION" }, "timeWindow": { "startTime": "START_TIME", "endTime": "END_TIME" } }
 替换以下内容: - PROJECT_ID:您要在其中创建请求的项目的 ID。
- ZONE:您要在其中预留资源的可用区。
- FUTURE_RESERVATION_NAME:请求的名称。
- RESERVATION_NAME:Compute Engine 自动创建的用于预配所请求容量的预留的名称。
- SHARE_TYPE:贵组织中的其他项目是否可以使用预留容量。请指定以下某个值:- 如需仅在项目中使用容量,请指定: - LOCAL
- 如需与其他项目共享容量,请指定: - SPECIFIC_PROJECTS
 - 如果您指定了 - SPECIFIC_PROJECTS,则必须在- shareSettings字段中添加- projectMap字段,以指定要与之共享容量的项目。您最多可以指定组织内的 100 个项目。请勿指定项目 ID。默认情况下,您可以使用预留容量。- 例如,如需与其他两个项目共享所请求的容量,请添加以下内容: - "shareSettings": { "shareType": "SPECIFIC_PROJECTS", "projectMap": { "CONSUMER_PROJECT_ID_1": { "projectId": "CONSUMER_PROJECT_ID_1" }, "CONSUMER_PROJECT_ID_2": { "projectId": "CONSUMER_PROJECT_ID_2" } } }- 将 - CONSUMER_PROJECT_ID_1和- CONSUMER_PROJECT_ID_2替换为您要允许使用所请求容量的两个项目的 ID。
- NUMBER_OF_VMS:要预留的 GPU 虚拟机数量。该值必须介于- 1到- 80之间。
- MACHINE_TYPE:要预留的 GPU 机器类型。 请指定以下某个值:- 对于 A4 机器类型: - a4-highgpu-8g
- 对于 A3 Ultra 机器类型: - a3-ultragpu-8g
 
- NUMBER_OF_CHIPS:要预留的 TPU 芯片数量。 值必须是- 1、- 4、- 8、- 16、- 32、- 64、- 128、- 256、- 512或- 1024。
- TPU_VERSION:要预留的 TPU 版本。请指定以下某个值:- 对于 TPU v6e: - VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT6E
- 对于 TPU v5p: - VM_FAMILY_CLOUD_TPU_POD_SLICE_CT5P
- 对于 TPU v5e: - VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP
 - 如果您指定 TPU v5e,则必须在 - aggregateResources字段中添加- workloadType字段。 将该字段设置为您要在 TPU 上运行的工作负载类型:- 对于在单个或多个操作中处理大量数据的工作负载(例如机器学习训练工作负载),请指定 - BATCH。
- 对于处理并发请求且需要尽可能降低网络延迟的工作负载(例如机器学习推理工作负载),请指定 - SERVING。
 
- START_TIME:请求的开始时间,采用 RFC 3339 时间戳格式。
- END_TIME:采用 RFC 3339 时间戳格式的预留期结束时间。如果您想指定预留期的时长(以秒为单位),而不是结束时间,请将- endTime字段替换为- duration字段。
 后续步骤如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。 最后更新时间 (UTC):2025-10-19。 -