探秘基带算法:从原理到5G时代的通信变革【九】QPSK调制/解调
文章目录
- 2.8 QPSK 调制 / 解调
- 简介
- QPSK 发射机的实现与原理
- QPSK 接收机的实现与原理
- QPSK 性能仿真
- QPSK 变体分析
本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/DFT、QAMtiaozhi/解调、QPSK调制/解调。其他博客链接如下:
- 探秘基带算法:从原理到5G时代的通信变革【一】引言
- 探秘基带算法:从原理到5G时代的通信变革【二】Viterbi解码
- 探秘基带算法:从原理到5G时代的通信变革【三】Turbo 编解码
- 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(一)
- 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(二)
- 探秘基带算法:从原理到5G时代的通信变革【五】CORDIC算法
- 探秘基带算法:从原理到5G时代的通信变革【六】CRC 校验
- 探秘基带算法:从原理到5G时代的通信变革【七】FFT/DFT
- 探秘基带算法:从原理到5G时代的通信变革【八】QAM 调制 / 解调
- 探秘基带算法:从原理到5G时代的通信变革【九】QPSK调制/解调
- 探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比
2.8 QPSK 调制 / 解调
简介
Quadrature Phase Shift Keying (QPSK) 是一种相位调制技术,广泛应用于数字通信系统中。它通过将两个信息比特组合成一个符号进行传输,从而提高频谱效率。下面我们详细解释 QPSK 的原理、公式和应用。

QPSK 的基本思想是利用四个不同的载波相位来表示四个可能的符号状态。在一个符号周期 T s y m T_{sym} Tsym 内,QPSK 信号可以表示为:
s ( t ) = A ⋅ cos [ 2 π f c t + θ n ] , 0 ≤ t ≤ T s y m , n = 1 , 2 , 3 , 4 s(t) = A \cdot \cos{[2\pi f_c t + \theta_n]}, \quad 0 \leq t \leq T_{sym}, \quad n = 1, 2, 3, 4 s(t)=A⋅cos[2πfct+θn],0≤t≤Tsym,n=1,2,3,4
其中, A A A 是信号幅度, f c f_c fc 是载波频率, θ n \theta_n θn 是信号的初始相位,由下式决定:
θ n = ( 2 n − 1 ) π 4 \theta_n = (2n - 1)\frac{\pi}{4} θn=(2n−1)4π
因此,QPSK 的四个可能初始相位分别是 π / 4 \pi/4 π/4, 3 π / 4 3\pi/4 3π/4, 5 π / 4 5\pi/4 5π/4, 和 7 π / 4 7\pi/4 7π/4 弧度。
为了进一步分析 QPSK 信号,我们可以将其分解为两个正交分量:同相分量(In-phase)和正交分量(Quadrature)。通过三角函数的和差化积公式,QPSK 信号可以重写为:
s ( t ) = A ⋅ cos θ n ⋅ cos ( 2 π f c t ) − A ⋅ sin θ n ⋅ sin ( 2 π f c t ) s(t) = A \cdot \cos\theta_n \cdot \cos(2\pi f_c t) - A \cdot \sin\theta_n \cdot \sin(2\pi f_c t) s(t)=A⋅cosθn⋅cos(2πfct)−A⋅sinθn⋅sin(2πfct)
这表明 QPSK 信号是由两个正交基函数 ϕ i ( t ) = cos ( 2 π f c t ) \phi_i(t) = \cos(2\pi f_c t) ϕi(t)=cos(2πfct) 和 ϕ q ( t ) = sin ( 2 π f c t ) \phi_q(t) = \sin(2\pi f_c t) ϕq(t)=sin(2πfct) 加权叠加而成的,权重分别为 s n , i = A ⋅ cos θ n s_{n,i} = A \cdot \cos\theta_n sn,i=A⋅cosθn 和 s n , q = − A ⋅ sin θ n s_{n,q} = -A \cdot \sin\theta_n sn,q=−A⋅sinθn。
在二维坐标系中,QPSK 的星座图可以用四个点表示,这些点对应于四个不同的符号状态。例如,假设 A = 1 A = 1 A=1,则四个符号对应的坐标为 ( cos π / 4 , − sin π / 4 ) (\cos\pi/4, -\sin\pi/4) (cosπ/4,−sinπ/4), ( cos 3 π / 4 , − sin 3 π / 4 ) (\cos3\pi/4, -\sin3\pi/4) (cos3π/4,−sin3π/4), ( cos 5 π / 4 , − sin 5 π / 4 ) (\cos5\pi/4, -\sin5\pi/4) (cos5π/4,−sin5π/4), 和 ( cos 7 π / 4 , − sin 7 π / 4 ) (\cos7\pi/4, -\sin7\pi/4) (cos7π/4,−sin7π/4)。具体计算如下:
- 对于 θ 1 = π / 4 \theta_1 = \pi/4 θ1=π/4, ( s 1 , i , s 1 , q ) = ( cos π / 4 , − sin π / 4 ) = ( 2 / 2 , − 2 / 2 ) (s_{1,i}, s_{1,q}) = (\cos\pi/4, -\sin\pi/4) = (\sqrt{2}/2, -\sqrt{2}/2) (s1,i,s1,q)=(cosπ/4,−sinπ/4)=(2/2,−2/2)。
- 对于 θ 2 = 3 π / 4 \theta_2 = 3\pi/4 θ2=3π/4, ( s 2 , i , s 2 , q ) = ( cos 3 π / 4 , − sin 3 π / 4 ) = ( − 2 / 2 , 2 / 2 ) (s_{2,i}, s_{2,q}) = (\cos3\pi/4, -\sin3\pi/4) = (-\sqrt{2}/2, \sqrt{2}/2) (s2,i,s2,q)=(cos3π/4,−sin3π/4)=(−2/2,2/2)。
类似地,可以计算其他两个符号的状态。
QPSK 的优点在于其高效的频谱利用率和较低的实现复杂度,适用于多种无线通信标准,如 Wi-Fi 和卫星通信。
QPSK 发射机的实现与原理
QPSK(Quadrature Phase Shift Keying)发射机的核心功能是将输入的二进制数据流调制成 QPSK 信号,以便在无线通信系统中传输。图1展示了 QPSK 发射机的基本结构,其实现被封装为一个 MATLAB 函数 qpsk_mod。该函数接收三个参数:输入的二进制数据流 a a a、载波频率 f c f_c fc 和过采样因子 O F OF OF。输出包括调制后的 QPSK 信号 s s s、时间基 t t t、以及基带同相分量 I I I 和正交分量 Q Q Q。
function [s,t,I,Q] = qpsk_mod(a,fc,OF)
%Modulate an incoming binary stream using conventional QPSK
%a - input binary data stream (0's and 1's) to modulate
%fc - carrier frequency in Hertz
%OF - oversampling factor (multiples of fc) - at least 4 is better
%s - QPSK modulated signal with carrier
%t - time base for the carrier modulated signal
%I - baseband I channel waveform (no carrier)
%Q - baseband Q channel waveform (no carrier)
L = 2*OF;%samples in each symbol (QPSK has 2 bits in each symbol)
ak = 2*a-1; %NRZ encoding 0-> -1, 1->+1
I = ak(1:2:end);Q = ak(2:2:end);%even and odd bit streams
I=repmat(I,1,L).'; Q=repmat(Q,1,L).';%even/odd streams at 1/2Tb baud
I = I(:).'; Q = Q(:).'; %serialize
fs = OF*fc; %sampling frequency
t=0:1/fs:(length(I)-1)/fs; %time base
iChannel = I.*cos(2*pi*fc*t);qChannel = -Q.*sin(2*pi*fc*t);
s = iChannel + qChannel; %QPSK modulated baseband signal
在实现过程中,首先通过一个分离器将生成的信息比特分为奇数位和偶数位两部分。奇数位对应正交臂(Quadrature Arm),而偶数位对应同相臂(In-phase Arm)。这两路比特流随后以并行方式转换为 NRZ(Non-Return-to-Zero)格式。NRZ 编码的作用是将二进制数据中的 0 0 0 映射为 − 1 -1 −1,而 1 1 1 映射为 + 1 +1 +1。例如,如果输入的二进制数据流为 a = [ 1 , 0 , 1 , 1 ] a = [1, 0, 1, 1] a=[1,0,1,1],则经过 NRZ 编码后得到 a k = [ 1 , − 1 , 1 , 1 ] ak = [1, -1, 1, 1] ak=[1,−1,1,1]。接着,从 a k ak ak 中提取奇数位和偶数位,分别形成 I I I 和 Q Q Q 分量,即 I = [ 1 , 1 ] I = [1, 1] I=[1,1] 和 Q = [ − 1 , 1 ] Q = [-1, 1] Q=[−1,1]。
为了满足符号速率的要求,每个符号包含两个比特,因此符号周期 T s y m T_{sym} Tsym 是比特周期 T b T_b Tb 的两倍,即 T s y m = 2 T b T_{sym} = 2T_b Tsym=2Tb。这意味着,如果 QPSK 符号以与 BPSK 相同的速率传输,则 QPSK 的数据速率是 BPSK 的两倍。
接下来,程序对 I I I 和 Q Q Q 分量进行过采样处理。过采样因子 L = 2 ⋅ O F L = 2 \cdot OF L=2⋅OF 决定了每个符号的采样点数,从而确保信号在时间上具有足够的分辨率。例如,假设 O F = 4 OF = 4 OF=4,则每个符号会被采样 L = 8 L = 8 L=8 次。
在完成过采样后,程序生成的时间基 t t t 被定义为 t = 0 : 1 / f s : ( l e n g t h ( I ) − 1 ) / f s t = 0:1/fs:(length(I)-1)/fs t=0:1/fs:(length(I)−1)/fs,其中采样频率 f s = O F ⋅ f c f_s = OF \cdot f_c fs=OF⋅fc。随后,基带同相分量 I I I 和正交分量 Q Q Q 分别与载波信号 cos ( 2 π f c t ) \cos(2\pi f_c t) cos(2πfct) 和 − sin ( 2 π f c t ) -\sin(2\pi f_c t) −sin(2πfct) 相乘,生成同相臂和正交臂的已调信号。最终的 QPSK 调制信号通过将这两个分量相加获得:
s ( t ) = I ( t ) ⋅ cos ( 2 π f c t ) + Q ( t ) ⋅ ( − sin ( 2 π f c t ) ) s(t) = I(t) \cdot \cos(2\pi f_c t) + Q(t) \cdot (-\sin(2\pi f_c t)) s(t)=I(t)⋅cos(2πfct)+Q(t)⋅(−sin(2πfct))
此外,为了确保信号的稳定性和准确性,过采样率 L = 2 f s / f c L = 2f_s / f_c L=2fs/fc 被选择为整数,使得每个符号周期内有整数个载波周期。这种设计符合奈奎斯特采样定理的要求,即采样频率 f s f_s fs 至少为载波频率 f c f_c fc 的两倍,即 f s ≥ f c f_s \geq f_c fs≥fc。通过这种方式,QPSK 发射机能够高效地生成高质量的调制信号,适用于各种无线通信场景。

QPSK 接收机的实现与原理
QPSK(Quadrature Phase Shift Keying)接收机的设计得益于其与 BPSK(Binary Phase Shift Keying)之间的特殊关系,因此其实现形式相对简单。如图3所示,QPSK 接收机的核心思想是分别对 I 通道(同相通道)和 Q 通道(正交通道)信号进行解调,其过程与 BPSK 解调方式类似。在解调完成后,I 通道的比特序列和 Q 通道的比特序列会被合并为一个单一的比特流,从而恢复出原始的二进制数据。这一过程由 MATLAB 函数 qpsk_demod 实现,该函数按照图3中的模型完成了 QPSK 解调器的功能。

具体来说,QPSK 接收机的工作流程可以分为以下几个步骤。首先,接收到的 QPSK 调制信号被分解为两个分量:同相分量(I 通道)和正交分量(Q 通道)。这两个分量分别通过与载波信号 cos ( 2 π f c t ) \cos(2\pi f_c t) cos(2πfct) 和 − sin ( 2 π f c t ) -\sin(2\pi f_c t) −sin(2πfct) 相乘完成下变频操作,即将高频调制信号转换为基带信号。随后,经过低通滤波器去除高频成分,得到解调后的 I 通道和 Q 通道信号。这些信号通常以连续时间波形的形式存在,因此需要进一步量化为离散的比特值。对于每个符号周期 T s y m T_{sym} Tsym,I 通道和 Q 通道的信号值会被映射回对应的二进制比特,例如通过判断信号值的正负来确定比特值(正对应 1 1 1,负对应 0 0 0)。最后,I 通道和 Q 通道的比特序列会被重新组合,形成最终的二进制数据流。
function [a] = qpsk_demod(r, fc, OF)
% QPSK_DEMOD - QPSK 解调器
% 输入:
% r - 接收的 QPSK 调制信号(含噪声)
% fc - 载波频率 (Hz)
% OF - 过采样因子 (每个符号的采样点数为 2*OF)
% 输出:
% a - 恢复的二进制比特流% 参数初始化
fs = OF * fc; % 采样频率
Ts = 1 / fs; % 采样周期
Tsym = 2 * OF * Ts; % 符号周期 (每个符号包含 2*OF 个采样点)% 时间基
t = (0:length(r)-1) / fs;% 下变频:将接收到的信号分解为 I 和 Q 分量
iChannel = r .* cos(2 * pi * fc * t); % 同相分量
qChannel = r .* (-sin(2 * pi * fc * t)); % 正交分量% 低通滤波:去除高频成分
lpf = designLowpassFilter(fs, fc); % 设计低通滤波器
iChannelFiltered = filter(lpf, iChannel); % 滤波同相分量
qChannelFiltered = filter(lpf, qChannel); % 滤波正交通量% 符号采样:在每个符号周期的中心点采样
samplesPerSymbol = 2 * OF; % 每个符号的采样点数
iSamples = iChannelFiltered(samplesPerSymbol/2:samplesPerSymbol:end);
qSamples = qChannelFiltered(samplesPerSymbol/2:samplesPerSymbol:end);% 符号判决:将采样值映射回二进制比特
iBits = double(iSamples >= 0); % 判断同相分量的符号
qBits = double(qSamples >= 0); % 判断正交通量的符号% 将 I 和 Q 比特组合为单个比特流
a = reshape([iBits; qBits], 1, []); % 合并为单行向量
end% 辅助函数:设计低通滤波器
function lpf = designLowpassFilter(fs, fc)% 设计一个低通滤波器,截止频率略低于载波频率fNyquist = fs / 2; % 奈奎斯特频率lpf = fir1(64, fc / fNyquist); % 使用 FIR 滤波器,64 阶
end
为了更清楚地理解这一过程,我们可以结合具体的例子进行说明。假设接收到的 QPSK 信号经过解调后,I 通道的信号值序列为 [ + 0.8 , − 0.9 ] [+0.8, -0.9] [+0.8,−0.9],而 Q 通道的信号值序列为 [ − 0.7 , + 0.6 ] [-0.7, +0.6] [−0.7,+0.6]。根据 NRZ 编码规则,正信号值被映射为 1 1 1,负信号值被映射为 0 0 0。因此,I 通道的比特序列为 [ 1 , 0 ] [1, 0] [1,0],Q 通道的比特序列为 [ 0 , 1 ] [0, 1] [0,1]。将这两个序列按顺序合并后,得到最终的二进制数据流为 [ 1 , 0 , 0 , 1 ] [1, 0, 0, 1] [1,0,0,1]。这正是原始发送数据的恢复结果。
此外,QPSK 接收机的设计还考虑了实际通信系统中的噪声和失真问题。为了评估 QPSK 系统的性能,通常会通过仿真手段计算误码率(Bit Error Rate, BER)。误码率反映了系统在噪声环境下正确传输数据的能力。在仿真过程中,可以通过调整信噪比(Signal-to-Noise Ratio, SNR)来观察不同噪声水平下的性能表现。
总之,QPSK 接收机的设计充分利用了其与 BPSK 的相似性,简化了解调过程。通过对 I 通道和 Q 通道信号的独立处理以及后续的比特序列合并,接收机能够高效地恢复出原始数据。这种设计不仅在理论上具有清晰的逻辑,在实际应用中也表现出良好的性能和可靠性。
QPSK 性能仿真
在 QPSK(Quadrature Phase Shift Keying)调制解调系统的性能仿真中,整个波形模拟过程包括生成随机消息比特、使用 QPSK 调制对这些比特进行编码、添加对应给定信噪比(Signal-to-Noise Ratio, E b / N 0 E_b/N_0 Eb/N0)的 AWGN(Additive White Gaussian Noise)信道噪声,以及通过相干 QPSK 接收机对接收到的含噪信号进行解调。图4展示了调制器各个阶段的波形。这种仿真不仅验证了系统的设计正确性,还提供了误码率(Bit Error Rate, BER)性能曲线,用于评估系统在噪声环境下的表现。由于 QPSK 本质上是将两个正交调制的 BPSK(Binary Phase Shift Keying)信号组合在一起,因此其性能曲线与传统 BPSK 的性能曲线相同。这意味着,在相同的 E b / N 0 E_b/N_0 Eb/N0 下,QPSK 和 BPSK 的误码率表现一致。

QPSK 变体分析
除了标准 QPSK,还有多种 QPSK 的变体形式,其中包括 Offset-QPSK(OQPSK)、 π / 4 \pi/4 π/4-QPSK 和 π / 4 \pi/4 π/4-DQPSK。这些变体在相位变化和调制方式上有所改进,以适应不同的应用场景。
Offset-QPSK 与标准 QPSK 类似,但 I 通道和 Q 通道的正交载波信号存在时间上的交错(其中一个通道被延迟)。在 OQPSK 中,正交分量不会在同一时刻改变状态,因为状态变化仅发生在符号周期的中间(由于 Q 通道有半个符号的偏移)。这完全消除了 18 0 ∘ 180^\circ 180∘ 的相位跳变,将相位变化限制为每比特周期内的 0 ∘ 0^\circ 0∘ 或 ± 9 0 ∘ \pm90^\circ ±90∘。消除 18 0 ∘ 180^\circ 180∘ 相位跳变的特性使 OQPSK 在频谱特性和抗相位抖动能力方面优于标准 QPSK。此外,如果进一步避免相位跃迁,则可以实现类似最小频移键控(Minimum Shift Keying, MSK)等连续调制方案的性能提升。
π / 4 \pi/4 π/4-QPSK 是另一种重要的 QPSK 变体,其调制信号的星座点从两个相位相差 π / 4 \pi/4 π/4 弧度(即 4 5 ∘ 45^\circ 45∘)的 QPSK 星座中选择。通过在每个连续比特间切换这两个星座,相位变化被限制为 4 5 ∘ 45^\circ 45∘ 的奇数倍,从而消除了 9 0 ∘ 90^\circ 90∘ 和 18 0 ∘ 180^\circ 180∘ 的相位跳变。这一特性使得 π / 4 \pi/4 π/4-QPSK 比标准 QPSK 和 OQPSK 更好地保持了恒包络特性。此外, π / 4 \pi/4 π/4-QPSK 支持差分编码,因此既可以采用相干解调也可以采用非相干解调技术。非相干解调的选择简化了接收机设计,而差分编码的 π / 4 \pi/4 π/4-QPSK 通常被称为 π / 4 \pi/4 π/4-DQPSK。
为了更好地研究 QPSK 及其变体的相位过渡特性,常使用星座图(Constellation Diagram)。星座图能够直观地展示信号在二维复平面上的分布情况,并揭示不同调制方式的特性。例如,标准 QPSK 的星座点均匀分布在四个象限中,而 OQPSK 和 π / 4 \pi/4 π/4-QPSK 的星座图则反映了它们在相位变化方面的改进。

参考资料:QPSK - Quadrature Phase Shift Keying - GaussianWaves
相关文章:
探秘基带算法:从原理到5G时代的通信变革【九】QPSK调制/解调
文章目录 2.8 QPSK 调制 / 解调简介QPSK 发射机的实现与原理QPSK 接收机的实现与原理QPSK 性能仿真QPSK 变体分析 本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/…...
四、数据存储
在爬虫项目中,我们需要将目标站点数据进行持久化保存,一般数据保存的方式有两种: 文件保存数据库保存 在数据保存的过程中需要对数据完成去重操作,所有需要使用 redis 中的 set 数据类型完成去重。 1.CSV文件存储 1.1 什么是c…...
C# OnnxRuntime部署DAMO-YOLO人头检测
目录 说明 效果 模型信息 项目 代码 下载 参考 说明 效果 模型信息 Model Properties ------------------------- --------------------------------------------------------------- Inputs ------------------------- name:input tensor:Floa…...
Metal学习笔记七:片元函数
知道如何通过将顶点数据发送到 vertex 函数来渲染三角形、线条和点是一项非常巧妙的技能 — 尤其是因为您能够使用简单的单行片段函数为形状着色。但是,片段着色器能够执行更多操作。 ➤ 打开网站 https://shadertoy.com,在那里您会发现大量令人眼花缭乱…...
《一个端粒到端粒的参考基因组为木瓜中五环三萜类化合物生物合成提供了遗传学见解》
A telomere-to-telomere reference genome provides genetic insight into the pentacyclic triterpenoid biosynthesis in Chaenomeles speciosa Amplification of transposable elements 转座元件的扩增 Sequence mining disclosed that TEs were one main event in the ex…...
【Mac】2025-MacOS系统下常用的开发环境配置
早期版本的一个环境搭建参考 1、brew Mac自带终端运行: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境(xxx是mac的username&a…...
蓝桥杯web第三天
展开扇子题目, #box:hover #item1 { transform:rotate(-60deg); } 当悬浮在父盒子,子元素旋转 webkit display: -webkit-box:将元素设置为弹性伸缩盒子模型。-webkit-box-orient: vertical:设置伸缩盒子的子元素排列方…...
Qt基础入门-详解
前言 qt之路正式开启 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见📝 🎉欢迎大家点赞ὄ…...
FPGA开发,使用Deepseek V3还是R1(3):系统级与RTL级
以下都是Deepseek生成的答案 FPGA开发,使用Deepseek V3还是R1(1):应用场景 FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别 FPGA开发,使用Deepseek V3还是R1&#x…...
移动端国际化翻译同步解决方案-V3
1.前言 因为软件出海,从在上上家公司就开始做翻译系统,到目前为止已经出了两个比较大的版本了,各个版本解决的痛点如下: V1版本: 主要针对的是AndroidiOS翻译不一致和翻译内容管理麻烦的问题,通过这个工具…...
多空狙击线-新指标-图文教程,多空分界买点以及强弱操盘技术教程,通达信炒股软件指标
“多空狙击线”指标 “多空狙击线”特色指标是量能型技术指标,主要用于分析股票市场中机构做多/做空力量的强程度。该指标的构成、定义与原理如下: “多空狙击线”指标,又称机构做多/做空能量线,通过计算和分析股票市场中机构做多/做空力量…...
零信任架构和传统网络安全模式的
零信任到底是一个什么类型的模型?什么类型的思想或思路,它是如何实现的,我们要做零信任,需要考虑哪些问题? 零信任最早是约翰金德瓦格提出的安全模型。早期这个模型也是因为在安全研究上考虑的一个新的信任式模型。他最…...
Oracle 11g的部署配置
1、进入官网下载所需版本的Oracle 2、安装 ①:选择setup.exe开始安装 ②:安装提示如下,直接忽略,选是 ③:配置安全更新 填写邮箱,并取消勾选 ④:如果点击下一步,提示什么代理啥的…...
下载b站视频音频
文章目录 方案一:jjdown如何使用 方案二:bilibili哔哩哔哩下载助手如何使用进入插件网站插件下载插件安装 使用插件下载视频音频:复制音频下载地址 方案三:bat命令下载单个音频下载单个视频下载单个音视频 方案一:jjdo…...
记录spring-boot 3.X版本整合RocketMq
版本信息 先把该次整合的版本信息列如下: spring-boot spring-cloud rocketmq-spring-boot-starter rocketmq-client rocketmq 3.0.13 2022.0.5 2.2.3 4.9.8 4.9.8 版本信息是如何选择的呢?看rocketMq官网springcloud alibaba版本声明 rock…...
《基于HarmonyOS NEXT API 12+,搭建新闻创作智能写作引擎》
在信息爆炸的时代,新闻行业对于内容生产的效率和质量有着极高的要求。AI技术的发展为新闻创作带来了新的变革契机,借助AI智能写作助手,新闻工作者可以快速生成新闻稿件的初稿,大大提高创作效率。本文将基于HarmonyOS NEXT API 12及…...
探秘基带算法:从原理到5G时代的通信变革【六】CRC 校验
文章目录 2.5 CRC 校验2.5.1 前言2.5.2 CRC算法简介2.5.3 CRC计算的详细过程2.5.4 CRC校验的两种方法详解**分离比较法****整体运算法****不同位出错与余数的关系****总结** 2.5.5 CRC计算的C实现及工具介绍**C实现CRC计算****CRC计算工具推荐** **2.5.6 总结:CRC校…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_add_dump
ngx_conf_add_dump 定义在src\core\ngx_conf_file.c static ngx_int_t ngx_conf_add_dump(ngx_conf_t *cf, ngx_str_t *filename) {off_t size;u_char *p;uint32_t hash;ngx_buf_t *buf;ngx_str_node_t *sn;ngx_conf_dump_t *cd;has…...
MySQL快速搭建主从复制
一、基于位点的主从复制部署流程 确定主库Binlog是否开启修改主从server_id主库导出数据从库导入数据确定主库备份时的位点在从库配置主库信息查看复制状态并测试数据是否同步 二、准备阶段(主库和从库配置都需要修改) 1、确定主库Binlog是否开启 2、修改主从se…...
Linux注册进程终止处理函数
atexit() 是一个标准库函数,用于注册在进程正常终止时要调用的函数。通过 atexit(),你可以确保在程序结束时自动执行一些清理工作,比如释放资源、保存状态等。 函数原型如下: #include <stdlib.h> int atexit(void (*func…...
pytorch 模型测试
在使用 PyTorch 进行模型测试时,一般包含加载测试数据、加载训练好的模型、进行推理以及评估模型性能等步骤。以下为你详细介绍每个步骤及对应的代码示例。 1. 导入必要的库 import torch import torch.nn as nn import torchvision import torchvision.transforms as trans…...
水仙花数(华为OD)
题目描述 所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。 例如153是水仙花数,153是一个3位数,并且153 13 53 33。 输入描述 第一行输入一个整数n,表示一个n位的正整数。n在3到7之间&#x…...
(十二)基于 Vue 3 和 Mapbox GL 实现的坐标拾取器组件示例
下面是一个基于 Vue 3 和 Mapbox GL 实现的坐标拾取器组件示例: <template><div class="map-container"><div ref="mapContainer" class="map"></div><div class="coordinates-box"><div v-if=&qu…...
【华为OD机试真题29.9¥】(E卷,100分) - IPv4地址转换成整数(Java Python JS C++ C )
题目描述 存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~255,以#号间隔,虚拟IPv4地址可以转换为一个32位的整数,例如: 128#0#255#255,转换为32位整数的结果为2147549183(0x8000FFFF) 1#0#0#0,转换为32位整数的结果为16777216(0x01000000) 现以字符串形式给出一…...
《白帽子讲 Web 安全》之深入同源策略(万字详解)
目录 引言 一、同源策略基础认知 (一)定义 (二)作用 (三)作用机制详解 二、同源策略的分类 (一)域名同源策略 (二)协议同源策略 (三&…...
USRP4120-通用软件无线电平台
1、产品描述 USRP4120平台是彬鸿科技公司推出的以XILINX XC7Z020 SOC处理器为核心,搭配ADI AD9361射频集成芯片,针对无线通信系统科研与教学实验场景的一款通用软件无线电平台。产品频率范围70MHz~6GHz,模拟带宽200KHz~56MHz,支持…...
计算机毕业设计SpringBoot+Vue.js社区智慧养老监护管理平台(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
yoloV5的学习-pycharm版本
真的很让人气愤的一点,老师把我的pycharm给卸载了,我那个上面不仅有gpu-torch,还有gpu-torch,他给俺删了,删了很久,我心都碎了,过几天我就去找他负责,让他给我装回来我的环境&#x…...
蓝桥杯 之 图形规律
文章目录 分析组成,找到规律数正方形 在蓝桥杯中,常常会有一些图形的规律的题目需要我们去解决,所以我们需要学会其中的一些方法,我们这样才能解决对应的问题 方法1:直接对n进行拆分方法2:使用递归的思路&a…...
JavaScript 变量语法扩展
随着ECMAScript 6(ES6)及后续版本的发布,JavaScript引入了许多新的特性,极大地丰富了变量声明和使用的语法。这些改进不仅提升了代码的可读性和简洁性,还增强了开发效率。本文将介绍一些重要的变量语法扩展,…...
