自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

琅嬛福地

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

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

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

介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。

2023-09-21 23:00:33 4950

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

从零配置开发环境:Miniconda 安装、PySide6 配置、PyCharm & VS Code 开发调试、macOS 与 Win11 跨平台部署,让你轻松开始 QtQuick 编程之旅!回顾全程知识点,规划你的 QtQuick 技术进阶路线,让你少走弯路,技能持续成长!

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

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

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

2025-07-10 14:35:14 124

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

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

2025-07-08 16:02:39 339

原创 tcp长连接与短连接

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

2025-07-07 17:26:35 387

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

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

2025-07-07 17:24:11 193

原创 正确解决! [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 143

原创 C++实现状态机

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

2025-07-02 14:07:07 190

原创 Numpy使用笔记

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

2025-06-23 09:00:49 428

原创 linux VFS简介

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

2025-06-22 23:37:27 602

原创 qml显示svg矢量图形

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

2025-06-14 09:06:01 100

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

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

2025-06-03 16:41:41 302

原创 C++ Protocol Buffers使用介绍

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

2025-06-03 08:48:22 112

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

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

2025-05-30 18:30:39 348

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

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

2025-05-29 10:20:11 168

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

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

2025-05-29 10:04:57 48

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

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

2025-05-28 17:18:25 122

原创 C++链式调用与Builder模式

链式调用的核心是成员函数返回*this(引用)。适用于提高代码可读性和流畅性,常见于 Builder 模式和流式接口。注意返回类型的正确性(引用而非值)和 const 正确性。

2025-05-28 16:31:50 836

原创 OpenGL多重渲染

这些输出将同时写入绑定的多个帧缓冲目标。

2025-05-26 14:31:45 408

原创 linux make使用方法

使用方式构建速度稳定性推荐用途make慢高调试、Makefile 不靠谱make -j4快中多核编译、大型项目make -j非常快中高性能机器、稳定项目。

2025-05-26 14:19:41 495

原创 记录一个C++编译错误在编译时出现error C2665: “std::lock_guard<std::mutex>::lock_guard”: 没有重载函数可以转换所有参数类型

的,线程安全操作(如加锁)仍然需要物理上的状态修改,因此互斥锁应声明为。在编译时出现error C2665: “std::lock_guard。::lock_guard”: 没有重载函数可以转换所有参数类型。lock(mtx);上面的代码std::lock_guard。成员函数中的成员变量默认被视为。这个编译错误的原因是:在。的构造函数需要接受一个。的成员变量默认被视为。如果遇到类似错误(如。,该编译错误应被解决。

2025-05-19 15:12:20 300

原创 linux libdbus使用案例

以下是一个基于 Linux libdbus 的详细指南,包含服务端和客户端的完整代码示例,涵盖 方法调用、信号发送 和 异步消息处理。libdbus 是 D-Bus 的底层 C 库,直接操作 D-Bus 协议,适合需要精细控制的场景。实现一个服务端,提供 方法并发送 信号。3. 客户端代码客户端调用 方法并监听 信号。4. 编译与运行(1) 安装依赖(2) 编译代码(3) 运行示例终端 1(服务端):终端 2(客户端):(4) 预期输出服务端:客户端

2025-05-16 00:04:19 240

原创 gRPC为什么高性能

gRPC 之所以具备高性能的特性,主要得益于其底层设计中的多项关键技术优化。这些设计使其在吞吐量、延迟和资源利用率上远超传统 RESTful API,尤其适合对性能要求严苛的分布式系统。gRPC 的高性能源于。

2025-05-15 23:54:39 188

原创 linux C++ GDBus代码示例

GDBus 提供了高度封装的 D-Bus 通信能力,通过 GLib 的异步支持和类型系统,能够实现高效、安全的进程间通信。适用于需要与 GNOME 桌面服务或其他系统组件交互的应用程序。通过 GDBus 的简洁接口,可以更高效地实现 D-Bus 通信。可大幅简化开发流程,推荐在需要复杂接口交互时使用。的详细指南,包含服务端和客户端的完整实现,覆盖。(为简化示例,下文代码手动实现接口)。创建一个 XML 文件定义接口(本示例实现一个简单的。

2025-05-15 23:51:05 201

原创 linux dbus

主要用于Linux桌面环境和系统服务之间的消息传递。它允许不同的应用程序或系统组件以高效、安全的方式相互通信,是现代Linux桌面(如GNOME、KDE)的核心基础设施之一。通过D-Bus,Linux实现了高度模块化的系统设计,使得不同组件可以松耦合地协作。它是理解现代Linux桌面和服务交互的关键技术之一。Linux D-Bus(Desktop Bus)是一种。

2025-05-15 23:38:50 431

原创 linux系统服务

Linux系统服务是后台运行的守护进程,提供核心功能或支持其他应用程序,如网络管理、日志记录和定时任务。这些服务通常在系统启动时自动加载,并由初始化系统(如systemd或SysVinit)管理。systemd是现代Linux系统的主流初始化系统,提供统一的服务管理、日志记录等功能,而SysVinit则用于旧版系统。常见的系统服务包括sshd、cron、NetworkManager等。管理系统服务时,可以通过systemctl或service命令启动、停止、重启服务,并配置开机自启。

2025-05-15 23:35:54 578

原创 opengl tinygltf基本概念

在OpenGL中显示GLB模型时,使用库解析模型数据会涉及一些关键概念。

2025-05-08 15:13:07 541

原创 python装饰器

类装饰器可以灵活地修改类的行为,适用于需要在类定义时进行修改的场景。通过类装饰器,开发者可以轻松地扩展类的功能,而无需直接修改类的代码。

2025-04-18 09:18:54 371

原创 C++ SFINAE

SFINAE是C++模板编程中的一个重要概念,全称是"Substitution Failure Is Not An Error"(替换失败不是错误)。它允许我们在编译期间基于类型特性选择正确的函数重载或模板特化。

2025-03-30 00:30:00 463

原创 C++萃取

萃取是一种用于从类型中"萃取"(提取)信息的技术,通常通过模板特化实现。获取类型的特性根据类型选择不同的算法为不同类型提供统一的接口// 迭代器萃取示例// 使用Iterator自身定义的类型// 为原生指针特化的萃取// 基于萃取的泛型函数// 使用萃取获取迭代器的值类型std::cout << "处理的元素类型大小: " << sizeof(value_type) << " 字节" << std::endl;// 使用迭代器处理元素...for (

2025-03-30 00:15:00 416

原创 Java反射用法介绍

Java 反射(Reflection)是 Java 语言的一个强大特性,它允许程序在运行时获取类的信息,检查和操作类的字段、方法、构造器等,甚至可以创建新的对象实例、调用方法和访问或修改字段值。

2025-03-29 09:08:31 338

原创 Android Zygote和System进程的启动过程

Zygote进程:负责孵化应用程序进程,通过预加载类和资源提高应用启动速度。System进程:负责启动和管理Android系统的核心服务,确保系统的正常运行。这两个进程的启动是Android系统启动的重要组成部分,确保了应用程序和系统服务的顺利运行。理解这两个进程的启动过程对于深入理解Android系统的工作机制是非常重要的。

2025-03-29 09:01:54 533

原创 Android logcat使用介绍

Android Logcat 是一个用于查看和分析 Android 应用程序日志输出的工具。它可以帮助开发者调试应用程序,跟踪错误和性能问题。Logcat 提供了一个命令行接口,可以在 Android Studio 中通过 Logcat 面板查看日志。

2025-03-29 08:57:47 637

原创 OpenGL MVP变换

在OpenGL中,(Model-View-Projection Transformation)是3D图形渲染的核心流程,它将物体的局部坐标通过一系列矩阵变换最终映射到屏幕空间。。

2025-03-24 11:17:50 827

原创 GLB文件介绍

是由支持的软件或工具生成的。glTF是一种开放的3D模型传输格式,而GLB是其二进制版本,通常用于嵌入纹理和模型数据。

2025-03-21 18:25:07 1014

原创 Android HAL服务注册与获取服务

在Android HAL(硬件抽象层)开发中,当使用HIDL(硬件接口定义语言)定义接口时,生成的C++头文件会包含一个关键的函数。该函数的作用是将HAL实现注册到系统服务管理器,使其他进程能够发现并调用该服务。用于将HAL接口的实现实例注册到Android的(HIDL服务管理器)。注册后,客户端(如Android框架或应用)可通过服务名称查找并绑定该服务。默认注册的服务名称为接口的(如"default"或"slot0"也可以通过参数指定自定义名称(例如。

2025-03-21 09:35:05 1199

原创 C++ fallthrough

C++ 中的是一个用来明确表示switch语句中的标签之间的执行流会“掉入”下一个case标签的机制。在传统的switch语句中,如果没有break语句,程序会继续执行下一个case代码块的内容,这种行为称为“fallthrough”(掉入)。不过,这种行为容易导致错误,因为编译器不会给出明确的提示,通常会误导开发者。为了解决这个问题,C++17 引入了一个新的属性,它显式地告诉编译器和其他开发者:当前case语句的执行流会跳到下一个case,即“fallthrough”是有意为之,而不是一个错误。

2025-03-14 15:41:35 427

原创 C++ std::atomic_long compare_exchange_strong用法介绍

是其一个成员函数,用于实现一种无锁的原子比较和交换操作。以下是一个简单的代码示例,展示如何使用。是 C++ 标准库提供的原子类型,

2025-03-10 15:46:46 865

原创 OpenGL窗口变换、裁减、剪切与反馈

在OpenGL中,窗口变换、裁剪、剪切和反馈是图形渲染管线中的重要概念。

2025-03-10 09:12:32 444

原创 OpenGL纹理数组

在 OpenGL 中,是一种特殊的纹理类型,它允许我们将多个纹理存储在一个纹理对象中,并通过索引访问不同的纹理层。纹理数组的主要优势是可以减少绑定纹理的操作,从而提高性能,尤其是在需要频繁切换纹理的场景中。以下是实现步骤以及完整代码示例,使用和。

2025-03-05 07:45:00 398

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.csdn.net/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.csdn.net/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关注的人

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