视频自学笔记

一、视频技术基本框架

二、视频信号分类

2.1信号形式

2.1.1模拟视频

模拟视频是指由连续的模拟信号组成的视频图像,以前所接触的电影、电视都是模拟信号,之所以将它们称为模拟信号,是因为它们模拟了表示声音、图像信息的物理量。摄像机是获取视频信号的来源,早期的摄像机以电子管作为光电转换器件,把外界的光信号转换为电信号。摄像机前的被拍摄物体的不同亮度对应于不同的亮度值,摄像机电子管中的电流会发生相应的变化。模拟信号就是利用这种电流的变化来表示或者模拟所拍摄的图像,记录下它们的光学特征,然后通过调制和解调,将信号传输给接收机,通过电子枪显示在荧光屏上,还原成原来的光学图像。这就是电视广播的基本原理和过程。模拟信号的波形模拟着信息的变化,其特点是幅度连续(连续的含义是在某一取值范围内可以取无限多个数值)。其信号波形在时间上也是连续的,因此它又是连续信号。

模拟视频的特点如下:

优点:技术成熟、价格低、系统可靠性较高。

缺点:不适宜进行长期存放,不适宜进行多次复制。随着时间的推移,录像带上的图像信号强度会逐渐衰减,造成图像质量下降、色彩失真等现象。

来自 <https://zhuanlan.zhihu.com/p/54045642>

2.1.2数字视频

数字视频是对模拟视频信号进行数字化后的产物,它是基于数字技术记录视频信息的。模拟视频可以通过视频采集卡将模拟视频信号进行A/D(模/数)转换,这个转换过程就是视频捕捉(或采集过程),将转换后的信号采用数字压缩技术存入计算机磁盘中就成为数字视频。模拟视频一般采用分量数字化方式,先把复合视频信号中的亮度和色度分离,得到YUV或YIQ分量,然后用三个模/数转换器对三个分量分别进行数字化,最后再转换成RGB空间。

来自 <数字视频 - 知乎>

2.2传输方式划分

按传输方式,我们首先将视频分为复合视频(Composite Video)和分量视频(Component Video)。

复合视频只用一个通道(这也是为什么叫复合信号)进行视频传输,只传输模拟信号,传输的是480i或720i标清(480p或720p)的视频。复合视频不能携带音频信号。

分量视屏分为模拟分量视屏和数字分量视屏。

数字分量视频使用YCbCr颜色空间(或R'G'B'),它将视频信号分为多个分量进行传输(数字信号),当用于广播和录制时,将其调制为复合NTSC、PAL、SECAM信号。

模拟分量分频一般使用YPbPr颜色空间,它将视频信号分为多个分量进行传输(模拟信号),并且不携带音频信号。

2.3按分辨率划分

视屏的分辨率概念比较简单,就是组成视屏的每一帧图像的像素点数量,一般用行和列像素相乘来表示。视屏分辨率决定了视屏的清晰度,也决定了模拟视屏的带宽和数字视频的数据量大小。常见的有720×480,1280×720,1920×1080,现在还有3840x2160,7680x4320。

2.4扫描方式

视频是一系列静止图像组成,而每幅图像由扫描线(沿着显示器从上到下,一行一行的数据线)组成。如下图,

 上方的就是一帧一帧的静止图像,下方的就是一帧图像的扫描线组成。视频(其实是图像)在显示器上按照一定时间刷新,显示器需要知道什么时候刷新,因此需要两个信号来告诉显示器如何显示。第一个是垂直同步信号,告诉显示器要显示下一幅图像了(否则一幅图像看到天亮);第二个是水平同步信号,告诉显示器要显示下一条扫描线了(否则一直刷新第一行,这能看?)。数据流大致是下图这样的,一直到视频结束。

注意:在视频中,扫描线是最小的处理单元;而图像中,像素点是最小的处理单元。

隔行扫描和逐行扫描

逐行扫描:以上讨论的其实都是逐行扫描。一帧图像从第一行扫描到最后一行,依次显示,这个很好理解,不多赘述。

隔行扫描:将图像显示在扫描式的显示设备上的方法,扫描设备交换扫描偶数行和奇数行。这样说并不直观,我们来看图。

从图中我们可以看到,对于静止图像,第一次我们扫描它的奇数行并且将他们显示到显示器中,第二次我们扫描它的偶数行并将他们显示到显示器中。扫描一次得到的一半图像,叫做场。那么,每次只扫描一半,是不是我们看到的图像也是一半呢?不是这样的。因为图像是一帧接一帧的,每次刷新一半,另一半其实是上一帧图像刷新的扫描线。

如帧1的场1,场2,帧2的场1,场2。第一次扫描帧1的场1,另一半没有,这个时候确实是半个图像,但是短到你不能发现,然后扫描帧1的场2,由于视觉暂留,你会看到场1和场2的结合,也就是完整的帧1,再之后就是帧2和场1和帧1的场2的结合,以此类推。

隔行扫描的优点就是对帧率的要求低,但是交错式的显示有时会出现闪烁效应(不具体解释,大家可以自行问度娘),显示效果不如逐行扫描。

将分辨率和扫描方式结合到一起就可以说明一下我们平常听到的1080p,720p,1080i 这些名词是什么意思了:

P:progressive,意思是逐行扫描,帧编码
I:interlace,意思是隔行扫描,场编码

1080i格式:1920×1080(水平1080线,隔行扫描)

1080p格式:1920×1080(水平1080线,逐行扫描)

720i格式:1280×720(水平720线,隔行扫描)

720p格式:1280×720(水平720线,逐行扫描)

其他分辨率类似。

2.5清晰度

视频清晰度可以如下分类:

标准清晰度:480i和576i。

增强清晰度:480p和576p。

高清晰度:720p和1080i。

超高清晰度:4K分辨率(3840×2160 像素)和8K分辨率 (7680×4320像素)

2.6按信号制式划分

视屏信号制式是指电视制式,即电视信号的标准,可以简单地理解为用来实现电视图像、声音信号所采用的一种技术标准。电视制式有很多种。对模拟电视,有黑白电视制式、彩色电视制式,伴音制式等;对于数字电视,有图像、音频信号压缩编码格式(信源编码)、TS流(Transport Stream)编码格式(信道编码)、数字信号调制方式,图像显示格式等。这里只讨论模拟电视制式。

黑白电视制式的主要内容有:图像和伴音的调制方式、图像信号极性、图像和伴音的载频差、频带宽度、频道间隔、扫描参数等。世界各国所采用的黑白电视制式有:A、B、C、D、E、G、H、I、K、K1、L、M、N等,共计13种(其中A、C、E已不采用),我国为其中的D、K制。

彩色广播电视制式需要与黑白电视制式兼容,即黑白电视能够接收彩色电视信号,彩色电视也能接收黑白电视信号,只不过画面全都变成黑白的。彩色电视根据三原色原理,同时为了压缩传输频带,将R、G、B三个基色信号转变为亮度(Y)和红、蓝两个色差信号(R-Y和B-Y)。其中亮度信号可以用来传输黑白图像,色度和亮度信号组合可以恢复出R、G、B三个信号。因此,兼容制彩色电视除传送与黑白电视相同的亮度和伴音信号外,还在同一视频频带内同时传送色度信号。色度信号是由两个色差信号对视频频带高频端的色副载波进行调制而成的。为防止色差信号的调制过载,需要将红、蓝色差信号进行压缩,压缩后的红、蓝色差信号用V、U表示。

除了包括与黑白电视相同的扫描、信道等以拉丁字母来区别的制式内容外,根据发、收端对三基色信号的不同编、解码方式构成不同的彩色电视制式。今世界流行的彩色电视制式有三种: NTSC、PAL和SECAM。这三种制式不能互相兼容。在不支持某种制式的电视机上播放该种制式的信号,画面将变为黑白色。

 https://blog.csdn.net/hit_wzj/a

三、色彩空间

人类有三种视杆细胞,可以分辨三种波长的光,因此我们能看到彩色的世界。视屏技术也需要至少三个维度来量化色彩,才能保证人类对彩色画面的需求,这就构成了一个三维的色彩空间。颜色空间有多种表示方式,在视屏技术里面有下面几种比较常用。

3.1RGB

目前的显示设备大都是采用了RGB色彩空间,RGB是从颜色的原理来设计定的,它的颜色混合方式就如有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,亮度等于两者亮度之总和,即加法混合。

屏幕上的不同颜色,都由这红色,绿色,蓝色三种基本色光按照不同的比例(权重)混合而成的。一组红色绿色蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达。因此这红色绿色蓝色又称为三原色光,用英文表示就是R(red)、G(green)、B(blue)。RGB的所谓“多少”就是指亮度,并使用整数来表示。在用8位表示时,RGB各有256级亮度,用数字量化表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。

使用这种方式表示彩色图像的方式为RGB颜色空间。RGB颜色空间常用于显示器系统。通过这种形式表示的图像,每个像素的每一个颜色分量用1个字节表示,则可以表示256×256×256种不同的颜色。在常见的图像格式中,如位图(bmp)格式以RGB形式保存数据。

3.2YUV

YUV是编码true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。

“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度(Chrominance、Chroma),包含了色调和饱和度。与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。

在实际的编解码等视频处理的过程中,YUV格式比RGB格式更为常用。在YUV格式中,一个像素由亮度分量和色度分量表示,每一个像素由一个亮度分量Y和两个色度分量U/V组成。亮度分量可以与色度分量一一对应,也可以对色度分量进行采样,即色度分量的总量少于亮度分量。

3.2.1YPbPr

YPbPr是用在模拟系统的,并且RGB和YPbPr的转换在SDTV和HDTV中是不同的。

来自 <https://zhuanlan.zhihu.com/p/28766366>

3.2.2YCbCr

YCbCr颜色空间用于数字视频系统中。

YCbCr是被ITU定义在标准ITU-R BT.601(标清SDTV),ITU-R BT.709(高清HDTV),ITU-R BT.2020(超高清)中的一种色彩空间。

YCbCr (SDTV)是在世界数字组织视频标准研制过程中作为ITU - R BT.601 建议的一部分, 其实是YUV经过Gamma的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 同样都指色彩, 只是在表示方法上不同而已。在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG,H264均采用此格式。

其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异,而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异,此即所谓的色差信号。

在视频通信系统中(特别是视频编解码)的“YUV”图像就是YCbCr。在平常的工作交流中,所称的YUV也是YCbCr。

3.2.3YUV的色度采样

因为人的感官对亮度信息的敏感度远高于对色度信息。因此相对于其他像素格式,YUV的最大优势是可以适当降低色度分量的采样率,并保证不对图像造成太大影响,这可以有效降低视屏数据量。而且,使用这种方式还可以兼容黑白和彩色显示设备。对于黑白显示设备,只需要去除色度分量,只显示亮度分量即可。

在YUV中常见的色度采样方式有4:4:4、4:2:2和4:2:0等,其中4:2:2如下图所示:

来自 <https://zhuanlan.zhihu.com/p/28766366>

3.3HSI

HSI颜色空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation)和亮度(Intensity)来描述色彩。HSI颜色空间可以用一个圆锥空间模型来描述。用这种描述HSI色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。

上图是HSI的双圆锥模型。模型中双圆锥的上顶点对应I=1,即白色;下顶点对应I=0,即黑色。色调(色相)用角度表示,0°表示红色,互补色相差180°。饱和度的取值范围从0到1,0对应于垂直轴的中心线(也就是说这条线上没有色彩,只有灰度),I=0.5时红色的饱和度为1,颜色空间中的点到I轴的距离即是其饱和度。

来自 <https://zhuanlan.zhihu.com/p/28859125>

3.4色彩空间变换

不同的色彩空间最终要表达的都是人类视觉系统能够正常识别的颜色,它们其实只是使用了不同的坐标系,就像直角坐标系和极坐标系之间的关系。它们之间可以相互转换。RGB和YUV转换关系如下:

RGB格式转为YUV格式

Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')

YUV格式转为RGB格式

R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'

四、视屏编码技术

对于视频数据而言,视频编码的最主要目的是数据压缩。这是因为动态图像的像素形式表示数据量极为巨大,存储空间和传输带宽完全无法满足保存和传输的需求。例如,图像的每个像素的三个颜色分量RGB各需要一个字节表示,那么每一个像素至少需要3字节,分辨率1280×720的图像的大小为2.76M字节。

如果对于同样分辨率的视频,如果帧率为25帧/秒,那么传输所需的码率将达到553Mb/s!如果对于更高清的视频,如1080P、4k、8k视频,其传输码率更是惊人。这样的数据量,无论是存储还是传输都无法承受。因此,对视频数据进行压缩称为了必然之选。

4.1标准化组织

在国际组织的独立和联合开发中,产生了很多重要的视频编解码标准。主要国际组织包括ISO/IEC MPEG、ITU-T、Google、Microsoft、AVS工作组和AOM联盟等。

ITU-T,全称International Telecommunications Union - Telecommunication Standardization Sector,即国际电信联盟——电信标准分局。该组织下设的VECG(Video Coding Experts Group)主要负责面向实时通信领域的标准制定,主要制定了H.261/H263/H263+/H263++等标准。

ISO,全称International Standards Organization,即国际标准化组织。该组织下属的MPEG(Motion Picture Experts Group),即移动图像专家组主要负责面向视频存储、广播电视、网络传输的视频标准,主要制定了MPEG-1/MPEG-4等。

实际上,真正在业界产生较强影响力的标准均是由两个组织合作产生的。比如MPEG-2、H.264/AVC和H.265/HEVC等。

主要标准包括:JPEG、MJPEG、JPEG2000、H.261、MPEG-1、H.262/MPEG-2、H.263、MPEG-4 (Part2/ASP)、H.264/MPEG-4 (Part10/AVC)、H.265/MPEG-H (Part2/HEVC)、H.266/VVC、VP8/VP9、AV1、AVS1/AVS2、SVAC1/SVAC2等。

4.2主流视屏编码标准

主流视屏编码的发展历程如下图

接下来我们主要摘录下面接种影响较大的编码技术。

4.2.1 H.261

H.261视频编码标准诞生于1988年,可谓是视频压缩编码发展的第一个里程碑。因为从H.261开始,视频编码方法采用了沿用至今的基于波形的混合编码方法。H.261标准主要目标是用于视频会议和可视电话等高实时性、低码率的视频图像传输场合。

在H.261标准产生的时代,由于各国的电视制式不一致,因此不能直接互通。为了解决数据源格式不兼容的问题,H.261定义了一种公共中间格式CIF(Common Intermediate Format)。编码的目标格式首选转换为CIF格式进行编码和传输,接收端进行解码后再转换为各自的格式。H.261规定的CIF格式视频的亮度分辨率为352×288,QCIF格式的亮度分辨率为176×144。

4.2.2 MEPG-2/H.262

MPEG组织于1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性。MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定,编码码率从每秒3兆比特~100兆比特,标准的正式规范在ISO/IEC13818中。MPEG-2不是MPEG-1的简单升级,MPEG-2在系统和传送方面作了更加详细的规定和进一步的完善。MPEG-2特别适用于广播级的数字电视的编码和传送,被认定为SDTV和HDTV的编码标准。

MPEG-2图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。这两种相关性使得图像中存在大量的冗余信息。如果我们能将这些冗余信息去除,只保留少量非相关信息进行传输,就可以大大节省传输频带。而接收机利用这些非相关信息,按照一定的解码算法,可以在保证一定的图像质量的前提下恢复原始图像。一个好的压缩编码方案就是能够最大限度地去除图像中的冗余信息。

MPEG-2的编码图像被分为三类,分别称为I帧,P帧和B帧。 I帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。P帧和B帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性。P帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P帧图像中可以包含帧内编码的部分,即P帧中的每一个宏块可以是前向预测,也可以是帧内编码。B帧图像采用双向时间预测,可以大大提高压缩倍数。

4.2.3 H.264/AVC

H.264是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准。在ISO/IEC中该标准命名为AVC (Advanced Video Coding),作为MPEG-4标准的第10个选项;在ITU-T中正式命名为H.264标准。

4.2.4 H.265/HEVC

H.265是ITU-T VCEG 继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。具体的研究内容包括:提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。H264由于算法优化,可以低于1Mbps的速度实现标清数字图像传送;H265则可以实现利用1~2Mbps的传输速度传送720P(分辨率1280*720)普通高清音视频传送。

4.3视屏压缩编码技术

视频信息之所以存在大量可以被压缩的空间,是因为其中本身就存在大量的数据冗余。其主要类型有:

时间冗余:视频相邻的两帧之间内容相似,存在运动关系
空间冗余:视频的某一帧内部的相邻像素存在相似性
编码冗余:视频中不同数据出现的概率不同
视觉冗余:观众的视觉系统对视频中不同的部分敏感度不同

以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz或3.375MHz。以4:2:2的采样频率为例,Y信号采用13.5MHz,色度信号U和V采用6.75MHz采样,采样信号以8bit量化,则可以计算出数字视频的码率为:

13.5*8 + 6.75*8 + 6.75*8= 216Mbit/s

如此大的数据量如果直接进行存储或传输将会遇到很大困难,因此必须采用压缩技术以减少码率。

数字化后的视频信号能进行压缩主要依据两个基本条件:

  • 数据冗余。例如如空间冗余、时间冗余、结构冗余、信息熵冗余等,即图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。
  • 视觉冗余。人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。这种压缩属于有损压缩。

数字视频信号的压缩正是基于上述两种条件,使得视频数据量得以极大的压缩,有利于传输和存储。一般的数字视频压缩编码方法都是混合编码,即将变换编码,运动估计和运动补偿,以及熵编码三种方式相结合来进行压缩编码。通常使用变换编码来消去除图像的帧内冗余,用运动估计和运动补偿来去除图像的帧间冗余,用熵编码来进一步提高压缩的效率。下文简单介绍这三种压缩编码方法。

五、视屏接口

5.1模拟视屏接口

根据传输方式,模拟视屏的接口有以下三类:

5.1.1复合视屏接口

1.消费类接口RCA

RCA端子(RCA jack,或RCA connector),俗称梅花头、莲花头,是一种应用广泛的端子,可以应用的场合包括了模拟视频/音频(例:AV端子(三色線))、数字音频(例:S/PDIF)与色差分量(例:色差端子)传输等。

下图是AV端子(是不是很眼熟,小时候家里的VCD用的就是这个东西)

2.专业接口BNC

专业视屏领域会使用BNC接头,使用同轴电缆来传输视屏信号,有效提升信号质量、抗干扰能力和传输距离。

5.1.2分量视屏接口

1.SDTV/HDTV

针对有RGB和YUV两种色彩的信号SDTV/HDTV定义了两种接头

RGB Interface:

SDTV RGB接口使用三个RCA梅花连接头,传输模拟R'G'B'信号。

注意:这里使用的RCA连接头的颜色分别似乎红、绿、蓝,而我们最开始介绍的RCA端子使用的是黄、白、红,它们是完全不同的接口,传输不同的信号,注意区分。

YPbPr Interface:

SDTV YPbPr接口使用三个RCA梅花连接头,传输模拟YPbPr信号。

因为人眼对绿色最敏感,因此Y一般用绿色表示(我是这么理解的),也可以理解成PbPr分别是蓝色色差分量、红色色差分量,所以分别用蓝色和红色表示,剩下的亮度就用绿色表示了。

 上图的仪器就支持S-Video,YPbPr,CVBS(复合同步视频广播信号,也叫RCA视频)。

2. D-Connector Interface

在日本和新加坡,某些高端消费类设备上,14针母D型连接头是可用的。它们主要用于转换EIA 770.2或EIA 770.3模拟YPbPr数据。

来自 <https://zhuanlan.zhihu.com/p/28944235>

3.VGA接口

VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。

VGA线的母头如下图。

各个引脚功能

 来自 <https://zhuanlan.zhihu.com/p/28944235>

5.1.3分离视屏接口

S-Video(separate video)信号是Y、C分离信号。传输亮度信号Y和色度信号C。S-Video用于传输标清视频信号,尤其是480i和576i视频。由于亮度信号和色度信号分离,因此它的视频效果要比composite video要好,但是比component video差。

S-Video主要在美国、日本等NTSC制国家中使用。

5.2

数字视屏接口

5.2.1 SDI:

串行数字接口(SDI,Serial Digital Interface),SD/HD/3G/6G/12G-SDI;

 SDI理论上传输距离可达100m,而HDMI的传输距离一般在30m以内。

5.2.2 HDMI

高清晰度多媒体接口(英文:High Definition Multimedia Interface,HDMI)

 HDMI接口的线20米要400到600RMB,如果按照这个计量标准,SDI要使用几百米估计得破产了。然而实际上SDI的线1米才几块钱,就算是200米也才不到1000块钱。所以SDI比HDMI的成本更低!

5.2.3 DVI

DVI(Digital Visual Interface),即数字视频接口。

5.2.4 DisplayPort

DisplayPort也是一种高清数字显示接口标准,简称DP,比HDMI更先进的是,DisplayPort在一条线缆上还可实现更多的功能。

5.2.5 雷电

Intel“Thunderbolt”(雷电)接口。融合了PCIExpress数据传输技术和DisplayPort显示技术,可以同时对数据和视频信号进行传输,并且每条通道都提供双向10Gbps带宽。

 本文主要参考来源:视屏技术自学笔记 - 知乎

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker单机网络:解锁本地开发环境的无限潜能

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…

Golang 八股(持续补充...)

目录 进程、线程、协程 Go语言——垃圾回收 GC的触发条件 GC调优 GMP调度和CSP模型 Groutine的切换时机 Goroutine调度原理 Goroutine的抢占式调度 Context结构原理 Context原理 Golang内存分配机制 竞态、内存逃逸 golang内存对齐机制 golang中new和make的区别&a…

手机中的核心SOC是什么?

大家好&#xff0c;我是山羊君Goat。 常常听说CPU&#xff0c;中央处理器等等的&#xff0c;它是一个电脑或单片机系统的核心&#xff0c;但是对于SOC可能相比于CPU了解的人没有那么广泛。 所以SOC是什么&#xff1f; SOC全称是System on Chip&#xff0c;就是片上系统&#…

绿虫光伏设计系统:清洁能源的未来

煤炭、石油、天然气是我们现在依赖的重要能源&#xff0c;但这些能源难以再生&#xff0c;而且开采过程中会产生污染。太阳能发电作为清洁能源的一种重要形式&#xff0c;受到了越来越多的关注。绿虫光伏发电系统&#xff0c;不仅考虑到其发电效率&#xff0c;还可以考虑其经济…

R语言 | ComplexHeatmap 画注释若干基因的热图 //todo

一般顺序&#xff1a; 先用 pheatmap 聚类再用 ComplexHeatmap 做可视化&#xff1a;添加顶部、左侧聚类颜色&#xff0c;显示若干代表性基因 genec("Gene18", "Gene19", "Gene7","Gene3", "Gene9", "Gene15") …

springmvc的简介

SpringMVC的介绍与第一个程序的开发步骤 1. 介绍 SpringMVC是一个实现了MVC架构模式的Web框架&#xff0c;底层基于Servlet实现。 SpringMVC已经将MVC架构模式实现了&#xff0c;因此只要我们是基于SpringMVC框架写代码&#xff0c;编写的程序就是符合MVC架构模式的。&#x…

Java Web 4 Maven

本文详细介绍了Maven的用途&#xff0c;包括依赖管理、项目结构统一和构建流程标准化&#xff1b;然后讲解了Maven的安装、IDEA中的集成以及依赖管理的核心概念。 1 什么是Maven&#xff1f; 什么是apache&#xff1f; 2 Maven的作用 &#xff08;1&#xff09;方便依赖管理 有…

基于SpringBoot+Vue的宠物咖啡馆系统-无偿分享 (附源码+LW+调试)

目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 研究目的 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 概述 7.2 系统流程和逻辑 7.3 系统结构 8. 数据库设计 8.1 数据库ER图 &#xff08;1&#xff09;宠物订…

flex: 1 display:flex 导致的宽度失效问题

flex: 1 & display:flex 导致的宽度失效问题 问题复现 有这样的一个业务场景&#xff0c;详情项每行三项分别占33%宽度&#xff0c;每项有label字数不固定所以宽度不固定&#xff0c;还有content 占满标签剩余宽度&#xff0c;文字过多显示省略号&#xff0c; 鼠标划入展示…

利用tablesaw库简化表格数据分析

tableaw是处理表格数据的优秀工具。它提供了一组强大而灵活的功能&#xff0c;使操作、分析和可视化数据表变得容易。在这篇博文中&#xff0c;我们将介绍tableaw的主要特性、如何使用这些特性&#xff0c;以及如何使用tableaw处理表格数据的一些示例。 tablesaw简介 tableaw…

【看海的算法日记✨优选篇✨】第二回:流动之窗,探索算法的优雅之道

&#x1f308; 个人主页&#xff1a;谁在夜里看海. &#x1f525; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 一、算法思想 双指针 滑动窗口 二、具体运用 1.⻓度最⼩的⼦数组 算法思路 算法流程 代码 2.最⼤…

MicroBlaze软核开发(一):Hello World

实现功能&#xff1a;使用 MicroBlaze软核 串口打印 Hello World Vivado版本&#xff1a;2018.3 目录 MicroBlaze介绍 vivado部分&#xff1a; 一、新建工程 二、配置MicroBlaze 三、添加Uart串口IP 四、生成HDL文件编译 SDK部分&#xff1a; 一、导出硬件启动SDK 二、…

camera驱动开发(初学)

camera驱动开发 初学camera驱动开发 随笔记一下顺便整理一下初学的学习路线。内容来源于各大网站&#xff0c;大自然的搬运工。 一、camera基本概念 ①三路电压 camera包含的三路电压为模拟电压&#xff08;VCAMA&#xff09;&#xff0c;数字电压&#xff08;VCAMD&#x…

在Ubuntu22.04.5上安装Docker-CE

文章目录 1. 查看Ubuntu版本2. 安装Docker-CE2.1 安装必要的系统工具2.2 信任Docker的GPG公钥2.3 写入软件源信息2.4 安装Docker相关组件2.5 安装指定版本Docker-CE2.5.1 查找Docker-CE的版本2.5.2 安装指定版本Docker-CE 3. 启动与使用Docker3.1 启动Docker服务3.2 查看Docker…

C# 编程效率提升指南:掌握算数运算、循环与方法封装

在这篇文章中将带你深入探索C#中的几大关键技术点&#xff0c;从如何精准进行算数运算、灵活运用循环控制结构&#xff0c;到通过方法封装提升代码的复用性&#xff0c;再到正确使用可空类型避免潜在的空值引用异常&#xff0c;这些概念和技巧无一不是编写清晰、高效、健壮代码…

常见Linux命令(详解)

文章目录 常见Linux命令文件目录类命令pwd 打印当前目录的绝对路径ls 列出目录内容cd 切换路径mkdir 建立目录rmdir 删除目录touch 创建空文件cp 复制文件或目录rm 移除文件或者目录mv 移动文件与目录或重命名cat 查看文件内容more 文件分屏查看器less 分屏显示文件内容head 显…

html+css网页设计 旅游 马林旅行社3个页面

htmlcss网页设计 旅游 马林旅行社3个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…

【目标跟踪】AntiUAV600数据集详细介绍

AntiUAV600数据集的提出是为了适应真实场景&#xff0c;即无人机可能会随时随地出现和消失。目前提出的Anti-UAV任务都只是将其看做与跟踪其他目标一样的任务&#xff0c;没有结合现实情况考虑。 论文链接&#xff1a;https://arxiv.org/pdf/2306.15767https://arxiv.org/pdf/…

网络——HTTP与HTTPS三次握手和四次挥手

HTTP协议本身并不直接处理TCP连接的建立和关闭&#xff0c;这些是由底层的TCP协议来完成的。但是&#xff0c;由于HTTP通常运行在TCP之上&#xff0c;因此理解TCP的三次握手&#xff08;用于建立连接&#xff09;和四次挥手&#xff08;用于关闭连接&#xff09;对于理解HTTP通…

Issue id: AppLinkUrlError 应用intent-filter 配置深链接 URL 问题分析 | AndroidManifest

AndroidManifest.xml 配置文件中&#xff0c;对 activity 组件进行声明的时候&#xff0c;独立应用在 IDE 显示 intent-filter 报错&#xff0c;但不影响实际编译&#xff0c;因为是系统应用&#xff0c;肯定会有此 URL 的存在。 AOSP 源码&#xff1a; <activity android:…