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

Python学习笔记24:进阶篇(十三)常见标准库使用之数据压缩功能模块zlib,gzip,bz2,lzma的学习使用

前言

本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。

根据模块知识,一次讲解单个或者多个模块的内容。

教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html

数据压缩

很多时候我们可以利用的内存有限,时间有限,资源有限,但是又不得不进行一些大量数据的操作时,我们可以通过压缩的方式灵活高效地处理数据存储和传输问题,优化应用性能。
在Python中,通过特定的算法,将原始数据转换成一个更紧凑的形式,这个过程称为压缩;而将压缩后的数据恢复到原始形式的过程则称为解压缩。这里简单了解一些这些模块后,一个个进行学习使用。

  1. zlib:
    介绍:zlib 模块提供了对 zlib 压缩库的接口,支持 gzip 文件格式的压缩和解压缩。
    功能:可以用于数据的简单压缩和解压缩,常用于需要快速压缩速度和相对较高压缩率的场合。
    常用函数:compress(), decompress(), crc32() 等。
  2. gzip:
    介绍:gzip 模块允许你使用 gzip 文件格式进行压缩和解压缩操作。
    功能:提供了文件对象(如 GzipFile)来处理 .gz 文件,可以透明地读写压缩文件,就像它们是普通文件一样。
    常用类:GzipFile 类用于创建或读取 gzip 格式的文件。
  3. bz2:
    介绍:此模块提供了对 bzip2 压缩算法的支持。
    功能:相较于 zlib,bzip2 提供了更高的压缩比,但压缩速度较慢。适用于需要高压缩比而时间不是关键因素的场景。
    常用类:BZ2File 类用于读写 bzip2 格式的文件。
  4. lzma:
    介绍:lzma 模块提供了对 LZMA (Lempel-Ziv-Markov chain Algorithm) 压缩算法的支持,这是 xz 文件格式的基础。
    功能:LZMA 提供了非常高的压缩比,特别适合于大文件的压缩。它在解压速度上也表现良好。
    常用类:LZMAFile 类用于读写 xz 格式的文件,以及相关的压缩和解压缩函数。
    这些模块使得Python能够方便地处理各种常见的压缩格式,满足不同的数据压缩需求。

zlib

zlib模块是Python的标准库之一,它提供了对zlib压缩库的接口,支持DEFLATE压缩算法,这是一种广泛使用的数据压缩算法,也是gzip、zip等文件格式的基础。zlib模块主要用于需要快速压缩速度和相对较高压缩率的场合,比如网络数据传输、文件存储等。

压缩与解压

import zlibdata = b"This is an example of compressed data."
# 压缩
compressed_data = zlib.compress(data)
# 解压
decompressed_data = zlib.decompress(compressed_data)
print(decompressed_data.decode())

在这里插入图片描述

通过输出可以看出,字符串压缩再解压后打印,并没有什么影响。

这里单独要讲2个点。

  1. 字符串前面的b是什么?
    这个b表示后面的字符串会被处理成一个字节串。因为compress函数的入参就是一个字节串,直接传入字符串是不行的。为什么字节串可以字符串不行呢?因为zlib这个模块处理的就是原始的二进制数据,而不是文本字符串。字符串在计算机内存中是以特定的字符编码(如UTF-8)表示的,而压缩算法直接作用于这些二进制表示上。
    有没有类似的写法呢?这里随便讲几个,以后遇到这种类似的写法可以查查资料学习一下:

    字符串前的u前缀(Python 2中):在Python 2中,字符串前加u表示创建一个Unicode字符串。例如,u"Hello, World!"。Python 3中默认字符串就是Unicode,因此不再需要u前缀。

    字符串前的r前缀:表示创建一个原始字符串(rawstring),其中的转义字符不会被处理。这在编写正则表达式或Windows文件路径时特别有用。例如,r"C:\path\to\file.txt"。

    字符串前的f前缀:这个就不用多讲了,格式化字符串,用来替换字符串中某些特定的值

  2. 怎么压缩中文?
    这个问题其实和1有关,还是那句话。这个模块处理的是二进制数据,所以要压缩中文,先把中文转成二进制数据就好了。

    # 待压缩的字符串
    text = '大家好,我是明月望秋思'# 将字符串转换为字节串(这里使用UTF-8编码)
    data = text.encode('utf-8')# 使用zlib进行压缩
    compressed_data = zlib.compress(data)# 解压缩,先确保数据被正确压缩,然后解压
    decompressed_data = zlib.decompress(compressed_data)# 将解压缩后的字节串转换回字符串
    decompressed_text = decompressed_data.decode('utf-8')# 打印原字符串和解压缩后的字符串进行对比
    print("Original Text:", text)
    print("Decompressed Text:", decompressed_text)# 可选:打印压缩前后数据的长度比较
    print("Original Size:", len(data), "bytes")
    print("Compressed Size:", len(compressed_data), "bytes")
    

    在这里插入图片描述
    很简单转成字节串就行了。大家看压缩前后对比,内容不变,但是数据长度变了。这是正常现象,因为原本的字符串本身长度就不长,转个压缩对象反而增加了对象信息之类的开销。当你压缩的内容越长,受益越大。

gzip

gzip模块提供了对gzip格式压缩文件的支持,gzip是一种流行的文件压缩格式,广泛应用于文件传输和存储,特别是在Unix/Linux系统中。gzip格式基于DEFLATE压缩算法,该算法结合了LZ77压缩方法和霍夫曼编码。

import gzipwith open('original_file.txt', 'rb') as f_in:with gzip.open('compressed_file.gz', 'wb') as f_out:f_out.writelines(f_in)

在这里插入图片描述
代码很简单。
第一行:打开一个文件,读取二进制流模式。之前讲的rbopen文件打开模式的参数不会忘了吧。
第二行:用gzip模块的open函数打开创建一个.gz文件,写入二进制流模式。
第三行:压缩文件读取原文件的二进制流。
这样就可以看到,文件已经被压缩好了,那么接下来我们解压一下。

with gzip.open('compressed_file.gz', 'rb') as f_in:with open('decompressed_file.txt', 'wb') as f_out:f_out.writelines(f_in)

在这里插入图片描述
代码一样的简单。
第一行:打开压缩文件,读取二进制流模式。
第二行:打开创建一个txt文件,写入二进制流模式。
第三行:二进制流的写入

最后我们看一下文件内容是不是一样

在这里插入图片描述

事实也证明了,我们使用gzip模块对文件进行压缩和解压,不会改变文件内容。

bz2

bz2模块提供了对BZ2文件格式的支持,这是一种使用Burrows-Wheeler变换和Huffman编码的高压缩比数据压缩算法。BZ2格式通常比传统的gzip格式提供更高的压缩比,尽管它的压缩和解压缩速度可能较慢。bz2模块主要用于需要高压缩率的场合,如存储大量数据或在网络上传输数据时减少带宽消耗。

import bz2# 待压缩的字符串
text = '这是一个用于演示bz2模块的长文本字符串...'# 转换为字节串
data = text.encode('utf-8')# 压缩数据
compressed_data = bz2.compress(data)# 解压缩数据
decompressed_data = bz2.decompress(compressed_data)# 将解压缩后的字节串转换回字符串
decompressed_text = decompressed_data.decode('utf-8')print('压缩前:', text)
print('压缩后:', compressed_data)
print('解压缩后:', decompressed_text)

在这里插入图片描述
看代码就知道,compresse函数仍然接受字节串类型的参数。

最后,我们操作一下文件试试。

# 写入BZ2文件
with bz2.BZ2File('example.bz2', 'wb') as f:f.write(text.encode('utf-8'))# 读取BZ2文件
with bz2.BZ2File('example.bz2', 'rb') as f:content = f.read().decode('utf-8')

在这里插入图片描述

也能看到,我们将text的内容存到bz2文件后,读取出的内容与text的内容仍然是一致的。

lzma

lzma模块提供了对LZMA(Lempel-Ziv-Markov Chain Algorithm)压缩算法的支持,这是一种高效的压缩算法,以其高压缩比和相对较快的解压速度而著称。LZMA算法是7-Zip归档工具的核心部分,常用于创建.xz格式的压缩文件。

import lzma# 写入.xz文件
with lzma.open('example.xz', 'w') as f:f.write(b'This is some example text to compress.')# 读取.xz文件
with lzma.open('example.xz', 'r') as f:content = f.read()
print(content.decode('utf-8'))

在这里插入图片描述
这就是压缩和解压缩的例子。可以看到在文件流操作的时候,仍然使用了带b前缀的字符串(其实就是字节串)。这是不是说明和之前三个模块的是一样的,就没多写了。

结尾

以上就是关于数据压缩的四个模块的压缩和解压的功能。不难并且几个模块基础使用方式其实很相似。

当然这几个模块会有更高级特性和用法,这个依旧是用到的时候再仔细学习。基础的压缩和解压缩已经够用了。

作业

  1. 四个模块分别进行压缩和解压缩练习。

ps:今天工作的时候复制swagger链接,中文全部被转成了符号+数字的组合。复制出来以后用urllib.parse又转回去了。然后复制的链接瞬间好看多了!

相关文章:

Python学习笔记24:进阶篇(十三)常见标准库使用之数据压缩功能模块zlib,gzip,bz2,lzma的学习使用

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 数据压缩…...

【笔记】Android Settings 应用设置菜单的界面代码介绍

简介 Settings应用中,提供多类设置菜单入口,每个菜单内又有各模块功能的实现。 那么各个模块基于Settings 基础的界面Fragment去实现UI,层层按不同业务进行封装继承实现子类: DashboardFragmentSettingsPreferenceFragment 功…...

Symfony配置管理深度解析:构建可维护项目的秘诀

Symfony是一个高度灵活且功能丰富的PHP框架,它提供了一套强大的配置管理系统,使得开发者能够轻松定制和优化应用程序的行为。本文将深入探讨Symfony中的配置管理机制,包括配置的结构、来源、加载过程以及最佳实践。 一、配置管理的重要性 在…...

视频的宣传片二维码怎么做?扫码播放视频的制作教程

现在很多的宣传片会通过扫码的方式来展示,通过将视频生成二维码之后,其他人就可以扫码来查看视频内容,从而简化获取视频的过程,提升视频传播的效率及用户查看视频的便捷性。目前,日常生活和工作中就有视频二维码的应用…...

实用的网站

前端 精简CSS格式 Font Awesome 图标库 BootCDN 加速服务 LOGO U钙网 AI AI工具集 视频下载 B站视频解析下载...

Monorepo(单体仓库)与 MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南

🔥 个人主页:空白诗 文章目录 一、引言1. Monorepo 和 MultiRepo 简介2. 为什么选择 Monorepo? 二、Monorepo 和 MultiRepo 的区别1. 定义和概述2. 各自的优点和缺点3. 适用场景 三、Monorepo 的开发策略1. 版本控制2. 依赖管理3. 构建和发布…...

使用 PyTorch 创建的多步时间序列预测的 Encoder-Decoder 模型

Encoder-decoder 模型在序列到序列的自然语言处理任务(如语言翻译等)中提供了最先进的结果。多步时间序列预测也可以被视为一个 seq2seq 任务,可以使用 encoder-decoder 模型来处理。本文提供了一个用于解决 Kaggle 时间序列预测任务的 encod…...

开启IT世界的第一步:高考新生的暑期学习指南

目录 前言 了解IT领域 学习编程语言 实践项目 学习资源 阅读专业书籍 培养良好的学习习惯 结语 最后 - 投票 前言 七月的钟声敲响,各省的高考分数已揭晓,意味着一段紧张而又充满奋斗的旅程画上了句号。然而,高考的结束并不意味…...

软考系统架构师高效备考方法论

软考系统架构师高效备考方法论 本章总结的备考方法论也是希望能帮助更多的小伙伴高效的备考最终通过考试,这种考试个人感觉是尽量一次性考过, 要不然老拖着,虽然每年可以考两次,5月和11月,两次考试间隔5个月时间&#…...

【neo4j图数据库】入门实践篇

探索数据之间的奥秘:Neo4j图数据库引领新纪元 在数字化浪潮汹涌的今天,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长和数据关系的日益复杂,传统的关系型数据库在处理诸如社交网络、推荐系统、生物信息学等高度互…...

【TS】TypeScript 原始数据类型深度解析

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript 原始数据类型深度解析一、引言二、基础原始数据类型2.1 boolean2.2 …...

怎么样调整分类的阈值

调整分类模型的阈值是改变模型对正负类的预测标准的一种方法,常用于提高精确率、召回率或者其他性能指标。以下是如何调整分类阈值的步骤和方法: PS:阈值是针对预测概率(表示样本属于某个特定类别的可能性)来说的 调…...

java+mysql教师管理系统

完整源码地址 教师信息管理系统使用命令行交互的方式及数据库连接实现教师信息管理系统,该系统旨在实现教师信息的管理,并根据需要进行教师信息展示。该软件的功能有如下功能 (1)基本信息管理(教师号、姓名、性别、出生年月、职称、学历、学位、教师类型…...

PDF文档如何统计字数,统计PDF文档字数的方法有哪些?

在平时使用pdf阅读或者是处理文档的时候,常常需要统计文档的字数。pdf在查看文字时其实很简单。 PDF文档是一种常见的电子文档格式,如果需要对PDF文档中的字数进行统计,可以使用以下方法: Adobe Acrobat DC:Adobe Ac…...

在Python asyncio中如何识别协程是否被block了

现在asyncio在Python中的使用越来越广泛了,但是很多人对于协程(corotine)的一些使用方式还不太熟悉。在这篇文章中,我将会介绍如何识别协程是否被block了,并以常用的HTTP网络库requests/httpx为例来说明如何避免协程被block的问题。 为什么协程会被block 在Python中,可…...

Hyper-V虚拟机固定IP地址(手把手教设置)

链接虚拟机修改网络配置文件 输入指令 sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 然后 输入 按 i 键 再按回车 (enter) 进入编辑模式 修改配置(这几项)其中 IPADDR 就是你想给虚拟机固定的 IP 地址 多台的话只需要修改这个IP 就行其他不变 BOOTPROTO=static…...

以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!

大家好,我是CodeQi! 项目开发中,Loading 的展示与关闭是非常关键的用户体验设计。 当我们的应用需要发起多个异步请求时,如何有效地管理全局 Loading 状态,保证用户在等待数据加载时能有明确的反馈,这是一个值得深入探讨的问题。 本文将以 Vue 3 项目为例,详细讲解如…...

Node.js学习(一)

Node.js安装与入门案例: 需求:点击按钮,请求本地目录指定文件的内容,并显示在页面上 刚入门肯定想着直接写相对路径请求指定路径数据就行了,可是会发现不行。 网页运行在浏览器端,通常后续要发布&#xf…...

Spring Data JPA使用及实现原理总结

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 5、Spring Data JPA自定…...

【C语言】extern 关键字

在C语言中,extern关键字用于声明一个变量或函数是定义在另一个文件中的。它使得在多个文件之间共享变量或函数成为可能。extern关键字常见于大型项目中,通常用于声明全局变量或函数,这些变量或函数的定义位于其他文件中。 基本用法 变量声明…...

Linux--V4L2应用程序开发(二)改变亮度

一、思路流程 创建一个新线程用来控制亮度,线程通过读取用户输入来增加或减少亮度值,并使用 ioctl 函数将新亮度值设置到视频设备。 二、代码 /*创建线程来控制亮度*/ pthread_t thread; pthread_create(&thread, NULL, thread_brightness_contrl…...

[Gstreamer] 消息处理handler的设置

前言: Gstreamer 提供以 GstMessage 和 GstBus 为基础的消息传递机制,所有GstMessage 发送的时候都需要指定 GstBus 用来明确当前 message 将在哪条 Bus 上流转。所有的 GstMessage 最终都会进入一个handler,这个handler函数可以通过两种方式…...

线性代数笔记

行列式 求高阶行列式 可以划上三角 上三角 余子式 范德蒙行列式 拉普拉斯公式 行列式行列对换值不变 矩阵 矩阵的运算 同型矩阵加减 对应位置相加减 矩阵的乘法 左边第 i 行 一次 相乘求和 右边 第 j 列 eg 中间相等 两边规模 矩阵的幂运算 解题思路 找规律 数学归纳…...

未公开 GeoServer开源服务器wfs远程命令执行漏洞 已复现(CVE-2024-36401)

0x01 阅读须知 技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成…...

【WebGIS干货分享】Webgis 面试题-浙江中海达

1、Cesium 中有几种拾取坐标的方式,分别介绍 Cesium 是一个用于创建 3D 地球和地理空间应用的 JavaScript 库。在 Cesium 中,你可以使用不同的方式来拾取坐标,以便与地球或地图上的对象进行交 互。以下是 Cesium 中几种常见的拾取坐标的方式…...

ES 修改索引字段类型

大体的原理: 1:按照老索引按需修改,新建新索引 2:转移数据(数据量大,时间会很长) 3:删除老索引 4:给新索引 创建别名 第一步:创建新索引 可以先获取老索引ma…...

恢复的实现技术-日志和数据转储

一、引言 在系统正常运行的情况下,事务处理的恢复机制应采取某些技术措施为恢复做好相应的准备,保证在系统发生故障后,能将数据库从一个不一致的错误状态恢复到一个一致性状态 恢复技术主要包括 生成一个数据库日志,来记录系统中…...

全网最全最细的jmeter接口测试教程,建议收藏

在日常工作中,尤其是做接口测试时,我们最经常用到的两个工具,就是Jmeter和postman。今天,我们主要是讲一讲Jmeter在接口测试这一块的一些方式方法。内容比较多,大家可以收藏一下,以后慢慢学。 1&#xff0…...

Raspbian命令行连接WiFi网络

Raspbian命令行连接WiFi网络 1. 源由2. 环境3. 信号4. 连接5. 检查6. 断开 1. 源由 “懒人”多福,是什么原因,大家知道不,哈哈。 如果大家关注过之前《Ardupilot开源代码之Rover上路计划》,为了笔记本电脑在不断网的情况下进行配…...

王佩丰 Excel 基础二十四讲——目录

前言 跟着B站学习王佩丰 Excel 基础教程,本文章为索引目录 课程传送门:视频地址——点击前往 王佩丰Excel基础教程24讲完整版 第一讲:认识 Excel 第二讲:Excel 单元格格式设置 第三讲:查找替换定位(未编辑…...

Qt扫盲-QRect矩形描述类

QRect矩形描述总结 一、概述二、常用函数1. 移动类2. 属性函数3. 判断4. 比较计算 三、渲染三、坐标 一、概述 QRect类使用整数精度在平面中定义一个矩形。在绘图的时候经常使用,作为一个二维的参数描述类。 一个矩形主要有两个重要属性,一个是坐标&am…...

Android系统adb shell怎么执行checksum 来判断文件是否变更?

在Android系统中,通过ADB(Android Debug Bridge)shell执行checksum(校验和)来检查文件是否变更是一个常见的需求,尤其是在自动化测试或确保应用文件未被篡改的场景中。在Linux和Android shell中&#xff0c…...

JS中的上下文

一.执行上下文的概念: 执行上下文简称上下文。变量或者函数的上下文决定了它们可以访问哪些数据,以及它们的行为。每一个上下文都具有一个关联的变量对象,而这个上下文中定义的所有变量和函数都存在于这个对象上。 二.JS中上下文的执行机制&a…...

【深度学习】注意力机制

https://blog.csdn.net/weixin_43334693/article/details/130189238 https://blog.csdn.net/weixin_47936614/article/details/130466448 https://blog.csdn.net/qq_51320133/article/details/138305880 注意力机制:在处理信息的时候,会将注意力放在需要…...

安卓开发自定义时间日期显示组件

安卓开发自定义时间日期显示组件 问题背景 实现时间和日期显示,左对齐和对齐两种效果,如下图所示: 问题分析 自定义view实现一般思路: (1)自定义一个View (2)编写values/attrs.…...

IT行业入门,如何假期逆袭,实现抢跑

目录 前言 1.IT行业领域分类 2.基础课程预习指南 3.技术学习路线 4.学习资源推荐 结束语 前言 IT(信息技术)行业是一个非常广泛和多样化的领域,它包括了许多不同的专业领域和职业路径。如果要进军IT行业,我们应该要明确自己…...

Pyramid 中混合认证策略

1. 问题背景 在一个使用 Pyramid 框架开发的应用程序中,需要同时处理 HTML 内容的显示和 JSON API 的请求。对于 HTML 内容,使用了 AuthTktAuthenticationPolicy 进行身份验证和 ACLAuthorizationPolicy 进行授权。当用户成功登录后,会在浏览…...

深度学习经典检测方法概述

一、深度学习经典检测方法 two-stage(两阶段):Faster-rcnn Mask-Rcnn系列 one-stage(单阶段):YOLO系列 1. one-stage 最核心的优势:速度非常快,适合做实时检测任务! 但是…...

<sa8650>sa8650 qcxserver-之-摄像头传感器VB56G4A驱动开发<1>

<sa8650>sa8650 qcxserver-之-摄像头传感器VB56G4A驱动开发 <1> 一、前言二、QCX架构三、QCX 传感器驱动程序定制开发3.1 sensor硬件接口3.2 sensor配置文件3.2.1 cameraconfig.c3.2.2 cameraconfigsa8650_water.c3.2.3 新增编译MK3.2.4 参数解析3.2.4.1 struct Camera…...

推荐8款超实用的ComfyUI绘画插件,帮助我们的AI绘画质量和效率提升几个档次!

前言 大家在使用SD绘画过程中&#xff0c;想必见识到了插件的强大功能&#xff0c;本身纯净版的SD界面是相对简洁的&#xff0c;但是搭配了各种插件后&#xff0c;界面标签栏会增加很多&#xff0c;相应的功能也增加了。 从简单的中文界面翻译插件&#xff0c;到强大的contro…...

MATLAB-振动问题:两自由度耦合系统自由振动

一、基本理论 二、MATLAB实现 以下是两自由度耦合系统自由振动质量块振动过程动画显示的MATLAB程序。 clear; clc; close allx0 1; D1 40; D12 8; D2 D1; m1 1; omega0 sqrt(D1/m1); k1 D12 / D1; k2 D12 / D2; k sqrt(k1 * k2); omegazh omega0 * sqrt(1 k); omeg…...

人工智能-NLP简单知识汇总01

人工智能-NLP简单知识汇总01 1.1自然语言处理的基本概念 自然语言处理难点&#xff1a; 语音歧义句子切分歧义词义歧义结构歧义代指歧义省略歧义语用歧义 总而言之&#xff1a;&#xff01;&#xff01;语言无处不歧义 1.2自然语言处理的基本范式 1.2.1基于规则的方法 通…...

Spring Boot中的异步编程技巧

Spring Boot中的异步编程技巧 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨在Spring Boot应用程序中如何使用异步编程技巧&#xff0c;以提升性…...

深度解密Spark性能优化之道

课程介绍 课程通过实战案例解析和性能调优技巧的讲解&#xff0c;帮助学员提升大数据处理系统的性能和效率。课程内容涵盖了Spark性能调优的各个方面&#xff0c;包括内存管理、并行度设置、数据倾斜处理、Shuffle调优、资源配置等关键技术和策略。学员将通过实际案例的演示和…...

在U盘/移动硬盘上安装热插拔式Ubuntu系统,并将Docker目录挂载到NTFS硬盘

Windows10的WSL2的确给开发人员带来了很多方便&#xff0c;但是仍然有很多缺点。比如&#xff1a;太占系统内存&#xff1b;有些软件无法在WSL2中编译成功&#xff1b;相当于虚拟机&#xff0c;性能不如原装系统。 装双系统&#xff0c;相信大家都不陌生&#xff0c;但它会占用…...

商城小程序论文(设计)开题报告

一、课题的背景和意义 近些年来&#xff0c;随着移动互联网巅峰时期的来临&#xff0c;互联网产业逐渐趋于“小、轻、微”的方向发展&#xff0c;符合轻应用时代特点的各类技术受到了不同领域的广泛关注。在诸多产品中&#xff0c;被誉为“运行着程序的网站”之名的微信小程序…...

15. Java的 CAS 操作原理

1. 前言 本节内容主要是对 CAS 操作原理进行讲解&#xff0c;由于 CAS 涉及到了并发编程包的使用&#xff0c;本节课程只对 CAS 的原理问题进行讲解&#xff0c;有助于同学后续对并发编程工具使用的学习。本节具体内容点如下&#xff1a; 了解 CAS 的概念&#xff0c;这是本节…...

修改element-ui日期下拉框datetimePicker的背景色样式

如图&#xff1a; 1、修改背景色 .el-date-picker.has-sidebar.has-time { background: #04308D; color: #fff; border: 1px solid #326AFF } .el-date-picker__header-label { color: #ffffff; } .el-date-table th { color: #fff; } .el-icon-d-arrow-left:before { color: …...

Linux—— 逻辑运算符,压缩和解压缩

- -a&#xff1a; and 逻辑与 - -o&#xff1a; or 逻辑或 - -not&#xff1a; not 逻辑非 - 优先级&#xff1a;与>或>非 shell [rootserver ~]# find / -size 10k -a -size -50k [rootserver ~]# find /etc -name "e*" -o -name "f*"…...

音视频入门基础:H.264专题(6)——FFmpeg源码:从H.264码流中提取NALU Header、EBSP、RBSP和SODB

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…...

Nifi脚本组件ExecuteScript 的使用(一)

ExecuteScript 组件的基本使用 前面已经介绍过Nifi中基本的数据流程&#xff0c;这里介绍一下最为常用的一个组件&#xff0c;ExecuteScript processor&#xff0c;顾名思义ExecuteScript组件是一组以自定义脚本为主体的组件&#xff0c;意思就是&#xff0c;可以在该组件内部…...

企业如何通过AI机器人筛选意向客户

企业通过AI机器人筛选意向客户是一个高效且资源优化的过程。以下是一些关键的步骤和要点&#xff0c;以帮助企业通过AI机器人有效地筛选意向客户&#xff1a; 1. 明确筛客需求 - 企业首先需要明确自身的筛客需求&#xff0c;如筛选目标客户群、快速识别意向客户等。 - 通…...

Perl 语言开发(七):哈希和关联数组

目录 1. 哈希与关联数组的概述 2. 哈希的基本操作 2.1 创建哈希 2.2 访问哈希值 2.3 添加和修改哈希值 2.4 删除哈希值 2.5 检查哈希中是否存在某个键 3. 迭代哈希 3.1 使用 keys 和 values 3.2 使用 each 4. 复杂数据结构中的哈希 4.1 哈希的数组 4.2 哈希的哈希…...

SpringBoot整合Dubbo的快速使用教程

目录 一、什么是Dubbo? 二、SpringBoot整合Dubbo 1、父工程引入依赖 2、各个Dubbo服务子模块引入依赖 3、服务提供者 &#xff08;1&#xff09;启动类添加注解EnableDubbo &#xff08;2&#xff09;服务类添加注解DubboService &#xff08;3&#xff09;配置文件…...

【项目实践】贪吃蛇

一、游戏效果展示二、博客目标三、使用到的知识四、Win32 API 介绍 4.1 WIn32 API4.2 控制台程序4.3 控制屏幕上的坐标COORD4.4 GetStdHandle4.5 GetConsoleCursorInfo 4.5.1 CONSOLE_CURSOR_INFO 4.6 SetConsoleCursorInfo4.7 SetConsoleCursorPosition4.8 GetAsyncKeyState 五…...

Python逻辑控制语句 之 循环语句--死循环无限循环

1.死循环和无限循环的异同 死循环无限循环 相同点 在程序执⾏层⾯上看起来是⼀样的, 都是代码⼀直执行不能停止 不同点 是由于 写代码的人 不小心造成bug 是写代码的⼈ 故意这么写⽆限循环中,⼀般会存在⼀个 if 判断语句, 当这个判断语句的条件成⽴, 执⾏ break 语句,来终止循…...

Excel中怎样将第一行建立好的规则套用到每一行?

考虑使用条件格式来完成&#xff0c;有两种方式可以尝试&#xff1a; 一、一次性创建条件格式 1.选中需要设置条件格式的区域&#xff0c;如果是不连续的区域&#xff0c;可以按住Ctrl键&#xff0c;然后用鼠标依次选中需要的数据区域 2.点击 开始选项卡&#xff0c;条件格式…...

JAVA在Spring框架多线程时调用服务类方法

一 Spring框架多线程调用服务类的方法 我们在开发Web的项目时&#xff0c;有时候我们想在线程的环境下使用Service或Component 注解的服务类方法&#xff0c;多线程下是不能直接调用&#xff0c;以下总结一些常用的技巧转换成可调用的形式。 二 Spring框架下多线程下调用动态…...

Spring - Spring Cache 缓存注解这样用,实在是太香了!

作者最近在开发公司项目时使用到 Redis 缓存&#xff0c;并在翻看前人代码时&#xff0c;看到了一种关于 Cacheable 注解的自定义缓存有效期的解决方案&#xff0c;感觉比较实用&#xff0c;因此作者自己拓展完善了一番后分享给各位。 Spring 缓存常规配置 Spring Cache 框架给…...

设计模型-系统架构师(三)

1、按照《中华人民共和国著作权法》的权利保护期&#xff0c;署名权和修改权 是永久保护的。 发表权、使用权和获取报酬权 保护期限 作者终生和死后的50年。 2、&#xff08;重要&#xff09;面向对象的分析模型主要由 顶层架构图、用例与用例图和&#xff08;&#xff09;构成…...

【yolov10】使用自己的数据集训练目标检测模型

【yolov10】使用自己的数据集训练目标检测模型 一、anaconda安装二、环境配置三、数据集制作1、labelimg的安装2、使用labelimg 四、正片1、下载yolov10源码2、数据集目录3、训练4、推理 一、anaconda安装 直接参考前一篇博客&#xff1a; https://blog.csdn.net/m0_71523511/…...

Flutter 中的 DrawerController 小部件:全面指南

Flutter 中的 DrawerController 小部件&#xff1a;全面指南 Flutter 是一个流行的跨平台移动应用开发框架&#xff0c;它提供了丰富的组件和工具来帮助开发者构建高质量的应用。在Flutter中&#xff0c;DrawerController并不是一个内置的组件&#xff0c;但是它的概念可以用于…...