雷达原理_有源干扰_间歇采样直接、重复、循环转发干扰_含MATLAB实现代码

news2025/2/24 7:19:41

间歇采样直接、重复、循环转发干扰

间歇采样转发干扰是在雷达脉冲周期内对雷达信号进行间歇采样,并通过干扰机将采样的信号进行处理和转发,从而生成相干的假目标信号。这种干扰方式的原理可分为直接转发、重复转发和逐次循环转发三种方式。直接转发是指在两段采样操作之间,干扰机对已采样信号进行直接转发;重复转发是当干扰机截获到一段雷达信号后,对其进行采样生成采样信号,根据设定的重复次数,对该采样信号进行重复转发;逐次循环转发则是按照预先设定的顺序依次对采样信号进行处理和转发。

间歇采样信号模型如图下图所示,其脉冲持续时间为 τ \tau τ ,重复周期为 T s T_s Ts ,矩形包络脉冲为:

p ( t ) = rect ⁡ ( t τ ) ∗ ∑ − ∞ ∞ δ ( t − n T s ) p(t)=\operatorname{rect}\left(\frac{t}{\tau}\right) * \sum_{-\infty}^{\infty} \delta\left(t-n T_s\right) p(t)=rect(τt)δ(tnTs)

在这里插入图片描述

利用傅里叶变换关系:
rect ⁡ ( t τ ) ↔ τ S a ( π f τ ) , ∑ − ∞ ∞ δ ( t − n T s ) ↔ 1 T s ∑ − ∞ ∞ δ ∣ f − f s ∣ \operatorname{rect}\left(\frac{t}{\tau}\right) \leftrightarrow \tau S a(\pi f \tau), \quad \sum_{-\infty}^{\infty} \delta\left(t-n T_s\right) \leftrightarrow \frac{1}{T_s} \sum_{-\infty}^{\infty} \delta\left|f-f_s\right| rect(τt)τSa(πfτ),δ(tnTs)Ts1δffs
其中 f s = 1 T s \displaystyle{f_s=\frac{1}{T_s}} fs=Ts1 为采样频率, S a ( x ) = sin ⁡ ( x ) / x S a(x)=\sin (x) / x Sa(x)=sin(x)/x p ( t ) p(t) p(t) 的频谱为:

P ( f ) = ∑ − ∞ ∞ τ f s S a ( π n f s τ ) δ ( f − n f s ) = ∑ − ∞ ∞ a n δ ( f − n f s ) P(f)=\sum_{-\infty}^{\infty} \tau f_s S a\left(\pi n f_s \tau\right) \delta\left(f-n f_s\right)=\sum_{-\infty}^{\infty} a_n \delta\left(f-n f_s\right) P(f)=τfsSa(πnfsτ)δ(fnfs)=anδ(fnfs)

其中 a n = τ f s S a ( π n f s τ ) a_n=\tau f_s S a\left(\pi n f_s \tau\right) an=τfsSa(πnfsτ). 特别的, 当 T s = 2 τ T_s=2 \tau Ts=2τ 时, p ( t ) p(t) p(t) 变成方波脉冲串,上式变成

P ( f ) = ∑ − ∞ + ∞ 1 2 S a ( n π 2 ) δ ( f − n f s ) P(f)=\sum_{-\infty}^{+\infty} \frac{1}{2} S a\left(\frac{n \pi}{2}\right) \delta\left(f-n f_s\right) P(f)=+21Sa(2)δ(fnfs)

设雷达发射信号 x ( t ) x(t) x(t) 的频谱为 X ( f ) X(f) X(f) 。干扰机对雷达信号采样得到采样信号为:
x s ( t ) = p ( t ) x ( t ) x_s(t)=p(t) x(t) xs(t)=p(t)x(t)

频谱为:
X s ( f ) = P ( f ) ∗ X ( f ) = ∑ − ∞ ∞ a n X ( f − n f s ) X_s(f)=P(f) * X(f)=\sum_{-\infty}^{\infty} a_n X\left(f-n f_s\right) Xs(f)=P(f)X(f)=anX(fnfs)
可以看出 X s ( f ) X_s(f) Xs(f) X ( f ) X(f) X(f) 的周期加权延拓, 延拓周期为 T s T_s Ts, 幅度加权系数为 a n a_n an, 根根据信号与系统知识可知,间歇采样干扰将产生一个主假目标以及一系列在主假目标旁逐渐衰减的次假目标。

在这里插入图片描述

间歇采样直接转发干扰仅需测量出雷达信号的脉宽即可开展干扰,图\ref{间歇采样直接转发干扰原理示意图}给出了间歇采样直接转发干扰的原理模型。

在这里插入图片描述

图\ref{间歇采样重复转发干扰原理示意图}给出了间歇采样重复转发干扰最简单的一种形式,可以看出,如果转发次数只有一次,那么此时就等效于占空比为50 %的间歇采样直接转发干扰,转发1-2、2-2、3-2、4-2可以认为是第一次转发信号延时 τ \tau τ 后的转发干扰,设第一次转发干扰信号为 y s ( t ) \displaystyle{y_{s}(t)} ys(t) ,则第二次转发输出信号为 y s ( t − τ ) \displaystyle{y_{s}(t-\tau)} ys(tτ) ;每多重复转发一次,输出信号需在前一次输出信号的基础上延时 τ \tau τ ,直至完成最后一次转发,即 y s ( t ) \displaystyle{y_{s}(t)} ys(t) τ \tau τ 为间隔延拓了 M s M_s Ms 次,容易得出 M s = T s / τ − 1 M_s={T_s}/{\tau}-1 Ms=Ts/τ1 ,则总的干扰输出信号可以表示为:

y s ( t ) + y s ( t − τ ) + ⋯ + y s ( t − ( M s − 1 ) τ ) = ∑ r = 0 M s − 1 y s ( t − r τ ) y_s(t)+y_s(t-\tau)+\cdots+y_s\left(t-\left(M_s-1\right) \tau\right)=\sum_{r=0}^{M_s-1} y_s(t-r \tau) ys(t)+ys(tτ)++ys(t(Ms1)τ)=r=0Ms1ys(trτ)

间歇采样转发干扰能够较好地适应各种雷达信号处理系统,并且不易被探测和干扰,因此在现代雷达干扰中使用较为广泛,但目前的间歇采样转发干扰技术多是以采样不连续的情况下进行的,干扰回波与真实回波存在差别,可以结合其他干扰技术以提高干扰效果。

1、间歇采样直接转发干扰-仿真

clc;clear;close all
% 间歇采样直接转发干扰 20230505
Tp = 50e-6;                 %雷达信号脉宽50us
B = 50e6;                   %雷达信号带宽50MHz
mu = B/Tp;                  %调频斜率
%Ts_jam =10e-6;
%Ts_jam =20e-6;              %间歇采样干扰的采样周期
%Ts_jam =0.1e-6;
Ts_jam =25e-6;
%tao_jam = 5e-6;             %间歇采样干扰的采样脉宽5us
tao_jam = 12.5e-6;
fs = 20*B;
Ts = 1/fs;
T_sample =Tp;               %采样时间
N_sample = ceil(T_sample/Ts);
N_sample_tao_jam = ceil(tao_jam/Ts);
N_sample_Ts_jam = ceil(Ts_jam/Ts);
%% 坐标轴变量
t = linspace(0,T_sample,N_sample);

%% 回波信号
Sig_rec = exp(1i*pi*mu*(t).^2);

%% 间歇采样干扰
    %% 采样脉冲
    Sig_pulse = zeros(1,N_sample);
    N_jam = Tp/Ts_jam;      %干扰采样次数,即采样脉冲个数
    for ii = 1:N_jam
    Sig_pulse( (1+ (ii-1)*N_sample_Ts_jam) :N_sample_tao_jam + (ii-1)*N_sample_Ts_jam) = 1;
    end
    %% 干扰信号
    Sig_jam = Sig_rec.*Sig_pulse;
    Sig_jam = [Sig_jam(N_sample-N_sample_tao_jam+1:N_sample),Sig_jam(1:N_sample-N_sample_tao_jam)];
    
%% 脉冲压缩
    N_fft = 2*N_sample;         % fft点数
    %% 参考信号
    Sig_ref = exp(1i*pi*mu*(t).^2);
    F_Sig_ref = fft(Sig_ref,N_fft);
    %% 雷达信号的脉冲压缩
    PC_Sig_rec = fftshift( ifft(fft(Sig_rec,N_fft).*(conj(F_Sig_ref))) );
    %1 PC_Sig_rec = PC_Sig_rec(1:N_sample);
    %% 干扰信号的脉冲压缩
    PC_Sig_jam = fftshift( ifft(fft(Sig_jam,N_fft).*(conj(F_Sig_ref))) );
    %2 PC_Sig_jam = PC_Sig_jam(1:N_sample);
%% 画图

testpara_t = linspace(0,2*Tp,2*N_sample);
para_norm = max( abs( real( PC_Sig_rec ) ) );
figure;
plot(testpara_t*1e6,( abs( real( PC_Sig_rec ) )/para_norm ));
%plot(testpara_t*1e6,( abs( real( PC_Sig_rec ) )/para_norm )/max(( abs( real( PC_Sig_rec ) )/para_norm )));
xlabel('时间/us');ylabel('幅度');
%title('雷达回波信号脉冲压缩');
%xlim([96 104]);
%plot(testpara_t*1e6,20*log10( abs( real( PC_Sig_rec ) )/para_norm ));
grid on;
hold on;
plot(testpara_t*1e6,( abs( real( PC_Sig_jam ) )/para_norm ),'r');
%plot(testpara_t*1e6,( abs( real( PC_Sig_jam ) )/para_norm )/max(( abs( real( PC_Sig_jam ) )/para_norm )));
xlabel('时间(us)');ylabel('幅度');
%title('干扰信号脉冲压缩');
%xlim([48 65]);% 占空比0.5
%xlim([48 57]);% 占空比0.2
%plot(testpara_t*1e6,20*log10( abs( real( PC_Sig_jam ) )/para_norm ));
grid on;legend('回波信号','干扰信号');

% figure%画出来的不对
% N = fs*Tp;
% freq = linspace(-B/2, B/2, N);
% plot(freq/1e6, fftshift(abs(fft(Sig_rec))));
% xlabel('频率/MHz');ylabel('幅度');
% grid on; hold on;
% plot(freq/1e6, fftshift(abs(fft(Sig_jam))),'r');
% xlim([-1 4]);
% legend('回波信号','干扰信号');

figure;
plot(t*1e6,real(Sig_rec));
xlabel('时间/us');ylabel('幅度');
title('雷达信号');

figure;
plot(t*1e6,Sig_pulse);
xlabel('时间/us');ylabel('幅度');
title('采样脉冲串');

figure;
plot(t*1e6,real(Sig_jam));
xlabel('时间/us');ylabel('幅度');
title('间歇采样直接转发干扰');

testpara_t = linspace(0,2*Tp,2*N_sample);
para_norm = max( abs( real( PC_Sig_rec ) ) );
figure;
plot(testpara_t*1e6,( abs( real( PC_Sig_rec ) )/para_norm ));
xlabel('时间/us');ylabel('幅度');
title('雷达回波信号脉冲压缩');
%xlim([]);
%plot(testpara_t*1e6,20*log10( abs( real( PC_Sig_rec ) )/para_norm ));
grid on;

figure;
plot(testpara_t*1e6,( abs( real( PC_Sig_jam ) )/para_norm ),'r');
xlabel('时间/us');ylabel('幅度');
title('干扰信号脉冲压缩');
%xlim([]);
%plot(testpara_t*1e6,20*log10( abs( real( PC_Sig_jam ) )/para_norm ));
grid on;

figure;
plot(testpara_t*1e6,( abs( real( PC_Sig_rec ) )/para_norm ),'Linewidth',0.7);
xlabel('时间(us)');ylabel('幅度');
%xlim([95 110]);
hold on;
plot(testpara_t*1e6,( abs( real( PC_Sig_jam ) )/para_norm ),'r','Linewidth',0.7);
grid on;

需要注意,图二是不对的,代码中对其进行了注释
在这里插入图片描述

在这里插入图片描述

2、间歇采样重复转发干扰-仿真

clc;clear;close all
%间歇采样重复转发干扰--20230505
Tp = 50e-6;                 %雷达信号脉宽50us
B = 50e6;                   %雷达信号带宽50MHz
mu = B/Tp;                  %调频斜率
%%
% Ts_jam = 8e-6;              %间歇采样干扰的采样周期8us 
% tao_jam = 1e-6;             %间歇采样干扰的采样脉宽1us
%%
Ts_jam = 4e-6;
tao_jam = 1e-6;
%%
M = round(Ts_jam/tao_jam -1);          % 延拓次数
fs = 10*B;
Ts = 1/fs;
T_sample =Tp;               %采样时间
N_sample = ceil(T_sample/Ts);
N_sample_tao_jam = ceil(tao_jam/Ts);
N_sample_Ts_jam = ceil(Ts_jam/Ts);
%% 坐标轴变量
t = linspace(0,T_sample,N_sample);

%% 回波信号
Sig_rec = exp(1i*pi*mu*(t).^2);

%% 间歇采样干扰
    %% 采样脉冲
    Sig_pulse = zeros(1,N_sample);
    N_jam = Tp/Ts_jam;      %干扰采样次数,即采样脉冲个数
    for ii = 1:N_jam
    Sig_pulse( (1+ (ii-1)*N_sample_Ts_jam) :N_sample_tao_jam + (ii-1)*N_sample_Ts_jam) = 1;
    end
    %% 干扰信号
    Sig_jam = Sig_rec.*Sig_pulse;
%     Sig_jam1 = [zeros(1,N_sample_tao_jam),Sig_jam];
%     Sig_jam2 = [zeros(1,N_sample_tao_jam),Sig_jam1];
%     Sig_jam3 = [zeros(1,N_sample_tao_jam),Sig_jam2];
    Sig_jam_matrix = zeros(M+1,(N_sample+(M)*N_sample_tao_jam));
    Sig_jam_matrix(1,1:length(Sig_jam)) = Sig_jam;
    for ii =2:M+1
        Sig_jam_matrix(ii,1:( length(Sig_jam)+(ii-1)*N_sample_tao_jam )) = [zeros(1,N_sample_tao_jam),Sig_jam_matrix(ii-1,1:(length(Sig_jam)+(ii-2)*N_sample_tao_jam))];
    end
    %% 归零
    Sig_jam = zeros(1,N_sample);
    for ii = 2:M+1
        Sig_jam = Sig_jam+Sig_jam_matrix(ii,1:N_sample);
    end
    
%% 脉冲压缩
    N_fft = 2*N_sample;         % fft点数
    %% 参考信号
    Sig_ref = exp(1i*pi*mu*(t).^2);
    F_Sig_ref = fft(Sig_ref,N_fft);
    %% 雷达信号的脉冲压缩
    PC_Sig_rec = fftshift( ifft(fft(Sig_rec,N_fft).*(conj(F_Sig_ref))) );
    %1 PC_Sig_rec = PC_Sig_rec(1:N_sample);
    %% 干扰信号的脉冲压缩
    PC_Sig_jam = fftshift( ifft(fft(Sig_jam,N_fft).*(conj(F_Sig_ref))) );
    %2 PC_Sig_jam = PC_Sig_jam(1:N_sample);
%% 画图
figure;
plot(t*1e6,real(Sig_rec));
xlabel('时间/us');ylabel('幅度');
title('雷达信号');

figure;
plot(t*1e6,Sig_pulse);
xlabel('时间/us');ylabel('幅度');
title('采样脉冲串');

t_jam = (1:length(Sig_jam))*Ts;
figure;
plot(t_jam*1e6,real(Sig_jam));
xlabel('时间/us');ylabel('幅度');
title('间歇采样直接转发干扰');

testpara_t = linspace(0,2*Tp,2*N_sample);
para_norm = max( abs( real( PC_Sig_rec ) ) );
figure;
plot(testpara_t*1e6,( abs( real( PC_Sig_rec ) )/para_norm ));
xlabel('时间/us');ylabel('幅度');xlim([45,60]);
title('雷达回波信号脉冲压缩');
%plot(testpara_t*1e6,20*log10( abs( real( PC_Sig_rec ) )/para_norm ));
grid on;

testpara_t_jam = (1:length(PC_Sig_jam))*Ts;
figure;
plot(testpara_t_jam*1e6,( abs( real( PC_Sig_jam ) )/para_norm ),'r');
xlabel('时间/us');ylabel('幅度');
title('干扰信号脉冲压缩');xlim([45,60]);
testpara_t = linspace(0,2*Tp,2*N_sample);
para_norm = max( abs( real( PC_Sig_rec ) ) );

figure;
plot(testpara_t*1e6,( abs( real( PC_Sig_rec ) )/para_norm )/max(( abs( real( PC_Sig_rec ) )/para_norm )));
xlabel('时间/us');ylabel('幅度');
hold on;
xlim([45,60]);
plot(testpara_t*1e6, (abs( real( PC_Sig_jam ) )/para_norm)/max(abs( real( PC_Sig_rec ) )/para_norm) ,'r');
grid on;
legend('回波信号','干扰信号');

% % 绘制频谱图
% figure
% freq = linspace(-fs/2, fs/2, 50000);
% plot(freq/1e5, fftshift(abs(fft(PC_Sig_rec))));
% xlabel('频率/MHz');ylabel('幅度');
% grid on; hold on;
% plot(freq/1e5, 0.5*fftshift(abs(fft(PC_Sig_jam))));
% xlim([-5 55]);
% legend('回波信号','干扰信号');

在这里插入图片描述

在这里插入图片描述

3、间歇采样循环转发干扰-仿真

close all;clear;clc  %20230505
Tp = 50e-6;                %雷达信号脉宽100us
B = 50e6;                   %雷达信号带宽10MHz
mu = B/Tp;                  %调频斜率
%%
% Ts_jam = 4e-6;              %间歇采样干扰的采样周期4us
% tao_jam = 1e-6;             %间歇采样干扰的采样脉宽1us
%%
% Ts_jam = 4e-6;
% tao_jam = 0.5e-6;
%%
Ts_jam = 10e-6;
tao_jam = 1e-6;
%%
% Ts_jam = 20e-6;
% tao_jam = 4e-6;
%% 延拓次数计算
M = Ts_jam/tao_jam-1;
N_sample_jam = Tp/Ts_jam;
R = round( min(M,N_sample_jam) );
fs = 10*B;
Ts = 1/fs;
T_sample =Tp;               %采样时间
N_sample = ceil(T_sample/Ts);
N_sample_tao_jam = ceil(tao_jam/Ts);
N_sample_Ts_jam = ceil(Ts_jam/Ts);
%% 坐标轴变量
t = linspace(0,T_sample,N_sample);

%% 回波信号
Sig_rec = exp(1i*pi*mu*(t).^2);

%% 间歇采样干扰
    %% 采样脉冲
    Sig_pulse = zeros(1,N_sample);
    N_jam = Tp/Ts_jam;      %干扰采样次数,即采样脉冲个数
    for ii = 1:N_jam
    Sig_pulse( (1+ (ii-1)*N_sample_Ts_jam) :N_sample_tao_jam + (ii-1)*N_sample_Ts_jam) = 1;
    end
    %% 干扰信号
    Sig_jam = Sig_rec.*Sig_pulse;
    Sig_jam_matrix = zeros(R+1,N_sample+(R-1)*N_sample_Ts_jam);
    Sig_jam_matrix(1,1:N_sample)= Sig_jam;
    Sig_jam_matrix(2,1:N_sample+N_sample_tao_jam)=[zeros(1,N_sample_tao_jam),Sig_jam];
    for ii = 3:R+1
        Sig_jam_matrix(ii,1:N_sample+N_sample_tao_jam+(ii-2)*(N_sample_Ts_jam+N_sample_tao_jam))=[zeros(1,N_sample_Ts_jam+N_sample_tao_jam),Sig_jam_matrix(ii-1,1:N_sample+N_sample_tao_jam+(ii-3)*(N_sample_Ts_jam+N_sample_tao_jam))];
    end
    %Sig_jam_matrix = Sig_jam_matrix(:,1:N_sample+(R-1)*N_sample_Ts_jam);
    %% 归零
    %Sig_jam = zeros(1,N_sample+(R-1)*N_sample_Ts_jam);
    Sig_jam = zeros(1,length(Sig_jam_matrix(1,:)));
    %% 合成干扰
    for ii = 2:R+1
    Sig_jam = Sig_jam+Sig_jam_matrix(ii,:);
    end
%% 脉冲压缩
    N_fft = 2*N_sample;         % fft点数
    N_fft2 = length(Sig_jam)+N_sample;
    %% 参考信号
    Sig_ref = exp(1i*pi*mu*(t).^2);
    F_Sig_ref = fft(Sig_ref,N_fft);
    %% 雷达信号的脉冲压缩
    PC_Sig_rec = fftshift( ifft(fft(Sig_rec,N_fft).*(conj(F_Sig_ref))) );
    %1 PC_Sig_rec = PC_Sig_rec(1:N_sample);
    %% 干扰信号的脉冲压缩
    PC_Sig_jam = fftshift( ifft(fft(Sig_jam,N_fft2).*(conj(fft(Sig_ref,N_fft2)))) );
    %2 PC_Sig_jam = PC_Sig_jam(1:N_sample);
%% 画图
figure;
plot(t*1e6,real(Sig_rec));
xlabel('时间/us');ylabel('幅度');
title('雷达信号');

figure;
plot(t*1e6,Sig_pulse);
xlabel('时间/us');ylabel('幅度');
title('采样脉冲串');

t_jam = (1:length(Sig_jam))*Ts;
figure;
plot(t_jam*1e6,real(Sig_jam));
xlabel('时间/us');ylabel('幅度');
title('间歇采样直接转发干扰');

testpara_t = linspace(0,2*Tp,2*N_sample);
para_norm = max( abs( real( PC_Sig_rec ) ) );
figure;
plot(testpara_t*1e6,( abs( real( PC_Sig_rec ) )/para_norm ));
xlabel('时间/us');ylabel('幅度');
title('雷达回波信号脉冲压缩');
%plot(testpara_t*1e6,20*log10( abs( real( PC_Sig_rec ) )/para_norm ));
grid on;

testpara_t_jam = (1:length(PC_Sig_jam))*Ts;
figure;
plot(testpara_t_jam*1e6,( abs( real( PC_Sig_jam ) )/para_norm ),'r');
xlabel('时间/us');ylabel('幅度');grid on;
% xlim([]);
title('干扰信号脉冲压缩');

% plot(testpara_t*1e6,20*log10( abs( real( PC_Sig_jam ) )/para_norm ));
% grid on;

% figure;
% plot(testpara_t*1e6,( abs( real( PC_Sig_rec ) )/para_norm ),'Linewidth',0.7);
% xlabel('时间(us)');ylabel('幅度');
% hold on;
% plot(testpara_t*1e6,( abs( real( PC_Sig_jam ) )/para_norm ),'r','Linewidth',0.7);
% grid on;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这个档案室管理妙招,太有用了!

档案是人类文明发展到一定历史阶段的产物,是人类活动的真实记录,也是新的社会实践最可靠的凭证和依据。 借助档案,我们能够更好地了解过去、把握现在、预见未来,是一种宝贵的无形资产,也是一种不可再生资源。因此&…

Pandas + AI = PandasAI【Python】

Pandas AI 是一个 Python 库,它为流行的数据分析和操作工具 Pandas 添加了生成式AI能力。 PandasAI旨在与 Pandas 结合使用,而不是它的替代品。 推荐:用 NSDT场景设计器 快速搭建3D场景 1、安装PandasAI 使用如下命令安装pandas-ai&#xf…

linux中TF启动卡制作:磁盘分区文件同步

文章目录 前言:1. 连接TF卡2. 磁盘卸载载与分区2.1 磁盘卸载2.2 创建第一个分区2.3 创建第二个分区 3. 磁盘格式化4. 文件同步5. 检查与BOOT分区启动文件拷贝总结: 前言: TF卡在linux环境下配置好相关软件后,把配置好的系统以及软…

Neo4j图数据库的数据模型_包括节点_属性_数据_关系---Neo4j图数据库工作笔记0002

来看一下neo4j的特性 这个neo4j特点就是简单,这里用最快的速度学习 可以看到一个圈表示一个节点,然后两个节点直接可以有关系,关系可以是双向的

Python正则表达式详解,保姆式教学,0基础也能掌握正则

正则作为处理字符串的一个实用工具,在Python中经常会用到,比如爬虫爬取数据时常用正则来检索字符串等等。正则表达式已经内嵌在Python中,通过导入re模块就可以使用,作为刚学Python的新手大多数都听说”正则“这个术语。 今天来给…

学生成绩管理系统【纯控制台】(Java课设)

系统类型 纯控制台类型(没有用到数据库) 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Idea或eclipse 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87753365 更多系统…

Python每日一练(20230505) 课程表 Course Schedule III/IV

目录 3. 课程表 Course Schedule III 4. 课程表 Course Schedule IV 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 3. 课程表 Course Schedule III 这里有 n 门不同的在线课程&#xff…

python并发编程:什么是并发编程?python对并发编程有哪些支持?

Python并发编程是指同时执行多个任务的编程模式。Python提供了多种实现并发编程的方式,包括多线程、多进程、协程、异步IO等。 为什么要引入并发编程 假设以下两个场景: 场景一: 一个网络爬虫,按顺序爬取花了一个小时,采用并发…

距新发牌制度生效不到1个月,我们和数位香港Web3er聊了聊

出品|欧科云链研究院 作者|Jason Jiang 4月20日,欧洲议会通过加密资产市场法规(MiCA),使欧盟成为全球首个引入全面加密法的主要司法管辖区。与此同时,东方世界的香港也正加速拥抱Web3变革。香港特区立法会…

【线程安全】内存可见性问题及解决方案

1. 关于内存可见性的一段代码 import java.util.Scanner; public class ThreadDemo {public static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() -> {while (count 0) {}System.out.println("t1 线程…

双向链表及双向链表的常见操作和用js封装一个双向链表

书接上回,上一篇文章讲了单向链表以及用 js 封装一个单向链表,所以这节将介绍双向链表以及用 js 封装一个双向链表。待会我也会继续在文章后面附上视频学习链接地址,大家想学习的可以去看看 一、认识双向链表 首先来认识一下什么是双向链表&…

广和通发布5G智能模组SC151系列,助力AIoT应用更智能高效

2023年5月,广和通发布5G R16智能模组SC151系列。SC151系列基于4nm制程工艺的高通QCM4490解决方案设计,采用8核高性能处理器,为工业与商业物联网终端提供高性能处理能力。面对与日俱增的终端智能化需求,SC151系列将助力打造高生产力…

【致敬未来的攻城狮计划】第2期定向赠书《RT-Thread设备驱动开发指南》+ 《GD32 MCU原理及固件库开发指南》

开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(超链接:http://yyds.recan-li.cn)和 瑞萨MCU (超链接:瑞萨电子 (Renesas Electronics Corporation)) 联合发起的「 致敬未来的攻…

【LeetCode】每日一题:移除链表元素 [C语言实现]

👻内容专栏:《LeetCode刷题专栏》 🐨本文概括:203.移除链表元素 🐼本文作者:花 碟 🐸发布时间:2023.5.5 203. 移除链表元素 - 力扣(LeetCode) 题目&#xff…

微信小程序的生命周期

微信小程序的生命周期 1.什么是生命周期?2.生命周期的分类3.什么是生命周期函数?4.生命周期函数的分类5.应用生命周期函数6.页面周期函数 1.什么是生命周期? 生命周期(Life Cycle)是指一个对象从创建 -> 运行 ->…

Ant Design Pro---【02 UMI路由讲解】

在 Umi 中,应用都是单页应用,页面地址的跳转都是在浏览器端完成的,不会重新请求服务端获取 html,html 只在应用初始化时加载一次。所有页面由不同的组件构成,页面的切换其实就是不同组件的切换,你只需要在配…

设计模式——观察者模式(应用广,较难)

是什么? 又被称为发布-订阅模式,它定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象,这个主题对象在状态变化时,会通知所有的观察者对象,使它们能够更新自己; 结构 抽象主题&…

复兴号列车司机室

复兴号上线有一段时间了,很多旅客都已经体验过,但是,司机室可能绝大多数人都没有机会一睹容颜,今天带你去司机室操纵台去探索一番。 按照上图的圈圈划分为操作台右侧(蓝色圈圈)、中部(红色圈圈…

从C到C++

目录 1、输入输出库与名字空间 2、输入输出流对象cin和cout 3、string字符串类 4、bool类型 5、自增自减--运算符&#xff08;必考&#xff09; 6、其他 1、输入输出库与名字空间 #include <iostream> using namespace std; 每次写代码先把这两个东西加上 <io…

共享内存实现进程间大数据的交换

引言   进程间的数据交换和共享是一种非常重要和实用的技术。大、中型软件的开发设计多是由众多程序设计人员的合作完成&#xff0c;通常一个程序设计人员只负责其中一个或几个模块的开发&#xff0c;这些模块可以是动态链接库也可以是应用程序或是其他形式的程序组件。这些独…