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

压缩感知理论

一、概念理解

压缩感知是什么

 压缩感知(Compressed Sensing,CS)是一种基于稀疏表示的采样理论,是一种革命性的信号处理方法,它通过利用信号的稀疏性,在远低于传统采样要求的速率下捕获和重构信号。

信号的稀疏性和压缩感知的关系
信号的稀疏性是指信号可以在某个变换域内表示为仅有少量非零系数的向量。

压缩感知正是基于这一特性,通过寻找最少量的线性测量来重构原始信号。为了达到这一目的,稀疏信号的表示、测量矩阵的设计以及重构算法的实现是三个关键环节。

 稀疏信号与冗余表示
在CS理论中,信号的稀疏性通常以冗余表示方法来实现。冗余表示是通过将信号投影到一个适当的基(或字典)上,使得信号在新的表示域中的系数变得更加集中。常见的基包括傅里叶变换、小波变换等,而字典则包含了更多的自适应元素,如正交匹配追踪(OMP)算法中的学习得到的字典。

冗余表示和稀疏性

冗余表示的核心思想是,通过选择一个合适的基(或字典),可以使得信号的表示更加"集中"。换句话说,信号在这个基或者字典下的表示会有更多的系数为零或者接近零,只有少数几个重要的系数非零,这就是信号的稀疏性

  • 基(Basis):是将信号从时域转换到另一种表示方式的工具或框架。每个基可以看作是信号的一个“组成部分”。例如,如果你将一个信号投影到一个基上,它可以通过这个基的多个组成部分来表示。常见的基包括:

    • 傅里叶变换:它将信号从时域(时间或空间)转换到频域。信号在频域中的表示方式可以揭示出信号的频率成分。在许多信号中,只有少数频率成分是重要的,其他频率成分可能几乎为零,这就是稀疏性的一种表现。
    • 小波变换:这是另一种常见的变换方法,通常用于分析信号的局部特征。与傅里叶变换不同,小波变换能同时提供信号在不同时间和频率上的信息。它在处理具有局部突变的信号时,能够更有效地表现信号的稀疏性。小波变换确实是一种“变换域”的方法,它通过对信号进行不同尺度的分解,将信号的局部特性提取出来。
  • 字典(Dictionary):字典是由一组更灵活的元素组成的集合,可以视为一种扩展的基。在一些应用中,字典是通过学习得到的,它能更好地适应特定类型的信号。例如,在图像处理或语音识别中,字典可以根据训练数据自适应地调整,以便在表示信号时能达到更高的稀疏性。这种方法常见的算法包括正交匹配追踪(OMP),该算法通过逐步选择最能解释当前信号残差的字典元素来实现信号的稀疏表示。

通俗解释

  1. 就像是不同的"工具",可以用来分析一个信号。比如,傅里叶变换是将信号分解为不同频率的工具,而小波变换是将信号分解为不同尺度、不同时间段的工具。通过这些工具,你可以将信号表示成很多小的部分,但其中很多部分(系数)会是零或者接近零,表明信号本身其实是稀疏的。

  2. 字典 就是基的集合,它包含了更多种类的工具。有时这些工具不是事先规定好的,而是通过分析大量信号后自适应生成的。这样,字典能够更好地表示特定信号中的重要成分,忽略不重要的部分。

因此,小波变换确实是一种“变换域”的方法,它通过转换信号来分析信号的局部特征,而是更广泛的概念,涵盖了如傅里叶变换、小波变换等多种方式。而字典则是通过组合不同的基或学习到的元素来进一步提升稀疏性。

二、稀疏表示方法

- 基表示法 :使用一系列正交或非正交基函数来展开信号。

基表示法通过预定义的基函数来展开信号,这种表示方法简单且易于理解,但其性能受限于所选择的基函数。

- 字典学习法 :通过学习得到信号的最佳表示字典,能够提供更灵活的稀疏表示。

字典学习法是一种更为灵活的方法,它通过优化来获取能够最好表示信号的字典,但优化过程往往计算量较大。

- 变换域法 :将信号变换到某个变换域,如傅里叶变换、小波变换等,这些变换通常能将信号表示为稀疏形式。

变换域法则利用信号本身在某个变换域的稀疏特性来实现表示,适用于大多数自然信号。

经典的稀疏化方法(如 DCT、FFT、DWT)与稀疏表示方法(如字典学习法、变换域法、基表示法)之间的关系可以从方法分类实现原理两个方面理解。这些方法和理论彼此相辅相成,共同构成了稀疏表示的框架。以下是详细分析:


1. 稀疏表示方法的分类

在稀疏表示理论中,稀疏化方法通常分为以下三类:

(1) 基表示法
  • 定义
    • 使用固定的基函数(正交或非正交)将信号展开为系数的线性组合。
    • 这些基函数是预定义的、数学性质明确的,比如傅里叶基、小波基等。
  • 典型方法
    • 离散余弦变换 (DCT)
    • 傅里叶变换 (FFT)
    • 离散小波变换 (DWT)
  • 特点
    • 基是固定的,适用于具有特定结构的信号(如周期性信号)。
    • 优势:计算效率高,理论完善,变换后的系数通常具有稀疏性。
    • 局限:当信号的结构不适合预定义的基时,稀疏表示效果会下降。
(2) 变换域法
  • 定义
    • 信号被映射到一个特定的变换域(如频域或小波域)以实现稀疏表示。
    • 与基表示法的区别在于,它可以使用更灵活的非正交基或冗余表示。
  • 典型方法
    • DCT、FFT、DWT 也可以归为变换域法的一部分,因为它们将信号变换到一个稀疏域。
    • 更广义的变换域法可能结合其他稀疏性工具(如阈值化、压缩感知等)。
  • 特点
    • 适合处理特定特性的信号(如低频占优、不平稳信号等)。
    • 灵活性较高,可以结合多个变换域。
(3) 字典学习法
  • 定义
    • 通过学习得到一个适应信号特性的字典,而非使用固定基。
    • 信号在自适应字典下被稀疏表示,通常通过优化算法确定稀疏系数。
  • 典型方法
    • K-SVD(稀疏表示字典学习)
    • ODL(在线字典学习)
  • 特点
    • 自适应性强,可以根据任务(如分类、去噪、压缩等)定制字典。
    • 计算复杂度较高,需借助算法迭代求解。

2. 经典稀疏化方法与上述分类的关系

(1) 离散余弦变换 (DCT)
  • 属于基表示法,因为 DCT 使用固定的余弦基展开信号。
  • 也属于变换域法,因为它将信号从时域映射到余弦域(频域),实现稀疏化。
(2) 傅里叶变换 (FFT)
  • 属于基表示法,因为 FFT 使用固定的正弦和余弦基。
  • 也属于变换域法,因为它将信号映射到频域(傅里叶域),实现稀疏表示。
(3) 离散小波变换 (DWT)
  • 属于基表示法,因为它使用一组固定的小波基展开信号。
  • 也属于变换域法,因为它将信号分解到小波域,低频和高频成分分别得到稀疏表示。
(4) 字典学习法
  • 独立于固定基,与 DCT、FFT、DWT 有本质区别。
  • 不依赖预定义的基函数,而是通过算法从数据中学习一个字典,使信号在此字典下稀疏表示。
  • 字典学习法通常更适合处理复杂、不规则信号。

3. 方法之间的关系

稀疏化方法基表示法变换域法字典学习法
DCT
FFT
DWT
字典学习
关系总结
  1. 基表示法是稀疏化的经典方法,DCT、FFT、DWT 都属于这一类,依赖固定基。
  2. 变换域法是一个更广泛的概念,包含了基表示法的部分内容,同时允许更灵活的表示。
  3. 字典学习法是一种更通用和自适应的稀疏表示方法,与基表示法和变换域法互补。

4. 通俗解释

  • 基表示法像使用一套“固定模板”分析信号。例如,DCT 和 FFT 使用余弦或正弦函数的“模板”,DWT 使用小波的“模板”,可以快速把信号分解成若干部分。
  • 变换域法是在特定的变换域中寻找信号的稀疏性,DCT、FFT 和 DWT 都属于这种方法。
  • 字典学习法则更像是根据信号特点“量身定制”模板,不局限于预定义的基,而是用数据训练出更适合信号特性的字典。

5. 应用对比

  • DCT:用于图像压缩(如 JPEG),适合低频占优信号。
  • FFT:用于频谱分析,适合周期信号。
  • DWT:用于去噪、压缩(如 JPEG2000),适合不平稳信号。
  • 字典学习法:用于复杂任务(如超分辨率、分类),适合无特定结构的信号。

 


三、压缩感知(CS)理论中,数据重构的过程本质上就是找到一个稀疏系数集合,通过这些系数在特定的稀疏基(或字典)上重构出原始数据。这种近似表示可以很好地恢复原始数据的主要特征,而不需要完整的采样数据。


数据重构的关键步骤

在压缩感知中,重构的目标是从少量的测量数据中恢复原始信号 xx,假设信号是稀疏的或在某个基下是稀疏的。这个过程可以分为以下几个关键步骤:


通俗解释

  1. 重构就是找稀疏系数:

    • 数据重构的目标是找到一个“稀疏的”系数集合,这个集合可以用来重新组合稀疏基上的部分,近似还原出原始数据。
    • 就像拼积木,你手里可能只有几个关键的积木块(稀疏系数),但只要它们位置对了,就能拼出原来的形状(信号)。
  2. 为什么是稀疏系数:

    • 因为信号通常不是直接稀疏的,但在特定的表示(比如小波域或频域)下,它的主要信息可能只由少量重要成分构成。
    • 这些重要成分对应的就是稀疏系数。
  3. 近似而非完全恢复:

    • 在实践中,重构的信号通常是对原始信号的近似,因为压缩感知采样本身是“信息不足”的。不过,只要信号具有足够的稀疏性,并且测量矩阵和算法设计得好,近似的精度可以非常高。

总结

数据重构过程的核心就是找到一组稀疏系数,用这些稀疏系数加上稀疏基的线性组合,近似地还原出原始信号。压缩感知利用信号的稀疏性,使得在采样数据远少于传统方法要求的情况下,仍然能够高质量地重构出信号。这种技术非常适用于稀疏或可压缩的信号类型,比如图像、音频或医学影像等。


在CS理论中,数据重构过程中通常采用固定基(例如小波基)作为稀疏基。属于基表示法的一种 

固定基和稀疏基是什么?

  1. 固定基

    • 指的是预先定义好的数学工具或变换,用于将信号从原始域(比如时域或空间域)转换到另一个域(比如频域或小波域)。
    • 固定基就是一组预定义的基函数,用于特定领域的信号稀疏化,常见的包括:

傅里叶变换基

适用于周期性信号,能够将信号表示为一组正弦和余弦函数的线性组合。

离散余弦变换(DCT)基

常用于图像压缩(如 JPEG),能够高效稀疏表示大多数自然图像。

离散小波变换(DWT)基

常用于非平稳信号,尤其适合处理多分辨率信息。

其他固定基

拉普拉斯基、多项式基、Haar基等。

  • 在数据重构过程中,固定基被用作信号的表示工具,帮助识别信号中的稀疏结构。
  1. 稀疏基

    • 稀疏基是从信号的角度描述的,指的是能让信号在该基下表示得最稀疏的那个基。换句话说,信号投影到这个基上后,很多系数会是零或接近零。
    • 稀疏基可以是固定的,比如傅里叶基和小波基,这些基对某些类型的信号特别有效。例如:
      • 对于周期信号,傅里叶基是一种天然的稀疏基,因为周期信号在频域中只需要少数几个频率成分。
      • 对于具有局部特征的信号(如图像中的边缘),小波基是一种适合的稀疏基,因为它能够捕捉信号的局部变化。

你的两句话的关联

  • 你之前提到的“信号的稀疏性通过冗余表示方法来实现”,实际上是解释稀疏基如何帮助我们更有效地表示信号。

  • 现在这句话则进一步补充说明,在实际的压缩感知应用中,我们经常使用固定的稀疏基(比如小波基),因为这些基已经在数学上证明对某些信号类型非常有效,且使用方便。

  • 如果固定基无法很好地表示信号(即信号无法在这些基下变得稀疏),则需要用到“字典学习”这种方法来自适应地寻找更合适的稀疏表示。


通俗解释

  1. 固定基就像是我们的一套“通用工具”,它适用于许多常见的信号,比如傅里叶基适合分析周期性信号,小波基适合分析局部变化的信号。我们提前知道这些基对某些类型的信号很有效,所以直接拿来用,不需要特别定制。

  2. 稀疏基是从信号的实际需求出发的,说的是哪种基能让信号变得稀疏。如果信号在一个固定基下刚好可以稀疏表示,那这个固定基就是这个信号的稀疏基。

  3. 举个例子:

    • 如果你在一张图片中想分析细节,比如边缘信息,小波基会是一个很好的选择,因为它能抓住图片的局部变化,很多地方的系数会变成零。

    • 如果你分析一个正弦波形的声音信号,傅里叶基可能更好,因为它能很好地描述信号中的频率成分,稀疏性非常高。

总结

  • 固定基是预先设计好的数学工具,用于把信号变换到另一个表示域,比如傅里叶基或小波基。

  • 稀疏基是从信号的表现来看,能够让信号变得稀疏的那个基。

  • 在压缩感知中,使用固定基作为稀疏基是一种常见方法,因为它既方便又有效。如果固定基效果不好,可以通过自适应方法(比如字典学习)找到更合适的稀疏表示。

 感知基 T和稀疏基 Ψ的含义及来源

  • 感知基 T

    1. 定义
      • T 是一个测量矩阵或感知矩阵,用于将高维信号压缩成低维表示。
      • 它对信号进行线性采样,同时保留稀疏信号的主要信息。
    2. 来源
      • 通常是随机矩阵(如高斯随机矩阵、伯努利随机矩阵)。
      • 也可以是基于任务优化得到的矩阵(如学习得到的感知矩阵)。这些矩阵具有良好的理论性质,满足 RIP 条件(即稀疏信号几何结构在采样后不会显著改变)
  • 稀疏基 Ψ

    1. 定义
      • Ψ 是一个稀疏表示基,用于将稀疏系数 c 映射回高分辨率信号 。
      • 它定义了信号在原始域中的特性。
    2. 来源
      • 固定的变换基:如离散余弦变换 (DCT)、傅里叶变换 (FFT)、离散小波变换 (DWT) 等。
      • 学习得到的字典:通过数据驱动的方式(如 K-SVD、在线字典学习)优化得到。

测量矩阵的角色与要求
测量矩阵在压缩感知中起到至关重要的作用。它负责将高维的稀疏信号投影到一个低维空间,从而获得少量的测量值。为了保证从这些测量值中能够无歧义地重构出原始信号,测量矩阵需要满足一定的数学性质,比如限制等距性质(RIP)。在本章节中,我们将详细介绍压缩感知的数学原理,以及如何利用测量矩阵实现高概率的信号重建。

例子

在你的描述中,“选择Haar小波基函数对不同雷诺数下的湍流速度场云数据进行离散小波变换(DWT)”这一过程属于数据的稀疏表示或压缩阶段,但小波变换同时也是信号重构的重要工具。以下是更详细的分析和解答:


1. 小波变换是数据压缩还是重构?

  • 当前的过程是数据压缩/稀疏表示:

    • 离散小波变换(DWT)将湍流速度场数据从原始域(通常是空间域)转换到小波域。
    • 在小波域中,数据被分解为一系列低频和高频成分:
      • 低频部分表示信号的主要结构或全局特性。
      • 高频部分捕捉信号的细节或局部变化。
    • 对于稀疏信号,在小波域中,高频部分通常有许多接近零的系数,可以舍去,从而实现数据压缩。
  • 如果反向应用小波变换,则是数据重构:

    • 小波变换本质是一个双向过程,有“分解”和“重构”两个部分:
      • 分解:将信号从原始域转换到小波域(用于稀疏表示或压缩)。
      • 重构:将稀疏系数从小波域还原回原始域,近似地恢复原始信号。
    • 如果我们将小波域稀疏系数通过逆变换(IDWT)还原,则是重构过程。

2. 小波变换是否只用于稀疏表示?

小波变换不仅仅用于稀疏表示,它有更多的用途,包括但不限于以下方面:

  • 稀疏表示/压缩:

    • 小波变换将信号转换到稀疏的表示域(小波域),有助于去除冗余信息,实现数据压缩。
    • 在许多信号处理中,这是小波变换的核心应用,例如图像压缩中的JPEG2000标准。
  • 信号重构:

    • 小波变换是双向的,通过逆变换(IDWT),可以从稀疏表示中重构信号。
    • 重构通常用于:
      • 数据压缩后的解压。
      • 信号处理后(如滤波、去噪)的还原。
  • 信号去噪:

    • 在小波域中,高频部分通常含有噪声成分。通过阈值化或舍弃高频系数,可以在保留主要信息的同时降低噪声。
    • 去噪后的信号再通过重构返回原始域。
  • 多分辨率分析:

    • 小波变换可以对信号进行分层分析(分辨率逐级递减),广泛用于图像、音频和湍流等复杂数据的特征提取。

3. 小波变换用于数据重构的通俗解释

  • 小波变换的过程就像是“把信号拆成大块和细节部分”:

    • 分解时,信号被拆解到小波域,得到了它的“骨架”(低频)和“细节”(高频)。
    • 如果只存储“骨架”和一部分细节(即压缩),然后再重新组合,就可以通过逆小波变换重构信号。
  • 小波变换的双向特性(分解+重构)使其成为许多数据处理任务中的核心工具,例如信号压缩后需要解压,或者在去噪后恢复信号。


4. 对你具体任务的分析

  • 在你的任务中,选择Haar小波基对湍流速度场云数据进行DWT,目的是将数据从空间域转换到小波域,这个过程更偏向于稀疏表示/压缩
  • 如果进一步对稀疏小波系数进行处理(如去噪、压缩)后,通过逆小波变换还原原始速度场数据,则涉及信号重构
  • Haar小波基的适用性:Haar小波是一种简单但有效的小波基,特别适用于检测信号中的突变和边缘特征,因此在湍流速度场这种数据中可能表现良好。

总结

  1. 数据压缩和稀疏表示:你描述的离散小波变换(DWT)过程是用于将湍流速度场数据变换到稀疏的小波域,属于压缩或稀疏表示阶段。
  2. 信号重构:通过逆小波变换(IDWT),可以将稀疏小波系数还原回原始域,完成重构。
  3. 小波变换用途广泛:不仅用于稀疏表示,还广泛应用于信号压缩、去噪、多分辨率分析和数据重构等领域。

 

相关文章:

压缩感知理论

一、概念理解 压缩感知是什么 压缩感知(Compressed Sensing,CS)是一种基于稀疏表示的采样理论,是一种革命性的信号处理方法,它通过利用信号的稀疏性,在远低于传统采样要求的速率下捕获和重构信号。 信号的稀疏性和压缩感知的关系 信号的稀疏…...

深度学习实验十二 卷积神经网络(3)——基于残差网络实现手写体数字识别实验

目录 一、模型构建 1.1残差单元 1.2 残差网络的整体结构 二、统计模型的参数量和计算量 三、数据预处理 四、没有残差连接的ResNet18 五、带残差连接的ResNet18 附:完整的可运行代码 实验大体步骤: 先前说明: 上次LeNet实验用到的那…...

关于SpringBoot集成Kafka

关于Kafka Apache Kafka 是一个分布式流处理平台,广泛用于构建实时数据管道和流应用。它能够处理大量的数据流,具有高吞吐量、可持久化存储、容错性和扩展性等特性。 Kafka一般用作实时数据流处理、消息队列、事件架构驱动等 Kafka的整体架构 ZooKeeper:…...

windows C#-取消任务列表(上)

如果不想等待异步控制台应用程序完成,可以取消该应用程序。 通过遵循本文的示例,可将取消添加到下载网站内容的应用程序。 可通过将 CancellationTokenSource 实例与每个任务进行关联来取消多个任务。 如果选择 Enter 键,则将取消所有尚未完成…...

RabbitMQ4:work模型

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

《筑牢安全防线:培养 C++安全编程思维习惯之道》

在当今数字化飞速发展的时代,软件安全的重要性已提升到前所未有的高度。C作为一种广泛应用于系统开发、游戏制作、高性能计算等众多领域的编程语言,其程序的安全性更是关乎重大。培养 C安全编程的思维习惯,不仅是开发者个人能力提升的关键&am…...

Python Flask中集成SQLAlchemy和Flask-Login

在现代Web应用开发中,数据库和用户认证是两个非常重要的功能。Flask作为一个轻量级的Python Web框架,本身只提供了最基本的Web功能。但是,它可以通过集成各种优秀的扩展库来增强功能。本文将介绍如何在Flask应用中集成SQLAlchemy(数据库)和Flask-Login(用户认证),并提供一个完整…...

Kafka 生产者优化与数据处理经验

Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…...

web——sqliabs靶场——第十二关——(基于错误的双引号 POST 型字符型变形的注入)

判断注入类型 a OR 1 1# 发现没有报错 ,说明单引号不是闭合类型 测试别的注入条件 a) OR 1 1# a)) OR 1 1# a" OR 11 发现可以用双引号闭合 发现是")闭合 之后的流程还是与11关一样 爆破显示位 先抓包 是post传参,用hackbar来传参 unam…...

Spring |(二)IoC相关内容 | bean

文章目录 📚bean基础配置🐇bean的id和class🐇bean的name属性🐇bean作用范围scope配置🐇bean基础配置小结 📚bean实例化🐇构造方法实例化(常用)🐇静态工厂实例…...

flux的版本

1.flux1-dev.safetensors https://huggingface.co/black-forest-labs/FLUX.1-devhttps://huggingface.co/black-forest-labs/FLUX.1-dev原生的23.8G的模型。原生12B的模型,float16的。需要配合ae.safetensors,flux1-dev.safetensors以及clip-l和T5的权重使用,注意ae.sft和f…...

基于Springboot+Vue的房屋系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…...

【Bluedroid】A2DP SINK播放流程源码分析

在Bluedroid协议栈中,A2DP(Advanced Audio Distribution Profile)SINK播放流程是一个复杂但有序的过程,它涉及多个层次和组件的交互。 一、概述 1.1. 初始化流程 在A2DP SINK播放之前,系统需要进行一系列初始化操作,以确保A2DP SINK服务能够正确运行。这些操作包括启动…...

【什么是Redis?】

Redis:高性能内存数据库的深度探索 在当今这个数据驱动的世界里,数据库的选择直接关系到应用程序的性能、可扩展性和可靠性。在众多数据库解决方案中,Redis以其卓越的性能、丰富的数据结构和灵活的使用场景脱颖而出,成为众多开发…...

TCL大数据面试题及参考答案

Mysql 索引失效的场景 对索引列进行运算或使用函数:当在索引列上进行数学运算、函数操作等,索引可能失效。例如,在存储年龄的列上建立了索引,若查询语句是 “SELECT * FROM table WHERE age + 1 = 20”,这里对索引列 age 进行了加法运算,数据库会放弃使用索引而进行全表扫…...

提高总线数据传输率

提高总线数据传输率是一个涉及多个方面的技术问题,以下是一些有效的方法: 一、提高总线时钟频率 总线时钟频率是影响总线传输速率的重要因素之一。通过提高总线时钟频率,可以缩短每个时钟周期的时间,从而在相同的时间内传输更多…...

_FYAW智能显示控制仪表的简单使用_串口通信

一、简介 该仪表可以实时显示位移传感器的测量值,并可设定阈值等。先谈谈简单的使用方法,通过说明书,我们可以知道长按SET键可以进入参数选择状态,按“↑”“↓”可以选择该组参数的上一个或者下一个参数。 从参数一览中可以看到有…...

图的遍历。

图的遍历这一部分,离不开广度优先和深度优先,如果大家已经学过搜索算法的话,这部分将是易如反掌。 万能搜索算法-CSDN博客 文章中不会提太多离散数学中图的专有名词,因为本篇博客只涉及最简单的图的遍历,故以练习题为主…...

Methode Electronics EDI 需求分析

Methode Electronics 是一家总部位于美国的全球性技术公司,专注于设计和制造用于多个行业的电子和电气组件,产品涵盖汽车、工业、电信、医疗设备以及消费电子等多个领域,提供创新的解决方案。 填写Methode_EDI_Parameters_Template Methode_…...

IT资产管理工具-NetBox

IT资产管理工具-NetBox 推荐一款IT资产管理工具 了解推荐阅读官方中文文档 https://docs.wangluohe.com/introduction/ 硬件要求 ​ - 建议4Core 8G以上,100G存储空间 这里我使用的Linux镜像为 CentOS8-Stream 提前关闭Selinux和防火墙 部署NetBox 一&#…...

uniapp接入BMapGL百度地图

下面代码兼容安卓APP和H5 百度地图官网:控制台 | 百度地图开放平台 应用类别选择《浏览器端》 /utils/map.js 需要设置你自己的key export function myBMapGL1() {return new Promise(function(resolve, reject) {if (typeof window.initMyBMapGL1 function) {r…...

AWTK 最新动态:支持鸿蒙系统(HarmonyOS Next)

HarmonyOS是全球第三大移动操作系统,有巨大的市场潜力,在国产替代的背景下,机会多多,AWTK支持HarmonyOS,让AWTK开发者也能享受HarmonyOS生态的红利。 AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C…...

React基础知识一

写的东西太多了,照成csdn文档编辑器都开始卡顿了,所以分篇写。 1.安装React 需要安装下面三个包。 react:react核心包 react-dom:渲染需要用到的核心包 babel:将jsx语法转换成React代码的工具。(没使用jsx可以不装)1.1 在html中…...

Oracle热备过程中对数据库崩溃的处理方法

引言 在热备过程中如果发生数据库崩溃、断电等情况该如何处理? 如果正在备份 users 表空间的数据文件过程中,此时的数据文件表头 SCN 会被锁定,此时正在复制数据文件时数据库崩溃,系统断电。 从而导致数据文件表头与控制文件中的不一致,导致数据库无法打开,会要求介质恢…...

身份证实名认证API接口助力电商购物安全

亲爱的网购达人们,你们是否曾经因为网络上的虚假信息和诈骗而感到困扰?在享受便捷的网购乐趣时,如何确保交易安全成为了我们共同关注的话题。今天,一起来了解一下翔云身份证实名认证接口如何为电子商务保驾护航,让您的…...

win10 禁止更新

一、winR 输入 regedit 二、输入注册列表路径: (1)计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings (2)按照格式,创建文件命名: FlightSettingsMaxPauseDays (3&…...

运维百科:网络性能20大关键指标

网络性能评估是确保网络服务质量和用户体验的关键环节。在网络、运维领域中,存在着一系列关键的性能指标,共同构成了衡量网络性能的基础。以下是网络性能的20大关键指标,每个指标都承载着特定的意义和重要性。 1.速率(Rate&#…...

java编程开发基础,正则表达式的使用案例Demo

java编程开发基础,正则表达式的使用案例Demo!实际开发中,经常遇到一些字符串,信息的裁剪和提取操作,正则表达式是经常使用的,下面的案例,可以帮助大家快速的了解和熟悉,正则表达式的使用技巧。 package com…...

结构控制

目录​​​​​​​ 1.顺序结构 2.分支结构 2.1.单分支结构 2.2.二分支结构 2.3.多分支结构 2.4.嵌套分支结构 3.循环结构 3.1.while 循环结构 3.2.while...else 循环结构 PS:break 关键字 PS:pass 关键字 3.3.for 循环结构 PS:…...

Go语言中的内存分配与初始化:new与make函数详解

在Go语言中,内存分配和初始化是编程的基础操作。Go提供了两个内置函数new和make,用于不同场景下的内存分配和初始化。理解这两个函数的区别和适用场景对于编写高效、安全的Go代码至关重要。本文将详细介绍new和make函数,并提供示例说明它们的…...

The 2024 ICPC Kunming Invitational Contest

VP链接:https://codeforces.com/gym/105386 B. Gold Medal 签到题。对每一个读入的数 a,先记录已有奖牌数量,即 ,再将 a 对 k 取模。然后将 a 数组从大到小排序,将每个不足 k 的数补到 k。如果 m 有剩余,…...

对原jar包解压后修改原class文件后重新打包为jar

文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class(不好用-不推荐直接跳过)提醒 参考资料-推荐阅读拓…...

【C++】ReadFile概述,及实践使用时ReadFile的速率影响研究

ReadFile 函数概述 ReadFile 是 Windows API 函数,用于从文件或设备(如串口、硬盘等)中读取数据。它是同步和异步 I/O 操作的基础函数。 函数原型 BOOL ReadFile(_In_ HANDLE hFile, // 文件或设备句柄_Out_write…...

WebGL进阶(十一)层次模型

理论基础&#xff1a; 效果&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…...

Django:从入门到精通

一、Django背景 Django是一个由Python编写的高级Web应用框架&#xff0c;以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发&#xff0c;旨在简化Web应用的开发过程。作为一个开放源代码项目&#xff0c;Django迅速吸引了大量的开发…...

C++设计模式行为模式———中介者模式

文章目录 一、引言二、中介者模式三、总结 一、引言 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 中介者模式可以减少对象之间混乱无序的依赖关系&…...

Perfetto学习大全

Perfetto 是一个功能强大的性能分析和追踪工具&#xff0c;主要用于捕获和分析复杂系统中的事件和性能数据&#xff0c;特别是在 Android 和 Linux 环境下。它的核心目标是帮助开发者深入了解系统和应用程序的运行状态&#xff0c;以便优化性能和诊断问题。 Perfetto的主要作用…...

管家婆财贸ERP BR040.销售单明细表变更

最低适用版本&#xff1a; C系列 23.8 插件简要功能说明&#xff1a; 销售明细表支持直接修改单据自由项1-16更多细节描述见下方详细文档 插件操作视频&#xff1a; 进销存类定制插件--销售单明细表变更 1. 应用中心增加菜单【销售单明细表变更】 a. 复制23.8版本销售单明细…...

2411rust,实现特征

原文 在Rust2024中,impl Trait在中位置的默认工作方式有了变化.是为了简化impl Trait,以更好地匹配人们一般的需求. 还添加了一个灵活的语法,让你需要时可完全控制. 从Rust2024开始,一直在更改,何时可在返回位置impl Trait的隐藏类型中使用泛型参数的规则: 1,即对返回位置i…...

SpringBoot3与JUnit5集成测试

你可以在 Spring Boot 3 中轻松设置和运行 JUnit 集成测试。合理使用 Spring 提供的注解和工具&#xff0c;可以确保测试的高效性和可靠性。以下是集成测试的步骤和示例&#xff1a; 1. 添加依赖 在 pom.xml 中添加 Spring Boot Starter Test 依赖&#xff0c;它包含 JUnit 5 …...

工程企业需要什么样的物资管理系统?为什么需要物资管理系统?

一、背景与意义 在工程项目的建设中&#xff0c;无论是高楼大厦的拔地而起&#xff0c;还是高速公路的绵延铺展&#xff0c;物资都是最基础的要素之一。从钢筋水泥到施工机械&#xff0c;任何一种物资的管理不善都可能导致项目延误、成本超支&#xff0c;甚至质量问题。然而&a…...

Vue + Websocket播放PCM(base64转ArrayBuffer、 字符串转ArrayBuffer)

文章目录 引言I 音视频处理相关概念和APIII 案例:基于开源库 pcm-player方式播放借助MediaSource和Audio对象播放音频流。基于原生api AudioContext 播放操作III 格式转换js字符串转ArrayBufferbase64 转 ArrayBufferIV 解决pcm-player分片播放问题引言 需求: 基于webscoket传…...

华为防火墙技术基本概念学习笔记

1.防火墙概述 1.1防火墙与交换机、路由器对比 路由器与交换机的本质是转发&#xff0c;防火墙的本质是控制。 防火墙与路由器、交换机是有区别的。路由器用来连接不同的网络&#xff0c;通过路由协议保证互联互通&#xff0c;确保将报文转发到目的地;交换机则通常用来组建局域…...

Mesh路由组网

Mesh无线网格网络&#xff0c;多跳&#xff08;multi-hop&#xff09;网络&#xff0c;为解决全屋覆盖信号&#xff0c;一般用于家庭网络和小型企业 原理 网关路由器&#xff08;主路由&#xff0c;连接光猫&#xff09;&#xff0c;Mesh路由器&#xff08;子路由&#xff0c;…...

【数据结构】七种常用排序总结

一、七种排序及其讲解 以下为七种排序的讲解&#xff1a; 【数据结构】插入排序——直接插入排序 和 希尔排序 【数据结构】选择排序——选择排序 和 堆排序 【数据结构】交换排序——冒泡排序 和 快速排序 【数据结构】归并排序 —— 递归及非递归解决归并排序 二、排序的…...

【在Linux世界中追寻伟大的One Piece】多线程(一)

目录 1 -> Linux线程概念 1.1 -> 什么是线程 1.2 -> 线程的优点 1.3 -> 线程的缺点 1.4 -> 线程异常 1.5 -> 线程用途 2 -> Linux线程 VS 进程 2.1 -> 线程和进程 2.2 -> 进程的多个线程共享 3 -> Linux线程控制 3.1 -> POSIX线程…...

《Python编程实训快速上手》第十天--处理CSV文件和JSON数据

CSV&#xff1a;简化的电子表格&#xff0c;被保存为纯文本文件 JSON&#xff1a;是一种数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成&#xff0c;以JavaScript源代码的形式将信息保存在纯文本文件中 一、csv模块 CSV文件中的每行代表电…...

基于springboot停车场管理系统源码和论文

如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统停车场管理系统信息管理难度大&#xff0c;容错率低&#xff0c;…...

Linux的桌面

Linux的桌面是可以卸载的 的确&#xff0c;Linux并不像Windows&#xff0c;Linux本身是一个基于命令行的操作系统&#xff0c;在内核眼中&#xff0c;桌面只不过是个普通的应用程序&#xff0c;所以&#xff0c;在Linux的桌面中可以完成的事情&#xff0c;命令行中也基本可以完…...

Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE

Spring Boot 3.0废弃了JavaEE&#xff0c;改用了Jakarta EE 历史背景 javax变成Jakarta的主要原因是因为Java EE项目从Oracle转移到了Eclipse Foundation&#xff0c;并改名为Jakarta EE。 JavaEE是从Java 1.2版本开始推出的Java企业级开发平台&#xff0c;最初的名称是J2EE(J…...