- 博客(27)
- 收藏
- 关注
原创 ffplay 实现暂停、seek等的逻辑基础
检测是否有seek事件发生,有-->调用 avformat_seek_file(),跳转成功后清空之前队列中的缓存,更新序列号,使得之前的数据不可用。目的:音视频同步的主要目的是使播放的声音和显示的画面保持一致。在多媒体播放中,视频和音频是分别进行编码和解码的,由于编码和解码的速度不同,以及。继续检测是否是逐帧播放模式 ······停止 播放音频,视频 导致音频视频的缓冲队列,数据堆积,直到队列被填充满将不再进行解封装、解码操作。当当前时刻 大于 lastVp的结束时刻 且 小于vp的结束时刻,播放vp;
2024-08-12 15:20:26
506
原创 高精度乘法改进版
仍使用两层for循环,但是内层循环,只负责保留乘数的结果,外层循环负责对高位乘数的结果左移一位(乘以10).之后统一对结果进行进位处理。的所有元素进行遍历。当内层循环每执行完毕一次,则有。核心功能只有20行左右。完成了一次乘法运算,将。
2024-04-01 11:46:38
308
原创 C++实现中缀表达式转后缀
在英文输入下,键入你的表达式(注:这里只实现了 +-*/ 没有更复杂的幂次等计算)①.将您输入的表达式的数字部分 和 操作符部分 分开,以独占一行的方式打印输出;实现中缀表达式转为后缀,并计算得到计算结果输出显示。②.表达式的后缀输出;
2024-03-10 15:41:21
370
1
原创 C++实现二叉树
接下来,你将看到,输出先序、层序遍历结果等内容,如下:(注:中序后序,操作类似于前序遍历,没有实现)1.2 实现二叉树的访问 --- 先中后序访问、层序访问。1.3 计算树的深度、节点数、复制树。2.1 首先创建出一棵二叉树。1.1 实现二叉树的创建。
2024-03-10 15:20:09
1535
2
原创 C++实现哈夫曼编码、解码
第二部分打印出来的是,测试数据 A B C D E F G 的对应编码,这里可以自行扩充。第一部分打印出来的是 哈夫曼树 的结构。第三部分是用于测试的解码结果。
2024-03-09 17:33:17
836
1
原创 服务端使用多线程处理客户端请求
关注一下这里的创建子线程的for循环,首先判断了一下 arr[i] 是否为-1,如果是才创建线程,否则跳出 for() 循环,重新阻塞等待accept()连接。子线程处理函数中,使用指针 p 接收 arg 参数的目的是获得指向数组 arr 的指针,以便在关闭客户端后重新将相应位置,重新置为 -1.服务端的显示没有变化,说明没有连接成功(我没有对连接不成功的做打印,只对成功的做了打印)仔细观察一下,新连接的客户端,分配到的 通信文件描述符是 7和5 符合我们的设想3。< 2 和 3>再,关一个再连。
2023-12-26 20:57:56
997
1
原创 服务端并发处理客户端请求,并回收子进程
下面就要测试一下关掉一个客户端后,break退出子进程在 waile(1) 的业务逻辑,接着 exit(-1) 后子进程退出。(简单说就是 关闭一个客户端,使得一个子进程退出)注:此处使用了对常见的网络编程函数异常处理后的头文件wrap.c(下载于网络)关闭了两个客户端,杀死了两个子进程,没有出现僵尸进程。也打印出了回收的子进程,是相互印证的。可以看到父进程已经拉起了3个子进程。父进程是否能对子进程进行回收。
2023-12-26 10:56:52
504
1
原创 创建简单的linux服务端
这个案例没有使用自定义的库函数(里面对socket()、bind()、listen()等进行了封装,实现异常处理)。所以这里的异常处理是直接写在了代码里。父进程没有对子进程的退出进行回收,会产生僵尸进程。后面会有一个回收子进程的版本(也没有对读写可能被信号的打断做处理,只增加回收的部分)但是没有对读写操作时可能被信号打断的情况的异常进行处理。
2023-12-26 09:47:19
510
1
原创 anaconda在默认路径下使用环境名创建环境
所创建的环境 在 D:\my_anaconda\envs 下(这是我计算机上的 anaconda 保存环境的路径)conda remove -n 名字 --all。conda remove -p 路径 --all。3.1 activate 路径。3.2 activate 名字。
2023-09-12 19:44:18
135
原创 记录:学习重载赋值运算符时,未以引用的方式传参导致的内存重复释放问题
void operator=(Myfz right) 未以引用的方式传入参数导致,fun1 下的 height 指针指向的内存被重复释放。当void operator=(Myfz right) 运行结束时,right被释放,执行析构。符合单步调试的结果。注意类 Myfz 下的 void operator=(Myfz right) 这里传入的参数未使用引用的方式,所以应是void operator=(Myfz right) 函数传入的 Myfz类的对象right的析构。时,对象right为fun1的复制,
2023-05-31 11:13:03
99
1
原创 C++ 类“xxx”不存在默认构造函数
所以可以手动为Phone类添加上无参默认构造函数。即使将 Phone() 实现为空,也能避免编译错误,因为它告诉编译器,Phone 类有一个默认构造函数可以用来初始化 m_Phone 成员变量。c++中,在类中定义成员对象时,该成员类对象需要有默认构造函数,以告诉编译器如何将其初始化。由于这里的Sheep类已经构造了有参构造函数,编译器将不会自动构建无参默认函数。
2023-05-20 10:25:34
3177
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人