- 博客(680)
- 资源 (43)
- 收藏
- 关注
原创 c语言bit位定义--位域的分配是怎样的?
little-endian位域的分配是把最先定义的bit位分到了最低位的bit上, 把最后定义的bit放到了最高位的bit上.编译器认为bit位跟外部包装它的unsigned int 没有半毛钱关系, 你认为有关系,它认为那是强加给它的,它不承认
2024-03-29 14:42:47 505
原创 从fread 到 磁盘驱动
1. linux 内核调用栈 2. 读中断服务程序. 3. 何时计算的柱面,磁头,扇区号? 现代磁盘还有柱面,磁头,扇区概念吗? 4. 固定的dev,block, 是不是每次都能找到固定的buffer缓冲区 bh ?
2024-03-28 16:55:47 891
原创 linux 命令行下的计算器
1. echo 运算器, 推荐 2. bc 计算器, 不推荐 3. dc 计算器, 不推荐 4. awk计算器. 推荐 5. python. 推荐
2024-03-27 15:56:32 501
原创 磁盘文件系统实际操练,解释到bit
0. 为什么需要磁盘文件系统. 1. 磁盘文件系统的任务是什么? 2. 空白磁盘是什么? 空白磁盘数据长什么样? 3. 格式化磁盘都干了什么? 格式化后的磁盘长什么样? 3.1 先找一个空设备 3.2 然后后把这个文件与伪设备关联. (相当于你把磁盘放入了驱动器) 3.3 然后格式化磁盘 , 3.4 格式化后的磁盘长什么样? 如下图:
2024-03-26 09:04:27 999
原创 ftp协议的彻底研究
0. ftp 的简单介绍 1. 安装ftp 服务器, vsftpd, vsftpd 是注重安全性、轻量又高效的 FTP 服务器 2. 安装ftp 客户端. 3. ftp 客户端的使用. 4. ftp 协议进一步研究 5. ftp 协议的高级研究 6. ftp 协议源码研究 6.1 调试: ftp -v -d localhost 6.2 getervb
2024-03-24 11:32:28 781
原创 带semaphore的buffer 应用实例
这是一个项目的缩减版.该项目内容是以一个恒定的码率去发送文件. 项目运行的很好,但是当在文件所在磁盘大量长时间 copy 文件时, 由于有大量磁盘读写操作,干扰了以恒定码率发送文件. 出现码率抖动. 意味着画面可能会卡顿.所以需要在外边包上一个外壳, 让外面的这个线程专门去抢磁盘资源, 放入缓存.则内层可以以恒定码率读取缓存,完成发送.这里对缓存的管理就引入了一个重要概念.gSemBufObj 对象. 带semaphore的缓存的管理对象.经实验效果不错. 分享这个模型代码以飨读者.
2024-03-18 10:25:35 689
原创 线程的通俗解释
1. 什么是线程? 2. 线程函数长得什么样? 3. 为什么要使用线程.4. 线程控制. 4.0 线程的执行和挂起 4.1: 线程中的互斥操作 4.2: 线程中的同步操作 4.3: 为什么不用全局变量作线程间控制变量? 4.4: 全局变量在线程同步或互斥中没有立足只地吗? 4.5: 线程的创建与销毁
2024-03-17 17:33:27 562
原创 ffmpeg 从avio_read 到 file_read
第一层: aviobuf.c中, AVIOContext对象当家, 这就是pReadCtx.第二层: avio.c中, URLContext 当家, 简记为h.第三层: file.c中, FileContext 对象当家,简记为c.
2024-03-13 15:52:49 1038
原创 创建线程时指定线程属性,调整线程优先级
//用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 395
原创 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 993
原创 玩转centos 下的core 文件
一: 准备一个会产生core 的文件二: 原因查找:三: 设置core size 为unlimited(不限制大小)四: 查看当前core 的生成状态:五: 修改内核参数六: 再次查看:
2024-03-06 12:58:29 449
原创 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 396
原创 获取秒值, 把秒值转换为时分秒, 及把时分秒转换成秒值代码
获取秒值, 把秒值转换为时分秒, 及把时分秒转换成秒值// 使用就这么简单.// 有时候程序输出需要打印时间信息, 就可以这么干了.
2024-03-01 15:36:04 173
原创 字符编码问题
文本文件中,存储的是字符的编码,我们在屏幕上看到的是字符的一种呈现,而其在磁盘上的存储则是以一种编码形式存储.1. GB2312,GBK,GB180302. UNICODE3. UTF4. UTF85. REPLACEMENT CHARACTER6. 乱码的产生.7. BOM (byte order mark 0xFEFF)
2024-02-23 13:42:08 269
原创 QT中QThread, QTimer的使用(完整代码)
目的: 用最简单的程序1. 了解QT编程的框架2. 了解QThread 对象的使用3. 了解QTimer 对象的使用
2024-02-03 11:26:46 559
原创 cmake 脚本解释器
# cmake 可看成是一种脚本解释器# 变量及变量的使用, 变量是字符串或字符串数组# 变量运算# 循环语句# 定义宏# 定义函数# 使用宏和使用函数
2023-12-29 12:58:36 443
原创 用awk从文件中提取时间信息
description: 用awk从文件中提取时间信息现在对于成千上万条文本记录,判断一下EXT 时间信息及文件名称是否是正常的,# 匹配到文件时间# 把匹配到的字符串还能分组放入数组,强!# awk 自动判别参数是字符串还是数据, 棒!# awk 保留数据,参与运算.
2023-12-26 11:35:07 955
原创 用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 440
原创 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 547
原创 git 杂项
$ git config --global --https.sslVerify "false"$ git config credential.helper store
2023-12-21 15:43:42 437
原创 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 599
原创 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 478
原创 c/c++语言产生正弦波音频数据代码
/每一个数据递进一个角度2*PI/FREQUENCY,此值为角速度。* 产生1s 440hz, S16格式的音频数据,48K hz 采样,单声道,每个frame大小为1024。//产生10秒音频数据。* 这就是数字声音的概念. 采样的数据格式,采样率(每秒采样次数),声道数,frame大小。//每一个frame 的初始角度。
2023-12-12 14:38:19 414
原创 通达信“持续“函数使用.
补充一下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 720
原创 c/c++ header_only 头文件实现的关键点
1. 对外声明的函数必需加上inline, 消除连接的歧义2. 在inline 函数内部声明的static 对象, 在多个文件包含时,对象是唯一的
2023-11-28 17:06:37 1261
原创 sizeof 与 strlen 用法的简明解释
1. strlen() 是函数, 程序会根据传入的指针计算字符串的长度,不带尾部0.2. sizeof() 不是函数, 其括着的部分可以是变量或类型或字符串,把它也叫参数吧, gcc 会计算出参数所需占用的内存的大小.
2023-11-15 09:54:27 78
原创 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 1133
原创 ff_compute_frame_duration() 代码注释
* 输入参数: s(格式上下文), st(流), pc(分析器上下文), pkt(包) * 输出参数: pnum(分子地址),pden(分母地址) * 描述: 返回 frame 时长,秒值,用分数表达. 得不到时长时返回 0(*pnum=0,*pden=0);
2023-10-26 15:15:08 87
原创 elf 文件信息的用途
1. 检查程序头, 判定重定位信息是否是只读的.2. 检查是否存在符号表3. canary 检测(金丝雀检测), 检查符号表中是否存在__stack_chk_fail函数调用4. 查看执行文件中有多少个函数调用了libc中的函数
2023-10-10 15:25:32 101
原创 怎样判定一个可执行文件是否是PIE 格式的文件
执行文件是PIE 需要两个条件:1. 其文件头类型是 DYN 类型2. 其动态节中有 DEBUG 符号名存在
2023-10-10 11:10:32 229
原创 c++实现的一个定时器实例
小结: 所谓的定时器, 当时间到时执行某一个任务,是通过启动一个线程来实现的,等待时是timer线程在等待,执行时是timer线程在执行.调用线程和执行线程是不同的线程
2023-09-23 12:05:47 291
原创 C++11 Lambda函数 入门
小结: lambda 函数存在的意义: lambda 函数可以直接访问父作用域变量(以值方式传递或以引用方式传递) [=]以值传递的方式捕获父作用域变量, 父作用域变量是不能直接修改的 加mutable 修饰符,就可以在函数体里修改, 但退出后值不变 [&]以引用方式捕获父作用域变量,就可以直接修改父作用域变量 于是乎, 当你在写一个函数时,如果你愿意,就可以随便再定义一个lambda函数, 它可以操控该函数的变量. 使得书写函数更灵活了!
2023-09-22 19:50:36 88
原创 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 192
原创 emacs从缓冲中获取信息,并执行shell 命令
我现在想把光标放到某一行,然后敲一个按键就能播出该udp码流,如何实现?当然,这需要两步走,第一步: 获取所在行的url信息第二步: 调用ffplay 命令,例如当放在第一行时,它应该调用 ffplay udp://239.3.1.105:8092
2023-09-20 12:21:58 273
原创 linux 下用posix semaphore 解决资源竞争问题实例
让10个线程竞争5个资源,用semaphore 来实现1. sem_init(信号量,num) 初始化资源数2. 每个线程要 sem_wait(信号量) 申请资源,申请不到会等待3. 用完要sem_post(信号量), 归还资源
2023-09-20 09:54:59 241
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关注的人