5G网络架构及技术(二):OFDM一

ToDo: 等把这些讲义看完后得单开一个文章整理思维导图
  该部分由于内容比较重要,OFDM是5G物理层的基础,但学习时直接跳到5G OFDM去看它的那些参数设置感觉没什么意义,还得从发展的角度进行学习,先从最先用到OFDM的WiFi协议开始,WiFi协议还是比LTE和5G NR简单得多,所以拟分为14个部分来介绍OFDM基础:
  OFDM一:OFDM基础框架复习,基于802.11a
  OFDM二:载波分配、CFO估计技术、OFDM采样检测和同步
  OFDM三:Viterbi译码
  OFDM四:Puncturing打孔、交织
  OFDM五:Pilots and Pilot Tracking
  OFDM六:Direct Conversion Receiver直接变频接受器
  OFDM七:ADC Requirements
  OFDM八:Adjacent Channel Interference
  OFDM九:Signal to Noise Ratio and EbN0
  OFDM十:Transmitter
  OFDM十一:Phase Noise
  OFDM十二:ISI Decision Feedback
  OFDM十三:Reed Solomon Coding
  OFDM十四:Doppler
然后用四个部分来总体性复习OFDMA:
  OFDM十五:OFDMA
  OFDM十六:IEEE 802.16 Channel Models
  OFDM十七:Scalable OFDMA
  OFDM十八:IEEE 802.16 OFDMA
复习完OFDM,才能进入MIMO-OFDM的复习,该部分拟记录8篇笔记以供自己复习:
  MIMO-OFDM一:MIMO OFDM Multipath Fading Channel, Channel H Matrix Formulation
  MIMO-OFDM二:MIMO Equalizer (Zero Forcing), Noise Enhancement, MIMO Performance
  MIMO-OFDM三:MMSE and ML Detection
  MIMO-OFDM四:SVD and Closed Loop MIMO Systems
  MIMO-OFDM五:Transmit Diversity, Alamouti Scheme, CDD
  MIMO-OFDM六:Training for per Carrier H Matrix Estimation
  MIMO-OFDM七:802.11n Draft and Receiver Architecture
  MIMO-OFDM八:AGC Refinement for MIMO OFDM

该系列仅仅到802.11n协议 (Wi-Fi 4)2.4/5GHz MIMO,此处mark一篇blog,是关于【802.11a/b/g/n/ac/ax协议是什么?与Wi-Fi 4/5/6有什么之间有什么关联】的

参考资料:
[1] OFDM/OFDMA Audio Visual Tutorial for WiFi and WiMAX
[2] MIMO OFDM Audio Visual Tutorial
[3] Theodore S. Rappaport, Wireless Communications Principles and Practice, IEEE Press/Prentice Hall PTR, Upper Saddle River. New Jersey, 1996
[4] A. Santamaria Lopez-Hernandez (Editors), Wireless LAN Systems, Artech House, 685 Canton Street, Norwood, MA 02062

目录

  • 一、OFDMA在无线通信中的位置
  • 二、OFDM原理里一些需要回忆的亮点
    • 2.1 多径信道建模(Multipath模块)
      • 2.1.1 多径时延扩展
      • 2.1.2 多普勒频移
      • 2.1.3 实际多径信道的仿真
    • 2.2 OFDM循环前缀
    • 2.3 OFDM频域均衡
  • 三、从IEEE 802.11a的组织框架看OFDM帧的产生需要哪些参数
    • 3.1 从PLCP协议的基本数据单元PPDU(PLCP Protocol Data Unit)到OFDM帧
    • 3.2 Signal Field
    • 3.3 Service Field
    • 3.4 Pad Bits

一、OFDMA在无线通信中的位置

  以 IEEE 802.11a(WLAN中的一种标准,IEEE 802.11系列中最早的WiFi标准之一)为例,考虑一个OFDM Steady State Model(描述了系统在稳定状态下的行为或特性的模型),No Training / Acquisition/ Cyclic Prefix"(无训练/采集/循环前缀):

  • No Training(无训练):在某些情况下,OFDM系统中不需要通过训练信号来估计信道特性或同步系统。相反,系统可能会采用其他方法来实现同步和信道估计,例如使用先验知识或自适应算法。
  • No Acquisition(采集):在数字通信中,采集通常指的是接收端收集有关信号的信息,如同步时钟、频率偏移等,以便正确解码和处理信号。在某些情况下,OFDM系统可能需要进行采集以确保正确的数据解调。
  • No Cyclic Prefix(循环前缀):循环前缀是一种在OFDM系统中用于抵消多径干扰的技术。在发送每个OFDM符号之前,一些符号周期的数据会被复制并附加到OFDM符号的末尾。接收端使用这些循环前缀来抵消多径引起的符号间干扰。

在这里插入图片描述

图一 ∗ 802.11 a ∗ O F D M 传输简化示意图, O F D M 的关键在于 I F F T & F F T 图一*802.11a *OFDM传输简化示意图,OFDM的关键在于IFFT\&FFT 图一802.11aOFDM传输简化示意图,OFDM的关键在于IFFT&FFT
  图一协议中OFDM的本质是通过将调制数据通过IFFT+D2A,实现将调制数据加载到正交的子载波上,所以图一中求和过程之前的并行转串行和相位变化是符合QPSK的后半部分调制过程的。在[1]中详细讲述了从时域连续傅里叶变化实现OFDM,到通过时域采样推到出的时域离散傅里叶变换DFT,再到快速傅里叶变换FFT(相比DFT复杂度 O ( N 2 ) O(N^2) O(N2),FFT复杂度降低为 O ( N l o g 2 N ) O(Nlog_2N) O(Nlog2N))。
  在实际中,整个OFDM调制前还有必不可少的信道编码过程,如下图 IEEE 802.16-2004 标准(也称为 WiMAX 标准)中“Subscriber Station”(用户站)的数据块调制示意图:在这里插入图片描述
图二 ∗ I E E E 802.16 − 2004 标准 ∗ S S 侧完整 O F D M 传输简化示意图, O F D M 的关键在于 I F F T & F F T 图二*IEEE 802.16-2004 标准 *SS侧完整OFDM传输简化示意图,OFDM的关键在于IFFT\&FFT 图二IEEE802.162004标准SS侧完整OFDM传输简化示意图,OFDM的关键在于IFFT&FFT

总结:OFDM在无线传输中,位于数字调制(如QPSK、QAM)之前,时域上每个OFDM符号会承载N个数字调制符号的信息。但是这些信息是由采样点的形式给出,采样点数量为 N s N_s Ns

二、OFDM原理里一些需要回忆的亮点

  该部分仅回顾多径信道建模OFDM循环前缀OFDM频域均衡(FFT部分:傅里叶变换→DFT→FFT的推导跳过了),尽量让看这篇文章进行复习的人在知道OFDM是来解决什么问题的,为什么能解决。

2.1 多径信道建模(Multipath模块)

  多径衰落信道的建模和仿真,两个重要的参数是多径扩展和多普勒带宽。尽管多径效应只导致多径扩展/时间色散/频率选择性衰落,但往往多径衰落信道是同时包含频率选择性衰落和时间选择性衰落,所以由于多普勒频移导致的时间选择性衰落也需要在该部分回顾。

2.1.1 多径时延扩展

  该部分从Two Ray Multipath Model入手,假设二径信道,反射路径相对于直射路径的多径时延大小为 τ d \tau_d τd
在这里插入图片描述
则根据该信道的频谱可以得出以下结论:

  1. 二径信道存在周期性深衰落
  2. 深衰落的幅度为 4 α 4\alpha 4α,和反射路径的衰减因子 α \alpha α成正比,因为波峰: 1 + α 2 + 2 α 1+\alpha^2+2\alpha 1+α2+2α,波谷: 1 + α 2 − 2 α 1+\alpha^2-2\alpha 1+α22α
  3. 频谱深衰落的周期 Δ f = 1 τ d \Delta f=\frac{1}{\tau_d} Δf=τd1,表明如果一个信号频谱宽度超过 Δ f \Delta f Δf则经过该信道冲击响应后,一定会在频谱上发生深度衰落。

  如果扩展到多径信道,显然,每条多径(的时延和衰落因子)也会造成信道冲击响应的频谱的周期性深衰落(此时这个周期大小就是多个多径时延导致频谱深衰落的周期的最小公倍数)。但是往往由于这个周期很大,信号的频谱只占其中一部分,就体现为频率选择性衰落。
  多径时延扩展(Multipath Delay Spread)是由于信号在传播过程中经历多条不同路径到达接收器,导致每条路径的信号传播延迟不同,从而使得接收到的信号在时间上存在一定的扩展。“扩展”的含义是指信号的传播延迟在时间上的展宽,即使原本在理想情况下信号的到达时间应该是集中在某一时刻,由于多径效应,实际接收到的信号会在时间上产生扩展,表现为接收到的信号在时间轴上具有一定的宽度,而不是集中在一个点上。从时域上看,如果一个符号在传输时被时延到下一个符号,那么意味着最大的多径时延扩展Tmax大于了符号周期Ts。

看到这里应该知道:

  1. 多径时延为什么导致频率选择性衰落。
  2. 为什么多径扩展是多径信道的一个重要参数。

  然后解决如何建模多径时延扩展模型(从二径信道中可以看出,如果能解决多径时延扩展的大小和每条多径上的衰落因子大小,就能完成建模),搞通信的前辈们早就发现下列情况都会导致多径效应的产生:
在这里插入图片描述
  前辈们通过大量室内外环境测试实验[3,4]发现,由于信道的随机性(散射反射衍射),可以将所有的多径脉冲时延(即多径实验扩展)建模为高斯分布。其次,关于路径的衰减因子,前辈们发现了自由空间损耗方程free space loss = ( 4 π d λ ) 2 = ( 4 π d f c ) 2 =\left(\frac{4 \pi d}{\lambda}\right)^2=\left(\frac{4 \pi d f}{c}\right)^2 =(λ4πd)2=(c4πdf)2:其中d in meters, f in GHz。损耗与距离d的平方成正比,和频率f的平方成正比,如果转化为对数形势,则 F S L ( d B ) ≈ 20 log ⁡ 10 ( d ) + 20 log ⁡ 10 ( f ) + 32.45 \mathrm{FSL}(\mathrm{dB}) \approx 20 \log _{10}(d)+20 \log _{10}(f)+32.45 FSL(dB)20log10(d)+20log10(f)+32.45。即使是在更复杂的室内环境,信号的路径损耗也可以近似描述为指数衰减的模式(路径损耗的对数与距离之间的关系呈现线性,而路径损耗与距离之间的关系则呈现指数关系),如下图所示:
在这里插入图片描述
考虑到无线电以不变的光速传播,多径路径长度和时延扩展是正相关的,所以每条多径的衰减因子应该同随着其时延扩展的增大呈现指数性的变化。

看到这里应该知道:

  1. 多径信道建模时,多径时延扩展可以建模为高斯统计模型,所以建模后的仿真可以从正态分布中抽取多径时延。
  2. 考虑多径衰减因子同多径时延的关系,建模时应该保证功率时延曲线遵守指数衰减。

  那么建模时,正态分布的参数如何获取呢?此时就引入了均方超余时延(Mean Excess Delay)和均方根时延扩展(RMS Delay Spread)

  • 均值超余时延(信号到达时间相对于直射路径的时延平均值):平均时延均值是功率*时延的积分在功率上的平均。 τ ˉ = ∑ k α k 2 τ k ∑ k α k 2 。 \bar{\tau}=\frac{\sum_k \alpha_k^2 \tau_k}{\sum_k \alpha_k^2}。 τˉ=kαk2kαk2τk
  • 均方根时延扩展,也就是时延的均方根,先对时延的平方计算功率平均,然后减去平均时延的平方(就是方差 σ τ = τ 2 ‾ − ( τ ˉ ) 2 τ 2 ‾ = ∑ k α k 2 τ k 2 ∑ k α k 2 \begin{aligned} \sigma_\tau & =\sqrt{\overline{\tau^2}-(\bar{\tau})^2} \\ \overline{\tau^2} & =\frac{\sum_k \alpha_k^2 \tau_k^2}{\sum_k \alpha_k^2} \end{aligned} σττ2=τ2(τˉ)2 =kαk2kαk2τk2

显然,如果对一个多径信道进行多次测量获取这俩参数,就能逆向完成对该多径信道的统计性建模。下图是一个多径信道建模案例的功率-时延曲线:在这里插入图片描述

2.1.2 多普勒频移

  假设UE/发送端运动方向与接收端连线之间的夹角为 θ \theta θ,且二者相对运动速度为v,则信号发送频率和信号接收频率之间: f d ≡ f R − f T = f d = v c f R cos ⁡ θ \mathrm{f}_{\mathrm{d}} \equiv \mathrm{f}_{\mathrm{R}}-\mathrm{f}_{\mathrm{T}}=f_d=\frac{v}{c} f_R \cos \theta fdfRfT=fd=cvfRcosθ所以说多普勒效应导致了频率扩展。
  类比多径效应的推导,频率扩展也会导致时域选择性衰落,这里就不给出推导流程了。在频率扩展的情况下,信号可以看做在传播过程中经历了多个不同频率成分的传播路径。由于不同频率的信号在传播过程中会受到不同程度的衰减和相位变化,导致不同频率成分的信号到达接收器的时间可能存在差异。这种时间上的差异会导致信号的时域结构发生变化,即信号的不同部分在时间上发生错位,从而产生时域选择性衰落。时域的相干时间 T c T_c Tc和多普勒频谱带宽 B d B_d Bd成反比(从多普勒频移 f d f_d fd B d B_d Bd大致成正比,教材上给的正比关系暂时没找到论文文献)。

看到这里应该知道:
1.如果信道带宽 B s > B d B_s >B_d BsBd(即符号周期小于相干时间了),相当于相干时间段内会有≥2个符号同时通过信道。因为信道是和其中的信息进行卷积运算,所以后来的符号会对前面的符号产生影响,导致了失真。所以也存在符号间干扰。

  多普勒效应在无线通信中由于移动引起的频率偏移,这会导致接收到的信号的频率与发送信号的频率不匹配。这种频率偏移可能会导致符号间干扰和定时误差的问题:

  • 符号间干扰:多普勒效应引起的频率偏移会导致相邻符号之间的频率不匹配。在接收端,如果未能正确地估计到这种频率偏移并对其进行补偿,那么接收到的信号会发生频率偏移,导致相邻符号之间的频率不一致,从而造成符号间干扰。这种干扰会影响到信号的解调和解码,降低系统性能。

  • 定时误差:多普勒效应也会导致定时误差。当发送端和接收端之间存在相对运动时,由于多普勒效应引起的频率偏移,接收到的信号的频率与发送信号的频率不同。如果接收端的定时不准确,即接收端未能准确地估计到信号的到达时间,那么就会导致接收到的信号在时域上出现偏移,从而引起定时误差。定时误差会影响到接收端正确地解调和解码信号,降低系统的性能。

2.1.3 实际多径信道的仿真

  考虑多径效应和多普勒效应后,统计性多径信道往往直接建模为产生特定多普勒功率谱密度的瑞利过程

2.2 OFDM循环前缀

  循环前缀的本质是在不破坏正交性的前提下,增长符号周期 [^1] ,使其尽可能大于多径时延扩展(避免由于多径引起的符号间干扰)和相干时间(避免由于多普勒频移引起的符号间干扰)。

[^1] 添加循环前缀会增加OFDM符号的长度,从而降低了每个符号的有效传输速率。这种由于循环前缀引起的速率损失称为循环前缀带来的信噪比损失(SNR Loss Due to Cyclic Prefix)。这种损失主要是由于在每个OFDM符号中分配给循环前缀的额外采样点数导致的。所以在设计OFDM系统时,需要权衡循环前缀的长度,以平衡符号间干扰的抵消效果和频谱利用率之间的关系。

  要避免干扰,首先要量化干扰,所以引入了EVM(Error Vector Magnitude),假设一共传输了M个QAM符号:在这里插入图片描述
然后通过仿真得到了两径时延扩展时EVM同 τ d \tau_d τd之间的关系图:在这里插入图片描述

看到这里应该知道:多径时延越大,噪声向量幅值EVM就越大。

  为了解决这一问题,就引入了循环前缀,但循环前缀的引入不仅仅解决了符号间干扰,其还提供了对synchronization阶段OFDM系统同步中的定时误差的容忍度。

  在OFDM系统中,接收端需要准确地知道每个符号的起始时间,以便正确地解调和译码接收到的信号。然而,由于各种因素,如时钟漂移、多普勒效应等,可能导致接收端的定时误差。因为循环前缀中的符号是之前符号周期的副本,所以即使存在定时误差,接收端仍然可以利用循环前缀中的符号来正确地解调和译码接收到的信号。
TODO:尽管此处由于循环性没有丢失信息,但如何恢复原信息呢?怎么把错位的前面的信息搬移到后面?怎么知道从哪里开始搬移?

通过估计定时误差或者利用同步序列的特征来实现。

  引入循环前缀后,数据速率可用如下公式计算(下图中Tg:Ts=1:8,表示64个样本添加了16个样本前缀),显然循环前缀影响数据速率是通过影响Ts的长度实现的:
在这里插入图片描述

用户站的最大吞吐量和多径时延所需添加的循环前缀长度是相互权衡的。

2.3 OFDM频域均衡

  802.11a OFDM的前导码(preamble)由两部分组成:短前导码(Short Preamble)和长前导码(Long Preamble)。

  • 短前导码(Short Preamble):包含10个OFDM符号,用于接收器粗同步和粗信道估计。
  • 长前导码(Long Preamble)/长训练序列(LTS):长前导码用于精确同步和频率偏移校正,包含了2个OFDM符号。这个长前导码包含了同步序列(使接收器可以确定信号的开始位置,并对时钟偏移进行校正)和一个长训练序列(用于接收器更精确的同步和频率偏移校正)。

在这里插入图片描述
t i , 1 ≤ i ≤ 10 t_i, 1 \leq i \leq 10 ti,1i10表示短前导码中的10个OFDM符号,本质是20MHz带宽传输时的16个重复采样值。(长短前导码之间是一个采样长度为32的保护序列guard interval)。长前导码中的 T i , i ∈ { 1 , 2 } T_i,i \in \{1,2\} Ti,i{1,2}则是两个相同的序列,都会用于均衡接受的载波:
在这里插入图片描述
   T i T_i Ti同步序列在接收端是已知原发送序列状况的,接收端通常会将两个 T i , i ∈ { 1 , 2 } T_i,i \in \{1,2\} Tii{1,2}训练序列提取出来,并对它们进行平均化,以降低估计误差。然后,平均后的序列经过FFT变换以得到频域上的信道估计(本质上是每个子载波上的衰落因子),平均后的值进行FFT并整流后得到噪声损失后的QAM符号序列。这个序列和后续接受的Signal、Data的FFT结果进行补偿即实现了信道均衡。——迫零均衡原理

三、从IEEE 802.11a的组织框架看OFDM帧的产生需要哪些参数

  在3.1中介绍802.11a协议基本数据单元PPDU的框架,PPDU中的参数定义了如何去生成OFDM帧。在3.2~3.5中介绍PPDU中的重要字段含义及其对OFDM帧的影响。

3.1 从PLCP协议的基本数据单元PPDU(PLCP Protocol Data Unit)到OFDM帧

PLCP(Physical Layer Convergence Protocol,物理层汇聚协议)
在802.11无线局域网中,PPDU通常会被封装在一个或多个OFDM帧中,并通过OFDM技术在无线介质上传输。下图显示了PPDU的结构形式:
在这里插入图片描述

  在使用OFDM作为物理层技术的系统中,例如IEEE 802.11(Wi-Fi)、LTE、WiMAX等,OFDM帧通常是最基本的物理层传输单元之一。一个OFDM帧通常包含了帧头、数据部分和尾部,帧头包含了同步和控制信息,而数据部分则包含了用户数据。 OFDM帧的长度和结构会根据不同的系统和标准而有所不同。

  PLCP协议是物理层汇聚过程(发送端的PLCP将数据帧从MAC层传递到物理层进行调制和发送,接收端的PCLP从物理层接收调制后的信号,并将其传递给MAC层进行解调和处理):

  • PLCP Preamble:由12个符号组成
  • Signal (SIGNAL)(信号字段):包含了一些物理层相关的参数,如数据速率、信道带宽、编码方式等。
    • Rate(4bits):提供了OFDM符号编码时使用的数据速率
    • Length(12bits):指示数据帧的大小,以便接收方正确地接收和解析整个数据帧。
  • DATA(可变的OFDM符号数量)
    • SERVICE(16bits):表示不同类型的服务
    • PSDU(Physical Layer Service Data Unit):物理层服务数据单元
    • Tail(6bits):由于协议中卷积编码器约束长度为7,所以移位寄存器个数为6.

3.2 Signal Field

在这里插入图片描述
SIGNAL TAIL是用于卷积编码器的移位寄存器归位的。

3.3 Service Field

在这里插入图片描述

  • Scrambler Initialization:初始化扰码器(Scrambler),指定了扰码器的初始状态。扰码器是在发送端用于在数据传输过程中添加伪随机序列以增加数据的随机性,以减少可能存在的周期性干扰。
  • Reserved SERVICE Bits:这是保留字段,用于未来可能的扩展或其他用途。

3.4 Pad Bits

  • N C B P S N_{CBPS} NCBPS: Number of Coded Bits per Symbol (Rate Dependent),这个参数表示了在物理层传输过程中每个调制符号所携带的编码比特数。
  • N D B P S N_{DBPS} NDBPS: Number of Data Bits per Symbol (Rate Dependent),表示了在物理层传输过程中每个调制符号所携带的数据比特数。数据比特数指的是实际携带有效数据的比特数,不包括校验位等冗余信息。 N SYM  =  Ceiling  ( ( 16 + 8 ×  LENGTH  + 6 ) / N DBPS  ) N DATA  = N SYM  × N DBPS  N PAD  = N DATA  − ( 16 + 8 ×  LENGTH  + 6 ) \begin{aligned} & \mathrm{N}_{\text {SYM }}=\text { Ceiling }\left((16+8 \times \text { LENGTH }+6) / \mathrm{N}_{\text {DBPS }}\right) \\ & \mathrm{N}_{\text {DATA }}=\mathrm{N}_{\text {SYM }} \times \mathrm{N}_{\text {DBPS }} \\ & \mathrm{N}_{\text {PAD }}=\mathrm{N}_{\text {DATA }}-(16+8 \times \text { LENGTH }+6) \end{aligned} NSYM = Ceiling ((16+8× LENGTH +6)/NDBPS )NDATA =NSYM ×NDBPS NPAD =NDATA (16+8× LENGTH +6)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS-属性

📚详见 W3scholl,本篇只做快速思维索引。 CSS 背景 用于定义元素的背景效果。 background-colorbackground-imagebackground-positionbackground-repeatbackground-attachment background-color background-color 属性指定元素的背景色。 h1 {back…

专题【链表】【考试题】刷题日记

题目列表 考试题(22题) 2024.04.04 146. LRU 缓存 707. 设计链表 138. 随机链表的复制 160. 相交链表 622. 设计循环队列 109. 有序链表转换二叉搜索树 460. LFU 缓存 355. 设计推特 725. 分隔链表 2487. 从链表中移除节点 日常复习题 876. 链表的中…

机器学习(理论第一课)

一、理解人工智能、机器学习、深度学习、强化学习? 人工智能、机器学习和深度学习之间存在递进关系,它们的覆盖范围逐层递减。 **人工智能(Artificial Intelligence,AI)**是最宽泛的概念,旨在研究、开发用于…

好物周刊#49:字幕交流网站

https://yuque.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. Starship 轻量、迅速、可无限定制的高颜值终端,可用于各种 Shell 的提示符。 2. spring cloud shop …

Web3 游戏周报(3.24-3.30)

【3.24-3.30】Web3 游戏行业动态: Web3 开发平台 Mirror World 在 Solana 上推出首个游戏 rollup 链 NFT 卡牌游戏 Parallel 完成 3,500 万美元融资,Solana Ventures 等参投 加密游戏开发公司 Gunzilla Games 完成 3,000 万美元融资 Telegram 游戏 No…

【C语言自定义类型之----结构体,联合体和枚举】

一.结构体 1.结构体类型的声明 srruct tag {nemer-list;//成员列表 }varible-list;//变量列表结构体在声明的时候,可以不完全声明。 例如:描述一个学生 struct stu {char name[20];//名字int age;//年龄char sex[20];//性别 };//分号不能省略2.结构体…

静态模板编译:提高Web性能的利器

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

SpringBoot3整合RabbitMQ之二_简单队列模型案例

SpringBoot3整合RabbitMQ之二_简单队列模型案例 文章目录 SpringBoot3整合RabbitMQ之二_简单队列模型案例1. 简单队列模型1. 消息发布者1. 创建简单队列的配置类2. 发布消费Controller 2. 消息消费者3. 输出结果 1. 简单队列模型 简单队列模型就是点对点发布消息,有…

(二)小案例银行家应用程序-创建DOM元素

● 上图的数据很明显是从我们账户数组中拿到了,我们刚刚学习了forEach,所以我们使用forEach来创建我们的DOM元素; const displayMovements function (movements) {movements.forEach((mov, i) > {const type mov > 0 ? deposit : w…

Nacos 入门篇---客户端如何发起服务注册?怎么发送服务心跳的(二)

一、引言 上个章节我们简单学习和使用了下Nacos服务自动注册,本文就来分析下Nacos客户端自动注册服务是怎么实现的~ 二、目录 目录 一、引言 三、Nacos 源码编译 1.1 拉取代码 1.2 运行起来 四、客户端使用版本选择 五、Nacos客户端项目启动为什么会…

c++的学习之路:14、list(1)

本章讲一下如何使用list 一、list介绍 首先还是看一看官方文档的介绍如下图,如下方五点: 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链…

阿里微服务质量保障系列:域内测试

进入阿里之前,我就职的公司所在部门的产品都是单体应用,例如第一家公司是做投顾平台的,第二家公司所在的团队是做在线教育的,负责的产品是内容生产平台。投顾平台这个产品是服务于券商投顾员工的,属于券商内部应用&…

公开课学习——仿抖音直播平台

文章目录 直播抖音的直播原理Java继承直播客户端工具: ffmpeg客户端和网页集成CDN网络——性能提升关键——边缘计算 实时聊天——IM系统怎么实现?——websocketIM系统消息如何转发?直播场景IM系统是什么样子? 直播 抖音的直播原…

R语言实现:统计学及计量专业中的多种平均值计算方式

平均值在计量专业和统计学中有着广泛的应用如:描述数据集中趋势、比较不同组数据、评估数据的代表性、决策和判断、回归分析概率统计与财务分析等。此外,在计量专业中,平均值还被广泛应用于各种测量和校准过程中,以确保测量结果的…

34.Python从入门到精通—Python3 正则表达式检索和替换

34.从入门到精通:Python3 正则表达式检索和替换 repl 参数是一个函数 正则表达式对象 正则表达式修饰符 - 可选标志 正则表达式模式* 正则表达式实例 检索和替换repl 参数是一个函数正则表达式对象正则表达式修饰符 - 可选标志正则表达式模式*正则表达式实例 检索和…

动规训练4

目录 一、买股票的最佳实际含冷冻期 1、题目解析 2、算法原理 a状态表示方程 b状态转移方程 c初始化 d填表顺序 e返回值 3、代码 4、感想 二、买股票的最佳时机函手续费 1、题目解析 2、算法原理 a状态表示方程 b状态转移方程 c初始化 d填表顺序 e返回值 3、…

STM3定时器输入捕获、超声波测距

1、超声波测距模块介绍 1、HC-SR04共四个引脚:VCC、GND、Trig、Echo,如下图 2、使用 1、通过gpio口向Trig引脚发送一个脉冲信号。 2、HC-SR04接收到脉冲信号后,就会向外发送一段超声波,模块会将echo拉高。 …

Web CSS笔记3

一、边框弧度 使用它你就可以制作盒子边框圆角 border-radius:1个值四个圆角值相同2个值 第一个值为左上角与右下角,第二个值为右上角与左下角3个值第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角4个值 左上角,右…

舞蹈网站制作分享,舞蹈培训商城网站设计案例分享,wordpress主题分享

嘿,朋友们!今天我要跟你们唠一唠一个超级酷炫的舞蹈培训商城网站设计案例。 咱先说说这个网站的目标哈,那就是得让喜欢舞蹈的小伙伴们能够轻轻松松找到自己心水的课程和商品。 那制作过程都有啥呢?别急,听我慢慢道来。…

c# wpf LiveCharts 绑定 多线条 简单试验

1.概要 c# wpf LiveCharts 绑定 多线条 简单试验 2.代码 <Window x:Class"WpfApp3.Window4"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http:…