信号处理中简单实用的方法
最小二乘法拟合消除趋势项
消除趋势项函数
在MATLAB的工具箱中已有消除线性趋势项的detrend函数;再介绍以最小二乘法拟合消除趋势项的polydetrend 函数。
函数:detrend功能:消除线性趋势项
调用格式:y=detrend(x)
说明:输入参数x是带有线性趋势项的信号序列,输出参数y是消除趋势项的序列。
函数:polydetrend功能:最小二乘法拟合消除多项式的趋势项
调用格式:[y,xtrend]=polydetrend(x,fs,m)
说明:输人参数x是带有趋势项的信号,fs是采样频率,m是调用本函数时设置的多项式阶次。输出参数y是消除趋势项后的信号序列,xtrend是叠加在信号上的趋势项序列。函数polydetrend的程序清单如下:
function [y,xtrend]=polydetrend(x, fs, m)
x=x(:); % 把语音信号x转换为列数据
N=length(x); % 求出x的长度
t= (0: N-1)'/fs; % 按x的长度和采样频率设置时间序列
a=polyfit(t, x, m); % 用最小二乘法拟合语音信号x的多项式系数a
xtrend=polyval(a, t); % 用系数a和时间序列t构成趋势项
y=x-xtrend; % 从语音信号x中清除趋势项
基线漂移的修正
1.概 述
在实际采集到的信号中经常会发生基线漂移,这可能是由多种原因造成的。本案例将介绍在心电图检测中,若由于病人身体的轻微活动造成了心电图信号的基线漂移,则在后期处理中就可以用最小二乘法拟合消除消除基线的漂移。
2.实例
读入已知的心电图ecgdata2.mat数据,用最小二乘法拟合消除基线的漂移。程序清单如下:
clear all; clc; close all;
load ecgdata2.mat % 读入心电图数据
N=length(y); % 数据长度
time=(0:N-1)/fs; % 计算出时间刻度
[x,xtrend]=polydetrend(y, fs, 3); % 用多项式拟合法求出趋势项及消除后的序列
% 作图
subplot 311; plot(time,y,'k')
title('输入心电信号'); ylabel('幅值');
axis([0 max(time) -2000 6000]); grid;
subplot 312; plot(time,xtrend,'k','linewidth',1.5);
title('趋势项信号'); ylabel('幅值');
axis([0 max(time) -2000 6000]); grid;
subplot 313; plot(time,x,'k');
title('消除趋势项心电信号'); ylabel('幅值');
xlabel('时间/s');
axis([0 max(time) -2000 6000]); grid;
set(gcf,'color','w');
3.案例延伸
除了以最小二乘法拟合消除趋势项以外,还有其他方法可以消除趋势项,只是最小二乘法拟合的方法用得较多。其他的方法主要是一些平滑或滤波的方法,只取信号中的低频信号。例如可以用sgolay滤波器求取趋势项。sgolay滤波器是由SavitzkyA和GolayM在1964年提出的一种基于多项式拟合的最佳形式的低通滤波器[23,将在4.5.3小节中详细地说明。下面给出用sgolay滤波器对中的心电图数据消除趋势项的方法。读人已知的心电图ecgdata2.mat数据,用sgolay 滤波器消除基线的漂移。程序清单如下:
clear all; clc; close all;
load ecgdata2.mat % 读入心电图数据
N=length(y); % 数据长度
time=(0:N-1)/fs; % 计算出时间刻度
y1=sgolayfilt(y,3,2001); % 用sgolay滤波器求出趋势项
x=y-y1; % 计算消除趋势项后的序列
% 作图
subplot 311; plot(time,y,'k')
title('输入心电信号'); ylabel('幅值');
axis([0 max(time) -2000 6000]); grid;
subplot 312; plot(time,y1,'k','linewidth',1.5);
title('趋势项信号'); ylabel('幅值');
axis([0 max(time) -2000 6000]); grid;
subplot 313; plot(time,x,'k');
title('消除趋势项心电信号'); ylabel('幅值');
xlabel('时间/s');
axis([0 max(time) -2000 6000]); grid;
set(gcf,'color','w');
寻找信号中的峰值和谷值
MATLAB中峰谷值检测的函数
1.检测峰值的函数
检测峰值的函数是MATLAB自带的,在signal工具箱中
函数:findpeaks
功能:寻找待测信号的峰值
调用格式:
pks = findpeaks(x)
[pks,locs] = findpeaks(x)
[pks,locs]=findpeaks(x,'属性',参数)
说明:如果只找一个峰值可以用max函数,而需要寻找多个峰值才用本函数findpeaks。输入参数中x是被检测的信号序列,pks是被检测到信号中峰值的幅值,locs是被检测到峰值的位置,是序列的索引号。为了检测到峰值可以设置各种条件,即由属性和对应的参数来限定。可以利用findpeaks函数中的属性和参数较灵活地寻求序列中的峰值,在以下案例中还会介绍利用findpeaks函数来寻找谷值。
2.检测峰值和谷值的函数
本函数检测峰值和谷值,但不是MATLAB自带的,而是由帝国理工学院电气电子工程系的Mike Brookes教授在voicebox中提供的。该函数原名为findpeaks,为了避免和 MATLAB自带的findpeaks混淆,在本书中改名为findpeakm。
所数:findpeakm功能:寻找待测信号的峰值和谷值
调用格式:[K,V]= findpeakm(x,m,w)
说明:输入变量x是被测序列;m是方式,选用'g'时是用二次曲线内插后寻找峰值,选用v'时是寻找谷值;w是在寻找峰值时,两个峰值之间最小间隔的样点数。
已知一个脉动信号,如何求信号的周期
1.概 述
在实际信号处理中经常会遇到脉动信号,可通过提取峰值求出峰值间的距离计算出脉动信号的平均周期,如果有谷值的话也可以从谷值间的距离计算出脉动信号的平均周期。在本节中用脉搏信号分别从峰值和谷值位置获取脉动信号的平均周期。
2.实 例
某一患者的脉搏信号在ffpulse.txt文件中,采样频率是200Hz。脉搏不稳定,通过脉搏信号的峰值求出脉搏的平均周期。程序第一部分清单如下:
clear all; clc; close all;
y=load('ffpulse.txt'); % 读入脉搏数据
x=detrend(y); % 消除趋势项
fs=200; % 采样频率
N=length(x); % 数据长度
time=(0:N-1)/fs; % 时间刻度
% 第一部分,用findpeaks函数求峰值位置
[Val,Locs]=findpeaks(x,'MINPEAKHEIGHT',200,'MINPEAKDISTANCE',100);
T1=time(Locs); % 取得脉搏峰值时间
M1=length(T1);
T11=T1(2:M1);
T12=T1(1:M1-1);
Mdt1=mean(T11-T12); % 从峰值得的平均周期值
fprintf('峰值求得的平均周期值=%5.4f\n',Mdt1);
% 作图
pos = get(gcf,'Position');
set(gcf,'Position',[pos(1), pos(2)-100,pos(3),(pos(4)-140)]);
plot(time,x,'k'); hold on; grid;
plot(time(Locs),Val,'ro','linewidth',3);
xlabel('时间/s'); ylabel('幅值'); title('脉搏信号波形图')
set(gcf,'color','w');
% pause
% 第二部分,用findpeakm函数求谷值位置
[K,V]=findpeakm(x,'v',100);
T2=time(K); % 取得脉搏谷值时间
M2=length(T2);
T21=T2(2:M1);
T22=T2(1:M1-1);
Mdt2=mean(T21-T22); % 从谷值得的平均周期值
fprintf('谷值求得的平均周期值=%5.4f\n',Mdt2);
% 作图
plot(time(K),V,'gO','linewidth',3);
set(gcf,'color','w');
如何利用findpeaks 函数求谷值
1.概 述
一般是利用findpeaks函数来寻找峰值,但有时也会利用findpeaks函数来寻找谷值,因为在findpeaks函数中可以设置较多的限制条件,在需要用到这些限制条件会比用findpeakm寻找谷值更有利。
2.实 例
采集到一组数据在文件SDgdata2.mat中,由于外界干扰的原因信号的基线有不规则的漂移,故希望能把基线拉平。读人 SDgdata2.mat文件得到如图4-2-3所示的数据波形图,从图中可看出数据的基线极不规则,下面用找出极小值(谷值点)的方法把基线拉平。
clear all; clc; close all;
load SDqdata2.mat % 读入信号
y=-mix_signal; % 把输入信号反相
% 信号反相后用findpeaks函数检测峰值替代谷值的检测
[Val,Locs]=findpeaks(y,'MINPEAKHEIGHT',-1400,'MINPEAKDISTANCE',5);
b0=interp1(time(Locs),-Val,time); % 延伸谷值,构成基线偏离曲线
x=-y-b0; % 基线拉平的信号
% 作图
subplot 211; plot(time,y,'k'); hold on; grid
plot(time(Locs),Val,'r.','linewidth',3);
xlabel('时间/s'); ylabel('幅值');
title('把信号颠倒过来用寻找峰值替代寻找谷值');
subplot 212; plot(time,x,'k');
xlabel('时间/s'); ylabel('幅值');
title('把基线拉平后的波形图'); grid;
set(gcf,'color','w');
说明:为了能使用findpeaks函数,把读入的信号反相操作,即正值变负值;负值变正值,这样就能用求峰值替代求谷值了。读人的数据mix_signal同样不是一条平滑的曲线,有许许多多的峰值和谷值,为了能获取基线的漂移,必须要适当地选择findpeaks函数中的一些限制参数。在这里选择了MINPEAKIIEIGHT',-1400和MINPEAKDISTANCE',5.从findpeaks函数得到极值点的位置和数值,但这些不是基线的漂移曲线中每一点的位置和数值,而是基线漂移曲线中极值点的位移和数值。通过内插可得到整条基线漂移曲线,再从信号中减去基线漂移,基线基本上得到了校正。
寻找信号中的峰值和谷值
在信号处理中经常会对时间域或频率域的信号提取信号波形的包络,在提取包络后往往还要做进一步处理。提取包络最常用的方法是希尔伯特变换,此外还有其他方法,介绍几种实用的方法。
用希尔伯特变换计算信号的包络
1.概况
在求某一信号包络时用得最多的是希尔伯特变换,但并不是希尔伯特变换适用于所有信号求包络的情况。这是因为对于包络没有一个很严格的定义,在求包络时不同的情况会有不同的要求。本小节介绍用希尔伯特变换求取信号的包络。
2.实例
设信号x(n)=120+96e-(m/1500)cos(2xn/600),n=-5000:20:例4-3-1(pr4 31)5000,求该信号的包络线。设置信号后直接调用hilbert函数求信号的包络,程序清单的第一部分如下:
clear ; clc; close all;
n=-5000:20:5000; % 样点设置
% 程序第一部分:直接做做希尔伯特变换
N=length(n); % 信号样点数
nt=0:N-1; % 设置样点序列号
x=120+96*exp(-(n/1500).^2).*cos(2*pi*n/600); % 设置信号
Hx=hilbert(x); % 希尔伯特变换
% 作图
plot(nt,x,'k',nt,abs(Hx),'r');
grid; legend('信号','包络');
xlabel('样点'); ylabel('幅值')
title('信号和包络')
set(gcf,'color','w');
% 程序第二部分:消除直流后做希尔伯特变换
y=x-120; % 消除直流分量
Hy=hilbert(y); % 希尔伯特变换
% 作图
figure(2)
plot(nt,y,'k',nt,abs(Hy),'r');
grid; legend('信号','包络');
xlabel('样点'); ylabel('幅值')
title('信号和包络')
set(gcf,'color','w');
figure(3);
plot(nt,x,'k',nt,abs(Hy)+120,'r');
grid; legend('信号','包络'); hold on;
xlabel('样点'); ylabel('幅值')
title('信号和包络')
set(gcf,'color','w');
% 程序第三部分:通过频域做希尔伯特变换
y_fft=fft(y); % FFT
y_hit(1)=y_fft(1); % 按式(4-3-11)设置y_hit
y_hit(2:(N+1)/2)=2*y_fft(2:(N+1)/2);
y_hit((N+1)/2+1:N)=0;
z=ifft(y_hit); % 对y_hit做IFFT
% 作图
figure(4)
subplot 211; plot(n,real(Hy),'r',n,real(z),'g');
xlabel('样点'); ylabel('幅值'); legend('时域','频域')
title('频域和时域希尔伯特变换实部比较');
subplot 212; plot(n,imag(Hy),'r',n,imag(z),'g');
xlabel('样点'); ylabel('幅值'); legend('时域','频域')
title('频域和时域希尔伯特变换虚部比较');set(gcf,'color','w');
figure(5)
plot(nt,x,'k',nt,abs(z)+120,'r');
grid; legend('信号','包络');
xlabel('样点'); ylabel('幅值')
title('信号和包络')
set(gcf,'color','w');
用求极大值和极小值的方法来计算信号的包络线
1.概 述
指出用hilbert函数求包络线不一定适用于所有的信号,有时对包络线的要求也不完全相同,所以在某些情况下可以用极大值,、极小值的方法来求取信号的包络线。
2.案例分析
从文件pulsedata0.txt中读出脉冲信号,求取该脉冲信号的上、下包络线。本例将分为两部分:第一部分用hilbert函数求包络线,第二部分用极大值、极小值的方法来求取包络线。程序第一部分清单如下:
clear all; clc; close all;
xx=load('pulsedata0.txt'); % 读入信号
N=length(xx); % 数据长度
n=1:N; % 设置样点序列
% 作图
plot(n,xx,'k'); grid;
xlabel('样点'); ylabel('幅值');
title('原始信号波形图')
set(gcf,'color','w');
% 程序第一部分用hilbert计算信号的包络
xm=sum(xx)/N; % 计算信号的直流分量
x=xx-xm; % 消除直流分量
z=hilbert(x); % 进行希尔伯特变换
% 作图
figure(2)
plot(n,x,'k'); hold on; grid;
plot(n,abs(z),'r');
xlabel('样点'); ylabel('幅值');
title('消除直流分量用求取包络曲线图')
set(gcf,'color','w');
% 程序第二部分用求极大极小值计算信号的包络
% 利用findpeakm函数计算信号的极大极小值
[K1,V1]=findpeakm(x,[],120); % 求极大值位置和幅值
up=spline(K1,V1,n); % 内插,获取上包络曲线
[K2,V2]=findpeakm(x,'v',120);% 求极小值位置和幅值
down=spline(K2,V2,n); % 内插,获取下包络曲线
% 作图
figure(3)
plot(n,x,'k'); hold on; grid;
plot(n,up,'r');
plot(n,down,'r');
xlabel('样点'); ylabel('幅值');
title('用求取极大极小值方法获取包络曲线图')
set(gcf,'color','w');
用倒谱法来计算语音信号频谱的包络线
1.概述
语音信号频谱的包络线对语音分析来说是比较重要的,它反映了人类发声器官的共振结构,从频谱的包络可提取共振峰参数(频率和带宽)。在语音分析中常用倒谱方法来提取语音信号频谱的包络线。
clear all; clc; close all;
y=load('su1.txt'); % 读入数据
fs=16000; nfft=1024; % 采样频率和FFT的长度
time=(0:nfft-1)/fs; % 时间刻度
nn=1:nfft/2; ff=(nn-1)*fs/nfft; % 计算频率刻度
Y=log(abs(fft(y))); % 取幅值的对数
z=ifft(Y); % 按式(4-3-16)求取倒谱
mcep=29; % 分离声门激励脉冲和声道冲击响应
zy=z(1:mcep+1);
zy=[zy' zeros(1,1024-2*mcep-1) zy(end:-1:2)']; % 构建声道冲击响应的倒谱序列
ZY=fft(zy); % 计算声道冲击响应的频谱
% 作图
plot(ff,Y(nn),'k'); hold on; % 画出信号的频谱图
plot(ff,real(ZY(nn)),'k','linewidth',2.5); % 画出包络线
grid; hold off; ylim([-4 5]);
title('信号频谱和声道冲击响频谱(频谱包络)')
ylabel('幅值'); xlabel('频率/Hz');
legend('信号频谱','频谱包络')
set(gcf,'color','w');
获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复信号处理中简单实用的方法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。
相关文章:

信号处理中简单实用的方法
最小二乘法拟合消除趋势项 消除趋势项函数 在MATLAB的工具箱中已有消除线性趋势项的detrend函数;再介绍以最小二乘法拟合消除趋势项的polydetrend 函数。 函数:detrend功能:消除线性趋势项 调用格式:ydetrend(x) 说明:输入参数x是带有线性趋势项的信号序列,输出…...

Jeecg | 如何解决 ERR Client sent AUTH, but no password is set 问题
最近在尝试Jeecg低代码开发,但是碰到了超级多的问题,不过总归是成功运行起来了。 下面说说碰到的最后一个配置问题:连接redis失败 Error starting ApplicationContext. To display the conditions report re-run your application with deb…...

数据容器:set(集合) 更新啦!
数据容器:set(集合) 1.集合的定义方式 {元素, 元素, 元素} # 定义集合 my_set {"欣欣向荣", "嘉嘉", "red", "欣欣向荣", "嘉嘉", "red", "欣欣向荣", "嘉嘉…...

算法入门----小话算法(1)
下面就首先从一些数学问题入手。 Q1: 如何证明时间复杂度O(logN) < O(N) < O(NlogN) < O(N2) < O(2N) < O(N!) < O(NN)? A: 如果一个以整数为参数的不等式不能很容易看出不等的关系,那么最好用图示或者数学归纳法。 很显…...

Vue | 自定义组件双向绑定基础用法
Vue | 自定义组件双向绑定基础用法 vue 中,由于单向数据流,常规的父子组件属性更新,需要 在父组件绑定相应属性,再绑定相应事件,事件里去做更新的操作,利用语法糖 可以减少绑定事件的操作。 这里就简单的梳…...

python使用modbustcp协议与PLC进行简单通信
AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…...

mongodb在游戏开发领域的优势
1、分布式id 游戏服务器里的大部分数据都是要求全局唯一的,例如玩家id,道具id。之所以有这种要求,是因为运营业务上需要进行合服操作,保证不同服的数据在进行合服之后,也能保证id不冲突。如果采用关系型数据库&#x…...

大数据Scala教程从入门到精通第十篇:Scala在IDEA中编写Hello World代码的简单说明
一:代码展示 object Main {def main(args: Array[String]): Unit {//SCALA中可以不写;//绿色的小三角达标的是这个类中有一个MAIN方法代表是可以执行的。//ctrl shift f10可以直接运行println("Hello world!")//Java中的类库我们可以直接使用System.o…...

【SPSS】基于因子分析法对水果茶调查问卷进行分析
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...

ElasticSearch学习篇12_《检索技术核心20讲》基础篇
背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243 课程分为基础篇、进阶篇、系统案例篇 主要记录企业课程学习过程课程大纲关键点,以文档形式记录笔记。 内容 检索技术:它是更底层的通用技术,…...

Reids高频面试题汇总总结
一、Redis基础 Redis是什么? Redis是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等,并提供了丰富的操作命令来操作这些数据结构。Redis的主要特点是什么? 高性能:Redis将数据存储在内…...

19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正
19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正 0 引言1 gia数据处理过程0 引言 由水量平衡方程可以将地下水储量的计算过程分解为3个部分,第一部分计算陆地水储量变化、第二部分计算地表水储量变化、第三部分计算冰后回弹改正、第四部分计算地下…...

车载客流统计设备:双目3D还原智能统计算法的应用与优势
随着城市交通的日益繁忙和公共交通系统的不断完善,对公交车等交通工具的客流统计和分析变得越来越重要。传统的客流统计方法往往存在效率低下、精度不足等问题,难以满足现代城市交通管理的需求。而基于双目3D还原智能统计算法的车载客流统计设备…...

U盘无法打开?数据恢复与预防措施全解析
在日常生活和工作中,U盘已成为我们存储和传输数据的重要工具。然而,有时我们会遇到U盘无法打开的情况,这无疑给我们带来了诸多不便。本文将深入探讨U盘打不开的现象、原因及解决方案,并分享如何预防此类问题的发生。 一、U盘无法访…...

apollo版本更新简要概述
apollo版本更新简要概述 Apollo 里程碑版本9.0重要更新Apollo 开源平台 9.0 的主要新特征如下:基于包管理的 PnC 扩展开发范式基于包管理的感知扩展开发范式全新打造的 Dreamview Plus 开发者工具感知模型全面升级,支持增量训练 版本8.0版本6.0 Apollo 里…...

基于心电疾病分类的深度学习模型部署应用于OrangePi Kunpeng Pro开发板
一、开发板资源介绍 该板具有4核心64位的处理器和8TOPS的AI算力,让我们验证一下,在该板上跑深度学习模型的效果如何? 二、配网及远程SSH登录访问系统 在通过microusb连接串口进入开发板调试,在命令行终端执行以下命令 1&#…...

vue中axios的使用
1.get请求 axios.get(http://127.0.0.1:2333/show_course, {params: {param: choice} }) .then((response) > {this.list response.data; }) .catch((error) > {console.error(error); }); 2.post请求:当需要向服务器提交数据以创建新资源时使用。例如&…...

Spark SQL【Java API】
前言 之前对 Spark SQL 的影响一直停留在 DSL 语法上面,感觉可以用 SQL 表达的,没有必要用 Java/Scala 去写,但是面试一段时间后,发现不少公司还是在用 SparkSQL 的,京东也在使用 Spark On Hive 而不是我以为的 Hive O…...

文心智能体平台丨创建你的四六级学习小助手
引言 在人工智能飞速发展的今天,我们迎来了文心智能体平台。该平台集成了最先进的人工智能技术,旨在为用户提供个性化、高效的学习辅助服务。今天,我们将向大家介绍如何利用文心智能体平台,创建一个专属于你的四六级学习小助手。…...

js全国省市区JSON数据(全)
AreaJson 就是全国省市区的具体数据信息,下面我自定义了一些方法,获取数据用的,不需要的可以删掉,只拿JSON内的数据即可 const AreaJson [{"name": "北京市","city": [{"name": "…...

轻量级 C Logger
目录 一、描述 二、实现效果 三、使用案例 四、内存检测 一、描述 最近实现一个 WS 服务器,内部需要一个日志打印记录服务器程序的运行过程,故自己实现了一个轻量级的 logger,主要包含如下特征: 可输出 debug、info、warn、er…...

哪里能下载到合适的衣柜3D模型素材?
室内设计师在进行家居设计时,衣柜3D模型素材是非常重要的工具。那么,哪里能下载到合适的衣柜3D模型素材呢? 一、建e网: ①建e网是一个专注于3D模型素材分享的平台,上面可以找到大量的衣柜3D模型。 ②该网站提供的模型种类丰富&am…...

计算机毕业设计 | SpringBoot+vue仓库管理系统(附源码)
1,绪论 1.1 项目背景 随着电子计算机技术和信息网络技术的发明和应用,使着人类社会从工业经济时代向知识经济时代发展。在这个知识经济时代里,仓库管理系统将会成为企业生产以及运作不可缺少的管理工具。这个仓库管理系统是由:一…...

【Python】解决Python报错:TypeError: can only concatenate str (not “int“) to str
🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…...

大数据技术分享 | Kylin入门系列:基础介绍篇
Kylin入门教程 在大数据时代,如何高效地处理和分析海量数据成为了企业面临的挑战之一。Apache Kylin作为一个开源的分布式分析引擎,提供了Hadoop之上的SQL查询接口及多维分析(OLAP)能力,使得对超大规模数据集的分析变…...

程序猿转型做项目经理一定要注意这 5 个坑
前言 国内的信息系统项目经理,很多都是从技术骨干转型的,我就是这样一路走过来的,这样有很多好处,比如技术过硬容易服众、熟悉开发流程更容易把控项目进度和质量、开发过程中碰到难题时更好组织攻坚等等,但是所谓成也…...

【Python爬虫】案例_github模拟登录
import requests import re from datetime import datetimedef login():sessionrequests.session()session.headers {User-Agent :XXXX #写自己的}url1 https://github.com/loginres_1 session.get(url1).content.decode()token re.findall(name"authenticity_token&q…...

小红书图文笔记怎么做?纯干货!
小红书图文笔记的制作是一门艺术,它需要结合精美的图片和有价值的内容,以吸引和留住用户的注意力。伯乐网络传媒给大家分享制作小红书图文笔记的干货指南,包括准备、制作、发布和优化的各个环节。 一、准备阶段 确定目标受众:找到…...

RocketMQ .NET
RocketMQ 是一款由阿里巴巴集团开发并开源给Apache软件基金会的分布式消息及流处理平台。以其高吞吐量、低延迟、高可用性等特点而广受欢迎。支持Java,C, Python, Go, .NET等。 异步解耦:可以实现上游和下游业务系统的松耦合设计,使得服务部…...

知攻善防应急响应靶机训练-Web2
前言: 本次应急响应靶机采用的是知攻善防实验室的Web-2应急响应靶机 靶机下载地址为: https://pan.quark.cn/s/4b6dffd0c51a 相关账户密码 用户:administrator 密码:Zgsfqq.com 解题过程: 一、攻击者的IP地址(两个)…...