语音识别相关概念
声音如何保存成数字信号?
声音是听觉对声波产生的感知,而声波是一种在时间和振幅上连续的模拟量,本质是介质的振动,,比如空气的振动。那么只需要把这个振动信号记录下来,并用一串数字来表达振动信号振动的快慢和振动的幅度,就可以实现声音的记录。
以前的留声机就是通过唱片上凹槽的深浅、长短来表征声音的振幅和持续时间。
而通过麦克风来采集声音步骤如下:
- 首先,声波通过空气传播到麦克风的振膜。
- 然后,振膜随空气抖动的振幅大小产生相应的电学信号。我们把这种带有声学表征的电学信号叫做模拟信号(Analog signal)。
- 最后,通过A/DC(模数转换器)将模拟信号转换成数字信号(Digital signal)。即通过脉冲编码调制(Pulse Code Modulation,PCM)对连续变化的模拟信号进行抽样、量化和编码转换成离散的数字信号。
PCM编码过程如下图所示:
PCM编码过程
(1) 采样
将时间连续的模拟信号按照采样率提取样值,变为时间轴上离散的抽样信号的过程。
人耳可以听到的声波频率范围是 20Hz~22.05kHz,因此44.1kHz/16bit的音频数据被认为是无损音频。
(2) 量化
抽样信号虽然是时间轴上离散的信号,但仍然是模拟信号,其样值在一定的取值范围内,可有无限多个值。显然,对无限个样值给出数字码组来对应是不可能的。为了实现以数字码表示样值,必须采用“四舍五入”的方法把样值分级“取整”,使一定取值范围内的样值由无限多个值变为有限个值。这一过程称为量化。
量化后的抽样信号与量化前的抽样信号相比较,当然有所失真,且不再是模拟信号。这种量化失真在接收端还原模拟信号时表现为噪声,并称为量化噪声。量化噪声的大小取决于把样值分级“取整”的方式,分的级数越多,即量化级差或间隔越小,量化噪声也越小。
(3) 编码
量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。简单高效的数据系统是二进制码系统,因此应将十进制数字代码变换成二进制编码。这种把量化的抽样信号变换成给定字长(采样位数)的二进制码流的过程称为编码。
经过上面的PCM编码过程得到的数字信号就是PCM音频数据
PCM文件
PCM文件就是未经封装的音频原始文件或者叫做音频“裸数据”。涉及3个基本概念:采样位深、采样率和通道数。
采样位深
采样位深也就是每个采样点用多少bit来表示。
从物理意义上来说,位深代表的是振动幅度的表达精确程度或者说粒度。
假设数字信号是一个1到-1的区间,如果位深为16bit,那么第1个bit表示正负号,并且剩下的15个bit可以表征0~32767个数,那么振幅就可以精确到1/32768的粒度了。
一般在网络电话中用的就是16bit的位深,这样不太会影响听感,并且存储和传输的耗费也不是很大。而在做音乐或者更高保真度要求的场景中则可以使用32bit甚至64bit的位深来减少失真(高采样位深可以减少失真)。
题外话:有的音乐就追求这种模糊感,所以“8bit”有的时候也代表一种听感朦胧的音乐艺术类型。
采样率
采样率就是1秒内采集到的采样点的个数(赫兹Hz)。常用为 16kHz和48kHz。
根据奈奎斯特采样定理在进行模拟/数字信号的转换过程中,当采样频率 f s f_s fs大于信号中最高频率 f m a x f_{max} fmax的2倍时,采样之后的数字信号才可以完整地保留原始信号中的信息。也就是说采样率和保留的声音频率基本上是2倍的关系。
下图的频谱图对比16kHz采样率和48kHz采样率的音频:

16kHz采样率的音频在8kHz以上的频谱基本是没有能量的(黑色),也就是说这部分高频的信息由于采样率不够已经丢失了。从听感上来说人耳可以听到的频率范围大概是20~20kHz之间。如果采样率不够,那么和实际听感比起来声音就会显得“低沉”或者说“闷”。
采样率的选择依据场景决定:
- 如果只是为了听见人声、听懂对方在说什么,那么为了节省传输码率我们可以把采样率降到8kHz(比如打电话)。
- 而在网络音视频会议场景需要平衡音质和传输带宽消耗,一般可以使用16kHz或者32kHz的采样率。
- 如果是开线上音乐会或者音乐直播,我们通常会用较高的采样率来保证音质,比如44.1kHz或者48kHz。
- 更极端一点,在音乐制作录音的时候,会采用96kHz甚至更高的采样率来方便后续的调音和制作。
通道数
在平时买音响的时候听过2.1声道或者5.1声道等名词,这些数字代表了有多少个播放单元。
比如,2.1声道中的2指的是左右两个音箱,1指的是中间一个低音音箱。每个音箱都会播放一个单独的音频,这时候就需要同时有3路音频信号同时播放,或者叫通道数为3。
由于编/解码器能力的限制(比如使用了单通道编/解码器),或者采集设备能力的限制(只能采集单通道的信号),音频信号通常为单声道的。
听歌的时候,戴上耳机如果听到左右耳朵是不一样的,能够感觉到声音是从不同方向传过来的,那么就说明这个音频是双声道。我们通常也把这种双声道音频叫做立体声(stereo)。
除了播放需要多声道以外,采集也可能采集到多通道的数据。比如麦克风阵列采集到的原始信号,有多少个麦克风就会有多少个通道的音频信号。因此,这里通道数的物理含义其实就是同一时间采集或播放的音频信号的总数。
假设有一个立体声的PCM音乐文件,它记录了1分40秒的采样率为48kHz的音频,如果这个文件的采样位深是16bit,那么这个立体声文件应该占用多大的存储空间呢?如果不经过压缩实时传输播放,又至少需要多少的带宽呢?
一个PCM音频文件的存储大小就是采样位深、采样率、通道数和持续时间的累乘。16 × 48000 × 2 × 100 = 1.53 ∗ 1 0 8 b i t = 18.31 M B 16\times 48000\times 2\times 100=1.53*10^{8}bit=18.31MB 16×48000×2×100=1.53∗108bit=18.31MB
它实时传输所需的带宽就是它每秒所需的比特带宽。
16 × 48000 × 2 = 1.53 ∗ 1 0 6 b p s 16\times 48000\times 2=1.53*10^{6}bps 16×48000×2=1.53∗106bps
PCM音频数据的存储方式
采集的PCM音频数据是需要保存到本地文件中,如果用单声道采集的,则按时间的先后顺序依次存入,如果是双声道的话则按时间先后顺序交叉地存入,如下图所示:

PCM音频数据一般无法通过播放器直接播放。可以使用 ffplay 或者 Audition 工具进行播放:
ffplay -f s16le -ar 44100 -ac 1 -i raw.pcm
f s16le:设置音频格式为有符号16位小端格式(signed 16 bits little endian),对应Android中的AudioFormat.ENCODING_PCM_16BITar 44100:设置音频采样率(audio rate)为44100ac 1:设置声道数(audio channels)1,单声道为1,双声道为2i raw.pcm:设置输入的pcm音频文件
通常将PCM音频数据转化为WAVE文件就可以用播放器直接解析播放,WAVE是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。它符合资源互换文件格式(RIFF)规范。
音频的封装
平时经常看到的音频文件格式,比如MP3、FLAC和WAV等,它们有什么区别?它们所需的存储空间一样么?
有损和无损音频编码封装格式
有损的音频封装格式主要是通过压缩算法把文件大小尽量减少,但是在解压缩的时候却无法完美还原音频原来的数据(即有损)。比如MP3、AAC、AMR和WMA等编码封装格式。
有损音频格式比如MP3一般可以达到1:10的压缩比,即存储体积为未压缩音频的十分之一。但在听感上和无损格式比起来,如果不是专业人士很难听出区别。
无损音频封装则采用可完美还原的压缩算法,比如FLAC和APE等编码封装格式。FLAC与APE的压缩比基本相同,其中FLAC的压缩比为58.70%,而APE的压缩能力则要更高一些,压缩比为55.50%。它们都能压缩到接近源文件一半大小。无损封装甚至还可以不压缩编码,直接加个文件头作为封装,比如WAVE格式的封装。
WAVE文件的封装
WAVE文件作为多媒体中使用的声波文件格式之一,文件后缀名为.wav。它是以RIFF(Resource Interchange File Format)的缩写。因此,每个WAVE文件的头四个字节便是“RIFF”。
WAVE文件由WAVE文件头部分和WAVE文件数据体部分组成,其中0~43字节存放采样率、通道数、数据部分的标识符等头信息,44字节以后的就是数据部分。简单地理解就是PCM文件加一个文件头描述文件的基本信息。

什么是分贝?
分贝除了用于声学领域之外,在NVH测量领域,到处可见分贝。它不是一个单位,它是个无量纲。我们经常在声学、振动、电子学、电信、音频工程&设计等领域见到它。
分贝最初使用是在电信行业,是为了量化长导线传输电报和电话信号时的功率损失而开发出来的。是为了纪念美国电话发明家亚历山大·格雷厄姆·贝尔(Alexander Graham Bell),以他的名字命名的。分贝定义为1/10贝尔(Bel)。
1.分贝定义
分贝(dB)定义为两个数值的对数比率,这两个数值分别是测量值和参考值(也称为基准值)。存在两种定义情况。
一种为功率之比: 1 d B = 10 log 10 ( W W 0 ) 1dB=10\log_{10}(\frac{W}{W_0}) 1dB=10log10(W0W)
一种为幅值之比: 1 d B = 10 log 10 ( X X 0 ) 2 = 20 log 10 ( X X 0 ) 1dB=10\log_{10}(\frac{X}{X_0})^2=20\log_{10}(\frac{X}{X_0}) 1dB=10log10(X0X)2=20log10(X0X)
下标为0的数值均为幅值和功率的参考值。
- 功率量的例子:声功率(W),声强( W / m 2 W/m^2 W/m2),电功率,电强等。
- 幅值量的例子如:声压(Pa),电压(V),加速度( m / t 2 m/t^2 m/t2),温度等。但有一点要注意对于场量的幅值应该是RMS值,如声压场。
注:没有特殊要求时,参考值通常为1。
因为分贝值完全依赖于测量值与参考值之比,因此,计算时选择合适的参考值尤为关键。常见信号的dB参考值如下表所示:

2. 声音大小
在声学领域,dB经常用作为表征声压级SPL(Sound Pressure Level)的大小。
声压的参考值是20μPa,这个值表示人耳在1000Hz处的平均可听阈值,或者是人耳在1000Hz处可被感知的平均最小声压波动值。
声音是叠加在大气压之上的声压波动,大气压为 1.01325 × 1 0 5 P a 1.01325×10^5Pa 1.01325×105Pa。相比于大气压,声压幅值波动非常小。人耳可听的声压幅值波动范围为 2 × 1 0 − 5 P a 2×10^{-5}Pa 2×10−5Pa ~ 20 P a 20Pa 20Pa。
这个声压幅值波动区间很大,二者的比值达到了 1 0 6 10^6 106。从线性角度来说这个声压幅值的波动区间,很不方便。
使用dB表示的声压级的概念,可以方便的反映出这个波动的幅值。
人类耳朵对声音强度的反应是成对数形式的,大概意思就是当声音的强度增加到某一程度时,人的听觉会变的较不敏锐,刚好近似对数的单位刻度。
人耳可听的声压幅值波动范围为 2 × 1 0 − 5 P a 2×10^{-5}Pa 2×10−5Pa ~ 20 P a 20Pa 20Pa,用幅值dB表示对应的分贝数为0 ~ 120dB,因此,当用分贝表示声压级的大小时,表征起来更为方便。现实世界中各种常见情况中声音分贝大小如下图:
![]() | ![]() |
|---|
3. dB的性质
贝尔最初是用来表示电信功率讯号的增益和衰减的单位,1个贝尔的增益是以功率在放大后与放大前的比值。所以,电压增益的分贝表达式是从功率的角度来考虑的,即分贝应该理解为功率的增大或衰减情况。
用对数dB形式表达增益之所以在工程上得到了广泛的应用,是因为:
-
当用对数dB表达增益随频率变化的曲线时,可大大扩大线性增益变化的区间。人耳可听的声压幅值波动范围为 2 × 1 0 − 5 P a 2×10^-5Pa 2×10−5Pa ~ 20 P a 20Pa 20Pa,而用幅值dB表示时对应的dB数值仅仅为0 ~ 120dB。
-
计算多级放大的总增益时,可将乘法化为加法进行运算。
-
dB值可正可负。正值表示增大,负值表示衰减。若 X / X 0 < 1 X/X_0<1 X/X0<1,则dB值为负值。也就是说测量值大于参考值的为正,小于参考值的为负。
-
幅值比互为倒数时,dB值互为正负。这是因为: 20 log 10 ( X 0 X ) = 20 log 10 ( 1 X / X 0 ) = − 20 log 10 ( X X 0 ) 20\log_{10}(\frac{X_0}{X})=20\log_{10}(\frac{1}{X/X_0})=-20\log_{10}(\frac{X}{X_0}) 20log10(XX0)=20log10(X/X01)=−20log10(X0X)
-
dB值与线性幅值比的关系如下表所示:

表中红色字体表示的是几个比较重要的dB值。像dB增大6dB表示线性幅值增大一倍。
4. -3dB
-3dB在NVH领域起着其他值不可比拟的作用。
通过上表,-3dB对应的幅值比为0.708,即 2 / 2 \sqrt2/2 2/2倍。如果是按功率比来计算,则功率比为1/2,也就是原来功率的一半,因此,-3dB称为“半功率点”。
抗混叠滤波器是按幅值衰减0.707或者功率衰减一半所对应的频率作为滤波截止频率的。其它类型的滤波器,如高通、低通、带通和带阻滤波器的截止频率也是-3dB点。
5. dB叠加
以声压级的叠加来进行说明。声压级的合成运算不是简单的加减运算,声压级不能直接相加,必须以能量形式相加计算,因此,声压级的合成公式如下:
L p r e s u l t = 10 ⋅ log 10 ( 1 0 L p 1 10 + 1 0 L p 2 10 + . . . + 1 0 L p n 10 ) L_{presult}=10·\log_{10}(10^{\frac{L_{p1}}{10}}+10^{\frac{L_{p2}}{10}}+...+10^{\frac{L_{pn}}{10}}) Lpresult=10⋅log10(1010Lp1+1010Lp2+...+1010Lpn)
若两个声压级 SPL1=SPL2=60dB,但两个声源是相关、同相位的,则合成后的声压级SPL为66dB,因为60dB对应0.02Pa,两个相加为0.04Pa,对应66dB。(但是现实很少有相关同相位的两个声源)
若任意两个声压级SPL1=SPL2,则合成后的声压级为: S P L 1 + 2 = S P L 1 + 10 log 10 ( 2 ) = S P L 1 + 3 d B SPL_{1+2}=SPL_1+10\log_{10}(2)=SPL_1+3dB SPL1+2=SPL1+10log10(2)=SPL1+3dB
也就是说两个声压级相同,则合成后的声压级比之前大3dB。
声压级的分解通常用于修正背景噪声的影响,如噪声测量值 L m e a s u r e d L_{measured} Lmeasured 修正背景噪音 L B G N LBGN LBGN 的影响,不是简简单单地 L s o u r c e = L m e a s u r e d − L B G N Lsource =Lmeasured-LBGN Lsource=Lmeasured−LBGN, 而是 L p r e s u l t = 10 ⋅ log 10 ( 1 0 L p t o t a l 10 − 1 0 L p b a c k g r o u n d 10 ) L_{presult}=10·\log_{10}(10^{\frac{L_{ptotal}}{10}}-10^{\frac{L_{pbackground}}{10}}) Lpresult=10⋅log10(1010Lptotal−1010Lpbackground)
国际规范中关于背景噪声的修正原则如下图表示。当背景噪音与声源的声压级差值小于6dB时,测量无效;当二者差值位于6~15dB之间时需要修正,修正按以上公式修正;当二者差值大于15dB时,可忽略背景噪声对测量结果的影响。
相关文章:
语音识别相关概念
声音如何保存成数字信号? 声音是听觉对声波产生的感知,而声波是一种在时间和振幅上连续的模拟量,本质是介质的振动,,比如空气的振动。那么只需要把这个振动信号记录下来,并用一串数字来表达振动信号振动的…...
Iceberg与SparkSQL查询操作整合
前言 spark操作iceberg之前先要配置spark catalogs,详情参考Iceberg与Spark整合环境配置。 Iceberg使用Apache Spark的DataSourceV2 API来实现数据源和catalog。 使用SQL查询 查询的时候表要按照:catalog.数据库.表名的格式 SELECT * FROM prod.db.table; -- catalog: p…...
Linux 上安装 PostgreSQL
Linux 上安装 PostgreSQL PostgreSQL 是一款功能强大的开源关系数据库管理系统,因其稳定性、可扩展性和先进的功能而广受欢迎。在 Linux 系统上安装 PostgreSQL 是一个相对直接的过程,但具体步骤可能会因您使用的 Linux 发行版而异。本文将介绍在几种流行的 Linux 发行版上安…...
WRF-LES与PALM微尺度气象大涡模拟、PALM静态数据预备、PALM驱动数据预报、PALM模拟
查看原文>>>WRF-LES与PALM微尺度气象大涡模拟及ChatGPT在大气科学领域应用 针对微尺度气象的复杂性,大涡模拟(LES)提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟,这些过程往往与天气…...
需求分析概述
为什么要进行需求分析呢? 笑话:富翁娶妻 某富翁想要娶老婆,有三个人选,富翁给了三个女孩各一千元,请 她们把房间装满。第一个女孩买了很多棉花,装满房间的1/2。第 二个女孩买了很多气球,装满…...
Java | Leetcode Java题解之第391题完美矩形
题目: 题解: class Solution {public boolean isRectangleCover(int[][] rectangles) {long area 0;int minX rectangles[0][0], minY rectangles[0][1], maxX rectangles[0][2], maxY rectangles[0][3];Map<Point, Integer> cnt new HashM…...
java项目之基于web的人力资源管理系统的设计与实现(源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的基于web的人力资源管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: …...
Linux 防火墙:iptables (二)
文章目录 SNAT 原理与应用SNAT 应用环境SNAT 原理SNAT 转换前提条件SNAT 格式SNAT 转换规则配置 DNAT 原理与应用DNAT 应用环境DNAT 原理DNAT 转换前提条件DNAT 格式DNAT 转换规则配置 iptables 规则的备份和还原导出(备份)所有表的规则导入(…...
小目标检测顶会新思路!最新成果刷爆遥感SOTA,参数小了18倍
遥感领域的小目标检测一直是个具有挑战性和趣味性的研究方向,同时也是顶会顶刊的常客。但不得不说,今年关于遥感小目标检测的研究热情尤其高涨,已经出现了很多非常优秀的成果。 比如SuperYOLO方法,通过融合多模态数据并执行高分辨…...
【Ubuntu】虚拟机安装USB摄像头ROS驱动 usb_cam(最新方法)
写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...
免费的成绩查询微信小程序,让家长轻松掌握学生表现
传统的教学方式在不断地被革新。在成绩查询这一环节,老师们曾经面临着繁琐的手工操作和信息安全的风险。可现如今有一个让成绩查询变得轻松、高效且安全的新工具——易查分。 过去需要花费大量时间来整理成绩,然后通过短信或者打电话的方式告知给家长。以…...
[含视频和源码]CRUD的最佳实践,联动前后端,包含微信小程序,API,HTML等(三)
关说不练假把式,在上一,二篇中介绍了我心目中的CRUD的样子 基于之前的理念,我开发了一个命名为PasteTemplate的项目,这个项目呢后续会转化成项目模板,转化成项目模板后,后续需要开发新的项目就可以基于这…...
如何把我另一个分支上的commit拿过来
在开源过程中,每一次PR都是要经过严格的review的,这期间可能会进行多次修改,补充提交,而且这一般来说不是一个很迅速的过程,此时我们可能会先往后进行开发。我一般会把项目分模块逐步建立分支,当前一个pr合…...
【rpg像素角色】俯视角-行走动画
制作像素角色的俯视角行走动画并不像看上去那么复杂,尤其是在你已经完成了角色的4个方向站立姿势之后(其中左右方向可以通过水平翻转实现)。接下来,我会一步步为你讲解如何制作行走动画。 1. 理解行走规律 在制作行走动画之前&am…...
Python时间序列分析新技能,轻松掌握时间索引
大家好,在数据分析领域,时间序列数据分析是一项非常重要的技能。Pandas作为Python中强大的数据处理库,在处理时间序列数据时提供了丰富的功能,其中时间索引的应用是时间序列分析中的关键。本文将介绍如何在Pandas中使用时间索引进…...
sklearn-逻辑回归-特征工程示例
sklearn-逻辑回归-特征工程示例 在实际应用场景中,有时候特征的数量会很多,我们出于业务考虑,也出于计算量的考虑,希望对逻辑回归进行特征选择来降维。比如在判断一个人是否会患乳腺癌的时候,医生如果看58个指标来确诊…...
RTMP播放器延迟最低可以做到多少?
技术背景 RTMP播放器的延迟可以受到多种因素的影响,包括网络状况、推流设置、播放器配置以及CDN分发等。因此,RTMP播放器的延迟并不是一个固定的数值,而是可以在一定范围内变化的。 正常情况下,网上大多看到的,针对R…...
细致刨析JDBC ① 基础篇
目录 一、JDBC概述 1.JDBC的概念 编辑2.JDBC的核心组成 ① 接口规范: ② 实现规范: 二、JDBC快速入门 1.JDBC搭建步骤 三、核心API理解 1.注册驱动 2.Connection 3.Statement 4.PreparedStatement 5.ResultSet 四、基于Preparedment实现CRUD 1.查询单行单列 2.查询单行…...
Reactive 编程-Loom 项目(虚拟线程)
Reactive 编程与 Loom 项目(虚拟线程) Java 项目 Loom 是 Oracle 在 JVM 上的一项重大变革,旨在引入 虚拟线程(Virtual Threads),以简化并发编程。传统的 Java 线程是重量级的,由操作系统管理&…...
Windows下使用MinGW编译安装zmq的步骤
背景: 在开发过程中,需要使用zmq库进行数据交互,因此需要编译zmq库。 安装步骤 软件下载 https://github.com/zeromq/libzmq.git 下载,将代码切换到git checkout 4c6cff6391分支 软件编译 cd .\libzmq\ mkdir build cd .\bu…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...




