FXO、FXS
This is my study note of FXO、FXS.
table
{
margin: auto;
}
table
{
margin: auto;
}
VOIP和PSTIN概念
VOIP指网络电话,平时使用的qq、微信之类的,使用耳麦的就是VOIP,VOIP比较便宜是一种通过互联网通信的方式。
为什么有的VOIP服务需要收费,有的不需要呢?1因为VOIP用户不仅可以拨打VOIP用户,还可以拨打一些PSTIN之类的用户。
PSTIN指传统公共电话,VOIP就是平时拨打的电话,更为稳定、清晰。
DTMF(双音多频信号)电话脉冲有两种,脉冲和音频。其中音频指的就是DTMF信号的拨号方式,双音多频是电话拨号时每按一个键,有两个音频频率叠加成一个双音频信号,十二个按键由七个音频频率区分。
FXO和FXS
FXS(Foreign exchange station)FXS是连接连接传统电话机使用的,普通话机连接FXS网关后,FXS能为话机提供电流和拨号语音,其基本电路包括:
CODEC1CODEC由ADC和DAC构成,ADC将模拟电话的模拟信号转 ...
linux驱动
This is my study note of linux.
table
{
margin: auto;
}
设备驱动程序简介作用
设备驱动程序的作用在于提供机制,而不在于提供策略。
机制代表“提供什么功能”
策略代表“如何使用这些功能”1软驱的驱动程序不带策略,它的作用是将磁盘表示为一个连续的数据块阵列,系统高层负责提供策略。编写访问硬件的内核代码时,不考虑策略,只考虑机制,支持同步和异步。
考虑因素
提供给用户尽量多的选项
编写驱动占的时间
保持程序简单1用户程序主要用于帮助配置和访问目标设备。
可装载模块Linux有一个很好的特性:内核提供的特性可在运行时进行扩展。这意味着当系统启动并运行时,我们可以向内核添加功能,当然也可以移除功能。
模块——运行时添加到内核中的代码(insmod/rmmod)
设备和模块的分类
字符设备1像字节流一样被访问的设备,由字符设备驱动程序来实现这种特性。实现open、close、write、read,大多数字符设备只能顺序访问数据通道。
块设备1进行I/O操作时,块设备每次只能传输一个或多个完整的块,每个块包含 ...
SPI
This is my study note of SPI.
SPI(Serial Peripheral Interface),一种全双工的、高速的、同步的串行外围设备接口,只占四根线。主机给从机发送数据和从机给主机发送数据都是同时进行的,主从交换数据。
组成
ss 使能
sck 主机发从的时钟信号
sdi 数据输入
sdo 数据输出
通信规则1通过CPOL和CPHA进行模式的选择,CPOL为0时,表示时钟空闲时为低电平,CPOL为1时,表示时钟空闲时为高电平,CPHA为0时,表示第一个跳变沿数据被采样,CPHA为1时,表示第二个跳变沿数据被采样。
多从机模式
多NSS121.每个从机都需要一条单独的SS线2.需要选择特定的从机进行通信时,可以将相应的NSS信号拉低
菊花链1以串行的方式依次传输,直到数据到达到目标位置
C++的STL
This is my study note of C++.
table
{
margin: auto;
}
vector初始化
vector<变量类型> 变量名
vector<变量类型> 变量名(数组长度)
vector<变量类型> 变量名(数组长度, 初始化数据)
vector<变量类型> 变量名(数组元素)
vector<变量类型> 变量名<相同变量类型的容器>
vector<变量类型> 变量名[行数] (注意此时行数不可变,列可变)
vector<vector<变量类型>> 变量名
函数方法
代码
含义
c.front()
返回第一个数据 O (1)
c.back()
返回最后一个数据 O (1)
c.pop_back()
删除最后一个数据 O(1)
c.push_back(element)
在尾部加一个数据 O(1)
c.size()
返回实际数据个数(unsigned类型) O(1)
c.clear()
清除元素 ...
C++拓展GDB
This is my study note of GDB.
table
{
margin: auto;
}
GDB的概念GDB,全称 GNU symbolic debugger,简称 GDB调试器,是 Linux 平台下最常用的一款程序调试器。
GDB基本用法检查GDB版本1gdb -v
命令
简写形式
说明
backtrace
bt、where
显示backtrace
break
b
设置断点
continue
c、cont
继续执行
delete
d
删除断点
finish
运行到函数结束
info breakpoints
显示断点信息
next
n
执行下一行
print
p
显示表达式
run
r
运行程序
step
s
一次执行一行,包括函数内部
x
显示内存内容
until
u
执行到指定行
其他命令
directory
dir
插入目录
disable
dis
禁用断点
down
do
在当前调用的栈帧中选择要显示的栈帧
edit
e
编辑文件或者函数
fram ...
红黑树
This is my study note of Red-black tree.
table
{
margin: auto;
}
红黑树的结构
平衡属性1任意节点左右子树高度相差不大于1.红黑树保证最长路径不超过最短路径的两倍,因黑色节点相同时,最长路径刚好是最短路径的两倍。
红黑树的特点
根节点是黑色 叶结点是不存储数据的黑色空节点(空节点)
任何相邻的两个节点不能同时为红色
任意节点到其可到达的叶结点间包括相同数量的黑色节点
时间复杂度1插入、删除、查找:时间复杂度logn
计算机网络
This is my study note of network.
table
{
margin: auto;
}
因特网概述
网络1由若干个结点和连接这些结点的链路组成。
互联网1通过网络将多个路由器互连起来,形成互联网。
因特网1世界上最大的互联网。
三种交换方式交换是按照某种方式动态分配传输线路的资源。
电路交换(circuit Switching)123456789101112通过硬件线路进行交换的方式,叫做电路交换。优点: 1.通信时延小 2.有序传输 3.没有冲突 4.使用范围广 5.控制简单缺点: 1.建立时间长 2.线路独占,使用效率低 3.灵活性差 4.难以规格化
报文交换12345678910对报文大小没有限制,此时要求交换结点有较大的缓存空间。优点: 1.无需建立连接 2.动态分配线路 3.提高线路可靠性 4.提高线路利用率 5.提供多目标服务缺点: 1.引起转发延时 2.需要较大的缓存空间
分组交换123456789将大的数据报文分成一个个小的, ...
二叉树
This is my study note of Binary tree.
table
{
margin: auto;
}
二叉树什么是二叉树
本身是有序树
树中包含的各个节点的度不能超过2个,只能为0、1、2
二叉树的性质
二叉树中,第i层最多有2^(i-1)个结点
如果二叉树深度为k,那么此二叉树总共有2^k-1个结点
二叉树中,终端结点数为n0,度为2的结点数为n2,n0 = n2+1
二叉树的分类
满二叉树
1除了叶子结点,每个结点的度都为2,所以是满二叉树。
完全二叉树
1二叉树除了最后一层为满二叉树,且最后一层的结点依次从左到右分布,则二叉树被称为完全二叉树。
如右图,由于最后一层的节点没有按照从左到右分布,因此算作普通二叉树。
二叉树的遍历
先序遍历1234访问顺序为: 1.访问根节点 2.访问左节点 3.若当前左节点没有左子树,则访问右节点
举个简单的例子:
采用先序遍历的流程:
12345671.访问二叉树根节点,找到12.访问节点1的左子树,找到节点23.访问节点2的左子树,找到节点44.访问节点4的左子 ...
C++与C的区别
This is my study note of C++.
table
{
margin: auto;
}
C与C++中的struct有什么区别
C中struct没有protection行为,同时不可以定义函数,但是可以创建函数指针。
C++中struct有protect的行为,同时可以定义函数。
如何判断一个代码为C还是C++使用__cplusplus
1__cplusplus是C++特有的宏,如果#ifdef __cplusplus通过,则说明代码段为C++代码。
堆区除了malloc还有哪些内存操作函数
void *realloc(void *ptr, size_t size)123重新调整已经分配内存的大小。ptr:表示之前malloc返回的指针size:表示重新分配的内存块大小
void *calloc(size_t num, size_t size)123用于堆区分配指定内存的数量。num:表示分配的元素数量。size:表示每个元素的大小
C和C++环境的区别
函数重载1C++支持函数重载,可以定义多个同名参数,C不行
函数默认参数1C++支持函数的 ...
AAC
This is my study note of AAC.
table
{
margin: auto;
}
table
{
margin: auto;
}
AAC(Advanced Audio Coding,高级音频编码)是一种声音数据的文件压缩格式,AAC分为ADTS和ADIF两种文件格式。
ADIFAudio Data Interchange Format音频数据交换格式,这种格式只有最前面具有头字节,音频数据流中没有头字节,解码只能从开头开始。
ADTSAudio Data Transport Stream音频数据传输流,每一个单元都有一个头字节,解码可以从中间任何时刻开始。
ADTS_Header包含采样率、声道数、帧长度的信息。
ADTS头信息的长度为7~9(有CRC验证)个字节。
adts_fixed_header:每一帧的内容是不变的。
adts_variable_header:每一帧的内容是存在变化的。
crc:16bits,protection_absent字段为0时存在。