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

swagger的简介及使用方法

Swagger 是一个用于描述、生成、文档化和测试 RESTful API 的开源工具集。它可以自动生成 API 文档,帮助开发者理解和使用 API。Swagger 由 Swagger.io 提供,并已经发展成了一套广泛应用于 API 设计和文档的标准。

Swagger 项目的历史可以追溯到 2010 年,它最初由 Tony Tam 创建。当时,API 开发者通常需要花费大量时间手动编写和维护文档,并且手动维护文档容易与实际 API 的实现不一致,导致文档和实际接口的差异。Swagger 的设计目标就是通过自动生成文档,减少这些手动工作,提高开发效率。

发展历程

  1. 2011年

    • Swagger 在 GitHub 上开源发布,迅速吸引了开发者的关注。它提供了一个简单的注解系统,开发者通过在代码中添加注解即可自动生成 API 文档。Swagger 可以帮助开发者和团队更好地理解和使用 API。
  2. 2015年

    • Swagger 被纳入 OpenAPI Initiative (OAI),一个由多个技术公司和开源社区组成的组织,旨在制定开放的 API 规范。OpenAPI 规范(OAS,OpenAPI Specification)取代了原有的 Swagger 规范,成为更加标准化的 API 描述格式。
    • Swagger 工具集的名字也被保持了下来,仍然用于描述和生成 API 文档,而 OpenAPI 则成为技术规范。
  3. 2016年

    • Swagger 发布了 Swagger 2.0,并继续进行更新与完善。Swagger 2.0 是 Swagger 生态系统的基础,至今仍被广泛使用。
  4. 2017年以后

    • OpenAPI 3.0 规范发布,它包含了对 Swagger 2.0 的改进和扩展,提供了更强大的功能。Swagger 的工具链也开始支持 OpenAPI 3.0 规范,并向兼容性过渡。

Swagger 的主要组件

Swagger 的工具集包括多个组成部分,使得开发者可以更好地设计和管理 API:

  1. Swagger Editor

    • 一个基于 Web 的编辑器,可以帮助开发者编写和编辑 OpenAPI 规范文件(通常为 swagger.yaml 或 swagger.json 文件)。它支持实时预览和验证 API 规范。
  2. Swagger UI

    • Swagger UI 是一个基于浏览器的界面,提供交互式文档界面,允许开发者和用户查看 API 文档,并直接在文档界面上测试 API 的各个端点。
  3. Swagger Codegen

    • Swagger Codegen 允许开发者从 OpenAPI 规范中自动生成客户端 SDK、服务器端代码和 API 文档。这些代码生成器支持多种编程语言和框架。
  4. Swagger Hub

    • Swagger Hub 是一个商业化平台,用于协作设计、构建和管理 API 文档。它提供了基于云的 API 管理、版本控制和协作功能,适用于企业级应用。

Swagger 的优点

  • 自动化文档生成:通过注解,Swagger 可以自动生成 API 的文档,避免手动编写文档,减少出错概率。
  • 易于使用:开发者可以通过简单的注解和配置文件来定义 API,Swagger UI 提供了交互式的界面,方便开发者和用户查看和测试 API。
  • 开源和广泛支持:Swagger 是开源的,得到了广泛的社区支持,并且能够与许多开发框架(如 Spring、Node.js、Java、Python 等)兼容。

Swagger 的使用

1. @Api

  • 作用:用于标记一个类是一个 Swagger 资源(通常是一个 Controller 类)。
  • 常见用法
  • @Api(tags = "用户管理", description = "管理用户的 API")
    public class UserController {// 控制器代码
    }
    

2. @ApiOperation

  • 作用:描述单个 API 操作(通常是一个方法),提供接口的详细信息,如功能说明、HTTP 方法、响应类型等。
  • 常见用法
    @ApiOperation(value = "获取用户列表", notes = "获取所有用户的列表", response = User.class)
    @GetMapping("/users")
    public List<User> getUsers() {// 代码
    }
    

3. @ApiParam

  • 作用:用于描述方法参数的详细信息(例如:是否必需、默认值等)。
  • 常见用法
    @ApiOperation("获取指定用户")
    @GetMapping("/user/{id}")
    public User getUser(@ApiParam(value = "用户ID", required = true) @PathVariable Long id) {// 代码
    }
    

4. @ApiResponse

  • 作用:描述 API 操作的响应信息,例如状态码和响应类型。
  • 常见用法
    @ApiOperation(value = "删除用户", notes = "删除指定用户")
    @ApiResponses({@ApiResponse(code = 200, message = "删除成功"),@ApiResponse(code = 404, message = "用户未找到")
    })
    @DeleteMapping("/user/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {// 代码
    }
    

5. @ApiModel

  • 作用:用于定义 API 中的复杂对象模型(即请求体或响应体),例如对象参数或返回的复杂数据类型
  • 常见用法
  • @ApiModel(description = "用户对象")
    public class User {@ApiModelProperty(value = "用户ID", required = true)private Long id;@ApiModelProperty(value = "用户姓名", example = "张三")private String name;
    }
    

6. @ApiModelProperty

  • 作用:用于为模型属性提供详细描述,包括字段说明、是否必填、默认值等。
  • 常见用法
  • public class User {@ApiModelProperty(value = "用户ID", required = true)private Long id;@ApiModelProperty(value = "用户姓名", example = "张三")private String name;
    }
    

7. @PathParam@QueryParam@HeaderParam@FormParam

  • 作用:用于绑定 HTTP 请求的路径、查询参数、请求头和表单参数。它们分别对应不同类型的参数提取。
  • 常见用法
  • @GetMapping("/user")
    public User getUser(@QueryParam("id") Long id) {// 代码
    }
    

8. @RequestBody

  • 作用:用于标注方法参数接收请求体的数据,通常用来处理 JSON 或 XML 格式的请求。
  • 常见用法
  • @PostMapping("/user")
    public User createUser(@RequestBody User user) {// 代码
    }
    

9. @RequestMapping@GetMapping@PostMapping@PutMapping@DeleteMapping

  • 作用:用于定义 API 的 HTTP 请求类型和 URL 路径。
  • 常见用法
  • @GetMapping("/user/{id}")
    public User getUser(@PathVariable Long id) {// 代码
    }

10. @Consumes@Produces

  • 作用:用于标注接口支持的内容类型,通常用于描述请求和响应的格式(如 JSON、XML 等)。
  • 常见用法
  • @Consumes("application/json")
    @Produces("application/json")
    @PostMapping("/user")
    public ResponseEntity<User> createUser(@RequestBody User user) {// 代码
    }
    

11. @SwaggerDefinition

  • 作用:用来描述 Swagger 配置的元数据,如 API 的标题、版本、描述等。
  • 常见用法
  • @SwaggerDefinition(info = @Info(title = "用户管理 API", version = "1.0", description = "提供用户管理相关的操作")
    )
    public class UserController {// 控制器代码
    }
    

12. @ResponseStatus

  • 作用:用于指定 HTTP 响应的状态码,通常与 @ExceptionHandler 配合使用,定义异常的响应状态。
  • 常见用法
  • @ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "用户未找到")
    public class UserNotFoundException extends RuntimeException {// 代码
    }
    

OpenAPI 和 Swagger 的关系

随着 OpenAPI Initiative 的出现,Swagger 成为了 OpenAPI 规范的工具之一。虽然 OpenAPI 规范变成了行业标准,但 Swagger 依然是最常用的工具集之一,并且支持 OpenAPI 3.0 规范。可以将 Swagger 理解为 OpenAPI 规范的工具实现,它包括了多种工具和框架来帮助开发者设计、文档化和测试 API。

总结

Swagger 从最初的一个 API 文档工具,逐渐发展成为一个完整的工具链,帮助开发者更高效地设计和管理 API。随着 OpenAPI 规范的推行,Swagger 成为这一规范的核心工具,继续服务于全球的开发者社区。


天不老,情难绝,信似双丝网,中有千千结

相关文章:

swagger的简介及使用方法

Swagger 是一个用于描述、生成、文档化和测试 RESTful API 的开源工具集。它可以自动生成 API 文档&#xff0c;帮助开发者理解和使用 API。Swagger 由 Swagger.io 提供&#xff0c;并已经发展成了一套广泛应用于 API 设计和文档的标准。 Swagger 项目的历史可以追溯到 2010 年…...

解决Ubuntu图形化界面操作适配问题

1 缘起 使用Ubuntu GNOME图形化系统作为开发机&#xff0c; 遇到与Windows操作不一致的地方&#xff0c;比如PyCharm、IntelliJ时无法正确代码跳转&#xff0c; 如CtrlAltLeft&#xff0c;CtrlAltRight无法正常在代码级别跳转&#xff0c;只能在文件级别跳转。 基于这个开端&a…...

End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱

摘要:本文介绍了一种将非结构化数据转换为知识图谱的端到端方法。通过使用大型语言模型(LLM)和一系列数据处理技术,我们能够从原始文本中自动提取结构化的知识。这一过程包括文本分块、LLM 提示设计、三元组提取、归一化与去重,最终利用 NetworkX 和 ipycytoscape 构建并可…...

使用Ingress发布应用程序

使用Ingress发布应用程序 文章目录 使用Ingress发布应用程序[toc]一、什么是Ingress二、定义Ingress三、什么是Ingress控制器四、部署nginx Ingress控制器1.了解nginx Ingress控制器的部署方式2.安装nginx Ingress控制器3.本地实际测试 五、使用Ingress对外发布应用程序1.使用D…...

llama-factory微调报错:

报错信息 [INFO] [utils.py:789:see_memory_usage] CPU Virtual Memory: used 81.51 GB, percent 64.9% W0419 10:14:27.573000 108354 site-packages/torch/distributed/elastic/multiprocessing/api.py:897] Sending process 108373 closing signal SIGTERM W0419 10:14:27…...

【LLaMAFactory】LoRa + 魔搭 微调大模型实战

前言 环境准备 之前是在colab上玩&#xff0c;这次在国内的环境上玩玩。 魔搭&#xff1a;https://www.modelscope.cn/ 现在注册&#xff0c;有100小时的GPU算力使用。注册好了之后&#xff1a; 魔搭社区 这里使用qwen2.5-7B-Instruct模型&#xff0c;这里后缀Instruct是指…...

【愚公系列】《Python网络爬虫从入门到精通》054-Scrapy 文件下载

&#x1f31f;【技术大咖愚公搬代码&#xff1a;全栈专家的成长之路&#xff0c;你关注的宝藏博主在这里&#xff01;】&#x1f31f; &#x1f4e3;开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主&#xff01; &#x1f…...

db中查询关于null的sql该怎么写

正确示例 # 等于null select * from 表名 where 字段名 is NULL; # 不等于null select * from 表名 where 字段名 is not NULL;若需要同时判断字段不等于某个值且不为null select * from users where age ! 30 and age is not null; select * from users where age ! 30 or a…...

React 文章列表

自定义hook 在src/hooks文件夹下封装 useChannel.js // 获取频道列表的逻辑 import { useEffect , useState } from "react" import { getChannelAPI } from "/apis/article"function useChannel(){// 获取频道的逻辑 const [channelList,setChannelList…...

中间件--ClickHouse-12--案例-1-日志分析和监控

1、案例背景 一家互联网公司需要实时分析其服务器日志、应用日志和用户行为日志&#xff0c;以快速发现潜在问题并优化系统性能。 2、需求分析 目标&#xff1a;实时分析日志数据&#xff0c;快速发现问题并优化系统性能。数据来源&#xff1a; 服务器日志&#xff1a;如 Ng…...

QML中的3D功能--自定义着色器开发

在 Qt 3D 中使用自定义着色器可以实现高度定制化的渲染效果。以下是完整的自定义着色器开发方案。 一、基础着色器创建 1. 创建自定义材质 qml import Qt3D.Core 2.15 import Qt3D.Render 2.15 import Qt3D.Extras 2.15Entity {components: [Transform { translation: Qt.v…...

如何防止接口被刷

目录 &#x1f6e1;️ 一、常见的防刷策略分类 &#x1f527; 二、技术实现细节 ✅ 1. 基于 IP 限流 ✅ 2. 给接口加验证码 ✅ 3. 使用 Token 限制接口访问权限 ✅ 4. 给接口加冷却时间&#xff08;验证码类经典&#xff09; ✅ 5. 使用滑动窗口限流算法&#xff08;更精…...

18、TimeDiff论文笔记

TimeDiff **1. 背景与动机****2. 扩散模型基础****3. TimeDiff 模型****3.1 前向扩散过程****3.2 后向去噪过程** 4、TimeDiff&#xff08;架构&#xff09;原理训练推理其他关键点解释 DDPM&#xff08;相关数学&#xff09;1、正态分布2、条件概率1. **与多个条件相关**&…...

docker底层原理

一句话&#xff0c;dockerfile里面的一行指令&#xff0c;就是一个layer层 docker底层原理 在机器上安装docker服务器端的程序&#xff0c;就会在机器上自动创建以下目录&#xff0c;默认安装路径是/var/lib/ docker服务器端的工作目录的作用如下&#xff0c;镜像的每一层的元数…...

YOLO拓展-NMS算法

1.概述 NMS&#xff08;non maximum suppression&#xff09;即非极大值抑制&#xff0c;其本质就是搜索局部极大值&#xff0c;抑制非极大值元素&#xff0c;可以理解为局部最大搜索。 这里不讨论通用的NMS算法(参考论文《Efficient Non-Maximum Suppression》对1维和2维数据…...

Docker Swarm 容器与普通 Docker 容器的网卡差异

问题背景 在 Docker Swarm 网络空间启动的容器有两张网卡&#xff08;eth0 和 eth1&#xff09;&#xff0c;而普通 Docker 容器只有一张网卡&#xff08;eth0&#xff09;。以下通过分析 ip addr show 和 ip link show 的输出&#xff0c;解释原因。 命令输出解析 Docker S…...

【Linux】线程ID、线程管理、与线程互斥

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f310; C 语言 上篇文章&#xff1a; 【Linux】线程&#xff1a;从原理到实战&#xff0c;全面掌握多线程编程&#xff01;-CSDN博客 下…...

服务器简介(含硬件外观接口介绍)

服务器&#xff08;Server&#xff09;是指提供资源、服务、数据或应用程序的计算机系统或设备。它通常比普通的个人计算机更强大、更可靠&#xff0c;能够长时间无间断运行&#xff0c;支持多个用户或客户端的请求。简单来说&#xff0c;服务器就是专门用来存储、管理和提供数…...

自动驾驶---决策规划之导航增强端到端

1 背景 自动驾驶算法通常包括几个子任务&#xff0c;包括3D物体检测、地图分割、运动预测、3D占用预测和规划。近年来&#xff0c;端到端方法将多个独立任务整合到多任务学习中&#xff0c;优化整个系统&#xff0c;包括中间表示&#xff0c;以实现最终的规划任务。随着端到端技…...

Datawhale AI春训营 世界科学智能大赛--合成生物赛道:蛋白质固有无序区域预测 小白经验总结

一、报名大赛 二、跑通baseline 在魔塔社区创建实例&#xff0c;根据教程完成速通第一个分数~ Datawhale-学用 AI,从此开始 三、优化实例&#xff08;这里是我的学习优化过程&#xff09; 1.先将官方给的的模型训练实例了解一遍&#xff08;敲一敲代码&#xff09; 训练模…...

基于Java(Struts2 + Hibernate + Spring)+MySQL实现的(Web)在线预约系统

基于Struts2 Hibernate Spring的在线预约系统 1.引言 1.1编写目的 针对医院在线预约挂号系统&#xff0c;提供详细的设计说明&#xff0c;包括系统的需求、功能模块、界面设计、设计方案等&#xff0c;以辅助开发人员顺利进行系统的开发并让项目相关者可以对这个系统进行分…...

PHP获取大文件行数

在PHP中获取大文件的行数时&#xff0c;直接读取整个文件到内存中可能会导致内存溢出&#xff0c;特别是对于非常大的文件。因此&#xff0c;最有效的方法是逐行读取文件并计数。以下是一些实现方法&#xff1a; 方法一&#xff1a;使用 fgets() fgets() 函数逐行读取文件&am…...

2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?

2024年网站开发语言选择指南&#xff1a;PHP/Java/Node.js/Python如何选型&#xff1f; 一、8大主流Web开发语言技术对比 1. PHP开发&#xff1a;中小型网站的首选方案 最新版本&#xff1a;PHP 8.3&#xff08;2023年11月发布&#xff09;核心优势&#xff1a; 全球78%的网站…...

Win7模拟器2025中文版:重温经典,掌上电脑体验

随着科技的快速发展&#xff0c;现代操作系统变得越来越高级&#xff0c;但许多用户仍然怀念经典的Windows 7系统。如果你也想重温那种熟悉的操作体验&#xff0c;Win7模拟器2025中文版 是一个不错的选择。这款软件能够让你在手机上轻松实现Windows 7系统的模拟&#xff0c;带来…...

HTML5+CSS3小实例:CSS立方体

实例:CSS立方体 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0&q…...

使用 Vite 快速搭建现代化 React 开发环境

1.检查环境 说明&#xff1a;检测环境&#xff0c;node版本为18.20.6。 2.创建命令 说明&#xff1a;创建命令&#xff0c;选择对应的选项。 npm create vitelatest 3.安装依赖 说明&#xff1a;安装相关依赖。 npm i...

Linux网络编程——基于ET模式下的Reactor

一、前言 上篇文章中我们已经讲解了多路转接剩下的两个接口&#xff1a;poll和epoll&#xff0c;并且知道了epoll的两种工作模式分别是 LT模式和ET模式&#xff0c;下来我们就实现的是一个简洁版的 Reactor&#xff0c;即半同步半异步I/O&#xff0c;在linux网络中&#xff0c…...

【现代深度学习技术】循环神经网络04:循环神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

1. 认识DartGoogle为Flutter选择了Dart语言已经是既

1. 认识Dart Google为Flutter选择了Dart语言已经是既定的事实&#xff0c;无论你多么想用你熟悉的语言&#xff0c;比如JavaScript、TypeScript、ArkTS等来开发Flutter&#xff0c;至少目前都是不可以的。 Dart 是由谷歌开发的计算机编程语言&#xff0c;它可以被应用于 Web/…...

学习设计模式《三》——适配器模式

一、基础概念 适配器模式的本质是【转换匹配&#xff0c;复用功能】&#xff1b; 适配器模式定义&#xff1a;将一个类的接口转换为客户希望的另外一个接口&#xff1b;适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式的目的&#xff1a;复用…...

【Java面试系列】Spring Boot微服务架构下的分布式事务处理与性能优化 - 2025-04-19详解 - 3-5年Java开发必备知识

【Java面试系列】Spring Boot微服务架构下的分布式事务处理与性能优化 - 2025-04-19详解 - 3-5年Java开发必备知识 引言 在微服务架构中&#xff0c;分布式事务处理和性能优化是面试中高频出现的主题。随着系统规模的扩大&#xff0c;如何保证数据一致性和系统性能成为开发者…...

Elasticsearch只返回指定的字段(用_source)

在Elasticsearch中&#xff0c;当你想要查询文档但不返回所有字段&#xff0c;只返回指定的字段&#xff08;比如这里的id字段&#xff09;&#xff0c;你可以使用_source参数来实现这一点。但是&#xff0c;有一点需要注意&#xff1a;Elasticsearch的_source字段默认是返回的…...

【Linux “sed“ 命令详解】

本章目录: 1. 命令简介sed 的优势&#xff1a; 2. 命令的基本语法和用法基本语法&#xff1a;参数说明&#xff1a;常见用法场景&#xff1a;示例1&#xff1a;替换文本示例2&#xff1a;删除空行示例3&#xff1a;从命令输出中处理内容 3. 命令的常用选项及参数常用命令动作&a…...

JMETER使用

接口测试流程: 1.获取接口文档&#xff0c;熟悉接口业务 2.编写接口测试用例以及评审 正例:输入正常的参数&#xff0c;验证接口能否正常返回 反例:权限异常(为空、错误、过期)、参数异常(为空、长度异常、类型异常)、其他异常(黑名单、调用次数限制)、兼容异常(一个接口被多种…...

JavaWeb 课堂笔记 —— 13 MySQL 事务

本系列为笔者学习JavaWeb的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习…...

离线安装elasticdump并导入和导出数据

离线安装elasticdump 在 CentOS 或 RHEL 系统上安装 elasticdump&#xff0c;你可以使用 npm&#xff08;Node.js 的包管理器&#xff09;来安装&#xff0c;因为 elasticdump 是一个基于 Node.js 的工具。以下是步骤 先在外网环境下安装 下载nodejs和npm&#xff08;注意x8…...

WhatTheDuck:一个基于浏览器的CSV查询工具

今天给大家介绍一个不错的小工具&#xff1a;WhatTheDuck。它是一个免费开源的 Web 应用程序&#xff0c;允许用户上传 CSV 文件并针对其内容执行 SQL 查询分析。 WhatTheDuck 支持 SQL 代码自动完成以及语法高亮。 WhatTheDuck 将上传的数据存储为 DuckDB 内存表&#xff0c;继…...

关于数字信号与图像处理——基于Matlab的图像增强技术

本篇博客是在做数字信号与图像处理实验中的收获。 具体内容包括&#xff1a;根据给定的代码放入Matlab中分别进行两次运行测试——比较并观察运行后的实验结果与原图像的不同点——画出IJ的直方图&#xff0c;并比较二者差异。接下来会对每一步进行具体讲解。 题目&#xff1a…...

MySQL数据库 - 锁

锁 此笔记参考黑马教程&#xff0c;仅学习使用&#xff0c;如有侵权&#xff0c;联系必删 文章目录 锁1. 概述1.1 介绍1.2 分类 2. 全局锁2.1 介绍2.2 语法2.3 特点&#xff08;弊端&#xff09; 3. 表级锁3.1 介绍3.2 表锁3.3 元数据锁&#xff08;meta data lock&#xff0…...

免费多平台运行器,手机畅玩经典主机大作

软件介绍 飞鸟模拟器是一款面向安卓设备的免费游戏平台&#xff0c;支持PS2/PSP/NDS等十余种经典主机游戏运行。 该软件突破传统模拟器复杂操作模式&#xff0c;采用智能核心加载技术&#xff0c;用户只需双击主程序即可开启游戏之旅&#xff0c;真正实现"即下即玩"…...

计算机软考中级 知识点记忆——排序算法 冒泡排序-插入排序- 归并排序等 各种排序算法知识点整理

一、&#x1f4cc; 分类与比较 排序算法 最优时间复杂度 平均时间复杂度 最坏时间复杂度 空间复杂度 稳定性 应用场景与特点 算法策略 冒泡排序 O(n) O(n) O(n) O(1) 稳定 简单易实现&#xff0c;适用于小规模数据排序。 交换排序策略 插入排序 O(n) O(n) O…...

STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统

STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统 Norflash简介NorFlash操作驱动代码文件系统测试代码 Norflash简介 NOR Flash是一种类型的非易失性存储器&#xff0c;它允许在不移除电源的情况下保留数据。NOR Flash的名字来源于其内部结构中使用的NOR逻辑门。…...

uniapp-x 二维码生成

支持X&#xff0c;二维码生成&#xff0c;支持微信小程序&#xff0c;android&#xff0c;ios&#xff0c;网页 - DCloud 插件市场 免费的单纯用爱发电的...

当HTTP遇到SQL注入:Java开发者的攻防实战手册

一、从HTTP请求到数据库查询:漏洞如何产生? 危险的参数拼接:Servlet中的经典错误 漏洞代码重现: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String category = request.getParameter("…...

[dp20_完全背包] 介绍 | 零钱兑换

目录 1. 完全背包 题解 背包必须装满 2.零钱兑换 题解 1. 完全背包 链接&#xff1a; DP42 【模板】完全背包 描述 你有一个背包&#xff0c;最多能容纳的体积是V。 现在有n种物品&#xff0c;每种物品有任意多个&#xff0c;第i种物品的体积为vivi ,价值为wiwi。 &a…...

精打细算 - GPU 监控

精打细算 - GPU 监控 在上一篇,咱们历经千辛万苦,终于让应用程序在 Pod 的“驾驶舱”里成功地“点火”并用上了 GPU。太棒了!但是,车开起来是一回事,知道车速多少、油耗多少、引擎水温是否正常,则是另一回事,而且同样重要,对吧? 我们的 GPU 应用跑起来了,但新的问题…...

故障诊断 | CNN-BiGRU-Attention故障诊断

效果一览 摘要 在现代工业生产中,设备的稳定运行至关重要,故障诊断作为保障设备安全、高效运行的关键技术,其准确性和及时性直接影响着生产效率与成本[[doc_refer_1]][[doc_refer_2]]。随着工业设备复杂性的不断增加,传统故障诊断方法已难以满足实际需求。深度学习技术凭借…...

单片机AIN0、AIN1引脚功能

目录 1. 模拟-数字转换器&#xff08;ADC&#xff09; 2. 交流电源&#xff08;AC&#xff09; 总结 这两部分有什么区别&#xff1f; 在这个电路图中&#xff0c;两个部分分别是模拟-数字转换器&#xff08;ADC&#xff09;和交流电源&#xff08;AC&#xff09;。以下是这…...

交换机与路由器的主要区别:深入分析其工作原理与应用场景

在现代网络架构中&#xff0c;交换机和路由器是两种至关重要的设备。它们在网络中扮演着不同的角色&#xff0c;但很多人对它们的工作原理和功能特性并不十分清楚。本文将深入分析交换机与路由器的主要区别&#xff0c;并探讨它们的工作原理和应用场景。 一、基本定义 1. 交换…...

uniApp小程序保存定制二维码到本地(V3)

这里的二维码组件用的 uv-ui 的二维码 可以按需引入 QRCode 二维码 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 <uv-qrcode ref"qrcode" :size"280" :value"payCodeUrl"></uv-qrcode>&l…...