- 博客(48)
- 收藏
- 关注
原创 move移动语义详解
首先引入值类别的概念:C++11之前的值类别分为左值(Lvalue)和右值(Rvalue),而C++11引入了更细化的分类,包括纯右值(Prvalue)将亡值(Xvalue)和泛左值(Glvalue)左值:表示一个有持久地址的对象,可以对其取地址。int x = 10;纯右值:表示一个临时值或不占用持久存储的值。通常是字面量或计算结果,用于初始化或传递到函数。x + 5;将亡值:特殊的右值,表示即将“被销毁”的对象,可以通过移动语义转移其资源。通常出现在右值引用和std::move中。
2025-01-15 13:59:40
1032
原创 智能指针相关的常见面试题
智能指针本身在栈区,托管的资源在堆区,利用了栈对象超出生命周期后自动析构的特征,所以无需手动delete释放资源。(资源获取即初始化)确保资源在合适的时机被释放(构造函数中获取资源,析构函数中释放资源)相互引用,会导致循环引用问题,引用计数无法降到 0,资源无法释放。减少:(1)智能指针销毁(2)赋值新资源(3)函数返回时临时对象销毁。,但表现得像一个指针(指针所能做的操作,这个类也要全部允许)。:多个指针共享所有权,通过引用计数控制资源的释放。先简单介绍什么是智能指针:智能指针是一个。
2025-01-10 14:56:07
438
原创 C++关键字总结
静态成员变量的声明在类内部,但是其定义必须在类外部定义来获得内存类类型::变量名使用位置存储位置作用域生命周期静态全局变量静态存储区当前文件程序开始到程序结束全局变量静态存储区全局作用域,跨文件可访问程序开始到程序结束静态局部变量静态存储区定义它的块或函数内程序开始到程序结束局部变量栈区函数或块内有效函数或块开始到结束静态类成员变量静态存储区类内或通过类名访问程序开始到程序结束类成员变量对象内存(堆区或栈区,取决于对象的存储位置)对象作用域随对象生命周期而定。
2025-01-06 15:06:35
1037
原创 FFMPEG解码+SDL2播放视频
本项目通过FFmpeg对音视频进行解码,得到原始数据格式AVFrame,再通过SDL2在窗口渲染图像数据进行播放。配置环境:vs 2022 + FFmpeg5.0 + SDL2 2.28项目源码:https://github.com/say-Hai/FFmpeg-videoPlayDemo/tree/PlaySDL2。
2024-12-27 16:38:14
741
原创 QTDemo:串口调试工具
本项目通过QT框架设计一款可以在Windows、Linux等平台的跨平台串口助手,串口功能能够满足基本的调试需求。本项目采用的版本为:QT5.14 + visual studio 2022 进行开发。项目源码:https://github.com/say-Hai/MyCOMDemo。
2024-12-27 15:08:33
1172
原创 QT + FFMPEG实现简易播放器
通过vs2022 + QT5.14 + ffmpeg5.0+进行开发视频播放器,采用ffmpeg对视频流进行解封装后转成QImage,再通过paintEvent绘图函数将其绘画到窗口。
2024-12-26 22:01:39
817
原创 FFMPEG结构体分析
1] 结构体分析:https://www.cnblogs.com/linuxAndMcu/p/12041578.html#_label2[2]
2024-12-26 20:35:34
1373
原创 FFmpeg 的常用API
ffmpeg视频编解码流程:https://www.cnblogs.com/fxw1/p/17229792.html常用API:https://www.cnblogs.com/linuxAndMcu/p/12041359.htmlFFmpeg各版本区别:https://juejin.cn/post/7261245655128424509。
2024-12-25 22:04:53
589
原创 音视频入门知识(六):消息获取模式篇
当通知消息来之时,。客户端无需主动请求数据。服务端一直监听某个端口,当客户端有数据要发送时,就推到这个端口上给服务端。
2024-12-25 20:26:52
553
原创 音视频入门知识(五):流媒体篇
在视频或音频,最初。例如H.264、H.265、AAC、MP3等编码格式:每个ES流只包含一种类型的数据,如编码后的视频帧或音频帧。:ES流本身不包含显示或播放的时间信息(这些信息通常在多路复用后的容器中添加)。
2024-12-25 20:26:15
617
原创 音视频入门知识(二)、图像篇
视频基本要素:宽、高、帧率、、码率、分辨率 其中码率的计算:码率(kbps)=文件大小(KB)*8/时间(秒),即码率和视频文件大小成正比YUV和RGB可相互转换。
2024-12-25 17:05:33
977
原创 nginx-rtmp服务器搭建
采用` nginx/1.18.0`和`nginx-rtmp-module`模块源代码搭建`RTMP`流媒体服务器
2024-12-21 14:21:44
1480
原创 C++拷贝构造、拷贝赋值、析构函数
浅拷贝在复制过程中,仅复制对象的内存地址或其基本属性值,而不是其深层关联的数据结构。对于包含指针或动态分配内存的对象,浅拷贝不会分配新的内存,而是直接复制指针地址。C++中默认的拷贝赋值即为浅拷贝,因此必须要有实现深拷贝。
2024-12-20 15:58:22
467
原创 Clion导入第三方库所遇到的问题
原因:所编写的CMakeLists.txt文件错误,连接第三方库时写错了!# 注意下面的区别,不要用错函数。
2024-01-12 23:12:26
1523
原创 计算机网络复习思维导图
计算机网络思维导图思维导图原文件,百度网盘:https://pan.baidu.com/s/1DmVAcG_Ae9RAy21HLmg8Mg 提取码:wts7学习计算机网络网课:高军 湖南科技大学
2020-12-10 16:36:10
647
3
原创 在IDEA中配置并运行Maven项目
Maven工具的作用统一管理项目所依赖的所有jar包并且具有极好的兼容性自动解决jar包的重复和冲突问题Maven的使用方法当程序员想要从Java的第三方库下载导入包时,传统做法是从网上的中心仓库下载jar包并导入到项目环境中。而使用maven工具只要在中心仓库找到所需包的maven代码导入到pom.xml文件即可在IDEA中构建Maven项目新建Maven空白项目查看maven项目中各个包所存储的内容项目文件夹:存放项目代码,如java文件资源文件夹:存放项目所.
2020-11-16 18:51:27
4748
原创 Maven的安装和配置
1.下载Maven,下载地址选择你所需要下载的版本(bin为windows系统,tar为Linux系统)2. 选择Maven的压缩地址3. 配置环境变量新建MAVEN_HOME环境变量名在path中添加maven中bin文件夹的路径(你也可以使用%MAVEN_HOME%\bin)3. 在cmd窗口查看安装是否正确输入:mvn -v查看,maven版本信息...
2020-11-16 17:22:17
355
原创 Java 两种基本列表详解
Java的两种列表List:列表有序的Collection允许重复元素允许嵌套:{1,{1,2},1,2}ArrayList:以数组实现,不支持同步利用索引快速定位访问插入删除慢,因为每次插入/删除将会使后面元素向后/前移动适合变动不大,主要用于查询的数据和数组相比,其容量大小可动态调整LinkedList:以双向链表实现,不支持同步可被当作堆栈、队列、双端队列进行操作顺序访问高效,随机访问差插入和删除高效,因为只需改变元素指针,而无需移动元素适用于经常变化的数据
2020-11-06 21:28:44
1668
原创 String基础用法大总结
String类是Java中最常用的类,下面是String的常用方法的总结。(注:除了以下列出的方法之外,还有许多的重载方法,可以去Java API中查看) 方法名 返回类型 作用 charAt(int index) char返回指定索引的值
2020-11-01 17:01:33
194
原创 可变对象和不可变对象传递参数的区别
基本类型传值当函数参数是基本类型时,是传值的。public static void changeValue(int a) { a = 10; }/*--------------------------------------*/int a = 5; //基本类型changeValue(a);上面代码实参a = 5,将值传给形参a = 5,执行函数后,形参 a = 10,实参的a 不变对象传递指针不可变对象String类型不可变对象只会改变其指针的指向,而不会修改其值
2020-10-25 11:36:34
655
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人