- 博客(675)
- 资源 (43)
- 收藏
- 关注
原创 带semaphore的buffer 应用实例
这是一个项目的缩减版.该项目内容是以一个恒定的码率去发送文件. 项目运行的很好,但是当在文件所在磁盘大量长时间 copy 文件时, 由于有大量磁盘读写操作,干扰了以恒定码率发送文件. 出现码率抖动. 意味着画面可能会卡顿.所以需要在外边包上一个外壳, 让外面的这个线程专门去抢磁盘资源, 放入缓存.则内层可以以恒定码率读取缓存,完成发送.这里对缓存的管理就引入了一个重要概念.gSemBufObj 对象. 带semaphore的缓存的管理对象.经实验效果不错. 分享这个模型代码以飨读者.
2024-03-18 10:25:35 484
原创 线程的通俗解释
1. 什么是线程? 2. 线程函数长得什么样? 3. 为什么要使用线程.4. 线程控制. 4.0 线程的执行和挂起 4.1: 线程中的互斥操作 4.2: 线程中的同步操作 4.3: 为什么不用全局变量作线程间控制变量? 4.4: 全局变量在线程同步或互斥中没有立足只地吗? 4.5: 线程的创建与销毁
2024-03-17 17:33:27 474
原创 ffmpeg 从avio_read 到 file_read
第一层: aviobuf.c中, AVIOContext对象当家, 这就是pReadCtx.第二层: avio.c中, URLContext 当家, 简记为h.第三层: file.c中, FileContext 对象当家,简记为c.
2024-03-13 15:52:49 981
原创 创建线程时指定线程属性,调整线程优先级
//用attr 来创建thread, 设置线程优先级//查看指定进程各线程优先级$ ps -p 8996 -T -o tid,comm,rtprio//查看所有线程优先级$ ps -e -T -o tid,comm,rtprio | grep -v -
2024-03-12 13:01:05 371
原创 ffmpeg 从avio_write 到 udp_write
1. main 调用avio_write2. avio_write 调用flush_buffer3. flush_buffer 调用的writeout函数4. writeout 函数调用了ffurl_write 函数, 5. ffurl_write 直接调用了retry_transfer_wrapper6. udp_write 函数参数, 有一个内存handle, 数据指针和大小, 是实际传递数据的地方.
2024-03-11 14:20:59 959
原创 玩转centos 下的core 文件
一: 准备一个会产生core 的文件二: 原因查找:三: 设置core size 为unlimited(不限制大小)四: 查看当前core 的生成状态:五: 修改内核参数六: 再次查看:
2024-03-06 12:58:29 426
原创 udp丢包问题研究
//发现udp 有收不到数据包现象.一: 观察丢包1. ifconfig enp8s02. netstat -s -u二: 修改系统缓存参数. recv_buffer_size 修改系统buffer_size sysctl -w net.core.rmem_max=26214400 sysctl -w net.core.rmem_default=26214400三: 应用程序考虑av_dict_set(&m_options, "buffer_size", "1024000", 0);
2024-03-01 18:04:22 372
原创 获取秒值, 把秒值转换为时分秒, 及把时分秒转换成秒值代码
获取秒值, 把秒值转换为时分秒, 及把时分秒转换成秒值// 使用就这么简单.// 有时候程序输出需要打印时间信息, 就可以这么干了.
2024-03-01 15:36:04 152
原创 字符编码问题
文本文件中,存储的是字符的编码,我们在屏幕上看到的是字符的一种呈现,而其在磁盘上的存储则是以一种编码形式存储.1. GB2312,GBK,GB180302. UNICODE3. UTF4. UTF85. REPLACEMENT CHARACTER6. 乱码的产生.7. BOM (byte order mark 0xFEFF)
2024-02-23 13:42:08 252
原创 QT中QThread, QTimer的使用(完整代码)
目的: 用最简单的程序1. 了解QT编程的框架2. 了解QThread 对象的使用3. 了解QTimer 对象的使用
2024-02-03 11:26:46 519
原创 cmake 脚本解释器
# cmake 可看成是一种脚本解释器# 变量及变量的使用, 变量是字符串或字符串数组# 变量运算# 循环语句# 定义宏# 定义函数# 使用宏和使用函数
2023-12-29 12:58:36 428
原创 用awk从文件中提取时间信息
description: 用awk从文件中提取时间信息现在对于成千上万条文本记录,判断一下EXT 时间信息及文件名称是否是正常的,# 匹配到文件时间# 把匹配到的字符串还能分组放入数组,强!# awk 自动判别参数是字符串还是数据, 棒!# awk 保留数据,参与运算.
2023-12-26 11:35:07 907
原创 用makeself.sh脚本来制作一键发布文件(.run)
用apt 来安装makeself.sh 文件. $apt install makeself查看帮助:$ makeself --helpUsage: /bin/makeself [params] archive_dir file_name label startup_script [args]例如:$makeself ~/work_dir work_dir.run "this is makeself test program" ./main
2023-12-25 17:21:40 407
原创 gnome-control-center 点击喇叭无声(解决过程).
Whoever translated default:LTR did so wrongly.Failed to play sound: No such driverexport CLUTTER_TEXT_DIRECTION='ltr' 重装gnome-control-center, 先强制删除,再重新安装$ sudo apt install gnome-control-center
2023-12-22 13:52:19 525
原创 git 杂项
$ git config --global --https.sslVerify "false"$ git config credential.helper store
2023-12-21 15:43:42 431
原创 c/c++中 qsort 与 bsearch 算法的使用
二进制搜索一个key, 在BASE地址, 元素个数NMEMB, 元素大小SIZE,比较函数__COMPAR。* 由于这个表是我们人类方便查阅的方式给出的,为了编程的需要,先把它按月份名称的ascii顺序排序,bsearch 二分搜索方法,是需要一个排序的数组的,所以先排序数组,然后让bsearch 搜索key。bsearch 在/usr/include/stdlib.h 中定义, 就在qsort 函数的上方。qsort 用来排序,bsearch用来搜索,是这个意思,但具体怎样使用呢?
2023-12-13 17:58:10 590
原创 linux 键盘卡顿及问题的解决.
Dec 12 14:17:01 hjj-u7090 gnome-terminal-[2874]: message repeated 5 times: [ Process Key Event failed: GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._g_2dio_2derror_2dquark.Code24: 已到超时限制.]ubuntu20 系统,键盘经常 会卡顿一下, 此时鼠标正常, ALT_TAB 键正常,可以切换窗口,从此世界又恢复了美好!
2023-12-13 13:27:59 432
原创 c/c++语言产生正弦波音频数据代码
/每一个数据递进一个角度2*PI/FREQUENCY,此值为角速度。* 产生1s 440hz, S16格式的音频数据,48K hz 采样,单声道,每个frame大小为1024。//产生10秒音频数据。* 这就是数字声音的概念. 采样的数据格式,采样率(每秒采样次数),声道数,frame大小。//每一个frame 的初始角度。
2023-12-12 14:38:19 397
原创 通达信“持续“函数使用.
补充一下FINANCE()函数finance(3) 该函数返回沪深京品种类型, 用此函数可以筛选股票类型0:指数,1:A股主板, 3190 个(59.9%), 包含6字头沪市,0字头深市2:三板市场, 目前233个4字头(三板),8字头(新三板)的股票3:创业板, 1327个(24.9%), 3字头4:科创板, 565个(10.6%) 688开头5:B股,6:债券,7:基金,8:权证,9:其它,10:非沪深品种
2023-12-04 21:34:06 621
原创 c/c++ header_only 头文件实现的关键点
1. 对外声明的函数必需加上inline, 消除连接的歧义2. 在inline 函数内部声明的static 对象, 在多个文件包含时,对象是唯一的
2023-11-28 17:06:37 1203
原创 sizeof 与 strlen 用法的简明解释
1. strlen() 是函数, 程序会根据传入的指针计算字符串的长度,不带尾部0.2. sizeof() 不是函数, 其括着的部分可以是变量或类型或字符串,把它也叫参数吧, gcc 会计算出参数所需占用的内存的大小.
2023-11-15 09:54:27 73
原创 Ubuntu 20.04 DNS解析原理, 解决resolv.conf被覆盖问题
1. 域名解析服务是什么? systemd-resolved.service2. 它起了什么作用? 它将127.0.0.53的请求转发给后端服务请求3. 后端服务请求服务器是哪个文件? /run/systemd/resolve/resolv.conf4. 该文件是如何生成的, 开机时由 /etc/systemd/resolved.conf 形成5. 域名解析的过程? 参考步骤8, 由127.0.0.53转发给后端server6. 域名解析工具resolvectl 的使用
2023-11-09 14:22:26 932
原创 ff_compute_frame_duration() 代码注释
* 输入参数: s(格式上下文), st(流), pc(分析器上下文), pkt(包) * 输出参数: pnum(分子地址),pden(分母地址) * 描述: 返回 frame 时长,秒值,用分数表达. 得不到时长时返回 0(*pnum=0,*pden=0);
2023-10-26 15:15:08 84
原创 elf 文件信息的用途
1. 检查程序头, 判定重定位信息是否是只读的.2. 检查是否存在符号表3. canary 检测(金丝雀检测), 检查符号表中是否存在__stack_chk_fail函数调用4. 查看执行文件中有多少个函数调用了libc中的函数
2023-10-10 15:25:32 97
原创 怎样判定一个可执行文件是否是PIE 格式的文件
执行文件是PIE 需要两个条件:1. 其文件头类型是 DYN 类型2. 其动态节中有 DEBUG 符号名存在
2023-10-10 11:10:32 194
原创 c++实现的一个定时器实例
小结: 所谓的定时器, 当时间到时执行某一个任务,是通过启动一个线程来实现的,等待时是timer线程在等待,执行时是timer线程在执行.调用线程和执行线程是不同的线程
2023-09-23 12:05:47 247
原创 C++11 Lambda函数 入门
小结: lambda 函数存在的意义: lambda 函数可以直接访问父作用域变量(以值方式传递或以引用方式传递) [=]以值传递的方式捕获父作用域变量, 父作用域变量是不能直接修改的 加mutable 修饰符,就可以在函数体里修改, 但退出后值不变 [&]以引用方式捕获父作用域变量,就可以直接修改父作用域变量 于是乎, 当你在写一个函数时,如果你愿意,就可以随便再定义一个lambda函数, 它可以操控该函数的变量. 使得书写函数更灵活了!
2023-09-22 19:50:36 85
原创 avformat_find_stream_info 为什么总是等到超时或超过大小才退出?
avformat_find_stream_info 为什么不能正常退出了?对于 ts 流文件,如果你设置了scan_all_pmts 选项, 则主动退出条件将不会满足,因为它的ctx_flags一直是1而不能清0. 所以find_stream_info 不会主动退出. 只能等超时或超过指定大小才退出了。
2023-09-21 11:11:36 160
原创 emacs从缓冲中获取信息,并执行shell 命令
我现在想把光标放到某一行,然后敲一个按键就能播出该udp码流,如何实现?当然,这需要两步走,第一步: 获取所在行的url信息第二步: 调用ffplay 命令,例如当放在第一行时,它应该调用 ffplay udp://239.3.1.105:8092
2023-09-20 12:21:58 174
原创 linux 下用posix semaphore 解决资源竞争问题实例
让10个线程竞争5个资源,用semaphore 来实现1. sem_init(信号量,num) 初始化资源数2. 每个线程要 sem_wait(信号量) 申请资源,申请不到会等待3. 用完要sem_post(信号量), 归还资源
2023-09-20 09:54:59 235
原创 linux 应用中offsetof ()是个啥?
//总结: linux 应用中 offsetof 是在stddef.h 中定义的一个宏//#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
2023-09-13 13:43:21 177
原创 configure 文件 check_cxxflags() 函数的注释
#测试gcc 带CXXFLAGS的命令 # test_cmd 是函数名称 # $cxx 是命令, 此为gcc # $CPPFLAGS $CFLAGS $CXXFLAGS 初始都为空 # "$@"是传来的额外flags, 例如 -std=c++11 # $CXX_C 为 "-c", 只编译,不连接 # $TMPO 为例如: TMPO=/tmp/ffconf.ZI0lwmVZ/test.o # $TMPCPP为例如: TMPCPP=/tmp/ffconf.ZI0lwmVZ/test.cpp
2023-08-28 16:54:45 100
原创 configure 文件 test_exec() 函数的注释
j# 执行test_exec ,这里重定向命令行输入为EOF 之间的内容# 实际上这里输入的内容被保存为TMPC, 然后执行了$ld 命令,再查看其输出# linux 下 测试结果应返回0 (true)
2023-08-28 14:24:47 84
原创 linux log 日志
两种方法:1. 自己用cat, vim 等查看各分离的log 文件, 这些是ascii 文件2. 用journalctl 统一管理各个log(它查看的是/var/log/journal/目录下的文件,这是二进制文件,只能用工具看.
2023-08-08 17:41:16 441
原创 configure 文件中测试Makefile 是否支持嵌套变量的代码注释
# configure 文件中测试Makefile 是否支持嵌套变量的代码注释.# 下面代码是从configure 脚本中择出的一小段代码,供研究用,有详细注释# 向控制台输出了一段 Makefile, 然后用 make 去执行,成功则设变量为yes# Makefile 的意思是执行$(TRUE), 其展开过程为V=1 则 $(V)=1 则内层为BAR1# 由于BAR1=true, 所以${BAR1}=true, 所以 TRUE=true; 所以 $(TRUE)为true, true 就是命令tr
2023-08-07 17:54:53 98
tr_research.tar.gz
2020-08-14
vim73-gdb 工具
2015-02-07
linux 64位只读文件系统 romfs64
2013-11-07
.net 中间语言 IL 指令集
2010-10-29
IDA Free8.3 For Linux
2023-10-08
将视频存储为一张张jpg 图片源码
2022-06-11
linux 命名管道创建及使用demo程序
2022-06-02
监视程序的内存使用(linux c 源代码)
2022-05-04
Qt5 信号与槽研究,线程研究
2022-03-12
OpenSSH for windows (64bits)
2020-11-09
buttonTable.zip
2020-07-23
the-23-gang-of-four-design-patterns-with-cplusplus.tar.gz
2020-03-08
LFS-BOOK-CN.html
2019-12-29
stl-views.gdb
2016-01-23
gcc 函数调用探测功能
2015-09-10
gdbinit-gdb 功能扩展插件
2015-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人