C# Winform编程(7)文件处理技术
文件处理技术
- System.IO命名空间
- System.IO命名空间常用的类
- System.IO命名空间常用的枚举
- File类的常用方法
- File类的常用静态方法
- FileInfo类的常用方法
- File类和FileInfo类的区别
- 文件夹类Directory的常用方法
- 文件流类FileStream
- 文件的读写
- 读写二进制流
- 读写内存流
System.IO命名空间
System.IO命名空间常用的类
| 类 | 说明 |
|---|---|
| File | 提供用于创建,复制,删除,移动和打开文件的静态方法,并协助创建FileStream对象 |
| FileInfo | 提供用于创建,复制,删除,移动和打开文件的实例方法,并且帮助创建FileStream对象。无法继承此类 |
| FileStream | 公开以文件为主的Stream,即支持同步读写操作,也支持异步读写操作 |
| BinaryReader | 用特定的编码将基元数据类型读作二进制值 |
| BinaryWriter | 以二进制形式将基元类型写入流,并支持用特定的编码写入字符串 |
| BufferedStream | 给另一流上的读写操作添加一个缓冲层。无法继承此类 |
| Directory | 公开用于创建,移动和枚举目录和子目录的静态方法。无法继承此类 |
| DirectoryInfo | 公开用于创建,移动和枚举目录和子目录的实例方法。无法继承此类 |
| Path | 对包含文件或目录路径信息的String实例执行操作。这些操作是以跨平台的方式执行的 |
| StreamReader | 实现一个TextReader,使其以一种特定的编码从字节流中读取字符 |
| StreamWriter | 实现一个TextWriter,使其以一种特定的编码向字节流中写入字符 |
| FileSysWatcher | 侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件 |
System.IO命名空间常用的枚举
| 枚举 | 说明 |
|---|---|
| FileMode | 指定操作系统打开文件的方式 |
| FileShare | 包含用于控制其他FileStream对象对同一文件可以具有的访问类型的常数 |
| FileAccess | 定义用于控制对文件的读访问,写访问或读/写访问的常数 |
File类的常用方法
| 方法 | 说明 |
|---|---|
| Move | 将指定文件移到新位置,并提供指定新文件名的选项 |
| Delete | 删除指定的文件。如果指定的文件不存在,则不引发异常 |
| Copy | 已重载。将现有文件复制到新文件 |
| CreateText | 创建或打开一个文件用于写入UTF-8编码的文本 |
| OpenText | 打开现有UTF-8编码文本文件以进行读取 |
| Open | 已重载。打开指定路径上的FileStream |
private void FileDemo()
{string path = @"c:\temp\MyTest.txt";if (!File.Exists(path)){// 创建文件以便写入内容using (StreamWriter sw = File.CreateText(path)){sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");}}// 打开文件,从中读数据using (StreamReader sr = File.OpenText(path)){string s = "";while ((s = sr.ReadLine()) != null){Console.WriteLine(s);}}try{string path2 = path + "temp";// 确认将要复制成的文件是否已经有同名的文件存在File.Delete(path2);// 复制文件File.Copy(path, path2);Console.WriteLine("{0} was copied to {1}.",path, path2 );// 删除新生成的文件File.Delete(path2);Console.WriteLine("{0} was successfully deleted.", path2);}catch (Exception ex) {Console.WriteLine("The process failed:{0}", ex.ToString());}
}
File类的常用静态方法
| 方法 | 说明 |
|---|---|
| CreateText(string FilePath) | 创建或打开一个文件,用于写入UTF-8编码文本内容 |
| OpenText(string FilePath) | 打开现有UTF-8编码文本文件以进行读取 |
| Open(string FilePath, FileMode) | 打开指定路径上的FileStream,具有读/写访问权限 |
| Create(string FilePath) | 在指定路径中创建文件 |
| OpenRead(string FilePath) | 打开现有文件以进行读取 |
| AppendText(string FilePath) | 创建一个StreamWriter,它将UTF-8编码文本追加到现有文件 |
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace FileProcess
{public partial class FormFileStaticMothed : Form{public FormFileStaticMothed(){InitializeComponent();}private static string directory_path = "C:\\temp\\";private void FormFileStaticMothed_Load(object sender, EventArgs e){}/// <summary>/// 创建文本文件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){try{if (textBox1.Text.Length == 0){MessageBox.Show("文件名禁止为空!", "警报");}else{directory_path = directory_path + textBox1.Text.Trim() + ".txt";// File.CreateText(...) 返回一个StreamWriterStreamWriter sw = File.CreateText(directory_path);button1.Enabled = false;button2.Enabled = true;button3.Enabled = true;richTextBox1.Enabled = true;MessageBox.Show("文件成功建立", "消息");sw.Close();}}catch (Exception ex){MessageBox.Show("磁盘操作错误,原因:"+Convert.ToString(ex), "警报"); }}/// <summary>/// 打开文本文件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button3_Click(object sender, EventArgs e){try{OpenFileDialog open = new OpenFileDialog(); // 创建一个打开的对话框open.Title = "打开文本文件";open.FileName = "";open.AddExtension = true; // 设置是否自动在文件中添加扩展名open.CheckFileExists = true; // 检查文件是否存在open.CheckPathExists = true; // 检查目录有效性open.Filter = "文本文件(*.txt)|*.txt"; // 设置打开文件的类型open.ValidateNames = true;// 文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名if (open.ShowDialog() == DialogResult.OK){Console.WriteLine(open.FileName);StreamReader sr = new StreamReader(open.FileName, System.Text.Encoding.Default);this.richTextBox1.Text = sr.ReadToEnd();}MessageBox.Show("文件打开成功。", "消息");}catch (Exception ex){MessageBox.Show("磁盘操作错误,原因:"+Convert.ToString(ex), "报警");}}/// <summary>/// 保存编辑文件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){try{FileStream textFile = File.Open(directory_path+ textBox1.Text.Trim() + ".txt", FileMode.OpenOrCreate, FileAccess.Write);StreamWriter sw = new StreamWriter(textFile, Encoding.GetEncoding("GB2312"));sw.Write(richTextBox1.Text.ToString());sw.Close();MessageBox.Show("文件写成功。", "报警");}catch (Exception ex){MessageBox.Show("磁盘操作错误,原因:" + Convert.ToString(ex), "报警") ;}}}
}

FileInfo类的常用方法
FileInfo提供创建,复制,删除,移动和打开文件的实例方法,并且帮助创建FileStream对象。
| 属性 | 说明 |
|---|---|
| Attributes | 获取或设置当前FileSystemInfo对象的FileAttributes属性(从FileSystemInfo类继承) |
| CreationTime | 获取或设置当前FileSystemInfo对象的创建时间(从FileSystemInfo类继承) |
| Directory | 获取父目录的实例 |
| DirectoryName | 获取表示目录的完成整路径的字符串 |
| Exists | 已重写。获取指示文件是否存在的值 |
| Extension | 获取表示文件扩展名部分的字符串(从FileSystemInfo类继承) |
private void FileInfoDemo(){string fileName = "C:\\temp\\autoexec.bat";FileInfo fileInfo = new FileInfo(fileName);if (fileInfo.Exists){return;}Console.WriteLine("{0} has a directoryName of {1}", fileName, fileInfo.DirectoryName);}
File和FileInfo综合示例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;namespace FileProcess
{public partial class FormFileDemo : Form{public FormFileDemo(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string target = @"C:\temp\1.txt";if (File.Exists(target)){File.Delete(target);}File.CreateText(target);MessageBox.Show("文件创建成功!");}private void button2_Click(object sender, EventArgs e){ string someFile = @"C:\temp\F1.txt";string target = @"C:\temp\1.txt";if (!File.Exists(someFile)){MessageBox.Show("文件不存在!");}else{if (File.Exists(target)){File.Delete(target);}File.Copy(someFile, target);MessageBox.Show("文件复制成功!");}}private void button3_Click(object sender, EventArgs e){string target = @"C:\temp\1.txt";if (File.Exists(target)){File.Delete(target);MessageBox.Show("文件删除成功!");}}private void button4_Click(object sender, EventArgs e){string somefile = @"C:\temp\1.txt";FileInfo myFile = new FileInfo(somefile);if (myFile.Exists){MessageBox.Show("文件已经存在");label1.Text = "创建时间:" + myFile.CreationTime.ToString();label2.Text = "文件夹:" + myFile.Directory.ToString();label3.Text = "文件夹名称:" + myFile.DirectoryName.ToString() + ",文件扩展名:" + myFile.Extension.ToString();}else {MessageBox.Show("文件不存在");}}}
}

File类和FileInfo类的区别
- File为静态类,可以直接使用;FileInfo需要实例化后才能使用。
- 从性能上考虑,如果要多次操作文件,不管是否针对相同文件,则应使用FileInfo。
- 每次通过File类调用某个方法时,都需要占用一定的CPU资源,而FileInfo类只在创建对象时执行一次安全检查。
文件夹类Directory的常用方法
Directory类公开用于创建,移动和枚举通过目录和子目录的静态方法。无法继承此类。
| 方法 | 说明 |
|---|---|
| Move | 蒋文件或目录及其内容移动到新位置 |
| Delete | 已重载。删除指定的目录 |
| CreateDirectory | 已重载。创建指定路径中的所有目录 |
| GetCreationTime | 获取目录的创建日期和时间 |
| GetCurrentDirectory | 获取引用程序的当前工作目录 |
| GetFiles | 已重载。返回指定目录中的文件的名称 |
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;namespace FileProcess
{public partial class FormDirectory : Form{public FormDirectory(){InitializeComponent();}private static string directory_path = "C:\\temp\\dir1";private static string directory_otherpath = "C:\\temp\\dir2";/// <summary>/// Directory类常用方法/// </summary>private void DirectoryDemo(){try{// 获取当前目录创建时间DateTime dt = Directory.GetCreationTime(Environment.CurrentDirectory);if (DateTime.Now.Subtract(dt).TotalDays > 364){Console.WriteLine("This directory is over a year old.");}else if (DateTime.Now.Subtract(dt).TotalDays > 30){Console.WriteLine("This directory is over a month old.");}else if (DateTime.Now.Subtract(dt).TotalDays <= 1){Console.WriteLine("This directory is less than a day old.");}else{Console.WriteLine("This directory was create on {0}", dt);}}catch (Exception ex){Console.WriteLine("The process failed:{0}", ex.ToString());}}private void button1_Click(object sender, EventArgs e){DirectoryDemo();}/// <summary>/// 创建目录/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){try{Directory.CreateDirectory(directory_path);button2.Enabled = false;button3.Enabled = true;button4.Enabled = true;button5.Enabled = true;button6.Enabled = true;}catch (Exception ex) {MessageBox.Show("磁盘操作错误,原因:"+Convert.ToString(ex), "警报");}}/// <summary>/// 删除目录/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button3_Click(object sender, EventArgs e){try{Directory.Delete(directory_path);button2.Enabled = true;button3.Enabled = false;button4.Enabled = false;button5.Enabled = false;button6.Enabled = false;MessageBox.Show("文件夹已删除", "警报");}catch (Exception ex){MessageBox.Show("磁盘炒作错误,原因:"+Convert.ToString(ex), "警报"); }}/// <summary>/// 移动目录/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button4_Click(object sender, EventArgs e){try{Directory.Move(directory_path, directory_otherpath);MessageBox.Show("文件夹移动成功","警报");}catch (Exception ex){MessageBox.Show("磁盘操作错误,原因:"+Convert.ToString(ex), "警报");}}/// <summary>/// 目录创建时间/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button5_Click(object sender, EventArgs e){try{MessageBox.Show(string.Format("{0}:G", Directory.GetCreationTime(directory_path)), "提示");}catch (Exception ex){MessageBox.Show("磁盘操作错误,原因:"+Convert.ToString(ex), "报警");}}/// <summary>/// 返回指定目录/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button6_Click(object sender, EventArgs e){try{string[] fileEntries = Directory.GetFiles(directory_path);if (fileEntries.Length != 0){foreach (string s in fileEntries){if (File.Exists(s)){MessageBox.Show("内有文件信息:" + s, "提示");}}}else {MessageBox.Show("空文件夹", "提示");}}catch (Exception ex){MessageBox.Show("磁盘操作错误,原因:"+Convert.ToString(ex), "报警");}}}
}
文件流类FileStream
- FileStream文件流类简介
FileStream对象也称为文件流对象,它为文件流的读写操作提供通道,而File对象相当于提供一个文件句柄。在文件操作中,针对FileStream对象的操作必须首先实例化一个FileStream类对象后才可以进行,这点与File类的操作不同。
FileStream类在实例化后可以用于读写文件中的数据,构造FileStream实例,需要一下4条信息:- 要访问的文件。
- 表示如何打开文件的模式。
- 表示访问文件的方式:只读、只写、读写。
- 共享访问:表示是否独占访问文件。
- FileStream文件流类的创建 :
- 使用File对象的Create方法。
FileStream mikecatstream;
mikecatstream = File.Create(“C:\mikecat.txt”); - 使用File对象的Open方法。
FileStream mikecatstream;
mikecatstream = File.Open(“c:\mikecat.txt”,FileMode.OpenOrCreate,FileAccess.Write); - 使用类FileStream的构造函数。
FileStream mikecatstream;
mikecatstream = new FileStream(“c:\mikecat.txt”, FileMode.OpenOrCreate, FileAccess.Write);
- 使用File对象的Create方法。
FileStream类的3种常用构造函数
| 名称 | 说明 |
|---|---|
| FileStream(string FilePath, FileMode) | 使用指定的路径和创建模式初始化FileStream类的新实例 |
| FileStream(string FilePath, FileMode, FileAccess) | 使用指定路径,创建模式和读/写 权限初始化FileStream类的新实例 |
| FileStream(string FilePath, FileMode, FileAccess, FileShare) | 使用指定路径,创建模式,读/写权限和共享权限创建FileStream类的新实例 |
枚举类型FileMode,FileAccess和FileShare
| 名称 | 取值 | 说明 |
|---|---|---|
| FileMode | Append,Create,CreateNew,Open,OpenOrCreate和Truncate | 指定操作系统打开文件的方式 |
| FileAccess | Read,Write和ReadWrite | 定义访问权限 |
| FileShare | Inheritable,None,Read,ReadWrite和Write | 包含用于控制其他FileStream对象对同一文件可以具有的访问类型的常数 |
枚举类型FileMode枚举值含义
| Append | 追加方式打开现有文件,或创建新文件。FileMode.Append只能同FileMode.Write一起使用。 |
| Create | 指定操作系统应创建新文件。如果文件已存在则被清空。如果文件不存在这用CreateNew;否则使用Truncate |
| CreateNew | 指定操作系统应创建新文件。此操作需要FileIOPermissionAccess.Write。如果文件已存在,则将引发IOException |
| Open | 指定操作系统打开心有文件。访问权限取决于FileAccess指定,文件不存在,则引发System.IO.FileNotFoundException |
| Truncate | 指定操作系统应打开现有文件。文件一旦打开,就会清空文件内容。 |
枚举类型FileAccess枚举值的含义
| 成员名称 | 说明 |
|---|---|
| Read | 对文件的读访问。 |
| ReadWrite | 对文件的读写访问。 |
| Write | 对文件的写访问。 |
枚举类型FileShare枚举值的含义
| Delete | 允许随后删除文件 |
| Inheritable | 使文件句柄可由子进程继承。Win32不直接支持此功能 |
| None | 谢绝共享当前文件。文件关闭前,打开该文件的任何请求都将失败 |
| Read | 允许随后打开文件读取。 |
| ReadWrite | 允许随后打开文件读写 |
| Write | 允许随后打开文件写入。 |
文件的读写
读写二进制流
读写内存流
相关文章:
C# Winform编程(7)文件处理技术
文件处理技术 System.IO命名空间System.IO命名空间常用的类System.IO命名空间常用的枚举 File类的常用方法File类的常用静态方法FileInfo类的常用方法File类和FileInfo类的区别文件夹类Directory的常用方法文件流类FileStream文件的读写读写二进制流读写内存流 System.IO命名空…...
前端工作方式要换了?HTMX简介:无需JavaScript的动态HTML
HTMX允许你使用扩展的HTML语法代替 JavaScript 来实现交互性。HTMX 在标记中直接为你提供HTTP 交互,并支持许多其他交互需求,无需求助于 JavaScript。这是一个有趣的想法,可能最终会影响到web前端的工作方式。让我们看看如何使用HTMX以及它的…...
动手学深度学习—使用块的网络VGG(代码详解)
目录 1. VGG块2. VGG网络3. 训练模型 1. VGG块 经典卷积神经网络的基本组成部分是下面的这个序列: 1.带填充以保持分辨率的卷积层; 2.非线性激活函数,如ReLU; 3.汇聚层,如最大汇聚层。 定义网络块,便于我…...
性能优化:JIT即时编译与AOT提前编译
优质博文:IT-BLOG-CN 一、简介 JIT与AOT的区别: 两种不同的编译方式,主要区别在于是否处于运行时进行编译。 JIT:Just-in-time动态(即时)编译,边运行边编译:在程序运行时,根据算法计算出热点代码…...
抖音同城榜:探索城市新潮流
随着科技的飞速发展,短视频已经成为了人们日常生活中不可或缺的一部分。作为短视频领域的佼佼者,抖音一直致力于为用户带来更丰富、更有趣的短视频内容。抖音同城榜应运而生,成为了最新、最热门的话题聚集地,吸引了大量潮流达人和…...
云表|低代码开发崛起:重新定义企业级应用开发
低代码开发这个概念在近年来越来越受到人们的关注,市场对于低代码的需求也日益增长。据Gartner预测,到2025年,75%的大型企业将使用至少四种低代码/无代码开发工具,用于IT应用开发和公民开发计划。 那么,为什…...
【算法题】2906. 构造乘积矩阵
题目: 给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid ,定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件,则称 p 为 grid 的 乘积矩阵 : 对于每个元素 p[i][j] ,它的值等于除了 g…...
机器学习基础之《回归与聚类算法(4)—逻辑回归与二分类(分类算法)》
一、什么是逻辑回归 1、逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广…...
UWB安全数据通讯STS-加密、身份认证
DW3000系列才能支持UWB安全数据通讯,DW1000不支持 IEEE 802.15.4a没有数据通讯安全保护机制,IEEE 802.15.4z中指定的扩展得到增强(在PHY/RF级别):增添了一个重要特性“扰频时间戳序列(STS)”&a…...
vue3中去除eslint严格模式
vue3中去除eslint严格模式 1、全局搜索:extends 2、一般在package.json或者vue.config.js中,直接删除掉vue/standard,重启项目。(在package.json文件中,编译不允许有注释,所以直接删掉)...
Win10如何彻底关闭wsappx进程?
Win10如何彻底关闭wsappx进程?在Win10电脑中,用户看到了wsappx进程占用了大量的系统资源,所以想结束wsappx进程,提升电脑的运行速度。但是,用户们不知道彻底关闭掉wsappx进程的方法,那么接下来小编就给大家…...
docker 安装 sftpgo
sftpgo 简介 sftpgo 是一个功能齐全且高度可配置的 SFTP 服务器,具有可选的 HTTP/S、FTP/S 和 WebDAV 支持。支持多种存储后端:本地文件系统、加密本地文件系统、S3(兼容)对象存储、Google 云存储、Azure Blob 存储、SFTP。 官…...
threejs (一) 创建一个场景
引入 npm install three import * as THREE from three;const scene new THREE.Scene();或者使用bootCDN复制对应的版本连接 <script src"https://cdn.bootcdn.net/ajax/libs/three.js/0.156.1/three.js"></script>基础知识 场景、相机、渲染器 通过…...
二分查找,求方程多解
1.暴力遍历: 解为两位小数,故0.001的范围肯定可以包含(零点存在) 2.均分为区间长度为1的小区间(由于两解,距离不小于1),一个区间最多一个解 1.防止两边端点都为解 2&…...
代码随想录算法训练营第二十九天 | 回溯算法总结
代码随想录算法训练营第二十九天 | 回溯算法总结 1. 组合问题 1.1 组合问题 在77. 组合中,我们开始用回溯法解决第一道题目:组合问题。 回溯算法跟k层for循环同样是暴力解法,为什么用回溯呢?回溯法的魅力,用递…...
运算方法和运算电路
一、逻辑门电路 1、逻辑门电路基础总结 2、异或运算妙用 3、逻辑常用公式 二、加法器(重点) 1、标志位的生成原理 2、加法器总结 三、多路门选择器,三态门...
计算机网络篇之TCP滑动窗口
文章目录 前言概述 前言 在网络数据传输时,若传输的原始数据包比较大,会将数据包分解成多个数据包进行发送。需要对数据包确认后,才能发送下一个数据包。在等待确认包的这个过程浪费了大量的时间,不过还好TCP引入了滑动窗口的概念…...
本地安装telepresence,访问K8S集群 Mac(m1) 非管理員
kubeconfig 一.安装telepresence 1.安装 Telepresence Quickstart | Telepresence (1)brew install datawire/blackbird/telepresence 2.配置 目录kubectl 将使用默认的 kubeconfig 文件:$HOME/.kube/config 创建文件夹&…...
今日思考(2) — 训练机器学习模型用GPU还是NUP更有优势(基于文心一言的回答)
前言 深度学习用GPU,强化学习用NPU。 1.训练深度学习模型,强化学习模型用NPU还是GPU更有优势 在训练深度学习模型时,GPU相比NPU有优势。GPU拥有更高的访存速度和更高的浮点运算能力,因此更适合深度学习中的大量训练数据、大量矩阵…...
8.3 C++ 定义并使用类
C/C语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
