刷新
用udp协议传输文件

博主头像 用udp协议传输文件 目录用udp协议传输文件头文件/宏定义客户端服务器 头文件/宏定义 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <netinet/in.h> ...

进程间通信函数接口及应用模板小结

博主头像 进程间通信方式 1.无名管道/有名管道 2.信号 3.共享队列(system V-IPC) 4.共享内存(system V-IPC) 5.信号量(system V-IPC) 6.套接字 无名管道特征 1.文件没有名字,无法使用open 2.只能用于亲缘进程间 3.半双工工作方式:读写端分开 4.写入 ...

线程创建的函数及应用小结

博主头像 进程是计算机分配资源的基本单位,线程是cpu调度的基本单位 线程基本概念: LWP:light weight process 轻量级的进程。创建线程的底层函数和进程一样,都是clone,因此线程的本质仍是进程(在linux环境下) 与进程相比,线程有独立的TCB结构体(类似于进程的PCB),但没有独 ...

线程池的实现源码及应用举例

博主头像 1.线程池本质 ​ 多个线程组成的一个集合,目的为了并发执行任务,定义时是一个结构体,成员有互斥锁,条件变量,任务链队列指针,任务链队列中等待的任务个数,当前活跃的线程数量,线程ID,线程销毁标记等 2.线程池的关键技术 (1)万能函数指针(通用函数指针): *void *(*p)(void ) ( ...

FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流

博主头像 ​《FFmpeg开发实战:从零基础到短视频上线》一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能实在是太简单了,无法应用于真实直播的生产环境,真正能用于生产环境的流媒体服务器还要看SRS或者ZLMediaKi ...

互斥锁与条件变量学习与应用小结

博主头像 互斥锁,也叫互斥量。有以下几个显著的特点: 唯一性:互斥锁保证在任何给定的时间点,只有一个线程可以获得对临界区资源的访问权。如果一个线程锁定了一个互斥量,在它解除锁定之前,没有其他线程可以锁定这个互斥量。 原子性:锁定和解锁互斥锁的操作是原子的,这意味着操作系统(或pthread函数库)保证了如果一 ...

Linux线程之读写锁小结

博主头像 读写锁(rwlock)与互斥锁(Mutex Lock)相比,有如下特点: 更加细致的区分了读和写,给共享资源分别上了“读”锁和“写”锁。 “写”独占,“读”共享,“写”锁优先级更高 如果共享资源在绝大多数情况下是“读”操作,可以提高程序的并发性能。 常用的函数原型总结如下: pthread_rwlo ...

FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp

博主头像 ​《FFmpeg开发实战:从零基础到短视频上线》一书介绍了JPEG、PNG、GIF等图片格式,以及如何通过FFmpeg把视频画面转存为这些格式。除了上述这些常见的图片格式,还有较新的WebP格式,它由VP8视频标准派生而来,VP8演进的视频格式叫做WebM,图片格式则叫WebP。 若想让FFmpeg ...

lua语言:模块热更新方案

博主头像 我们知道,lua通过package模块来管理模块的搜索和加载,当使用require首次成功加载一个模块后,模块(Table)会被存储在package.loaded中,之后的require行为会直接获取到已加载的模块缓存。 如何在程序执行时,将对模块文件的修改热更新到程序中,同时确保运行时状态的正常。 ...

Design OOP use C

博主头像 Design OOP use C 使用c语言实现面向对象特性 以底层思维来理解面向对象。我所理解的oop:为不同的数据元提供稳定的处理逻辑框架,同时提供复写的可能,支持不同数据元个性化定制有限的逻辑; 多态特性: 基类实现一组通用处理逻辑接口,子类通过改变特定接口的执行逻辑实现将子类与个性化操作绑定 ...

strcpy和memcpy

博主头像 strcpy和memcpy 目录strcpy和memcpy 复制内容: strcpy:专门用于复制字符串,它会一直复制直到遇到源字符串中的'\0'结束符。这意味着如果源字符串长度超过了目标缓冲区的大小(不包括'\0'),就会发生缓冲区溢出,这是一个常见的安全隐患。 memcpy:可以复制任意内容,如 ...

关于字符串的功能函数小结

博主头像 笔者做项目过程中,使用了很多关于字符串的C库中自带功能函数,极大便利了项目流程。再次做一个小结,之后若有增加会继续补充。 所需采用函数 序号 函数/描述 1 char *strcat(char *dest, const char *src) 【char *strncat(char *dest, co ...

条件编辑及宏定义学习小结

博主头像 ​ 条件编译(也称为预处理)是一种在编译阶段控制代码是否包含进最终编译单元的技术。这通常通过使用预处理器指令(如#if, #ifdef, #ifndef, #else, #elif, 和 #endif)来完成。而条件编译通常是和宏联系在一起,因此说宏带有不用来回切换,宏替换发生在编译的预处理阶段,省 ...

FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比

博主头像 ​《FFmpeg开发实战:从零基础到短视频上线》一书提到:通常情况下,在视频流解析之后,从AVCodecContext结构得到的宽高就是视频画面的宽高。然而有的视频文件并非如此,如果按照AVCodecContext设定的宽高展示视频,会发现画面被压扁或者拉长了。比如该书第10章源码playsync. ...

FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器

博主头像 ​AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。 l ...

JPEG库的移植(arm平台)

博主头像 JPEG库的移植(arm平台) 目录JPEG库的移植(arm平台)介绍头文件及全局变量1、图片显示2、其他图片压缩到jpg图片3、主函数及验证程序输出结果 介绍 图解 头文件及全局变量 #include <stdio.h> #include <stdlib.h> #include <sys/type ...

<1234···11>