自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (3)
  • 收藏
  • 关注

原创 用字符串常量对字符串和数组初始化

用字符串常量对字符串和数组初始化char *buf = "abcdefg";char buf[32] = "abcdefg";char buf[] = "abcdefg";错误示例char *buf;buf = "abcdefg";char buf[32] = {0};buf = "abcdefg";字符串指针和数组初始化只能在第一步初始化。字符串结束符'\0',使用printf相关的输出函数,或者字符串操作函数strlen,strcpy等函数必须要有字符串结束符,否则会失效。.

2022-04-29 11:52:49 324 1

原创 tcp套接字端口复用SO_REUSEADDR

如果tcp下不使用SO_REUSEADDR1.进程创建监听套接字socket1,并且建立了多个连接时。此时进程创建另一个套接字socket2,试图band同一个端口的时候,会报“Address already in use”的错误。2.杀死上述进程,重新启动,调用band重新绑定,建立套接字监听。这次邦定只有在bind前(两个socket绑定之前都需要指定)指定了SO_REUSEADDR时才能成功。(因为直接杀进程,没有显式关闭套接字来释放端口,会等待一段时间后才可以重新use这个关口,解决办法就

2022-02-19 17:34:41 875

转载 shell脚本之单引号,双引号,反引号

经典解释1.‘’单引号所见即所得2.“”双引号所见非所得,会先解析变量,再输出3.``反引号,命令替换,通常把命令输出结果保存在变量中4.\反斜杠,转义字符/逃脱字符。echo要想发挥作用,必须使用-e选项,且转义字符要使用双引号...

2022-01-18 20:58:43 6274

原创 shell脚本之for in

格式for 变量 in 字符串do $变量doneINSTALL_MOD_ALL="wm mrs mrs-proxy ng-proxy ice"for sub in ${INSTALL_MOD}do if [ -f install-${sub}.sh ] then chmod +x ./install-${sub}.sh ./install-${sub}.sh $2 fidone...

2022-01-13 20:22:12 741

转载 使用静态库时error adding symbols: Bad value 问题

我们都知道在生成一个动态库时需要指定-fPIC,这是创建动态库所要求的,共享库被加载是在内存中的位置是不固定的,是一个相对的位置。那么在生成静态库时通常不指定-fPIC, 可是在64bit编译使用静态库就会提示需要-fPIC从新编译该库:/opt/mipsel-openwrt-linux-4.8.3/mipsel-4.8.4/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/../lib/gcc/mipsel-openwrt-

2022-01-11 21:00:35 1251

转载 gcc编译参数— -fPIC

在生成动态库时,常常习惯性的加上 fPIC 选项,fPIC 有什么作用和意义,加不加有什么区别,这里做下小结。fPIC 的全称是 Position Independent Code, 用于生成位置无关代码。什么是位置无关代码,个人理解是代码无绝对跳转,跳转都为相对跳转。1、不加 fPIC 选项即使不加 fPIC 也可以生成 .so 文件,但是对于源文件有要求,例如因为不加 fPIC 编译的 so 必须要在加载到用户程序的地址空间时重定向所有表目,所以在它里面不能引用其它地方的代码,如下:

2022-01-11 20:52:31 406

原创 远程登录—ssh相关操作

1.开启ssh服务service ssh start/etc/init.d/ssh start如果开启服务失败,检查远程服务器是否安装openssh-server。2.查看ssh服务是否开启3.查看端口22是否监听4.一般ssh默认禁止root用户直接登录(保证安全性)如果需要root用户登录,配置文件 /etc/ssh/sshd_config 修改PermitRootLogin 为 yes重启ssh服务,既可实现root用户远程PermitRootLog

2022-01-10 20:47:04 823

原创 socket编程——tcp通信

服务端(gcc)1.绑定ip和端口(band)2.监听(listen)3.连接客户端(accept)4.主线程收发消息#include<stdio.h>#include<stdlib.h>#include<sys/socket.h>int main(){ int listen_sock = socket(AF_INET, SOCK_STREAM, 0); if(listen_sock < 0) {

2021-12-28 20:47:20 1400

原创 PulseAudio 模块化实现录音和放音

从虚拟设备获取音频数据(playback)1.加载虚拟输出设备pacmd load-module module-pipe-sink file=/tmp/output format=s16le rate=44100 channels=22.设置虚拟输出设备为默认输出设备pacmd list-sinks 查看输出设备名称pacmd set-default-sink fifo_output(虚拟输出设备名称为fifo_output)#include <stdio.h>#includ

2021-10-15 16:41:20 1681

原创 音频开发之——PulseAudio

pulseaudio為一個audio service,如下图OSS sink表示输出音源部分,从PulseAudio要转到声音设备的介面。OSS source表示输入音源部分,任何需要进入到PulseAudio的声音,都会经由source介面。PulseAudio服务软件架构,将来自各个不同的音源转到正确的窗口,针对不同的应用程式做音量的调整,接受多个音源的输入(source)或是输出(sink)。pactl命令可以修改伺服器的设置以及配置,但pactl命令仅限于局限的范围。若要..

2021-10-15 16:20:21 2595

原创 linux声音系统(应用程序和声卡的交互)

1.linux声卡驱动Linux声音系统底层驱动主要有OSS和ALSA两套API。音频驱动是底层硬件声卡和上层音频应用的桥梁。其中放音是声卡将上层传输下来的数字数据转化为模拟数据进行放音,录音是声卡将获取到的模拟数据转化为数字数据传输给上层。2.应用程序和声卡驱动的交互方式2.1直接和底层驱动OSS和ALSA两种驱动交互该方式较为直接,可直接调用底层驱动的api实现放音和录音功能。2.2通过声音服务和底层驱动交互 2.2.1 ESD ESD 一直是 Gnome...

2021-10-13 21:03:18 716

原创 fopen使用

FILE *fp =fopen(log_name, "a");r 打开只读文件,该文件必须存在。r+ 打开可读写的文件,该文件必须存在。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则...

2021-09-18 17:36:51 2047

原创 音频文件大小计算

采样频率:单位时间内的采样次数。采样频率越大,采样点之间的间隔就越小,数字化后得到的声音就越逼真,对应的数据量就越大。声卡一般提供11.025kHZ、22.05kHZ和44.1kHZ等不同的采样频率。采样位数:记录每次采样值数值大小的位数。采样位数通常有8bit和16bit两种,采样位数越大,能记录声音的变化度就越细腻,相应的数据量就越大。声道数:处理的声音是单声道还是立体声。单声道只有单数据流,立体声有左右两个声道的数据流。不经过压缩,原始裸数据的计算公式为:数据量(字节/秒) = (

2021-09-18 10:40:51 3979

原创 变量函数的申明和定义----extern和static

定义和申明全局变量和函数定义在C文件中,变量定义后要初始化。申明在头文件中进行外部声明(extern),定义的C文件中也要包含申明的头文件,以便编译器检查变量的定义与申明的一致性。此时外部文件需要用到该全局变量只需要包含头文件就可以了。模块化要点一个模块包含一个.c文件和一个.h文件,头文件是对该模块接口的申明。 某个模块要提供给其他模块调用的函数和变量,需要在头文件中做extern关键字申明。 模块内的函数和全局变量需要在.c文件头部用static申明。 永远不要在.h文件中定义变量!

2021-08-28 16:16:39 715

原创 shell中exit的含义

exit 0:正常运行程序并退出程序;exit 1:非正常运行导致退出程序;exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值,那么你的程序的使用者通常会认为你的程序产生了一个错误。在 shell 中调用完你的程序之后,用 echo $? 命令就可以看到你的程序的 exit 值。在 shell 脚本中,通常会根据上一个命令的 $? 值来进行一些流程控制,0代表程序正确的执行。...

2021-08-26 19:42:09 821

原创 []和[[]]

if [ "$ARCHITECTURE" == 'aarch64' ] || [ "$ARCHITECTURE_ICE" == 'aarch64' ]; then"system architecture is $ARCHITECTURE"exit 0fiif [[$ARCHITECTURE== 'x86_64'||$ARCHITECTURE_ICE =='x86_64']]; then"system architecture is $ARCHITECTURE...

2021-08-26 19:41:18 110

原创 if条件判断

1 if的基本语法if [ command ]; then符合条件的执行语句elif [ command ]; then符合条件的执行语句else符合条件的执行语句fi2 文件/目录判断如下列出了三个常用的文件和文件夹判断[-dDIR ] 如果 FILE 存在且是一个目录则为真。[-eFILE] 如果 FILE 存在则为真。[-fFILE] 如果 FILE 存在且是一个普通文件则为真。3 字符串判断[...

2021-08-26 19:38:31 163

原创 awk简单使用

ARCHITECTURE=`uname -a 2>&1|awk '{print $3} '|awk -F '.' '{print $7}'`第一步:uname -a 2>&1,输出操作系统信息。第二步:|awk '{print $3},在上述输出中找出第三个字段,没有指定分隔符默认以空格分隔第三步:|awk -F '.' '{print $7}' 在第二步的基础上指定分隔符为. 找出第七个字段。最终结果保存在变量ARCHITECTURE中。关于2>&

2021-08-26 19:35:14 1285

原创 top查看线程操作

lsof -p pid | wc -l 统计进程所有打开的句柄数top -H -p pid 一个进程中各个线程CPU的占用率-H一行显示一个线程-p 指定进程pidpstack pid查看各线程的堆栈信息

2021-08-26 19:31:55 400

原创 数组的地址和大小

int a[10] = {0,1,2,3,4,5,6,7,8,9};a[0] = 0; //表示数组的第一个值&a[0]; //表示数组第一个元素的地址 和 a等价,但是&a[0]是一个指针,编译器要为它分配存储空间,但a却不会被分配存储空间,a也不是指针型变量。&a[0]+1 表示向后移一个int型的变量 地址为首元素地址+4a //表示数组的i第一个元素地址a +1 //表示向后移一个int型的变量 地址为首元素地址+4&a //表示整...

2021-08-26 19:22:44 1377

原创 数组初始化的两种方式

1. 数组初始化,可以只给一部分元素赋值int a[10] = {0,1,2,3,4};这样只给前面5个元素赋值,后5个元素为0;将char p[8]看成字符数组的话,char p[8] = [0];表示第一个元素为0,后面7个元素也为0;所以char p[8] = {}和char p[8] = {0}一样,8个元素都初始化为0。2.用字符串常量来初始化字符串数组char p[10] = “china”;前5个元素为‘c’,‘h’,‘i’,‘n’,‘a’,第六个元素为‘\0’

2021-07-12 20:12:13 3279

原创 Tcpdump—linux下抓包工具

Linux下一般使用tcpdump来抓包,并保存数据包,在wireshark下来分析。所以tcpdump和wireshark是抓包的完美组合。截获主机hostname发送的所有数据tcpdump -i eth0 src host hostname监视所有送到主机hostname的数据包tcpdump -i eth0 dst host hostname指定主机和端口tcpdump tcp port 23 and host 210.27.48.1抓取主机210.27.48.1

2021-07-12 17:29:00 121

原创 挂载虚拟光驱(光盘)到本地 配置本地yum源

1.加载镜像文件到虚拟机2.执行命令 Mount /dev/sr0 /mnt (已经存在的文件) 挂载到/mnt下如果是本地iso文件使用命令mount -o loop /mnt/iso/CentOS5.iso /mnt/cdrom挂载结束通过命令df -h 查看挂载状态3. 挂载完成之后在/etc/yum.repos.d目录下创建local.repo文件4. 执行清除缓存目录(/var/cache/yum)下的软件包及旧的headersY...

2020-05-13 19:02:52 872

转载 进程间通信——域套接字

域套接字1.1定义UNIX域socket实现本地进程间通信,需要一个进程作为服务器端,一个进程作为客户端。对于sockaddr_un结构,重点是给它提供一个bind()函数生成的socket类型文件的路径,即sockaddr_un.sun_path的值。并且客户端与服务器端的这个sockaddr_un结构的sun_path是一致的。经过bind,listen,accept,和connec...

2020-05-06 19:28:50 471

原创 fopen使用

FILE *fp =fopen(log_name, "a");r 打开只读文件,该文件必须存在。r+ 打开可读写的文件,该文件必须存在。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则...

2020-05-06 19:24:45 229

原创 浮点型变量使用

Float型(单精度浮点型)变量占4字节,十进制科学计数法小数点后6位有效精度和第7位的部分精度。Double型(双精度浮点型)变量占 8 字节,十进制科学计数法小数点后15位有效精度和第16位的部分精度。浮点数的比较不能直接用=或者!=,浮点数比较需要设定一个误差,在误差允许范围内都表示相等。例如double ret = 0.000001;if(var >= r...

2020-05-06 19:23:23 687

原创 extern使用

一个文件中的全局变量在其他文件中的使用在一个.c文件中定义uint_32 g_apt = 0; //定义在C文件中,不要定义在头文件中在另外的.c文件中需要用到这个全局变量external uint_32 g_apt;当使用extern修饰一个变量时,代表当前变量x 的定义来自于其他文件,当进行编译时,会去其他文件里面找,在当前文件仅做声明,而不是重新定义一个新的变量...

2020-05-06 19:22:29 597

原创 Linux scp命令

Linux scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。主要使用命令如下:scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@r...

2019-11-08 16:50:38 272

网页版av1码流分析工具

1.该资源有部分转载于https://download.csdn.net/download/weixin_42099906/18402450 2.下载该资源,直接在网页输入http:127.0.0.1,就可以加载出网页版分析工具

2022-06-24

ivf文件,1080p,av1码流

ivf文件,1080p, av1码流

2022-06-24

av1码流,1280*720,测试使用

av1码流,1280*720,测试使用

2022-06-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除