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

OpenAPI 规范:构建高效 RESTful API 指南

引言

在现代软件开发中,API 已经成为不同系统之间通信的核心桥梁。随着微服务架构和云原生应用的普及,如何清晰、规范地描述和定义 API 接口成为了开发团队面临的重要挑战。OpenAPI 规范(OpenAPI Specification,OAS)作为描述 RESTful API 的行业标准,为解决这一问题提供了全面而高效的解决方案。

本文将深入探讨 OpenAPI 规范的核心概念、技术细节和实践应用。通过阅读本文,您将掌握以下知识和技能:

  • OpenAPI 规范的基本概念和发展历史
  • 规范的核心组成元素和语法结构
  • 使用 YAML 编写符合规范的 API 定义
  • 利用 OpenAPI 生态工具提升开发效率
  • 实际项目中的最佳实践和常见陷阱
  • 从 Swagger 2.0 迁移到 OpenAPI 3.x 的完整指南

无论您是前端开发者、后端工程师还是架构师,掌握 OpenAPI 规范都将显著提升您的 API 设计和开发能力,为构建可维护、可扩展的 API 系统奠定坚实基础。

大纲

  1. OpenAPI 规范概述
    • 什么是 OpenAPI 规范
    • 历史发展与版本演进
    • 核心价值与优势
  2. 规范核心结构与语法
    • 文档基本结构
    • 信息对象(Info Object)详解
    • 路径对象(Paths Object)深度解析
    • 组件对象(Components Object)与复用机制
    • 服务器对象(Servers Object)配置
  3. 高级特性与功能
    • 参数定义与数据类型
    • 请求体和响应定义
    • 安全方案定义
    • 回调与 Webhooks 支持
    • 使用 allOf 组合模式
  4. OpenAPI 工具生态系统
    • 编辑与验证工具
    • 文档生成工具
    • 代码生成工具
    • 测试与监控工具
  5. 实战应用与最佳实践
    • 从零开始创建 OpenAPI 文档
    • 前后端协作工作流
    • 版本管理与迭代策略
    • 常见问题与解决方案
  6. 迁移与升级指南
    • 从 Swagger 2.0 到 OpenAPI 3.x
    • 常见迁移挑战与解决
    • 工具链更新与适配
  7. 未来发展与趋势
    • OpenAPI 规范的发展方向
    • 行业采纳与最佳实践
    • 与其他技术的整合

1. OpenAPI 规范概述

什么是 OpenAPI 规范

OpenAPI 规范(OpenAPI Specification,OAS)是一种用于描述 RESTful API 的标准格式,它使开发人员能够以机器可读的方式定义 API 的结构、参数、响应等信息。该规范最初被称为 Swagger 规范,2015 年被捐赠给 OpenAPI Initiative 后更名为 OpenAPI,并逐渐发展成为行业广泛认可的标准。

OpenAPI 规范使用 JSON 或 YAML 格式来描述 API 的各个方面,包括端点、操作参数、请求体、响应、安全性等。这种机器可读的描述使得可以自动生成接口文档、客户端 SDK、服务器存根以及进行自动化测试。

openapi: 3.1.0
info:title: Sample APIdescription: This is a sample API for demonstration purposesversion: 1.0.0
servers:- url: https://api.example.com/v1description: Production server
paths:/users:get:summary: Get all usersresponses:'200':description: Successful responsecontent:application/json:schema:type: arrayitems:$ref: '#/components/schemas/User'

历史发展与版本演进

OpenAPI 规范起源于 Swagger 项目,由 SmartBear Software 公司开发。2015 年,Swagger 被捐赠给 Linux 基金会下的 OpenAPI Initiative(OAI),并更名为 OpenAPI 规范。

主要版本演进:

  • Swagger 1.2:早期版本,提供了基本的 API 描述能力
  • Swagger 2.0:成为广泛采纳的版本,奠定了规范的基础
  • OpenAPI 3.0:首个更名后的版本,引入了多项重要改进
  • OpenAPI 3.1:当前最新版本,完全兼容 JSON Schema 2020-12

在这里插入图片描述

核心价值与优势

OpenAPI 规范带来了多重价值,使其成为 API 开发领域的事实标准:

  1. 标准化:提供统一的标准描述格式,促进不同工具和平台之间的互操作性
  2. 自动化:支持自动生成文档、客户端代码、服务器存根和测试用例,大幅提升开发效率
  3. 协作优化:前后端团队可以基于统一的规范并行工作,减少沟通成本
  4. 质量保障:通过明确定义接口契约,早期发现设计问题,提高 API 质量
  5. 生态丰富:拥有庞大的工具生态系统,支持各种开发场景和需求

2. 规范核心结构与语法

文档基本结构

OpenAPI 文档由一系列结构化对象组成,这些对象以 JSON 或 YAML 格式组织。最基本的 OpenAPI 文档必须包含三个核心对象:OpenAPI 对象、Info 对象和 Paths 对象。

# 最小化的 OpenAPI 文档结构
openapi: 3.1.1  # 必需:规范版本
info:           # 必需:API 元数据title: Sample APIversion: 1.0.0
paths: {}       # 必需:API 端点定义

完整的 OpenAPI 文档包含以下主要部分:

OpenAPI Document
openapi
info
servers
paths
components
security
tags
externalDocs
title
description
version
contact
license
path items
operations
parameters
requestBody
responses
schemas
parameters
responses
examples
securitySchemes

信息对象(Info Object)详解

Info 对象提供 API 的元数据信息,包括标题、描述、版本、联系人信息等。这些信息对于 API 消费者了解 API 的基本情况和联系渠道非常重要。

info:title: Sample Pet Store APIdescription: |This is a sample server for a pet store.Learn how to use OpenAPI with our https://example.com/docs.termsOfService: https://example.com/terms/contact:name: API Supporturl: https://www.example.com/supportemail: support@example.comlicense:name: Apache 2.0url: https://www.apache.org/licenses/LICENSE-2.0.htmlversion: 1.0.0

路径对象(Paths Object)深度解析

Paths 对象是 OpenAPI 文档的核心,它定义了 API 的可用端点(URL 路径)以及每个端点支持的操作(HTTP 方法)。每个路径可以包含多个操作,如 GET、POST、PUT、DELETE 等。

paths:/pets:get:summary: List all petsdescription: Retrieve a list of all pets in the storeoperationId: listPetstags:- petsparameters:- name: limitin: querydescription: How many items to return at one time (max 100)required: falseschema:type: integerformat: int32responses:'200':description: A paged array of petscontent:application/json:schema:type: arrayitems:$ref: '#/components/schemas/Pet''500':description: Internal server errorcontent:application/json:schema:$ref: '#/components/schemas/Error'post:summary: Create a petoperationId: createPettags:- petsrequestBody:description: Pet object that needs to be added to the storerequired: truecontent:application/json:schema:$ref: '#/components/schemas/Pet'responses:'201':description: Createdcontent:application/json:schema:$ref: '#/components/schemas/Pet''400':description: Bad request

组件对象(Components Object)与复用机制

Components 对象是 OpenAPI 3.x 引入的重要特性,它允许将可重用的组件定义在统一的位置,然后通过 $ref 引用这些定义。这大大提高了文档的模块化和可维护性。

components:schemas:User:type: objectrequired:- id- name- emailproperties:id:type: integerformat: int64name:type: stringemail:type: stringformat: emailphone:type: stringError:type: objectrequired:- code- messageproperties:code:type: integerformat: int32message:type: stringparameters:LimitParam:name: limitin: querydescription: Number of items to returnrequired: falseschema:type: integerminimum: 1maximum: 100default: 10responses:NotFoundError:description: Resource not foundcontent:application/json:schema:$ref: '#/components/schemas/Error'example:code: 404message: Resource not foundsecuritySchemes:BearerAuth:type: httpscheme: bearerbearerFormat: JWT

服务器对象(Servers Object)配置

Servers 对象定义了 API 的服务器地址和基本路径,支持配置多个环境(如开发、测试、生产环境)。

servers:- url: https://development.example.com/v1description: Development server- url: https://staging.example.com/v1description: Staging server- url: https://api.example.com/v1description: Production servervariables:environment:default: apienum:- api- api.dev- api.stagingdescription: API environmentversion:default: '1'enum:- '1'- '2'description: API version

3. 高级特性与功能

参数定义与数据类型

OpenAPI 支持多种类型的参数,包括路径参数、查询参数、请求头参数和 Cookie 参数。每种参数都可以定义详细的数据类型、验证规则和描述信息。

paths:/users/{userId}:get:summary: Get user by IDparameters:- name: userIdin: pathrequired: truedescription: ID of the user to retrieveschema:type: integerformat: int64minimum: 1- name: fieldsin: queryrequired: falsedescription: Comma-separated list of fields to returnschema:type: string- name: Authorizationin: headerrequired: truedescription: Bearer token for authenticationschema:type: stringresponses:'200':description: Successful responsecontent:application/json:schema:$ref: '#/components/schemas/User'

请求体和响应定义

请求体(RequestBody)用于描述 POST、PUT、PATCH 等操作的输入数据,支持多种媒体类型和复杂数据结构。响应(Responses)对象则定义了各种可能的 HTTP 状态码对应的响应内容。

paths:/users:post:summary: Create a new userrequestBody:description: User object that needs to be createdrequired: truecontent:application/json:schema:$ref: '#/components/schemas/User'examples:example1:summary: Example of a new uservalue:name: John Doeemail: john.doe@example.comphone: "+1234567890"application/xml:schema:$ref: '#/components/schemas/User'responses:'201':description: User created successfullyheaders:Location:schema:type: stringdescription: URL of the created resourcecontent:application/json:schema:$ref: '#/components/schemas/User''400':description: Invalid inputcontent:application/json:schema:$ref: '#/components/schemas/Error''500':description: Internal server errorcontent:application/json:schema:$ref: '#/components/schemas/Error'

安全方案定义

OpenAPI 支持多种安全方案,包括 API 密钥、HTTP 认证、OAuth 2.0 和 OpenID Connect。这些安全方案可以在全局或操作级别定义。

components:securitySchemes:ApiKeyAuth:type: apiKeyin: headername: X-API-KeyBearerAuth:type: httpscheme: bearerbearerFormat: JWTOAuth2:type: oauth2flows:authorizationCode:authorizationUrl: https://example.com/oauth/authorizetokenUrl: https://example.com/oauth/tokenscopes:read: Grants read accesswrite: Grants write accessadmin: Grants admin access# 全局安全要求
security:- BearerAuth: []paths:/users:get:summary: Get all users# 覆盖全局安全要求security:- OAuth2:- read- adminresponses:'200':description: Successful response

回调与 Webhooks 支持

OpenAPI 3.x 引入了回调(Callbacks)支持,允许定义 API 作为 Webhook 提供者时的回调操作。这对于描述异步 API 和事件驱动架构非常有用。

paths:/webhooks:post:summary: Register a new webhookrequestBody:required: truecontent:application/json:schema:type: objectproperties:url:type: stringformat: uridescription: URL to send events toevents:type: arrayitems:type: stringdescription: Events to subscribe toresponses:'201':description: Webhook registered successfullycallbacks:# 回调名称是任意的,这里使用 eventCallbackeventCallback:'{$request.body#/url}':post:summary: Event notificationdescription: This endpoint receives event notificationsrequestBody:required: truecontent:application/json:schema:type: objectproperties:event:type: stringdata:type: objectresponses:'200':description: Event received successfully

使用 allOf 组合模式

allOf 关键字允许组合多个模式定义,这对于创建可复用的基础响应结构和扩展特定操作的响应非常有用。

components:schemas:BaseResponse:type: objectproperties:code:type: integerexample: 0message:type: stringexample: "success"requestId:type: stringexample: "12345"User:type: objectproperties:id:type: integername:type: stringemail:type: stringpaths:/users/{id}:get:summary: Get user by IDresponses:'200':description: Successful responsecontent:application/json:schema:allOf:- $ref: '#/components/schemas/BaseResponse'- type: objectproperties:data:$ref: '#/components/schemas/User'

示例响应:

{"code": 0,"message": "success","requestId": "12345","data": {"id": 123,"name": "John Doe","email": "john.doe@example.com"}
}

4. OpenAPI 工具生态系统

OpenAPI 拥有丰富的工具生态系统,支持从设计、开发到测试、文档的全生命周期管理。

编辑与验证工具

Swagger Editor:基于 Web 的编辑器,提供实时验证和预览功能。

VS Code 扩展:如 OpenAPI (Swagger) Editor,提供语法高亮、代码补全和验证功能。

Redocly CLI:命令行工具,用于 linting 和验证 OpenAPI 文档。

# 使用 Redocly CLI 验证 OpenAPI 文档
npx @redocly/openapi-cli lint openapi.yaml# 使用 Docker 运行 Swagger Editor
docker run -d -p 80:8080 swaggerapi/swagger-editor

文档生成工具

Swagger UI:交互式 API 文档生成器,支持在线测试 API 端点。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>API Documentation</title><link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5.9.0/swagger-ui.css" />
</head>
<body><div id="swagger-ui"></div><script src="https://unpkg.com/swagger-ui-dist@5.9.0/swagger-ui-bundle.js"></script><script>SwaggerUIBundle({url: './openapi.yaml', // 你的 OpenAPI 文件路径dom_id: '#swagger-ui',presets: [SwaggerUIBundle.presets.apis,SwaggerUIBundle.presets.standalone]});</script>
</body>
</html>

ReDoc:另一种文档生成器,专注于美观和可读性。

Stoplight Elements:现代化的文档组件,支持多种主题和自定义选项。

代码生成工具

OpenAPI Generator:支持多种编程语言的客户端和服务端代码生成。

# 安装 OpenAPI Generator
npm install @openapitools/openapi-generator-cli -g# 生成 TypeScript 客户端代码
openapi-generator generate -i openapi.yaml -g typescript-axios -o ./client# 生成 Spring Boot 服务端代码
openapi-generator generate -i openapi.yaml -g spring -o ./server \--additional-properties=basePackage=com.example,groupId=com.example,artifactId=api-server

Swagger Codegen:原始的代码生成工具,目前已被 OpenAPI Generator 取代。

测试与监控工具

Postman:支持导入 OpenAPI 规范进行 API 测试和监控。

Apifox:集 API 设计、开发、测试于一体的协作平台。

# Postman 集合生成配置示例
info:name: My API Collectiondescription: Generated from OpenAPI specschema: https://schema.getpostman.com/json/collection/v2.1.0/collection.json
variables:- id: baseUrlvalue: https://api.example.comtype: string
auth:type: bearerbearer:- key: tokenvalue: {{bearerToken}}type: string

5. 实战应用与最佳实践

从零开始创建 OpenAPI 文档

创建一个完整的 OpenAPI 文档需要遵循一定的步骤和最佳实践。以下是一个电商 API 的完整示例:

openapi: 3.1.0
info:title: E-Commerce APIdescription: API for an e-commerce platformversion: 1.0.0contact:name: API Teamemail: api@ecommerce.comlicense:name: MITurl: https://opensource.org/licenses/MIT
servers:- url: https://api.ecommerce.com/v1description: Production server- url: https://sandbox.ecommerce.com/v1description: Sandbox servertags:- name: Productsdescription: Product management- name: Ordersdescription: Order management- name: Usersdescription: User managementpaths:/products:get:tags:- Productssummary: Get product listdescription: Retrieve a paginated list of productsparameters:- $ref: '#/components/parameters/PageParam'- $ref: '#/components/parameters/LimitParam'- name: categoryin: querydescription: Filter by categoryrequired: falseschema:type: stringresponses:'200':description: Successful responsecontent:application/json:schema:$ref: '#/components/schemas/ProductListResponse''500':$ref: '#/components/responses/InternalError'/products/{id}:get:tags:- Productssummary: Get product by IDparameters:- name: idin: pathrequired: trueschema:type: stringdescription: Product IDresponses:'200':description: Successful responsecontent:application/json:schema:$ref: '#/components/schemas/ProductDetailResponse''404':$ref: '#/components/responses/NotFoundError'components:parameters:PageParam:name: pagein: querydescription: Page numberrequired: falseschema:type: integerminimum: 1default: 1LimitParam:name: limitin: querydescription: Items per pagerequired: falseschema:type: integerminimum: 1maximum: 100default: 20schemas:Product:type: objectrequired:- id- name- priceproperties:id:type: stringname:type: stringdescription:type: stringprice:type: numberformat: floatminimum: 0category:type: stringstock:type: integerminimum: 0ProductListResponse:type: objectproperties:data:type: arrayitems:$ref: '#/components/schemas/Product'pagination:$ref: '#/components/schemas/Pagination'ProductDetailResponse:type: objectproperties:data:$ref: '#/components/schemas/Product'Pagination:type: objectproperties:page:type: integerlimit:type: integertotal:type: integerpages:type: integerresponses:NotFoundError:description: Resource not foundcontent:application/json:schema:$ref: '#/components/schemas/Error'example:code: 404message: Resource not foundInternalError:description: Internal server errorcontent:application/json:schema:$ref: '#/components/schemas/Error'example:code: 500message: Internal server errorsecuritySchemes:BearerAuth:type: httpscheme: bearerbearerFormat: JWTsecurity:- BearerAuth: []

前后端协作工作流

采用 OpenAPI 规范可以显著改善前后端协作效率。以下是推荐的工作流程:

业务分析师后端开发前端开发测试工程师ALL提供业务需求设计API契约(OpenAPI)共享OpenAPI文档生成客户端代码/Mock数据并行开发前端并行开发后端提供反馈和建议调整API设计交付完整API基于OpenAPI进行自动化测试反馈测试结果修复问题API交付上线业务分析师后端开发前端开发测试工程师ALL

版本管理与迭代策略

API 版本管理是长期维护的关键。以下是推荐的版本策略:

  1. URI 版本控制:在 URL 中包含版本号(如 /v1/users
  2. 语义化版本:遵循主版本.次版本.修订号模式
  3. 向后兼容:尽可能保持向后兼容,避免破坏性变更
  4. 弃用策略:明确标记弃用的端点,提供迁移指南
# 版本管理示例
info:title: My APIversion: 2.1.0  # 语义化版本description: |## Deprecation NoticeThe following endpoints will be deprecated in v3.0:- GET /v1/old-endpoint - Use GET /v2/new-endpoint insteadservers:- url: https://api.example.com/v2description: Current version- url: https://api.example.com/v1description: Previous version (deprecated)paths:/v1/old-endpoint:get:deprecated: true  # 标记为弃用summary: Old endpoint (deprecated)description: This endpoint is deprecated. Use /v2/new-endpoint instead.responses:'200':description: OK/v2/new-endpoint:get:summary: New endpointresponses:'200':description: OK

常见问题与解决方案

问题1:文档与实现不一致
解决方案:将 OpenAPI 文档作为唯一可信源,通过自动化工具确保代码与文档同步。

问题2:复杂数据模型难以描述
解决方案:充分利用 $ref 和组件复用,分解复杂模型为可重用组件。

问题3:安全性配置复杂
解决方案:使用标准安全方案,并在组件中统一定义。

# 安全配置最佳实践
components:securitySchemes:ApiKeyAuth:type: apiKeyin: headername: X-API-KeyBearerAuth:type: httpscheme: bearerbearerFormat: JWTOAuth2:type: oauth2flows:clientCredentials:tokenUrl: https://api.example.com/oauth/tokenscopes:read: Read accesswrite: Write access# 全局安全要求
security:- BearerAuth: []# 操作级别覆盖
paths:/public/data:get:security: []  # 不需要认证responses:'200':description: OK/secure/data:get:security:- OAuth2: [read]  # 需要OAuth2和read权限responses:'200':description: OK

6. 迁移与升级指南

从 Swagger 2.0 到 OpenAPI 3.x

迁移到 OpenAPI 3.x 带来了许多改进,但也需要一些调整。主要变化包括:

  1. 结构重组hostbasePathschemesservers 对象替代
  2. 组件复用:引入 components 对象替代原有的定义位置
  3. 请求体增强:支持多个媒体类型和更丰富的请求体定义
  4. 安全性增强:更详细的安全方案定义
# Swagger 2.0
swagger: "2.0"
host: "api.example.com"
basePath: "/v1"
schemes:- "https"
paths:/users:get:parameters:- in: "body"name: "body"schema:$ref: "#/definitions/User"
definitions:User:type: "object"properties:name:type: "string"# OpenAPI 3.0等效
openapi: 3.0.0
servers:- url: https://api.example.com/v1
paths:/users:get:parameters:- in: queryname: "name"schema:type: stringrequestBody:  # 请求体现在更明确content:application/json:schema:$ref: "#/components/schemas/User"
components:schemas:User:type: objectproperties:name:type: string

常见迁移挑战与解决

挑战1:工具链兼容性
解决方案:逐步迁移,先确保新版本工具支持,再逐步更新文档格式。

挑战2:复杂数据模型迁移
解决方案:使用自动化迁移工具,如 Swagger Converter,然后手动验证和调整。

挑战3:团队学习曲线
解决方案:提供培训和工作坊,创建迁移指南和最佳实践文档。

工具链更新与适配

不同工具对 OpenAPI 版本的支持情况不同:

quadrantCharttitle OpenAPI 工具支持矩阵x-axis "低兼容性" --> "高兼容性"y-axis "旧版本工具" --> "新版本工具""Swagger UI": [0.8, 0.3]"Swagger Editor": [0.7, 0.4]"OpenAPI Generator": [0.9, 0.8]"Stoplight Elements": [0.95, 0.9]"Redocly": [0.92, 0.85]"Apifox": [0.88, 0.75]

7. 未来发展与趋势

OpenAPI 规范的发展方向

OpenAPI 规范持续演进,未来的发展方向包括:

  1. 更强大的模式支持:完全兼容 JSON Schema 2020-12
  2. 异步API支持:更好地描述 Webhooks 和异步操作
  3. GraphQL 集成:探索与 GraphQL 的协作方式
  4. AI 辅助设计:利用 AI 技术辅助 API 设计和优化

行业采纳与最佳实践

OpenAPI 规范已成为 RESTful API 描述的事实标准,超过 70% 的 API 项目在使用 OpenAPI 规范。行业最佳实践包括:

  1. API 优先设计:先定义 API 契约,再实现代码
  2. 自动化流水线:将 OpenAPI 集成到 CI/CD 流水线中
  3. 治理与合规:基于 OpenAPI 实施 API 治理和安全合规检查

与其他技术的整合

OpenAPI 正在与更多技术栈整合:

  1. 云原生生态:与 Kubernetes、Istio 等云原生技术深度集成
  2. 低代码平台:作为低代码平台的 API 连接标准
  3. 数据网格:在数据网格架构中作为数据产品接口的标准描述

结论

OpenAPI 规范已经成为现代 API 开发的核心基础设施,它通过标准化、机器可读的 API 描述方式,极大地提升了 API 设计、开发、测试和维护的效率。通过本文的全面介绍,您应该已经掌握了 OpenAPI 规范的核心概念、实践技巧和最佳实践。

随着 API 经济的不断发展,OpenAPI 规范的重要性将进一步提升。作为开发者、架构师或技术决策者,深入理解和应用 OpenAPI 规范将帮助您构建更加健壮、可维护和可扩展的 API 系统。

无论您是刚刚开始接触 OpenAPI,还是已经有一定经验,持续学习和实践都将带来显著的技术和业务价值。建议从实际项目开始,逐步应用 OpenAPI 规范,体验它带来的各种好处。

参考资料

  1. OpenAPI 规范官方文档
  2. OpenAPI Initiative
  3. Swagger 官方文档
  4. OpenAPI 工具列表
  5. API 设计指南

注意:本文基于 OpenAPI 3.1.1 规范编写,内容更新至 2025 年 9 月。随着规范的发展,部分内容可能会有更新,建议始终参考官方文档获取最新信息。

http://www.dtcms.com/a/388887.html

相关文章:

  • 基于 AForge.NET 的 C# 人脸识别
  • SQLite与ORM技术解析
  • vue动态时间轴:交互式播放与进度控制
  • Java I/O三剑客:BIO vs NIO vs AIO 终极对决
  • AI 在视频会议防诈骗方面的应用
  • nest.js集成服务端渲染(SSR)
  • AI如何“听懂人话”?从语音识别到语义理解的最后一公里
  • 鸿蒙:Preferences持久化实现方案
  • 常温超导新突破!NixCu-O7材料设计引领能源革命(续)
  • 常温超导新突破!NixCu-O7材料设计引领能源革命
  • C++,C#,Rust,Go,Java,Python,JavaScript的性能对比
  • 《从崩溃到精通:C++ 内存管理避坑指南,详解自定义类型 new/delete 调用构造 / 析构的关键逻辑》
  • 鸿蒙:父组件调用子组件的三种方案
  • AppTest邀请测试 -邀请用户
  • 从零开始的云计算生活——第六十五天,鹏程万里,虚拟化技术
  • Java 开发指南:将 PDF 转换为多种图片格式
  • 【C++革命】董翔箭头函数库(xiang_arrow):在main函数里定义函数的终极方案
  • Ubuntu显示No operation system found
  • 【深度学习新浪潮】音频大模型方面有哪些最新的研究进展?
  • 第3节 创建视频素材时间线到剪映(Coze扣子空间剪映小助手零基础教程)
  • Unifi AP 网络路由取消使用 无线 Meshing
  • 计算机网络基础(四) --- TCP/IP网络结构(网络层) (上)
  • AR巡检与区块链融合:工业智能化的新引擎
  • Product Hunt 每日热榜 | 2025-09-18
  • WPF 字符竖向排列的排版格式(直排)显示控件
  • 多色零件自动化分拣与追溯系统案例和项目落地全计划
  • 自动化面试常见问题(英文版)
  • Kettle Carte 服务实战:从作业提交到日志监控全流程自动化(附 Shell 脚本)
  • 【数字展厅】数字科技展厅是怎么建设沉浸式体验的?
  • 2025网安周|美创科技多地联动,共筑数据安全防线