自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 详解WebRTC rtc::Thread实现

rtc::Thread类不仅仅实现了线程这个执行器(比如posix底层调用pthread_thread相关接口创建线程,管理线程等),还包括消息队列(message_queue)的实现,rtc::Thread启动后就作为一个永不停止的event loop,没有任务待执行就阻塞等待,添加任务后就唤醒event loop,去执行任务,周而复始,直到调用stop退出event loop,退出线程(线程join)。在WebRTC内部,可以将消息队列等同于event loop,消息队列为空,就进行阻塞等待。

2024-02-01 17:24:30 795

原创 [数据结构+算法] 给一棵树和一个sum,判断是否存在从root到叶子结点的path之和等于sum?

【代码】[数据结构+算法] 给一棵树和一个sum,判断是否存在从root到叶子结点的path之和等于sum?

2024-01-29 14:40:48 587

原创 c++编译报错解决

gcc 没有实现std::powf, 用std::pow替代。g++ 7.5.0支持。

2024-01-21 13:34:53 572 1

原创 拉取docker私有仓库镜像报错http: server gave HTTP response to HTTPs client解决办法

重启Docker服务:sudo service docker restart。

2024-01-21 13:24:23 1127

原创 Linux系统OpenGL安装

opengl安装指令介绍。

2024-01-21 13:18:54 1959

原创 Linux平台下基于X11实现应用窗口高亮框功能

Linux平台下基于X11实现应用窗口高亮框功能

2024-01-20 15:53:11 569

原创 Linux平台下基于OpenGL实现YUV视频渲染

Linux平台下基于OpenGL实现YUV视频渲染

2024-01-20 15:50:11 719

原创 基于asio的httpclient实现

Asio是C++的一个高性能网络编程库,提供了跨平台的网络和底层I/O编程接口,包括tcp,udp等sockets通信,以及异步编程模型。它的设计目标是为C++开发者提供一种简单、直接的方式来处理网络通信和并行I/O操作,同时保持高效和灵活性。

2024-01-20 15:36:30 943

原创 深入理解和应用C++ std::shared_ptr别名构造函数

在现代C++中,智能指针是一个极为重要的工具,尤其std::shared_ptr以其自动内存管理、引用计数和多线程安全性等特性深受开发者喜爱。其中一个不太常用但功能强大的构造方式是`别名构造函数`,它允许我们创建一个共享相同底层对象但是指向其内部不同数据成员或子对象的新shared_ptr。本文将探讨这个特性,并通过实例说明其在复杂类型管理和资源控制中的应用场景。

2024-01-15 22:44:12 667

原创 单例模式实现及优化(C++11)

保证一个类仅有一个实例,并提供一个访问它的全局访问点。----引自《设计模式 可复用面向对象软件的基础》

2024-01-15 15:41:46 1032

原创 图解设计模式-中介者模式(Mediator)

使用一个(mediator)封装多个具有依赖/关联关系的对象(college,)之间的交互,使各对象之间不再互相引用,降低对象之间的强耦合程度,对象之间的一切交互均通过中介者进行转发,变多对多关系为一对多。

2024-01-04 16:23:49 812

原创 生产者消费者模型(C++11示例)

【代码】生产者消费者模型(C++11示例)

2024-01-04 11:37:28 512

原创 Protobuf 编码规则及c++使用详解

包含了常用的整形,字符串,枚举,结构体,repeated(数组)类型。

2023-12-22 16:02:38 1138

原创 Linux 音视频SDK开发实践

介绍了Linux音视频开发中的一些最优实践,包括兼容性处理,音视频和屏幕共享开发技术栈。

2023-12-19 16:00:15 1451

原创 Jenkins Docker Cloud在Linux应用开发CI中的实践

通过代码提交自动触发CI自动构建、编译、打包是任何软件开发组织必不可少的基建,可以最大程度保证产物的一致性,方便跨组跨部门协作,代码MR等。Docker在流水线中越来越重要,已经是最关键的组成部件之一,由于容器化具有的简单性,灵活性,隔离性和部署方便的特性,使得我们可以按需定制可重复的构建环境,本文就如何使用Docker容器作为Jenkins编译节点在Linux应用开发 CI中进行了实践。已部署好Jenkins服务,具备CI的基础设施。有别于windows,macos,ios可能较多会采用虚拟机或物理机方式

2023-12-19 13:01:55 1538

原创 linux应用卡死(anr)并行堆栈dump方法

linux应用程序未响应后使用gdb保存并行堆栈排查卡死原因。

2023-12-18 17:02:30 464

原创 ubuntu docker镜像制作及常用命令

ubuntu docker镜像制作及常用命令

2023-12-18 14:02:19 704

原创 C++包管理利器CPM

*CPM.cmake是一个与CMake配合使用的C++包管理工具,更准确说是依赖管理,它主要用于简化C++项目中对第三方依赖引入的复杂性。**通过使用CPM,开发者可以更轻松地将所需的第三方库集成到他们的项目中,而无需手动下载、配置和管理这些库。CPM提供了一个简洁的语法,使开发者能够以声明式的方式指定项目所需的依赖项,并自动处理其下载、构建和安装过程。这样,开发者可以更专注于项目本身的开发,而不必花费过多时间和精力来处理依赖项的繁琐细节。

2023-12-05 17:14:06 1442

原创 Linux 多架构支持介绍和实践

在Linux 上开启多架构支持(multi-arch support),指的是可以让您在同一系统上安装多个不同架构的软件包,这在交叉编译的场景显得格外重要。以下实际操作均在Ubuntu 18.04 + x86_64 环境下演示。

2023-10-27 15:26:15 433

原创 QT应用启动失败排查方法

打开QT Plugin加载调试开关, 会得到QT应用启动过程中更详细的错误信息。

2023-09-12 13:53:47 1255

原创 Conan安装第三方依赖库时SSL验证失败解决办法

Conan SSL证书验证失败解决方案

2023-09-12 10:49:14 788

原创 Linux系统下Web文件系统搭建

在/var/www/html目录创建软链接文件files指向自定义文件目录,如下total 12游览器访问http://ip地址/files即可访问自定义目录, 如下total 4drwxrwxr-x 3 netease netease 4096 Jul 14 10:34 反垃圾sdk-api-4.4.10.4。

2023-08-31 16:11:50 501 2

原创 Linux系统下获取系统、BIOS、进程、网络等相关信息的方法和工具

Linux系统下可以使用API和内核通信或者直接读取文件系统来获取所需信息。此外,还有一些命令行工具可供使用,但我们建议优先使用API和文件系统。通过获取设备的一些静态信息,例如系统和BIOS信息,可以帮助我们挖掘Top机型。通过进程和网络等动态信息,可以指导我们进行应用性能测试和优化实践。

2023-06-20 14:21:10 2032

原创 Linux conan+cmake管理的项目如何进行多架构编译(x86_64及交叉编译arm64)

Conan 和 CMake 是两个非常流行的跨平台开发工具,它们可以让开发者轻松管理依赖和构建项目,支持多种操作系统和架构。下面是一些关于 conan 和 cmake 的介绍:ConanConan 是一个用于管理 C++ 依赖项的开源工具。它可以从公共或私有存储库中自动下载和安装依赖项。Conan 可以轻松地管理不同版本的依赖项,并支持多个操作系统和编译器。使用 Conan,开发者可以更加轻松地构建跨平台应用程序。CMake。

2023-06-16 14:39:50 2511

原创 Linux x86_64平台同时编译x86_64和arm64两个架构的Qt应用程序出现XRes库无法找到

在ubuntu x86_64平台上需要同时编译x86_64和arm64两个架构的Qt应用程序。在实践过程中,发现XRes库只能安装在其中一个平台。

2023-06-16 11:53:00 1595

原创 基于opencv实现两路yuv数据拼接合成一张大图

实时音视频通话(RTC)越来越注重安全审核,特别是在1v1娱乐社交场景中,对于视频反垃圾的需求也越来越大。随之而来的是客户对审核成本降低的诉求日益强烈。针对1v1场景,将两路视频拼接成一张图片进行审核相比于分别审核两路视频可以降低约50%的成本。然而,这种方法存在缺点:某些检测细节准确度会稍微降低一些,因为同一个特征在合成图里尺寸会变小。

2023-05-31 15:50:31 965

原创 linux系统下如何获取进程和系统的cpu占用率

在开发SDK的过程中,需要收集进程和系统相关的负载信息。其中,CPU占用率是一个非常关键的指标。在早期阶段,我们使用管道方式获取top命令返回结果。但后来发现在线上存在一些异常情况,即上报的CPU占用率为0。考虑到top命令会带来较大的开销,并且管道使用不当容易出现问题,最终我们采用了proc文件系统方式获取CPU占用率。

2023-05-19 20:03:17 1774

原创 C++11面向切面编程(AOP)入门指南

AOP的核心概念是切面(Aspect),它表示在程序中跨越多个功能模块的关注点。例如,日志记录、事务管理和权限控制等功能都可以视为切面。通过将这些关注点从业务逻辑中分离出来,实现对程序行为的模块化,从而提高代码的可读性和可维护性。关键词:关注点分离,核心逻辑和非核心逻辑分离,核心关注点和切面关注点。

2023-04-05 17:59:00 1983

原创 基于netlink的Linux Network Monitor实现

来源于产品开发需求,需要在linux系统下实现网络状类型查询及网络类型变更通知,比如从Ethernet变为Wifi,从Wifi变为Ethernet等。

2023-03-11 20:00:02 279

原创 解决linux系统下java调用带breakpad异常捕获的c++ sdk必现crash问题

java通过jni去集成c++sdk时线上发现会有偶现崩溃,为了方便定位native(c++)的崩溃,sdk采用了google breakpad崩溃转储方案(Google跨平台的崩溃转储和分析框架和工具集合,breakpad支持windows、linux、macos、android、ios等。目前已有Google Chrome, Firefox, Google Picasa, Camino, Google Earth等项目使用。),更新sdk后,发现java启动后必现崩溃。

2023-01-06 17:06:07 294

原创 解决MobaXterm通过SSH启动远程Qt图形应用失败

解决QT应用启动问题:qt.qpa.xcb: could not connect to displayqt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.This application failed to start because no Qt platform plugin could be initialized.

2022-08-26 14:44:57 3337 3

原创 Linux调试之core dump - (中篇)

systemd-coredump 可收集并显示内核核心转储,用于分析应用程序崩溃问题, 当进程发生crash时,能自动收集并保存相应的core dump, 同时可以用客户端工具coredumpctl来进行core dump管理,查看和分析。

2022-08-22 19:29:26 1883

原创 linux程序非void函数未进行return造成的问题及思考

开发音视频共享屏幕功能过程中,调用开启取屏程序理解崩溃(SIGSEGV),最终发现问题是由一个缺失返回值的函数造成的。

2022-07-19 11:06:14 1674

原创 ubuntu18.04 PulseAudio蓝牙耳机开启mic的解决办法

ubuntu18.04使用pulseaudio无法使能蓝牙耳机的mic功能,本文提供解决办法,通过升级pulseaudio到pipewire解决。

2022-07-10 18:03:28 3021 2

原创 Linux调试之core dump - (上篇)

coredump叫做核心转储,也就是当Linux应用发生崩溃时,操作系统会自动生成coredump文件,供开发者调试使用,比如发生了段错误(segfault)。

2022-07-07 15:09:39 362

原创 ffmpge转码常用指令介绍(不断更新...)

帧率、分辨率、码率、文件大小转换ffmpeg -i input.mp4 -r 30 -b:a 100k -b:v 200k -s 1920x1080 -fs 4000K output.mp4-i 输入视频文件-r 输出帧率-b:a 输出音频码率-b:v 输出视频码率-s 输入视频分辨率-fs 输出文件大小output.mp4 输出视频文件提取视频文件的pcm、yuv、h264、aac// 提取pcmffmpeg -i input.mp4 -ar 16000 -ac 1 -f

2022-05-09 16:20:23 855 1

原创 [编译问题解决]error: ‘atomic_int32_t’ in namespace ‘std’ does not name a type

[编译问题解决]errorr: ‘atomic_int32_t’ in namespace ‘std’ does not name a typehttps://en.cppreference.com/w/cpp/atomic/atomic c++标准没有规定atomic_int32_t必须实现(只是optional),如下:解决方案:namespace std{ typedef atomic<std::int32_t> atomic_int32_t;}在[GCC5.4.0]c

2021-08-13 16:00:16 3219

原创 Ubuntu 18.04 (gcc 7.5.0) 编译 gcc5.4.0工具问题解决方案

Ubuntu 18.04 (gcc 7.5.0) 编译 gcc5.4.0工具问题解决方案Bug 81066 - sanitizer_stoptheworld_linux_libcdep.cc:276:22: error: aggregate ‘sigaltstack handler_stack’ has incomplete type and cannot be definedgcc5.4编译源码感谢以上作者的分享!...

2021-08-13 14:41:40 328

原创 NodeJS开发web应用程序之http,express,socket.io介绍

文章目录NodeJS开发web应用程序之http,express,socket.io介绍1. http2. express3. socket.ioNodeJS开发web应用程序之http,express,socket.io介绍1. httpNode中提供的http模块,其中封装了http服务器和http客户端,http.Server和http.request。Q:如何用http创建http服务器?var server = require('http').createServer(handler)

2021-07-25 23:31:54 476 1

原创 嵌入式开发之交叉编译工具链制作

5. ct-ng build执行命令ct-ng build, 其它会下载一些源码,比如linux内核,gnu工具等,如果在公司内网可能无法下成功(速度过慢或者网站被过滤了),这个时候就需要发挥自己网络上寻找资源的能力了,最终会用到的源码资源如下:给出笔者花的时间最多的几个资源:duma_2_5_15.tar.gzhttps://github.com/johnsonjh/duma/releases/tag/VERSION_2_5_15...

2021-07-01 22:41:31 1589 1

1920x1080.yuv-1280x720.yuv

yuv输入文件,用于测试用

2023-05-31

yuv输入文件,用于测试用

yuv输入文件,用于测试用

2023-05-31

yuv输入文件,用于测试用

yuv输入文件,用于测试用

2023-05-31

空空如也

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

TA关注的人

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