.NET 9 彻底改变了 API 文档:从 Swashbuckle(Swagger) 到 Scalar
示例代码下载:https://download.csdn.net/download/hefeng_aspnet/90404652
摘要
API 文档是现代软件开发的支柱。随着 .NET 9 从 Swashbuckle 转向 Microsoft.AspNetCore.OpenApi,开发人员需要新的策略来保持高效。本文探讨了这些变化,并介绍了 API 文档的变革者 Scalar。
本文深入探讨了 Swagger 在 ASP.NET 生态系统中的演变和集成,重点关注 .NET 9 中的新发展。它追溯了 Swagger 从其作为开源项目的起源到其被广泛采用作为 .NET 领域中 API 文档、测试和客户端代码生成的事实上的工具的历程。随着 .NET Core 的成熟,Swashbuckle 等 Swagger 工具简化了向 ASP.NET 应用程序添加交互式文档和 OpenAPI 支持的过程。但是,随着 .NET 9 的发布,Swashbuckle.AspNetCore 已被弃用,取而代之的是 Microsoft.AspNetCore.OpenApi 库。本文提供了有关如何将 Swagger 整合到 .NET 9 Web API 中的实用指导,并强调了向更现代、更高效的工具的转变。它还介绍了 Scalar .NET,这是一个创新平台,它通过时尚的用户界面和一流的 OpenAPI 支持增强了 Swagger。本文提供了分步说明和代码示例,为希望在 .NET 9 中实现 API 文档策略现代化的开发人员提供了全面的资源。
Swagger 的故事
ASP.NET 中 Swagger 的故事与 API 驱动开发的兴起以及对更好的方法来记录、测试和与 API 交互的需求交织在一起。以下是 Swagger 如何成为 ASP.NET 开发人员的关键工具的细分:
API 的兴起
随着 RESTful API 成为现代应用程序开发的核心,开发人员面临着创建清晰一致的文档的挑战。传统的文档方法容易出错且难以维护,尤其是对于大型 API。Swagger
于 2011 年作为 Tony Tam 的一个开源项目出现。它旨在标准化 API 的描述方式,使工具能够自动生成交互式文档、客户端 SDK 和服务器存根。
.NET 中的早期采用
ASP.NET 开发人员很快就看到了 Swagger 的潜力。然而,集成最初是手动的,需要开发人员手动编写 Swagger 规范文件(以 JSON 或 YAML 格式)。这个过程很繁琐,阻碍了采用。
Swashbuckle 让 Swagger 变得天衣无缝
Swashbuckle 由 Richard Morris 创建,是 ASP.NET 开发人员的一大变革。它提供了一种将 Swagger 集成到 ASP.NET 项目中的简便方法,可自动从 Web API 控制器和路由生成 Swagger JSON。
Swashbuckle 添加了以下功能:
自动文档:使用 XML 注释和数据注解直接从代码生成 API 文档。
Swagger UI 集成:将交互式 API 文档界面直接嵌入到您的应用程序中。
可定制性:允许开发人员扩展和调整 Swagger 输出。
ASP.NET Core 时代
2016 年推出 ASP.NET Core 时,它就以模块化和灵活性为设计理念。这使得集成 Swagger 工具变得更加简单。Swashbuckle 适应了 ASP.NET Core,并成为 Swagger 集成的事实标准。
ASP.NET Core 时代的主要功能:
OpenAPI 规范: Swagger 于 2015 年过渡到 OpenAPI 标准,确保了更广泛的行业采用。
改进的中间件支持: ASP.NET Core 的中间件架构使得添加 Swagger 生成器和 UI 中间件变得简单。
API 版本支持: Swashbuckle 和 NSwag 等工具支持多个 API 版本,以满足不断发展的 API 的需求。
扩展 Swagger 生态系统
如今,ASP.NET 开发人员有多种使用 Swagger 的选择:
Swashbuckle:最受欢迎且功能丰富的 ASP.NET Core 解决方案。
NSwag:另一个强大的工具,支持 OpenAPI 并添加了 TypeScript 和 C# 的客户端代码生成等功能。
Azure 集成: Swagger/OpenAPI 规范通常用于将 API 与 Azure API 管理集成。
Swagger 在现代开发中的作用 ASP.NET 项目中的 Swagger(或 OpenAPI)在以下方面起着关键作用:
协作:弥合开发人员、测试人员和利益相关者之间的差距。
自动化:自动生成客户端SDK和测试工具。
开发人员体验:允许开发人员通过 Swagger UI 等工具以交互方式探索和测试 API。
Swashbuckle.AspNetCore 将在 .NET9 中删除(Swashbuckle 是否已被弃用?)
“ ASP.NET Core 团队在 .NET 5 时间范围内开始提供依赖于 Swashbuckle 的 Web API 模板。这一决定使团队能够提供对 OpenAPI 的内置支持,OpenAPI 是一种与语言无关、与平台无关的基于 Web 的 API 表示,包含发现和与基于 HTTP 的服务端点交互所需的一切。您可能更熟悉“Swagger”这个名称,它指的是一组用于处理 OpenAPI 文档的工具。OpenAPI 文档中的信息支持客户端代码生成、存根服务器代码、创建文档和动态生成基于 Web 的 UI 等场景,以交互方式测试 API。它还在人工智能应用程序中被广泛用于提供描述 API 的提示,以供生成式 AI 使用。Swashbuckle
是一个很棒的项目,我们感谢它的所有者和社区贡献者为此投入的时间和精力。该项目不再由其社区所有者积极维护。问题尚未得到解决,并且没有针对 .NET 8 的官方版本。ASP.NET Core 团队将在 .NET 9 版本中提供解决方案。计划是从 Web API 模板中删除对 Swashbuckle.AspnetCore 的依赖,并扩展 Microsoft.AspNetCore.OpenApi 引入的功能以提供 OpenAPI 文档生成。 ”
有关 Swashbuckle.AspNetCore 弃用的更多详细信息,请参阅此 GitHub 问题。
Swagger 的未来
随着 Microsoft 不断改进 ASP.NET Core 和 OpenAPI 成为行业标准,Swagger 有望继续成为生态系统不可或缺的一部分。ASP.NET Core 6+ 中的极简 API 等功能使集成 Swagger 以实现轻量级和高性能 API 变得更加容易。尽管已从 Webapi 示例中删除了 Swagger,但它仍在更新并可供使用。
如何将 Swashbuckle(实际操作)添加到 .Net9 webapi
我将告诉您如何使用 SwashBuckle 将 Swagger 添加到您的 .Net Web API 项目中
开始之前,请确保您的系统上正确安装了 .Net 版本 9 SDK
首先使用此命令创建一个新的 webapi 项目
Dotnet new webapi -n OpenApi-Swagger-Scalar
然后在 VsCode 中打开你的项目,
接下来右键单击项目资源管理器中的空白区域,然后单击在集成终端
中打开, 接下来运行此命令
dotnet add package Swashbuckle.AspNetCore
现在是时候在Program.cs中配置 Swagger 了
(您会在program.cs中看到有关 OpenApi 的一些信息
builder.Services.AddOpenApi();
app.MapOpenApi();
(我们将在本主题的后面讨论该主题)
添加以下行:
builder.Services.AddOpenApi();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
在 app.MapOpenApi() 下面添加以下几行
app.UseSwagger(); // Enable the Swagger JSON endpoint
app.UseSwaggerUI(); // Enable the Swagger UI
运行你的项目并打开 uri:
http://localhost:{your_port}/swagger/index.html
或者直接导航到/swagger
例如
http://localhost:5000/swagger
恭喜!您再次在 .Net9 中拥有了 SwashBuckle Swagger!
OpenApi 的故事
OpenAPI,以前称为 Swagger,是描述 REST API 的规范。它允许开发人员以人机可读的格式定义其 API 的结构,包括端点、操作、参数和身份验证方法。OpenAPI
规范 (OAS) 最初由 Tony Tam 于 2010 年作为 Swagger 项目的一部分开发。目标是创建一种描述 API 的标准方法,使开发人员更容易设计、构建、记录和使用 API。2015 年,Swagger 项目被捐赠给行业领导者联盟 OpenAPI Initiative,该规范更名为 OpenAPI。Swagger
工具(例如 Swagger Editor、Swagger UI 和 Swagger Codegen)都是围绕 OpenAPI 规范构建的,旨在帮助开发人员更高效地使用 API。这些工具允许开发人员编写 OpenAPI 定义、生成交互式 API 文档以及使用各种编程语言创建服务器存根和客户端库。
API 通过 OpenAPI 描述自身结构的能力彻底改变了 API 开发,实现了跨不同工具和平台的更好协作、自动化和集成。
让我们告诉你第一个秘密😊
在上一节的测试项目中,你的 Program.cs 中有这两行
builder.Services.AddOpenApi();
app.MapOpenApi();
在调试您的测试项目时,让我们导航到此链接
http://localhost:{your_port}/openapi/v1.json
例如
http://localhost:5000/openapi/v1.json
您可以看到有关所有 api 的所有文档。
OpenAPI 与 Swagger
Swagger 项目于 2015 年捐赠给 OpenAPI Initiative,此后被称为 OpenAPI。这两个名称可以互换使用。但是,“OpenAPI”指的是规范。“Swagger”是指 SmartBear 的开源和商业产品系列,它们与 OpenAPI 规范配合使用。后续开源产品(例如 OpenAPIGenerator)也属于 Swagger 系列,尽管不是由 SmartBear 发布的。
简而言之:
OpenAPI 是一种规范。
Swagger 是使用 OpenAPI 规范的工具。
例如,OpenAPIGenerator 和 SwaggerUI。您可以在此处信息:microsoft.com
将 SwaggerUI 与 OpenApi json 的功能结合使用
因此,当我们已经有如下所示的 OpenApi 时,
app.MapOpenApi();
还有另一种选择,Swagger 可以从 OpenApi 文档中受益,以生成它的 UI,而不是swagger json 端点。
因此,我们可以删除此行,
app.UseSwagger();
而不是这一行,
app.UseSwaggerUI();
您可以像这样使用
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/openapi/v1.json", "Your Custom Title");
});
Scalar,改变游戏规则!
Scalar .NET 是一个开源 API 平台,它提供现代 REST API 客户端和精美的 API 参考,并提供一流的 OpenAPI/Swagger 支持。Scalar.AspNetCore 包可轻松将 Scalar API 参考集成到您的 .NET 应用程序中。您可以在此处信息。
如何将 Swashbuckle(在实践中)添加到 .Net9 webapi
安装包:使用以下命令将 Scalar.AspNetCore 包添加到您的 .NET 示例项目中:
dotnet add package Scalar.AspNetCore
将此行添加到Program.cs上方作为命名空间
using Scalar.AspNetCore;
确保你的program.cs中有这些行
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
app.MapOpenApi();
现在将此行添加到Program.cs
app.MapScalarApiReference();
当调试你的测试项目时,让我们导航到这个链接
http://localhost:{your_port}/scalar/v1
例如
http://localhost:5000/scalar/v1
你可以看到一个新的现代和非常酷的 UI 来测试你的 api:
是时候告诉你第二个秘密了😊
而不是这句话
app.MapScalarApiReference();
让我们使用类似这样的东西
app.MapScalarApiReference(options =>
{
options
.WithTitle("Your Custom Title")
.WithTheme(ScalarTheme.Mars)
.WithDefaultHttpClient(ScalarTarget.CSharp, ScalarClient.HttpClient);
});
轰!!!
· 现在你有了自定义标题
· 你有一个很棒的主题
· 您默认使用 C# 代码
所有解决方案现在您拥有所有这些链接,可以使用Program.cs
中存在的这些代码行进行测试
builder.Services.AddOpenApi();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
app.MapOpenApi();
app.UseSwagger(); // Enable the Swagger JSON endpoint
app.UseSwaggerUI(); // Enable the Swagger UI
app.MapScalarApiReference();
基于 Json 的 api 文档
http://localhost:5000/openapi/v1.json
http://localhost:5247/swagger/v1/swagger.json
基于 UI 的
http://localhost:5000/swagger/index.html
http://localhost:5000/scalar/v1
总结
本文探讨了 Swagger 在 ASP.NET 生态系统中的演变及其与 .NET 9 的集成,重点介绍了 OpenAPI 和 Scalar 平台。
它首先详细介绍了 Swagger 的历史、它作为标准化 API 文档的开源工具的出现以及 ASP.NET 开发人员的早期采用。本文重点介绍了 Swashbuckle 等工具如何使 Swagger 更易于与 ASP.NET Core 集成,从而自动化 API 文档并增强开发人员体验。随着 .NET Core 的发展,Swagger 成为 API 文档、测试和客户端代码生成的关键工具。
随着 .NET 9 的发布,Swashbuckle.AspNetCore 已被弃用,ASP.NET Core 团队计划扩展 Microsoft.AspNetCore.OpenApi 库。本文提供了将 Swagger(通过 Swashbuckle)添加到 .NET 9 Web API 项目的实用步骤,并讨论了从 Web API 模板中删除 Swagger,并提出了 API 文档的替代方案。
本文还介绍了 Scalar .NET,这是一个现代平台,它通过漂亮的 UI 和 OpenAPI 支持增强了 Swagger。它展示了如何将 Scalar 集成到 .NET 项目中,从而提供更精致、更可定制的 API 参考解决方案。
总之,本文介绍了 Swagger 在 .NET 生态系统中的历史、演变和未来,以及在 .NET 9 中使用 Swagger 和 Scalar 进行高效 API 文档编写的实用指南。借助提供的工具和见解,您现在可以在 .NET 9 中对 API 文档进行现代化改造。无论是利用 Scalar 还是坚持使用 OpenAPI,关键在于适应并保持领先于不断发展的标准。
源代码可在此处下载:https://download.csdn.net/download/hefeng_aspnet/90404652
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。
相关文章:
.NET 9 彻底改变了 API 文档:从 Swashbuckle(Swagger) 到 Scalar
示例代码下载:https://download.csdn.net/download/hefeng_aspnet/90404652 摘要 API 文档是现代软件开发的支柱。随着 .NET 9 从 Swashbuckle 转向 Microsoft.AspNetCore.OpenApi,开发人员需要新的策略来保持高效。本文探讨了这些变化,并介…...
C++——权限初识
权限初识 C中的访问权限主要分为三种: public 、 private 和 protected 。这些权限决定了类成员(包括数据成员和成员函数)的可访问性。以下是一个总结表格,说明了在不同情况下这些权限如何应用: 使用权限(…...
如何让自动驾驶汽车“看清”世界?坐标映射与数据融合概述
在自动驾驶领域,多传感器融合技术是实现车辆环境感知和决策控制的关键。其中,坐标系映射和对应是多传感器融合的重要环节,它涉及到不同传感器数据在统一坐标系下的转换和匹配,以实现对车辆周围环境的准确感知。本文将介绍多传感器融合中坐标系映射和对应的数学基础和实际应…...
如何在 Linux 系统中部署 FTP 服务器:从基础配置到安全优化
一、为什么选择 Linux 部署 FTP 服务器? FTP(文件传输协议)作为互联网最早的文件传输标准,至今仍在企业内部文件共享、镜像站点同步等场景中广泛应用。Linux 系统凭借其稳定性、开源特性及丰富的工具链,成为搭建 FTP 服…...
C++——引用
目录 举个例子: 引用的基本特性 引用的定义语法如下: 1. 引用必须初始化: 2. 引用是别名: 3. 引用不能为空: 4. 引用不能重新绑定: 引用的使用场景 函数参数传递: 函数返回值…...
unity开发效率提升笔记
本文将记录提升Unity开发效率的若干细节,持续更新 一.VSCode文件标签多行显示 1.File->Preference->Settings (快捷键Ctrl 逗号) 2.搜索workbench.editor.wrapTabs 3.勾选上这个单选开关 若依然不是多行 4.搜索workbench.editor.tabSizing,选择fi…...
VScode页面错误,可以编译C++20版本,但页面显示有错误的解决方案
问题回顾 学习信号量时使用到了C20版本的一些变量,可以正常编译和运行,但在编辑器上显示存在错误,如图所示 显示结果,提示命名空间std没有成员变量counting_semaphore,如图所示 解决办法 1、确保自己安装了C/C插件…...
[WEB开发] JDBC
一. JDBC基础 JDBC (Java DataBase Connectivity): 就是使用 java 语言操作数据库的一套API. JDBC本质: 一套标准接口, 规范各个数据库厂商实现这套接口, 提供驱动使用接口, 真正执行的是实现类 二. 实战 2.1 非预编译sql // 1. 注册数据库驱动Class.forName("com.my…...
Linux shell脚本2-test条件测试语句:文件类型、字符串是否相等、数字大小比较、多重条件判断,测试语句验证
目录 1.条件测试语句 2.文件表达式测试 2.1测试文件状态的条件表达式 2.2程序验证 2.2.1 单个文件验证 2.2.3.两个文件验证 3.字符串表达式测试 4.数字表达式测试 5.复合表达式测试 1.条件测试语句 在写shell脚本时,经常遇到的问题就是判断字符串是否相等&…...
linux_git使用
1. git的历史 git是开源的 2. git的理解 版本控制 只进行管理源文件 3. git的使用 3.1. git命令安装 sudo yum install git sudo apt install -y git 查看是否安装成功 $git --version 3.2. git使用注意事项 首次使用git需要输入用户名和邮件 gitignore࿱…...
Linux网络相关概念和重要知识(2)(UDP套接字编程、聊天室的实现、观察者模式)
目录 1.UDP套接字编程 (1)socket编程 (2)UDP的使用 ①socket ②bind ③recvfrom ④sendto 2.聊天室的实现 (1)整体逻辑 (2)对sockaddr_in的封装 (3)…...
2025年03月18日柯莱特(外包宁德)一面前端面试
目录 自我介绍你怎么从0到1搭建项目的webpack 的构建流程手写webpack插件你有什么想问我的吗 2. 你怎么从 0 到 1 搭建项目的 在面试中回答从 0 到 1 搭建前端项目,可按以下详细步骤阐述: 1. 项目前期准备 需求理解与分析 和产品经理、客户等相关人…...
汇川EASY系列之以太网通讯(MODBUS_TCP做主站)
汇川Easy系列以太网通讯中(MODBUSTCP,plc做主站),终于可以不用使用指令就可以完成了,全程通过简单的配置就可通讯。本文将通过EASY系列PLC与调试助手之间完成此操作。具体演示如下; 关于主站和从站的介绍 A/请求:即主动方 向被动方发送的一个要求的信息。 B/主站:发…...
uni-app jyf-parser将字符串转化为html 和 rich-text
uni-app jyf-parser将字符串转化为html-CSDN博客 方法二: rich-text | uni-app...
PyTorch中Batch Normalization1d的实现与手动验证
PyTorch中Batch Normalization1d的实现与手动验证 一、介绍 Batch Normalization(批归一化)是深度学习中常用的技术,用于加速训练并减少对初始化的敏感性。本文将通过PyTorch内置函数和手动实现两种方式,展示如何对三维输入张量…...
LoRA中黑塞矩阵、Fisher信息矩阵是什么
LoRA中黑塞矩阵、Fisher信息矩阵是什么 1. 三者的核心概念 黑塞矩阵(Hessian) 二阶导数矩阵,用于优化问题中判断函数的凸性(如牛顿法),或计算参数更新方向(如拟牛顿法)。 Fisher信息矩阵(Fisher Information Matrix, FIM) 统计学中衡量参数估计的不确定性,反映数据…...
Transformer中,Fisher矩阵与权重之间关系
Transformer中,Fisher矩阵与权重之间关系 目录 Transformer中,Fisher矩阵与权重之间关系一、Fisher矩阵与Transformer权重的关系二、Fisher矩阵的更新方式三、举例说明给出案例:Transformer权重矩阵,Fisher矩阵,说明对应关系和怎么更新二阶导数计算需要大量算力有什么方法…...
本地安装deepseek大模型,并使用 python 调用
首先进入 ollama 官网 https://ollama.com/点击下载 下载完成后所有都是下一步,就可以 点击搜索 Models : https://ollama.com/search然后点击下载: 选择后复制: ollama run deepseek-r1:32b例如: 让它安装完成后࿱…...
asp.net mvc 向前端响应json数据。用到jquery
最近在给客户开发提醒软件时,用asp.net mvc 开发。该框架已经集成了bootstrap,直接贴asp.net mvc 端代码: {Layout null; }<!DOCTYPE html><html> <head><meta name"viewport" content"widthdevice-width" /…...
《基于深度学习的指纹识别智能门禁系统》开题报告
个人主页:大数据蟒行探索者 1研究背景 1.1开发目的和意义 指纹识别作为生物特征识别领域的一项重要技术,在安全认证、犯罪侦查和个人身份验证等方面具有广泛应用前景。随着深度学习技术的迅猛发展,基于深度学习的指纹识别系统成为了当前研究…...
数据预处理流程与关键步骤解析
数据预处理流程图(Markdown格式): #mermaid-svg-b3mhJcpFWaJ9qMZ8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-b3mhJcpFWaJ9qMZ8 .error-icon{fill:#552222;}#mermaid-svg-b3m…...
单片机开发资源分析实战——以STM32F103ZET6为例子,分析我们的单片机
目录 第一件事情:为什么叫STM32F103ZET6 分析我们的资源手册 第二件事情,关心我们的GPIO引脚输出 第三件事情:去找对应外设的说明部分 本文章隶属于项目: Charliechen114514/BetterATK: This is a repo that helps rewrite ST…...
uv命令介绍(高性能Python包管理工具,旨在替代pip、pip-tools和virtualenv等传统工具)
文章目录 **主要功能**1. **快速安装和管理 Python 包**2. **生成和管理锁文件 (requirements.lock)**3. **创建虚拟环境**4. **与 poetry 兼容** **核心优势**1. **极快的速度**:基于 Rust 实现,利用多线程和缓存大幅加速依赖解析。2. **轻量且独立**&a…...
React Native进阶(六十):webview实现屏蔽所嵌套web页面异常弹窗
文章目录 一、前言二、解决方案三、注意事项四、拓展阅读 一、前言 在React Native项目集成web页面时,webview嵌套方式是常用方式。如果所嵌套的web页面由于某种不可控因素导致出现错误弹窗信息,webview作为web嵌套方式应该对其行为可控。 React Nativ…...
IS-IS原理与配置
一、IS-IS概述 IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO(International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionLessNet…...
响应式CMS架构优化SEO与用户体验
内容概要 在数字化内容生态中,响应式CMS架构已成为平衡搜索引擎可见性与终端用户体验的核心载体。该系统通过多终端适配技术,确保PC、移动端及平板等设备的内容渲染一致性,直接降低页面跳出率并延长用户停留时长。与此同时,智能S…...
mysql 主从配置
核心概念: 主服务器(Master):负责处理客户端的写操作,并将数据更改记录到二进制日志(binlog)中。从服务器(Slave):负责读取主服务器的二进制日志,…...
Windows下编译安装Qt5.15.0指南
1. 系统要求 操作系统: Windows 7 或更高版本(推荐 Windows 10/11)。 磁盘空间: 至少 20-30 GB(编译过程会生成大量中间文件)。 内存: 建议 8GB 或更高。 编译器: 需要安装 Visual Studio(推荐 MSVC 2017 或 MSVC 2…...
001-JMeter的安装与配置
1.前期准备 下载好JMeter : https://jmeter.apache.org/download_jmeter.cgi 下载好JDK : :Java Downloads | Oracle 中国 下载图中圈蓝的JMeter和JDK就行,让它边下载,我们边往下看 2.为什么要下载并安装JDK ? JMeter 是基于 Java 开发的工具&#…...
kube-score K8S Yaml静态代码分析工具详解
kube-score 是一款专注于 Kubernetes 配置文件的静态代码分析工具,旨在通过自动化检查帮助用户识别资源配置中的潜在问题,并遵循最佳实践以提升集群的安全性、稳定性和性能。以下是其核心功能、使用方法和应用场景的详细解析: 一、核心功能与…...
【Go】Go语言结构体笔记
整体介绍 虽然 Go 语言不是传统意义上的面向对象语言,但它提供了结构体(struct)来组织数据,并且可以为结构体绑定方法,从而达到面向对象的部分效果。 关键知识点包括: 结构体定义与实例化 定义结构体时使用…...
Oracle数据库性能优化全攻略:十大关键方向深度解析与实践指南
文章目录 一、SQL查询优化二、索引优化三、内存管理四、I/O优化五、分区表与分区索引六、并行处理七、统计信息管理八、锁与并发控制九、数据库参数调优十、应用设计优化结论 在当今数据驱动的时代,数据库的性能优化成为了确保企业应用高效运行的关键。Oracle作为业…...
Modern C++面试题及参考答案
目录 解释右值引用的定义及其与左值引用的核心区别 std::move 的实现原理是什么?为什么它本身不执行移动操作? 移动构造函数与拷贝构造函数的调用场景有何不同? 实现一个支持移动语义的类需要遵循哪些原则? 完美转发(Perfect Forwarding)的实现原理及 std::forward 的…...
【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用
一、液晶显示技术简介 1.RGB信号线 RGB是一种色彩模式,是工业界的一种颜色标准,是通过红(R)、绿(G)、蓝(B)三个颜色通道的变化,以及它们相互之间的叠加来得到各式各样的…...
Git push后撤销提交
一、介绍 当某次更改完工程后,push了本地仓库到云端,但是发现有地方改错了,想撤销这次推送,或者某次提交就更改了很小一部分,想和本地这次修改的合并为一次推送,省的在云端显示特别多次提交,显得…...
React多层级对象改变值--immer
reduxjs/toolkit底层就是immer,,,所以在使用redux的时候,直接赋值,就会响应式的数据 如果不使用reduxjs/toolkit,可以自己使用immer来实现 安装immer npm install immer引入produce函数,,prod…...
17153. 班级活动(蓝桥杯-python)
代码写法 import os import sys# 请在此输入您的代码n int(input()) a list(map(int,input().split()))da {} flag1 0 flag2 0for i in a:da[i] da.get(i,0)1for i,j in da.items():if j 1:flag1 1if j > 2:flag2 j-2if flag2 > flag1:print(flag2) else:print(…...
html5-qrcode前端打开摄像头扫描二维码功能
实现的效果如图所示,全屏打开并且扫描到二维码后弹窗提醒,主要就是使用html5-qrcode这个依赖库,html5-qrcode开源地址:GitHub - mebjas/html5-qrcode: A cross platform HTML5 QR code reader. See end to end implementation at:…...
【后端】【Django】【ORM】SearchFilter 详解
SearchFilter 详解 SearchFilter 是 Django REST Framework(DRF)提供的一个过滤器,用于在 ModelViewSet 视图集中支持搜索功能。它允许用户通过 URL 查询参数(默认 search)对多个字段进行模糊匹配。 一、基本用法 &a…...
python 实现一个简单的window 任务管理器
import tkinter as tk from tkinter import ttk import psutil# 运行此代码前,请确保已经安装了 psutil 库,可以使用 pip install psutil 进行安装。 # 由于获取进程信息可能会受到权限限制,某些进程的信息可能无法获取,代码中已经…...
使用密码连接Redis服务的两种方式
说明:本文介绍连接需要密码的Redis服务的两种方式 方式一 连接时,携带密码,如下: redis-cli -a [密码]如下: 有两个问题: 密码直接放在命令里,可通过 history 找到,不安全&#x…...
基于C语言实现的观察者模式 以温度监控系统为例
场景为 温度监控系统:当温度传感器检测到温度变化时,自动通知所有注册的显示器(如LCD、手机App)更新显示。 场景描述 主题(Subject):温度传感器,负责检测温度变化并通知观察者。 观察者(Observer):显示器(LCD显示器、手机App),订阅温度数据并在温度变化时更新显…...
英伟达黄仁勋2025GTC演讲深度解析:液冷GPU、AI工厂、机器人AI…...
目录 一、技术产品与架构升级:从芯片到算力工厂1. 新一代GPU与计算架构2. AI工厂与算力操作系统 二、AI技术演进:从生成式到物理AI1. AI发展的三大阶段2. 推理算力需求爆炸式增长 三、生态合作与行业落地1. CUDA生态与开源工具2. 跨行业合作案例 四、未来…...
学习Flutter:搭建第一个 Flutter 应用
引言 曾几何时,我们还在为 Android 和 iOS 各写一套 UI 而头疼,做一个需求像是两家公司在竞争。但 Flutter 的出现,改变了这一切。它让跨平台开发变得可能,让一个程序员的代码可以同时运行在多个设备上,省时省力&…...
lua实现面向对象(封装/继承/多态)
lua实现面向对象封装/继承/多态 lua实现面向对象(封装/继承/多态) lua实现面向对象(封装/继承/多态) print("***********面向对象**********") print("*************封装************") --表就是表现类的一种形式 --实现了new方法:本质上是创建一个空表&a…...
WX小程序
下载 package com.sky.utils;import com.alibaba.fastjson.JSONObject; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.Cl…...
【模拟面试】计算机考研复试集训(第十一天)
文章目录 前言一、专业面试1、什么是面向对象编程?2、软件工程的主要模型有哪些?3、Cache和寄存器的区别4、卷积层有哪些参数,它们代表什么?5、你有读博的打算吗?6、你的师兄/姐临近毕业,仍做不出成果&…...
【深度技术揭秘】 Android SystemUI锁屏界面动态布局重构:横竖屏智能适配指南
1. 问题背景与需求拆解 在Android 13系统定制中,发现平板横屏锁屏界面存在两大视觉问题: 时钟控件尺寸过大,与竖屏样式不统一 解锁图标位置异常,横向居中而非顶部居中(如图示) 需实现: 横竖屏…...
AI比人脑更强,因为被植入思维模型【20】卡尼曼双系统理论
定义 卡尼曼双系统理论思维模型是由诺贝尔经济学奖得主丹尼尔卡尼曼提出的,该理论认为人类的思维系统可以分为两个相互关联但又具有不同特点的子系统,即系统1(快思考)和系统2(慢思考)。系统1是基于直觉、经…...
修改服务器windows远程桌面默认端口号
修改服务器windows远程桌面默认端口号 在Windows服务器上修改远程桌面协议(RDP)的默认端口(3389)可以增强服务器的安全性,减少被恶意扫描和攻击的风险。以下是修改远程端口的详细步骤: 按 Win R 打开运行…...