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

打造美观 API 文档:Spring Boot + Swagger 实战指南

目录

  • 打造美观 API 文档:Spring Boot + Swagger 实战指南
    • 导语
    • 一、Swagger 简介
    • 二、Spring Boot 2 集成 Swagger
      • 1. 添加依赖
      • 2. 配置 Swagger
      • 3. 访问 Swagger UI
    • 三、Spring Boot 3 集成 Swagger
      • 1. 添加依赖
      • 2. 配置 Swagger
      • 3. 访问 Swagger UI
    • 四、多种接口文档风格展示
      • 1. 默认 Swagger UI
      • 2. Redoc
      • 3. Knife4j
        • 在 Spring Boot 2 中集成 Knife4j
        • 在 Spring Boot 3 中集成 Knife4j
    • 五、实战示例
      • 1. 创建控制器
      • 2. 添加 Swagger 注解
        • Spring Boot 2(Springfox)
        • Spring Boot 3(Springdoc)
      • 3. 访问和测试
    • 六、总结
    • 参考资料

打造美观 API 文档:Spring Boot + Swagger 实战指南

导语

在现代 Web 开发中,API 文档是开发者和团队协作的重要组成部分。Swagger 作为一款强大的 API 文档生成工具,能够自动生成直观、可交互的接口文档,提升开发效率。本文将详细介绍如何在 Spring Boot 2 和 Spring Boot 3 中集成 Swagger,并展示多种接口文档风格,帮助开发者选择适合自己项目的展示方式。


一、Swagger 简介

Swagger 是一个开源工具,用于生成、描述和可视化 RESTful API。它不仅能自动生成 API 文档,还提供交互式界面,方便开发者测试和调试接口。Swagger 与 Spring Boot 集成后,可以轻松管理和展示项目的 API。


二、Spring Boot 2 集成 Swagger

Spring Boot 2 中,常用的 Swagger 集成方案是基于 Springfox 库。以下是具体步骤:

1. 添加依赖

在项目的 pom.xml 文件中添加以下依赖:

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>

2. 配置 Swagger

创建一个配置类,例如 SwaggerConfig.java,启用 Swagger 并定义文档的基本信息:

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.example.controller")) // 指定扫描的包.paths(PathSelectors.any()).build().apiInfo(apiInfo());}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Spring Boot 2 Swagger API").description("API documentation for Spring Boot 2 project").version("1.0.0").build();}
}

3. 访问 Swagger UI

启动 Spring Boot 应用后,打开浏览器访问 http://localhost:8080/swagger-ui.html,即可看到生成的 API 文档界面。


三、Spring Boot 3 集成 Swagger

Spring Boot 3 中,由于 Springfox 已不再积极维护,推荐使用 Springdoc OpenAPI 库。它与 Spring Boot 3 的新特性(如 Jakarta EE)兼容,且配置更简单。

1. 添加依赖

pom.xml 中添加 Springdoc OpenAPI 的依赖:

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.9</version>
</dependency>

2. 配置 Swagger

Springdoc 默认自动启用 Swagger UI,无需额外配置。但可以通过 application.propertiesapplication.yml 自定义路径和行为,例如:

# 自定义 Swagger UI 路径
springdoc.swagger-ui.path=/swagger-ui.html
# 自定义 API 文档 JSON 路径
springdoc.api-docs.path=/v3/api-docs

3. 访问 Swagger UI

启动应用后,访问 http://localhost:8080/swagger-ui.html,即可查看 API 文档。


四、多种接口文档风格展示

Swagger 提供了多种 UI 风格,开发者可以根据需求选择合适的展示方式。以下是几种常见的风格及其配置方法:

1. 默认 Swagger UI

Swagger UI 是最常用的风格,提供交互式界面,支持 API 测试。Spring Boot 2 和 3 默认集成后即可使用:

  • Spring Boot 2:http://localhost:8080/swagger-ui.html
  • Spring Boot 3:http://localhost:8080/swagger-ui.html

2. Redoc

Redoc 是一个简洁、美观的静态文档展示工具,适合生成静态 API 文档。在 Spring Boot 3 中使用 Springdoc 配置:

application.properties 中添加:

# 禁用默认 Swagger UI
springdoc.swagger-ui.enabled=false
# 启用 Redoc
springdoc.redoc.enabled=true

访问 http://localhost:8080/redoc,即可查看 Redoc 风格的文档。

3. Knife4j

Knife4j 是 Swagger 的增强版,提供更丰富的功能和更友好的界面,支持 Spring Boot 2 和 3。

在 Spring Boot 2 中集成 Knife4j

添加依赖:

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.9</version>
</dependency>

修改配置类:

@Configuration
@EnableSwagger2
@EnableKnife4j
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.example.controller")).paths(PathSelectors.any()).build().apiInfo(apiInfo());}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Spring Boot 2 Knife4j API").description("API documentation with Knife4j").version("1.0.0").build();}
}

访问 http://localhost:8080/doc.html,即可体验 Knife4j 界面。

在 Spring Boot 3 中集成 Knife4j

添加依赖:

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency>

无需额外配置,启动应用后访问 http://localhost:8080/doc.html


五、实战示例

以下是一个简单的 Spring Boot 项目示例,展示如何使用 Swagger 注解生成详细的 API 文档。

1. 创建控制器

创建一个简单的 REST 控制器:

import org.springframework.web.bind.annotation.*;
import java.util.*;@RestController
@RequestMapping("/api")
public class UserController {@GetMapping("/users")public List<String> getUsers() {return Arrays.asList("Alice", "Bob");}@PostMapping("/users")public String createUser(@RequestBody String user) {return "Created: " + user;}
}

2. 添加 Swagger 注解

为控制器和方法添加注解,提供更详细的 API 描述:

Spring Boot 2(Springfox)
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import java.util.*;@Api(tags = "User API")
@RestController
@RequestMapping("/api")
public class UserController {@ApiOperation(value = "获取所有用户", notes = "返回用户列表")@GetMapping("/users")public List<String> getUsers() {return Arrays.asList("Alice", "Bob");}@ApiOperation(value = "创建新用户", notes = "创建并返回新用户")@PostMapping("/users")public String createUser(@RequestBody String user) {return "Created: " + user;}
}
Spring Boot 3(Springdoc)
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
import java.util.*;@Tag(name = "User API")
@RestController
@RequestMapping("/api")
public class UserController {@Operation(summary = "获取所有用户", description = "返回用户列表")@GetMapping("/users")public List<String> getUsers() {return Arrays.asList("Alice", "Bob");}@Operation(summary = "创建新用户", description = "创建并返回新用户")@PostMapping("/users")public String createUser(@RequestBody String user) {return "Created: " + user;}
}

3. 访问和测试

启动应用后,访问对应的 Swagger UI 或 Knife4j 地址(如 http://localhost:8080/swagger-ui.htmlhttp://localhost:8080/doc.html),即可查看并测试 API。


六、总结

本文介绍了在 Spring Boot 2 和 Spring Boot 3 中集成 Swagger 的实战步骤:

  • Spring Boot 2 使用 Springfox Swagger,配置简单但维护较少。
  • Spring Boot 3 推荐 Springdoc OpenAPI,与新版本兼容且功能强大。

同时展示了多种接口文档风格:

  • Swagger UI:交互性强,适合开发和调试。
  • Redoc:简洁美观,适合静态文档。
  • Knife4j:功能丰富,体验更优。

通过实战示例,开发者可以快速上手并将 Swagger 应用到自己的项目中,提升 API 管理的效率和质量。


参考资料

  • Springfox Swagger 官方文档
  • Springdoc OpenAPI 官方文档
  • Knife4j 官方文档

相关文章:

打造美观 API 文档:Spring Boot + Swagger 实战指南

目录 打造美观 API 文档&#xff1a;Spring Boot Swagger 实战指南导语一、Swagger 简介二、Spring Boot 2 集成 Swagger1. 添加依赖2. 配置 Swagger3. 访问 Swagger UI 三、Spring Boot 3 集成 Swagger1. 添加依赖2. 配置 Swagger3. 访问 Swagger UI 四、多种接口文档风格展示…...

如何在 Android 上恢复已删除的照片?:简短指南

没有什么比不小心从 Android 智能手机中删除所有照片更糟糕的了。这样&#xff0c;除非您在重置之前已经备份了数据&#xff0c;否则您的所有照片都会消失。如果您忘记备份照片&#xff0c;您仍然可以按照一些简单的技术在 Android 设备上恢复已删除的照片。 如何在 Android 上…...

第十六届蓝桥杯大赛网安组--几道简单题的WP

目录 1. ezEvtx 2.flowzip 3.Enigma 4.星际XML解析器 1. ezEvtx 题目内容 EVTX文件是Windows操作系统生成的事件日志文件&#xff0c;用于记录系统、应用程序和安全事件。(本题需要选手找出攻击者访问成功的一个敏感文件&#xff0c;提交格式为flag{文件名}&#xff0c;其中…...

Element:Cheack多选勾选效果逻辑判断

效果展示 取消子级勾选&#xff0c;父级的勾选效果 代码合集 &#xff08;1&#xff09;组件代码 fromlist.cheackType 类型&#xff0c;permissio表示是权限. fromlist:[{id:1,children:[{...}]},...]传递的数据大致结构 <!-- 操作权限 --><template v-if"…...

从摄像头到 RAW 数据:MJPEG 捕获与验证

从摄像头捕获 MJPEG 原始数据&#xff1a;完整指南与验证方法 &#x1f50d; 引言 MJPEG&#xff08;Motion JPEG&#xff09;是一种常见的视频压缩格式&#xff0c;广泛应用于摄像头、监控系统和嵌入式设备。在某些场景下&#xff0c;我们需要直接从摄像头获取 MJPEG 原始数据…...

【展位预告】正也科技将携营销精细化管理解决方案出席中睿营销论坛

在医药行业面临政策深化、技术迭代、全球化竞争的多重挑战下&#xff0c;第二届中睿医药健康生态生长力峰会暨第三十五届中睿医药营销论坛将于广州盛大启幕。5月19-20日本次峰会以“聚焦政策变革、把握产业趋势、构建生态共赢”为核心&#xff0c;旨在通过全产业链资源整合与创…...

记录 Flink jdbc、mysql-cdc 连接 mysql8 碰到的适配问题

前言 记录 Flink jdbc、mysql-cdc 连接 mysql8 碰到的小问题 版本 Flink 1.15.3mysql-cdc 2.3.0MySQL 8.0.27 cdc_mysql2mysql MySQL5 之前主要用 MySQL5 &#xff0c;下面是 MySQL5 的 sql ,具体见 Flink MySQL CDC 使用总结 set yarn.application.namecdc_mysql2mysql;…...

TCP概念+模拟tcp服务器及客户端

目录 一、TCP基本概念 二、ser服务器代码 三、cil客户端代码 一、TCP基本概念 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层协议。以下是TCP的一些基本概念&#xff1a; 面向连接&…...

高翔《视觉SLAM十四讲》第七章视觉里程计3d-2d位姿估计代码详解与理论解析

高翔《视觉SLAM十四讲》第七章代码详解与理论解析 一、三维空间位姿估计核心算法实现 在视觉SLAM领域,3D - 2D位姿估计是确定相机在三维空间中位置和姿态的关键技术。本部分将详细解析其工程实现框架,同时说明代码模块的划分逻辑。 代码整体结构清晰,各模块分工明确,主要…...

Elasticsearch 内存使用指南

作者&#xff1a;来自 Elastic Valentin Crettaz 探索 Elasticsearch 的内存需求以及不同类型的内存统计信息。 Elasticsearch 拥有丰富的新功能&#xff0c;帮助你为你的使用场景构建最佳搜索解决方案。浏览我们的示例笔记本了解更多信息&#xff0c;开始免费云试用&#xff0…...

【Stable Diffusion】原理详解:从噪声到艺术的AI魔法

引言 Stable Diffusion是 stability.ai 开源的图像生成模型&#xff0c;是近年来AI生成内容&#xff08;AIGC&#xff09;领域最具突破性的技术之一。它通过将文本描述转化为高分辨率图像&#xff0c;实现了从“文字到视觉”的创造性跨越。其开源特性与高效的生成能力&#xff…...

并发设计模式实战系列(9):消息传递(Message Passing)

&#x1f31f; 大家好&#xff0c;我是摘星&#xff01; &#x1f31f; 今天为大家带来的是并发设计模式实战系列&#xff0c;第九章消息传递&#xff08;Message Passing&#xff09;&#xff0c;废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 消息传递架构 2. 并发…...

【MCP Node.js SDK 全栈进阶指南】高级篇(3):MCP 安全体系建设

背景 随着MCP协议在企业和个人应用中的广泛采用,安全性已成为MCP系统设计和开发中不可忽视的核心要素。一个健壮的MCP安全体系不仅能保护敏感数据和用户隐私,还能确保AI模型与外部工具交互的可靠性和完整性。本文将深入探讨MCP TypeScript-SDK的安全体系建设,帮助开发者构建…...

C++智能指针

智能指针是C中用于自动管理动态分配内存的类模板&#xff0c;它们通过在适当的时机自动释放内存来帮助防止内存泄漏。C11引入了以下几种主要的智能指针&#xff1a; 1. std::unique_ptr 独占所有权的智能指针&#xff0c;同一时间只能有一个unique_ptr指向特定对象。 #inclu…...

基于STM32、HAL库的ATECC608B安全验证及加密芯片驱动程序设计

一、简介: ATECC608B是Microchip公司生产的一款安全加密芯片,提供以下主要特性: 基于硬件的高安全性加密算法 ECC P-256加密引擎 SHA-256哈希算法 AES-128加密 真随机数生成器(TRNG) 16KB安全存储空间 IC接口(最高1MHz) 低功耗设计,适合物联网应用 二、硬件接口: ATECC60…...

【安全扫描器原理】ICMP扫描

【安全扫描器原理】ICMP扫描 1.ICMP协议概述2.ping命令3.tracert命令4.ICMP通信实例5.ICMP协议内容6.ICMP扫描的安全性7.ICMP扫描器的原理及优化策略1.ICMP协议概述 ICMP是TCP/IP协议族中的一个重要协议,主要用于在IP主机之间、主机和路由器之间传递控制消息,这些控制消息包…...

前端 AI 开发实战:基于自定义工具类的大语言模型与语音识别调用指南

在人工智能技术快速发展的今天&#xff0c;将大语言模型&#xff08;LLM&#xff09;和语音识别&#xff08;ASR&#xff09;功能集成到前端应用中&#xff0c;已经成为提升用户体验、打造智能化应用的重要手段。本文将结合一段实际的 AI 工具类代码&#xff0c;详细讲解如何在…...

组件轮播与样式结构重用实验

任务一&#xff1a;使用“Swiper 轮播组件”对自行选择的图片和文本素材分别进行轮播&#xff0c;且调整对应的“loop”、“autoPlay”“interval”、“vertical”属性&#xff0c;实现不同的轮播效果&#xff0c;使用Swiper 样式自定义&#xff0c;修改默认小圆点和被选中小圆…...

(计数)洛谷 P8386 PA2021 Od deski do deski/P10375 AHOI2024 计数 题解

题意 给定 n n n&#xff0c; m m m&#xff0c;求满足以下限制的长度为 n n n 的序列数目&#xff1a; 每个元素在 [ 1 , m ] [1,m] [1,m] 之间&#xff1b;一次操作定义为删除一个长度至少为 2 2 2 且区间两端相等的区间&#xff0c;该序列需要在若干次操作内被删空。 …...

基于C++数据结构双向循环链表实现的贪吃蛇

大二上数据结构I-课程设计 1.设计思路 建模&#xff1a;程序界面是一个二维平面图蛇&#xff1a;蛇的身体可以看作是链表的节点&#xff0c;当蛇吃到食物时&#xff0c;就增加一节链表节点食物&#xff1a;相应地在边界内随机生成蛇的移动&#xff1a;取得上下左右键的ASCII码…...

H3C ER3208G3路由实现内网机器通过公网固定IP访问内网服务器

内网机器可以通过内网访问服务器&#xff1b;公网机器可以通过公网固定IP访问服务器&#xff1b;但内网机器无法通过公网固定IP访问内网服务器&#xff1b;想实现内网机器通过公网固定IP访问内网服务器 WEB登录管理后台&#xff0c;网络设置->NAT配置&#xff0c;选“高级配…...

Vue3+Three JS高德地图自定义经纬度实现围栏

Vue3实现代码 index.html需要引入three.js <script src"https://cdn.jsdelivr.net/npm/three0.142/build/three.js"></script> 围栏组件 <template><div id"mapContainer" ref"mapContainer"></div> </templ…...

远程访问你的家庭NAS服务器:OpenMediaVault内网穿透配置教程

文章目录 前言1. OMV安装Cpolar工具2. 配置OMV远程访问地址3. 远程访问OMV管理界面4. 固定远程访问地址 前言 在这个数据爆炸的时代&#xff0c;无论是管理家人的照片和视频&#xff0c;还是企业老板处理财务报表和技术文档&#xff0c;高效的数据管理和便捷的文件共享已经变得…...

4.2.3 MYSQL事务原理分析

文章目录 4.2.3 MYSQL事务原理分析1. 事务1. 前提&#xff1a;并发连接访问2. 事务定义3. 事务语句&#xff1a;4. acid特性5. undolog-回滚日志6. redolog-重做日志 2. 隔离级别1. 四种隔离级别2. 并发问题解释3. 隔离级别设置 3. MVCC(Multiversion Concurrency Control&…...

极狐GitLab 如何使用文件导出迁移项目和群组?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 用文件导出迁移项目和群组 (FREE ALL) 推荐使用 直接传输 迁移群组和项目。然而&#xff0c;在某些情况下&#xff0c;您可能…...

Linux/AndroidOS中进程间的通信线程间的同步 - 管道和FIFO

前言 管道是 UNIX 系统上最古老的 IPC 方法&#xff0c;它在 20 世纪 70 年代早期 UNIX 的第三个版本上就出现了。管道为一个常见需求提供了一个优雅的解决方案&#xff1a;给定两个运行不同程序的进程&#xff0c;在 shell 中如何让一个进程的输出作为另一个进程的输入呢&…...

第十六届蓝桥杯 2025 C/C++组 破解信息

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 代码详解&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; P12344 [蓝桥杯 2025 省 B/Python B 第二场] 破解信息…...

[FPGA Video IP] VDMA

Xilinx AXI Video Direct Memory Access IP (PG020) 详细介绍 概述 Xilinx AXI Video Direct Memory Access (AXI VDMA) LogiCORE™ IP 核&#xff08;PG020&#xff09;是一个软核 IP&#xff0c;专为视频应用设计&#xff0c;提供在内存与 AXI4-Stream 视频外设之间的高带宽…...

Ubuntu如何查看硬盘的使用情况,以及挂载情况。

在Ubuntu中查看硬盘使用情况及挂载情况&#xff0c;可通过以下命令实现&#xff1a; 一、查看硬盘使用情况 df -h 显示所有挂载文件系统的磁盘空间使用情况&#xff08;含总容量、已用空间、可用空间等&#xff09;&#xff0c;输出结果以易读格式&#xff08;如GB、MB&#x…...

第十六届蓝桥杯 2025 C/C++组 脉冲强度之和

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 代码详解&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; P12338 [蓝桥杯 2025 省 B/Python B 第二场] 脉冲强度…...

23种设计模式-行为型模式之中介者模式(Java版本)

Java 中介者模式&#xff08;Mediator Pattern&#xff09;详解 &#x1f9e0; 什么是中介者模式&#xff1f; 中介者模式是一种行为型设计模式&#xff0c;它通过定义一个中介者对象来封装一组对象之间的交互。中介者使得各个对象不需要显式地知道彼此之间的关系&#xff0c…...

集群与存储-lvs-nat实验

一、实验目的 1、熟练掌握ipvsadm 指令的使用 2、理解lvs 负载均衡的原理 3. 熟练掌握lvs-netnfs的配置 二、实验内容 1.拓扑图 2.实验步骤 #在节点服务器中添加网卡&#xff0c;选择仅主机模式 #查看网卡 #启用网卡 nmcli device up ens224 ip a #修改虚拟地址的网关 #…...

Android——Serializable和Parcelable

在Android中传递对象的方式 在 Android 开发中&#xff0c;Parcelable 和 Serializable 是两种用于对象序列化的接口 Serializable public class Student implements Serializable {public int id;public String name;public int age;public Student(int id, String name, i…...

python:sklearn 决策树(Decision Tree)

5. 决策树&#xff08;Decision Tree&#xff09; - 第5章 算法思想&#xff1a;基于信息增益&#xff08;ID3&#xff09;或基尼不纯度&#xff08;CART&#xff09;递归划分特征。 编写 test_dtree_1.py 如下 # -*- coding: utf-8 -*- """ 5. 决策树&…...

0-1背包难题哪家强:回溯法 VS 动态规划 VS 贪心算法

回溯法、动态规划和贪心算法是三种常见的算法设计思想&#xff0c;他们都可以用来解决0-1背包问题&#xff0c;但它们在解决问题的思路、适用条件和效率上存在显著差异。以下从多个维度进行对比分析&#xff1a; 相关系列文章链接: 《贪心算法 vs 动态规划&#xff1a;“急性子…...

JavaSE第12篇:接口interface

一、使用步骤 1.引入库 代码如下&#xff08;示例&#xff09;&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings(ignore) import ssl ssl._create_default_https_con…...

一文掌握 npm 基础与常用指令

初学前端&#xff1f;npm 常用指令不熟&#xff1f;想了解 pnpm、yarn、cnpm 有什么不同&#xff1f; 这篇文章将带你从入门到精通&#xff0c;全面掌握 npm 的使用方法&#xff0c;以及选择适合自己项目的包管理工具&#xff01; 文章目录 一、什么是 npm&#xff1f;二、npm …...

OpenObserve API Usage Guide for Log Management

OpenObserve API Usage Guide for Audit Log Management 1. 概述 1.1 目标 本文档旨在详细介绍 OpenObserve 的 API 使用方法&#xff0c;帮助用户通过 API 实现日志管理功能&#xff0c;包括日志摄入、查询、模糊匹配&#xff08;类似 SQL 的 LIKE&#xff09;、stream 管理…...

机器学习实操 第一部分 机器学习基础 第5章 支持向量机(SVM)

机器学习实操 第一部分 机器学习基础 第5章 支持向量机&#xff08;SVM&#xff09; 内容概要 第5章深入介绍了支持向量机&#xff08;SVM&#xff09;&#xff0c;这是一种功能强大且应用广泛的机器学习模型。SVM适用于线性或非线性分类、回归以及 novelty detection。本章详…...

CSRF(cross-site request forgery)跨域请求访问

CSRF 当我们在成功登录一个网站后&#xff0c;会将后端返回的cookie数据进行存放&#xff0c;每一次访问该域名都会将cookie存放在请求头&#xff0c;也就相当于用户登录凭证&#xff0c; 但这种同域自动携带cookie存在一种问题 那就是当恶意网站也进去请求时&#xff0c;同样…...

Kafka的Rebalance机制可能引发什么问题?如何优化?怎么减少不必要的Rebalance

Rebalance机制的核心目的是确保每个消费者都能处理适当数量的分区&#xff0c;以实现负载均衡和高可用性。 一般是消费者组发生变化的时候&#xff0c;比如订阅主题&#xff0c;消费者数量等等发生变化&#xff0c;可能会导致rebalance&#xff0c;rebalance会导致消费者组短时…...

【和春笋一起学C++】函数——C++的编程模块

目录 1. 原型句法 2. 函数分类 3. 函数参数之按值传递 4. 数组作为函数参数 在C中&#xff0c;要使用函数&#xff0c;必须要有这三个方面&#xff1a; 函数原型&#xff0c;函数原型描述了函数到编译器的接口&#xff0c;函数原型一般放在include文件中。函数原型告诉编译…...

Java高频面试之并发编程-11

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天又来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;父子线程如何共享数据&#xff1f; 在Java中&#xff0c;父子线程共享数据可以通过以下几种方式实现&#xff0c;具体…...

LangChain入门(四) 部署应用程序

1、使用LangServe部署应用程序 安装langserve pip install langserve[all] 代码示例 from fastapi import FastAPI from langchain.chat_models import init_chat_model from langchain_core.messages import SystemMessage, HumanMessage from langchain_core.output_parser…...

精益数据分析(31/126):电商关键指标深度解析与实战策略

精益数据分析&#xff08;31/126&#xff09;&#xff1a;电商关键指标深度解析与实战策略 在创业和数据分析的探索之路上&#xff0c;每一次深入学习都像是解锁了新的技能&#xff0c;让我们离成功更近一步。今天&#xff0c;我依旧带着和大家共同进步的想法&#xff0c;深入…...

【MongoDB篇】MongoDB的集合操作!

目录 引言第一节&#xff1a;集合的“诞生”——自动出现还是手动打造&#xff1f;&#x1f914;第二节&#xff1a;集合的“查阅”——看看这个数据库里有哪些柜子&#xff1f;&#x1f4c2;&#x1f440;第三节&#xff1a;集合的“重命名”——给文件柜换个名字&#xff01;…...

antd中的表格穿梭框(Transfer)如何使用

穿梭框是什么?怎么使用? 需求如下: 有一组端口需要分配给具体接口 功能要求: 1. 需要展示当前端口名称及其所属的接口 2. 需支持搜索功能可对端口名或接口名进行筛选便于分配 3. 分配端口时,需检测当前接口内的端口是否满足此接口最低要求 4. 提供Select下拉框,可供查…...

联邦学习与安全多方计算的结合是隐私保护机器学习领域

联邦学习(Federated Learning, FL)与安全多方计算(Secure Multi-Party Computation, MPC)的结合是隐私保护机器学习领域的前沿方向,其框架设计需兼顾计算效率、安全性和可扩展性。以下是结合两者的框架设计与实现流程的详细解析: 一、框架设计核心目标 隐私保护:确保多…...

mongoose的介绍,连接数据库

Mongoose 是一个基于 Node.js 的 MongoDB ODM&#xff08;Object Data Modeling&#xff09;库&#xff0c;用于在 MongoDB 和 Node.js 应用之间提供结构化的模型层&#xff0c;帮助你更优雅、安全地操作数据库。 &#x1f9fe; 一、Mongoose 简介 &#x1f4e6; 功能&#xff…...

Pytest中的fixture装饰器详解

pytest是Python生态中最流行的自动化测试框架&#xff0c;它通过简洁的语法、强大的功能(如fixture、参数化、插件扩展等)和丰富的插件生态&#xff0c;帮助开发者高效完成单元测试、集成测试和端到端测试。fixture是pytest框架中最核心、最强大的功能之一&#xff0c;它提供了…...