自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(161)
  • 资源 (22)
  • 收藏
  • 关注

原创 glibc中xdr的一个bug

本人是64位的gcc编译器,long类型是8个字节,所能表示的数字范围远远大于4294967295。本人在64位linux服务器上(centos7),发现xdr_u_long这个函数有个bug,就是数字的范围如果超过unsigned int的最大值(4294967295)时,xdr_u_long失败。经过测试,xdr_u_long所能编码的最大值为4294967295,此时间戳对应的时间大概是2106年。而uint64_t和u_long的类型是一致的,都是unsigned long int。

2024-10-26 15:11:10 415

原创 c++中引用是通过指针的方式实现

可以看到,红色方框圈里来的有两部分,其中第一部分是栈帧大小的圈定,bp是栈底,sp是栈顶,由于栈是自顶向下生长,所以sp其实比bp小。红色部分的3部分,第一部分是栈帧大小的开辟,第二部分是栈帧数据的初始化,第三部分是首先将x的值赋给eax,然后将0Ah,即数字10,赋给eax所指的内存单元,即x所指的内存单元。第一步,lea eax,[a]是指将a的地址赋给eax,第二部push eax,这步是参数压栈,而eax目前的值是a的地址,故压栈的参数就是a的地址。然后按F11,进入到fuzhi函数的汇编代码处。

2024-09-17 11:48:21 386

原创 关于setrlimit RLIMIT_STACK的一点说明

main函数栈帧的限制在编译的时候就确定了,是8M。故main函数中设置的栈大小为1M,在后面的函数print中生效。而print函数中定义了2M大小的栈变量szBuf,在main函数真正调用print时,会先进行栈限制检查。下面代码,设置栈大小为1024字节,然后后面又定义了2 * 1024的数组,并在print也定义了2 * 1024的数组,但是程序并没有崩溃。可以看到进程崩溃了,但是可以看其打印,print打印出来的,这说明崩溃的时候,是在进入print崩溃的。不是在main函数里面崩溃的。

2024-09-16 17:40:25 317

原创 fork出的子进程,调用exec函数后,其信号处理函数会被继承吗

首先需要说明的是,exec后,子进程和父进程属于不同的代码段。信号处理函数不会被继承,但是某些针对信号的设置,还是可以传递的,比如exec前,设置信号处理为SIG_IGN,则exec后,该信号依然保持SIG_IGN属性。该程序名叫做forktest3,终端上运行./forktest3 &;放入后台运行,可以看到后台有两个进程:forktest3和sleep 1000。设置后,尽管后面调用了exec,但是该信号设置依然有效。然后关闭掉终端,可以发现forktest3消失了,但是sleep 1000还在。

2024-08-15 17:12:13 147

原创 linux 父进程退出时,激活了子进程的情况说明

针对第二种情况,为何子进程会退出,这里做简单说明,杀掉父进程后,子进程会接收到SIGHUP信号,而此信号,子进程没有处理,则默认结束子进程;此时暂停子进程,然后杀掉父进程,则子进程被激活,并且不会退出。今天在此记录一下几种情况。

2024-08-14 20:28:21 222

原创 文件描述符中设置FD_CLOEXEC的用处

linux中,父进程fork出子进程,子进程本身会继承父进程的所有文件描述符。若子进程再调用exec系列函数转化为新的进程实体,其实父进程的描述符对其没有意义。此时文件上只需要设置FD_CLOEXEC即可。注意,如果fork进程后,没有调用exec,则无论FD_CLOEXEC是否设置,子进程一定会继承父进程的全部文件描述符。再运行看看情况,如下所示,产生的两个进程号分别是64187,64188,可以看到文件描述符被子进程继承了。然后查看进程的fd信息,可以看到my.txt这个文件描述符没有继承下去。

2024-08-08 18:49:47 268

原创 linux父进程fork出子进程后,子进程为何首先需要close文件描述符。

考虑到一种情况,父进程创建了tcp服务端套接字,并且listen,此时fork出子进程,若子进程里面不close此监听套接字,则子进程里面是否能接收到客户端的连接。答案是可以的,现在构造一个服务端程序,listen后,fork出子进程,然后父进程进入sleep,子进程调用accept,在accept成功后,打印对应的信息。在linux c/c++编程时,父进程fork出子进程后,子进程经常第一件事就是close掉所有的文件描述符;所以后续父进程fork出子进程后,子进程需要关闭对应的文件描述符。

2024-05-21 17:46:54 410 1

原创 关于命令行中 < 的代码说明

标准输入

2024-05-21 17:14:28 301

原创 当全连接队列满了,tcp客户端收到服务端RST信令的模拟

当tcp服务端全连接队列满了后,并且服务端也不accept取出连接,客户端再次连接时,服务端能够看到SYN_RECV状态。但是客户端看到的是ESTABLISHED状态,所以客户端自认为成功建立了连接,故其写往服务端写数据,发现数据也确实写成功了。但是后面等到服务端通过ACK+SYN告知客户端重新ACK时,发现此时客户端的业务数据已经到来了,故而认为出了问题,故重置连接。其中104代表连接被对端重置。

2024-04-16 19:33:54 349

原创 tcp的全连接队列和半连接队列满时,客户端再connect发生的情况

为何ESTABLISHED的数量是3,不是2,即刚好比全连接队列的长度大1,这里本人给出自己的看法,即在最后一个连接(即第3个)建立后,再往accept队列塞的时候,发现队列已经满了,所以就不塞了,但是连接已经建立好了。所以数目是队列的长度+1。为模拟这种情况,可以先将服务端的accept函数注释掉,这样accept queue中的连接无法被消费,从而很快就满了,而且为了快速达到效果,本人在sysctl.conf中,设置net.core.somaxconn=2,即全连接队列的长度为2.

2024-04-09 20:31:20 1130

原创 linux printf往文件里面写入内容

代码里面,先将fd=1关闭掉,然后open一个文件,出来的文件描述符fd1的值就是1,然后printf向fd为1的文件里面写入东西,执行时,最终可以看到log.txt里面的字符串。为何fsync不行,fflush可以,难道是因为printf和fflush都是stdio.h里面的吗,有大神知道原因的,请不吝赐教。此时相当于疯狂往log.txt里面写入,很快发现log.txt文件很大。最后将fsync(fd1);此种请看下,程序一直在运行,每隔1秒写入一行内容,但是可以发现log.txt中看不到任何内容。

2023-11-21 17:37:16 646 5

原创 AF_UNIX和127.0.0.1(AF_INET)回环地址写数据速度对比(二)

由于测试时发送的是1.15G大小的文件,比较快就发送结束了,而且读文件,写文件是个比较费时的操作,本人考虑到读写文件费时的影响,决定发送端自己构造字符串,接收方只统计接收到的字符个数,并不写文件。然后发送端发送100秒,对比下100秒之内,AF_UNIX和回还地址接收到的字节个数。然后利用的是发送端读取大文件,接收方接收并保存为文件的方式进行测试,结果发现,AF_UNIX并未比127.0.0.1(AF_INET)回环地址优秀,若单次发送的字节数少时,回环地址反而更快。

2023-10-09 16:13:36 706

原创 AF_UNIX和127.0.0.1(AF_INET)回环地址写数据速度对比

本人想当然认为AF_UNIX速度比127.0.0.1更快,为此鄙人进行了实验。2. 用127.0.0.1写客户端和服务端,由客户端读取文件,发送给127.0.0.1服务端,然后服务端写文件,看看用127.0.0.1传递一个文件需要多久。用AF_UNIX写客户端和服务端,由客户端读取文件,发送给AF_UNIX服务端,然后服务端写文件,看看用AF_UNIX传递一个文件需要多久。今天发现linux服务端创建socket的时候,协议族用AF_UNIX即可,AF_LOCAL和AF_UNIX的值是一样的。

2023-10-08 19:42:27 1051 6

原创 criu简单例子

linux dump功能

2023-10-07 18:12:58 379

原创 cgroup限制cpu使用率

现在想限制该cpu使用率为20%,可以通过cgroup来限制,进入/sys/fs/cgroup/cpu,通过mkdir创建cputest目录,然后进入到该目录,这里面有两个文件需要说下:cpu.cfs_period_us和cpu.cfs_quota_us,cpu.cfs_quota_us表示一个调度周期内,可以使用的cpu时间,故cpu.cfs_quota_us/cpu.cfs_period_us就是cpu使用率。,发现cgroup限制内存需要在内存涨起来之前就进行限制,cpu限制是否也有这个约束呢。

2023-09-29 20:54:31 1649

原创 setrlimit限制进程的cpu使用时间

setrlimit限制cpu运行时间

2023-09-23 13:05:04 268

原创 cgroup限制内存

cgroup对内存的限制说明

2023-09-16 22:26:08 1102 1

原创 关于setuid后不能产生core文件的现象和解决方法

setuid下的coredump产生

2023-08-10 11:43:52 184

原创 coturn中turnutils_peer和turnutils_uclient使用说明

由于本人是在xxx.xxx.251.92启动的turnutils_peer,故-e后面也是这个地址。说下,turnserver.conf中,relay-ip=10.0.0.143,这个需要配置,否则loss率是100%。最后,本文的turnutils_peer和coturn服务地址在一个主机上,并且都是在公网上,若分开放,效果会更好。敲这个命令后,会向turnserver申请转发端口,如下所示,22947就是其中分配成功的一个转发端口。后面抓回路地址的包,可以看到流由coturn转发至此34800端口。

2023-05-05 18:44:21 1165 1

原创 无法解析的外部符号 __mingw_vsprintf

windows下的ffmpeg是采取mingw平台上编译,本人采用的是msys2,本人需要h264,于是先在msys2里面编译了x264静态库,注意这里是静态库,动态库经过了链接,不会出现下面的问题,然后在ffmpeg里面用下面配置命令生成Makefile。符号__mingw_vsprintf找不到,本人很好奇,在x264的代码里面搜索__mingw_vsprintf调用的地方,很明显没有直接搜找到,于是到msys2里面的stdio.h,搜寻此符号,还真找到了,如下图所示。再次编译,编译通过。

2023-04-22 23:53:06 1622

原创 webrtc janus服务器部署在公网,coturn转发媒体流

coturn媒体转发实战分析

2023-04-21 18:58:53 2329

原创 ffmpeg avformat_alloc_output_context2的使用说明

封装格式输出说明

2023-02-24 20:23:42 1265

原创 ffmpeg h264文件转mp4

没有B帧的文件,h264转mp4

2023-02-16 19:18:16 6579

原创 vs2017编译libass静态库,并添加到ffmpeg中去,以支持ass,subtitles滤镜

vs2017编译出libass,支持ffmpeg内嵌字幕

2023-02-04 18:08:09 1216

原创 ffmpeg为mkv封装格式的音视频文件添加内挂字幕

mkv文件中添加内挂字幕

2023-01-27 18:11:50 3642

原创 ffmpeg关于AVStream中nb_frames变量数目不正确的问题分析

AVStream中nb_frames不正确的说明

2023-01-12 21:19:22 1252

原创 vs2017调试ffprobe源码

vs2017调试ffprobe

2023-01-12 20:00:15 610

原创 ffmpeg录制H265格式的桌面视频

ffmpeg录制h265格式的桌面视频

2023-01-06 21:38:33 2155

原创 ffmpeg vs2017录制vp9格式的桌面视频

ffmpeg录制vp9格式的视频

2023-01-05 22:40:42 999

原创 关于websocket抓包时的注意事项

websocket抓包注意事项

2022-12-16 17:47:42 2284

原创 关于tcp一端断网,另一端的反应

tcp一端断掉时,另一端的反应

2022-12-03 22:28:52 1397

原创 webrtc PeerConnection的线程使用问题

webrtc PeerConnnection的使用注意事项

2022-11-07 18:50:47 366

原创 利用openssl进行aes加解密

用openssl展示aes的两种模式ecb和cbc的加解密

2022-10-18 10:53:03 4814 1

原创 ffmpeg命令行录制一个具有非IDR性质的I帧的视频

关于录制出一个具有普通I帧的视频文件的说明

2022-10-10 20:07:01 1083

原创 aes加密算法简单说明

里面简要介绍了aes的补齐规则和ecb,cbc模式

2022-09-28 18:33:16 7581

原创 音频编码器为packed(非planar)格式时的说明

录制系统声音(编码格式为非planar格式)

2022-09-02 21:21:09 805

原创 janus videoroom之媒体录制

janus音视频会议录制说明

2022-09-01 16:25:28 1434

原创 关于sip呼叫成功后,对方立马挂断的情况说明

本文给出SIP呼叫刚建立时,一端立马BYE的情况说明

2022-08-25 19:44:32 2392

原创 janus streaming运行说明

janus streaming运行说明

2022-08-10 20:26:28 867

原创 如何获取自己的公网地址

公网ip获取办法

2022-07-25 11:37:58 10198

nginx_m3u8_html.rar

nginx_m3u8_html.rar

2022-01-13

ffmpeg录制的采样率不同的琵琶行歌曲.rar

这里面有ffmpeg录制的琵琶行歌曲,一共三首,两种采样率,供读者读博客时,好体验

2021-11-24

ffmpeg_x264_dll.rar

ffmpeg动态库,支持x264,版本信息如下: ffmpeg version N-102642-g864d1ef2fc Copyright (c) 2000-2021 the FFmpeg developers built with gcc 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project) configuration: --arch=x86_64 --disable-debug --enable-shared --disable-static --enable-gpl --enable-libx264 --extra-cflags=-I/usr/local/x264/include --extra-ldflags='-L/usr/local/x264/lib -static' --pkgconfigdir=/usr/local/x264/lib/pkgconfig --prefix=/home/ffmpeg_x264_dll libavutil 57. 0.100 / 57. 0.100 libavcodec 59. 1.100 / 59. 1.100 libavformat 59. 2.101 / 59. 2.101 libavdevice 59. 0.100 / 59. 0.100 libavfilter 8. 0.101 / 8. 0.101 libswscale 6. 0.100 / 6. 0.100 libswresample 4. 0.100 / 4. 0.100 libpostproc 56. 0.100 / 56. 0.100 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

2021-11-23

ffmpeg-snapshot.tar.bz2

ffmpeg源码包,2021年6月最新的,编译后的版本号详情如下所示,上传只是方便自己日后查找 E:\git\webrtc\webrtc_wins_4577\src\third_party\ffmpeg_x64\vs2017_build_static\bin>ffmpeg -version ffmpeg version N-102642-g864d1ef2fc Copyright (c) 2000-2021 the FFmpeg developers configuration: --arch=x86_64 --disable-debug --prefix=./vs2017_build_static --toolchain=msvc libavutil 57. 0.100 / 57. 0.100 libavcodec 59. 1.100 / 59. 1.100 libavformat 59. 2.101 / 59. 2.101 libavdevice 59. 0.100 / 59. 0.100 libavfilter 8. 0.101 / 8. 0.101 libswscale 6. 0.100 / 6. 0.100 libswresample 4. 0.100 / 4. 0.100

2021-10-23

vs2017_build_static.rar

版本信息如下,因为是vs2017编译,所以只能保证在vs2017中用 E:\git\webrtc\webrtc_wins_4577\src\third_party\ffmpeg_x64\vs2017_build_static\bin>ffmpeg -version ffmpeg version N-102642-g864d1ef2fc Copyright (c) 2000-2021 the FFmpeg developers configuration: --arch=x86_64 --disable-debug --prefix=./vs2017_build_static --toolchain=msvc libavutil 57. 0.100 / 57. 0.100 libavcodec 59. 1.100 / 59. 1.100 libavformat 59. 2.101 / 59. 2.101 libavdevice 59. 0.100 / 59. 0.100 libavfilter 8. 0.101 / 8. 0.101 libswscale 6. 0.100 / 6. 0.100 libswresample 4. 0.100 / 4. 0.100

2021-10-23

ffmpeg_x64_dll.rar

采用mingw内部自带编译器进行编译,版本为如下: ffmpeg version N-102642-g864d1ef2fc Copyright (c) 2000-2021 the FFmpeg developers built with gcc 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project) configuration: --arch=x86_64 --prefix=/home/ffmpeg_static_x64 --disable-debug libavutil 57. 0.100 / 57. 0.100 libavcodec 59. 1.100 / 59. 1.100 libavformat 59. 2.101 / 59. 2.101 libavdevice 59. 0.100 / 59. 0.100 libavfilter 8. 0.101 / 8. 0.101 libswscale 6. 0.100 / 6. 0.100 libswresample 4. 0.100 / 4. 0.100

2021-10-23

SendMessage是否入消息队列.rar

代码是vs2017中编写和调试,有日志,可以方便调试

2021-08-28

ffmpeg_4.3.1_win64.rar

ffmpeg4 sdk库

2021-06-04

DuiEditor.zip

dui的编辑工具,用vs2019编辑的

2021-05-26

ParentChildEmbeded.rar

里面写了qt的父进程窗口嵌入子进程窗口,着重强调了拖动窗口时,tablewidget第二列编辑时, combobox下拉列表对应不上的解决方法

2021-03-07

CrashAPI.rar

当c++程序由于非法内存访问,除0等操作导致程序崩溃时,调用此api,会产生dump文件。 CRASH_API BOOL CALLBACK CrashAPI_Init(const char *pPath); CRASH_API void CALLBACK CrashAPI_Uninit(); CrashAPI_Init(".\\dump");后面发生崩溃时,会在当前目录下的dump目录生成dump文件

2021-01-24

log4cxxTest.rar

log.h和log.cpp是对log4cxx的封装,提供了LOG_INFO,LOG_ERROR这样的宏来写日志,环境是vs2015,编译是release,不是debug

2021-01-15

SshTest.rar

qssh打造的sftp登录,有登录界面,用户登录之后,可以进入到目录,并且可以将本地文件上传到目录中去

2020-08-30

ProcessEmbedded.rar

里面有两个工程,windows的和linux的,需要在vs2015中打开,qt版本是5.9.6,Makefile已经生成好了,linux的子进程路径需要做一点修改,文档里面写死了。

2020-04-30

dll_killer.rar

里面有32位和64位的工具,里面模仿spy++,拖动靶形图标到指定窗口,可以显示出进程号,然后列举出进程依赖的dll的全路径,可以快速定位程序依赖的dll是否是指定位置

2020-04-23

oracle 64位客户端和sdk下载

里面既包含了oracle客户端,也包含了sdk(oci的),64位的,不包含32位,自己在写golang中操作oracle的时候,亲自验证过可行

2020-02-17

unix高级编程(pdf格式)

分章节,pdf格式,内容详尽,并且有源代码文件,经典不容错过

2012-01-21

linux/unix shell编程(pdf)

为pdf格式,共30章,一章一个pdf文件,里面内容通俗易懂,是初学者一个非常好的选择

2012-01-20

深入浅出MFC(pdf)

这本书是一个经典的MFC方面的书,里面内容多,需要毅力,我读了两遍,未能最终读下去。

2012-01-18

TCP+IP详解(pdf)

内容详尽,经典不容错过,并且是pdf格式,易于阅读

2012-01-18

深度探索c++对象模型

非常经典,作者和c++primer为同一个人

2012-01-16

空空如也

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

TA关注的人

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