青少年编程与数学 02-020 C#程序设计基础 16课题、文件操作

news2025/6/8 0:15:39

青少年编程与数学 02-020 C#程序设计基础 16课题、文件操作

  • 一、文件操作
    • 1. 什么是文件操作?
    • 2. 文件操作在程序设计中的重要性
    • 小结
  • 二、C#文件操作
    • 1. 引入命名空间
    • 2. 常见文件操作
        • (1)创建文件
        • (2)写入文件
        • (3)读取文件
        • (4)追加内容到文件
        • (5)复制文件
        • (6)移动文件
        • (7)删除文件
        • (8)检查文件是否存在
    • 3. 使用`FileStream`处理大文件
        • (1)异步写入大文件
        • (2)异步读取大文件
    • 4. 异常处理
    • 5. 跨平台注意事项
  • 三、C#文件夹操作
    • 1. 创建文件夹
    • 2. 删除文件夹
    • 3. 检查文件夹是否存在
    • 4. 遍历文件夹内的文件
    • 5. 获取文件夹内的子文件夹
    • 6. 移动文件夹
    • 6. 复制文件夹
    • 7. 使用`DirectoryInfo`类
    • 8. 异常处理
  • 四、C#中的I/O数据流
    • 1. 数据流的分类
    • 2. 常见的数据流类
        • (1)`Stream`类
        • (2)`FileStream`
        • (3)`MemoryStream`
        • (4)`BufferedStream`
        • (5)`StreamReader`和`StreamWriter`
        • (6)`BinaryReader`和`BinaryWriter`
    • 3. 数据流的使用方法
        • (1)读取数据
        • (2)写入数据
        • (3)定位和移动
    • 4. 异步I/O操作
        • (1)异步读取数据
        • (2)异步写入数据
    • 5. 异常处理
    • 6. 资源管理
    • 小结
  • 五、文件操作和使用数据库
    • 1. 数据存储
    • 2. 数据访问
    • 3. 数据管理
    • 4. 性能和扩展性
    • 5. 实际应用中的结合
    • 小结
  • 总结

摘要:本文介绍了C#程序设计中的文件操作和数据库使用。文件操作包括文件和文件夹的创建、读写、复制、移动、删除等,通过.NET 8的System.IO命名空间实现。强调了异步I/O操作和异常处理的重要性。深入探讨了C#中的I/O数据流,包括FileStreamMemoryStream等常见类的使用。分析了文件操作与数据库在数据存储、访问、管理和性能方面的差异,并提出了结合使用的方法。合理选择和结合二者可提升程序的灵活性和健壮性。

关键词:C#;文件操作;数据库;.NET 8;I/O数据流;异步操作;异常处理

AI助手:Kimi


一、文件操作

1. 什么是文件操作?

文件操作是指在程序设计中对文件进行的一系列操作,包括文件的创建、读取、写入、更新、删除等。这些操作允许程序与外部存储设备(如硬盘、固态硬盘等)进行交互,从而实现数据的持久化存储和访问。常见的文件操作包括:

  • 文件创建:创建一个新的文件。
  • 文件读取:从文件中读取数据到程序中。
  • 文件写入:将数据写入到文件中。
  • 文件更新:修改文件中的部分内容。
  • 文件删除:删除一个已存在的文件。
  • 文件复制:复制一个文件的内容到另一个文件。
  • 文件移动:将文件从一个位置移动到另一个位置。

2. 文件操作在程序设计中的重要性

数据持久化:

文件操作允许程序将数据保存到外部存储设备中,使得数据在程序关闭后仍然可以被访问。这对于需要长期存储数据的应用程序(如数据库、日志系统等)至关重要。

数据共享:

文件可以被多个程序共享和访问,使得不同程序之间能够方便地交换数据。例如,一个程序可以将数据写入到一个文件中,另一个程序可以读取该文件中的数据。

配置管理:

文件常用于存储程序的配置信息,如配置文件(.ini.json.xml等)。通过文件操作,程序可以在启动时读取配置文件,并根据配置信息调整运行行为。

日志记录:

文件操作用于记录程序运行时的日志信息,帮助开发者进行调试和问题排查。日志文件可以记录程序的运行状态、错误信息等,便于后续分析。

资源管理:

文件操作可以帮助程序管理外部资源,如文件流、数据库连接等。通过文件操作,程序可以确保资源在使用后被正确释放,避免资源泄漏。

用户交互:

文件操作可以用于实现用户与程序之间的交互。例如,用户可以通过文件上传功能将文件上传到服务器,程序可以通过文件下载功能将文件提供给用户。

提高程序的灵活性和可扩展性:
通过文件操作,程序可以动态地读取和写入数据,而不需要在程序代码中硬编码数据。这使得程序更加灵活,便于扩展和维护。

小结

文件操作是程序设计中的一个基本且重要的功能,它允许程序与外部存储设备进行交互,实现数据的持久化存储和访问。文件操作不仅支持数据的长期存储和共享,还用于配置管理、日志记录、资源管理和用户交互等。通过合理使用文件操作,可以显著提高程序的灵活性、可扩展性和健壮性。

二、C#文件操作

在C#程序设计中,使用.NET 8进行文件操作时,可以利用System.IO命名空间提供的类和方法。这些工具不仅支持传统的同步操作,还支持异步操作,有助于提高程序的响应性和性能。以下是基于.NET 8的文件操作示例:

1. 引入命名空间

using System;
using System.IO;
using System.Threading.Tasks;

2. 常见文件操作

(1)创建文件
string filePath = @"C:\example\file.txt";
File.Create(filePath).Dispose(); // 创建文件并立即释放
(2)写入文件
await File.WriteAllTextAsync(filePath, "Hello, World!"); // 异步写入文本
(3)读取文件
string content = await File.ReadAllTextAsync(filePath); // 异步读取文本
Console.WriteLine(content);
(4)追加内容到文件
await File.AppendAllTextAsync(filePath, " Additional text."); // 异步追加文本
(5)复制文件
string sourceFilePath = @"C:\example\file.txt";
string destinationFilePath = @"C:\example\file_copy.txt";
File.Copy(sourceFilePath, destinationFilePath, true); // true表示覆盖目标文件
(6)移动文件
string sourceFilePath = @"C:\example\file.txt";
string destinationFilePath = @"C:\example\file_moved.txt";
File.Move(sourceFilePath, destinationFilePath);
(7)删除文件
File.Delete(destinationFilePath);
(8)检查文件是否存在
if (File.Exists(filePath))
{
    Console.WriteLine("File exists.");
}

3. 使用FileStream处理大文件

对于大文件,FileStream提供了更灵活的控制,允许逐步读取或写入文件。

(1)异步写入大文件
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true))
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("Streamed content.");
    await fs.WriteAsync(data, 0, data.Length);
}
(2)异步读取大文件
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true))
{
    byte[] buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = await fs.ReadAsync(buffer, 0, buffer.Length)) > 0)
    {
        // 处理缓冲区数据
        Console.WriteLine($"Bytes read: {bytesRead}");
    }
}

4. 异常处理

在文件操作中,应妥善处理可能发生的异常,如权限不足或文件锁定。

try
{
    using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        // 文件操作
    }
}
catch (UnauthorizedAccessException ex)
{
    Console.WriteLine("Access denied: " + ex.Message);
}
catch (IOException ex)
{
    Console.WriteLine("File is locked or in use: " + ex.Message);
}

5. 跨平台注意事项

在跨平台环境中,文件路径的处理尤为重要。Path.CombinePath.DirectorySeparatorChar可以帮助标准化路径构造。

string path = Path.Combine(Environment.CurrentDirectory, "data", "file.txt");

通过这些方法,你可以高效地完成文件操作,同时利用.NET 8的异步特性提高程序的性能和响应能力。

三、C#文件夹操作

在C#程序设计中,使用.NET 8对文件夹进行操作主要依赖于System.IO命名空间中的DirectoryDirectoryInfo类。以下是基于.NET 8的文件夹操作示例:

1. 创建文件夹

string folderPath = @"C:\ExampleFolder";
Directory.CreateDirectory(folderPath); // 创建文件夹

2. 删除文件夹

Directory.Delete(folderPath, true); // true表示递归删除文件夹内的所有内容

3. 检查文件夹是否存在

if (Directory.Exists(folderPath))
{
    Console.WriteLine("Folder exists.");
}

4. 遍历文件夹内的文件

string[] files = Directory.GetFiles(folderPath); // 获取文件夹内的所有文件
foreach (string file in files)
{
    Console.WriteLine(file);
}

5. 获取文件夹内的子文件夹

string[] subFolders = Directory.GetDirectories(folderPath); // 获取文件夹内的所有子文件夹
foreach (string subFolder in subFolders)
{
    Console.WriteLine(subFolder);
}

6. 移动文件夹

string sourceFolderPath = @"C:\ExampleFolder";
string destinationFolderPath = @"C:\NewFolder";
Directory.Move(sourceFolderPath, destinationFolderPath); // 移动文件夹

6. 复制文件夹

.NET 8没有直接提供复制文件夹的方法,但可以通过递归实现:

public static void CopyFolder(string sourceDir, string destinationDir)
{
    Directory.CreateDirectory(destinationDir); // 创建目标文件夹
    foreach (string file in Directory.GetFiles(sourceDir, "*.*", SearchOption.AllDirectories))
    {
        string destFile = file.Replace(sourceDir, destinationDir);
        Directory.CreateDirectory(Path.GetDirectoryName(destFile)); // 创建目标文件夹
        File.Copy(file, destFile); // 复制文件
    }
}

7. 使用DirectoryInfo

DirectoryInfo类提供了更丰富的文件夹操作功能:

DirectoryInfo dir = new DirectoryInfo(folderPath);
if (!dir.Exists)
{
    dir.Create(); // 创建文件夹
}
else
{
    Console.WriteLine("The directory already exists.");
}

8. 异常处理

在进行文件夹操作时,应妥善处理可能发生的异常,如权限不足或文件夹不存在:

try
{
    Directory.CreateDirectory(folderPath);
}
catch (UnauthorizedAccessException ex)
{
    Console.WriteLine("Access denied: " + ex.Message);
}
catch (IOException ex)
{
    Console.WriteLine("An I/O error occurred: " + ex.Message);
}

通过这些方法,你可以高效地完成文件夹操作,同时利用.NET 8的特性提高程序的性能和响应能力。

四、C#中的I/O数据流

在C#中,I/O(输入/输出)数据流是处理数据读写操作的核心机制。数据流(Stream)是表示字节序列的抽象基类,提供了对数据进行顺序读写的基本方法。C#中的I/O数据流主要通过System.IO命名空间中的类来实现,这些类提供了丰富的功能,用于处理各种类型的I/O操作。

1. 数据流的分类

数据流主要分为两大类:输入流(InputStream)和输出流(OutputStream)。输入流用于从数据源读取数据,输出流用于向数据目标写入数据。

2. 常见的数据流类

(1)Stream

Stream是所有数据流的基类,提供了基本的读写方法。它是一个抽象类,不能直接实例化,但可以通过派生类来实现具体的功能。

(2)FileStream

FileStream用于处理文件的读写操作。它可以直接操作文件系统中的文件。

using (FileStream fs = new FileStream("example.txt", FileMode.Create, FileAccess.Write))
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, World!");
    fs.Write(data, 0, data.Length);
}
(3)MemoryStream

MemoryStream用于在内存中读写数据。它通常用于临时存储数据,或者在内存中进行数据处理。

using (MemoryStream ms = new MemoryStream())
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, World!");
    ms.Write(data, 0, data.Length);
    ms.Seek(0, SeekOrigin.Begin); // 将流的位置移动到开始处
    byte[] readData = ms.ToArray();
    Console.WriteLine(System.Text.Encoding.UTF8.GetString(readData));
}
(4)BufferedStream

BufferedStream用于对其他流进行缓冲处理,提高读写效率。它通常用于包装其他流,以减少对底层数据源的访问次数。

using (FileStream fs = new FileStream("example.txt", FileMode.Create, FileAccess.Write))
using (BufferedStream bs = new BufferedStream(fs))
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, World!");
    bs.Write(data, 0, data.Length);
}
(5)StreamReaderStreamWriter

StreamReaderStreamWriter是基于Stream的高级类,用于读写文本数据。它们提供了更方便的方法来处理文本文件。

using (StreamWriter sw = new StreamWriter("example.txt"))
{
    sw.WriteLine("Hello, World!");
}

using (StreamReader sr = new StreamReader("example.txt"))
{
    string line = sr.ReadLine();
    Console.WriteLine(line);
}
(6)BinaryReaderBinaryWriter

BinaryReaderBinaryWriter用于读写二进制数据。它们提供了更方便的方法来处理二进制文件。

using (FileStream fs = new FileStream("example.bin", FileMode.Create, FileAccess.Write))
using (BinaryWriter bw = new BinaryWriter(fs))
{
    bw.Write(123);
    bw.Write("Hello, World!");
}

using (FileStream fs = new FileStream("example.bin", FileMode.Open, FileAccess.Read))
using (BinaryReader br = new BinaryReader(fs))
{
    int number = br.ReadInt32();
    string text = br.ReadString();
    Console.WriteLine(number);
    Console.WriteLine(text);
}

3. 数据流的使用方法

(1)读取数据

使用Read方法从流中读取数据。Read方法返回读取的字节数。

using (FileStream fs = new FileStream("example.txt", FileMode.Open, FileAccess.Read))
{
    byte[] buffer = new byte[1024];
    int bytesRead;
    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
    {
        string content = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
        Console.WriteLine(content);
    }
}
(2)写入数据

使用Write方法向流中写入数据。

using (FileStream fs = new FileStream("example.txt", FileMode.Create, FileAccess.Write))
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, World!");
    fs.Write(data, 0, data.Length);
}
(3)定位和移动

使用Seek方法在流中移动位置。

using (FileStream fs = new FileStream("example.txt", FileMode.Open, FileAccess.Read))
{
    fs.Seek(5, SeekOrigin.Begin); // 将位置移动到第5个字节
    byte[] buffer = new byte[1024];
    int bytesRead = fs.Read(buffer, 0, buffer.Length);
    string content = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
    Console.WriteLine(content);
}

4. 异步I/O操作

.NET 8支持异步I/O操作,可以提高程序的响应性和性能。

(1)异步读取数据

使用ReadAsync方法异步读取数据。

using (FileStream fs = new FileStream("example.txt", FileMode.Open, FileAccess.Read))
{
    byte[] buffer = new byte[1024];
    int bytesRead = await fs.ReadAsync(buffer, 0, buffer.Length);
    string content = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
    Console.WriteLine(content);
}
(2)异步写入数据

使用WriteAsync方法异步写入数据。

using (FileStream fs = new FileStream("example.txt", FileMode.Create, FileAccess.Write))
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, World!");
    await fs.WriteAsync(data, 0, data.Length);
}

5. 异常处理

在进行I/O操作时,应妥善处理可能发生的异常,如文件不存在、权限不足等。

try
{
    using (FileStream fs = new FileStream("example.txt", FileMode.Open, FileAccess.Read))
    {
        byte[] buffer = new byte[1024];
        int bytesRead = fs.Read(buffer, 0, buffer.Length);
        string content = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
        Console.WriteLine(content);
    }
}
catch (FileNotFoundException ex)
{
    Console.WriteLine("File not found: " + ex.Message);
}
catch (UnauthorizedAccessException ex)
{
    Console.WriteLine("Access denied: " + ex.Message);
}
catch (IOException ex)
{
    Console.WriteLine("An I/O error occurred: " + ex.Message);
}

6. 资源管理

使用using语句确保资源在使用后被正确释放。

using (FileStream fs = new FileStream("example.txt", FileMode.Create, FileAccess.Write))
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, World!");
    fs.Write(data, 0, data.Length);
}

小结

在C#中,I/O数据流是处理数据读写操作的核心机制。通过System.IO命名空间中的类,可以实现文件和内存的读写操作。常见的数据流类包括FileStreamMemoryStreamBufferedStreamStreamReaderStreamWriterBinaryReaderBinaryWriter。这些类提供了丰富的功能,用于处理各种类型的I/O操作。通过合理使用这些类,可以提高程序的性能和响应能力。同时,应妥善处理可能发生的异常,并使用using语句确保资源的正确释放。

五、文件操作和使用数据库

文件操作和使用数据库是软件开发中两种常见的数据存储和管理方式。它们在功能和用途上有一定的重叠,但在实际应用中各有优势和适用场景。以下是文件操作与使用数据库的关系和区别:

1. 数据存储

文件操作:

  • 存储方式:将数据以文件的形式存储在文件系统中,可以是文本文件、二进制文件、XML文件等。
  • 适用场景:适用于存储简单的数据结构,如日志文件、配置文件、小型文本数据等。
  • 优点:简单易用,不需要额外的数据库管理系统(DBMS),适合轻量级应用。
  • 缺点:数据管理和查询功能有限,扩展性差,不适合处理大量复杂的数据。

数据库:

  • 存储方式:将数据存储在数据库管理系统中,如MySQL、PostgreSQL、SQL Server、MongoDB等。
  • 适用场景:适用于存储复杂的数据结构,支持关系型(SQL)和非关系型(NoSQL)数据库。
  • 优点:强大的数据管理和查询功能,支持事务处理、数据完整性约束、并发控制等,适合处理大量复杂的数据。
  • 缺点:需要安装和配置数据库管理系统,学习和使用成本较高。

2. 数据访问

文件操作:

  • 访问方式:通过文件路径直接访问文件,使用System.IO命名空间中的类(如FileStreamStreamReaderStreamWriter等)进行读写操作。
  • 适用场景:适用于简单的数据读写操作,如读取配置文件、写入日志文件等。
  • 优点:直接操作文件系统,无需额外的中间层,适合轻量级应用。
  • 缺点:数据访问效率低,不适合高并发场景,数据一致性难以保证。

数据库:

  • 访问方式:通过SQL语句或数据库API进行数据访问,支持复杂的查询和事务处理。
  • 适用场景:适用于复杂的数据查询和事务处理,如企业级应用、Web应用等。
  • 优点:支持高效的查询和索引,事务处理保证数据一致性,支持并发访问。
  • 缺点:需要编写SQL语句或使用ORM框架,学习和使用成本较高。

3. 数据管理

文件操作:

  • 管理方式:通过文件系统进行管理,支持文件的创建、删除、移动、复制等操作。
  • 适用场景:适用于简单的文件管理,如日志文件的滚动、备份等。
  • 优点:简单易用,直接操作文件系统。
  • 缺点:缺乏数据完整性约束和事务处理,数据一致性难以保证。

数据库:

  • 管理方式:通过数据库管理系统进行管理,支持数据的增删改查、事务处理、数据完整性约束、备份和恢复等。
  • 适用场景:适用于复杂的数据管理,如企业级应用、Web应用等。
  • 优点:强大的数据管理功能,支持事务处理和数据完整性约束,适合处理大量复杂的数据。
  • 缺点:需要安装和配置数据库管理系统,学习和使用成本较高。

4. 性能和扩展性

文件操作:

  • 性能:对于小文件和简单操作,文件操作的性能通常较好。
  • 扩展性:扩展性较差,不适合处理大量复杂的数据,不适合高并发场景。

数据库:

  • 性能:对于复杂的数据操作和高并发场景,数据库的性能通常较好,支持索引、缓存等优化技术。
  • 扩展性:扩展性较好,支持分布式数据库、分片、复制等技术,适合处理大量复杂的数据。

5. 实际应用中的结合

在实际应用中,文件操作和数据库常常结合使用,以发挥各自的优势:

  • 日志文件:使用文件操作记录日志信息,同时将关键日志信息存储到数据库中,便于后续查询和分析。
  • 文件存储:将文件存储在文件系统中,同时将文件的元数据(如文件名、路径、大小、创建时间等)存储到数据库中,便于管理和查询。
  • 配置文件:使用文件操作读取配置文件,同时将配置信息存储到数据库中,便于动态更新和管理。

小结

文件操作和数据库在数据存储、访问、管理和性能方面各有优势和适用场景。文件操作适用于简单的数据存储和管理,而数据库适用于复杂的数据管理和高并发场景。在实际应用中,可以根据具体需求选择合适的存储方式,或者将文件操作和数据库结合使用,以发挥各自的优势。

总结

本文全面介绍了C#程序设计中的文件操作与数据库使用。首先,阐述了文件操作的基本概念及其在程序设计中的重要性,包括数据持久化、共享、配置管理等。接着,详细展示了基于.NET 8的C#文件操作方法,涵盖文件和文件夹的创建、读写、复制、移动、删除等操作,并强调了异步I/O操作和异常处理的重要性。此外,深入探讨了C#中的I/O数据流,包括常见数据流类的使用和异步操作的优势。最后,分析了文件操作与数据库的关系,指出二者在数据存储、访问、管理和性能方面的差异,并提出了在实际应用中结合使用的方法。通过合理选择和结合文件操作与数据库,可以有效提升程序的灵活性、可扩展性和健壮性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2403508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么让大语言模型(LLMs)自动生成和优化提示词:APE

怎么让大语言模型(LLMs)自动生成和优化提示词:APE https://arxiv.org/pdf/2211.01910 1. 研究目标:让机器自己学会设计提示词 问题:大语言模型(如GPT-3)很强大,但需要精心设计的“提示词”才能发挥最佳效果。过去靠人工设计提示词,费时费力,还可能因表述差异导致模…

实现单例模式的常见方式

前言 java有多种设计模式,如下图所示: 单例模式它确保一个类只有一个实例,并提供一个全局访问点。 1、单例模式介绍 1.1、使用原因 为什么要使用单例模式? 1. 控制资源访问 核心价值:确保对共享资源(如…

day20 leetcode-hot100-38(二叉树3)

226. 翻转二叉树 - 力扣(LeetCode) 1.广度遍历 思路 这题目很简单,就是交换每个节点的左右子树,也就是相当于遍历到某个节点,然后交换子节点即可。 具体步骤 (1)创建队列,使用广…

OpenVINO环境配置--OpenVINO安装

TOC环境配置–OpenVINO安装 本节内容 OpenVINO 支持的安装方式有很多种,每一种操作系统以及语言都有对应的安装方法,在官网上有很详细的教程:   我们可以根据自己的需要,来点选环境配置和安装方法,然后网页会给出正…

黑龙江云前沿服务器租用:便捷高效的灵活之选​

服务器租用,即企业直接从互联网数据中心(IDC)提供商处租赁服务器。企业只需按照所选的服务器配置和租赁期限,定期支付租金,即可使用服务器开展业务。​ 便捷快速部署:租用服务器能极大地缩短服务器搭建周期…

论文解读:Locating and Editing Factual Associations in GPT(ROME)

论文发表于人工智能顶会NeurIPS(原文链接),研究了GPT(Generative Pre-trained Transformer)中事实关联的存储和回忆,发现这些关联与局部化、可直接编辑的计算相对应。因此: 1、开发了一种因果干预方法,用于识别对模型的事实预测起…

学习设计模式《十二》——命令模式

一、基础概念 命令模式的本质是【封装请求】命令模式的关键是把请求封装成为命令对象,然后就可以对这个命令对象进行一系列的处理(如:参数化配置、可撤销操作、宏命令、队列请求、日志请求等)。 命令模式的定义:将一个…

十三、【核心功能篇】测试计划管理:组织和编排测试用例

【核心功能篇】测试计划管理:组织和编排测试用例 前言准备工作第一部分:后端实现 (Django)1. 定义 TestPlan 模型2. 生成并应用数据库迁移3. 创建 TestPlanSerializer4. 创建 TestPlanViewSet5. 注册路由6. 注册到 Django Admin 第二部分:前端…

手撕 K-Means

1. K-means 的原理 K-means 是一种经典的无监督学习算法,用于将数据集划分为 kk 个簇(cluster)。其核心思想是通过迭代优化,将数据点分配到最近的簇中心,并更新簇中心,直到簇中心不再变化或达到最大迭代次…

SmolVLA: 让机器人更懂 “看听说做” 的轻量化解决方案

🧭 TL;DR 今天,我们希望向大家介绍一个新的模型: SmolVLA,这是一个轻量级 (450M 参数) 的开源视觉 - 语言 - 动作 (VLA) 模型,专为机器人领域设计,并且可以在消费级硬件上运行。 SmolVLAhttps://hf.co/lerobot/smolvla…

day45python打卡

知识点回顾: tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战:MLP和CNN模型 效果展示如下,很适合拿去组会汇报撑页数: 作业:对resnet18在cifar10上采用微调策略下,用tensorbo…

AIGC赋能前端开发

一、引言:AIGC对前端开发的影响 1. AIGC与前端开发的关系 从“写代码”到“生成代码”传统开发痛点:重复性编码工作、UI 设计稿还原、问题定位与调试...核心场景的AI化:需求转代码(P2C)、设计稿转代码(D2…

Web 3D协作平台开发案例:构建制造业远程设计与可视化协作

HOOPS Communicator为开发者提供了丰富的定制化能力,助力他们在实现强大 Web 3D 可视化功能的同时,灵活构建符合特定业务需求的工程应用。对于希望构建在线协同设计工具的企业而言,如何在保障性能与用户体验的前提下实现高效开发,…

AI Agent开发第78课-大模型结合Flink构建政务类长公文、长文件、OA应用Agent

开篇 AI Agent2025确定是进入了爆发期,到处都在冒出各种各样的实用AI Agent。很多人、组织都投身于开发AI Agent。 但是从3月份开始业界开始出现了一种这样的声音: AI开发入门并不难,一旦开发完后没法用! 经历过至少一个AI Agent从开发到上线的小伙伴们其实都听到过这种…

第三方测试机构进行科技成果鉴定测试有什么价值

在当今科技创新的浪潮中,科技成果的鉴定测试至关重要,而第三方测试机构凭借其独特优势,在这一领域发挥着不可替代的作用。那么,第三方测试机构进行科技成果鉴定测试究竟有什么价值呢? 一、第三方测试机构能提供独立、公…

华为云Flexus+DeepSeek征文|基于华为云Flexus X和DeepSeek-R1打造个人知识库问答系统

目录 前言 1 快速部署:一键搭建Dify平台 1.1 部署流程详解 1.2 初始配置与登录 2 构建专属知识库 2.1 进入知识库模块并创建新库 2.2 选择数据源导入内容 2.3 上传并识别多种文档格式 2.4 文本处理与索引构建 2.5 保存并完成知识库创建 3接入ModelArts S…

【数据结构】_排序

【本节目标】 排序的概念及其运用常见排序算法的实现排序算法复杂度及稳定性分析 1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 1.2特性…

PPT转图片拼贴工具 v4.3

软件介绍 这个软件就是将PPT文件转换为图片并且拼接起来。 效果展示 支持导入文件和支持导入文件夹,也支持手动输入文件/文件夹路径 软件界面 这一次提供了源码和开箱即用版本,exe就是直接用就可以了。 软件源码 import os import re import sys …

Chrome安装代理插件ZeroOmega(保姆级别)

目录 本文直接讲解一下怎么本地安装ZeroOmega一、下载文件在GitHub直接下ZeroOmega 的文件(下最新版即可) 二、安装插件打开 Chrome 浏览器,访问 chrome://extensions/ 页面(扩展程序管理页面),并打开开发者…

Transformer-BiGRU多变量时序预测(Matlab完整源码和数据)

Transformer-BiGRU多变量时序预测(Matlab完整源码和数据) 目录 Transformer-BiGRU多变量时序预测(Matlab完整源码和数据)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现Transformer-BiGRU多变量时间序列预测&…