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

【C#生态园】C#文件压缩库全面比较:选择最适合你的库

从核心功能到API概览:深度解析六大C#文件压缩库

前言

在软件开发过程中,文件的压缩和解压缩是一个常见的需求。针对C#开发者而言,选择合适的文件压缩库可以极大地简化开发工作。本文将介绍几个常用的C#文件压缩库,包括其核心功能、使用场景、安装与配置以及API概览,旨在帮助开发者根据实际需求选择最适合的库进行开发。

欢迎订阅专栏:C#生态园

文章目录

  • 从核心功能到API概览:深度解析六大C#文件压缩库
    • 前言
    • 1. SharpZipLib:一个用于C#的文件压缩库
      • 1.1 简介
        • 1.1.1 核心功能
        • 1.1.2 使用场景
      • 1.2 安装与配置
        • 1.2.1 安装指导
        • 1.2.2 基本配置
      • 1.3 API 概览
        • 1.3.1 文件压缩
        • 1.3.2 文件解压缩
    • 2. DotNetZip:一个用于C#的文件压缩库
      • 2.1 简介
        • 2.1.1 核心功能
        • 2.1.2 使用场景
      • 2.2 安装与配置
        • 2.2.1 安装指导
        • 2.2.2 基本配置
      • 2.3 API 概览
        • 2.3.1 文件压缩
        • 2.3.2 文件解压缩
    • 3. Ionic.Zip:提供在C#中创建、读取和修改ZIP文件的功能
      • 3.1 简介
        • 3.1.1 核心功能
        • 3.1.2 使用场景
      • 3.2 安装与配置
        • 3.2.1 安装指导
        • 3.2.2 基本配置
      • 3.3 API 概览
        • 3.3.1 ZIP文件创建
        • 3.3.2 ZIP文件读取
    • 4. SharpCompress:支持多种压缩格式的C#库
      • 4.1 简介
        • 4.1.1 核心功能
        • 4.1.2 使用场景
      • 4.2 安装与配置
        • 4.2.1 安装指导
        • 4.2.2 基本配置
      • 4.3 API 概览
        • 4.3.1 压缩格式支持
        • 4.3.2 数据解压
    • 5. SevenZipSharp:对7-Zip进行封装提供C#接口
      • 5.1 简介
        • 5.1.1 核心功能
        • 5.1.2 使用场景
      • 5.2 安装与配置
        • 5.2.1 安装指导
        • 5.2.2 基本配置
      • 5.3 API 概览
        • 5.3.1 7-Zip操作
          • 文件压缩示例
          • 文件解压示例
        • 5.3.2 压缩级别设置
    • 6. SharpArchiver:用于C#的通用归档处理库
      • 6.1 简介
        • 6.1.1 核心功能
        • 6.1.2 使用场景
      • 6.2 安装与配置
        • 6.2.1 安装指导
        • 6.2.2 基本配置
      • 6.3 API 概览
        • 6.3.1 归档创建
        • 6.3.2 归档解压
    • 总结

1. SharpZipLib:一个用于C#的文件压缩库

SharpZipLib是一个流行的开源压缩库,它提供了在C#中进行文件压缩和解压缩的功能。在本文中,我们将介绍SharpZipLib的简介、安装与配置以及API概览。

1.1 简介

1.1.1 核心功能

SharpZipLib主要包括对文件的压缩和解压缩功能,能够处理多种压缩格式,如ZIP、GZip等,并提供了对压缩文件进行操作的功能。

1.1.2 使用场景
  • 在C#应用程序中进行文件的压缩和解压缩操作。
  • 处理需要发送或存储的大量文件,并希望通过压缩来节省空间和传输时间。

1.2 安装与配置

1.2.1 安装指导

你可以通过NuGet包管理器来安装SharpZipLib。在Visual Studio中打开NuGet包管理器控制台,运行以下命令来安装SharpZipLib:

Install-Package SharpZipLib
1.2.2 基本配置

安装完成后,你可以在项目中引用ICSharpCode.SharpZipLib命名空间来开始使用SharpZipLib库。

1.3 API 概览

1.3.1 文件压缩

使用SharpZipLib进行文件压缩非常简单。以下是一个简单的示例,演示了如何使用SharpZipLib来压缩文件夹:

using ICSharpCode.SharpZipLib.Zip;
using System.IO;public class ZipHelper
{public void CreateZipFile(string sourceDirectory, string zipFilePath){using (ZipOutputStream zipStream = new ZipOutputStream(File.Create(zipFilePath))){AddFolderToZip(sourceDirectory, zipStream, "");}}private void AddFolderToZip(string absolutePath, ZipOutputStream zipStream, string relativePath){string[] files = Directory.GetFiles(absolutePath);foreach (string file in files){FileInfo fileInfo = new FileInfo(file);using (FileStream fileStream = File.OpenRead(file)){byte[] buffer = new byte[fileStream.Length];fileStream.Read(buffer, 0, buffer.Length);ZipEntry entry = new ZipEntry(Path.Combine(relativePath, fileInfo.Name));zipStream.PutNextEntry(entry);zipStream.Write(buffer, 0, buffer.Length);}}string[] folders = Directory.GetDirectories(absolutePath);foreach (string folder in folders){AddFolderToZip(folder, zipStream, Path.Combine(relativePath, new DirectoryInfo(folder).Name));}}
}

以上代码创建了一个名为ZipHelper的类,其中的CreateZipFile方法接受一个源文件夹路径和一个目标ZIP文件路径,并将文件夹内容压缩成ZIP文件。

参考链接:SharpZipLib GitHub

1.3.2 文件解压缩

下面是一个简单的示例演示了如何使用SharpZipLib对文件进行解压缩:

using ICSharpCode.SharpZipLib.Zip;public class UnzipHelper
{public void DecompressFile(string compressedFile, string destinationFolder){using (var fileStreamIn = new FileStream(compressedFile, FileMode.Open, FileAccess.Read))using (var zipStream = new ZipInputStream(fileStreamIn)){ZipEntry entry;while ((entry = zipStream.GetNextEntry()) != null){if (!entry.IsFile) continue;string fullZipToPath = Path.Combine(destinationFolder, entry.Name);string directoryName = Path.GetDirectoryName(fullZipToPath);if (directoryName.Length > 0)Directory.CreateDirectory(directoryName);using (FileStream streamWriter = File.Create(fullZipToPath)){int size;byte[] data = new byte[2048];while (true){size = zipStream.Read(data, 0, data.Length);if (size > 0)streamWriter.Write(data, 0, size);elsebreak;}}}}}
}

官网链接:SharpZipLib - GitHub

以上是一些关于SharpZipLib库的基本介绍和使用方法,在实际项目中,你可以根据需求灵活运用其丰富的功能来进行文件压缩和解压缩操作。

2. DotNetZip:一个用于C#的文件压缩库

DotNetZip是一个开源的C#文件压缩库,可以帮助开发人员在他们的应用程序中创建和管理压缩文件。本文将介绍DotNetZip库的简介、安装与配置以及API概览。

2.1 简介

2.1.1 核心功能

DotNetZip提供了丰富的文件压缩和解压缩功能,包括创建ZIP文件、向ZIP文件添加文件、从ZIP文件提取文件等。此外,它还支持密码保护、自定义压缩级别和多种压缩格式。

2.1.2 使用场景

DotNetZip可用于开发人员需要在其C#应用程序中对文件进行压缩和解压缩的场景,如备份数据、打包文件、减小文件传输大小等。

2.2 安装与配置

2.2.1 安装指导

您可以通过NuGet包管理器来安装DotNetZip库。在Visual Studio中打开包管理器控制台,并运行以下命令:

Install-Package DotNetZip

这将会自动下载并安装最新版本的DotNetZip库。

2.2.2 基本配置

安装完成后,您只需在项目中引入using Ionic.Zip;即可开始使用DotNetZip库的功能。

2.3 API 概览

2.3.1 文件压缩

使用DotNetZip库可以非常方便地进行文件压缩。以下是一个简单的示例,演示了如何创建一个ZIP文件并向其中添加文件:

using (ZipFile zip = new ZipFile())
{zip.AddFile("file1.txt");zip.AddFile("file2.txt");zip.Save("result.zip");
}

更多关于文件压缩的API和用法,请参考DotNetZip官方文档。

2.3.2 文件解压缩

DotNetZip同样也提供了便捷的文件解压缩功能。以下是一个简单的示例,展示了如何从ZIP文件中提取文件:

using (ZipFile zip = ZipFile.Read("example.zip"))
{foreach (var entry in zip){entry.Extract("extractDir");}
}

更多关于文件解压缩的API和用法,请参考DotNetZip官方文档。

3. Ionic.Zip:提供在C#中创建、读取和修改ZIP文件的功能

3.1 简介

Ionic.Zip 是一个强大的开源库,它提供了在C#中创建、读取和修改ZIP文件的功能。通过Ionic.Zip,可以轻松地对ZIP文件进行操作,包括压缩、解压缩以及文件添加、删除等操作。

3.1.1 核心功能

Ionic.Zip 主要包含以下核心功能:

  • 创建ZIP文件
  • 读取ZIP文件
  • 修改ZIP文件
  • 密码保护ZIP文件
  • 大容量ZIP文件支持

Ionic.Zip 官方网站:Ionic.Zip

3.1.2 使用场景

Ionic.Zip 可以应用于各种场景,包括但不限于:

  • 文件备份与恢复
  • 文件压缩与解压缩
  • 数据传输与存储

3.2 安装与配置

3.2.1 安装指导

在 Visual Studio 中,可以通过 NuGet 包管理器来安装 Ionic.Zip 库。打开 NuGet 包管理器控制台,并输入以下命令来安装 Ionic.Zip:

Install-Package DotNetZip
3.2.2 基本配置

安装完成后,在需要使用 Ionic.Zip 的项目中引入命名空间即可开始使用:

using Ionic.Zip;

3.3 API 概览

3.3.1 ZIP文件创建

使用 Ionic.Zip 可以轻松创建ZIP文件,以下是一个简单的示例代码:

using (ZipFile zip = new ZipFile())
{zip.AddFile("file1.txt", "");zip.AddFile("file2.txt", "");zip.Save("result.zip");
}

在这个例子中,我们首先创建了一个新的 ZipFile 对象,然后向其中添加了两个文件,并最终保存为 result.zip。

3.3.2 ZIP文件读取

除了创建ZIP文件,Ionic.Zip 也提供了读取ZIP文件的功能,以下是一个读取ZIP文件的示例代码:

using (ZipFile zip = ZipFile.Read("example.zip"))
{foreach (ZipEntry entry in zip){Console.WriteLine(entry.FileName);entry.Extract("extracted");}
}

在这个例子中,我们使用 ZipFile.Read 方法读取了 example.zip 文件,并通过循环遍历了其中的所有文件,并将其解压到了 extracted 文件夹中。

以上就是 Ionic.Zip 在 C# 中创建、读取和修改ZIP文件的基本用法。详细的 API 可以参考官方文档:Ionic.Zip Documentation

4. SharpCompress:支持多种压缩格式的C#库

SharpCompress 是一个强大的C#库,可以处理多种不同的压缩格式文件。在本篇文章中,我们将介绍其核心功能、使用场景、安装与配置以及API概览。

4.1 简介

4.1.1 核心功能

SharpCompress 提供了对多种压缩格式的支持,包括 ZIP, RAR, 7Zip, TAR, GZip 等。它允许用户方便地对这些格式的文件进行压缩和解压操作,同时提供了丰富的 API 接口,可以满足各种复杂的需求。

4.1.2 使用场景

SharpCompress 可以被广泛应用于需要处理压缩文件的场景,比如文件上传、数据备份、日志归档等。无论是简单的文件压缩还是复杂的数据解压,SharpCompress 都能够提供稳定可靠的支持。

4.2 安装与配置

4.2.1 安装指导

你可以通过NuGet包管理器来安装SharpCompress。在Visual Studio中打开NuGet包管理器控制台,运行以下命令来安装SharpCompress:

Install-Package SharpCompress
4.2.2 基本配置

安装完成后,你可以在代码中引入SharpCompress库,并开始使用它的功能。

4.3 API 概览

4.3.1 压缩格式支持

SharpCompress 支持多种压缩格式,例如ZIP、RAR、7Zip等。下面是一个简单的示例,展示了如何使用SharpCompress来解压ZIP文件:

using (var archive = ArchiveFactory.Open("sample.zip"))
{foreach (var entry in archive.Entries){if (!entry.IsDirectory){entry.WriteToDirectory("output", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });}}
}

你可以根据自己的需求,进一步调整ExtractionOptions来满足更加复杂的解压需求。更多关于压缩和解压的操作,请参考 SharpCompress文档。

4.3.2 数据解压

除了压缩格式的支持外,SharpCompress还提供了丰富的API接口,用于处理数据解压的场景。例如,你可以使用SharpCompress来解压GZip格式的数据:

using (Stream stream = File.OpenRead("sample.gz"))
using (var reader = ReaderFactory.Open(stream))
{while (reader.MoveToNextEntry()){if (!reader.Entry.IsDirectory){reader.WriteEntryToDirectory("output", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });}}
}

以上代码演示了如何通过SharpCompress解压GZip格式的数据,并将解压后的内容保存到指定的目录中。

总之,SharpCompress是一个功能强大、易于使用的C#库,为处理多种压缩格式文件提供了良好的支持。无论是对压缩文件的操作,还是对数据解压的需求,它都能够满足你的要求。

希望本文能够对你有所帮助,更多详细信息请查看SharpCompress官方文档。

5. SevenZipSharp:对7-Zip进行封装提供C#接口

SevenZipSharp是一个对7-Zip进行封装,提供C#接口的开源项目,可以方便地在C#应用程序中使用7-Zip进行压缩和解压操作。

5.1 简介

5.1.1 核心功能

SevenZipSharp主要提供了以下核心功能:

  • 压缩文件
  • 解压文件
  • 加密压缩文件
  • 获取压缩文件信息
5.1.2 使用场景

SevenZipSharp适用于需要在C#应用程序中进行文件压缩和解压操作的场景,例如对文件进行打包、加密以及解压缩等操作。

5.2 安装与配置

5.2.1 安装指导

可以通过NuGet包管理器来安装SevenZipSharp。在Visual Studio中打开NuGet包管理器控制台,并执行以下命令来安装SevenZipSharp:

Install-Package SevenZipSharp
5.2.2 基本配置

安装完成后,在C#项目中引入SevenZipSharp的命名空间:

using SevenZip;

5.3 API 概览

5.3.1 7-Zip操作

SevenZipSharp提供了丰富的API来进行7-Zip操作,下面是一个简单的例子,演示了如何使用SevenZipSharp进行文件压缩和解压操作。

文件压缩示例
// 创建一个压缩文件实例
SevenZipCompressor compressor = new SevenZipCompressor();// 设置压缩级别
compressor.CompressionLevel = CompressionLevel.Ultra;// 设置压缩文件密码
compressor.EncryptHeaders = true;
compressor.ArchiveFormat = OutArchiveFormat.Zip;
compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");

官网链接:SevenZipSharp

文件解压示例
// 创建一个解压文件实例
SevenZipExtractor extractor = new SevenZipExtractor("archive.7z");// 设置解压文件密码
extractor.Password = "your_password";
extractor.ExtractArchive("destination_path");

官网链接:SevenZipSharp

5.3.2 压缩级别设置

SevenZipSharp允许用户设置压缩级别,以便根据特定需求进行文件压缩。下面是一个设置压缩级别的示例:

// 创建一个压缩文件实例
SevenZipCompressor compressor = new SevenZipCompressor();// 设置压缩级别为最大
compressor.CompressionLevel = CompressionLevel.Ultra;

官网链接:SevenZipSharp

6. SharpArchiver:用于C#的通用归档处理库

6.1 简介

SharpArchiver 是一个开源的 C# 库,用于处理各种归档文件格式,如 ZIP、RAR、TAR 等。它提供了丰富的 API,可以轻松地创建和解压归档文件。

6.1.1 核心功能
  • 创建压缩包
  • 解压缩压缩包
6.1.2 使用场景
  • 在 C# 项目中需要对归档文件进行处理时,可以使用 SharpArchiver 来简化操作。
  • 用于文件备份和恢复功能的实现。

6.2 安装与配置

使用 NuGet 包管理器可以方便地安装 SharpArchiver。

6.2.1 安装指导

在 Visual Studio 中打开 NuGet 包管理器控制台,执行以下命令来安装 SharpArchiver:

Install-Package SharpArchiver
6.2.2 基本配置

安装完成后,你可以在 C# 项目中直接引用 SharpArchiver 的命名空间来使用其功能:

using SharpArchiver;

6.3 API 概览

6.3.1 归档创建

通过 SharpArchiver 可以很方便地创建归档文件,以下是一个示例代码:

using (var archiver = new Archiver())
{archiver.CreateArchive("target.zip", "file1.txt", "file2.jpg", "folder");
}

以上代码创建了一个名为 target.zip 的 ZIP 归档文件,其中包含了 file1.txtfile2.jpgfolder 这三项内容。

6.3.2 归档解压

解压归档文件同样简单,下面是一个简单的示例代码:

using (var archiver = new Archiver())
{archiver.ExtractArchive("source.zip", "destinationFolder");
}

以上代码将会解压名为 source.zip 的归档文件到 destinationFolder 目录。

更多详细信息和案例可以参考 SharpArchiver GitHub 页面。

总结

文件压缩在软件开发中扮演着重要角色,而选择合适的文件压缩库能够帮助开发者高效完成相关任务。通过本文的介绍,读者可以对SharpZipLib、DotNetZip、Ionic.Zip、SharpCompress、SevenZipSharp和SharpArchiver这六个C#文件压缩库有一个清晰的认识,从而更好地根据实际项目需求进行选择和应用。

相关文章:

【C#生态园】C#文件压缩库全面比较:选择最适合你的库

从核心功能到API概览:深度解析六大C#文件压缩库 前言 在软件开发过程中,文件的压缩和解压缩是一个常见的需求。针对C#开发者而言,选择合适的文件压缩库可以极大地简化开发工作。本文将介绍几个常用的C#文件压缩库,包括其核心功能…...

【测试】接口测试与接口自动化

壹、接口测试基础 一、接口测试概念 I、基础概念 是测试系统组件间接口的一种测试。 主要用于检测外部系统与系统间、内部子系统间的交互点;测试重点检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系。 内部接口调用相当于函数调用&am…...

Android设置边框圆角

在Android开发中&#xff0c;圆角设计十分常见&#xff0c;那么实现边框圆角有几种形式呢&#xff1f; 文章目录 设置圆角边框样式使用ClipToOutline进行裁切最后 设置圆角边框样式 常见的方式是在drawable文件夹下设置一个xml文件的边框样式&#xff0c;比如 <shape andro…...

SpringBoot项目打成jar包,在其他项目中引用

1、首先新建一个SpringBoot工程 记得要将Gradle换成Maven 2、新建一个要引用的方法 3、打包的时候要注意&#xff1a; ① 不能使用springboot项目自带的打包插件进行打包&#xff0c;下面是自带的&#xff1a; ②要换成传统项目的maven打包&#xff0c;如下图&#xff1a; 依…...

【音频可视化】通过canvas绘制音频波形图

前言 这两天写项目刚好遇到Ai对话相关的需求&#xff0c;需要录音功能&#xff0c;绘制录制波形图&#xff0c;写了一个函数用canvas实现可视化&#xff0c;保留分享一下&#xff0c;有需要的直接粘贴即可&#xff0c;使用时传入一个1024长的&#xff0c;0-255大小的Uint8Arra…...

解决github每次pull push输入密码问题

# 解决git pull/push每次都需要输入密码问题 git bash进入你的项目目录&#xff0c;输入&#xff1a; git config --global credential.helper store然后你会在你本地生成一个文本&#xff0c;上边记录你的账号和密码。配置项写入到 "C:\Users\用户名\ .gitconfig" …...

Java重修笔记 第六十四天 坦克大战(十四)IO 流 - 标准输入输出流、InputStreamReader 和 OutputStreamWriter

标准输入输出流 1. System.in 标准输入流 本质上是一个InputString&#xff0c;对应键盘&#xff0c;表示从键盘输入。 定义&#xff1a;public final static InputStream in null; 所以 Scanner scanner new Scanner(System.in); 会从键盘中获取数据 2. System.out 标准输…...

prctl的函数和pthread_self函数

1.prctl的函数原型如下&#xff1a; #include<sys/prctl.h> ​prctl(PR_SET_NAME, “process_name”);第一个参数是操作类型&#xff0c;指定PR_SET_NAME&#xff08;对应数字15&#xff09;&#xff0c;即设置进程名&#xff1b; 第二个参数是进程名字符串&#xff0c;…...

Vim 命令行模式下的常用命令

Vim 命令行模式下的常用命令 文件操作&#xff1a; :w &#xff1a;保存当前文件。:w filename &#xff1a;将当前内容另存为指定的 filename 。:q &#xff1a;退出 Vim&#xff0c;如果文件有修改但未保存&#xff0c;会提示错误。:q! &#xff1a;强制退出 Vim&#xff0c…...

【动态规划-最长递增子序列(LIS)】力扣2826. 将三个组排序

给你一个整数数组 nums 。nums 的每个元素是 1&#xff0c;2 或 3。在每次操作中&#xff0c;你可以删除 nums 中的一个元素。返回使 nums 成为 非递减 顺序所需操作数的 最小值。 示例 1&#xff1a; 输入&#xff1a;nums [2,1,3,2,1] 输出&#xff1a;3 解释&#xff1a; …...

Elastic Stack--16--ES三种分页策略

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 方式一&#xff1a;from size实现原理使用方式优缺点 方式二&#xff1a;scroll实现原理使用方式优缺点 方式三&#xff1a;search_after实现原理使用方式优缺点 三…...

[LeetCode] 315. 计算右侧小于当前元素的个数

题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;按要求返回一个新数组 counts 。数组 counts 有该性质&#xff1a; counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 题目链接&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 题目主要思路&a…...

【hot100-java】二叉树展开为链表

二叉树篇。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …...

如何在在 YOLOv3模型中添加Attention机制

在YOLOv3模型中添加Attention机制需要以下几个步骤&#xff1a; 1. 规定格式 当添加新的模块&#xff08;如Attention机制模块&#xff09;时&#xff0c;需要像定义[convolutional]、[maxpool]等层在cfg文件中的格式一样&#xff0c;对新模块进行格式规定。例如对于SE模块&a…...

单点登录Apereo CAS 7.1安装配置教程

笔者目前正在做一个单点登录的课题,历时较长总算摸到一些门路,其中的辛酸不易按下不表。截至本文发布,CAS的最新版本为7.1。由于涉及到课题内容,而且内容比较新,整理试验不容易,暂时只对VIP开放,后续课题完成后会完全开放,敬请谅解。 CAS项目区别 在CAS的项目选择上,…...

windows C++-移除界面工作线程(一)

本文档演示了如何使用并发运行时将 Microsoft 基础类 (MFC) 应用程序中由用户界面 (UI) 线程执行的工作移动到工作线程。 本文档还演示了如何提高冗长绘制操作的性能。 通过将阻塞性操作&#xff08;例如&#xff0c;绘制&#xff09;卸载到工作线程来从 UI 线程中移除工作&am…...

Qt小bug — LINK : fatal error LNK1158: 无法运行“rc.exe“

Qt小bug —— LINK &#xff1a;fatal error LNK1158&#xff1a;无法运行"rc.exe" 环境 Qt 5.14.2 MSVC 2015 x64 现象 解决 在电脑上找到rc.exe 和rcdll.dll &#xff08;一般在C:\Program Files(x86)\Windows Kits*\bin\x64下面&#xff09;拷贝到 C:\Qt\Qt5…...

c++小游戏

目录 狼人杀 走迷宫 炸弹人 贪吃蛇 飞翔的小鸟 跑酷 吃豆人 飞机大战 人生模拟器 坦克大战 修仙模拟器 搜集了一些小游戏&#xff0c;名字下是个人是个人喜欢度&#xff0c;可供参考~ 狼人杀 ❤❤❤❤ #include<bits/stdc.h> #include<cstdio> #incl…...

k8s为什么用Calico

‌Calico是一种开源的网络和安全解决方案&#xff0c;主要用于容器、虚拟机、宿主机之间的网络连接。‌ 它支持Kubernetes、OpenShift、Docker EE、OpenStack等PaaS或IaaS平台&#xff0c;提供高效的网络通信和安全控制功能‌12。 Calico的核心组件包括Felix、etcd、BIRD等。F…...

HashMap 和 Hashtable 有什么区别?

HashMap和Hashtable都是Java中常用的存储键值对的集合类&#xff0c;它们都实现了Map接口&#xff0c;但二者之间存在一些显著的区别。以下是对HashMap和Hashtable区别的详细归纳&#xff1a; 一、线程安全性 HashMap&#xff1a;是非线程安全的&#xff0c;即多个线程可以同…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...