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

如何在Spring Boot中校验用户上传的图片文件的两种方法

在现代应用中,用户上传图片是一个常见的需求。无论是社交平台、电子商务网站还是任何需要用户交互的应用,图片上传功能都显得尤为重要。但合理地校验用户上传的图片文件是必不可少的步骤,避免不合规的文件影响系统的稳定性和安全性。本文将介绍在Spring Boot中校验用户上传的图片文件的两种方式,帮助你更好地实现这一功能。

创建Spring Boot项目

在开始之前,首先需要创建一个Spring Boot项目。如果你使用的是Spring Initializr,可以选择“Spring Web”和“Spring Boot DevTools”依赖,方便开发和调试。使用IDE(如IntelliJ IDEA或Eclipse)创建项目后,可以在pom.xml文件中引入必要的依赖。

配置文件上传的基本设置

application.properties文件中,可以设置文件上传的相关属性。例如,可以设置上传文件的大小限制:

spring.servlet.multipart.max-file-size=2MB
spring.servlet.multipart.max-request-size=2MB

这些设置将限制用户上传的文件大小,避免过大的文件影响系统性能。

使用@Valid@MultipartFile进行文件校验

在Spring Boot中,可以使用@Valid@MultipartFile注解来实现文件上传和校验。首先,需要创建一个简单的控制器来处理文件上传请求。

import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.validation.constraints.NotNull;@RestController
@RequestMapping("/upload")
public class FileUploadController {@PostMappingpublic String uploadFile(@RequestParam("file") @NotNull MultipartFile file) {// 校验文件类型和大小if (!isImage(file)) {return "文件类型不符合要求!";}// 处理文件保存逻辑return "文件上传成功!";}private boolean isImage(MultipartFile file) {String contentType = file.getContentType();return contentType != null && (contentType.startsWith("image/"));}
}

在这个控制器中,定义了一个uploadFile方法来处理上传的文件。通过@RequestParam注解获取文件,并使用@NotNull确保用户上传的文件不为null。接着,调用isImage方法来校验文件类型,如果不是图片类型,就返回错误信息。

使用Apache Commons FileUpload进行更复杂的校验

对于更复杂的文件校验需求,可以使用Apache Commons FileUpload库。它提供了更多的功能,能够处理文件上传的细节。在项目中添加Apache Commons FileUpload的依赖:

<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version>
</dependency>

然后,可以创建一个新的控制器来处理文件上传:

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.util.List;@RestController
@RequestMapping("/upload")
public class FileUploadCommonsController {@PostMappingpublic String uploadFile(HttpServletRequest request) {if (!ServletFileUpload.isMultipartContent(request)) {return "请求类型不正确!";}try {List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);for (FileItem item : items) {if (!item.isFormField() && item.getSize() > 0) {// 校验文件类型if (!isImage(item.getContentType())) {return "文件类型不符合要求!";}// 处理文件保存逻辑// item.write(new File("path/to/save/" + item.getName()));}}return "文件上传成功!";} catch (Exception e) {e.printStackTrace();return "文件上传失败!";}}private boolean isImage(String contentType) {return contentType != null && (contentType.startsWith("image/"));}
}

在这个控制器中,uploadFile方法使用Apache Commons FileUpload库来处理文件上传。通过ServletFileUpload类,我们可以解析请求并获取文件项。然后,遍历文件项并校验文件类型和大小。

添加更多校验逻辑

在实际应用中,可能还需要添加更多的校验逻辑,比如文件大小、文件名的合法性等。可以在isImage方法中进行扩展,以满足项目需求。

private boolean isImage(String contentType) {return contentType != null && (contentType.startsWith("image/"));
}private boolean isValidFileName(String fileName) {return fileName != null && !fileName.contains("..") && fileName.matches("^[a-zA-Z0-9_.-]+$");
}

在这个方法中,isValidFileName用来校验文件名,确保文件名不包含非法字符。

处理上传的文件

一旦校验通过,就可以处理上传的文件。可以将其保存到本地文件系统、云存储或其他存储服务中。以下是一个简单的保存逻辑示例:

File uploadDir = new File("uploads");
if (!uploadDir.exists()) {uploadDir.mkdirs();
}
item.write(new File(uploadDir, item.getName()));

这段代码会将文件保存到项目的uploads文件夹中。

测试文件上传功能

完成以上步骤后,可以使用Postman或其他工具测试文件上传功能。确保发送一个包含图片文件的POST请求到http://localhost:8080/upload,并检查返回的响应信息是否符合预期。

记录日志和异常处理

在实际开发中,记录日志和处理异常是非常重要的。可以使用SLF4J与Logback日志库,在文件上传的关键步骤中添加日志信息,方便后续的调试和排查问题。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;private final Logger logger = LoggerFactory.getLogger(FileUploadController.class);logger.info("开始上传文件: {}", file.getOriginalFilename());

总结

通过以上步骤,我们学习了如何在Spring Boot中校验用户上传的图片文件。我们探讨了使用@Valid@MultipartFile的简单校验方法,以及使用Apache Commons FileUpload进行更复杂的校验。校验用户上传的文件不仅提升了系统的稳定性,也保障了安全性。在实际项目中,灵活运用这些技巧将大大提高你的开发效率!快去实践一下吧!

相关文章:

如何在Spring Boot中校验用户上传的图片文件的两种方法

在现代应用中&#xff0c;用户上传图片是一个常见的需求。无论是社交平台、电子商务网站还是任何需要用户交互的应用&#xff0c;图片上传功能都显得尤为重要。但合理地校验用户上传的图片文件是必不可少的步骤&#xff0c;避免不合规的文件影响系统的稳定性和安全性。本文将介…...

如何将一个项目推送到gitlab

1. 初始化本地项目为 Git 仓库 若本地项目还不是 Git 仓库&#xff0c;要先将其初始化为 Git 仓库。在项目根目录下打开终端&#xff0c;执行如下命令&#xff1a; git init 2. 添加文件到暂存区 使用 git add 命令把项目中的文件添加到暂存区。若要添加所有文件&#xff0…...

【JavaWeb学习Day24】

Web前端实战 Vue工程化 Vue是一款用于构建用户界面的渐进式的JavaScript框架。&#xff08;官方&#xff1a;https://cn.vuejs.org&#xff09; Vue项目工程化&#xff1a;在企业级的前端项目开发中&#xff0c;把前端开发所需求的工具、技术、流程、经验等进行规范、标准化。…...

Scratch034豌豆发射(下)

知识回顾 1、克隆体点击角色的判断 2、使用克隆体时“停止该角色其他脚本”积木的作用范围。 效果演示 提示:这里可以添加本文要记录的大概内容每隔一段时间,舞台右侧就会出现多个除草机向左移动 点击不同位置的豌豆射手,可以发射豌豆攻击对应位置的除草机 除草机被豌豆击中…...

nacos下载及安装

下载官方最新稳定版 github下载较慢&#xff0c;推荐下面的下载链接 Nacos Server 下载 | Nacos 官网 点击下载和试用下载最新稳定版 Nacos Server 下载 | Nacos 官网 配置检查&#xff08;可选&#xff09; 默认情况下&#xff0c;Nacos 使用内置的 Derby 数据库&#x…...

javase集合框架Map篇

一、常见的Map的实现 有HashMap、Hashtable、LinkedHashMap、TreeMap、ConcurrentHashMap。 二、HashMap和Hashtable 的区别 HashMap&#xff1a;底层是基于数组链表&#xff0c;非线程安全的&#xff0c;默认容量是16、允许有空的健和值。 Hashtable&#xff1a;基于哈希表…...

【RAGFlow】windows本地pycharm运行

原因 由于官方只提供了docker部署&#xff0c;基于开源代码需要实现自己内部得逻辑&#xff0c;所以需要本地pycharm能访问&#xff0c;且docker运行依赖得其余组件&#xff0c;均需要使用开发服务器得配置。 修改过程 安装python 项目依赖于Python 版本&#xff1a;>3.1…...

STM32初始安装

前言 很多人刚买来STM32就迫不及待地想要用它来写程序&#xff0c;看见STM32开发版和ST-Link上有几个插口就直接连接&#xff0c;结果就像我一样一不小心就导致ST -Link烧坏了&#x1f602; 所以本篇博客将做最基础的但是对于小白来说最重要的教学&#xff0c;STM32的线路连接…...

数据库系统概论(二)数据模型

数据库系统概论&#xff08;二&#xff09;数据模型 数据库系统概论&#xff08;二&#xff09;数据模型前言一、数据建模二、概念模型三、数据模型的三要素四、层次模型五、网状模型六、关系模型 总结&#xff08;核心概念速记&#xff09;&#xff1a; 数据库系统概论&#x…...

深入理解C语言链表:数据结构的基石

在C语言的编程宇宙中&#xff0c;链表就像是一座稳固的基石&#xff0c;支撑着众多复杂程序的构建。它以独特的魅力和强大的功能&#xff0c;在解决各类编程难题时发挥着至关重要的作用。今天&#xff0c;就让我们一同深入探索链表的奥秘。 目录 一、链表初相识 二、链表的结…...

微信小程序文件存储和获取的详细方案

在微信小程序中&#xff0c;要根据索引&#xff08;如自定义标识符&#xff09;检查是否存在对应的文件&#xff0c;可以通过以下方案实现。这里假设你已通过某种方式将文件路径与索引关联存储&#xff08;例如使用本地缓存 Storage&#xff09;&#xff0c;以下是完整流程&…...

java BCC异或校验例子

需求 对一个十六进制的字符串进行BCC校验 方法 private static String XORCheck(String rawMsg) {// 16进制字符串需要转成10进制数组进行校验&#xff0c;然后再返回16进制字符串用于与原来的字符匹配byte[] bytes HexDumpMsgFormat.hexStr2DesBytes(rawMsg);return BytesUt…...

[machine learning] DP(Data Parallel) vs DDP(Distributed Data Parallel)

DP和DDP是并行训练的两种方法&#xff0c;本文简单介绍它们两者的区别。 一、DP (Data Parallel) DP是单进程&#xff0c;多线程的&#xff0c;每个线程负责一个GPU&#xff0c;它只适用于一台机器。DP训练的流程如下图所示(图片转载自&#xff1a;https://medium.com/mlshar…...

今日头条文章爬虫教程

今日头条文章爬虫教程 随着互联网的发展&#xff0c;新闻资讯类平台如今日头条积累了海量的数据。对于数据分析师、研究人员等群体来说&#xff0c;获取这些数据进行分析和研究具有重要的价值。本文将介绍如何使用Python编写爬虫&#xff0c;爬取今日头条的文章数据。 一、准…...

鸿蒙应用开发—数据持久化之SQLite

文章目录 SQLite简介创建数据库添加数据查询数据更新数据删除数据升级数据库使用事务参考 SQLite简介 SQLite是一个轻量级关系数据库&#xff0c;占用资源很少&#xff0c;只有几百KB的大小&#xff0c;无需服务器支撑&#xff0c;是一个零配置、事务性的SQL数据库引擎。 相对…...

Docker Compose 部署 steamcmd 安装奈斯服务端

由于打算在云端服务器部署奈斯启示录服务端跟朋友们一起玩&#xff0c; 所以在云端搭建服务器&#xff0c; 顺便写下本文章记录搭建的过程。 博主博客 https://blog.uso6.comhttps://blog.csdn.net/dxk539687357 要使用 Docker Compose 部署 steamcmd&#xff08;Steam 命令行…...

K8s 1.27.1 实战系列(八)Service

一、Service介绍 1、Service 的作用与核心功能 Service 是 Kubernetes 中用于抽象一组 Pod 并提供稳定访问入口的资源。它解决了以下问题: ​Pod IP 不固定:Pod 可能因故障、扩缩容或更新导致 IP 变化,Service 通过 ClusterIP(虚拟 IP)提供固定访问地址。​负载均衡:自动…...

Scala编程_实现Rational的基本操作

在Scala中实现一个简单的有理数&#xff08;Rational&#xff09;类&#xff0c;并对其进行加法、比较等基本操作. 有理数的定义 有理数是可以表示为两个整数的比值的数&#xff0c;通常形式为 n / d&#xff0c;其中 n 是分子&#xff0c;d 是分母。为了确保我们的有理数始终…...

Android15 Camera框架中的StatusTracker

StatusTracker介绍 StatusTracker是Android15 Camera框架中用来协调Camera3各组件之间状态转换的类。 StatusTracker线程名&#xff1a;std::string("C3Dev-") mId "-Status" Camera3 StatusTracker工作原理 StatusTracker实现批处理&#xff08;状态…...

Manus 演示案例:谷歌公司运营模拟器游戏体验

一、项目背景与愿景 在科技行业蓬勃发展的当下&#xff0c;谷歌作为行业巨头&#xff0c;其成长历程充满了无数值得深入探究的决策智慧。这些决策不仅塑造了谷歌的辉煌&#xff0c;也为全球企业的发展提供了宝贵的借鉴。本项目旨在打造一款以谷歌公司发展为蓝本的运营模拟器游戏…...

【大模型基础_毛玉仁】2.1 大数据+大模型→新智能

【大模型基础_毛玉仁】2.1 大数据大模型→新智能 2.大语言模型架构2.1 大数据大模型→新智能2.1.1 大数据大模型→能力增强1&#xff09;Kaplan-McCandlish 扩展法则2&#xff09;Chinchilla 扩展法则 2.1.2 大数据大模型→能力扩展 2.大语言模型架构 大语言模型&#xff08;L…...

20天 - TCP 和 UDP 有什么区别?说说 TCP 的三次握手?TCP 是用来解决什么问题?

TCP 和 UDP 有什么区别&#xff1f; TCP&#xff08;传输控制协议&#xff09;和 UDP&#xff08;用户数据报协议&#xff09;都是传输层的网络协议&#xff0c;它们的主要区别如下&#xff1a; 连接方式 TCP&#xff1a;面向连接的协议&#xff0c;类似于打电话&#xff0c…...

【设计模式】掌握建造者模式:如何优雅地解决复杂对象创建难题?

概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。 由于实现了构建和装配的解耦。…...

【网络安全工程】任务11:路由器配置与静态路由配置

目录 一、概念 二、路由器配置 三、配置静态路由CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog 一、概念 1、路由器的作用&#xff1a;通过路由表进行数据的转发。 2、交换机的作用&#xff1a;通过学习和识别 MAC 地址&#xff0c;依据 M…...

10 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar头像组件开发教程(一)

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 目录 第一篇&#xff1a;Avatar 组件基础概念与设计1. 组件概述2. 接口设计2.1 形状类型定义2.2 尺寸类型定义2.3 组件属性接口 3. 设计原则4. 使用…...

蓝桥杯备赛-差分-重新排序

问题描述 给定一个数组 AA 和一些查询 Li,RiLi​,Ri​, 求数组中第 LiLi​ 至第 RiRi​ 个元素之和。 小蓝觉得这个问题很无聊, 于是他想重新排列一下数组, 使得最终每个查 询结果的和尽可能地大。小蓝想知道相比原数组, 所有查询结果的总和最多可 以增加多少? 输入格式 输…...

①Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网

Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网https://item.taobao.com/item.htm?ftt&id784749793551 MODBUS TCP 通信单元 MODBUS TCP 转 RS485 MS-A1-50X1 系列概述 MS-A1-50X1 系列概述 MS-A1-50X1系列作为MODBUS TCP通信的服务器进行动作。可通…...

2025年四川烟草工业计算机岗位备考详细内容

四川烟草工业计算机岗位备考详细内容&#xff08;持续更新&#xff09; 文章目录 四川烟草工业计算机岗位备考详细内容&#xff08;持续更新&#xff09;一、计算机基础&#xff08;一&#xff09;计算机发展与组成计算机发展历程计算机系统组成软件系统 &#xff08;二&#x…...

Git 设置全局代理

Git 设置全局代理或项目代理 git config&#xff1a; 全局配置&#xff0c;设置git代理服务器 # 设置 HTTP 代理 git config --global http.proxy http://127.0.0.1:7897# 设置 HTTPS 代理 git config --global https.proxy http://127.0.0.1:7897# 设置所有协议的代理&…...

【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 1、新建Java项目2、单击项目名&#xff0c;并连续按两次shift键3、在搜索栏搜索"添加框架支持"4、勾选Web应用程序5、最终界面6、添加Tomcat 1、新建Java项目 2、单击项目名&#xff0c;并连续按两次…...

ROS实践(二)构建Gazebo机器人模型文件urdf

目录 一、基础语法 1. urdf文件组成 2. robot根标签 3. link 和 joint标签 4. sensor标签 二、 实验&#xff1a;使用launch文件启动rviz查看机器人模型 1. 编写机器人模型的urdf文件。 2. 编写launch文件。 3. 运行launch&#xff0c;查看效果。 URDF&#xff08;Unifi…...

论文阅读-秦汉时期北方边疆组织的空间互动模式与直道的定位(中国)

论文英文题目&#xff1a;A spatial interaction model of Qin-Han Dynasty organisation on the northern frontier and the location of the Zhidao highway (China) 发表于&#xff1a;journal of archaeological science&#xff0c;影响因子&#xff1a;3.030 论文主要是…...

【MySQL_04】数据库基本操作(用户管理--配置文件--远程连接--数据库信息查看、创建、删除)

文章目录 一、MySQL 用户管理1.1 用户管理1.11 mysql.user表详解1.12 添加用户1.13 修改用户权限1.14 删除用户1.15 密码问题 二、MySQL 配置文件2.1 配置文件位置2.2 配置文件结构2.3 常用配置参数 三、MySQL远程连接四、数据库的查看、创建、删除4.1 查看数据库4.2 创建、删除…...

设计模式之建造者模式:原理、实现与应用

引言 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它通过将复杂对象的构建过程分解为多个简单的步骤&#xff0c;使得对象的创建更加灵活和可维护。建造者模式特别适用于构建具有多个组成部分的复杂对象。本文将深入探讨建造者模式的原…...

2025最新群智能优化算法:山羊优化算法(Goat Optimization Algorithm, GOA)求解23个经典函数测试集,MATLAB

一、山羊优化算法 山羊优化算法&#xff08;Goat Optimization Algorithm, GOA&#xff09;是2025年提出的一种新型生物启发式元启发式算法&#xff0c;灵感来源于山羊在恶劣和资源有限环境中的适应性行为。该算法旨在通过模拟山羊的觅食策略、移动模式和躲避寄生虫的能力&…...

Apache Log4j 2

目录 1. Apache Log4j 2 简介 1.1 什么是Log4j 2&#xff1f; 1.2 Log4j 2 的主要特性 2. Log4j 2 的核心组件 2.1 Logger 2.2 Appender 2.3 Layout 2.4 Filter 2.5 Configuration 3. Log4j 2 的配置 4. Log4j 2 的使用示例 4.1 Maven 依赖 4.2 示例代码 4.3 输出…...

ArcGIS Pro字段编号相关代码

一、引言 在地理信息系统&#xff08;GIS&#xff09;的数据管理与分析中&#xff0c;字段操作是不可或缺的一环。 SHP文件作为常见的地理数据存储格式&#xff0c;其字段的灵活运用对于数据的组织、展示和分析具有重要意义。 在实际工作中&#xff0c;常常需要对字段进行编…...

ubuntu22.04机器人开发环境配置

1. ros2环境配置&#xff08;humble&#xff09; #配置源 # https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl -y# …...

万字深度剖析——JS数据结构(上)

数组本质是对象&#xff0c;键就是索引&#xff0c;值就是元素。 push /unshift 在数组最后/最前添加 pop /shift 把数组最后/最前的元素删除,返回的是被删除的元素 splice(0,2&#xff0c;5)从第0给位置开始删除2个元素&#xff0c;并添加一个元素 数组自带的…...

golang dlv调试工具

golang dlv调试工具 在goland2022.2版本 中调试go程序报错 WARNING: undefined behavior - version of Delve is too old for Go version 1.20.7 (maximum supported version 1.19) 即使你go install了新的dlv也无济于事 分析得出Goland实际使用的是 Goland安装目录下dlv 例…...

【算法 C/C++】二维前缀和

2025 - 03 - 08 - 第 70 篇 Author: 郑龙浩 / 仟濹 【二维前缀和】 文章目录 前缀和与差分 - 我的博客前缀和(二维)1 基本介绍(1) **sum[i][j] 表示什么&#xff1f;&#xff1f;&#xff1f;**(2) **前缀和怎么求&#xff1f;&#xff1f;&#xff1f;计算 sum[i][j]&#xf…...

如何使用postman来测试接口

一、postman的介绍与下载 可参考&#xff1a; https://blog.csdn.net/freeking101/article/details/80774271 二、api获取网站 阿里云API应用市场 地址&#xff1a;云市场_镜像市场_软件商店_建站软件_服务器软件_API接口_应用市场 - 阿里云 三、具体测试过程 可模拟浏览…...

olmOCR:高效精准的 PDF 文本提取工具

在日常的工作和学习中&#xff0c;是否经常被 PDF 文本提取问题困扰&#xff1f;例如&#xff1a; 想从学术论文 PDF 中提取关键信息&#xff0c;却发现传统 OCR 工具识别不准确或文本格式混乱&#xff1f;需要快速提取商务合同 PDF 中的条款内容&#xff0c;却因工具不给力而…...

Vue项目通过内嵌iframe访问另一个vue页面,获取token适配后端鉴权(以内嵌若依项目举例)

1. 改造子Vue项目进行适配(ruoyi举例) (1) 在路由文件添加需要被外链的vue页面配置 // 若依项目的话是 router/index.js文件 {path: /contrast,component: () > import(/views/contrast/index),hidden: true },(2) 开放白名单 // 若依项目的话是 permission.js 文件 cons…...

请谈谈 HTTP 中的重定向,如何处理 301 和 302 重定向?

HTTP重定向深度解析&#xff1a;301与302的正确使用姿势 一、重定向本质解析 重定向就像快递员送快递时发现地址变更&#xff0c;新地址会写在包裹单的"改派地址"栏。 浏览器收到3xx状态码时&#xff0c;会自动前往Location头指定的新地址。 常用状态码对比&…...

隧道定向号角喇叭为隧道安全保驾护航

隧道广播系统的搭建&#xff1a;科技赋能&#xff0c;打造安全高效的隧道环境。隧道作为现代交通网络的重要组成部分&#xff0c;其安全管理和信息传递的效率直接关系到整个交通系统的运行。然而&#xff0c;隧道环境的特殊性——封闭、狭窄、回声干扰多&#xff0c;使得传统的…...

RuleOS:区块链开发的“破局者”,开启Web3新纪元

RuleOS&#xff1a;区块链开发的“破冰船”&#xff0c;驶向Web3的星辰大海 在区块链技术的浩瀚宇宙中&#xff0c;一群勇敢的探索者正驾驶着一艘名为RuleOS的“破冰船”&#xff0c;冲破传统开发的冰层&#xff0c;驶向Web3的星辰大海。这艘船&#xff0c;正以一种前所未有的姿…...

C#程序结构及基本组成说明

C# 程序的结构主要由以下几个部分组成,以下是对其结构的详细说明和示例: 1. 基本组成部分 命名空间 (Namespace) 用于组织代码,避免命名冲突。通过 using 引入其他命名空间。 using System; // 引入 System 命名空间类 (Class) C# 是面向对象的语言,所有代码必须定义在类或…...

Django与数据库

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲alpha策略制定后的测试问题 mysql配置 Django模型体现了面向对象的编程技术&#xff0c;是一种面向对象的编程语言和不兼容类型能相互转化的编程技术&#xff0c;这种技术也叫ORM&#…...

力扣热题 100:二叉树专题进阶题解析(后7道)

系列文章目录 力扣热题 100&#xff1a;哈希专题三道题详细解析(JAVA) 力扣热题 100&#xff1a;双指针专题四道题详细解析(JAVA) 力扣热题 100&#xff1a;滑动窗口专题两道题详细解析&#xff08;JAVA&#xff09; 力扣热题 100&#xff1a;子串专题三道题详细解析(JAVA) 力…...