swagger,showdoc,apifox,Mock 服务,dubbo,ZooKeeper和dubbo的关系

Swagger、ShowDoc 和 Apifox 之间的区别与优势

Swagger、ShowDoc 和 Apifox 都是用于 API 文档管理和测试的工具,但它们各有特色和适用场景。以下是详细的比较,并附上每个工具的具体用法示例。

1. Swagger

特点与优势:

  • 广泛采用:
    • Swagger 是最流行的 API 文档生成和测试框架之一,拥有庞大的社区支持和丰富的插件生态系统。
  • 标准规范:
    • 基于 OpenAPI 规范(以前称为 Swagger 规范),确保了与多种工具和服务的良好兼容性。
  • 自动化文档生成:
    • 支持从代码注释中自动生成 API 文档,减少了手动编写文档的工作量。
  • 强大的 UI 工具:
    • 提供了交互式的 Swagger UI,用户可以直接在浏览器中查看 API 文档并进行调用测试。
  • 多语言支持:
    • 支持多种编程语言和框架,方便不同技术栈的团队使用。

用法示例:

假设我们有一个简单的 RESTful API /api/books,它允许获取书籍列表。我们将展示如何使用 Swagger 来定义和测试这个 API。

  1. 定义 API (YAML 格式):

    openapi: 3.0.0
    info:title: Bookstore APIversion: 1.0.0
    paths:/api/books:get:summary: 获取书籍列表parameters:- in: queryname: pageschema:type: integerdefault: 1description: 当前页码- in: queryname: pageSizeschema:type: integerdefault: 10description: 每页显示的书籍数量responses:'200':description: 成功响应content:application/json:schema:type: objectproperties:total:type: integerbooks:type: arrayitems:type: objectproperties:id:type: integertitle:type: stringauthor:type: string
    
  2. 使用 Swagger UI 测试 API:

    • 将上述 YAML 文件上传到 Swagger Editor 或者集成到项目中。
    • 在 Swagger UI 中,你可以直接点击“Try it out”按钮来测试 API,查看请求和响应。
2. ShowDoc

特点与优势:

  • 简单易用:
    • 用户界面友好,容易上手,特别适合中小型企业或个人开发者。
  • 实时协作:
    • 支持多人同时编辑同一个项目,所有更改都会实时同步,极大提高了团队协作效率。
  • 内置 Mock 服务:
    • 内置 Mock 服务器,允许前端开发人员在后端接口未完成前进行 UI 开发。
  • 开放 API:
    • 提供了 RESTful API 接口,使得外部系统可以通过 API 自动化地与 ShowDoc 进行交互。
  • 免费开源:
    • 完全开源且免费,降低了使用门槛。

用法示例:

假设我们要为一个在线书店应用创建一个获取书籍列表的 API /api/books。我们将展示如何使用 ShowDoc 来管理和维护这个 API。

  1. 安装 ShowDoc:

    • 如果你还没有安装 ShowDoc,可以通过 Docker 或者直接在服务器上安装。
    • 使用 Docker 安装:
      docker pull showdoc/showdoc:latest
      docker run --name showdoc -p 80:80 showdoc/showdoc
      
    • 访问 http://localhost(如果你是在本地运行),或者访问你的服务器 IP 地址。
  2. 创建项目:

    • 登录后进入 ShowDoc 控制台首页。
    • 点击页面右上角的“新建项目”按钮。
    • 输入项目名称为“Online Bookstore API”,然后点击“创建”。
  3. 添加 API 文档:

    • 在项目主页左侧菜单中选择“接口文档”。
    • 点击右上角的“添加接口”按钮。
    • 基本信息:
      • 接口名称: 获取书籍列表
      • URL: /api/books
      • 请求方式: GET
      • 描述: 获取所有书籍列表
      • 标签: “Books”
    • 请求参数:
      • 分页参数:
        • 名称: page
        • 类型: integer
        • 必填: 是
        • 描述: 当前页码,默认值为 1
      • 每页数量参数:
        • 名称: pageSize
        • 类型: integer
        • 必填: 否
        • 描述: 每页显示的书籍数量,默认值为 10
    • 响应体:
      • 成功响应 (200 OK):
        {"total": 100, // 总记录数"books": [{"id": 1,"title": "Effective Java","author": "Joshua Bloch"},{"id": 2,"title": "Clean Code","author": "Robert C. Martin"}]
        }
        
  4. 添加 Mock 数据:

    • 在接口编辑页面中,切换到“Mock 数据”选项卡。
    • 点击“开启 Mock”按钮,启用 Mock 功能。
    • 设置默认的 Mock 规则或自定义规则。
    • 示例:
      • 设置 Mock 响应时间为 500ms,状态码为 200 OK。
      • 自定义 Mock 规则以返回固定数量的书籍条目(例如,总是返回 2 条记录)。
3. Apifox

特点与优势:

  • 一站式解决方案:
    • 不仅提供 API 文档管理,还集成了 Mock 服务、自动化测试等功能,形成了一个完整的 API 生命周期管理平台。
  • 高效的团队协作:
    • 强大的权限管理系统和版本控制功能,便于团队成员之间的高效协作。
  • 智能解析和导入:
    • 支持从 Postman、Swagger 等格式的文件中智能解析 API 定义,并可以一键导入到 Apifox 中。
  • 丰富的插件库:
    • 拥有丰富的插件市场,用户可以根据需求安装各种插件来扩展平台的功能。
  • 详尽的统计分析:
    • 提供详细的 API 调用统计和性能分析,帮助开发者优化 API 性能。

用法示例:

假设我们要为一个在线书店应用创建一个获取书籍列表的 API /api/books。我们将展示如何使用 Apifox 来管理和维护这个 API。

  1. 注册并登录 Apifox:

    • 访问 Apifox 官网 并注册一个账号。
    • 登录后进入仪表板,开始探索可用的功能和服务。
  2. 创建 API 项目:

    • 在仪表板中点击“创建项目”按钮。
    • 输入项目名称为“Online Bookstore API”,然后点击“创建”。
  3. 添加 API 文档:

    • 在项目主页左侧菜单中选择“接口文档”。
    • 点击右上角的“添加接口”按钮。
    • 基本信息:
      • 接口名称: 获取书籍列表
      • URL: /api/books
      • 请求方式: GET
      • 描述: 获取所有书籍列表
      • 标签: “Books”
    • 请求参数:
      • 分页参数:
        • 名称: page
        • 类型: integer
        • 必填: 是
        • 描述: 当前页码,默认值为 1
      • 每页数量参数:
        • 名称: pageSize
        • 类型: integer
        • 必填: 否
        • 描述: 每页显示的书籍数量,默认值为 10
    • 响应体:
      • 成功响应 (200 OK):
        {"total": 100, // 总记录数"books": [{"id": 1,"title": "Effective Java","author": "Joshua Bloch"},{"id": 2,"title": "Clean Code","author": "Robert C. Martin"}]
        }
        
  4. 添加 Mock 数据:

    • 在接口编辑页面中,切换到“Mock 数据”选项卡。
    • 点击“开启 Mock”按钮,启用 Mock 功能。
    • 设置默认的 Mock 规则或自定义规则。
    • 示例:
      • 设置 Mock 响应时间为 500ms,状态码为 200 OK。
      • 自定义 Mock 规则以返回固定数量的书籍条目(例如,总是返回 2 条记录)。
  5. 编写测试用例:

    • 切换到“调试”选项卡,你可以在这里进行简单的调试和测试。
    • 测试用例 1: 请求第一页书籍列表,期望返回前 10 条记录。
      • 请求配置:
        • URL: /api/books?page=1&pageSize=10
        • HTTP 方法: GET
      • 断言:
        • 响应状态码为 200
        • JSONPath 断言:$.books.length == 10
    • 测试用例 2: 请求第二页书籍列表,期望返回接下来的 10 条记录。
      • 请求配置:
        • URL: /api/books?page=2&pageSize=10
        • HTTP 方法: GET
      • 断言:
        • 响应状态码为 200
        • JSONPath 断言:$.books.length == 10
        • JSONPath 断言:$.books[0].id > 10 (确保是第二页的数据)
  6. 分享和协作:

    • 分享文档链接给前端开发者:
      • 将生成的文档 URL 分享给前端团队,以便他们在没有真实后端接口的情况下进行 UI 开发。
    • 邀请团队成员加入项目:
      • 邀请其他开发人员、测试工程师等加入项目,共同维护 API 文档和测试用例。
  7. 监控和优化:

    • 使用 Apifox 提供的统计分析工具,监控 API 的调用情况,了解性能瓶颈。
    • 根据反馈不断优化 API 设计和实现,确保其稳定性和高效性。

总结

  • 选择 Swagger 如果你需要一个高度标准化、广泛支持并且能够与现有 CI/CD 流程无缝集成的工具,特别是在大型企业环境中。
  • 选择 ShowDoc 如果你追求简单易用、低成本甚至免费的解决方案,并且希望快速搭建起 API 文档管理系统,尤其是对于小型团队或个人开发者。
  • 选择 Apifox 如果你正在寻找一个全面而专业的 API 管理平台,它不仅涵盖了文档管理,还包括 Mock 服务、自动化测试等附加功能,非常适合那些需要一站式解决方案的团队。

根据你的具体需求和技术背景,可以选择最适合自己的工具。每个工具都有其独特的优势,在不同的应用场景下都能发挥重要作用。

Mock 服务是一种在软件开发和测试过程中用于模拟真实服务行为的技术或工具。它允许开发者创建一个模拟的服务实例,这个实例可以模仿实际服务的响应,但不需要依赖于实际的服务实现。Mock 服务主要用于以下几种场景:

主要用途

  1. 加速开发:

    • 在前后端分离开发中,前端团队可以在后端 API 尚未完成时使用 Mock 服务来模拟 API 响应,从而继续进行页面和功能的开发。
  2. 提高测试效率:

    • 单元测试和集成测试中,Mock 服务可以帮助隔离被测代码与外部依赖,确保测试环境的稳定性和可控性。通过 Mock 服务,可以快速地为不同的测试场景配置相应的输入输出数据,而无需每次调用真实的外部服务。
  3. 减少对外部系统的依赖:

    • 当某些外部系统不可用、不稳定或者难以配置时(例如第三方支付网关),可以通过 Mock 服务提供一致的响应,保证开发和测试工作的连续性。
  4. 容错机制:

    • 在微服务架构中,如 Dubbo 中的 Mock 服务,当服务提供者暂时不可用时,消费者可以调用预定义的 Mock 服务来返回默认数据,避免整个应用程序因为单个服务故障而崩溃。

Mock 服务的工作原理

  • 模拟请求和响应: Mock 服务通常会根据预先设定的规则生成特定格式的数据作为响应,这些规则可以是静态的 JSON 文件、动态生成的数据结构或者是基于某种模式随机生成的数据。

  • 拦截请求: 对于 Web 应用来说,Mock 服务可以通过 HTTP 请求拦截器来捕获并处理来自客户端的请求,然后直接返回模拟的数据,而不是将请求转发给真正的服务器。

  • 环境独立性: Mock 服务可以在开发环境中独立运行,不需要依赖任何外部的真实服务。这使得开发人员可以在本地快速迭代,而不会受到网络延迟或其他因素的影响。

使用方式

  1. 现成的 Mock Server:

    • 可以使用像 MockServer 或 Apifox 这样的工具搭建独立的 Mock 服务,所有接口都会指向该 Mock 服务。这种方式对业务代码完全不具有侵入性,并且通用性强,适合大型项目或团队协作。
  2. 代码中的 Mock 实现:

    • 在单元测试或集成测试中,可以直接在代码里编写 Mock 逻辑,比如使用 Java 的 Mockito 库来模拟对象的行为。这种方式的好处是在代码内部就可以完成 Mock,主要适用于简单的测试场景。
  3. 代理工具:

    • 利用 Fiddler 或 Charles 等代理工具对网络请求进行拦截,并将其替换为自定义的 Mock 数据。这种方法操作相对简单,但对于复杂的项目管理可能不够灵活。
  4. 框架内置支持:

    • 某些框架(如 Spring Boot)提供了内置的支持来轻松启用 Mock 功能,简化了配置过程。

示例:Dubbo 中的 Mock 服务

在 Dubbo 中,Mock 服务可以通过 XML 配置、注解或属性文件配置来启用。例如:

<!-- XML 配置 -->
<dubbo:service interface="com.example.MyService" mock="true" />
// 注解配置
@Service(mock = "true")
public class MyServiceImpl implements MyService {// ...
}
# 属性文件配置
dubbo.service.my-service.mock=true

此外,还可以指定具体的 Mock 实现类:

<!-- XML 配置 -->
<dubbo:service interface="com.example.MyService" mock="com.example.MyMockService" />
// 注解配置
@Service(mock = "com.example.MyMockService")
public class MyServiceImpl implements MyService {// ...
}

总之,Mock 服务作为一种有效的工具和技术手段,在现代软件开发和测试实践中扮演着重要角色,有助于提升开发效率、增强测试覆盖率以及降低对外部系统的依赖。

Dubbo 是由阿里巴巴开源的一款高性能的 Java RPC(远程过程调用)框架,主要用于构建分布式服务架构。它提供了诸如服务发现、负载均衡、容错处理等功能,使得开发者可以更轻松地构建和管理大规模微服务应用。以下是关于 Dubbo 的详细解释以及一个简单的例子。

Dubbo 核心特性

1. 透明化的远程方法调用
  • Dubbo 提供了一种类似于本地方法调用的方式来调用远程服务,开发者无需关心底层的网络通信细节。通过代理模式,客户端可以直接像调用本地对象一样调用远程的服务接口。
2. 智能路由与负载均衡
  • 支持多种负载均衡策略(如随机、轮询、最少活跃调用数等),可以根据实际需求选择最适合的方式分配请求到不同的服务提供者,从而提高系统的可用性和性能。
3. 自动服务注册与发现
  • 使用注册中心(如 ZooKeeper、Nacos 等)来管理和维护服务提供者的地址信息。当消费者需要调用某个服务时,它会从注册中心获取最新的服务列表,并根据配置进行调用。
4. 动态配置和服务治理
  • 可以通过配置中心动态调整服务的参数和行为,例如修改超时时间、切换版本等,而不需要重启应用程序。此外,还支持灰度发布、流量控制等高级功能。
5. 集群容错机制
  • 内置了丰富的容错机制,如失败重试、熔断器模式等,确保即使部分节点不可用,整个系统仍然能够正常工作。
6. 监控和统计
  • 提供了详细的监控数据,包括 QPS(每秒查询率)、响应时间、错误率等,帮助运维人员及时发现问题并采取措施。

示例:构建一个简单的 Dubbo 应用

假设我们要创建一个简单的图书管理系统,其中包含两个模块:

  • BookService:负责提供书籍相关的业务逻辑。
  • BookClient:作为消费者,调用 BookService 来获取书籍信息。
1. 引入依赖

首先,在 pom.xml 中添加 Dubbo 和相关组件的依赖:

<dependencies><!-- Dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>2.7.8</version></dependency><!-- Zookeeper client for registry --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency>
</dependencies>
2. 定义服务接口

创建一个名为 BookService.java 的接口文件,定义书籍相关的操作:

package com.example;public interface BookService {String getBookById(int id);
}
3. 实现服务端 (Provider)

编写 BookServiceImpl.java 文件实现上述接口,并标记为 Dubbo 服务提供者:

package com.example;import org.apache.dubbo.config.annotation.DubboService;@DubboService(version = "1.0.0")
public class BookServiceImpl implements BookService {@Overridepublic String getBookById(int id) {// 这里只是一个简单的示例,实际应用中应该连接数据库或其他数据源return "Book ID: " + id;}
}

配置服务提供者的 application.properties 文件:

# dubbo configuration
dubbo.application.name=book-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
4. 编写客户端 (Consumer)

在客户端项目中引入相同的接口包,并编写 BookClient.java 文件来调用远程服务:

package com.example;import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component;@Component
public class BookClient {@DubboReference(version = "1.0.0")private BookService bookService;public void printBookInfo(int id) {System.out.println(bookService.getBookById(id));}
}

配置客户端的 application.properties 文件:

# dubbo configuration
dubbo.application.name=book-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
5. 启动服务

启动 ZooKeeper 服务器,然后分别启动服务提供者和消费者应用。此时,消费者可以通过 Dubbo 调用远程的服务提供者,就像调用本地方法一样简单。

总结

通过这个简单的例子,我们可以看到 Dubbo 如何简化了分布式服务之间的交互。它隐藏了复杂的网络通信细节,让开发者专注于业务逻辑的实现。同时,Dubbo 提供的一系列特性(如负载均衡、服务发现等)也为构建可靠且高效的微服务架构打下了坚实的基础。

ZooKeeper和dubbo的关系

ZooKeeper 和 Dubbo 之间的关系主要体现在服务注册与发现上。Dubbo 是一个高性能的 Java RPC 框架,而 ZooKeeper 是一个分布式协调服务,常被用作 Dubbo 的注册中心。以下是它们之间关系的详细解释:

1. 服务注册与发现

  • 服务提供者:当服务提供者启动时,它会向 ZooKeeper 注册自己提供的服务信息(如服务名、IP 地址和端口等)。这些信息会被存储在 ZooKeeper 中特定的节点下,通常是以 /dubbo/${serviceName}/providers 这样的路径结构。

  • 服务消费者:服务消费者在启动时会订阅 ZooKeeper 上对应的服务节点,一旦有新的服务提供者上线或下线,ZooKeeper 就会通知所有订阅了该服务的消费者,从而保证消费者始终拥有最新的服务列表。

2. 动态配置管理

  • 使用 ZooKeeper 作为配置中心,可以实现配置的集中管理和动态更新。例如,可以通过修改 ZooKeeper 中的配置来调整服务的参数(如超时时间),而无需重启应用程序。

3. 负载均衡

  • 虽然负载均衡策略本身是由 Dubbo 实现的,但通过 ZooKeeper 可以轻松获取当前所有可用的服务实例,使得 Dubbo 能够根据预设的算法选择最合适的服务提供者进行调用。

4. 集群容错

  • ZooKeeper 提供了高可用性和数据一致性保障,即使某个 ZooKeeper 节点出现故障,其他节点仍然可以继续工作。这确保了即使在网络分区的情况下,Dubbo 应用也能正常运行,并且能够自动恢复对失效节点的访问。

5. 命名服务

  • ZooKeeper 的层次化命名空间非常适合用来维护全局的服务地址列表。每个服务可以在 ZooKeeper 上创建唯一的路径,并将自身的 URL 地址写入到相应的节点中完成服务发布。

6. 事件驱动架构

  • ZooKeeper 支持 Watcher 机制,允许客户端监听特定节点的变化。对于 Dubbo 来说,这意味着它可以实时感知服务提供者的上下线情况,并据此做出相应的处理(比如重新路由请求)。

7. Mastership选举

  • 在某些情况下,Dubbo 集群可能需要选出一个主节点来进行特定的操作(例如调度任务)。ZooKeeper 提供了简单的 Master 选举功能,可以帮助 Dubbo 完成这一过程。

总结

综上所述,ZooKeeper 和 Dubbo 的结合为构建可靠的分布式系统提供了强大的支持。ZooKeeper 不仅充当了 Dubbo 的注册中心,还提供了配置管理、负载均衡、集群容错等功能,极大地简化了微服务架构中的服务治理问题。此外,由于 ZooKeeper 具备良好的扩展性和可靠性,因此成为了很多分布式应用和服务框架(不仅仅是 Dubbo)首选的注册中心解决方案之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边沿检测电路漏检原因分析

边沿检测电路漏检原因分析 常用结构如下&#xff1a; module edge_detect1( input clk, input signal, output pe, //上升沿 output ne, //下降沿 output de //双边沿 );reg reg1;always(posedge clk) beginreg1 < signal; endassign pe (~reg1) & signal; assign…

嵌入式硬件杂谈(七)IGBT MOS管 三极管应用场景与区别

引言&#xff1a;在现代嵌入式硬件设计中&#xff0c;开关元件作为电路中的重要组成部分&#xff0c;起着至关重要的作用。三种主要的开关元件——IGBT&#xff08;绝缘栅双极型晶体管&#xff09;、MOSFET&#xff08;金属氧化物半导体场效应晶体管&#xff09;和三极管&#…

鸿蒙开发:了解正则表达式

前言 从给出的文本中&#xff0c;按照既定的相关规则&#xff0c;匹配出符合的数据&#xff0c;其中的规则就是正则表达式&#xff0c;使用正则表达式&#xff0c;可以使得我们用简洁的代码就能实现一定复杂的逻辑&#xff0c;比如判断一个邮箱账号是否符合正常的邮箱账号&…

Kafka的acks机制和ISR列表

Kafka 是一个流行的分布式流处理平台&#xff0c;用于构建实时数据流管道和应用程序。在 Kafka 中&#xff0c;acks 机制和 ISR&#xff08;In-Sync Replicas&#xff09;列表是两个重要的概念&#xff0c;它们共同确保消息的持久性和可靠性。 acks 机制 acks 机制是 Kafka 生…

在 Ubuntu 下通过 Docker 部署 Caddy 服务器

嘿&#xff0c;伙伴们&#xff01;今天我们来聊聊如何在 Ubuntu 系统下通过 Docker 部署 Caddy 服务器。Caddy 是一个现代的 Web 服务器&#xff0c;支持自动 HTTPS&#xff0c;简单易用&#xff0c;特别适合快速搭建网站。而 Docker 则是一个让你可以隔离和管理应用的神器。结…

计算机网络•自顶向下方法:网络层介绍、路由器的组成

网络层介绍 网络层服务&#xff1a;网络层为传输层提供主机到主机的通信服务 每一台主机和路由器都运行网络层协议 发送终端&#xff1a;将传输层报文段封装到网络层分组中&#xff0c;发送给边缘路由器路由器&#xff1a;将分组从输入链路转发到输出链路接收终端&#xff1…

Linux top指令

top指令概述 top 是 Linux 系统中用于实时监控系统性能和进程信息的命令&#xff0c;功能强大且灵活。它提供了系统资源的动态视图&#xff0c;包括 CPU、内存、运行中的进程等。 这个指令可以说是Linux中最基本的工具了&#xff0c;用来监视系统的实时运行状态&#xff0c;类…

Qt监控系统放大招/历经十几年迭代完善/多屏幕辅屏预览/多层级设备树/网络登录和回放

一、前言说明 近期对视频监控系统做了比较大的更新升级&#xff0c;主要就是三点&#xff0c;第一点就是增加了辅屏预览&#xff0c;这个也是好多个客户需要的功能&#xff0c;海康的iVMS-4200客户端就有这个功能&#xff0c;方便在多个屏幕打开不同的视频进行查看&#xff0c…

网络原理(六): UDP 协议

目录 1. UDP 协议 1.1 协议特点 1.2 协议报文格式 1.2.1 UDP 长度 1.2.2 校验和 1. UDP 协议 在进行网络编程时, 我们已经对 UDP 协议进行了简单了解. 并且应用层的很多操作, 需要调用传输层的提供的接口, 基于 socket api 来进行完成的. 1.1 协议特点 UDP 协议具有以…

前端页面展示本电脑的摄像头,并使用js获取摄像头列表

可以通过 JavaScript 使用 navigator.mediaDevices.enumerateDevices() 获取电脑上的摄像头列表。以下是一个示例代码&#xff0c;可以展示摄像头列表并选择进行预览。 HTML JavaScript 实现摄像头列表展示和预览 <!DOCTYPE html> <html lang"zh-CN">…

【漫话机器学习系列】028.CP

Mallows’ Cp&#xff1a;标准化公式解析与应用 Mallows’ Cp 是一种常用的模型选择工具&#xff0c;用于在一系列候选模型中权衡拟合度和复杂性&#xff0c;帮助我们选择性能最优的模型。本文将基于其标准化公式展开详细解析&#xff0c;并探讨其应用场景、实现方法、优点与局…

期末算法分析程序填空题

目录 5-1 最小生成树&#xff08;普里姆算法&#xff09; 5-2 快速排序&#xff08;分治法&#xff09; 输入样例&#xff1a; 输出样例&#xff1a; 5-3 归并排序(递归法) 输入样例&#xff1a; 输出样例&#xff1a; 5-4 求解编辑距离问题&#xff08;动态规划法&#xff09;…

深入解析 Conda 安装的默认依赖包及其作用:conda create安装了哪些包(中英双语)

深入解析 Conda 安装的默认依赖包及其作用 当我们使用 Conda 创建新环境时&#xff0c;例如执行命令&#xff1a; conda create -n olmes python3.10Conda 会自动为我们安装一系列基础依赖包&#xff0c;保证 Python 环境能够正常运行。这些包不仅是我们开发的基础工具&#…

Mac、Linux命令

Linux 查本机IP&#xff1a;ip addr 查询文件里符合条件的字符串&#xff1a;grep Mac 查本机IP&#xff1a;ipconfig

Visual Studio 中增加的AI功能

前言&#xff1a; 人工智能的发展&#xff0c;在现在&#xff0c;编程技术的IDE里面也融合了AI的基本操做。本例&#xff0c;以微软的Visual Studio中的人工智能的功能介绍例子。 本例的环境&#xff1a; Visual Studio 17.12 1 AI 智能变量检测&#xff1a; 上图展示了一…

江科大学习笔记之——HAL库点亮一个LED灯

HAL三步走&#xff1a;1.建工程。2.设配置。3.写代码 一.建立工程 HAL库写法 点击FinIsh 2.配置时钟 2 、设置配置参数 把模块.C.h单独设置文件 生产代码 三写代码 控制GPIO就三步 1.RCC时钟使能 2.结构体配置GPIO寄存器 3.控制GPIO值 上面的步骤已经把前两步的配置完成了接下…

Spring MVC (下)小项目实战

1. 加法计算器 需求分析: 客户端输入俩个数,服务端进行相加然后返回结果. 约定前后端交互接口: 接口的概念: 接口⼜叫API&#xff08;ApplicationProgrammingInterface),我们⼀般讲到 接口或者API&#xff0c;指的都是同⼀个东西.是指应⽤程序对外提供的服务的描述,⽤于交换信…

在K8S中,如何查看Pod状态的详情?事件显示cpu不足如何处理?

在Kubernetes中&#xff0c;查看Pod状态的详细通常设计使用kubectl命令行工具&#xff0c;这是kubernetes提供的一个强大的管理工具。以下是如何查看Pod状态详情的步骤&#xff1a; 1. 查看Pod状态详情 列出所有Pod&#xff1a; 使用kubectl get pods命令可以查看集群所有Po…

详细讲一下React中的路由React Router

1. 基本概念 React Router 是 React 的路由管理库&#xff0c;用于在 React 应用中实现页面导航和路由控制。 2. 安装 npm install react-router-dom 3. 基础用法 // App.jsx import { BrowserRouter, Routes, Route, Link } from react-router-domfunction App() {return (…

人工智能的视觉天赋:一文读懂卷积神经网络

什么是CNN&#xff1f; CNN&#xff0c;全称为卷积神经网络&#xff08;Convolutional Neural Network&#xff09;&#xff0c;是一种模拟人类视觉感知机制的人工神经网络。它通过层叠的卷积、池化等操作&#xff0c;从数据中提取关键特征&#xff0c;进而完成分类、识别或预…