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

Qt文件目录操作

文件目录操作相关类

Qt 为文件和目录操作提供了一些类,利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个:

  • QCoreApplication:用于提取应用程序路径,程序名等文件信息;
  • QFile:除了打开文件操作外,QFile 还有复制文件、删除文件等功能;
  • QFileInfo:用于提取文件信息,包括路径、文件名、后缀等;
  • QTemporaryDir 和 QTemporaryFile:用于创建临时目录和临时文件;
  • QFileSystemWatcher:文件和目录监听类,监听目录下文件的添加、删除等变化,监听文件修改变化。

这些类基本涵盖了文件操作需要的主要功能,有些功能还在某些类中重复出现,例如 QFile 和 QDIr 都具有删除文件、判断文件是否存在的功能。

实例概述

QCoreApplication 类

QCoreApplication 是为无 GUI 应用程序提供事件循环的类,是所有应用程序类的基类,其子类 QGuiApplication 为有 GUI 界面的应用程序提供流控制和主要设定,QGuiApplication 的子类 QApplication 为基于 QWidget 的应用程序提供支持,包括界面的初始化等。

QCoreApplication 提供了一些有用的静态函数,可以获取应用程序名称、启动路径等信息,几个函数的名称和功能如下:

函数原型功能
QString applicationDirPath()返回应用程序的启动路径
QString applicationFilePath()返回应用程序的带有目录的完整文件名
QString applicationName()返回应用程序名称,无路劲无后缀
QStringList libraryPaths()返回动态加载库文件时应用程序搜索的目录列表
void setOrganizationName(QString& orgName)为应用程序设置一个机构名
QString organizationName()返回应用程序的机构名
void exit()退出应用程序

QFile 类

前面两篇文章使用 QFile 类进行文件操作,使用了 QFile::open()函数。除了打开文件提供读写操作外,QFile 还有一些静态函数和成员函数用于文件操作。

函数原型功能
bool copy(QString& fileName, QSTring& newName)复制文件
bool rename(QString& oldName, QString& newName)重命名文件
bool remove()删除一个文件
bool exists()判断文件是否存在
bool setPermissions(Permissions permissions)设置文件的权限,权限类型是枚举类型。
Permissions permissions()返回文件的权限

静态函数时无需创建 QFile 类对象实例就可以调用的函数,例如使用静态函数 exists()判断一个文件是否存在的代码如下:

void Dialog::on_pushButton_51_clicked()
{showBtnInfo(sender());QString sous=ui->editFile->text(); //源文件bool the=QFile::exists(sous);if(the)ui->plainTextEdit->appendPlainText(+"true \n");elseui->plainTextEdit->appendPlainText(+"false \n");
}

QFile 还提供了对应的函数成员如下(省略函数参数中的 const 关键字):

函数原型功能
void setFileName(QString& name)设置文件名,文件已打开后不能调用此函数
bool copy(QString& newName)当前文件复制为 newName 表示的文件
bool rename(QString& newName)将当前文件重命名为 newName
bool remove()删除当前文件
bool exists()判断当前文件是否存在
bool setPermissions(Permissions permissions)设置文件权限
Permissions permissions()返回文件权限
qint64 size()返回文件的大小、字节数

创建 QFile 对象时可以在构造函数里指定文件名,也可以用 setFileName()指定文件,但是文件打开后不能再调用 setFileName()函数。指定的文件作为 QFile 对象的当前文件,然后成员函数 copy()rename()等都是基于当前文件的操作。

QFileInfo 类

QFileInfo 类的接口函数提供文件的各种信息。QFileInfo 对象创建时可以指定一个文件名作为当前文件,也可以用 setFile() 函数指定一个文件作为当前文件。

QFileInfo 常见接口函数如下所示。除了一个静态函数 exists()之外,其他都是公共接口函数,接口函数的操作都是针对当前文件:

函数原型功能
void setFile(QString& file)设置一个文件名,作为 QFileInfo 操作的文档
QString absoluteFilePath()返回带有文件名的绝对路径
QString absolutePath()返回绝对路径,不带文件名
QString fileName()返回去除路劲的文件名
QString filePath()返回包含路径的文件名
QString path()返回不含文件名的路径
qint64 size()返回文件大小,以字节为单位
QString baseName()返回文件基名,第一个”.“之前的文件名
QString completeBaseName()返回文件基名,最后一个”.“之前的文件名
QString suffix()最后一个”.“之后的后缀
QString completeSuffix()第一个”.“之后的后缀
bool isDIr()判断当前对象是否是一个目录或目录快捷方式
bool isFile()判断当前对象是否是一个文件或快捷方式
bool isExecutable()判断当前文件是否是可执行文件
QDataTime created()返回文件创建时间
QDataTime lastModified返回文件最后一次被修改的时间
QDataTime lastRead()返回文件最后一次被读取的时间
bool exists()判断文件是否存在
bool exists(QString& file)静态函数,判断 file 表示的文件是否存在

QFileInfo 提供的这些函数可以提取文件信息,包括目录名、文件基名、文件后缀等,利用这些函数可以实现灵活的文件操作。例如,下面的代码是利用 QFile::rename()函数和 QFileInfo 的一些功能实现的文件重命名功能的代码,其中就用到了提取路径、提取文件基名的功能。

void Dialog::on_pushButton_50_clicked()
{//QFile::rename()showBtnInfo(sender());QString sous=ui->editFile->text(); //源文件QFileInfo   fileInfo(sous);//源文件信息QString newFile=fileInfo.path()+"/"+fileInfo.baseName()+".XYZ"; //更改文件后缀为".XYZ"QFile::rename(sous,newFile); //重命名文件ui->plainTextEdit->appendPlainText("源文件:"+sous);ui->plainTextEdit->appendPlainText("重命名为:"+newFile+"\n");
}

QDir 类

QDir 是进行目录操作的类,在创建 QDir 对象时传递一个目录字符串作为当前目录,然后 QDir 函数就可以针对当前目录或目录下的文件进行操作。

函数原型功能
QString tempPath()返回临时目录名称
QString rootPath()返回根目录名称
QString homePath()返回主目录名称
QString currentPath()返回当前目录名称
bool setCurrent(QString& paht)设置 path 表示的目录为当前目录
QFileInfoList drives()返回系统的根目录列表,在 Windows 上是盘符

在使用 QFileDialog 选择打开一个文件或目录时需要传递一个初始目录,这个时候就可以使用 QDir::currentPath()获取应用程序当前目录作为初始目录,前面一些实例程序的代码中已经用到过这个功能。

QDir 的一些公共函数接口如下:

函数原型功能
QString absoluteFilePath(QString& fileName)返回当前目录下的一个文件的含绝对路径文件名
QString absolutePath()返回当前目录的绝对路径
QString canonicalPath()返回当前目录的标准路径
QString filePath(QString& fileName)返回目录下一个文件的目录名
QString dirName()返回最后一级目录的名称
bool exists()判断当前目录是否存在
QStringList entryList(Filters filters = NoFilter, SortFlag sort = NoSort)返回目录下的所有文件名,子目录名等
bool mkdir(QString& dirName)在当前目录下建一个名称为 dirName 的目录
bool rmdir(QString& dirName)删除指定的目录
bool remove(QString& fileName)删除当前目录下的文件 fileName
bool rename(QString& oldName, QString& newName)将文件或目录 oldName 改为 newName
void setPath(QString& path)设置 QDir 对象的当前目录
bool removeRecursively()删除当前目录及其下面的所有文件

获取目录下的目录或文件列表的函数 entryList()需要传递 QDir::Filter枚举类型的参数以获取不同的结果,QDir::Filter枚举类型的常用取值如下:

  • QDIr::AllDirs:列出所有目录名;
  • QDir::Files:列出所有文件;
  • QDir::Drives:列出所有盘符(Unix 系统下无效);
  • QDir::NoDotAndDotDot:不列出特殊符号,如“.”和“…”;
  • QDir::AllEntries:列出目录下所有项目。

列出所有子目录的程序如下:

void Dialog::on_pushButton_11_clicked()
{//列出子目录showBtnInfo(sender());QDir    dir(ui->editDir->text());QStringList strList=dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);ui->plainTextEdit->appendPlainText("所选目录下的所有目录:");for(int i=0;i<strList.count();i++)ui->plainTextEdit->appendPlainText(strList.at(i));ui->plainTextEdit->appendPlainText("\n");}

列出一个目录下所有文件的程序如下:

void Dialog::on_pushButton_17_clicked()
{//列出所有文件showBtnInfo(sender());QDir    dir(ui->editDir->text());QStringList strList=dir.entryList(QDir::Files);ui->plainTextEdit->appendPlainText("所选目录下的所有文件:");for(int i=0;i<strList.count();i++)ui->plainTextEdit->appendPlainText(strList.at(i));ui->plainTextEdit->appendPlainText("\n");
}

QTemporaryDir 和 QTemporaryFile

QTemporaryDir 是用于创建、删除临时目录的类,其主要函数如下:

函数原型功能
void setAutoRemove(bool b)设置为是否自动删除
QString path()返回创建的零时目录名称
bool remove()删除此零时目录及其下面所有文件

在系统临时目录,及 QDir::tempPath目录下创建一个临时目录,临时目录名称以 QCoreApplication::applicationName()为前缀,后加 6 个字符。零时目录可以设置为使用完后自动删除,即临时目录变量删除。

QTemporaryFile 是用于创建临时文件的类,临时文件保存在系统临时目录下。临时文件以 QCoreApplication::applicationName()函数设置为是否自动删除临时文件。QTemporaryFile::open()函数用于打开临时文件,只有打开临时文件,才实际创建了此文件。

QFileSystemWatcher 类

QFileSystemWatcher 是对目录文件进行监听的类。把某些目录或文件添加到 QFileSystemWatcher 对象的监听列表后,当目录下发生文件新建、删除等操作时就会发射 directoryChanged()信号,当监听的文件发生修改、重命名等操作时,会发射 fileChanged()信号。所以,这个类在进行目录或文件监听时起作用。

QFileSystemWatcher 的主要接口函数如下:

函数原型功能
bool addPath(QString& path)添加一个监听的目录或文件
QStringList addPaths(QStringList& paths)添加需要监听的目录或文件列表
QStringList directories()返回监听的目录列表
QStringList files()返回监听的文件列表
bool removePath(QString& path)移除监听的目录或文件
QStringList removePaths(QStringList& paths)移除监听的目录或文件列表

为了测试 QFileSystemWatcher 的功能,在主窗口类中定义了 QFileSystemWatcher 类型的变量和两个信号的槽函数,定义如下:

private:QFileSystemWatcher  fileWatcher;void    showBtnInfo(QObject* btn);
public slots:void on_directoryChanged(const QString path);void on_fileChanged(const QString path);

两个槽函数仅是显示传递的参数,并显示提示文字,代码如下:

void Dialog::on_directoryChanged(const QString path)
{ //directoryChanged()信号的槽函数ui->plainTextEdit->appendPlainText(path);ui->plainTextEdit->appendPlainText("目录发生了变化\n");
}void Dialog::on_fileChanged(const QString path)
{//fileChanged()信号的槽函数ui->plainTextEdit->appendPlainText(path);ui->plainTextEdit->appendPlainText("文件发生了变化\n");
}

QFileSystemWatcher 分组里“addPath()开始监听”和“removePath()停止监听”两个按钮的代码如下:

void Dialog::on_pushButton_46_clicked()
{//开始监听,addPath()showBtnInfo(sender());ui->plainTextEdit->appendPlainText("监听目录:"+ui->editDir->text()+"\n");fileWatcher.addPath(ui->editDir->text());//添加监听目录fileWatcher.addPath(ui->editFile->text());//添加监听文件QObject::connect(&fileWatcher,&QFileSystemWatcher::directoryChanged,this,&Dialog::on_directoryChanged); //directoryChangedQObject::connect(&fileWatcher,&QFileSystemWatcher::fileChanged,this,&Dialog::on_fileChanged); //fileChanged
}void Dialog::on_pushButton_47_clicked()
{//停止监听,removePath()showBtnInfo(sender());ui->plainTextEdit->appendPlainText("停止监听目录:"+ui->editDir->text()+"\n");fileWatcher.removePath(ui->editDir->text());//fileWatcher.removePath(ui->editFile->text());//QObject::disconnect(&fileWatcher,&QFileSystemWatcher::directoryChanged,this,&Dialog::on_directoryChanged); //directoryChangedQObject::disconnect(&fileWatcher,&QFileSystemWatcher::fileChanged,this,&Dialog::on_fileChanged); //fileChanged
}

采用 addPath()函数添加目录和文件后,将信号和槽函数关联起来,开始监听。

停止监听时,用 removePath()函数移除监听的目录和文件,并用 disconnect()解除信号和槽的关联。
参考资料:https://it.0voice.com

相关文章:

Qt文件目录操作

文件目录操作相关类 Qt 为文件和目录操作提供了一些类&#xff0c;利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个&#xff1a; QCoreApplication&#xff1a;用于提取应用程序路径&#xff0c;程序名等文件信息&#xff1b;QFile&#x…...

刷题-1122

1. 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如&#xff0c;当输入5时&#xff0c;应该输出的三角形为&#xff1a; 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 import sys def generate_snake_matrix(n):matrix [[0]*n for _ in range(n)]curent_num 1…...

【通俗理解】Jensen不等式与变分分布q(z)在积分计算中的应用

【通俗理解】Jensen不等式与变分分布q(z)在积分计算中的应用 关键词提炼 #Jensen不等式 #变分分布 #积分计算 #期望 #凸函数 #优化问题 #下界估计 #机器学习 第一节&#xff1a;Jensen不等式与变分分布的类比与核心概念【尽可能通俗】 Jensen不等式就像是一个“积分计算器”…...

微信小程序2-地图显示和地图标记

一、index修改页面&#xff0c;让页面能够显示地图和一个添加标记的按钮。 index.wxml <scroll-view class"scrollarea" scroll-y type"list"><view class"index_container"><map id"map" style"width: 100%; h…...

webpack配置和打包性能优化

文章目录 webpack基础配置loaderpluginloader 和 plugin 的区别devServer打包性能优化1、按需引入组件2、externals 属性3、给定文件匹配范围4、noParse 属性5、cacheDirectory 缓存属性6、happyPack 多个子进程并行 webpack基础配置 mode:development&#xff1a;设置webpack…...

iframe嵌入踩坑记录

iframe嵌入父子页面token问题 背景介绍 最近在做在平台A中嵌入平台B某个页面的需求&#xff0c;我负责的是平台B这边&#xff0c;使这个页面被嵌入后能正常使用。两个平台都实现了单点登录。 其实这是第二次做这个功能了&#xff0c;原本以为会很顺利&#xff0c;但没想到折腾…...

FreeRTOS——消息队列

目录 一、概念及其作用 1.1概念 1.2特点 1.3工作原理 二、相关API 2.1创建队列 2.2任务中写队列 2.3任务中读队列 2.4中断中写队列 2.5中断中读队列 三、实现原理 3.1消息队列控制块 3.2消息队列的创建 3.3消息的发送 3.3.1任务中发送 3.3.2中断中发送 3.4消息的…...

c++11的动态类型

c17引入了any 和 variant&#xff0c;可以将任意数据类型统一用any或variant类型表示&#xff0c;在开发中还是能够带来很多便利的。在c11版本中&#xff0c;可以用下面这个例子&#xff0c;仿照实现一个Any类型。 #include <iostream> #include <stdexcept> #inc…...

大语言模型---Llama模型文件介绍;文件组成

文章目录 1. 概要2. 文件组成 1. 概要 在使用 LLaMA&#xff08;Large Language Model Meta AI&#xff09;权重时&#xff0c;通常会涉及到与模型权重存储和加载相关的文件。这些文件通常是以二进制格式存储的&#xff0c;具有特定的结构来支持高效的模型操作。以下以Llama-7…...

常见网络厂商设备默认用户名/密码大全

常见网络厂商的默认用户名/密码 01 思科 (Cisco) 设备类型&#xff1a;路由器、交换机、防火墙、无线控制器 默认用户名&#xff1a;cisco 默认密码&#xff1a;cisco 设备类型&#xff1a;网管型交换机 默认用户名&#xff1a;admin 默认密码&#xff1a;admin 02 华…...

【大数据分析机器学习】分布式机器学习

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…...

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言&#xff0c;简称Golang&#xff0c;是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计&#xff0c;并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标&#xff0c;…...

数字反向输出

数字反向输出 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 小明听到广播里的数字后&#xff0c;总喜欢反着念给妈妈听。请聪明的你将小明听到的数字反向输出。 输入 输入为一个整型的四位数n 输出 …...

c++ std::stack总结

概念 std::stack 是 C 标准库中的一个容器适配器&#xff08;Container Adapter&#xff09;。它通常是基于其他容器&#xff08;如 std::deque 或 std::vector&#xff09;实现的&#xff0c;提供了一个后进先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09;的…...

【C++习题】10.反转字符串中的单词 lll

题目&#xff1a; 链接&#x1f517;&#xff1a;557.反转字符串中的单词 lll 题目&#xff1a; 代码&#xff1a; class Solution { public:void Reverse(string &s, int start, int end){char tmp;while(start < end){tmp s[start];s[start] s[end];s[end] tmp;…...

【pyspark学习从入门到精通14】MLlib_1

目录 包的概览 加载和转换数据 在前文中&#xff0c;我们学习了如何为建模准备数据。在本文中&#xff0c;我们将实际使用这些知识&#xff0c;使用 PySpark 的 MLlib 包构建一个分类模型。 MLlib 代表机器学习库。尽管 MLlib 现在处于维护模式&#xff0c;即它不再积极开发…...

transformer.js(四): 模型接口介绍

前面的文章底层架构及性能优化指南介绍了transformer.js的架构和优化策略&#xff0c;在本文中&#xff0c;将详细介绍 transformer.js 的模型接口&#xff0c;帮助你了解如何在 JavaScript 环境中使用这些强大的工具。 推荐阅读 ansformer.js&#xff08;二&#xff09;&…...

java集合练习题

简答题&#xff1a;分析HashSet和treeSet分别如何去重的&#xff1f; TreeSet的去重机制: 如果你传入了一个Comparator匿名对象&#xff0c;就使用实现的compare去重&#xff0c;如果方法返回0,就认为是相同的元素/数据&#xff0c;就不添加&#xff0c;如果你没有传入一个Comp…...

微知-plantuml常用语法和要点以及模板?(note over、create、box,endbox、alt,else,end, autonumber)

文章目录 常见语法常用 线条类实线虚线斜箭头或奇数箭头 A ->(10) B: B->(10) A分割线&#xff1a;newpage 颜色类给箭头指定颜色 -[#red]->给某个note加颜色&#xff1a; note over Alice, Bob #FFAAAA: xxx给分组信息着色 alt#red 分组类alt xxx; else xxx; else xx…...

gitHub常用操作

gitHub常用操作 1、把项目拉下来2、添加上游仓库3、进入分支4、从上游仓库拉取更新 1、把项目拉下来 在对应项目的右上角点击fork&#xff0c;fork下来&#xff1a;将远程仓库复制到个人仓库 在创建好的分支文件夹下使用 git clone自己远程仓库下的http地址&#xff08;fork…...

Mybatis Plus动态指定数据源

Java开发中一个项目连接多个数据源时&#xff0c;可能会有需要动态指定一个方法所使用的数据源的场景。例如不同的用户查询不同的数据源。 我遇到的需求是这样的&#xff1a;设计一个公共的数据字典组件&#xff0c;该组件需要连接数据源&#xff0c;使用方引入该组件后可以直…...

Python 爬虫 (1)基础 | 基础操作

一、基础操作 1、快速构建一个爬虫 ConvertCurl&#xff1a; https://curlconverter.com/选择URL&#xff0c;点击右键&#xff0c;选择 Copy >> Copy as cURL(bash) 安装JS环境&#xff1a;https://www.jb51.net/python/307069k7q.htm...

C++

目录 C 的发展总结&#xff1a;​编辑 1. C 的早期发展&#xff08;1979-1985&#xff09; 2. C 标准化过程&#xff08;1985-1998&#xff09; 3. C 标准演化&#xff08;2003-2011&#xff09; 4. C11&#xff08;2011年&#xff09; 5. C14&#xff08;2014年&#xf…...

Infineon(英飞凌) TLE985xQX 芯片电机工作电流、电压AD采样

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 单片机芯片合集 文章目录 其他系列文章导航 文章目录 前言 一、选取合适的端口 1.通过 OP1、OP2 电流采集运放输入端口进行H桥驱动的电流采集。 2.通过 O_D_VBAT_AD_EN、I_A_VBAT_A…...

三极管工作原理,以及小电流,如何驱动大电流

因为研究【自动下载电路实现】&#xff0c;涉及到三极管内容&#xff0c;之前看过&#xff0c;现在回看之前的笔记&#xff0c;一点印象都没了&#xff0c;于是&#xff0c;想了个办法&#xff0c;记住它 个人联想&#xff0c;不喜绕道&#xff0c;只是帮助个人记忆的 标题也是…...

Haystack 的开源开发 LLM 应用设计框架

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

彻底理解消息队列的作用及如何选择

一.为什么要使用消息队列&#xff1f; 使用消息队列&#xff0c;其实是需要根据实际业务场景来的&#xff0c;一般都是实际开发中&#xff0c;遇到了某种技术挑战&#xff0c;如果不使用MQ的话&#xff0c;业务实现起来比较麻烦&#xff0c;但是通过MQ就可以更快捷高效的实现业…...

【Java】二叉树:数据海洋中灯塔式结构探秘(上)

个人主页 &#x1f339;&#xff1a;喜欢做梦 二叉树中有一个树&#xff0c;我们可以猜到他和树有关&#xff0c;那我们先了解一下什么是树&#xff0c;在来了解一下二叉树 一&#x1f35d;、树型结构 1&#x1f368;.什么是树型结构&#xff1f; 树是一种非线性的数据结构&…...

海洋通信船舶组网工业4G路由器应用

船舶是浩瀚海洋中探索与贸易的载体&#xff0c;更是船员们生活与工作的家园。为了在广阔的水域中搭建起稳定、高效的网络桥梁&#xff0c;工业4G路由器以卓越的通信组网能力&#xff0c;为船舶组网提供网络支持。 工业4G路由器以其强大的信号发射能力&#xff0c;确保船舶内部…...

字符串-07-判断两个IP是否属于同一子网

文章目录 1. 题目描述2. 思路3. 代码 1. 题目描述 IP地址是由4个0-255之间的整数构成的&#xff0c;用"."符号相连。 二进制的IP地址格式有32位&#xff0c;例如&#xff1a;10000011&#xff0c;01101011&#xff0c;00000011&#xff0c;00011000&#xff1b;每八…...

Django启用国际化支持(2)—实现界面内切换语言:activate()

文章目录 ⭐注意⭐1. 配置项目全局设置&#xff1a;启用国际化2. 编写视图函数3. 配置路由4. 界面演示5、扩展自动识别并切换到当前语言设置语言并保存到Session设置语言并保存到 Cookie ⭐注意⭐ 以下操作依赖于 Django 项目的国际化支持。如果你不清楚如何启用国际化功能&am…...

自定义协议

1. 问题引入 问题&#xff1a;TCP是面向字节流的&#xff08;TCP不关心发送的数据是消息、文件还是其他任何类型的数据。它简单地将所有数据视为一个字节序列&#xff0c;即字节流。这意味着TCP不会对发送的数据进行任何特定的边界划分&#xff0c;它只是确保数据的顺序和完整…...

PHP Date 函数:日期和时间处理的全指南

PHP Date 函数:日期和时间处理的全指南 PHP Date 函数是 PHP 编程语言中用于处理日期和时间的核心函数之一。它提供了强大的功能,允许开发者轻松地格式化、计算和操作日期和时间值。本文将详细介绍 PHP Date 函数的用法,包括基本格式化、时间戳处理、时区设置以及一些高级特…...

C++设计模式:抽象工厂模式(风格切换案例)

抽象工厂模式&#xff08;Abstract Factory&#xff09;是一种创建型设计模式&#xff0c;其核心思想是&#xff1a;为一组相关或相互依赖的对象提供一个创建接口&#xff0c;而无需指定它们具体的类。简单来说&#xff0c;就是一个工厂可以生产一系列相关的对象。 我们接下来…...

社交媒体营销新趋势:如何通过海外平台提升品牌曝光度?

社交媒体不仅是简单的信息传播工具&#xff0c;更是连接用户与品牌之间的重要纽带。每天&#xff0c;有数以亿计的全球用户在不同平台上活跃&#xff0c;潜藏着巨大的市场潜力。对于企业来说&#xff0c;关键在于制定清晰的营销策略&#xff0c;精准把握不同社交平台的特性&…...

嵌入式C/C++编译常见问题与分析

#1 kcx.c:112:89: error: format specifies type unsigned int but the argument has type u32 * (aka unsigned int *) [-Werror,-Wformat] 报错原因&#xff1a; int kcx(u32 *trigger) { ERR_MSG("%s:failed. attr%d, trigger%u\n", __func__, attr_enable, trig…...

laravel 5.5 增加宏指令 joinSub, 省去->toSql() 和 addBinding($bindings);

laravel 5.5 增加宏指令 joinSub, 省去->toSql() 和 addBinding($bindings); 1. 在laravel5使用join 子查询时 $sub_query DB::table(table1)->select([table1.id, cate_id])->join(table2, table1.id, , table2.id)->where(table1.cate_id, 2)->orderBy(tabl…...

知识库搭建:大健康产业数字化转型的新引擎

随着数字经济的蓬勃发展&#xff0c;大健康产业正步入一个崭新的发展篇章。消费者对于健康的追求日益增长&#xff0c;促使大健康企业积极探索数字化路径&#xff0c;以提升供应链效率、控制成本&#xff0c;并在激烈的市场竞争中脱颖而出。在此过程中&#xff0c;一系列数字化…...

创建可重用React组件的实用指南

尽管React是全球最受欢迎和使用最广泛的前端框架之一&#xff0c;但许多开发者在重构代码以提高可复用性时仍然感到困难。如果你发现自己在React应用中不断重复相同的代码片段&#xff0c;那你来对地方了。 在本教程中&#xff0c;将向你介绍三个最常见的特征&#xff0c;表明是…...

蓝桥杯每日真题 - 第18天

题目&#xff1a;&#xff08;出差&#xff09; 题目描述&#xff08;13届 C&C B组E题&#xff09; 解题思路&#xff1a; 问题分析 问题实质是一个带权图的最短路径问题&#xff0c;但路径的权重包含两个部分&#xff1a; 从当前城市到下一个城市的路程时间。 当前城市的…...

MySQL中索引全详解

第一部分&#xff1a;什么是索引 索引在数据库中就像书的目录&#xff0c;能够快速定位数据位置&#xff0c;从而提升查询效率。没有索引时&#xff0c;数据库查询需要从头到尾扫描整个表&#xff08;称为全表扫描&#xff09;&#xff0c;这在数据量大时非常耗时。有了索引后&…...

探索复合物TPP-PEG-Heparin的特性;磷酸三苯酯-聚乙二醇-肝素的线粒体靶向性

TPP-PEG-Heparin&#xff0c;即磷酸三苯酯&#xff08;TPP&#xff09;、聚乙二醇&#xff08;PEG&#xff09;和肝素&#xff08;Heparin&#xff09;的复合物&#xff0c;其特性融合了这三种成分的性质。 一、线粒体靶向性 TPP部分&#xff1a;具有线粒体靶向功能&#xf…...

ubuntu 配置 多个 git 客户端 账户

Git配置两个或多个账户 https://blog.csdn.net/mainking2003/article/details/134711865 git 提交 不用输入用户名、密码的方法&#xff08;GIT免密提交&#xff09; https://blog.csdn.net/wowocpp/article/details/125797263 git config 用法 https://blog.csdn.net/blueb…...

Web3与智能合约:区块链技术下的数字信任体系

随着互联网的不断发展&#xff0c;Web3代表着我们迈入了一个去中心化、更加安全和智能的网络时代。作为Web3的核心组成部分&#xff0c;区块链技术为智能合约的出现和发展提供了强有力的基础。智能合约不仅仅是自动化的代码&#xff0c;它们正逐步成为重塑数字世界信任体系的关…...

RocketMQ文件刷盘机制深度解析与Java模拟实现

引言 在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue, MQ&#xff09;作为一种重要的中间件&#xff0c;扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件&#xff0c;广泛应用于实时数据流处理、…...

高级编程之结构化代码

背景&#xff1a;以下没结构化代码之前&#xff0c;定时器同步店铺信息的代码。 结构化的思想&#xff1a;SRP&#xff08;单一职责&#xff09;&#xff0c;一个方法是做一件事&#xff0c;层次是相关的&#xff0c;逻辑和数据操作进行拆分&#xff0c;数据操作从业务流程上定…...

学习编程,学习中间件,学习源码的思路

01 看的多&#xff0c;内化不足 最近想复习一下编程相关的知识&#xff0c;在复习前我翻开了之前的一些笔记&#xff0c;这些笔记基本都是从书本、视频、博客等摘取记录的&#xff0c;看着这些笔记心里总结&#xff1a;看的多&#xff0c;内化不足。 02 整理大纲 为了解决这个…...

网络安全与加密

1.Base64简单说明描述&#xff1a;Base64可以成为密码学的基石&#xff0c;非常重要。特点&#xff1a;可以将任意的二进制数据进行Base64编码结果&#xff1a;所有的数据都能被编码为并只用65个字符就能表示的文本文件。65字符&#xff1a;A~Z a~z 0~9 / 对文件进行base64编码…...

开源协议介绍

文章目录 1. MIT License2. Apache License 2.03. GNU General Public License (GPL)4. GNU Lesser General Public License (LGPL)5. BSD License6. Mozilla Public License (MPL)7. Creative Commons Licenses (CC)8. Unlicense选择建议 在 开源平台上&#xff0c;开源项目通…...

Java技术复习提升 10异常

10 异常 10.1异常介绍及分类 异常捕获 选中后alttabt->选中try-catch 异常就是程序执行中不正常的情况 注意语法和逻辑错误并不是异常 异常分类有两种 error和exception error是错误 虚拟机无法解决的严重问题 exception是其他因为编程错误或者外在因素导致的一般性的问…...