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

QT(15)- QFile

1 函数

1.1 copy

bool QFile::copy(const QString &newName)
QFile::copy(const QString &newName) 是 Qt 中用于复制文件的函数,将 fileName() 所指向的文件复制到 newName 指定的新位置。

在复制文件之前,源文件会先被关闭。如果被复制的文件是一个符号链接(symlink),那么它所引用的文件会被复制,而不是链接本身。除了权限以外,其他的文件元数据都不会被复制。

如果成功复制文件,则返回 true;否则返回 false。请注意,如果 newName 已经存在一个同名文件,则 copy() 函数将返回 false,表示无法覆盖该文件,不会执行复制操作。

必须指定完整的路径和文件名

1.2 exists

bool QFile::exists()
QFile::exists() const 是 Qt 中用于检查文件是否存在的函数,如果文件存在则返回 true;否则返回 false。

该函数没有参数,它使用 fileName() 方法获取当前 QFile 对象表示的文件路径,并检查该文件是否存在。如果文件存在,则返回 true;否则返回 false。

bool QFile::exists(const QString &fileName)
是一个静态函数,用于检查指定文件名的文件是否存在,如果文件存在则返回 true;否则返回 false。

该函数的参数是一个 QString 对象,表示要检查的文件名。函数将检查该文件名指定的文件是否存在,如果文件存在,则返回 true;否则返回 false。

需要注意的是,如果 fileName 是一个符号链接(symlink)并且指向一个不存在的文件,那么该函数将返回 false。

1.3 link

bool QFile::link(const QString &linkName)
QFile::link(const QString &linkName) 是 Qt 中用于创建链接(link)的函数。它会在文件系统中创建一个名为 linkName 的链接,指向当前 QFile 对象表示的文件。链接的类型(例如在 Windows 上是快捷方式或在 Unix 上是符号链接)取决于底层文件系统。如果成功创建了链接,则返回 true;否则返回 false。

需要注意的是,该函数不会覆盖文件系统中已经存在的任何实体。如果 linkName 已经存在,则 link() 函数将返回 false,并将 error() 设置为 QFile::RenameError,表示无法创建链接。

另外,需要注意的是,在 Windows 上要创建有效的链接,linkName 必须具有 .lnk 文件扩展名

 QString name = "E:/dd/QT/test/FileDemo/bin/";QFile file("1.txt");bool ok = file.link(name+"1.lnk");if(ok){qDebug()<<"true";}else{qDebug()<<"false";}

1.4 open

bool open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)

QFile::open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) 是 QFile 类中用于打开现有文件句柄的函数。它使用给定的文件句柄 fh 以指定的模式 mode 打开文件,并使用 handleFlags 指定文件句柄标志。如果成功打开文件,则返回 true;否则返回 false。

需要注意的是,如果文件打开成功并使用 QFile 对象进行操作,那么 QFile::close() 函数的行为将受到 QFileDevice::AutoCloseHandle 标志的控制。如果 AutoCloseHandle 标志被指定,而且这个函数成功执行,那么调用 QFile::close() 将关闭被采用的文件句柄。否则,QFile::close() 不会真正关闭文件,只是将其刷新。

另外需要注意的是,如果文件句柄 fh 指向的不是一个常规文件(例如,它是标准输入、标准输出或标准错误输出),那么您可能无法使用 QFile 对象的 seek() 函数,而且 size() 函数会返回0。有关更多信息,请参见 QIODevice::isSequential()。

由于该函数打开文件时没有指定文件名,因此不能使用该 QFile 对象与 QFileInfo 配合使用。

需要注意的是,在 Windows 平台上,必须以二进制模式打开文件句柄 fh(即,模式字符串必须包含 ‘b’,例如 “rb” 或 “wb”),才能访问文件和其他随机访问设备。如果向模式中传递 QIODevice::Text,Qt 将转换行尾字符。而对于顺序设备(例如标准输入和标准输出),不受此限制。

如果要在控制台应用程序中使用标准输入、标准输出和标准错误输出流,则需要启用控制台应用程序支持。为此,需要在应用程序的项目文件中添加以下声明:

CONFIG += console

下面是一个使用 QFile::open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) 函数打开现有文件句柄的示例代码:

#include <QFile>
#include <cstdio>int main()
{FILE *fh = std::fopen("my_file.txt", "r");if (!fh) {return 1;}QFile file;if (file.open(fh, QIODevice::ReadOnly)) {// File opened successfully}return 0;
}

bool open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
QFile::open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) 是 QFile 类中用于打开现有文件描述符的函数。它使用给定的文件描述符 fd 以指定的模式 mode 打开文件,并使用 handleFlags 指定文件句柄标志。如果成功打开文件,则返回 true;否则返回 false。

需要注意的是,如果文件打开成功并使用 QFile 对象进行操作,那么 QFile::close() 函数的行为将受到 QFileDevice::AutoCloseHandle 标志的控制。如果 AutoCloseHandle 标志被指定,而且这个函数成功执行,那么调用 QFile::close() 将关闭被采用的文件句柄。否则,QFile::close() 不会真正关闭文件,只是将其刷新。

另外需要注意的是,如果文件描述符 fd 指向的不是一个常规文件(例如,它是标准输入、标准输出或标准错误输出),那么您可能无法使用 QFile 对象的 seek() 函数,而且 size() 函数会返回0。有关更多信息,请参见 QIODevice::isSequential()。

由于该函数打开文件时没有指定文件名,因此不能使用该 QFile 对象与 QFileInfo 配合使用。

下面是一个使用 QFile::open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) 函数打开现有文件描述符的示例代码:

#include <QFile>
#include <unistd.h>int main()
{int fd = ::open("my_file.txt", O_RDONLY);if (fd == -1) {return 1;}QFile file;if (file.open(fd, QIODevice::ReadOnly)) {// File opened successfully}return 0;
}

在此示例中,我们使用标准 C 函数 ::open() 打开一个文件,然后将文件描述符传递给 QFile::open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) 函数来打开文件。

如果文件成功打开,则程序将会执行相应的操作。需要注意的是,在此示例中,我们没有手动关闭文件,因为 QFile 对象销毁时会自动关闭该文件。

bool QFile::open(QIODevice::OpenMode mode)
QFile::open(QIODevice::OpenMode mode) 是 QFile 类中的函数,用于打开文件并指定打开模式。如果打开文件成功,返回 true;否则返回 false。

打开模式必须为 QIODevice::ReadOnly、QIODevice::WriteOnly 或 QIODevice::ReadWrite,并且可以具有其他标志,例如 QIODevice::Text 和 QIODevice::Unbuffered。

需要注意的是,在 WriteOnly 或 ReadWrite 模式下,如果相关文件不存在,此函数将在打开文件之前尝试创建一个新文件。

1.5 remove

bool QFile::remove()
QFile::remove() 是 QFile 类中的函数,用于删除指定的文件。如果成功删除文件,则返回 true,否则返回 false。

需要注意的是,删除文件前会自动关闭该文件。

bool QFile::remove(const QString &fileName)
静态函数
QFile::remove(const QString &fileName) 是 QFile 类中的函数的重载版本,用于删除指定的文件。如果成功删除文件,则返回 true,否则返回 false。
需要注意的是,删除文件前会自动关闭该文件。

1.6 rename

bool QFile::rename(const QString &newName)
QFile::rename(const QString &newName) 是 QFile 类中的函数,用于将当前指定的文件重命名为 newName。如果成功重命名文件,则返回 true,否则返回 false。
需要注意的是,如果已存在名为 newName 的文件,则 rename() 函数将返回 false,并不会覆盖原有文件。
重命名文件前会自动关闭该文件。
如果重命名操作失败,Qt 将尝试将该文件的内容复制到 newName,然后删除该文件,仅保留 newName。如果复制操作失败或者无法删除该文件,则将删除目标文件 newName,以恢复旧状态。

bool QFile::rename(const QString &oldName, const QString &newName)
静态函数
QFile::rename(const QString &oldName, const QString &newName) 是 QFile 类中的另一个函数,用于将旧文件名 oldName 重命名为新文件名 newName。如果成功重命名文件,则返回 true,否则返回 false。

需要注意的是,如果已存在名为 newName 的文件,则 rename() 函数将返回 false,并不会覆盖原有文件。

1.7 setFileName

void QFile::setFileName(const QString &name)
QFile::setFileName(const QString &name) 是 QFile 类中的函数,用于设置文件的名称。文件名可以没有路径、有相对路径或绝对路径。

请注意,如果文件已经被打开,请不要调用此函数。

如果文件名没有路径或有相对路径,则 open() 调用时所在的应用程序的当前目录路径将被使用。

file.setFileName("3.txt");
bool ok = file.open(QIODevice::WriteOnly);if(ok)
{qDebug()<<"true";file.write("hello\n",6);
}
else
{qDebug()<<"false";
}
file.close();

1.8 symLinkTarget

QString QFile::symLinkTarget() const
QFile::symLinkTarget() const 是 QFile 类中的函数,用于返回符号链接所指向的文件或目录的绝对路径,如果对象不是符号链接,则返回一个空字符串。

需要注意的是,返回的文件名字符串可能并不代表一个实际存在的文件,它只是一个字符串。如果符号链接指向一个实际存在的文件,则 QFile::exists() 函数将返回 true。

2 虚函数

virtual QString fileName() const override
用于返回当前文件的路径和名称。

virtual bool open(QIODevice::OpenMode mode) override
见1.4

virtual QFileDevice::Permissions permissions() const override
用于返回当前文件的权限。
返回值是 QFileDevice::Permissions 类型,其中包含一些标志,表示文件的不同权限,例如可读、可写、可执行等。
以下是 QFileDevice::Permissions 中定义的枚举值:

QFileDevice::ReadOwner: 文件所有者可读取。
QFileDevice::WriteOwner: 文件所有者可写入。
QFileDevice::ExeOwner: 文件所有者可执行。
QFileDevice::ReadUser: 文件用户可读取。
QFileDevice::WriteUser: 文件用户可写入。
QFileDevice::ExeUser: 文件用户可执行。
QFileDevice::ReadGroup: 文件组可读取。
QFileDevice::WriteGroup: 文件组可写入。
QFileDevice::ExeGroup: 文件组可执行。
QFileDevice::ReadOther: 其他用户可读取。
QFileDevice::WriteOther: 其他用户可写入。
QFileDevice::ExeOther: 其他用户可执行。
可以使用按位或运算符将多个值组合在一起

virtual bool resize(qint64 sz) override
使用前需要先open文件
类中的函数,用于改变文件的大小,使其变为指定的大小 sz 字节。
如果文件原本较小,resize() 将会在文件末尾添加空字节,以扩展文件大小。如果文件原本较大,resize() 将截断文件,并将其大小设置为指定的大小 sz 字节。

该函数返回一个 bool 类型的值,指示函数是否成功执行。如果返回值为 true,表示函数执行成功,否则表示函数执行失败。

virtual bool setPermissions(QFileDevice::Permissions permissions) override
设置权限
virtual qint64 size() const override
返回文件大小

3 静态函数

bool copy(const QString &fileName, const QString &newName)
见1.1

QString decodeName(const QByteArray &localFileName)
QString decodeName(const char *localFileName)
decodeName() 是 QFile 类的静态函数,用于将本地文件名转换为字符串。在大多数情况下,文件名都可以使用 UTF-8 编码。然而,有些操作系统(如 Windows)使用本地编码来存储文件名。因此,在读取这些文件时,需要将本地编码转换为 Unicode 编码,以便正确地显示文件名。
decodeName() 函数可以将本地编码的文件名转换为 Unicode 编码的字符串。该函数有两种重载形式:
QString QFile::decodeName(const QByteArray &localFileName):将 localFileName 转换为字符串。
QString QFile::decodeName(const char *localFileName):将 C 字符串 localFileName 转换为字符串。

QByteArray encodeName(const QString &fileName)
encodeName() 是 QFile 类的静态函数,用于将字符串转换为本地编码的文件名。在大多数情况下,文件名都可以使用 UTF-8 编码。然而,有些操作系统(如 Windows)使用本地编码来存储文件名。因此,在写入这些文件时,需要将 Unicode 编码的文件名转换为本地编码,以便正确地写入文件。

encodeName() 函数可以将 Unicode 编码的文件名转换为本地编码的字节数组。该函数有一个形式如下的重载:QByteArray QFile::encodeName(const QString &fileName):将 fileName 转换为本地编码的字节数组。

bool exists(const QString &fileName)
见1.2

bool link(const QString &fileName, const QString &linkName)
见1.3

QFileDevice::Permissions permissions(const QString &fileName)
见2.3

bool remove(const QString &fileName)
见1.5

bool rename(const QString &oldName, const QString &newName)
见1.6

bool resize(const QString &fileName, qint64 sz)
见2
bool setPermissions(const QString &fileName, QFileDevice::Permissions permissions)
见2
QString symLinkTarget(const QString &fileName)
见1.8

相关文章:

QT(15)- QFile

1 函数 1.1 copy bool QFile::copy(const QString &newName) QFile::copy(const QString &newName) 是 Qt 中用于复制文件的函数&#xff0c;将 fileName() 所指向的文件复制到 newName 指定的新位置。 在复制文件之前&#xff0c;源文件会先被关闭。如果被复制的文…...

GaiaX开源解读 | 表达式作为逻辑动态化的基础,我们是如何设计的

GaiaX跨端模板引擎&#xff0c;是在阿里优酷、淘票票、大麦内广泛使用的Native动态化方案&#xff0c;其核心优势是性能、稳定和易用。本系列文章《GaiaX开源解读》&#xff0c;带大家看看过去三年GaiaX的发展过程。 前言 GaiaX【https://github.com/alibaba/GaiaX】是由优酷应…...

python中adb shell相关操作

1、python 实现adb交互&#xff0c;进入adb shell后&#xff0c;如何再发送消息 os.popen("adb -s 192.168.1.100:5555 shell \"dmesg > /data/dmesg.log\"")进入进入adb shell&#xff0c;在执行 dmesg > /data/dmesg.log 2、python(或BAT脚本)自…...

python 之 资源使用与控制 resource模块

一、背景 2021年做可信计算时&#xff0c;由于甲方给的CPU利用率不能不能超过20%&#xff1b; 目的&#xff1a;我们的程序部署甲方服务器上不能阻碍其甲方服务的正常运行 我们的程序在CPU超过20%时&#xff0c;可以休眠几秒后继续运行 此时需要检测控制服务器的CPU资源使用信…...

蓝库云|8项关键让你看透企业「数字转型」,零代码是惊喜

各行各业都要面对的多方竞争力及不断上涨的经营成本&#xff0c;以及随着时代的发展&#xff0c;有不少企业纷纷推动数字化转型&#xff0c;考虑藉着应用现代化的数据和科技工具的结合&#xff0c;协助企业创造新的营运模式及收入来源&#xff0c;以提升自动化效率、优化客户体…...

(五)、编辑页面-发布长文-富文本编辑【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1&#xff0c;edit页面 1.1 新建edit页面 1.2 从本地相册选择图片或使用相机拍照。 uni.chooseImage(OBJECT) 1.3 直接上传文件到云存储。 uploadFile(Object object) 1.4 从富文本编辑器获取编辑器内容 editorContext.getContents(OBJECT) 首页富文本编辑器初始化完成时…...

你是真的“C”——【经典面试知识点】数据在内存中的大小端存储方式

你是真的“C”——【经典面试知识点】数据在内存中的大小端存储方式&#x1f60e;前言&#x1f64c;大小端介绍&#x1f64c;什么大端小端呢&#xff1f;&#xff1a;大小端存储的标准定义&#xff1a;大端和小端存在的意义经典的面试题目&#x1f64c;总结撒花&#x1f49e;&a…...

从零开始的数模(二十六)单因素方差分析

目录 一、概念 1.1相关概念 1.2用途 1.3数据要求&#xff1a;独立性/正态性/方差齐性 1.4步骤 ​编辑1.5专业名词 二、基于python的单因素方差分析 2.2单因素方差分析的作用 一、概念 1.1相关概念 单因素方差分析是一种常用的统计分析方法&#xff0c;它用于比较一个因…...

C++变量类型

目录 一、c中的变量定义 二、c中的变量声明 三、c中的左值和右值 一、c中的变量定义 变量定义就是告诉编译器在何处创建变量的存储&#xff0c;以及如何创建变量的存储。 变量定义指定一个数据类型&#xff0c;并包含了该类型的一个或多个变量的列表&#xff0c;如下所示&…...

win10 安装 vs2015(社区版本)以及opencv-4.5.5

一、下载vs2015以及opencv-4.5.5从https://msdn.itellyou.cn/ 网站下载vs2015&#xff08;社区版本&#xff09;从https://opencv.org/releases/网站下载opencv-4.5.5二、安装vs2015和opencv-4.5.5解压后双击exe安装文件&#xff0c;完成安装&#xff08;默认&#xff09;双击下…...

867. 转置矩阵

给你一个二维整数数组 matrix&#xff0c; 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转&#xff0c;交换矩阵的行索引与列索引。示例 1&#xff1a;输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]]输出&#xff1a;[[1,4,7],[2,5,8],[3,6,9]]示例 2&a…...

Datawahle组队学习——妙趣横生大数据 Day1

妙趣横生大数据 Day1[妙趣横生大数据 Juicy Big Data](https://datawhalechina.github.io/juicy-bigdata/#/?id妙趣横生大数据-juicy-big-data)一、大数据概述大数据——第三次信息化浪潮大数据概念大数据应用大数据关键技术二、Hadoop背景介绍特性项目架构实验1. 准备工作2. …...

网友眼中越老越吃香的行业,果然是风向变了!

越老越吃香的行业&#xff0c;一直都是被热议的话题。对于年轻人来说&#xff0c;找到一个适合自己的并且具有前景的工作&#xff0c;不是一件容易的事情。 最近&#xff0c;看到有人在平台上问相关的问题&#xff0c;本着认真看一看的态度点进去&#xff0c;却差点被热评第一…...

为什么时间序列预测这么难?本文将给你答案

机器学习和深度学习已越来越多应用在时序预测中。ARIMA 或指数平滑等经典预测方法正在被 XGBoost、高斯过程或深度学习等机器学习回归算法所取代。 尽管时序模型越来越复杂&#xff0c;但人们对时序模型的性能表示怀疑。有研究表明&#xff0c;复杂的时序模型并不一定会比时序…...

STC15系列单片机通过串口多字节数据读写EEPROM操作

STC15系列单片机通过串口多字节数据读写EEPROM操作&#x1f4cc;相关篇《STC15系列单片机EEPROM读写示例》 ⛳手册勘误信息注意事项 ⚡在手册上面描述STC15F2K60S2及STC15L2K60S2系列单片机内部EEPROM还可以用MOVC指令读&#xff0c;但此时首地址不再是0000H&#xff0c;而是程…...

计算机网络-ip数据报

在图中&#xff0c;网络层包含了四种协议&#xff1a;ARP、IP、ICMP、IGMP&#xff0c;由上下关系表明&#xff0c;ARP为IP协议服务&#xff0c;IP为ICMP和IGMP服务。 IP数据报格式 此处不区分数据报和分组的概念&#xff1a;当数据部分过长时&#xff0c;将数据部分拆分&…...

从零开始学C

以下是 该如何学习C语言的【思维导图】以及部分重点知识点的【博客链接】。其实C语言并不难&#xff0c;难的是没有人去教&#xff0c;没有耐心去学。不知道从哪下手学习&#xff0c;我将C的知识点做成一个思维导图&#xff0c;以供迷茫的小白参考&#xff0c;哪里不会&#xf…...

【云原生】手把手带你从零开始搭建kubernetes最新版本实战

文章目录前言一. 实验环境二. k8s 的介绍三 . k8s的安装3.1 搭建实验环境3.1.1 硬件层面的要求3.1.2 软件层面环境配置3.2 docker的安装3.2.1 搭建docker3.2.2 部署 cri-dockerd3.3 部署k8s3.3.1 配置添加阿里云的yum源3.3.2 安装kubeadm kubelet kubectl3.3.3 k8s-master节点初…...

trivy os软件包扫描原理分析

具体可以基于之前的博客来做 基于trivy获取基础镜像 参数修改一下&#xff1a; cliOpt.ListAllPkgs true 结果中会带有如下格式的结果&#xff1a; "Results":[{"Target":"192.168.1.94:443/test22/centos:7 (centos 7.9.2009)","Clas…...

算法训练营 day48 动态规划 完全背包 零钱兑换 II 组合总和 Ⅳ

算法训练营 day48 动态规划 完全背包 零钱兑换 II 组合总和 Ⅳ 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...