基于matlab的QPSK与BPSK信号性能比较仿真.doc

2装订线目 录第一章概述2第二章QPSK通信系统原理与仿真22.1 QPSK系统框图介绍22.2QPSK信号的调制原理32.2.1QPSK信号产生方法32.2.2QPSK星座图42.3QPSK解调原理及误码率分析42.3.1QPSK解调方法42.3.2QPSK系统误码率52.4QPSK信号在AWGN信道下仿真5第三章BPSK通信系统原理与仿真63.1BPSK信号的调制原理63.2BPSK解调原理及误码率分析7第四章QPSK与BPSK性能比较84.1QPSK与BPSK在多信道下比较仿真84.1.1纵向比较分析84.1.2横向比较分析104.2仿真结果分析104.2.1误码率分析104.2.2频带利用率比较10附 录11代码111代码211代码314代码416第一章 概述QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。它以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接人、移动通信及有线电视系统之中。BPSK是英文Binary Phase Shift Keying的缩略语简称,意为二相相移键控,是利用偏离相位的复数波浪组合来表现信息键控移相方式的一种。它使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值1比特的信息。本文所研究的QPSK系统与二进制的BPSK系统相比,具有以下特点1. 在传码率相同的情况下,四进制数字调制系统的信息速率是二进制系统的2倍。2. 在相同信息速率条件下,四进制数字调制系统的传码率是二进制系统的1/4倍,这一特点使得四进制码元宽度是二进制码元宽度的2倍,码元宽度的加大,可增加每个码元的能量,也可减小码间串扰的影响。3. 由于四进制码元速率比二进制的降低,所需信道带宽减小。4. 在接收系统输入信噪比相同的条件下,四进制数字调制系统的误码率要高于二进制系统。5. 四进制数字调制系统较二进制系统复杂,常在信息速率要求较高的场合。基于以上优点,在数字信号的调制方式中QPSK(Quadrature Phase Shift Keying)四相移键控是目前最常用的一种卫星数字信号调制方式,它具有较高的频谱利用率、较强的抗干扰性,在电路上实现也较为简单,因而被WCDMA和CDMA2000等第三代移动通信系统采用。第二章 QPSK通信系统原理与仿真2.1 QPSK系统框图介绍在图2.1的系统中,发送方,QPSK数据源采用随机生成,信源编码采用差分编码,编码后的信号经QPSK调制器,经由发送滤波器进入传输信道。接收方,信号首先经过相位旋转,再经匹配滤波器解调,经阈值比较得到未解码的接收信号,差分译码后得到接收信号,与信源发送信号相比较,由此得到系统误码率,同时计算系统误码率的理论值,将系统值与理论值进行比较。对于信道,这里选取的是加性高斯白噪声(Additive White Gaussian Noise)以及多径Rayleigh衰落信道(Multipath Rayleigh Fading Channel)。QPSK数据源差分编码器QPSK调制器发送滤波器衰减相位旋转相位同步积分与清除符号同步器阈值比较差分译码器计算BER噪声图2.1 QPSK系统框图在实验中,选用的是差分码。差分码又称为相对码,在差分码中利用电平跳变来分别表示1或0,分为传号差分码和空号差分码。传号差分码当输入数据为“1”时,编码波型相对于前一码电平产生跳变;输入为“0”时,波型不产生跳变。空号差分码当输入数据为“0”时,编码波型相对于前一码电平产生跳变;输入为“1”时,波型不产生跳变。2.2 QPSK信号的调制原理2.2.1 QPSK信号产生方法QPSK信号通常由图2.2所示的调相法产生,输入的二进制序列经过一个串/并转换器后分为两路二进制序列,这里假设两路序列为a,b,并通过平衡调制器分别对同相载波及正交载波进行二相调制,得到如图2.3中的虚线矢量。QPSK信号每个码元含有2比特的信息,如图2.3所示现用ab代表这两个比特。两个比特有4种组合,即00、01、10和11。它们和相位之间的关系通常都按格雷码的规律安排,如表2-1所示。图2.2 调相法产生QPSK信号 图2.3 信号矢量2.2.2 QPSK星座图在本次系统仿真中使用仿真代码产生QPSK信号星座图,具体代码如附录代码1。运行得到的信号星座图如图2.4,2.5表2-1 QPSK编码规则abA方式B方式00101101表中一组间隔均匀的受调制相位2.3 QPSK解调原理及误码率分析2.3.1 QPSK解调方法由于QPSK信号可以看作两个正交2PSK信号的叠加,解调框图如图2.6,用相干解调方法,即用两路正交的相干载波,可以很容易的分离出这两路正交的2PSK信号。解调后的两路基带信号码元a和b,经过并串变换后,成为串行数据输出。图2.4 A方式信号星座图 图2.5 B方式信号星座图2.3.2 QPSK系统误码率在QPSK体制中,由其矢量图(图2.7)可以看出,因噪声的影响使接收端解调时发生错误判决,是由于信号矢量的相位发生偏离造成的。例如,设发送矢量的相位为,它代表基带信号码元“11”,若因噪声的影响使接收矢量的相位变成,则将误判为“01”。当各个发送矢量以等概率出现时,合理的判决门限应该设在和相邻矢量等距离的位置。在图中对于矢量“11”来说,判决门限应该设在和。当发送“11”时,接收信号矢量的相位若超出这一范围(图图2.6 QPSK信号解调原理框图 图2.7 QPSK噪声容限中阴影区),则将发生错判。设为接收矢量(包括信号和噪声)相位的概率密度,则发生错误的概率为省略计算和Pe的繁琐过程,直接给出计算结果上式计算出的是QPSK信号的误码率。若考虑其误比特率,正交的两路相干解调方法和2PSK中采用的解调方法一样。所以其误比特率的计算公式也和2PSK的误码率公式一样。2.4 QPSK信号在AWGN信道下仿真仿真代码见附录代码2。运行结果如图2.8图2.8 AWGN环境下QPSK系统的仿真和理论结果由运行结果可以看出,仿真值与理论值基本吻合,误码率值随信噪比增大而下降。第三章 BPSK通信系统原理与仿真3.1 BPSK信号的调制原理图3.1 模拟调制方法图3.2 键控调制方法BSPK信号通常有2种调制方式,分别如图3.1、3.2所示。在2PSK中,通常用初始相位0和p分别表示二进制“1”和“0”。因此,2PSK信号的时域表达式为 式中,表示第n个符号的绝对相位因此,上式可以改写为3.2 BPSK解调原理及误码率分析BPSK信号的解调器原理方框图3.3和波形图3.4,这里给出的解调框图采用相干解调的接收方法。图3.3 BPSK信号相干解调框图波形图中,假设相干载波的基准相位与2PSK信号的调制载波的基准相位一致(通常默认为0相位)。但是,由于在2PSK信号的载波恢复过程中存在着的相位模糊,即恢复的本地载波与所需的相干载波可能同相,也可能反相,这种相位关系的不确定性将会造成解调出的数字基带信号与发送的数字基带信号正好相反,即“1”变为“0”,“0”变为“1”,判决器输出数字信图3.4 相干解调波形示意图号全部出错。这种现象称为2PSK 方式的“倒”现象或“反相工作”。这也是2PSK方式在实际中很少采用的主要原因。另外,在随机信号码元序列中,信号波形有可能出现长时间连续的正弦波形,致使在接收端无法辨认信号码元的起止时刻。第四章 QPSK与BPSK性能比较4.1 QPSK与BPSK在多信道下比较仿真QPSK仿真程序见代码3。BPSK仿真程序见代码4。下面对QPSK与BPSK在多信道下的BER-SNR曲线进行横向及纵向的比较,如表4-1所示。4.1.1 纵向比较分析图中依次给出LOS信道、莱斯平坦衰落信道、莱斯频率选择性衰落、瑞利平坦衰落信道、瑞利频率选择性衰落。比较频率选择性衰落和其相应的平坦衰落,可发现频率选择性衰落比相应的平坦衰落的性能差。比较莱斯信道和瑞利信道,可发现不存在视距分量的瑞利信道比存在视距分量的任何莱斯信道的性能差。表4-1 QPSK与BPSK在多信道下性能比较信道QPSKBPSKLOS莱斯平坦衰落莱斯频率选择性衰落信道QPSKBPSK瑞利平坦衰落瑞利频率选择性衰落4.1.2 横向比较分析相同信道下,BPSK调制的系统误码率小于QPSK调制。本次仿真过程中,莱斯平坦衰落信道下两者误码率差别显著。4.2 仿真结果分析4.2.1 误码率分析由前面介绍的误码率内容可以看出,QPSK判决门限为,BPSK的判决门限为。因此相同系统情况下的误码率BPSK优于QPSK。4.2.2 频带利用率比较在传码率相同的情况下,四进制数字调制系统的信息速率是二进制系统的2倍。频带利用率公式在相同信号速率的情况下,QPSK和BPSK系统的带宽是相同的,但是由于QPSK每个信号都是四进制的,QPSK每个信号包含2bit信息,所以比特率就是BPSK的两倍,因而其频带利用率即为BPSK的两倍。BPSK系统理论的频带利用率最大为1,但是在实际的实现中不能达到1,而在QPSK系统中,频带利用率可以超过1。附 录代码1function qpskconstellationAMM4;x0M-1;scatterplotpskmodx,M; A方式QPSK信号grid on;returnfunction qpskconstellationBMM4;x0M-1;scatterplotpskmodx,M,pi/4; B方式QPSK信号grid on;return代码2function x,bitsrandom_binarynbits,nsamples xzeros1,nbits*nsamples;bitsroundrand1,nbits;for m1nbits for n1nsamples indexm-1*nsamplesn; x1,index-1bitsm; endend returnfunction c,lagsvxcorra,b计算a b 的互相关系数,返回C是列向量,长度为ab的长度和减1aa;bb;Mlengtha;maxlagM-1;lags-maxlagmaxlag快速傅立叶变换Bfftb,2nextpow22*M-1;cifftA.*conjB;快速傅立叶反变换 ccend-maxlag1end,1;c1maxlag1,1; nr ncsizea;ifnrnc cc 采样速率SymRate1e5; 信号速率Ts1/fs; 采样周期TSym1/SymRate; 信号周期SymToSendN; 发送信号数ChanBW4.99e5; 带宽MeanCarrierPhaseErrorPhaseBias; 载波相位均值StdCarrierPhaseErrorPhaseJitter; 相位误差标准差MeanSymbolSyncErrorTimingBias; 符号同步误差均值StdSymbolSyncErrorTimingJitter; 符号同步误差标准差ChanGain10-ChanAtt/20; 信道增益TxBitClockTs/2; 发送机时钟RxBitClockTs/2; 接收机时钟 接收机输入端噪声标准差和信号幅度 RxNoiseStdsqrt10N0-30/10*fs/2;TxSigAmpsqrt10Eb-30/10*SymRate; 分配缓存 SampPerSymfs/SymRate;probe1zerosSymToSend1*SampPerSym,1;probe1counter1;probe2zerosSymToSend1*SampPerSym,1;probe2counter1; 计已传输信号的个数 TxSymSent1;RxSymDemod0; 发送和接收数据缓冲区unused,SourceBitsIrandom_binarySymToSend,1;unused,SourceBitsQrandom_binarySymToSend,1; 差分编码TxBitsISourceBitsI*0;TxBitsQSourceBitsQ*0;for k2lengthTxBitsI TxBitsIkorandnotxorSourceBitsIk,SourceBitsQk,xorSourceBitsIk,TxBitsIk-1,andxorSourceBitsIk,SourceBitsQk,xorSourceBitsQk,TxBitsQk-1; TxBitsQkorandnotxorSourceBitsIk,SourceBitsQk,xorSourceBitsQk,TxBitsQk-1,andxorSourceBitsIk,SourceBitsQk,xorSourceBitsIk,TxBitsIk-1;end 产生复信号 TxBitsTxBitsI*2-1sqrt-1*TxBitsQ*2-1; RxIntegrator0; 初始化接收机积分器TxBitClock2*TSym; 初始化发送机 设计信道滤波器,产生滤波器参数序列b,abutter2,ChanBW/fs/2;b1;a1;junk,FilterStatefilterb,a,0; 开始仿真循环 while TxSymSentSymToSend TxBitClockTxBitClockTs; if TxBitClockTSym TxSymSentTxSymSent1; TxBitClockmodTxBitClock,TSym; TxOutputTxBitsTxSymSent*TxSigAmp; end 信号经过信道滤波器 Rx,FilterStatefilterb,a,TxOutput,FilterState; 加高斯白噪声 RxChanGain*RxRxNoiseStd*randn1,1sqrt-1*randn1,1; 基于接收机载波同步误差的相位旋转 PhaseRotationexpsqrt-1*2*pi*MeanCarrierPhaseErrorrandn1,1*StdCarrierPhaseError/360; RxRx*PhaseRotation; probe1probe1counterRx; probe1counter probe1counter1; 更新接收机积分清除器 RxIntegratorRxIntegratorRx; probe2probe2counterRxIntegrator; probe2counter probe2counter1; 更新接收机时钟,判断是不是适合采样 RxBitClockRxBitClockTs; RxTSymTSym*1MeanSymbolSyncErrorStdSymbolSyncError*randn1,1; if RxBitClockRxTSym 解调信号 RxSymDemodRxSymDemod1; RxBitsIRxSymDemodroundsignrealRxIntegrator1/2; RxBitsQRxSymDemodroundsignimagRxIntegrator1/2; RxBitClockRxBitClock-TSym; RxIntegrator0; endend 差分解码SinkBitsISourceBitsI*0;SinkBitsQSourceBitsQ*0; for k2RxSymDemod SinkBitsIkorandnotxorRxBitsIk,RxBitsQk,xorRxBitsIk,RxBitsIk-1,andxorRxBitsIk,RxBitsQk,xorRxBitsQk,RxBitsQk-1; SinkBitsQkorandnotxorRxBitsIk,RxBitsQk,xorRxBitsQk,RxBitsQk-1,andxorRxBitsIk,RxBitsQk,xorRxBitsIk,RxBitsIk-1;end 在输入和输出100字节中寻找最佳时延C,LagsvxcorrSourceBitsI10110,SinkBitsI10110;MaxC,LocMaxCmaxC;BestLagLagsLocMaxC; 调整时延if BestLag0 SourceBitsISourceBitsIBestLag1lengthSourceBitsI; SourceBitsQSourceBitsQBestLag1lengthSourceBitsQ;elseif BestLag0 SinkBitsISinkBitsI-BestLag1lengthSinkBitsI; SinkBitsQSinkBitsQ-BestLag1lengthSinkBitsQ;end 将序列调整成相同长度TotalBitsminlengthSourceBitsI,lengthSinkBitsI;TotalBitsTotalBits-20;SourceBitsISourceBitsI10TotalBits;SourceBitsQSourceBitsQ10TotalBits;SinkBitsISinkBitsI10TotalBits;SinkBitsQSinkBitsQ10TotalBits; ErrorssumSourceBitsI SinkBitsIsumSourceBitsQ SinkBitsQ;BER_MCErrors/2*lengthSourceBitsI; returnfunction MCQPSKBER Eb220.526;N0-50;ChannelAttenuation70;EbN0dBEb-ChannelAttenuation-N0;EbN010.EbN0dB./10;BER_T0.5*erfcsqrtEbN0;Nround100./BER_T;BER_MCzerossizeEb;for k1lengthEb BER_MCkMCQPSKrunNk,Ebk,N0,ChannelAttenuation,0,0,0,0; dispsimulation,num2strk*100/lengthEb,complate;end figure1;semilogyEbN0dB,BER_MC,o,EbN0dB,2*BER_T,-;xlabelEb/N0dB;ylabelbit error rate;legendMC BER Estimate,Theoretical BER;grid; return代码3function peideal,pesystemqpsk_berestxx,yy,ebn0db,eb,tb,nbwxx为输入序列,yy为输出序列,ebn0db为信噪比,eb为单个信号能力,tb信号周期,nbw噪声带宽n1 n2sizexx;nxn1*n2;n3 n4sizeyy;nyn3*n4;n5 n6sizeebn0db;nebn5*n6;接收机带宽设定为rs/2nbwideal1/2*tb*2;for m1neb peidealm0.0; 初始化 pesystemm0.0; 初始化计算n0和噪声方差 string1Eb/N0,num2strebn0dbm; dispstring1 ebn0m10ebn0dbm/10; n0eb/ebn0m; 噪声功率 sigmasqrtn0*nbw*2; 方差 sigma1sqrtn0*nbwideal*2; 理想方差 bsqrt2*eb/tb/sqrtsumabsxx.2/nx; for n1nx thetaanglexxn; iftheta0 thetatheta2*pi; end接收信号的相位旋转 xxxnb*xxn*exp-i*theta-pi/4; yyynyyn*exp-i*theta-pi/4; d1realxxxn; d2imagxxxn; d3realyyyn; d4imagyyyn; pe1qd1/sigma1qd2/sigma1; pe2qd3/sigmaqd4/sigma; peidealmpeidealmpe1; pesystemmpesystemmpe2; endend peideal1/2*peideal./nx;pesystem1/2*pesystem./nx; returnfunction QPSKThreerayp0,p1,p2,delayNN256; 发送的信号数tb0.5; 信号周期fs16; 每信号的采样数ebn0db1214; 信噪比矢量产生QPSK信号xrandom_binaryNN,fsi*random_binaryNN,fs;delay00;delay10;delay2delay;设置瑞利信道gain1sqrtp1*absrandn1,NNi*randn1,NN;gain2sqrtp2*absrandn1,NNi*randn1,NN; for k1NN for kk1fs indexk-1*fskk; ggain11,indexgain11,k; ggain21,indexgain21,k; endend y1x;for k1delay2 y21,ky11,k*sqrtp0;endfor kdelay21NN*fs y21,ky11,k*sqrtp0y11,k-delay1*ggain11,ky11,k-delay2*ggain21,k;end匹配滤波器b-ones1,fs;bb/fs;a1;yfilterb,a,y2;应用半解析方法,进行误码率估计。cor lagsvxcorrx,y;cmaxmaxmaxabscor;nmaxfindabscorcmax;timelaglagsnmax;corrmagcmax;thetaanglecornmax;yy*exp-i*theta; hhimpzb,a;ts1/fs;nbwfs/2*sumhh.2; index10*fs8fsNN-10*fs8;xxxindex;yyyindex-timelag1;n1 n2sizey2;ny2n1*n2;ebtb*sumsumabsy2.2/ny2;ebeb/2;peideal,pesystemqpsk_berestxx,yy,ebn0db,eb,tb,nbw;figuresemilogyebn0db,peideal,b*-,ebn0db,pesystem,r-xlabelE_b/N_0;ylabelProbability of Error;gridaxis0 14 10-10 1 return代码4function bpskThreerayp0,p1,p2,delay NN256;tb0.5;fs16;ebn0db1214; xrandom_binaryNN,fs; delay00;delay10;delay2delay; gain1sqrtp1*absrandn1,NNi*randn1,NN;gain2sqrtp2*absrandn1,NNi*randn1,NN; for k1NN for kk1fs indexk-1*fskk; ggain11,indexgain11,k; ggain21,indexgain21,k; endend y1x;for k1delay2 y21,ky11,k*sqrtp0;endfor kdelay21NN*fs y21,ky11,k*sqrtp0y11,k-delay1*ggain11,ky11,k-delay2*ggain21,k;end b-ones1,fs;bb/fs;a1;yfilterb,a,y2; cor lagsvxcorrx,y;cmaxmaxmaxabscor;nmaxfindabscorcmax;timelaglagsnmax;corrmagcmax;thetaanglecornmax;yy*exp-i*theta; hhimpzb,a;ts1/fs;nbwfs/2*sumhh.2; index10*fs8fsNN-10*fs8;xxxindex;yyyindex-timelag1;n1 n2sizey2;ny2n1*n2;ebtb*sumsumabsy2.2/ny2;ebeb/2;peideal,pesystemqpsk_berestxx,yy,ebn0db,eb,tb,nbw;figuresemilogyebn0db,peideal,b*-,ebn0db,pesystem,r-xlabelE_b/N_0;ylabelProbability of Error;gridaxis0 14 10-10 1 return

基于matlab的qpsk与bpsk信号性能比较仿真,基于matlab的QPSK与BPSK信号性能比较仿真.doc...相关推荐

  1. 《通信原理》课程设计-基于matlab的am信号的调制与解调,AM调制解调与解调器抗干扰性能研究系统...

    <AM调制解调与解调器抗干扰性能研究系统>由会员分享,可在线阅读,更多相关<AM调制解调与解调器抗干扰性能研究系统(10页珍藏版)>请在人人文库网上搜索. 1.哈尔滨商业大学课 ...

  2. 【信号识别】基于matlab深度学习CNN信号调制分类【含Matlab源码 2066期】

    ⛄一.深度学习CNN信号调制分类概述 1 背景介绍 在通信信号处理领域, 特别是在非协作通信信号盲解调研究领域, 每时隙突发信号的调制方式不同, 必须进行信号的调制方式自动识别.信号的调制方式识别效果 ...

  3. 【信号处理】基于扩展卡尔曼滤波器和无迹卡尔曼滤波器的窄带信号时变频率估计(Matlab代码实现)

    目录 1 概述 2 数学模型 3 运行结果 4 结论 5 参考文献 6 Matlab代码实现 1 概述 本文讲解和比较了基于卡尔曼滤波器的频率跟踪方法的能力,例如扩展卡尔曼滤波器 (EKF) 和无味卡 ...

  4. 码元速率 matlab,[转载]基于小波变换的移相键控信号符号速率估计(matlab仿真)...

    西安电子科技大学 西电大宝 在电子技术迅猛发展的当代社会,空间中充满了各种各样不同频率.不同调制类型的通信信号.正 常通信条件下,发送方和接受方进行的是合作通信,即接受方预先知道发送信号的频率.调制类 ...

  5. 高速ad指标分析 matlab,高速ADC的动态性能参数和基于DSP技术的测试方法研究

    高速ADC是信号处理机的不可欠缺的组成部分,其性能的好坏对信号处理系统的整体性能也至关重要.通常ADC的技术参数是由生产厂商提供,可作为设计的重要依据,但是在电路板上形成的ADC模块的性能如何,还与A ...

  6. matlab 通讯系统设计与仿真,基于BPSK通信系统的设计与仿真

    基于BPSK通信系统的设计与仿真 一.BPSK信号调制原理 1.1  系统原理 file:///C:\Users\ADMINI~1.KGH\AppData\Local\Temp\ksohtml\wps ...

  7. matlab 双音多频 接收端检测到的号码,信号语音论文,关于基于MATLAB的双音多频信号识别相关参考文献资料-免费论文范文...

    导读:本论文可用于信号语音论文范文参考下载,信号语音相关论文写作参考研究. (河南师范大学计算机与信息工程学院,河南新乡453007) [摘 要]本文采用FFT和戈泽尔算法对计算机模拟产生双音多频信号 ...

  8. 基于matlab的漏电保护器仿真,基于MATLAB仿真的高压断路器振动信号故障诊断

    内容介绍 原文档由会员 第二波打卡 发布 基于MATLAB仿真的高压断路器振动信号故障诊断 16300字 44页 原创作品,已通过查重系统 摘 要 断路器在分合闸操作中所产生的振动信号是一系列无规则的 ...

  9. 基于matlab的相干信号的doa 估计,基于空间平滑MUSIC算法的相干信号DOA估计(1)

    基于空间平滑MUSIC算法的相干信号DOA估计(1) 基于空间平滑MUSIC算法的相干信号DOA估计(1) 空间平滑MUSIC算法(1) 在上一篇博客中有提到,当多个入射信号相干时,传统MUSIC算法 ...

最新文章

  1. 计算某个时间距离现在_计算成像amp;深度学习(1)
  2. Android运行报错avd,Android Studio出错:无法在模拟器中启动AVD
  3. 11个有用的移动网页开发App和HTML5框架
  4. Bash 文件夹操作
  5. NSIS设置桌面快捷方式的图标
  6. python+xlrd+echarts数据可视化demo
  7. python bar图_python使用matplotlib绘图 — barChart | 学步园
  8. 怎么在linux终端上sed,Linux中如何使用sed命令
  9. python分配问题_Python字符串分配问题!
  10. ABAP 读取FTP文件
  11. CTFHUB技能树-Misc-流量分析-ICMP
  12. 第四章 数字调制方式
  13. MasterCard信用卡测试卡号-creditcard-1
  14. 2022-08-01 网工进阶(二十四) STP进阶知识
  15. 抖音直播用什么手机效果最好 抖音直播手机哪款好2023
  16. 网易严选应用的云原生演进实践
  17. Minio入门系列【13】使用WebUploader上传文件到Minio服务器
  18. 2019年十大创新产品
  19. android平板联想,联想发布Yoga Tablet——一款有趣的Android平板
  20. ABP Freamwork 生成种子数据 表名abpUser不存在

热门文章

  1. Python实现抖音表白软件
  2. loadrunner之获取登陆接口中的token值及 LoadRunner数据更新与更新方式
  3. 北加州地震台网震相走时获取及 HYPOINVERSE 格式读取
  4. js中indexOf的用法详解
  5. rebar3使用介绍(二)配置项
  6. 图像处理:图片像素深度unit16位转unit8位
  7. 软件过程开发方法(RUP、AP、MP、HP) CMMI/SPCA业务介绍
  8. Java应用系统监控看这篇就够了
  9. 大专生可以当程序员吗?
  10. 计算机专长测试,心理测试 : 你的专长是什么?