自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Young

可以奋斗的年龄,不要选择安逸

  • 博客(18)
  • 收藏
  • 关注

原创 AVL-二叉搜索树核心思想

AVL-平衡二叉树核心理解

2024-03-28 10:57:06 134

原创 FLV格式详解(ScriptData也是AMF需要额外查格式表)

废话少说,直接看图。

2024-01-06 16:05:25 346

原创 C++虚表和虚函数--一目了然

由此代码小实验可知C++的虚表和虚函数是如何存储的。

2023-01-11 15:01:25 111

原创 对于一个软件新功能加入的思考

4、多线程共享临界资源是互斥的吗?互斥竞争时会不会影响效率从而影响业务?3、某个线程调用会阻塞其他线程调用吗?这个阻塞对业务有影响吗?2、使用第三方库的API调用流程严格按照说明规范了吗?5、对使用的技术都足够了解了吗?1、申请的内存都能正确释放吗?...

2022-08-04 08:40:05 128

原创 记录libwebsocket实现server的一个坑

当你遇到类似这样的打印的时候lws_validity_cb: wsi 0x9f405948: validity too old__lws_close_free_wsi: 0x9f405948: caller: validity timeout然后连接断掉或者异常发不出消息了,恭喜你,入坑了。这是超时了没有得到确认导致的,这会引起重连,如果你设置了重连策略的话。解决这个问题的办法是在你的代码里收到消息回调LWS_CALLBACK_CLIENT_RECEIVE的时候,手动调用lws_validity_confi

2022-07-09 10:13:59 918

原创 二叉树-平衡二叉树(110)

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1: 输入:root = [3,9,20,null,null,15,7]输出:true示例 2: 输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true 提示:树中的节点数在范围 [0, 5000] 内-104 ...

2022-06-17 09:33:48 60

原创 libwebsockets 服务器线程模型理解

1. lws是单线程调度,从外部调用ws写,属于多线程竞争写操作,竞争的是写缓存buffer需要加互斥锁,防止临界资源-缓存buffer被破坏。每次写完缓存buffer,需要设置标志位,标识buffer的内容待发送,所有请求写操作,应该等待,这会影响执行效率。2. 应该增加一个队列,把需要写的消息保存到队列中,然后发送写请求,写端从队列中获取消息实体发送。 *应该是每个client实例拥有一个队列,否则在ws线程中,如果被调度写的client,在队列顺序取的时候不是它的消息,则会错乱。3. 如果是多

2022-05-26 10:56:23 770

原创 rockchip RV1126升级调试记录

RK 分区和启动流程: 分区 loader: MiniLoaderAll.bin, 其实就是uboot中的spl, MiniLoaderAll就是RK自己开发的spl,负责加载uboot和trust Parameter: parameter.txt, 参数文件,描述分区设置和地址 uboot: uboot.img, uboot引导程序 trust: trust.i...

2022-05-11 09:33:01 5139

原创 编译ffmpeg及相关库

第三方组件:libfdk-aac, librtmp, libsrt, libx264, libx265, libmbedtls我是用的机器是centos7, 先声明,此配置没有图形显示相关的东西,也没有ffplay,建议需要的看一下文章尾部,然后根据ffmpeg的帮助文档自行配置。下面根据项目需要,先编译相关的第三方组件。安装curl:sudo yum install curl 或者 sudo apt-get install curl说明:我的安装路径设置成了/home/young/w

2022-04-28 11:43:00 2753

原创 Centos 安装 Docker

CentOS 安装 Docker:需要准备CentOS 7 及以上系统1、清除旧的docker-engine: sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-l...

2021-10-13 17:41:22 81

原创 SRT直播模式关注的几个套接字选项

1. SRTO_TSBPDMODE = true; //使用libsrt的基于时间戳交付控制模式 2. SRTO_RCVLATENCY = 120; //接收延迟,不要设置比这个默认值小的值!! 3. SRTO_PEERLATENCY = 0; //对端延迟,假设对端延迟很小很小,可以直接设置成0 4. SRTO_TLPKTDROP = true; //默认为真,会丢弃没有按时重传的数据包。 ...

2021-09-25 15:20:48 525

原创 关于音视频流传输的一些想法

一、发送频率:核心思想是根据音视频的时间戳进行发送频率控制。 1、在发送线程中,用最新获取到的帧时间戳 减去 上次发送帧的时间戳,得到音视频发送间隔, 2、计算当前系统时间跟上次发送系统时间 间隔是否已经大于等于 音视频发送间隔, 3、如果大于等于,直接发送,如果还没有达到音视频发送间隔,线程做相应时间的休眠后再发送, 4、如果音视频发送时间间隔大于视频帧间间隔(可以根据视频帧率计算),应该认为前端是有丢帧,跳帧,应该直接发送。 5、如果得到的音视频发送间隔是负数,应...

2021-09-25 11:57:43 207

原创 动态库以插件的形式加载

很多开源软件为了实现灵活扩展,模块化管理,通常把某个功能模块制作成一个动态库,再以插件的形式在程序启动的时候加载库中的符号表(功能函数)到程序中使用。区别于传统的做法:编译功能模块成库,编译链接程序的时候链接上功能模块库,程序启动自动加载功能模块库的符号表,若找不到库文件或者没有这个符号表,程序启动失败!而以插件的形式加载,实际上只是将加载功能模块符号表这个步骤放到程序里面自主控制,这样做避免了可能由于某个功能模块出现问题而致使整个程序异常无法启动,无法使用的问题,提高程序的可靠性,可维护性而已。要实现这样

2021-05-07 16:50:10 566

原创 在Linux中获取当前程序运行的绝对路径

readlink() 函数可以获取一个符号链接的路径,而在Linux中的 /proc/self/exe 符号链接为当前运行程序,所以可以利用它获取当前运行程序的绝对路径,代码如下#include <stdio.h>#include <unistd.h>#include <string.h>size_t get_executable_path( ch...

2019-10-21 22:23:33 1116

原创 一次调试Linux线程死锁经历

程序毫无反应了,ps查看仍然在运行,猜测是出现了死锁,使用gdb进行调试正在运行的程序1、ps命令查看进程id2、gdb attach 进程id调试信息及过程如下:(gdb) info threads Id Target Id Frame 41 Thread 0xb629a450 (LWP 346) "sys_main" 0xb6f7a29...

2019-10-21 22:20:23 1063

原创 队列的实现

队列,也称 FIFO(first in first out ),队列在队尾插入数据,在对头删除数据,即这两个操作要在两端分别操作。实现很简单,直接上代码#include &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt;stdlib.h&gt;#include "queue.h"queue* createQueue() //...

2018-05-28 19:51:26 194

原创 关于RTP包的时间戳填充问题

刚接触音视频方面的东西,有些知识一下子理解不过来。有一次不懂RTP的时间戳如何填充,问了几个前辈都不愿意回答我问题,最后没办法,脑子笨就得慢慢领悟。在此记录一下RTP时间戳填充的问题RTP包头的第2个32Bit即为RTP包的时间戳,Time Stamp ,占32位。时间戳反映了RTP分组中的数据的第一个字节的采样时刻。在一次会话开始时的时间戳初值也是随机选择的。即使是没有信号发送时,时间戳的数值也...

2018-05-28 19:45:30 3145

原创 对随机产生的数列进行快速排序

以前在学习快速排序的时候总是理解不够,导致总是没办法记住其使用方法,趁有空重新学习了一下快速排序,作此记录放遍日后复习及改进。代码如下:#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;math.h&gt;#define ERROR -1int createRand(const int start, const...

2018-03-15 18:13:45 1379

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除