自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

琅嬛福地

寒江孤影,江湖故人,相逢何必曾相识

  • 博客(924)
  • 资源 (20)
  • 收藏
  • 关注

原创 C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享

本套课程由浅入深,详细的介绍了C++入门、Qt入门进阶到企业级项目实战、C++ Qt开源项目学习。相信通过本套教程的3门课程的学习,大家可以很好的掌握C++ Qt开发,课程提供答疑服务。

2023-09-21 23:00:33 5676

原创 webrtc中rtp协议的实现

本文介绍webrtc中rtp协议的实现

2025-12-22 07:30:00 109

原创 rtp、rtcp、rtsp、rtmp等协议介绍

本文介绍rtp、rtcp、rtsp、rtmp等协议介绍

2025-12-22 07:00:00 8

原创 WebRTC多人通信深度解析:从核心原理到架构选型

WebRTC(Web Real-Time Communication)作为一项革命性的实时通信技术,其核心在于实现浏览器或移动应用之间无需插件的点对点(Peer-to-Peer, P2P)音视频和数据通信。然而,在多人通信场景下,问题变得复杂。一个稳定、高效的WebRTC多人通信系统,其背后是一套精密的协议栈和架构设计。本章节将深入剖析WebRTC多人通信的三大核心支柱:信令交互、ICE协商以及媒体流传输与安全保障。信令交互是通信双方建立连接的“语言”,负责交换必要的元数据;

2025-12-21 23:19:35 195

原创 webrtc如何实现音视频同步

WebRTC 的音视频同步是:用 RTP timestamp 表示媒体时间,用 RTCP SR 把它映射到 NTP 时间,客户端以音频为主时钟动态调整视频播放。好,这一轮我按你要的三点一起讲,而且是真·源码级,不是概念图那种。① WebRTC 源码中 AV Sync 的关键类 & 函数② 用“文字时间轴图”画清楚同步过程③ SFU / MCU 架构下,同步责任的本质差异。

2025-12-21 22:44:18 63

原创 C++ Qt程序限制多开

如果你希望修改提示文字或唯一 key,只需要改 QSharedMemory 里的字符串和 QMessageBox 的文案即可。第二次运行时,这块共享内存已经被第一次运行的程序创建了,再调用 create 会失败,返回 false。表示已经有实例在运行,直接退出,不再执行后面的 MainWindow w;创建一段带有全局唯一 key 的共享内存对象,所有进程都能看到这个 key。第一次运行时,这块共享内存还不存在,创建成功,返回 true,程序正常继续。

2025-11-16 22:23:15 209

原创 C++20协程深度解析与实践指南

C++20 引⼊的协程(Coroutines)是⼀种特殊的函数,它能够在执⾏过程中被挂起(suspend),并在未来的某个时间点从挂起的位置恢复(resume)执⾏ 。这种机制使得编写异步代码变得如同编写同步代码⼀样直观,极⼤地简化了传统异步编程中复杂的回调函数(callback hell)和状态机逻辑 。

2025-11-13 08:22:40 114

原创 python *和**做参数的用法

函数定义中使用 *total = 0for num in args: # args是一个元组# 调用:直接传入多个位置参数print(sum_numbers(1, 2, 3)) # 输出: 6 (args = (1, 2, 3))# 函数调用中使用 * 展开numbers = [4, 5, 6] # 列表print(sum_numbers(*numbers)) # 输出: 15 (相当于 sum_numbers(4, 5, 6))# 函数定义中使用 **

2025-11-02 17:35:03 842

原创 python with使用介绍

with。

2025-11-02 17:28:09 828

原创 PySide6集成yolo v8实现图片人物检测、视频人物检测以及摄像头人物检测

本篇博客介绍Python YOLO目标检测, 并在PySide6应用里集成YOLO v8实现图片人物检测、视频人物检测以及摄像头人物检测。

2025-11-01 20:18:05 1710 1

原创 QtQuick3D入门(6):3D粒子系统

场景:HDR 天空盒 + 一个高反射球体 + 一个点光源。粒子表现:从上方特定区域发射大量“雪花”(当前使用的贴图可能是占位),粒子向下移动并在生命周期结束时消失,系统预热 15 秒以便初始即显示完整雪景。

2025-10-28 21:23:48 102

原创 QtQuick3D入门(5):实例化渲染

实例化渲染是一种优化技术,它允许你只用一个绘制命令(Draw Call)就渲染出成千上万个外观相同(或相似)的物体。它的核心思想是:提供一个“蓝图”:告诉GPU,“我要画一个立方体(或一棵树的模型)”。提供一个“数据列表”:你再给GPU一个列表,这个列表包含了每一个实例(instance)的独特信息,比如它的位置、旋转、缩放、颜色等。GPU完成工作:GPU接收到这个“蓝图”和“数据列表”后,会自己高效地循环这个列表,将蓝图模型在指定的位置、以指定的姿态和颜色等绘制出来。

2025-10-28 21:11:33 104

原创 QtQuick3D入门(4):天空盒

提供实时生成的立方体贴图(例如:实时反射 Probe)。

2025-10-27 22:40:37 416

原创 QtQuick3D入门(2):材质 material

QtQuick3D的材质大部分也是参照OpenGL的实现,只是在OpenGL里使用起来刚方便。在 OpenGL 的 3D 开发中,材质(Material)用于描述物体与光线的交互方式,是光照计算中非常关键的一部分。材质决定了物体的视觉效果——比如是否看起来是金属、塑料、玻璃或皮肤。在现代 OpenGL (尤其是基于着色器的管线,例如 OpenGL 3.3+)中,材质通常通过 uniform 或 纹理贴图 的方式传递给着色器。

2025-10-27 22:07:12 123

原创 Python偏函数partial的用法

Python偏函数partial用法详解 摘要:Python的functools.partial用于创建部分参数绑定的函数版本,简化函数调用。文章介绍了7个核心用法:1)基本参数绑定规则;2)与map/sorted等标准库函数配合;3)回调函数传额外参数;4)创建参数化装饰器;5)与lambda的对比;6)调试属性;7)类方法中的partialmethod。partial能固定部分参数,返回可调用对象,适用于柯里化、回调传参等场景,比lambda更具可读性和可序列化优势,是Python函数式编程的重要工具。

2025-10-23 22:10:13 579

原创 python asyncio的各种用法与代码示例

本文是一份Python asyncio实战手册,涵盖从基础到进阶的核心概念和代码示例。主要内容包括:async/await语法基础、并发执行(create_task/gather/as_completed)、超时控制与取消(wait_for/timeout)、同步原语(Semaphore/Lock/Event)、生产者-消费者模式(Queue)以及Python 3.11+的TaskGroup特性。所有示例仅依赖标准库,适配Python 3.10+,并特别标注了3.11+专属功能。

2025-10-23 21:59:27 673

原创 C++ std::unordered_map使用结构体为key与自定义哈希函数

在使用std::unordered_map时常见的是用基本数据类型作为key, 例如int、string等等,如果用到自定义类型,例如结构体或者类,那么就要需要额外提供第 3 个参数"哈希函数",有时候还要提供第 4 个参数"相等比较器"。所以 unordered_map 一般有 最多五个模板参数。

2025-09-20 15:58:15 295

原创 C++ std::hash的用法

如果你有一个自定义结构体,要想放到或里,必须提供std::hash。struct是一个模板类,实例化后就是哈希函数对象。常用于等哈希容器。标准库已经为基本类型和常见类型实现了std::hash。对于自定义类型,要么写单独的哈希器结构体,要么特化std::hash。

2025-09-20 15:46:31 137

原创 qml实现多页面切换显示的导航栏

QML中实现标签页功能的三种方式:1) 已废弃的TabView;2) 推荐使用TabBar+StackLayout组合,通过TabButton切换不同页面;3) TabBar+SwipeView组合,支持滑动切换。第三种方式更灵活,可自定义标签栏位置和样式,符合Qt Quick Controls 2的设计理念。所有方案都通过currentIndex实现页面联动,开发者可根据需求选择最合适的实现方式。

2025-09-19 21:14:38 316

原创 解决QtCreator Qt5.15.2编译时Qt\5.15.2\msvc2019\include\QtGui\QGuiApplication‘ does not exist.

在Windows上使用Qt5.15.2 qmake创建项目时,可能会出现如下报错。取消勾选“使用jom代替nmake”,然后重新编译运行项目。菜单: 编辑 — prefenerces — 构建和运行。

2025-09-19 21:04:21 317

原创 ubuntu git push每次都要输入密码怎么解决只输入一次密码

在 Ubuntu 下使用 Git 时,如果每次 push 都需要重复输入密码,可以通过配置 Git 凭证存储来解决。以下是几种常用方法:🔑 方法一:使用 Git 凭证缓存(推荐)

2025-09-13 23:37:22 1214

原创 Dijkstra算法介绍以及C++实现

Dijkstra(迪杰斯特拉)算法是一种**单源最短路径算法**,用于在带非负权重的图中,计算某个起点到其它所有顶点的最短距离。它由荷兰计算机科学家 Edsger W. Dijkstra 在 1956 年提出。

2025-08-12 15:26:16 865

原创 如何防止sqlite会出现数据库文件损坏的问题

SQLite数据库可能因断电、硬件故障或文件系统错误而损坏。预防措施包括使用事务、开启WAL模式、配置同步模式以及定期备份。若发生损坏,可使用PRAGMA integrity_check检测,并通过.dump或.recover命令尝试修复数据。SQLite内置机制能有效降低损坏风险,但备份仍是关键保障。

2025-08-06 10:56:08 396

原创 C++ Qt6 CMake qml文件启动方式说明

在Qt6之后,Qt程序默认使用CMake进行构建,当然也可以使用qmake, 本篇博客介绍Qt6.8之前和Qt6.8版本中QtQuick程序的启动方式。在QtQuick程序main.cpp里qml的文件启动分为两种:(1)直接加载qml文件,(2)加载qml模块,下面分别介绍这两种启动方式。

2025-07-25 21:58:37 331

原创 从零掌握 PySide6 QtQuick 开发,打造高质量桌面应用!

PySide6 QtQuick零基础入门视频教程与项目实战

2025-07-10 21:12:40 1431 5

原创 Linux epoll简介与C++TCP服务器代码示例

epollselectpoll每次调用都把全部文件描述符从用户态拷贝到内核态,随连接数增长而线性变慢;epoll采用事件驱动就绪队列的方式,内核只把“已就绪”的描述符返回给用户态,O(1) 规模扩展;支持边沿触发 Edge-Triggered (ET)与水平触发 Level-Triggered (LT)两种模型,便于构建高性能网络服务。

2025-07-10 14:35:14 269

原创 linux C++代码调试技巧

选择合适的调试方法取决于具体的问题类型和复杂程度。对于简单问题,打印调试可能就足够了;对于复杂的内存问题,可能需要使用Valgrind或AddressSanitizer。

2025-07-08 16:02:39 596

原创 tcp长连接与短连接

TCP连接本身是一个传输层协议,它既可以实现长连接,也可以实现短连接。这取决于应用层的使用方式。

2025-07-07 17:26:35 667

原创 C++ tcp客户端处理重连问题

TCP客户端确实可能因为各种原因与服务端断开连接。

2025-07-07 17:24:11 400

原创 正确解决! [remote rejected] head -> refs/for/master (change xxxx closed) error: failed to push

最近在往Gerrit提交代码时出现了!弹出窗口后,删掉别人不需要的提交,或者把不需要的提交的前面的pick改成d, 然后wq保存,再push就可以了。我尝试了上面的方式,还是报错了,无法push.2.把Change-Id 删除。3.再次提交问题解决。

2025-07-02 16:51:13 419

原创 C++实现状态机

状态机,全称为有限状态机(Finite State Machine, FSM),是一种用来表示有限个状态以及在这些状态之间如何转移和响应的数学计算模型。[1][2]简单来说,它是一个抽象机器,在任何给定时间点,它都只能处于一个确定的状态。[1][3]当某个事件(输入)发生时,它会从当前状态转换到另一个状态,这个过程称为“转换”(Transition)。[1]可以将状态机看作是一种描述系统行为的强大工具,尤其适用于那些行为模式依赖于其内部历史状态的系统。[4]

2025-07-02 14:07:07 262

原创 Numpy使用笔记

NumPy (Numerical Python 的缩写) 是 Python 中一个非常重要的库,它提供了强大的多维数组对象(ndarray)以及用于处理这些数组的各种工具。在进行科学计算、数据分析以及机器学习等任务时,NumPy 几乎是不可或缺的基础工具。TensorFlow 和其他许多机器学习库在底层都大量使用了 NumPy 的数组操作。

2025-06-23 09:00:49 570

原创 linux VFS简介

Linux VFS 是内核文件子系统的基石。它通过定义一组精妙的数据结构(inodedentryfile)和操作接口,在应用程序的通用文件操作请求和底层千差万别的具体文件系统实现之间架起了一座高效的桥梁。它使得 Linux 能够同时支持海量不同类型的文件系统,并为用户和应用开发者提供了极其简洁、一致的文件访问体验。理解 VFS 是深入理解 Linux 文件管理和存储机制的关键。

2025-06-22 23:37:27 696

原创 qml显示svg矢量图形

SVG 是一种基于 XML (可扩展标记语言) 的、用于描述二维矢量图形的开放标准。简单来说,它不是像 JPEG、PNG 那样用像素点阵来记录图像(位图/栅格图),而是用一套数学公式和指令来描述图形的形状、线条、曲线、颜色和文本。你可以把它想象成一份“绘图说明书”,告诉浏览器或渲染引擎如何一步步地画出这个图形。例如,一个红色的圆形,PNG 文件会记录每个像素点的颜色值,而 SVG 文件则会记录类似这样的信息:“在坐标 (50, 50) 处,画一个半径为 40 的圆,并用红色填充它”。

2025-06-14 09:06:01 411

原创 C++ TCP传输心跳信息

在C++ TCP程序中实现心跳机制是保持连接活跃、检测连接状态的重要手段。

2025-06-03 16:41:41 456

原创 C++ Protocol Buffers使用介绍

proto文件是 Protobuf 的核心,它定义了数据结构(称为 “message”)以及服务接口(可选,用于 gRPC)。消息 (Message):类似于 C++ 中的类或结构体,用于组织数据。每个消息包含一系列带类型的字段。字段 (Field):消息中的数据单元,每个字段都有一个名称、一个类型和一个唯一的编号(tag)。类型:可以是基本数据类型(如int32stringboolbytes),也可以是其他消息类型(嵌套消息),还可以是枚举类型 (enum编号 (Tag)

2025-06-03 08:48:22 214

原创 C++ TCP程序增加TLS加密认证

TCP程序添加TLS主要是为了解决TCP协议本身的安全缺陷。:TCP传输的数据完全暴露在网络中,任何能够监听网络流量的人都可以直接读取传输内容。这对于敏感信息(如密码、个人资料、商业机密)来说是极其危险的。:恶意攻击者可以在传输过程中修改数据包内容,而接收方无法检测到这种篡改。这可能导致数据完整性被破坏,影响应用程序的正常运行。:TCP连接无法验证通信双方的真实身份,攻击者可以轻易伪装成合法的服务器或客户端,进行中间人攻击。:攻击者可以捕获并重新发送之前的数据包,可能导致重复操作或其他安全问题。

2025-05-30 18:30:39 554

原创 贪心算法原理以及C++实现

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。它不考虑历史的选择,也不试图回溯或修正之前的选择。“目光短浅”:只考虑局部最优解,希望这些局部最优解能最终组合成一个全局最优解。特点:无后效性(No Aftermath):当前的选择不会对后续子问题的求解产生影响。局部最优选择(Locally Optimal Choice):每一步都选择当前看来最好的方案。不可撤销(Irreversible):一旦做出选择,就不能改变。

2025-05-29 10:20:11 231

原创 C++快速排序原理解析

快速排序是一种分治法(Divide and Conquer)思想的排序算法,其主要思想是:(1)选取一个基准元素(pivot),通常可以选择数组的第一个、最后一个、中间一个或随机一个元素。(2)分区(partition):将数组分成两部分,左边部分的元素都小于基准元素,右边部分的元素都大于基准元素。(3)递归排序:对左右两个子数组分别递归地进行快速排序。

2025-05-29 10:04:57 82

原创 C++ explicit关键字有什么作用

C++ 中的explicit关键字主要用于。

2025-05-28 17:18:25 271

C++ QMainWindow无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小

C++ QMainWindow无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小,适用于Win11、Win10, 自带窗口阴影圆角。

2024-04-23

C++ glog demo

C++ glog demo, 运行环境vs2019、VS2022,x86, 如果需要x64编译,需要自己下载编译glog x64的sdk

2024-04-23

Qt蓝牙串口源码支持十六进制发送、字符发送、定时发送

1、可以使用vs2019/vs2017 Qt进行编译 2、源码说明链接:https://mingshiqiang.blog.youkuaiyun.com/article/details/80733737

2022-02-22

Qt子线程更新数据发到主线程显示.rar

Qt的子线程无法直接更新主UI,需要发送信号到主线程进行更新,我用的QTableWidget展示数据。

2019-08-18

C# Winform数值实时曲线(完整示例)

C#实现显示实时数据,并形成曲线,保存数据,完整的项目代码

2017-07-01

ffmpeg3.2.4_Win32开发库文件

ffmpeg3.2.4_Win32开发库文件,包含头文件,静态库lib, 动态库dll.

2018-06-03

华为C++/C/java代码规范(完整版)

最新的华为代码规范,适用于C++/C/java,高清带目录,格式标准的代码给自己和维护者都是一种享受,建议程序员多看看。

2018-03-14

支持向量机通俗导论(理解SVM的三层境界)PDF

这应该是全网最全最清晰的SVM学习的资料了,我学了10天,终于了解了,大家可以学学看。PDF文档学会后,可以结合OpenCV的源码看看,相信你们一定有大的收获。

2018-04-13

jsoncpp_sdk_x64.rar

vs2017编译的jsoncpp sdk, 包含Debug和Release版本dll, lib , include,可以和其它sdk一样直接包含到项目中使用,可以去我的博客C++专栏找使用方法。

2020-04-06

Halcon12与MFC数字识别详细教程

基于Halcon12的数字识别,识别精确,关于代码的解释,请关注的我的博客,在博客里我做了详细的解释。

2018-07-09

Qt进度条QProgressBar的使用(详细代码)

详细的工程代码与注释,讲解Qt进度条QProgressBar的使用方法,完整的代码。

2018-05-03

C# TCP网络通信示例:多人聊天发文件

该资源包含客户端,服务器, 用户注册到数据库(可自行裁剪该功能),通过TCP 实现聊天,发文件,可以多人同时聊天。代码有完整的注释,是完整的项目。

2018-04-02

很全的 Qt qss

这是一个Qt第三方样式表,下载后,可以直接加到项目中使用。不知道怎么用的,可以关注我的Qt专栏。使用链接:https://mingshiqiang.blog.youkuaiyun.com/article/details/108860180

2020-09-29

c++ PImpl实现机制

**PIMPL** ,即Private Implementation,一般称之为类的私有化实现,PImpl主要有两个作用; (1)它让声明和实现进行解耦,在项目开发时,如果很多文件引用了该头文件,如果头文件改变了一些实现,那么在编译时,所有引用的文件也得重新编译一次,增加了c++程序的编译时间, 如果把实现用一个指针进行声明,改变实现的代码,只会关联一次,降低了耦合度,可以减少编译时间。 (2)Pimpl,也可以称之为pointer to implementation, 指向实现的指针,可以用来对“类的接口与实现”进行解耦,比如在sdk开发时,可以用这个技巧来避免在头文件中暴露私有细节,使sdk接口与实现保持完全分离。

2021-09-15

Win10 Git Bash闪退的解决方案文件

当你的Win10系统出现Git Bash闪退时,需要该文件进行开启相关服务,可以参考我的博客进行解决。

2018-11-07

C++/OpenCV2.4.9 数字精确识别源码

利用OpenCV的图像处理技术,对图像进行灰度处理,二值分析,降噪,滤波等,识别照片中的数字,完美精确, C++ VS2015代码,有详细的代码注释,完整源码。

2017-11-02

MusicPlayer.rar

该音乐播放器使用Qt开发,代码用QtCreator编写,下载即可使用,主要用QMediaPlayer的一些功能,可以看我的博客讲解。

2019-11-17

中国象棋源码(C++/MFC)

用MFC写的中国象棋游戏,VS2015可以直接编译,有多重AI算法,有兴趣可以研究,全网最好的象棋代码。又不懂的可以看看我的博客,有讲解。

2018-12-24

ffplay源码架构图.vsdx

我用visio2016画的,把ffplay源码中的各个模块都展现出来了,有兴趣的可以去看看我的博客。

2019-12-08

lua-5.3.4源码

lua5.3.4源码,导入VS2015可以直接编译,想学习分析Lua源码的可以下载,研究。

2019-01-10

FileDownlod.rar

Qt实现的网络文件下载,用QtCreator可以直接打开编译,运行,我的博客有讲解,可以去看看。

2019-08-05

空空如也

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

TA关注的人

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