当前位置: 首页 > news >正文

深入浅出通信原理

深入浅出通信原理


文章目录

  • 深入浅出通信原理
  • 前言
  • 一、概述
  • 二、信号和频谱
    • 2.1 信号
    • 2.2 信号的分解与合成
    • 2.3 傅里叶变换的特性
    • 2.4 离散傅里叶变化
  • 三 信道
    • 3.1 衰减和损耗
    • 3.2 多普勒效应
  • 四 信源编码
    • 4.1 采样
    • 4.2 量化
    • 4.3 编码
  • 五 基带信号的发送和接受
    • 5.1 脉冲成形
    • 5.2 眼图
  • 六 频带信号的发送和接受
    • 6.1 模拟调制
    • 6.1 .1 幅度调制
    • 6.1 .2 双边带调制
    • 6.1 .3 单边带调制
    • 6.1 .4 IQ调制(正交调制)
    • 6.2 数字调制
    • 6.2 .1 PSK/BPSK/QPSK调制
    • 6.2 .2 QAM调制
    • 6.3 变频技术
    • 6.4 采样技术
  • 7 天线技术
    • 7.1 多天线技术
      • 7.1.1 分集技术SIMO
      • 7.1.2 MIMO
  • 8 复用和多址技术
    • 8.1 OFDM
      • 8.1.1 OFDM调制
      • 8.1.2 OFDM解调
  • 总结


前言

由于个人能力的原因:请带着疑问的方式去阅读本文,准确答案参考书中为标准

阅读《深入浅出通信原理----陈爱军》笔记,无图,可以对照的书去看,有页码标志。非通信人,定性的去理解, 有很多理解不对的地方 ,望提出宝贵意见,不断交流。

重点结论知识点都在灰色框里,其他知识都是这些的衍生。


一、概述

例子:话筒和听筒之间的信号处理过程;声音—>电流—>声音;即用电流的变化表示声音的变化。
除了这种模拟的电流信号,使用数字信号0或者1来代替表示某个值。
有线信号:电平的高低。(线路会衰减,因此可以加放大器或者中级器)
无线信号

简单的通信系统:信息—信源—电信号—信宿
一般由:

  • 信源
  • 发信机
  • 信道 :无线和有线。对于有线就是电平。无线就是载波符号
    后面都是围绕这一个开始展宽详细说明

无线信号发送

  • 信源编码:模数转换,使用AD转换器(采样和量化过程)—>压缩编码
  • 信道编码和交织:有了数字信号,为了防止信号的干扰,因此加入了冗余信号。防止出现连续错误,则用交织。即信道编码(加冗余)—>交织(防止连续错误)—>去交织—>信道译码
  • 脉冲成形:在信道中传输,不能传0101的数字(天空上也不可能一串串数字在天上飘),而是用一个波形来表示0101,如矩形脉冲,或者sinc
  • 调制:脉冲成形的信号,是不适合直接在天上传播的,要直接传也行,但是频率太低,传不远,因此需要将信号调制到高频载波信号上。这个也是信号信息的体现,可以将高频信号去掉之后,就是脉冲成形的波形,然后这个波形表示的数字,就解出来了。一步一步剥开。

二、信号和频谱

这是最基础的,理解了这个才能往下学。

另外,再看书的时候注意横坐标是f还是t,这个要弄清楚

2.1 信号

首先记住一个基本概念,这个概念贯穿整个信号与频谱的学习:任何信号都可以分解为一些列不同频率的基本信号之和。这个基本信号可以是正弦信号(正 余统称正弦)、也可以是复指数信号。

正余弦或者复指数信号(计数的时候很方便,一般计算的时候都变换为复指数信号来计算)的特点:积分特性;正交特性。
tip:
先分清楚什么是复数:cos + jsin 。复数是一个点,要区别复指数信号(但后来欧拉统一了)。为了理解,复数用复平面的向量来表示(记住,它实质就是一个点)。那么复数和复指数的关系:复数和复指数相乘,就是将这个点在复平面上进行旋转。
在认识复指数:欧拉公式可知,复指数可以转换为复数(复指数其实也是一个点),如果说给一个变化的时间,那么这个点连续变化,就是复指数信号,注意,这里多了一个信号

小结:也就是一个复数,本质就是两路信号,两路信号的结合,就是复信号,可以没有虚数,这个只是为了方便表示。

信号的相和相位:
相:是一个状态,或者说是一个趋势,如递增,或者递减这个状态
相位:代表此时的某个值。
0相位和初相:要结合f<0 或者f>0来确定。这里看书吧

小结:前面的重要的是理解什么是复数,复指数,复信号的本质就ok了。本质就是两路信号的在复平面上的叠加成一个点,然后不断地随时间变化或者说是w变化,形成了一条线。

2.2 信号的分解与合成

P76:
傅里叶级数

tip:周期信号就是傅里叶级数,非周期的就是傅里叶变换

之前说到任何信号都可以分解为一些列不同频率的基本信号之和。这个基本信号可以是正弦信号(正 余统称正弦)、也可以是复指数信号。,对于矩形波也如此(低频确定整体形状,高频确定细节)。

之前说到基本信号又两种:正弦 和 复指数,都可以合成矩形波。

周期信号的傅里叶级数展开:一个直流分量+一系列复指数信号分量之和(其中复指数信号的参数包括Ck和频率w

重要:Ck*e^jkwt,Ck(傅里叶系数)一般是复数(或者理解实数是复数的特殊形式,即j的幅度为0),kwj就是不同的频率,之前说到一个复数乘一个复指数,就是旋转,那么这样不断地旋转,再加上不同的kw值(不同频率的信号),就是合成一个矩形波。

小结:一个复数的旋转,e^jwt只有kw变化,那么只需要求得不同kw下的Ck,就知道复数中的IQ值了(I+QJ 表示一个复数)**有了I和Q值,是不是就可以代表某个二进制的信号,这就是信号的传递了

P80:
为了方便表示周期信号(这里用傅里叶系数已经通过数学的方式表示了,但是不直观)因此有了频谱.
理解频谱图:Ck代表的是iq两路信号,合在一起成为了一个复平面上的点(或者说是向量),这个复平面上的点的参数有两个,一个是幅度(这个向量的模),一个是相位(向量已经旋转的角度)。那么e^jwt的作用,暂时理解为用来旋转用的。那么相位谱就是向量已经旋转的角度,幅度谱就是这个向量的模,横轴就是频率。三维谱就是相位+向量的指向。

P94:

傅里叶变化:求非周期信号的频谱或求由频谱求信号
傅里叶正变化:求非周期信号的连续谱。步骤就是非周期型号的周期延拓得到周期信号,然后用傅里叶级数的方式求得傅里叶系数Ck,在Ck/f0,再将T区域无穷,就得到傅里叶正变换。即先转换为周期,求得Ck之后再转非周期
傅里叶逆变换:由连续谱求非周期信号。步骤就是先采样…求Ck…再用Ck进行傅里叶级数展开,得到周期信号,再将T区域无穷大。

小结:如何求非周期信号的频谱,有如何从频谱返回得到原始的非周期信号。 正逆变换的核心点在于使用傅里叶级数。使用傅里叶级数的核心点,在于求Ck

P98:
**注意理解这一页:**矩形信号和傅里叶是sinc,sinc的傅里叶是矩形信号。其实这里是对称的特性(偶函数的傅里叶变化:就是原始信号先傅里叶,再傅里叶,即两次傅里叶,就又变成原始信号了。
P99:
理解
单位冲击信号的变化(先记住一个点:周期信号的频谱离散,非周期的连续。另外一个点就是:)

sinc的频谱是非周期矩形(连续),当sinc不断缩小,变成冲击信号,那么本该是矩形的,矩形的上变宽是不是就变成一条直线了,因此冲激信号的频谱是一条线。

2.3 傅里叶变换的特性

上面讲了傅里叶变化的基础理论。下面说特性
下面的都是重要特性:

信号的延迟:时域的延迟就是频域的旋转。
信号的乘积就是频域的卷积,频域的乘积就是时域的卷积。

p125

信号的乘积:调制和采样:就是信号相乘,在频域就是卷积
信号的卷积:过系统就是信号的卷积,不管是离散系统还是连续系统

2.4 离散傅里叶变化

前面讲的是连续的信号,该节是离散的
离散的不适合在计算机中处理,因此要推离散的公式。

正变化:使用N的采样点,经过变换后输出N个频域的点。时域离散,频域也离散(连续非周期信号频谱连续,离散非周期信号频谱离散
逆变换:频域的N点数据,输出的时域也是N点数据。

小结1:对于离散信号来说:正变换的本质就是连续的时域信号采样点N做周期延拓得到周期信号,这个周期信号做傅里叶变换(我理解为傅里叶级数,因为这是对周期信号求解),得到Ck。对于逆变换来说,本质就是有了Ck,然后通过傅里叶级数加权求和,得到连续的信号,在对这个连续的信号采样,得到离散的原始信号
小结2:非周期连续信号的正逆变换使用到了傅里叶级数(正变换从非周期变成周期然后求Ck再T无穷小。,或者逆变换是从频谱得到的Ck,加权求和成为傅里叶级数,再使得 T无穷大得到非周期信号)。这个离散的非周期信号,也理解为使用到傅里叶级数,区别在于是非周期连续信号,还是非周期离散信号,其本质的推导正逆变换都类似。非周期离散的也是先周期化,然后求Ck.。逆变换(频到时域),也是类似的,先由Ck得到傅里叶级数,再采样一个时钟周期的点。即:非周期离散信号和非周期连续信号的正逆变换都是借用了傅里叶级数l来实现的

P138

采样点数N和频谱坐标K的关系,K属于0~N-1。如果K不加限制,则频谱是以N为周期进行循环的,如-1HZ,那就在k=8的位置。
DFT得到的数值需要除采样点数,得到的值就是信号的傅里叶系数。

P141

对一个连续信号采样,得到离散信号,对这个离散信号进行傅里叶变化,得到的Ck,其值和连续信号的傅里叶变换是一致的。

三 信道

P153
对于无线传输,信道就是天空或者线路,空中有干扰,因此,信号传输的带宽有限制

信道容量:最大传输速率 :C =Blog2(1+S/N)

3.1 衰减和损耗

  • 路径损耗:距离原因
  • 大尺度衰落:遮挡
  • 小尺度衰落:多径传播(也就是出现延迟,出现信号的叠加,可能是增强,也可能是衰减)

相干带宽:Bc=1/tao.

选择信衰落:如果信号的带宽远大于想干带宽,不同频率成分经过多径传输后到接收机的幅度增益差别很大。即:多频率传输需要满足想干带宽,否则一些频率会被弱化。

平坦衰落:避免失真,B<Bc;不同频率的幅度增益相差不大

3.2 多普勒效应

多普勒效应会造成发射频率和接受频率不一样。

如果多普勒效应+多径传输,接受信号的频率就被扩展。

相干时间:多径信道的想干时间 Tc=1/fd ; fd为多普雷平移

快衰落和慢衰落,符号的想干时间远大于想干时间,符号持续器件的信号幅度波动很大,为快衰落,反之T<Tc为慢衰落

小结:信道有信道容量。其中衰落都是幅度的波动(有增有减),导致这个的原因有多径多普勒,因此引入了相干带宽和相干时间,分别确保信号带宽和符号的长度。

四 信源编码

模拟信号进来,开始AD转换(模数转换:采样 和量化),之后就是压缩编码。

首先看采样需要知道的理论:

4.1 采样

**采样的原理:**时域看就是采点,频域看就是周期延拓。一般来说采样为2f即可(但是如果点都在零点就有问题了)。

频率混叠:d对于基带信号(频谱上零频附近的信号)Fs<2f。会出现混叠。对于频带信号或成为带通信号(带宽在高频处),则使用带通采样(带通采样可以分为过采样和欠采样,基带信号只能是过采样),采样频率计算在p279

重建的原理:从时域看就是每一个点乘一个sinc函数,每一个点的位置不会存在其他信号的干扰,点中间的位置就是sinc函数的叠加,就奇妙的恢复出原始的连续的模拟信号

4.2 量化

参数:

  • 量化级数
  • 量化误差(量化噪声)
  • 量化信噪比

对于量化来说分为各种量化方法:均匀、非均匀

4.3 编码

量化后的信号通过二进制表示、可以压缩

五 基带信号的发送和接受

5.1 脉冲成形

数字信号不可能直接在信道中发射,一般是需要转换成脉冲信号。如矩形脉冲信号,

P222
考虑矩形脉冲的频谱是怎么样的,就是一个sinc函数,且含有 很多小尾巴,频谱是无线的。
为了发一个适合的波形(即频谱上看,频率选择是有限的),那就发sinc函数(sinc的频谱是矩形,之前讲过傅里叶变换的偶函数对称性)

P224:我们这里考虑发基带信号(即不做调制)
从时域上看,发1010,那么先发0 sinc就是正的,1就是sinc是负的。发了一个sinc之后,隔一段时间再发一个sinc,这个一定从时域去理解。

接受的时候,我就会从时域上接受到这个sinc的时域波形,我会对这个波形进行采样,如此恢复出1010

如何实现这个sinc波形呢
P225
图上是单位冲击响应出入到一个LPF这个系统,就可以得到。一个冲激信号的频谱是一条直线(可以是正的,也可以是负的),一个低通滤波器的频谱是一个矩形,一个直线(可以是正的,也可以是负的)乘一个矩形,就是得到一个可以是正的或者是负的在时域上的sinc函数。

sinc函数的发送间隔取1/(2B) ,B是低通滤波器的带宽。码元速率就是R=2B

如何理解这个B,一般傅里叶变换之后会有负频率(这个是由使用复指数信号来做分析得来的),如果看图中零频附加的矩形脉冲,图中标注了B的位置,可以自己从矩形脉冲中间画竖线,右边的B就是带宽,左边的负频率其实没有用,只是计算的时候使用复指数方便计算才有的,另外,负频谱,比如1khz 和 -1khz,就看做一个频率就好了,发信号的时候也不会发一个-1khz的信号嘛。

当我们得到这个sinc函数,会发现,我们其实只需要xsinc函数的最高点,并不希望它有很多拖尾。因为两个sinc发送的间隔如果出现定时误差(即没有按照1/(2B)的速率来发送),那么串扰增大,因此我们使用升余弦滚降滤波器(就是减少尾巴的幅度注意,对信号的处理都是对频率幅度的处理,增加减小的都是幅度

5.2 眼图

眼镜越大越好,眼图的线越清晰越好:表示这码间串扰的强弱

小结:基带信号是数字的,要传递数字就需要将数字转换为一个波形(可以是模拟的也可以是离散的),这个波形可以是矩形的,也可以是sinc,一般是sinc,然后需要对sinc进行处理,让尾巴小一点。

六 频带信号的发送和接受

基带信号不适合信道的传输,因为长距离,天线等等各种原因。因此需要将这个脉冲成形的信号,调制到高频载波上

调制是什么:就是通过基带脉冲成形的数字或者模拟信号去改变高频的信号。这里需要明白,脉冲成形的信号可以是模拟的(就是连续的波形)也可以是数字的(离散的波形数据)

调制分为两种,模拟和数字

6.1 模拟调制

比如时域上只有一个sinc函数(脉冲成形的波形),这个sinc去乘cos,就可以另外一个波形,如果是连续的sinc,就得到连续的波形

6.1 .1 幅度调制

P235
图中的低频电信号,或者可以说为脉冲成形的一个波形(sinc函数组成的时域信号),将这个波形和高频载波相乘,得到另外一个时域的波形。这个就是调制。(脉冲成形的波形幅值必须大于0

解调的方法看书上

6.1 .2 双边带调制

幅度调制携带了不用的信息,则引出了双边带调制

解调:相干解调

6.1 .3 单边带调制

P243:

双边带调制会占用更多的带宽:图中解释,本来脉冲成形的信号是基带信号(包括负频率和正频率),调制的时候看图中正频率和负频率是不是增加之前正和负频率的两倍,计算的时候是正的和负的频率都要有**,发送的时候只看正的。**

解调:相干解调

6.1 .4 IQ调制(正交调制)

之前是一路模拟信号(脉冲成形的信号)过来乘一个高频载波,现在是两路信号分别乘cos和sin,然后合在一起,发射出去。

IQ调制原理:因为是正交的,输入的两路信号,先从信号为一个点来看,也就是代表着是一个向量,这个向量乘上cos或者sin,也就是乘乘上了这个旋转。随着时间的变化,会发现两个分别的乘积在三维图上是不相干的,一直是垂直的,所以不相互影响。

解调:也是相干解调

小结:比如时域上只有一个sinc函数(脉冲成形的波形),这个sinc去乘cos,就可以另外一个波形,如果是连续的sinc,就得到连续的波形

6.2 数字调制

脉冲成形的信号可能是模拟的,也可能是数字的。那么是数字的调制怎么弄呢。

最终本质都是调解高频载波的幅度、相位。,模拟调制就是用脉冲成形的波形去改变(比如时域上只有一个sinc函数(脉冲成形的波形),这个sinc去乘cos,就可以另外一个波形,如果是连续的sinc,就得到连续的波形)

数字调制也是改变一段波形的方式

6.2 .1 PSK/BPSK/QPSK调制

PSK: 0 和 1 分别表示一段波形,相位不同
BPSK:00 11 10 01 分别表示4中波形

6.2 .2 QAM调制

逐渐的,一个波形可以表示的二进制越来越多
从复平面上看:16qam,横坐标表示4个bit的数,纵坐标也是4bit的数…以此类推

对于模拟调制,一个sinc代表一个bit,也就是一个脉冲成形的波形代表一个bit。

P255:
对于数字调制,现将0110转换为矩形脉冲(这里的脉冲成形就是矩形脉冲了,不是sinc函数),这个矩形脉冲在计算机里其实就是一段序列,载波信号也是一段序列,序列相乘等于对应的序号相乘

BPSK或者QPSK都可以使用IQ调制的方法,都是使用星座图去做映射。

需要注意的是,要传输的数据才是星座图上的点,而IQ坐标系上的坐标值是映射,I Q两个信号映射的点才是传输的码元(如16QAM的码元为4bit)。

这里要理解星座图,是通过IQ两路信号来调整信号的相位和幅度。

小结:调制就是将脉冲成形后的信号去改变载波信号的幅度和相位。模拟脉冲成型的信号直接和载波相乘的方式,数字的信号也可以脉冲成形(可以是矩形),也可以通过IQ调制的方式(即用星座图映射的方式来发信息,本质就是IQ信号来控制载波信号的幅度和相位)

6.3 变频技术

直接上变频:基带直接到频带(可以发送的信号)
一般使用间接上变频:即加一个中频链路。

基带到中频,和基带到射频的区别就是乘的载波是中频的载波。中频到射频就是再乘一个射频的载波

6.4 采样技术

基带采样:零频附近的信号。只能过采样
带通采样:或者称为频带采样。可以欠采样(太高频了,硬件达不到,所以用混叠的特点去做欠采样),也可以过采样。

7 天线技术

7.1 多天线技术

7.1.1 分集技术SIMO

一根天线的一个信号分成多路传输(这里的多路是指传播不同的发射方向,天线还是一根天线),接受用2根天线。两个天线收集到的信号选择信的合并(理解为弱的用强的代替)

这里的SIMO,MO是只多路路径发射传输,SI指本质只有一路信号(接受到的多路信号要做合并的)。

7.1.2 MIMO

8 复用和多址技术

TDM:时分复用。从时间轴来看,将信号分为时隙来传输。
FDM:即多个频率的载波(一个载波coswt,可以调制出一路信号,多路就可以传多路)
FDMA:动态的FDM,动态的是指动态的分配用户

OFDM/OFDMA:FDM频分复用,但是载波之间会有干扰,因此增加了保护带宽,造成频谱的浪费。如果载波之间是正交的,那么就不怕干扰 了。

P317
这里就是很多地方看到的经典的图,所有子载波之间是正交的,在调制的时候,各自使用各自的子载波进行调制,就可以清晰的解调出来(也就是之前单载波解调的方式)。

单个载波的发射就是之前将的,多个载波的一起发射怎么做呢?

8.1 OFDM

注意顺序:数字bit—>星座图映射---->IQ数据---->先调制到N路正交子载波(这例的w0是零频附近的频率)---->叠加起来得到OFDM基带调制信号,注意是基带—>IQ调制(就是乘上射频载波)

8.1.1 OFDM调制

利用IDFT实现OFDM调制

P318
OFDM调制:
这里简单理解数字调制和OFDM调制的区别就明白OFDM调制的原理:
P320:
原来的数字调制就是数字bit映射到星座图中得到IQ信号,然后将IQ信号分别乘cos和sin。现在的ofdm调制就是星座图映射的IQ还是那个IQ,但是这个IQ要取找对应自己的那个载波,wc+kw0。本质上就是N路iq调制

一个复数分别取实部和虚部做IQ调制(就是将IQ信号分别乘cos和sin) ,和直接用复数去调制复指数载波取实部。如果9-17

8.1.2 OFDM解调

核心就是求IQ这个复数,得到I和Q两路信号,再星座图得到数字bit

OFDM符号长度就是载波频率间隔的倒数 1/f

一个符号包含了一段数据,比如这里有N个子载波,那么就可以解出N个IQ复信号。因此需要使用DFT对OFDM符号解调

IDFT就是将N个频域的样点(IQ复信号)转换为时域的样点,然后再进行IQ调制得到s(t)。

P325
其中DA转换器,就是将IDFT得到的时域的信号进行采样得到连续的信号,送给模拟的进行IQ调制。后面就是模拟的调制了。

另外,这里说的采样率,是指这个OFDM符号内一共获得的样本数(IQ复信号的数量),而不是对一个时域信号采样的点数

P327
例子中用20M带宽的OFDM基带信号举例,注意这里是基带信号。
基带信号是零频附近,如果调制后,其实负频率也会被调制到频带上,即负频率也会占用带宽

这里只看OFDM基带信号,20M的子载波2048个(20_000_000/15_000 = 1333.33 )IDFT取2^N,即2048
因为是基带嘛,所以将这个20M分为负和正各10M,因此算最高频率为N/2f0=2048/215khz = 15.36MHZ

根据基带信号的采样,只能是过采样,即使用30.72MHZ来采样,因此20MHZ使用30.72.。实际上2048个子载波只有1200个子载波是有调制数据的,实际上占用的带宽只有15*1200/2=9MHZ

最后:对于脉冲成形和数字调制、OFDM调制 这里其实有点乱,还需要看书去理解顺序,后续再对本文章做梳理

总结

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Renesas R7FA8D1BH (Cortex®-M85)控制ISLS29035
  • QT + WebAssembly + Vue环境搭建
  • eclipse使用 笔记02
  • 【Linux系统编程】用互斥量和信号量加锁STL容器,避免并发问题
  • 【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】005 - Kernel 入口 C 函数 start_kernel() 源码分析
  • 在linux下,找到指定命令对应的路径信息
  • MCN跨国企业如何从0到1搭建ITSM运维体系
  • MATLAB、FPGA、STM32中调用FFT计算频率、幅值及相位差
  • Spring 的循环依赖
  • MAC 地址简化概念(有线 MAC 地址、无线 MAC 地址、MAC 地址的随机化)
  • C++笔记---多态
  • 『功能项目』项目优化 - 框架加载资源【41】
  • 【计算机网络】HTTP相关问题与解答
  • ARM/Linux嵌入式面经(三五):诺瓦星云提前批
  • JavaScript高级——循环遍历加监听
  • ComponentOne 2017 V2版本正式发布
  • Electron入门介绍
  • express如何解决request entity too large问题
  • Fastjson的基本使用方法大全
  • isset在php5.6-和php7.0+的一些差异
  • java中具有继承关系的类及其对象初始化顺序
  • js写一个简单的选项卡
  • leetcode46 Permutation 排列组合
  • mysql外键的使用
  • python docx文档转html页面
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 机器学习 vs. 深度学习
  • 前端面试之闭包
  • 入口文件开始,分析Vue源码实现
  • 使用API自动生成工具优化前端工作流
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 我从编程教室毕业
  • 湖北分布式智能数据采集方法有哪些?
  • # .NET Framework中使用命名管道进行进程间通信
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #微信小程序(布局、渲染层基础知识)
  • $.ajax()
  • (2.2w字)前端单元测试之Jest详解篇
  • (6)添加vue-cookie
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (二)Linux——Linux常用指令
  • (分布式缓存)Redis持久化
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (转)ObjectiveC 深浅拷贝学习
  • .java 9 找不到符号_java找不到符号
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .Net Core 微服务之Consul(二)-集群搭建
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args