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

c++ std库中的文件操作学习笔记

1. 概述

C++标准库提供了 头文件中的几个类来进行文件操作,这些类封装了底层的文件操作,提供了面向对象和类型安全的接口,使得文件读写更加便捷和高效。主要的文件流类包括:

std::ifstream:用于从文件中读取数据。

std::ofstream:用于向文件中写入数据。

std::fstream:用于同时读取和写入文件。

这些文件流类(std::ifstreamstd::ofstreamstd::fstream)继承自 std::istreamstd::ostreamstd::iostream,这些类本身继承自 std::ios,从而提供了丰富的成员函数和操作符来处理文件I/O。

2. 文件流类详解

2.1 std::ifstream:输入文件流

std::ifstream 用于从文件中读取数据。它继承自 std::istream,具备所有输入流的功能,同时添加了文件特有的操作。


#include <fstream>
#include <iostream>
#include <string>int main() {// 创建并打开输入文件流std::ifstream infile("input.txt"); // "input.txt" 是要读取的文件名// 检查文件是否成功打开if (!infile) {std::cerr << "无法打开文件 input.txt" << std::endl;return 1;}// 读取并输出文件内容std::string line;while (std::getline(infile, line)) {std::cout << line << std::endl;}// 关闭文件流(可选,因为析构函数会自动关闭)infile.close();return 0;
}

要点:

  • 构造函数可以在创建对象时指定文件名和打开模式。

  • 检查文件是否成功打开,以避免后续操作错误。

  • 使用 std::getline 逐行读取文件内容。

2.2 std::ofstream:输出文件流

std::ofstream 用于向文件中写入数据。它继承自 std::ostream,具备所有输出流的功能,同时添加了文件特有的操作。


#include <fstream>
#include <iostream>
#include <string>int main() {// 创建并打开输出文件流std::ofstream outfile("output.txt"); // "output.txt" 是要写入的文件名// 检查文件是否成功打开if (!outfile) {std::cerr << "无法打开文件 output.txt" << std::endl;return 1;}// 写入数据到文件outfile << "Hello, World!" << std::endl;outfile << "这是第二行文本。" << std::endl;// 关闭文件流(可选,因为析构函数会自动关闭)outfile.close();return 0;
}

要点:

  • 默认情况下,std::ofstream 以写入模式打开文件。如果文件不存在,会创建新文件;如果文件存在,会截断文件内容。

  • 使用<<操作符向文件中插入数据。

2.3 std::fstream:文件流(读写)

std::fstream 用于同时读取和写入文件。它继承自std::iostream,结合了 std::istream 和 std::ostream 的功能


#include <fstream>
#include <iostream>
#include <string>int main() {// 创建并打开文件流,设置为读写模式std::fstream file("file.txt", std::ios::in | std::ios::out | std::ios::app);// 检查文件是否成功打开if (!file) {std::cerr << "无法打开文件 file.txt" << std::endl;return 1;}// 写入数据到文件file << "追加一行内容。" << std::endl;// 移动读指针到文件开头file.seekg(0, std::ios::beg);// 读取并输出文件内容std::string line;while (std::getline(file, line)) {std::cout << line << std::endl;}// 关闭文件流file.close();return 0;
}

要点:

  • 通过构造函数的第二个参数指定文件打开模式,可以组合多个模式。

  • 适用于需要同时进行读取和写入操作的场景。

3. 打开和关闭文件

文件流类提供了多种方式来打开和关闭文件。

可以在创建文件流对象时,通过构造函数直接指定文件名和打开模式。


std::ifstream infile("input.txt"); // 以默认模式(即只读方式)打开 input.txt
std::ofstream outfile("output.txt", std::ios::out | std::ios::trunc); // 以写入和截断模式打开 output.txt

如果在创建对象时没有指定文件名,可以使用 open() 成员函数在后续打开文件。


#include <fstream>
#include <iostream>int main() {std::ifstream infile; // 创建输入文件流对象infile.open("input.txt"); // 打开文件if (!infile.is_open()) {std::cerr << "无法打开文件 input.txt" << std::endl;return 1;}// 进行读取操作...infile.close(); // 关闭文件return 0;
}

使用 close() 成员函数可以显式关闭文件流。尽管在对象销毁时,析构函数会自动关闭文件,但在需要提前释放资源时,显式调用 close() 是必要的。


infile.close();
outfile.close();

4. 文件打开模式

文件打开模式通过 std::ios::openmode 枚举类型指定,可以组合使用多个模式。

常用的打开模式:

- std::ios::in:以读取模式打开文件。

  • std::ios::out:以写入模式打开文件。

  • std::ios::app:以追加模式打开文件,写入操作将添加到文件末尾。

  • std::ios::ate:打开文件后,将文件指针定位到文件末尾。

  • std::ios::trunc:如果文件已存在,则截断文件长度为0(默认与 std::ofstream 相关)。

  • std::ios::binary:以二进制模式打开文件。


// 以读写模式打开文件,不截断现有内容
std::fstream file("data.txt", std::ios::in | std::ios::out);// 以二进制模式写入数据, 截断现有文件内容std::ofstream binaryOut("data.bin", std::ios::out | std::ios::binary | std::ios::trunc);

说明:

  • 组合使用:通过按位或操作符 | 组合多个打开模式,如 std::ios::in | std::ios::out 表示同时具备读取和写入权限。

  • 二进制模式:对于非文本文件(如图片、音频等),应使用 std::ios::binary 模式,以防止数据在读取或写入过程中被转换。

5. 读取文件

5.1 使用 >> 操作符读取单词

>> 操作符用于从文件中提取数据,自动跳过空白字符(如空格、换行符、制表符)。

假设 words.txt 文件内容如下:
在这里插入图片描述


#include <fstream>
#include <iostream>
#include <string>int main() {std::ifstream infile("words.txt");if (!infile) {std::cerr << "无法打开文件 words.txt" << std::endl;return 1;}std::string word;while (infile >> word) { // 逐词读取std::cout << "读取到的单词: " << word << std::endl;}infile.close();return 0;
}

输出如下:
在这里插入图片描述
说明:

  • 适用于逐词读取数据,适合处理由空白字符分隔的数据。

  • 无法读取包含空格的完整句子或短语。

5.2 使用 std::getline 逐行读取

std::getline 函数用于从文件中逐行读取数据,适用于处理文本文件中的行数据。

假设 lines.txt 文件内容如下:
在这里插入图片描述


#include <fstream>
#include <iostream>
#include <string>int main() {std::ifstream infile("lines.txt");if (!infile) {std::cerr << "无法打开文件 lines.txt" << std::endl;return 1;}std::string line;while (std::getline(infile, line)) { // 逐行读取std::cout << "读取到的行: " << line << std::endl;}infile.close();return 0;
}

输出如下:
在这里插入图片描述
说明:

  • 适用于逐行处理文件内容,保留每行的完整信息。

  • 可以处理包含空格和其他特殊字符的行。

5.3 读取整个文件内容

有时需要一次性读取整个文件内容,尤其适用于小文件或需要对整个文件内容进行处理的场景。
假设 content.txt 文件内容如下:
在这里插入图片描述


#include <fstream>
#include <iostream>
#include <string>int main() {std::ifstream infile("content.txt");if (!infile) {std::cerr << "无法打开文件 content.txt" << std::endl;return 1;}// 使用迭代器读取整个文件内容到字符串std::string content((std::istreambuf_iterator<char>(infile)),std::istreambuf_iterator<char>());std::cout << "文件内容:\n" << content << std::endl;infile.close();return 0;
}

输出如下:
在这里插入图片描述
说明:

使用 std::istreambuf_iterator 迭代器可以高效地读取整个文件内容。

适用于小至中等大小的文件,对于非常大的文件,可能需要分块读取以避免内存问题。

对此行代码的理解:

std::string content((std::istreambuf_iterator<char>(infile)),std::istreambuf_iterator<char>());
  • 这行代码使用了 std::istreambuf_iterator 来从输入文件流 infile 读取内容并构建一个 std::string 对象。具体理解如下:

  • std::istreambuf_iterator(infile):创建一个输入迭代器,从 infile 的缓冲区读取字符。

  • std::istreambuf_iterator():这是一个空的迭代器,用于表示输入结束。
    构造 std::string:通过传入两个迭代器,构造函数会从 infile 中读取所有字符,直到遇到结束迭代器。

  • 最终,这行代码的作用是将整个文件的内容读入到 content 字符串中。这样,你就可以方便地对文件内容进行操作。

5.4 读取二进制数据

对于非文本文件(如图片、音频、视频等),需要以二进制模式读取数据,以防止数据在读取过程中被转换或丢失。
假设需要读取一个图片文件 image.jpg 并输出其大小。
在这里插入图片描述


#include <fstream>
#include <iostream>
#include <vector>int main() {// 以二进制模式打开文件std::ifstream infile("image.jpg", std::ios::binary);if (!infile) {std::cerr << "无法打开文件 image.jpg" << std::endl;return 1;}// 移动读指针到文件末尾以获取文件大小//这行代码将文件指针移动到文件的末尾。seekg 函数用于设置输入流的位置,0 是偏移量infile.seekg(0, std::ios::end);//tellg 函数返回当前文件指针的位置(即文件的长度)std::streamsize size = infile.tellg();//这行代码将文件指针重置回文件的开头infile.seekg(0, std::ios::beg);// 读取文件内容到缓冲区std::vector<char> buffer(size);if (infile.read(buffer.data(), size)) {std::cout << "成功读取 " << size << " 字节。" << std::endl;} else {std::cerr << "读取文件失败!" << std::endl;}infile.close();return 0;
}

输出如下:
在这里插入图片描述
说明:

  • 使用 std::ios::binary 模式打开文件,确保数据按原样读取。

  • 通过 seekg tellg获取文件大小,预分配缓冲区。

  • 使用read函数读取二进制数据到缓冲区。

6. 写入文件

6.1 使用 << 操作符写入数据

<< 操作符用于向文件中插入数据,类似于向标准输出流 std::cout 中插入数据。

将用户信息写入文件 users.txt。


#include <fstream>
#include <iostream>
#include <string>int main() {std::ofstream outfile("users.txt");if (!outfile) {std::cerr << "无法打开文件 users.txt" << std::endl;return 1;}// 写入用户信息outfile << "用户名: Alice\n年龄: 30\n" << std::endl;outfile << "用户名: Bob\n年龄: 25\n" << std::endl;outfile << "用户名: Charlie\n年龄: 35\n" << std::endl;outfile.close();std::cout << "用户信息已写入 users.txt" << std::endl;return 0;
}

输出如下:
在这里插入图片描述
文件即自动创建于当前工程根目录下

说明:

  • 使用 << 操作符可以方便地将各种数据类型写入文件。

  • std::endl 用于插入换行符并刷新缓冲区。

6.2 使用 std::ofstream::write 写入二进制数据

对于需要写入二进制数据的场景,使用 write() 成员函数更为合适。

将一个字符数组写入二进制文件 output.bin。


#include <fstream>
#include <iostream>
#include <vector>int main() {std::ofstream outfile("output.bin", std::ios::binary | std::ios::trunc);if (!outfile) {std::cerr << "无法打开文件 output.bin" << std::endl;return 1;}// 准备二进制数据std::vector<char> data = {'H', 'e', 'l', 'l', 'o', '\0'};// 写入二进制数据到文件outfile.write(data.data(), data.size());if (!outfile) {std::cerr << "写入文件失败!" << std::endl;} else {std::cout << "成功写入 " << data.size() << " 字节到 output.bin" << std::endl;}outfile.close();return 0;
}

data.data():获取 data 字符串的指针,指向字符串的首字符。这是写入的起始地址。
data.size():返回字符串 data 的长度,表示要写入的字节数。
outfile.write(data.data(), data.size());:调用 write 函数,将从 data 指针开始的 data.size() 字节写入 outfile 中。

输出如下:
在这里插入图片描述
说明:

  • 使用 write() 可以指定要写入的数据地址和字节数,适用于二进制数据。

  • 确保文件以二进制模式打开,防止数据被意外转换。

7. 一个实际使用的示例

读取mysql中conf文件的配置:

bool ConnectionPool::loadConfigFile()
{//setenv("MYSQL_CONF_PATH","/home/kyros1ee/QtEnviroment/WeChat-main/chatserver/conf/mysql.conf",1);// 设置环境变量或绝对路径const char* configPath = getenv("MYSQL_CONF");	//if (!configPath){LOG_ERROR << " mysql.conf MYSQL_CONF_PATH not set!";return false;}ifstream file(configPath);if (!file.is_open()){LOG_ERROR << "mysql.conf 文件不存在!";return false;}string line;while (getline(file, line)){// 忽略空行和注释行if (line.empty() || line.find('=') == string::npos)continue;if (line.back() == '\r') {line.pop_back();}istringstream iss(line);string key, value;if (getline(iss, key, '=') && getline(iss, value)){// 去除可能存在的前后空白key = trim(key);value = trim(value);if (key == "ip") _ip = value;else if (key == "port") _port = stoi(value);else if (key == "username") _username = value;else if (key == "password") _password = value;else if (key == "dbname") _dbname = value;else if (key == "initSize") _initSize = stoi(value);else if (key == "maxSize") _maxSize = stoi(value);else if (key == "maxIdleTime") _maxIdleTime = stoi(value);else if (key == "connectionTime") _connectionTimeout = stoi(value);}}return true;
}

相关文章:

c++ std库中的文件操作学习笔记

1. 概述 C标准库提供了 头文件中的几个类来进行文件操作&#xff0c;这些类封装了底层的文件操作&#xff0c;提供了面向对象和类型安全的接口&#xff0c;使得文件读写更加便捷和高效。主要的文件流类包括&#xff1a; std::ifstream&#xff1a;用于从文件中读取数据。 st…...

多臂赌博机:探索与利用的平衡艺术

1. 引言 在机器学习领域&#xff0c;多臂赌博机&#xff08;Multi-Armed Bandit&#xff0c;MAB&#xff09;问题是强化学习的一个经典且基础的模型。这个名称源于赌场中的"单臂老虎机"&#xff08;One-armed Bandit&#xff09;&#xff0c;因为这种赌博机器像强盗…...

分布式异步强化学习框架训练32B大模型:INTELLECT-2

INTELLECT-2 模型详解 一、模型概述 INTELLECT-2 是一个拥有 320 亿参数的语言模型&#xff0c;其训练采用了一种创新的方式&#xff0c;即通过社区贡献的分布式、无需许可的 GPU 资源进行强化学习训练。该模型基于 qwen2 架构构建&#xff0c;因此与 vllm 或 sglang 等流行库…...

HTML应用指南:利用POST请求获取全国京东快递服务网点位置信息

京东快递作为中国领先的智能供应链与综合物流服务提供商,自2007年成立以来,始终致力于通过技术创新与高效运营,为客户提供安全、可靠、快速的物流解决方案。京东快递依托京东集团的强大资源支持,凭借其自营仓储、干线运输、末端配送一体化的物流网络,在激烈的市场竞争中脱…...

通过POI实现对word基于书签的内容替换、删除、插入

一、基本概念 POI&#xff1a;即Apache POI&#xff0c; 它是一个开源的 Java 库&#xff0c;主要用于读取 Microsoft Office 文档&#xff08;Word、Excel、PowerPoint 等&#xff09;&#xff0c;修改 或 生成 Office 文档内容&#xff0c;保存 为对应的二进制或 XML 格式&a…...

git进行版本控制时遇到Push cannot contain secrets的解决方法

git进行版本控制&#xff0c;push遇到Push cannot contain secrets的解决方法 最近在项目开发过程中&#xff0c;我遇到了一个让我头疼不已的问题。 问题的出现 一开始&#xff0c;我的项目远程仓库连接的是 Gitee&#xff0c;在开发过程中一切都很顺利&#xff0c;我也习惯…...

Java GUI 开发之旅:Swing 组件与布局管理的实战探索

在编程的世界里&#xff0c;图形用户界面&#xff08;GUI&#xff09;设计一直是提升用户体验的关键环节。Java 的 Swing 库为我们提供了强大的工具来构建跨平台的 GUI 应用。今天&#xff0c;我将通过一次实验&#xff0c;分享如何使用 Java Swing 开发一个功能丰富的 GUI 应用…...

OpenVLA (2) 机器人环境和环境数据

文章目录 前言1 BridgeData V21.1 概述1.2 硬件环境 2 数据集2.1 场景与结构2.2 数据结构2.2.1 images02.2.2 obs_dict.pkl2.2.3 policy_out.pkl 前言 按照笔者之前的行业经验, 数据集的整理是非常重要的, 因此笔者这里增加原文中出现的几个数据集和环境的学习 1 BridgeData V…...

【Ansible】基于windows主机,采用NTLM+HTTPS 认证部署

我们现在准备Linux centos7&#xff08;Ansible控制机&#xff09;和Windows&#xff08;客户机&#xff09;环境下的详细部署步骤&#xff1a; 一、Windows客户机配置 1. 准备SSL证书 1.1 生成自签名证书&#xff08;测试用&#xff09; 以管理员身份打开PowerShell&#…...

React19源码系列之 API(react-dom)

API之 preconnect preconnect – React 中文文档 preconnect 函数向浏览器提供一个提示&#xff0c;告诉它应该打开到给定服务器的连接。如果浏览器选择这样做&#xff0c;则可以加快从该服务器加载资源的速度。 preconnect(href) 一、使用例子 import { preconnect } fro…...

鸿蒙Next开发 获取APP缓存大小和清除缓存

1. 鸿蒙Next开发 获取APP缓存大小和清除缓存 1.1. 介绍 1.1.1. 文件系统分类 在最新的Core File Kit套件中&#xff0c;按文件所有者的不同。分为如下三类&#xff1a;   &#xff08;1&#xff09;应用文件&#xff1a;文件所有者为应用&#xff0c;包括应用安装文件、应用…...

PNG转ico图标(支持圆角矩形/方形+透明背景)Python脚本 - 随笔

摘要 在网站开发或应用程序设计中&#xff0c;常需将高品质PNG图像转换为ICO格式图标。本文提供一份基于Pillow库实现的&#xff0c;能够完美保留透明背景且支持导出圆角矩形/方形图标的格式转换脚本。 源码示例 圆角方形 from PIL import Image, ImageDraw, ImageOpsdef c…...

『大模型笔记』Langchain作者Harrison Chase专访:环境智能体与全新智能体收件箱

Langchain作者Harrison Chase专访:环境智能体与全新智能体收件箱 文章目录 摘要访谈内容什么环境智能体为什么要探索环境智能体怎么让人类能更方便地和环境智能体互动参考文献摘要 LangChain 的 CEO Harrison Chase 提出了_“环境智能体”(Ambient Agents)的概念,这是一种…...

GPT( Generative Pre-trained Transformer )模型:基于Transformer

GPT是由openAI开发的一款基于Transformer架构的预训练语言模型&#xff0c;拥有强大的生成能力和多任务处理能力&#xff0c;推动了自然语言处理&#xff08;NLP&#xff09;的快速发展。 一 GPT发展历程 1.1 GPT-1&#xff08;2018年&#xff09; 是首个基于Transformer架构…...

游戏引擎学习第275天:将旋转和剪切传递给渲染器

回顾并为今天的内容定下基调 我们认为在实现通用动画系统之前&#xff0c;先学习如何手写动画逻辑是非常有价值的。虽然加载和播放预设动画是合理的做法&#xff0c;尤其是在团队中有美术人员使用工具制作动画的情况下更是如此&#xff0c;但手动编写动画代码能让我们更深入理…...

conda 输出指定python环境的库 输出为 yaml文件

conda 输出指定python环境的库 输出为 yaml文件。 有时为了项目部署&#xff0c;需要匹配之前的python环境&#xff0c;需要输出对应的python依赖库。 假设你的目标环境名为 myenv&#xff0c;运行以下命令&#xff1a; conda env export -n myenv > myenv_environment.ym…...

ES6 语法

扩展运算符 … 口诀&#xff1a;三个点&#xff0c;打散数组&#xff0c;逐个放进去 例子&#xff1a; let arr [1, 2];let more [3, 4];arr.push(...more); // arr 变成 [1, 2, 3, 4]解构赋值 口诀&#xff1a;左边是变量&#xff0c;右边是值&#xff0c;一一对应 例子&…...

BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(下)

文章目录 引言一、课程表1.1 题目链接&#xff1a;https://leetcode.cn/problems/course-schedule/description/1.2 题目分析&#xff1a;1.3 思路讲解&#xff1a;1.4 代码实现&#xff1a; 二、课程表||2.1 题目链接&#xff1a;https://leetcode.cn/problems/course-schedul…...

While语句数数字

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int number in.nextInt();int count 0;while( number > 0 ){number number / 10;count count 1;}System.out.println(count);} }...

G1JVM内存分配机制详解

为什么堆内存不是预期的3G&#xff1f; 当您设置-XX:MaxRAMPercentage75时&#xff0c;JVM并不会简单地将容器内存(4G)的75%全部分配给堆&#xff0c;原因如下&#xff1a; 计算基准差异&#xff1a; 百分比是应用于"可用物理内存"而非"容器总内存" &q…...

“端 - 边 - 云”三级智能协同平台的理论建构与技术实现

摘要 随着低空经济与智能制造的深度融合&#xff0c;传统集中式云计算架构在实时性、隐私保护和资源效率上的瓶颈日益凸显。本文提出“端 - 边 - 云”三级智能协同平台架构&#xff0c;以“时空 - 资源 - 服务”三维协同理论为核心&#xff0c;构建覆盖终端感知、边缘计算、云端…...

【UAP】《Empirical Upper Bound in Object Detection and More》

Borji A, Iranmanesh S M. Empirical upper bound in object detection and more[J]. arXiv preprint arXiv:1911.12451, 2019. arXiv-2019 文章目录 1、Background and Motivation2、Related Work3、Advantages / Contributions4、Experimental Setup4.1、Benchmarks Dataset…...

Web Service及其实现技术(SOAP、REST、XML-RPC)介绍

一.概述 1.Web Service&#xff08;Web 服务&#xff09; Web Service 由万维网联盟 (W3C) 定义为一种软件系统&#xff0c;旨在支持通过网络进行可互操作的计算机间交互。 广义概念&#xff1a;基于 Web 技术&#xff08;如 HTTP 协议&#xff09;的跨平台、跨语言通信机制…...

基于Spring Boot+Layui构建企业级电子招投标系统实战指南

一、引言&#xff1a;重塑招投标管理新范式 在数字经济浪潮下&#xff0c;传统招投标模式面临效率低、透明度不足、流程冗长等痛点。本文将以Spring Boot技术生态为核心&#xff0c;融合Mybatis持久层框架、Redis高性能缓存及Layui前端解决方案&#xff0c;构建一个覆盖招标代理…...

【嵌入式】记一次解决VScode+PlatformIO安装卡死的经历

PlatformIO 是开源的物联网开发生态系统。提供跨平台的代码构建器、集成开发环境&#xff08;IDE&#xff09;&#xff0c;兼容 Arduino&#xff0c;ESP8266和mbed等。 开源库地址&#xff1a;https://github.com/platformio 在 VScode 中配置 PlatformIO 插件&#xff0c;记录…...

抗量子计算攻击的数据安全体系构建:从理论突破到工程实践

在“端 - 边 - 云”三级智能协同理论中&#xff0c;端 - 边、边 - 云之间要进行数据传输&#xff0c;网络的安全尤为重要&#xff0c;为了实现系统总体的安全可控&#xff0c;将构建安全网络。 可先了解我的前文&#xff1a;“端 - 边 - 云”三级智能协同平台的理论建构与技术实…...

【FMMT】基于模糊多模态变压器模型的个性化情感分析

遇到很难的文献看不懂,不应该感到气馁,应该激动,因为外审估计也看不太懂,那么学明白了可以吓唬他 缺陷一:输入依赖性与上下文建模不足​​ ​​缺陷描述​​: 传统自注意力机制缺乏因果关系,难以捕捉序列历史背景多模态数据间的复杂依赖关系未被充分建模CNN/RNN类模型在…...

力扣Hot100(Java版本)

1. 哈希 1.1 两数之和 题目描述&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同…...

Stream流简介、常用方法

Stream流的三类方法 获取Stream流 创建一条流水线&#xff0c;并把数据放到流水线上准备进行操作 中间方法 流水线上的操作一次操作完毕之后&#xff0c;还可以继续进行其他操作 终结方法 一个Stream流只能有一个终结方法是流水线上的最后一个操作 生成Stream流的方式 Collec…...

‌C# 集成 FastDFS 完整指南‌

‌1. 环境准备‌ ‌(1) 安装 FastDFS 服务端‌ 部署 Tracker 和 Storage 节点&#xff0c;确保服务正常运行。 配置 tracker_server 地址&#xff08;如 192.168.1.100:22122&#xff09;。 ‌(2) 添加 NuGet 包‌ 通过 NuGet 安装 FastDFS 客户端库&#xff1a; Install-Pack…...

重构门店网络:从“打补丁“到“造地基“的跨越

您是否遇到过这样的窘境&#xff1f; 新店开张要等一周&#xff0c;就为装根网线&#xff1b; 偏远地区门店三天两头断网&#xff0c;顾客排长队却结不了账&#xff1b; 总部想看实时数据&#xff0c;结果收到一堆乱码报错&#xff1b; 总部ERP系统升级&#xff0c;2000家门…...

TI的ADS1291代替芯片LH001-99

血管疾病严重威胁人类生命健康安全&#xff0c;随着人口老龄化进程的加快和社会压力等因素的增加&#xff0c;患病率正呈现逐年上升趋势&#xff0c;并且越来越年轻化。然而&#xff0c;心血管疾病大多由器官器质性病变引起&#xff0c;一旦患病很难完全康复&#xff0c;需要进…...

NPOI 操作 Word 文档

管理 NuGet 程序包 # word操作 NPOI# 图片操作 SkiaSharp Controller代码 using Microsoft.AspNetCore.Mvc; using NPOI.Util; using NPOI.XWPF.Model; using NPOI.XWPF.UserModel; using SkiaSharp;namespace WebApplication2.Controllers {[Route("api/Npoi/[action]…...

css3基于伸缩盒模型生成一个小案例

css3基于伸缩模型生成一个小案例 在前面学习了尚硅谷天禹老师的css3内容后&#xff0c;基于伸缩盒模型做的一个小案例&#xff0c;里面使用了 flex 布局&#xff0c;以及主轴切换&#xff0c;以及主轴平分等特性&#xff0c;分为使用css3 伸缩盒模型方式&#xff0c;已经传统的…...

精简大语言模型:用于定制语言模型的自适应知识蒸馏

Streamlining LLMs: Adaptive Knowledge Distillation for Tailored Language Models 发表&#xff1a;NAACL 2025 机构&#xff1a;德国人工智能研究中心 Abstract 诸如 GPT-4 和 LLaMA-3 等大型语言模型&#xff08;LLMs&#xff09;在多个行业展现出变革性的潜力&#xf…...

Rollup入门与进阶:为现代Web应用构建超小的打包文件

我们常常面临Webpack复杂配置或是Babel转译后的冗余代码&#xff0c;结果导致最终的包体积居高不下加载速度也变得异常缓慢&#xff0c;而在众多打包工具中Rollup作为一个轻量且高效的选择&#xff0c;正悄然改变着这一切&#xff0c;本文将带你深入了解这个令人惊艳的打包工具…...

博客系统技术需求文档(基于 Flask)

以下内容是AI基于要求生成的技术文档&#xff0c;仅供参考~ &#x1f9f1; 一、系统架构设计概览 层级 内容 前端层 HTML Jinja2 模板引擎&#xff0c;集成 Markdown 编辑器、代码高亮 后端层 Flask 框架&#xff0c;RESTful 风格&#xff0c;Jinja2 渲染 数据库 SQLi…...

快速排序、归并排序、计数排序

文章目录 前言一、归并排序算法逻辑递归实现非递归实现 二、快速排序算法介绍递归实现非递归实现算法的一种优化—三路划分法 四、计数排序算法原理代码实现优劣分析 五、排序算法的性能比较总结 前言 本文介绍这三种非常强大的排序算法&#xff0c;每种算法都有各自的特点、不…...

python语言与地理处理note 2025/05/11

1. 函数定义必须要在调用之前 &#xff08;1&#xff09;正确示例&#xff1a; def test():print("what a wonderful world!")test() &#xff08;2&#xff09;错误示例&#xff1a; test() def test():print("what a wonderful world!") 会报错&…...

贪心算法:最小生成树

假设无向图为&#xff1a; A-B:1 A-C:3 B-C:1 B-D:4 C-D:1 C-E:5 D-E:6 一、使用Prim算法&#xff1a; public class Prim {//声明了两个静态常量&#xff0c;用于辅助 Prim 算法的实现private static final int V 5;//点数private static final int INF Integer.MA…...

免费 OCR 识别 + 批量处理!PDF 工具 提升办公效率

各位办公小能手们&#xff01;今天给你们介绍一款超厉害的软件——PDF工具V2.2&#xff01;我跟你们说&#xff0c;这玩意儿就像是PDF界的超级英雄&#xff0c;专门搞定PDF文件的编辑、转换、压缩这些事儿。 先说说它的核心功能哈。基础文档管理方面&#xff0c;它能把好几个PD…...

尼康VR镜头防抖模式NORMAL和ACTIVE的区别(私人笔记)

1. NORMAL 模式&#xff08;常规模式&#xff09; 适用场景&#xff1a;一般手持拍摄&#xff0c;比如人像、静物、风景或缓慢平移镜头&#xff08;如水平追拍&#xff09;等。工作特性&#xff1a; 补偿手抖引起的小幅度震动&#xff08;比如手持时自然的不稳&#xff09;&am…...

在scala中sparkSQL读入csv文件

以下是 Scala 中使用 Spark SQL 读取 CSV 文件的核心步骤和代码示例&#xff08;纯文本&#xff09;&#xff1a; 1. 创建 SparkSession scala import org.apache.spark.sql.SparkSession val spark SparkSession.builder() .appName("Spark SQL Read CSV") …...

swift flask python ipad当电脑键盘 实现osu x键和z键 长按逻辑有问题 quart 11毫秒

键盘不行我5星都打不过&#xff0c;磁轴不在身边 127.0.0.1不行要用192.168哪个地址 from flask import Flask from pynput.keyboard import Controller from threading import Threadapp Flask(__name__) keyboard Controller()# 按下按键 app.route("/press_down/<…...

浅论3DGS溅射模型在VR眼镜上的应用

摆烂仙君小课堂开课了&#xff0c;本期将介绍如何手搓VR眼镜&#xff0c;并将随手拍的电影变成3D视频。 一、3DGS模型介绍 3D 高斯模型是基于高斯函数构建的用于描述三维空间中数据分布概率的模型&#xff0c;高斯函数在数学和物理领域有着广泛应用&#xff0c;其在 3D 情境下…...

React状态管理-对state进行保留和重置

相同位置的相同组件会使得 state 被保留下来 当你勾选或清空复选框的时候&#xff0c;计数器 state 并没有被重置。不管 isFancy 是 true 还是 false&#xff0c;根组件 App 返回的 div 的第一个子组件都是 <Counter />&#xff1a; 你可能以为当你勾选复选框的时候 st…...

嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐

按键控制LED灯 按键控制LED的开发流程&#xff1a; 第一步&#xff1a;使能功能复用时钟 第二布&#xff0c;配置复用寄存器 第三步&#xff0c;配置中断屏蔽寄存器 固件库按键控制LED灯 外部中断EXTI结构体&#xff1a;typedef struct{uint32_t EXTI_Line; …...

git merge和git rebase

git merge和git rebase 在Git中merge和rebase都是git在管理整合分支的两种主要工具&#xff0c;但是他们的工作方式、提交历史影响和使用场景不同。 git merge 定义 将两个分支的提交历史合并&#xff0c;创建一个新的合并提交&#xff08;merge commit&#xff09;&#xff…...

我的MCP相关配置记录

1.VSCode的Cline中的MCP {"mcpServers": {"github.com/modelcontextprotocol/servers/tree/main/src/github": {"autoApprove": [],"disabled": false,"timeout": 60,"command": "cmd","args&quo…...

浅聊一下数据库的索引优化

背景 这里的索引说的是关系数据库&#xff08;MSSQL&#xff09;中的索引。 本篇不是纯技术性的内容&#xff0c;只是聊一次性能调优的经历&#xff0c;包含到一些粗浅的实现和验证手段&#xff0c;所以&#xff0c;大神忽略即可。 额…对了&#xff0c;笔者对数据库的优化手段…...