0%

参考:

  • https://www.cnblogs.com/douzujun/p/10600793.html

WAV格式专业名词

wav是微软开发的一种音频文件格式,wav文件格式是无损音频文件格式,相对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些。

支持多种音频数字,取样频率和声道,标准格式化的WAV文件和CD格式一样,也是44.1K的取样频率,16位量化数字,因此在声音文件质量和CD相差无几! 通常使用三个参数来表示声音量化位数,取样频率和采样点振幅量化位数分为8位,16位,24位三种,声道单声道和立体声之分,单声道振幅数据为n*1矩阵点,立体声为n*2矩阵点,取样频率一般有11025Hz(11kHz) ,22050Hz(22kHz)和44100Hz(44kHz) 三种,不过尽管音质出色,但在压缩后的文件体积过大!相对其他音频格式而言是一个缺点,其 文件大小的计算方式为:WAV格式文件所占容量(B) = (取样频率 X量化位数X 声道) X 时间 / 8 (字节= 8bit) 每一分钟WAV格式的音频文件的大小为10MB,其大小不随音量大小及清晰度的变化而变化

注:专业名词(取样频率、量化位数、声道)解释:https://blog.csdn.net/eric88/article/details/17098603

  • 采样位数:也叫量化位数(单位:比特),是存储每个采样值所用的二进制位数。采样值反应了声音的波动状态。采样位数决定了量化精度。采样位数越长,量化的精度就越高,还原的波形曲线越真实,产生的量化噪声越小,回放的效果就越逼真。常用的量化位数有4、8、12、16、24。量化位数与声卡的位数和编码有关。如果采样位数为16位,那么能够表示的范围就是\(2^{16}\),采样位数越大,对声音的大小变化表现得也就越精细。
  • 采样频率:采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。越高所能描述的声波频率就越高。采样率决定声音频率的范围(相当于音调),由采样定理得知采样率需为待采样声音频率的2倍。
  • 声道数: 使用的声音通道的个数,也是采样时所产生的声音波形的个数。播放声音时,单声道的WAV一般使用一个喇叭发声,立体声的WAV可以使两个喇叭发声。记录声音时,单声道,每次产生一个波形的数据,双声道,每次产生两个波形的数据,所占的存储空间增加一倍。
  • WAV格式大小:采样率一般是44.1K,16bit采样精度,存储成WAV格式大小 = 44.1KHz(采样率) X 16bit(采样位数) X 2(双声道) X 播放时间
  • WAV格式是没有压缩无损的,MP3格式是按1:12压缩保存的,所以MP3格式大小等于上式的1/12。
阅读全文 »

简单地来说,Arc就是为了让变量能够再线程间共享,可以通过clone(并不会真正地深拷贝)的方式将数据的所有权给其他线程。但是如果数据要在多个线程之间修改的话,为了保证一致性,需要上锁,可供选择的方式有Mutex和RwLock等等。

RwLock.write()返回的是一个RwLockWriteGuard,我们可以解引用访问其内容,也可以通过解引用修改其内容。

转载自

rust有自己的规则和约定用来组织模块,比如一个包最多可以有一个库crate,任意多个二进制crate、导入文件夹内的模块的两种约定方式... 知道这些约定,就可以快速了解rust的模块系统。 先把一些术语说明一下:

  • 是cargo的一个功能,当执行cargo new xxxx的时候就是创建了一个包。
  • crate是二进制或者库项目。rust约定在Cargo.toml的同级目录下包含src目录并且包含main.rs文件,就是与包同名的二进制crate,如果包目录中包含src/lib.rs,就是与包同名的crate。包内可以有多crate,多个crates就是一个模块的树形结构。如果一个包内同时包含src/main.rssrc/lib.rs,那么他就有两个crate,如果想有多个二进制craterust约定需要将文件放在src/bin目录下,每个文件就是一个单独的crate
  • crate根用来描述如何构建crate的文件。比如src/main.rs或者src/lib.rs就是crate根crate根文件将由Cargo传递给rustc来实际构建库或者二进制项目。
  • 带有Cargo.toml文件的包用来描述如何构建crate,一个包可以最多有一个库crate,任意多个二进制crate

github 代码地址

阅读全文 »

/proc/pid

对于每个进程,/proc都有一个以进程ID(PID)命名的子目录,如/proc/1863,其中包含了特定于该进程的信息。

/proc/1863为例,这是一个特定于PID为1863的进程的目录。下面是/proc/[pid]目录中一些重要文件或子目录的作用:

阅读全文 »

既然左值引用和右值引用都是地址,那么它们和指针有什么区别呢?引用可以看做是被限制的指针,和普通指针的区别在于,引用只能在声明的时候初始化,且不可更改。可以发现,引用和指针常量在功能上是等同的。

阅读全文 »

1
2
3
4
5
6
(gdb) info signal SIGUSR2
Signal Stop Print Pass to program Description
SIGUSR1 Yes Yes Yes User defined signal 1
(gdb) handle SIGUSR2 noprint nostop
Signal Stop Print Pass to program Description
SIGUSR1 No No Yes User defined signal

本文参考:

一、TOAST是什么?

TOAST是“The Oversized-Attribute Storage Technique”(超尺寸属性存储技术)的缩写,主要用于存储一个大字段的值。

要理解TOAST,我们要先理解页(BLOCK)的概念。在PG中,页是数据在文件存储中的基本单位,其大小是固定的且只能在编译期指定,之后无法修改,默认的大小为8KB。同时,PG不允许一行数据跨页存储。那么对于超长的行数据,PG就会启动TOAST,将大的字段压缩或切片成多个物理行存到另一张系统表中(TOAST表),这种存储方式叫行外存储

阅读全文 »