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

探秘基带算法:从原理到5G时代的通信变革【一】引言

文章目录

    • 一、引言
      • 1.1 研究背景与意义
      • 1.2 研究目的与方法
      • 1.3 研究内容与创新点

本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/DFT、QAMtiaozhi/解调、QPSK调制/解调。其他博客链接如下:

  1. 探秘基带算法:从原理到5G时代的通信变革【一】引言
  2. 探秘基带算法:从原理到5G时代的通信变革【二】Viterbi解码
  3. 探秘基带算法:从原理到5G时代的通信变革【三】Turbo 编解码
  4. 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(一)
  5. 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(二)
  6. 探秘基带算法:从原理到5G时代的通信变革【五】CORDIC算法
  7. 探秘基带算法:从原理到5G时代的通信变革【六】CRC 校验
  8. 探秘基带算法:从原理到5G时代的通信变革【七】FFT/DFT
  9. 探秘基带算法:从原理到5G时代的通信变革【八】QAM 调制 / 解调
  10. 探秘基带算法:从原理到5G时代的通信变革【九】QPSK调制/解调
  11. 探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比

一、引言

1.1 研究背景与意义

在现代通信技术飞速发展的当下,从日常使用的智能手机、智能家居设备,到复杂的卫星通信系统、5G 通信网络,通信技术已深度融入社会生活的各个方面。而基带算法作为通信系统的核心,对通信质量和效率起着决定性作用。

基带信号是由信源发出的未经调制的原始电信号,其频率较低,信号频谱从零频附近开始,呈低通形式,可分为数字基带信号和模拟基带信号 。基带算法负责对这些基带信号进行处理,包括编码、解码、调制、解调等关键操作,是实现高效、可靠通信的基石。

编码、解码、调制、解调

编码

编码是信息从一种形式或格式转换为另一种形式的过程 。在通信领域,其目的是对原始信息进行处理,以便更好地传输、存储或加密等。例如在数字通信系统中,信源编码通过去除冗余信息来压缩数据,减少传输所需的带宽或存储空间,像熵编码利用概率分布信息对数据进行编码,哈夫曼编码就属于熵编码的一种,为频率较高的符号分配较短的码字,频率较低的符号分配较长的码字,以此实现数据压缩。而信道编码则是在数据中加入冗余信息,增强数据的抗干扰能力,提高传输的可靠性,比如线性分组码中的汉明码,就能检测和纠正单个错误。

image-20250224161423580

解码

解码是编码的逆过程,即将经过编码处理后的信息还原成原始信息的形式。在数字通信中,信道解码是接收端对信道编码进行的逆过程,通过纠错码来检测和纠正传输过程中出现的错误,从而恢复出发送端的原始数据,如利用汉明距离来检测并纠正错误的汉明解码。信源解码则是将压缩后的数据恢复成原始信息,按照哈夫曼树将变长编码还原为原始符号的哈夫曼解码就是信源解码的一种。

调制

调制是把基带信号加载到载波上,让信号能够通过物理信道进行传输的过程。它是将信息嵌入到载波信号的特性中,如幅度、频率或相位。常见的调制方式有幅移键控(ASK),通过改变载波的振幅来传输数据;频移键控(FSK) ,通过改变载波的频率来传输数据;相移键控(PSK),通过改变载波的相位来传输数据,像二进制相移键控(BPSK)和四进制相移键控(QPSK)都是 PSK 的常见变体;还有正交幅度调制(QAM),它结合了幅度和相位的调制方法,能实现高效传输高数据率信号。

image-20250303134156503

解调

解调是调制的逆过程,是将接收的调制信号还原成基带信号的过程,一般由接收端完成。在解调过程中,会使用与发送端对应的调制技术来提取出原始信息。例如幅移键控解调是将收到的信号解调回幅度变化的信息;频移键控解调通过检测频率变化来恢复数据信号;相移键控解调则是分析相位变化以恢复原始数据;QAM 解调结合幅度和相位解调技术,常用于高数据速率通信场景。

区别

  • 目的不同:编码主要是为了优化信息的表示形式,以满足传输、存储等方面的需求,信源编码为压缩数据,信道编码为提升可靠性。解码是为了还原原始信息,实现信息的解读。调制是让信号适配物理信道的传输特性,便于传输。解调则是从已调制信号中提取原始信号。
  • 作用阶段不同:编码和解码通常在信号处理的前期和后期,与信息的处理和还原相关;调制和解调主要是在信号传输阶段,与信号在物理信道上的传输相关。
  • 处理对象不同:编码和解码主要针对信息本身的格式和内容进行处理;调制和解调主要针对信号的载波特性进行改变和还原。

联系

在完整的通信系统中,编码、解码、调制、解调紧密配合,共同完成信息的可靠传输,它们之间存在着不可分割的联系:

  • 编码与调制协同优化传输:编码主要从信息层面进行处理,调制则侧重于信号的物理特性改变。在实际应用中,编码后的信号会作为调制的输入,两者相互配合以提升通信性能。比如在数字电视广播中,先对音视频数据进行信源编码和信道编码,降低数据冗余并增强抗干扰能力,然后将编码后的数字信号采用正交幅度调制(QAM)方式加载到高频载波上进行传输,通过这种协同作用,既保证了数据传输的准确性,又提高了频谱利用率,实现了高效的信号传输。

  • 调制与解调的对偶关系:调制和解调是信号传输过程中互逆的两个关键环节。调制是将基带信号搭载到载波上,使其适合在信道中传输;解调则是从接收到的已调信号中恢复出原始基带信号 。以常见的 4G 通信系统为例,在基站端,数字信号通过正交频分复用(OFDM)等调制技术被调制到不同的子载波上,经过信道传输后,到达用户终端。在用户终端,解调器利用与调制端对应的解调算法,如相干解调,将接收到的信号解调回原始的数字信号,完成信息的接收。这种调制与解调的对偶关系,确保了信号在传输过程中的完整性和准确性。

  • 解码依赖解调结果:解调后的信号是解码的输入,只有准确解调,才能为后续解码提供可靠基础。在卫星通信中,卫星将携带信息的信号以特定调制方式发射,地面接收站接收到信号后,首先进行解调,将信号从高频载波转换为基带信号,然后再进行信道解码和信源解码,恢复出原始的信息数据。如果解调过程出现错误,那么解码得到的信息也会出现偏差,导致通信失败。

  • 编码辅助解调过程:在解调过程中,编码技术也能发挥作用。一些信道编码具有纠错能力,在解调时可以利用这些编码特性来辅助判断和纠正解调过程中可能出现的错误。例如,低密度奇偶校验码(LDPC)不仅能在信道传输中对抗噪声干扰,在解调阶段,也能通过其独特的校验矩阵和迭代译码算法,帮助解调器更准确地恢复原始信号,提高解调的可靠性。

image-20250224161523446

在通信技术的发展过程中,这些基带算法不断演进以满足更高的传输速率、更低的误码率以及更高效的频谱利用率需求。

信道编码是基带算法的重要部分,其目的是通过增加冗余信息来提高数据传输的可靠性。卷积码是一种常见的信道编码技术,它通过滑动窗口生成冗余位,适用于实时应用,并通常使用Viterbi算法进行解码。Turbo码则是一种高性能的前向纠错码,广泛应用于3G和4G通信系统中,其特点是采用并行级联结构和迭代解码方法。LDPC码(低密度奇偶校验码)以其接近香农极限的性能被5G标准采纳,利用稀疏校验矩阵实现高效编码与解码。此外,Polar码作为一种最新的信道编码技术,首次在5G中大规模应用,利用信道极化现象实现可靠的数据传输。Reed-Solomon码主要用于纠正突发错误,在光盘和卫星通信等领域有广泛应用。

除了信道编码,信源编码也是基带算法的重要组成部分,其目标是压缩数据以减少传输带宽的需求。Huffman编码是一种基于概率分布的无损压缩算法,通过构建最优二叉树来实现高效的数据压缩。LZ77和LZ78是字典编码方法,广泛应用于文件压缩技术中。JPEG和MPEG则是图像和视频压缩的标准,结合了量化和熵编码技术,能够在保证视觉质量的同时显著降低数据量。

什么是信道编码?信道编码比较-CSDN博客

调制解调技术将数字信号转换为模拟信号,以便在物理信道上传输。幅度调制(AM)是最简单的调制方式之一,通过改变载波信号的幅度来表示基带信号。频率调制(FM)则通过改变载波信号的频率来表示基带信号,常用于广播领域。相位调制(PM)则是通过改变载波信号的相位来传递信息。正交振幅调制(QAM)是一种高效的调制方式,同时调整载波的幅度和相位,提供更高的频谱效率,广泛应用于Wi-Fi、LTE和5G等现代通信系统中。正交频分复用(OFDM)是一种多载波调制技术,将高速数据流分成多个低速子流,并在多个正交子载波上同时传输,能够有效对抗多径效应,因此在无线通信中得到了广泛应用。

image-20250226094249415

除此之外,还有一些其他重要的基带算法。均衡器用于补偿信道失真,恢复原始信号,常见的算法包括最小均方误差(LMS)和递归最小二乘法(RLS)。同步算法确保收发端时钟和帧边界对齐,包括载波同步、符号同步和帧同步。多用户检测技术在多用户共享信道的情况下分离不同用户的信号,常用的有干扰消除和联合检测方法。MIMO技术利用多天线系统提高链路容量和可靠性,包括空间复用、波束成形和空时编码等多种技术手段。

不同的基带算法适用于不同的通信场景和技术标准。例如,在蜂窝通信中,LTE和5G采用了QAM、OFDM和Polar码等技术;在无线局域网中,Wi-Fi依赖于OFDM和MIMO技术;在卫星通信中,高阶调制和LDPC码被广泛使用;而在物联网领域,NB-IoT和LoRa等低功耗广域网技术则针对特定的应用需求进行了优化。这些算法和技术的不断发展,推动了现代通信系统的进步和普及。

从通信质量角度来看,基带算法直接影响信号的准确性和稳定性。在无线通信中,信号会受到各种干扰,如噪声、多径效应等,这些干扰会导致信号失真,使接收端难以准确恢复原始信息。而先进的基带算法,如 Turbo 编解码、Polar 编解码等,通过强大的纠错能力,能够有效纠正传输过程中的错误,降低误码率,从而显著提升通信质量。以卫星通信为例,由于卫星与地面站之间的距离遥远,信号在传输过程中会有较大衰减,还会受到宇宙噪声等干扰。此时,采用高性能的基带算法,能确保卫星信号在复杂环境下依然准确无误地传输到地面站,实现可靠通信。

从通信效率方面分析,基带算法关乎数据传输的速度和系统资源的利用效率。随着物联网、大数据等技术的发展,人们对通信系统的数据传输速率提出了更高要求。例如在 5G 通信中,需要支持大量设备同时连接并进行高速数据传输。FFT/DFT、QAM 调制 / 解调以及 QPSK 调制 / 解调等算法,通过高效的信号处理方式,能够提高数据传输速率,充分利用有限的频谱资源,实现更高效的通信。同时,这些算法的优化也能降低系统功耗,减少设备的能量消耗,提升整个通信系统的运行效率。

下图展示了基带算法在通信系统中的关键位置,从图中可以清晰看到,基带信号处理是连接信源与信道、信道与信宿的核心环节,基带算法的优劣直接影响通信系统的整体性能。

image-20250224163901458

图:基带算法在通信系统中的位置

综上所述,深入研究基带算法,不仅有助于提升现有通信系统的性能,满足日益增长的通信需求,还能为未来通信技术的发展奠定坚实基础,具有重要的理论意义和实际应用价值。

信源、信道、信宿

信源

信源是信息的来源,可以是任何产生信息的实体,包括人、机器、自然界的物体等 。比如,当人们进行交谈时,发声的人就是信源,其发出的语音包含了要传达的信息;在计算机通信中,发送数据的计算机就是信源,它产生的数据信息等待传输。从数学角度,信源产生的信息可以用随机变量、随机序列或随机过程来表示,根据输出随机变量的取值集合,信源可分为离散信源和连续信源两类。离散信源输出的是离散的符号序列,如文本数据;连续信源输出的是连续的信号,如语音、图像信号。

信道

信道是信息传递的通道,是将信号进行传输、存储和处理的媒介 。其作用是把信源产生的信号传送到信宿。信道可分为有线信道和无线信道。有线信道包括电缆、光纤等,像我们家庭宽带使用的光纤,能够以高速、稳定的方式传输大量数据信号,保障网络通信的流畅;无线信道则利用无线电波、微波等进行信号传输,例如手机通信就是通过基站与手机之间的无线信道来传递语音和数据信息 。信道的关键性能指标是它的容量,即单位时间内能够传输的最大信息量,以及传输过程中的噪声和干扰情况,这些因素会影响信号传输的质量和可靠性。

信宿

信宿是信息的接收者,可以是人,也可以是机器设备 。比如在观看电视节目时,观众就是信宿,接收电视节目传递的各种信息;在数据传输中,接收数据的计算机或存储设备就是信宿,它接收并存储从信源发送过来的数据。信宿的主要任务是正确地接收和理解来自信道的信息,并对信息进行相应的处理和利用。

image-20250224164518147

区别

  • 功能不同:信源的功能是产生信息,是整个通信过程的起点;信道的功能是传输信息,在信源和信宿之间搭建信息传递的桥梁;信宿的功能是接收和处理信息,是通信过程的终点。

  • 表现形式不同:信源可以是各种能够产生信息的主体,形式多样;信道是具体的物理传输介质或传输方式;信宿可以是接收信息的个体或设备。

  • 关注重点不同:对于信源,重点关注信息的产生和编码方式,以提高信息的有效性和可传输性;对于信道,重点关注传输能力、抗干扰性能以及传输延迟等;对于信宿,重点关注信息的准确接收和解码,以及对信息的后续处理和应用。

联系

  • 信息传递的连贯性:信源、信道和信宿共同构成了信息传递的完整链条。信源产生信息后,通过信道进行传输,最终到达信宿,缺少其中任何一个环节,信息都无法完整地从产生端到达接收端。例如在一场直播活动中,主播作为信源产生直播内容,通过网络信道将音视频信号传输,观众通过手机或电脑等设备作为信宿接收直播内容,实现信息的传播。

  • 相互依存与影响:信源产生的信息特性会影响信道的选择和传输方式,信道的质量会影响信宿接收信息的准确性 。如果信源产生的是高速率的视频数据,就需要选择带宽足够大的信道来传输,否则可能出现卡顿;而信道中的噪声和干扰会导致信宿接收到的信号出现错误,影响信息的正确解读。信宿对信息的反馈也会影响信源后续产生信息的方式,比如观众在直播中反馈某些内容不清晰,主播可能会调整讲解方式。

1.2 研究目的与方法

本研究旨在深入剖析 Viterbi 解码、Turbo 编解码、Polar 编解码、CORDIC 算法、CRC 校验、FFT/DFT、QAM 调制 / 解调以及 QPSK 调制 / 解调等关键基带算法,全面探究其在现代通信系统中的应用与发展趋势。

在原理探究方面,本研究将深入解析每种算法的数学模型、核心思想及实现步骤,以 Viterbi 解码算法为例,通过对其基于网格图的路径搜索原理的深入研究,明确其在降低误码率方面的关键作用;在 Turbo 编解码算法中,详细剖析其交织器与迭代译码的核心机制,理解其如何通过多次迭代提高纠错能力。对于 Polar 编解码,深入研究其极化特性,从理论上阐述其在接近香农极限性能方面的优势。CORDIC 算法则聚焦于其旋转矢量实现各种数学运算的原理,揭示其在硬件实现中的高效性。

在应用场景分析中,针对不同的通信领域,如 5G 通信、卫星通信、物联网等,具体阐述这些算法的应用方式及带来的性能提升。在 5G 通信中,分析 FFT/DFT 算法如何实现高效的多载波调制,支持高速数据传输;探讨 QAM 调制 / 解调算法如何在有限频谱资源下提高数据传输速率。在卫星通信中,研究 Turbo 编解码、Polar 编解码等算法如何克服信号传输中的干扰和衰减,确保可靠通信。在物联网场景下,分析这些算法如何适应低功耗、低成本的设备需求,实现海量设备的连接与数据传输。

在算法对比环节,从性能指标(如误码率、复杂度、延迟等)、适用场景和技术特点等方面,对不同算法进行深入比较。例如,对比 Turbo 编解码和 Polar 编解码在误码率性能和复杂度上的差异,明确在不同通信需求下的选择策略;分析 QAM 调制 / 解调与 QPSK 调制 / 解调在频谱效率和抗干扰能力方面的特点,为实际应用提供参考。

为实现上述研究目的,本研究将采用多种研究方法。通过广泛查阅国内外相关文献,梳理这些算法的发展历程、研究现状及应用成果,获取丰富的理论知识和实践经验,为后续研究奠定坚实基础。以实际的 5G 通信基站、卫星通信系统、物联网设备等为案例,深入分析这些算法在实际应用中的表现,总结经验与问题,提出针对性的改进建议。利用 MATLAB、Simulink 等仿真工具,对各种算法进行建模与仿真,模拟不同的通信环境和参数设置,直观地展示算法的性能指标,验证理论分析的正确性,探索算法的优化空间。 如下图 所示,展示了利用 MATLAB 对 QAM 调制 / 解调算法进行仿真的结果,从星座图中可以清晰看到不同调制阶数下信号点的分布情况,为算法性能分析提供直观依据。

image-20250224165907069

图:QAM 调制 / 解调算法仿真星座图

1.3 研究内容与创新点

本研究全面涵盖了 Viterbi 解码、Turbo 编解码、Polar 编解码、CORDIC 算法、CRC 校验、FFT/DFT、QAM 调制 / 解调以及 QPSK 调制 / 解调等关键基带算法。从理论基础出发,深入剖析每种算法的数学模型,如在研究 FFT/DFT 算法时,详细推导其离散傅里叶变换的数学公式,从数学原理层面理解其对信号频谱分析的作用机制;在讲解 Turbo 编解码算法时,深入分析其交织器的数学构造以及迭代译码过程中的数学运算,明确其纠错能力的数学根源。

在核心思想探究上,以 Viterbi 解码算法为例,深入理解其基于最大似然准则在网格图中寻找最优路径的核心思想,领会其如何通过这种方式有效降低误码率;对于 CORDIC 算法,掌握其利用简单的加减和移位操作实现复杂数学运算的核心思想,体会其在硬件实现中的高效性和独特优势。同时,本研究还对各算法的实现步骤进行了详细梳理,以 QAM 调制 / 解调算法为例,明确其从数字信号到模拟信号调制过程中的星座映射、脉冲成型等具体步骤,以及解调过程中的信号采样、星座判决等反向操作步骤,使读者能够清晰了解算法在实际应用中的操作流程。

在应用领域方面,本研究深入探讨了这些算法在 5G 通信、卫星通信、物联网等多个前沿领域的应用情况。在 5G 通信中,研究 FFT/DFT 算法如何通过快速傅里叶变换实现高效的多载波调制,满足 5G 通信对高速数据传输的需求;分析 QAM 调制 / 解调算法如何在有限的频谱资源下,通过提高调制阶数来提升数据传输速率,为 5G 通信的大容量数据传输提供技术支持。在卫星通信领域,重点研究 Turbo 编解码、Polar 编解码等算法如何凭借强大的纠错能力,克服卫星信号在长距离传输过程中受到的噪声、干扰和衰减等问题,确保卫星通信的可靠性和稳定性。在物联网场景下,关注这些算法如何适应物联网设备数量庞大、功耗低、成本低的特点,实现海量设备之间的有效连接和数据传输,推动物联网技术的广泛应用。

在算法对比环节,本研究从多个维度对不同算法进行了深入比较。在性能指标上,详细分析误码率、复杂度、延迟等关键指标,如对比 Turbo 编解码和 Polar 编解码在不同信噪比条件下的误码率性能,研究它们在纠错能力上的差异;分析 FFT/DFT 算法在不同点数下的计算复杂度,以及对通信系统延迟的影响。在适用场景方面,明确不同算法的优势和局限性,例如 QPSK 调制 / 解调算法由于其抗干扰能力较强,适用于信道环境较为复杂的场景;而 QAM 调制 / 解调算法在频谱效率上具有优势,更适合对数据传输速率要求较高的场景。在技术特点上,比较各算法的独特之处,如 CORDIC 算法在硬件实现上的高效性,使其在对硬件资源有限的设备中具有重要应用价值;Viterbi 解码算法在处理卷积码时的独特优势,使其在特定的通信编码场景中不可或缺。

本研究的创新点主要体现在以下几个方面。在算法对比分析上,采用全面且系统的方法,从多个维度对不同算法进行深入比较,为通信系统设计人员在选择合适算法时提供了全面、准确的参考依据,有助于优化通信系统性能,提高资源利用效率。结合当前 5G 通信、卫星通信、物联网等前沿技术的发展趋势,深入探讨这些算法在不同应用场景中的具体应用和发展方向,为相关领域的技术创新和应用拓展提供了有益的思路和参考。在研究过程中,充分利用 MATLAB、Simulink 等仿真工具进行算法建模与仿真,通过大量的仿真实验验证理论分析的正确性,探索算法的优化空间,为实际工程应用提供了可靠的技术支持。 如下图所示,展示了利用 Simulink 的不同阶QAM调制解调系统误码率对比仿真的模型架构,通过这种方式可以直观地比较算法在相同仿真条件下的性能表现,为算法研究和应用提供有力支持。

img

图:基于matlab和Simulink的不同阶QAM调制解调系统误码率对比仿真模型架构

相关文章:

探秘基带算法:从原理到5G时代的通信变革【一】引言

文章目录 一、引言1.1 研究背景与意义1.2 研究目的与方法1.3 研究内容与创新点 本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/DFT、QAMtiaozhi/解调、QPSK调制/解…...

ES中数据刷新策略refresh

在 Elasticsearch 中,插入数据时的 refresh 参数控制文档在写入后何时对搜索可见,其行为直接影响数据可见性和系统性能。以下是 refresh 参数的三个可选值(true、false、wait_for)的详细说明及适用场景: 1. refreshtr…...

【向量数据库Weaviate】 和Elasticsearch的区别

Weaviate 和 Elasticsearch 是两种不同类型的数据库,设计目标和应用场景有显著差异。以下是它们的核心区别和适用场景的详细对比: 1. 设计目标与核心能力 维度WeaviateElasticsearch核心能力向量数据库 图数据库(语义搜索优先)全…...

【Wireshark 02】抓包过滤方法

一、官方教程 Wireshark 官网文档 : Wireshark User’s Guide 二、显示过滤器 2.1、 “数据包列表”窗格的弹出过滤菜单 例如,源ip地址作为过滤选项,右击源ip->prepare as filter-> 选中 点击选中完,显示过滤器&#…...

【零基础到精通Java合集】第十五集:Map集合框架与泛型

课程标题:Map集合框架与泛型(15分钟) 目标:掌握泛型在Map中的键值类型约束,理解类型安全的键值操作,熟练使用泛型Map解决实际问题 0-1分钟:泛型Map的意义引入 以“字典翻译”类比泛型Map:明确键和值的类型(如英文→中文)。说明泛型Map的作用——确保键值对的类型一…...

三参数水质在线分析仪:从源头保障饮用水安全

【TH-ZS03】饮用水安全是人类健康的重要保障,其质量直接关系到人们的生命健康。随着工业化、城市化的快速发展,水体污染问题日益严峻,饮用水安全面临着前所未有的挑战。为了从源头保障饮用水安全,科学、高效的水质监测手段必不可少…...

Java8-Stream流介绍和使用案例

Java 8 引入了 Stream API,它提供了一种高效且声明式的方式来处理集合数据。Stream 的核心思想是将数据的操作分为中间操作(Intermediate Operations)和终端操作(Terminal Operations),并通过流水线&#x…...

FieldFox 手持射频与微波分析仪

FieldFox 手持射频与微波分析仪 简述 Keysight FieldFox 便携式分析仪可以在非常恶劣的工作环境中,轻松完成从日常维护到深入故障诊断的各项工作。 选择最适合您需求且有强大软件支持的 Keysight FieldFox 配置。 主要特性 特点: FieldFox 分析仪可…...

JQuery学习笔记,点击按钮加载更多的图片

利用点击按钮模拟某京&#xff0c;某宝&#xff0c;滚动页面加载图片的效果&#xff0c;代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>Ajax请求</title></head><body><button id…...

swift4-汇编分析枚举内存布局

一、枚举的内存原理 1.1 常规case enum TestEnum { case test1, test2, test3 } var t TestEnum.test1 t .test2 t .test3枚举是常规的case的情况-是采取一个字节来存枚举变量通过拿到枚举的内存地址&#xff0c;看地址里面存的枚举值情况窥探枚举内存存储情况 var t Te…...

Vue 3 整合 WangEditor 富文本编辑器:从基础到高级实践

本文将详细介绍如何在 Vue 3 项目中集成 WangEditor 富文本编辑器&#xff0c;实现图文混排、自定义扩展等高阶功能。 一、为什么选择 WangEditor&#xff1f; 作为国内流行的开源富文本编辑器&#xff0c;WangEditor 具有以下优势&#xff1a; 轻量高效&#xff1a;压缩后仅…...

Docker安装嵌入框架Text Embeddings Inference (TEI)

Docker安装Text Embeddings Inference (TEI) 1 简单介绍 文本嵌入推理&#xff08;TEI&#xff0c;Text Embeddings Inference &#xff09;是HuggingFace研发的一个用于部署和服务开源文本嵌入和序列分类模型的工具包。TEI兼容OpenAI的嵌入模型的规范。 # 官网地址 https:/…...

【HeadFirst系列之HeadFirst设计模式】第14天之与设计模式相处:真实世界中的设计模式

与设计模式相处&#xff1a;真实世界中的设计模式 设计模式是软件开发中的经典解决方案&#xff0c;它们帮助我们解决常见的设计问题&#xff0c;并提高代码的可维护性和可扩展性。在《Head First设计模式》一书中&#xff0c;作者通过生动的案例和通俗的语言&#xff0c;深入…...

java后端开发day27--常用API(二)正则表达式爬虫

&#xff08;以下内容全部来自上述课程&#xff09; 1.正则表达式&#xff08;regex&#xff09; 可以校验字符串是否满足一定的规则&#xff0c;并用来校验数据格式的合法性。 1.作用 校验字符串是否满足规则在一段文本中查找满足要求的内容 2.内容定义 ps&#xff1a;一…...

【UCB CS 61B SP24】Lecture 22 23: Tree and Graph Traversals, DFS, BFS 学习笔记

本文讲解了二叉树的四种遍历方式&#xff0c;以及如何通过前/后序遍历与中序遍历重建出二叉树&#xff0c;接着介绍了新的非线性数据结构&#xff1a;图&#xff0c;详细讲解了图的存储方式与遍历方式&#xff0c;最后使用 Java 基于邻接表的存储方式实现了图与 DFS、BFS 两种遍…...

Redis100道高频面试题

一、Redis基础 Redis是什么&#xff1f;主要应用场景有哪些&#xff1f; Redis 是一个开源的、基于内存的数据结构存储系统&#xff0c;支持多种数据结构&#xff08;如字符串、哈希、列表、集合等&#xff09;&#xff0c;可以用作数据库、缓存和消息中间件。 主要应用场景&…...

Mac OS Homebrew更换国内镜像源(中科大;阿里;清华)

omebrew官方的源一般下载包之类的会很慢&#xff0c;所以通常我们都是用国内的镜像源来代替&#xff0c;这样会提高我们的效率。Homebrew主要有四个部分组成: brew、homebrew-core 、homebrew-bottles、homebrew-cask。 代码语言&#xff1a;javascript 代码运行次数&#xf…...

excel vlookup的精确查询、模糊查询、反向查询、多列查询

目录 入门 精确查询 模糊查询 反向查询 (搭配 if 函数) 多列查询 (搭配 match 函数) 入门 精确查询 需求: 查找 学生编号是008 所在的班级 操作: 在I2单元格输入公式如下,VLOOKUP(H2,B1:E12,4,FALSE), 得出结果 看一下vlookup 公式每一个参数应该怎么写? 语法: vlookup…...

linux的文件系统及文件类型

目录 一、Linux支持的文件系统 二、linux的文件类型 2.1、普通文件 2.2、目录文件 2.3、链接文件 2.4、字符设备文件: 2.5、块设备文件 2.6、套接字文件 2.7、管道文件 三、linux的文件属性 3.1、关于权限部分 四、Linux的文件结构 五、用户主目录 5.1、工作目录…...

MySQL 安装配置(完整教程)

文章目录 一、MySQL 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL 5.1 初始化 MySQL5.2 启动 MySQL 服务 六、修改 MySQL 密码七、卸载 MySQL八、结语 一、MySQL 简介 MySQL 是一款广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&am…...

C# Unity 唐老狮 No.4 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: 全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体格式,…...

给没有登录认证的web应用添加登录认证(openresty lua实现)

这阵子不是deepseek火么&#xff1f;我也折腾了下本地部署&#xff0c;ollama、vllm、llama.cpp都弄了下&#xff0c;webui也用了几个&#xff0c;发现nextjs-ollama-llm-ui小巧方便&#xff0c;挺适合个人使用的。如果放在网上供多人使用的话&#xff0c;得接入登录认证才好&a…...

R语言绘图:韦恩图

韦恩分析 韦恩分析&#xff08;Venn Analysis&#xff09;常用于可视化不同数据集之间的交集和并集。维恩图&#xff08;Venn diagram&#xff09;&#xff0c;也叫文氏图、温氏图、韦恩图、范氏图&#xff0c;用于显示元素集合重叠区域的关系型图表&#xff0c;通过图形与图形…...

STM32——串口通信 UART

一、基础配置 Universal Asynchronous Receiver Transmitter 异步&#xff0c;串行&#xff0c;全双工 TTL电平 &#xff1a;高电平1 低电平0 帧格式&#xff1a; 起始位1bit 数据位8bit 校验位1bit 终止位1bit NVIC Settings一栏使能接受中断。 之前有设置LCD&#xff0c;…...

【大模型基础_毛玉仁】1.3 基于Transformer 的语言模型

【大模型基础_毛玉仁】1.3 基于Transformer 的语言模型 1.3 基于Transformer 的语言模型1.3.1 Transformer1&#xff09;注意力层&#xff08;AttentionLayer&#xff09;2&#xff09;全连接前馈层&#xff08;Fully-connected Feedforwad Layer&#xff09;3&#xff09;层正…...

靶场(二)---靶场心得小白分享

开始&#xff1a; 看一下本地IP 21有未授权访问的话&#xff0c;就从21先看起 PORT STATE SERVICE VERSION 20/tcp closed ftp-data 21/tcp open ftp vsftpd 2.0.8 or later | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_Cant get dire…...

大学至今的反思与总结

现在是2025年的3月5日&#xff0c;我大三下学期。 自大学伊始&#xff0c;我便以考研作为自己的目标&#xff0c;有时还会做自己考研上岸头部985,211&#xff0c;offer如潮水般涌来的美梦。 但是我却忽略了一点&#xff0c;即便我早早下定了决心去考研&#xff0c;但并没有早…...

【大模型】Llama 3.2 大语言模型初探:模型权重下载

文章目录 一、简介二、权重下载2.1 方法一&#xff1a;Meta 官网申请下载2.2 方法二&#xff1a;使用 hugging face 下载 一、简介 Llama&#xff08;Large Language Model Meta AI&#xff09;是 Meta&#xff08;原 Facebook&#xff09;开发的一系列开源大型语言模型。它的目…...

unity学习63,第2个小游戏:用fungus做一个简单对话游戏

目录 1 目标用fungus做一个简单的剧情对话游戏 1.1 先创建一个新的3D项目 1.2 fungus是什么 1.2.1 怎么获得 1.2 在AssetStore里搜索fungus (插件类)--千万别买收费的错的&#xff01; 1.3 fungus的官网 1.3.1 官网给的3个下载链接&#xff0c;unity的果然已经失效了 …...

笔记:代码随想录算法训练营day36:LeetCode1049. 最后一块石头的重量 II、494. 目标和、474.一和零

学习资料&#xff1a;代码随想录 1049.最后一块石头的重量II 力扣题目链接 思路&#xff1a;如何讲该问题转化为背包问题&#xff1a;还是对半分去碰&#xff0c;对半分去碰碰剩下的就是最小的。然后背包容量就是一半儿&#xff0c;物品重量等于物品价值等于stones[i] 和上…...

Elasticsearch:解锁深度匹配,运用Elasticsearch DSL构建闪电般的高效模糊搜索体验

目录 Elasticsearch查询分类 叶子查询 全文检索查询 match查询 multi_match查询 精确查询 term查询 range查询 复杂查询 bool查询简单应用 bool查询实现排序和分页 bool查询实现高亮 场景分析 问题思考 解决方案 search_after方案(推荐) point in time方案 方案…...

Android实现漂亮的波纹动画

Android实现漂亮的波纹动画 本文章讲述如何使用二维画布canvas和camera、矩阵实现二、三维波纹动画效果&#xff08;波纹大小变化、画笔透明度变化、画笔粗细变化&#xff09; 一、UI界面 界面主要分为三部分 第一部分&#xff1a;输入框&#xff0c;根据输入x轴、Y轴、Z轴倾…...

qt实践教学(编写一个代码生成工具)持续更新至完成———

前言&#xff1a; 我的想法是搭建一个和STM32cubemux类似的图形化代码生成工具&#xff0c;可以把我平时用到的代码整合一下全部放入这个软件中&#xff0c;做一个我自己专门的代码生成工具&#xff0c;我初步的想法是在下拉选框中拉取需要配置的功能&#xff0c;然后就弹出对…...

【数据结构】什么是栈||栈的经典应用||分治递归||斐波那契问题和归并算法||递归实现||顺序栈和链栈的区分

文章目录 &#x1f967;栈的初步理解&#xff1a;&#x1f967;易错&#xff1a;如何判断栈满&#x1f967;栈满理解&#x1f967;栈的基本运算&#x1f4da;栈操作的伪代码逻辑&#xff08;顺序和链栈&#xff09;&#x1f4d5;顺序栈运算实现&#xff1a;顺序栈的表示&#x…...

vue3(笔记)4.0 vueRouter.导航守卫.ElementPuls知识点

---vueRouter 创建路由: 完整写法(懒加载): 默认写法与vue2一致: 导入 然后 写成component: LoginPage import { createRouter, createWebHistory } from vue-routerconst router createRouter({history: createWebHistory(import.meta.env.BASE_URL), routes: [{path:/lo…...

[数字图像处理]实验三:直方图增强

目录 一、实验目的 二、实验原理 三、实验内容&#xff08;附代码&#xff09; 四、实验结果及分析 五、实验小结 一、实验目的 1.了解图像增强的意义和目的 2.掌握各种图像增强的基本原理和方法 3.使用MATLAB实现图像增强 二、实验原理 图像增强方法从增强的作用域…...

图像分类项目1:基于卷积神经网络的动物图像分类

1、选题背景及动机 在现代社会中&#xff0c;图像分类是计算机视觉领域的一个重要任务。动物图像分类具有广泛的应用&#xff0c;例如生态学研究、动物保护、农业监测等。通过对动物图像进行自动分类&#xff0c;可以帮助人们更好地了解动物种类、数量和分布情况&#xff0c;从…...

并发编程(线程池)面试题及原理

1. 执行原理/核心参数 1.1 核心参数 核心参数 corePoolSize 核心线程数目maximumPooISize 最大线程数目 &#xff08;核心线程&#xff0b;救急线程的最大数目&#xff09;keepAliveTime 生存时间- 救急线程的生存时间&#xff0c;生存时间内没有新任务&#xff0c;此线程资…...

初次使用 IDE 搭配 Lombok 注解的配置

前言 在 Java 开发的漫漫征程中&#xff0c;我们总会遇到各种提升效率的工具。Lombok 便是其中一款能让代码编写变得更加简洁高效的神奇库。它通过注解的方式&#xff0c;巧妙地在编译阶段为我们生成那些繁琐的样板代码&#xff0c;比如 getter、setter、构造函数等。然而&…...

云原生时代的技术桥梁

在数字化转型的大潮中&#xff0c;企业面临着数据孤岛、应用间集成复杂、高成本与低效率等问题。这些问题不仅阻碍了企业内部信息的流通和资源的共享&#xff0c;也影响了企业对外部市场变化的响应速度。当前&#xff0c;这一转型过程从IT角度来看&#xff0c;已然迈入云原生时…...

2024四川大学计算机考研复试上机真题

2024四川大学计算机考研复试上机真题 2024四川大学计算机考研复试机试真题 历年四川大学计算机考研复试机试真题 在线评测&#xff1a;https://app2098.acapp.acwing.com.cn/ 分数求和 题目描述 有一分数序列&#xff1a; 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前 …...

【GPU使用】如何在物理机和Docker中指定GPU进行推理和训练

我的机器上有4张H100卡&#xff0c;我现在只想用某一张卡跑程序&#xff0c;该如何设置。 代码里面设置 import os # 记住要写在impot torch前 os.environ[CUDA_VISIBLE_DEVICES] "0, 1"命令行设置 export CUDA_VISIBLE_DEVICES0,2 # Linux 环境 python test.py …...

汽车免拆诊断案例 | 2023款丰田雷凌汽油版车行驶中偶尔出现通信故障

故障现象  一辆2023款丰田雷凌汽油版车&#xff0c;搭载1.5 L发动机&#xff0c;累计行驶里程约为4700 km。车主反映&#xff0c;行驶中偶尔组合仪表上的发动机转速信号丢失&#xff0c;转向变重&#xff0c;且有“闯车”感&#xff0c;同时车辆故障警报蜂鸣器鸣响。 故障诊断…...

千里科技亮相吉利AI智能科技发布会,共启“AI+车”新纪元

今天&#xff0c;在三亚举行的吉利AI智能科技发布会上&#xff0c;千里科技董事长印奇发表了主题为《从“车AI”到“AI车”》的演讲。印奇重点分享了对于“AI车”未来趋势的判断&#xff0c;并重点介绍了在吉利AI科技生态体系下&#xff0c;围绕智驾、智舱等领域的创新合作。基…...

汽车零部件厂如何选择最适合的安灯系统解决方案

在现代制造业中&#xff0c;安灯系统作为一种重要的生产管理工具&#xff0c;能够有效提升生产线的异常处理效率&#xff0c;确保生产过程的顺畅进行。对于汽车零部件厂来说&#xff0c;选择一套适合自身生产需求的安灯系统解决方案尤为重要。 一、安灯系统的核心功能 安灯系统…...

spring boot + vue 搭建环境

参考文档&#xff1a;https://blog.csdn.net/weixin_44215249/article/details/117376417?fromshareblogdetail&sharetypeblogdetail&sharerId117376417&sharereferPC&sharesourceqxpapt&sharefromfrom_link. spring boot vue 搭建环境 一、浏览器二、jd…...

spaCy 入门:自然语言处理的高效工具

spaCy 入门&#xff1a;自然语言处理的高效工具 引言 spaCy 是一个功能强大的开源 Python 库&#xff0c;专注于工业级的自然语言处理&#xff08;NLP&#xff09;。它以其高效的性能、简洁的 API 和对多种语言的支持而闻名。无论是进行文本分析、信息提取还是构建智能聊天机…...

Stable Diffusion模型高清算法模型类详解

Stable Diffusion模型高清算法模型类详细对比表 模型名称核心原理适用场景参数建议显存消耗细节增强度优缺点4x-UltraSharp残差密集块(RDB)结构优化纹理生成真实人像/建筑摄影重绘幅度0.3-0.4&#xff0c;分块尺寸768px★★★★★☆皮肤纹理细腻&#xff0c;但高对比场景易出现…...

数据结构:八大排序(冒泡,堆,插入,选择,希尔,快排,归并,计数)详解

目录 一.冒泡排序 二.堆排序 三.插入排序 四.选择排序 五.希尔排序 六.快速排序 1.Lomuto版本&#xff08;前后指针法&#xff09; 2.Lomuto版本的非递归算法 3.hoare版本&#xff08;左右指针法&#xff09; 4.挖坑法找分界值&#xff1a; 七.归并排序 八.计数排序…...

QT-对象树

思维导图 写1个Widget窗口&#xff0c;窗口里面放1个按钮&#xff0c;按钮随便叫什么 创建2个Widget对象 Widget w1,w2 w1.show() w2不管 要求&#xff1a;点击 w1.btn ,w1隐藏&#xff0c;w2显示 点击 w2.btn ,w2隐藏&#xff0c;w1 显示 #include <QApplication> #inc…...