一,CFAR基础知识介绍

简介

  恒虚警检测技术是指雷达系统在保持虚警概率恒定条件下对接收机输出的信号与噪声作判别以确定目标信号是否存在的技术。

前提

  由于接收机输出端中肯定存有噪声(包括大气噪声、人为噪声、内部噪声和杂波等),而信号一般是叠加在噪声上的。这就需要在接收机输出的噪声或信号加噪声条件下,采用检测技术判别是否有目标信号。

误差概率

  任何形式的判决必然存在着两种误差概率:发现概率和虚警概率。当接收机输出端存在目标回波信号,而判决时判为有目标的概率为Pd,判为无目标的概率为1-Pad。当接收机输出端只有噪声时,而判为有目标的概率为Pfa。由于噪声是随机变量,其特征可用概率密度函数表示,因此信号加噪声也是一随机变量 [1]

具体过程

  恒虚警检测器首先对输入的噪声进行处理后确定一个门限,将此门限与输入端信号相比,如输入端信号超过了此门限,则判为有目标,否则,判为无目标。

方法

  为了使系统的虚警概率保持恒定,此门限是随输入噪声变化而进行快速的自适应调整的,噪声处理方法是随噪声的不同分布而异,因而恒虚警检测技术包括恒虚警处理技术和目标检测技术两大部分。恒虚警处理技术包括快门限、慢门限处理技术、目标检测包括似然比检测、二进制检测、序贯检测和非参量检测等 [1]。

二,经典CFAR算法解析与性能图谱展示

 

  ①均值类CFRA

  核心思想是通过对参考窗内采样数据取平均来估计背景功率。

  CA-CFAR、GO-CFAR、SO-CFAR算法这三个是最经典的均值类CFAR算法,后续有其变形log-CFAR算法但是原理是相同的。

图1 均值类CFAR检测器原理图

  ②统计有序CFAR

  核心思想:通过对参考窗内的数据由小到大排序选取其中第K个数值假设其为杂波背景噪声。

图2 OS-CFAR检测器原理图

  ③自适应CFAR

  针对不同的杂波选用不同的决策方法来进行。

图3 HCE-CFAR检测器原理图

图4 VI-CFAR检测器原理图

  ④杂波图CFAR

  经典的空域杂波图CFAR算法,假设每个距离元和方位角上的平方率值遵从独立同分布,通过对时间维上的数据进行遗忘迭代来拟合杂波背景噪声。

  

图5 杂波图CFAR检测器原理图

三,CFRA发展现状

  均值类-统计有序类-自适应-杂波图-变换域-压缩感知-神经网络

四,经典CFAR算法实现源码(matlab)

cfar_ac.m  单元平均恒虚警算法实现

优点:损失率最少的一种算法;

缺点:多目标遮掩,杂波边缘性能也欠佳;

 function [ index, XT ] = cfar_ac( xc, N, pro_N, PAD)
% 假设回波服从高斯分布
%
alpha=N.*(PAD.^(-1./N)-1);
index=1+N/2+pro_N/2:length(xc)-N/2-pro_N/2;
XT=zeros(1,length(index)); for i=index
cell_left=xc(1,i-N/2-pro_N/2:i-pro_N/2-1);
cell_right=xc(1,i+pro_N/2+1:i+N/2+pro_N/2);
Z=(sum(cell_left)+sum(cell_right))./N; XT(1,i-N/2-pro_N/2)=Z.*alpha;
end end

test_cfar_ca.m

 %% 程序初始化
clc;clear all;close all; %% 均匀背景噪声(单目标&多目标)
% shape=[200];
% variance=200;
% noise_db=20;
% noise_p=10.^(noise_db./10);
% show_out=0;
% [ xc ] = env_uniform(variance, shape, noise_db,show_out); % 单目标
% SNR1=15; signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
%
% 多目标
% SNR1=20;signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
% SNR2=15;signal2_p=10.^(SNR2./10).*noise_p;
% xc(1,102)=signal2_p; %% 杂波边缘背景噪声(单目标&多目标)
shape=[100,200];
variance=200;
noise_db=[20,30];
noise_p=10.^(noise_db./10);
show_out=0;
[ xc ] = env_edge(variance, shape, noise_db,show_out); % 多目标
SNR1=15;signal1_p=10.^(SNR1./10).*noise_p(1,end);
SNR2=12;signal2_p=10.^(SNR2./10).*noise_p(1,end);
SNR3=8;signal3_p=10.^(SNR3./10).*noise_p(1,end);
SNR4=5;signal4_p=10.^(SNR4./10).*noise_p(1,end); loc1=randi([43,44],1,1);
xc(1,loc1)=signal1_p;
loc2=randi([46,48],1,1);
xc(1,loc2)=signal3_p;
loc3=randi([50,53],1,1);
xc(1,loc3)=signal2_p;
loc4=randi([55,58],1,1);
xc(1,loc4)=signal1_p;
loc5=randi([90,93],1,1); %接近杂波区,但是依然在
% xc(1,loc5)=signal1_p;
xc(1,loc5)=signal2_p; %这种杂波边缘有目标的情况,还需要优化
% xc(1,loc5)=signal3_p; loc6=randi([102,108],1,1);
xc(1,loc6)=signal3_p; %% 算法结果&图谱显示
N=36;
pro_N=2;
PAD=10^(-4);
[ index, XT ] = cfar_ac( xc, N, pro_N, PAD); figure;
plot(10.*log(abs(xc))./log(10)),hold on;
plot(index,10.*log(abs(XT))./log(10)),hold on;

图6 CA-CFAR效果图

cfar_go.m  最大选择恒虚警算法实现

优点:杂波边缘区域虚警概率降低

缺点:多目标遮掩

 function [ index, XT ] = cfar_go( xc, N, pro_N, PAD)
% 假设回波服从高斯分布
% alpha赋值有些问题,一个比较复杂的高次函数
alpha=N.*(PAD.^(-1./N)-1); index=1+N/2+pro_N/2:length(xc)-N/2-pro_N/2;
XT=zeros(1,length(index)); for i=index
cell_left=xc(1,i-N/2-pro_N/2:i-pro_N/2-1);
cell_right=xc(1,i+pro_N/2+1:i+N/2+pro_N/2);
Z=max([mean(cell_left),mean(cell_right)]); XT(1,i-N/2-pro_N/2)=Z.*alpha;
end end

test_cfar_go.m

 %% 程序初始化
clc;clear all;close all; %% 均匀背景噪声(单目标&多目标)
% shape=[200];
% variance=200;
% noise_db=20;
% noise_p=10.^(noise_db./10);
% show_out=0;
% [ xc ] = env_uniform(variance, shape, noise_db,show_out); % 单目标
% SNR1=15; signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
%
% 多目标
% SNR1=20;signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
% SNR2=15;signal2_p=10.^(SNR2./10).*noise_p;
% xc(1,102)=signal2_p; %% 杂波边缘背景噪声(单目标&多目标)
shape=[100,200];
variance=200;
noise_db=[20,30];
noise_p=10.^(noise_db./10);
show_out=0;
[ xc ] = env_edge(variance, shape, noise_db,show_out); % 多目标
SNR1=15;signal1_p=10.^(SNR1./10).*noise_p(1,end);
SNR2=12;signal2_p=10.^(SNR2./10).*noise_p(1,end);
SNR3=8;signal3_p=10.^(SNR3./10).*noise_p(1,end);
SNR4=5;signal4_p=10.^(SNR4./10).*noise_p(1,end); loc1=randi([43,44],1,1);
xc(1,loc1)=signal1_p;
loc2=randi([46,48],1,1);
xc(1,loc2)=signal3_p;
loc3=randi([50,53],1,1);
xc(1,loc3)=signal2_p;
loc4=randi([55,58],1,1);
xc(1,loc4)=signal1_p;
% loc5=randi([90,93],1,1); %接近杂波区,但是依然在
% xc(1,loc5)=signal1_p;
% xc(1,loc5)=signal2_p; %这种杂波边缘有目标的情况,还需要优化
% xc(1,loc5)=signal3_p; loc6=randi([102,108],1,1);
xc(1,loc6)=signal3_p; %% 算法结果&图谱显示
N=36;
pro_N=2;
PAD=10^(-4);
[ index, XT ] = cfar_go( abs(xc), N, pro_N, PAD); figure;
plot(10.*log(abs(xc))./log(10)),hold on;
plot(index,10.*log(abs(XT))./log(10)),hold on;

图7 GO-CFAR效果图

cfar_so.m  最小选择恒虚警算法实现

优点:多目标效果有改进;

缺点:杂波边缘区域虚警概率提升;

 function [ index, XT ] = cfar_so( xc, N, pro_N, PAD)
% 假设回波服从高斯分布
% alpha赋值有些问题,一个比较复杂的高次函数
alpha=N.*(PAD.^(-1./N)-1); index=1+N/2+pro_N/2:length(xc)-N/2-pro_N/2;
XT=zeros(1,length(index)); for i=index
cell_left=xc(1,i-N/2-pro_N/2:i-pro_N/2-1);
cell_right=xc(1,i+pro_N/2+1:i+N/2+pro_N/2);
Z=min([mean(cell_left),mean(cell_right)]); XT(1,i-N/2-pro_N/2)=Z.*alpha;
end end

test_cfar_so.m

 %% 程序初始化
clc;clear all;close all; %% 均匀背景噪声(单目标&多目标)
% shape=[200];
% variance=200;
% noise_db=20;
% noise_p=10.^(noise_db./10);
% show_out=0;
% [ xc ] = env_uniform(variance, shape, noise_db,show_out); % 单目标
% SNR1=15; signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
%
% 多目标
% SNR1=20;signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
% SNR2=15;signal2_p=10.^(SNR2./10).*noise_p;
% xc(1,102)=signal2_p; %% 杂波边缘背景噪声(单目标&多目标)
shape=[100,200];
variance=200;
noise_db=[20,30];
noise_p=10.^(noise_db./10);
show_out=0;
[ xc ] = env_edge(variance, shape, noise_db,show_out); % 多目标
SNR1=15;signal1_p=10.^(SNR1./10).*noise_p(1,end);
SNR2=12;signal2_p=10.^(SNR2./10).*noise_p(1,end);
SNR3=8;signal3_p=10.^(SNR3./10).*noise_p(1,end);
SNR4=5;signal4_p=10.^(SNR4./10).*noise_p(1,end); loc1=randi([43,44],1,1);
xc(1,loc1)=signal1_p;
loc2=randi([46,48],1,1);
xc(1,loc2)=signal3_p;
loc3=randi([50,53],1,1);
xc(1,loc3)=signal2_p;
loc4=randi([55,58],1,1);
xc(1,loc4)=signal1_p;
% loc5=randi([90,93],1,1); %接近杂波区,但是依然在
% xc(1,loc5)=signal1_p;
% xc(1,loc5)=signal2_p; %这种杂波边缘有目标的情况,还需要优化
% xc(1,loc5)=signal3_p; loc6=randi([102,108],1,1);
xc(1,loc6)=signal3_p; %% 算法结果&图谱显示
N=36;
pro_N=2;
PAD=10^(-4);
[ index, XT ] = cfar_so( abs(xc), N, pro_N, PAD); figure;
plot(10.*log(abs(xc))./log(10)),hold on;
plot(index,10.*log(abs(XT))./log(10)),hold on;

图8 SO-CFAR效果图

cfar_os.m  有序统计恒虚警算法实现

优点:多目标检测性能很好;

缺点:杂波边缘区域虚警概率提高;

 function [ index, XT ] = cfar_os( xc, N, k, pro_N, PAD)
% 假设回波服从高斯分布
% alpha赋值有些问题,一个比较复杂的高次函数 %% 计算alpha
% syms alpha PFA;
% PFA(alpha)=gamma(N-1).*gamma(N-k+alpha-1)./gamma(N-k-1)./gamma(N+alpha-1);
% [alpha,~,~]=solve(PFA(alpha)==PAD,'ReturnConditions', true) ; alpha=N.*(PAD.^(-1./N)-1); index=1+N/2+pro_N/2:length(xc)-N/2-pro_N/2;
XT=zeros(1,length(index)); for i=index
cell_left=xc(1,i-N/2-pro_N/2:i-pro_N/2-1);
cell_right=xc(1,i+pro_N/2+1:i+N/2+pro_N/2);
cell_all=cat(2,cell_left,cell_right);
cell_sort=sort(cell_all); Z=cell_sort(1,k); XT(1,i-N/2-pro_N/2)=Z.*alpha;
end end

test_cfar_os.m

 %% 程序初始化
clc;clear all;close all; %% 均匀背景噪声(单目标&多目标)
% shape=[200];
% variance=200;
% noise_db=20;
% noise_p=10.^(noise_db./10);
% show_out=0;
% [ xc ] = env_uniform(variance, shape, noise_db,show_out); % 单目标
% SNR1=15; signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
%
% 多目标
% SNR1=20;signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
% SNR2=15;signal2_p=10.^(SNR2./10).*noise_p;
% xc(1,102)=signal2_p; %% 杂波边缘背景噪声(单目标&多目标)
shape=[100,200];
variance=200;
noise_db=[20,30];
noise_p=10.^(noise_db./10);
show_out=0;
[ xc ] = env_edge(variance, shape, noise_db,show_out); % 多目标
SNR1=15;signal1_p=10.^(SNR1./10).*noise_p(1,end);
SNR2=12;signal2_p=10.^(SNR2./10).*noise_p(1,end);
SNR3=8;signal3_p=10.^(SNR3./10).*noise_p(1,end);
SNR4=5;signal4_p=10.^(SNR4./10).*noise_p(1,end); loc1=randi([43,44],1,1);
xc(1,loc1)=signal1_p;
loc2=randi([46,48],1,1);
xc(1,loc2)=signal3_p;
loc3=randi([50,53],1,1);
xc(1,loc3)=signal2_p;
loc4=randi([55,58],1,1);
xc(1,loc4)=signal1_p;
loc5=randi([90,93],1,1); %接近杂波区,但是依然在
% xc(1,loc5)=signal1_p;
xc(1,loc5)=signal2_p; %这种杂波边缘有目标的情况,还需要优化
% xc(1,loc5)=signal3_p; loc6=randi([102,108],1,1);
xc(1,loc6)=signal3_p; %% 算法结果&图谱显示
N=36;
pro_N=2;
k=2.*N./4;
PAD=10^(-4);
[ index, XT ] = cfar_os( abs(xc), N, k, pro_N, PAD); figure;
plot(10.*log(abs(xc))./log(10)),hold on;
plot(index,10.*log(abs(XT))./log(10)),hold on;

图9 OS-CAFR效果图

cfar_tc.m  杂波图恒虚警算法实现

优点:通过提高累积帧数,杂波背景噪声功率趋近于理论值

缺点:对于慢移动目标有自遮掩效果

 function [ index, XT, xc_tpn ] = cfar_tc( xc, xc_tp, N, pro_N, PAD)
% 假设回波服从高斯分布
%
xc_tc=zeros(1,length(xc));
alpha=N.*(PAD.^(-1./N)-1);
xc_tc(1,2:end-1)=xc_tp(1,2:end-1)./3+xc(1,1:end-2)./3+xc(1,3:end)./3;
xc_tpn=xc_tp(1,1:end)./2+xc(1,1:end)./2;
xc_tc(1,1)=xc_tpn(1,1);
xc_tc(1,end)=xc_tpn(1,end); index=1+N/2+pro_N/2:length(xc)-N/2-pro_N/2;
XT=zeros(1,length(index)); for i=index
cell_left=xc_tc(1,i-N/2-pro_N/2:i-pro_N/2-1);
cell_right=xc_tc(1,i+pro_N/2+1:i+N/2+pro_N/2);
Z=(sum(cell_left)+sum(cell_right))./N; XT(1,i-N/2-pro_N/2)=Z.*alpha;
end end

test_cfar_tc.m

 %% 程序初始化
clc;clear all;close all; %% 均匀背景噪声(单目标&多目标)
% shape=[200];
% variance=200;
% noise_db=20;
% noise_p=10.^(noise_db./10);
% show_out=0;
% [ xc ] = env_uniform(variance, shape, noise_db,show_out); % 单目标
% SNR1=15; signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
%
% 多目标
% SNR1=20;signal1_p=10.^(SNR1./10).*noise_p;
% xc(1,90)=signal1_p;
% SNR2=15;signal2_p=10.^(SNR2./10).*noise_p;
% xc(1,102)=signal2_p; %% 杂波边缘背景噪声(单目标&多目标)
shape=[100,200];
variance=200;
noise_db=[20,30];
noise_p=10.^(noise_db./10);
show_out=0;
% [ xc ] = env_edge(variance, shape, noise_db, show_out); % 多目标
SNR1=15;signal1_p=10.^(SNR1./10).*noise_p(1,end);
SNR2=12;signal2_p=10.^(SNR2./10).*noise_p(1,end);
SNR3=8;signal3_p=10.^(SNR3./10).*noise_p(1,end);
SNR4=5;signal4_p=10.^(SNR4./10).*noise_p(1,end); % loc1=randi([43,44],1,1);
% xc(1,loc1)=signal1_p;
% loc2=randi([46,48],1,1);
% xc(1,loc2)=signal3_p;
% loc3=randi([50,53],1,1);
% xc(1,loc3)=signal2_p;
% loc4=randi([55,58],1,1);
% xc(1,loc4)=signal1_p;
% loc5=randi([90,93],1,1); %接近杂波区,但是依然在
% xc(1,loc5)=signal1_p;
% xc(1,loc5)=signal2_p; %这种杂波边缘有目标的情况,还需要优化
% xc(1,loc5)=signal3_p; % loc6=randi([102,108],1,1);
% xc(1,loc6)=signal3_p; %% 迭代算法实现(杂波图)
N=36;
u=0.001;
PAD=10^(-4);
alpha=N.*(PAD.^(-1./N)-1);
xtp=zeros(1,shape(end));
d0=0;
d1=[0];
for i=1:1:4000
[ xc ] = env_edge(variance, shape, noise_db,show_out); loc1=randi([43,44],1,1);
xc(1,loc1)=signal1_p;
loc2=randi([46,48],1,1);
xc(1,loc2)=signal3_p;
loc3=randi([50,53],1,1);
xc(1,loc3)=signal2_p;
loc4=randi([55,58],1,1);
xc(1,loc4)=signal1_p; loc6=randi([102,108],1,1);
xc(1,loc6)=signal3_p; xtp=xtp.*(1-u)+xc.*u;
d0=d0.*(1-u)+u;
d1=cat(2,d1,d0); if mod(i,100)==0
%% 图谱显示
figure;
plot(10.*log(abs(xc))./log(10)),hold on;
plot(10.*log(abs(xtp.*alpha./d0))./log(10)),hold on;
end end

图10 杂波图CFAR效果图

五,总结

  理想情况下的CFAR算法:

  ①多目标检测性能很好,几乎互不影响;

  ②杂波边缘区域,突变很快,虚警率稳定;

  ③慢移动目标自遮掩改善;

  ④算法实用,复杂度适中,理论可实现;

六,源程序完善[添加环境杂波模拟程序-一维距离元]  2019.08.02

env_uniform.m文件
 function [ xc ] = env_uniform(variance,  shape, power_db, show_out)
%UNIFORM_EN 此处显示有关此函数的摘要
% 此处显示详细说明
if (nargin==3)
show_out=0;
end c=10^(power_db/10); % 这里是幅度——功率
xc=c + random('Normal',0,variance,1,shape);
if show_out==1
figure;plot(10.*log(abs(xc))./log(10));
end end
env_edge.m文件
 function [ xc ] = env_edge(variance,  shape, power_db, show_out)
%UNIFORM_EN 此处显示有关此函数的摘要
% 此处显示详细说明
if (nargin==3)
show_out=0;
end c=10.^(power_db./10); % 这里是幅度——功率
xc=random('Normal',0,variance,1,shape(1,end));
xc(1,1:end)=xc(1,1:end)+c(1,1);
index=1;
for i=1:length(power_db)
xc(1,index:shape(1,i))=xc(1,index:shape(1,i)).*c(1,i)./c(1,1);
index=shape(1,i)+1;
end if show_out==1
figure;plot(20.*log(abs(xc))./log(10));
end end

  

雷达无线电系列(二)经典CFAR算法图文解析与实现(matlab)的更多相关文章

  1. JVM系列二(垃圾收集算法).

    一.标记-清除算法(Mark-Sweep) 这种算法分为"标记"和"清除"两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象. Mar ...

  2. 雷达无线电系列(三)经典CFAR算法门限因子alpha计算(matlab)

    前言 本文汇集CA.SO.GO.OS.杂波图等恒虚警算法的门限因子求解方法及其函数 1,CA-CFAR [非常简单,可以直接求解] %% 均值恒虚警_门限因子计算公式 %% 版本:v1 %% 时间:2 ...

  3. SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(一)。

    这里的高斯模糊采用的是论文<Recursive implementation of the Gaussian filter>里描述的递归算法. 仔细观察和理解上述公式,在forward过程 ...

  4. 雷达无线电系列(一)几种常见的幅度分布函数(matlab)

    文件下载地址: https://github.com/mufasa007/myblog/tree/master/%E9%9B%B7%E8%BE%BE%E6%97%A0%E7%BA%BF%E7%94%B ...

  5. 二叉堆(一)之 图文解析 和 C语言的实现

    概要 本章介绍二叉堆,二叉堆就是通常我们所说的数据结构中"堆"中的一种.和以往一样,本文会先对二叉堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本 ...

  6. 经典算法研究系列:二、Dijkstra 算法初探

    July   二零一一年一月 本文主要参考:算法导论 第二版.维基百科. 一.Dijkstra 算法的介绍 Dijkstra 算法,又叫迪科斯彻算法(Dijkstra),算法解决的是有向图中单个源点到 ...

  7. Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解

    Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全   Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...

  8. 分布式理论系列(二)一致性算法:2PC 到 3PC 到 Paxos 到 Raft 到 Zab

    分布式理论系列(二)一致性算法:2PC 到 3PC 到 Paxos 到 Raft 到 Zab 本文介绍一致性算法: 2PC 到 3PC 到 Paxos 到 Raft 到 Zab 两类一致性算法(操作原 ...

  9. 【十大经典数据挖掘算法】AdaBoost

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 集成学习 集成学习(ensem ...

随机推荐

  1. arcgis python 获得arcgis安装版本和安装位置

    import arcpy print(arcpy.GetInstallInfo()['Version']) 和获得ArcGIS版本和安装位置 import arcpy # Use the dictio ...

  2. hadoop 2.7.3伪分布式环境运行官方wordcount

    hadoop 2.7.3伪分布式模式运行wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次以伪分布式模式来运行w ...

  3. leetcode 108. Convert Sorted Array to Binary Search Tree 、109. Convert Sorted List to Binary Search Tree

    108. Convert Sorted Array to Binary Search Tree 这个题使用二分查找,主要要注意边界条件. 如果left > right,就返回NULL.每次更新的 ...

  4. 23Flutter FloatingActionButton实现类似闲鱼App底部导航凸起按钮:

    /* 一.Flutter FloatingActionButton介绍 FloatingActionButton简称FAB,可以实现浮动按钮,也可以实现类型闲鱼app的底部凸起导航. child:子视 ...

  5. Windows下安装ActiveMQ

    到官网(http://activemq.apache.org/download-archives.html)下载最新发布的压缩包(我下的是5.15.9)到本地后解压(我解压到D盘Dev目录下)即可.进 ...

  6. Access-Control-Max-Age是什么?

    Access-Control-Max-Age是什么   答: 浏览器的同源策略,就是出于安全考虑,浏览器会限制从脚本发起的跨域HTTP请求(比如异步请求GET, POST, PUT, DELETE, ...

  7. 服务器(三):利用github的webhooks实现自动部署

    实现自动部署的关键就是利用github的webhooks,我们在github建立一个项目之后,在项目主页点击Settings,看到Webhooks点击打开可以添加一个链接,这里的意思是,github可 ...

  8. OLE导出EXCEL 问题处理

    需求: 2.资产负债表.利润表导出优化,由于项目公司门店较多,需要增加批量导出功能.按纳税主体维度导出execl文件,输入了几个纳税主体,就生成几个execl文件. 实现: 用程序ZFIR0014XL ...

  9. (一)Asp.net web api中的坑-【找不到与请求 URI匹配的 HTTP 资源】

    在.net下,创建一个HTTP服务,有很多方案,比较老ashx,一般处理程序(HttpHandler), Web Service SOAP协议的,数据格式是XML,HTTP协议         WCF ...

  10. 【MM系列】在SAP里查看数据的方法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法   前言部 ...