自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

琅嬛福地

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

  • 博客(892)
  • 资源 (21)
  • 收藏
  • 关注

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

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

2023-09-21 23:00:33 4774

原创 qml显示svg矢量图形

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

2025-06-14 09:06:01 6

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

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

2025-06-03 16:41:41 270

原创 C++ Protocol Buffers使用介绍

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

2025-06-03 08:48:22 71

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

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

2025-05-30 18:30:39 306

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

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

2025-05-29 10:20:11 134

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

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

2025-05-29 10:04:57 27

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

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

2025-05-28 17:18:25 98

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

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

2025-05-28 16:31:50 809

原创 OpenGL多重渲染

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

2025-05-26 14:31:45 357

原创 linux make使用方法

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

2025-05-26 14:19:41 414

原创 记录一个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 245

原创 linux libdbus使用案例

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

2025-05-16 00:04:19 206

原创 gRPC为什么高性能

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

2025-05-15 23:54:39 144

原创 linux C++ GDBus代码示例

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

2025-05-15 23:51:05 136

原创 linux dbus

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

2025-05-15 23:38:50 365

原创 linux系统服务

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

2025-05-15 23:35:54 556

原创 opengl tinygltf基本概念

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

2025-05-08 15:13:07 504

原创 python装饰器

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

2025-04-18 09:18:54 354

原创 C++ SFINAE

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

2025-03-30 00:30:00 405

原创 C++萃取

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

2025-03-30 00:15:00 396

原创 Java反射用法介绍

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

2025-03-29 09:08:31 319

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

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

2025-03-29 09:01:54 513

原创 Android logcat使用介绍

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

2025-03-29 08:57:47 605

原创 OpenGL MVP变换

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

2025-03-24 11:17:50 782

原创 GLB文件介绍

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

2025-03-21 18:25:07 849

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

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

2025-03-21 09:35:05 1111

原创 C++ fallthrough

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

2025-03-14 15:41:35 375

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

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

2025-03-10 15:46:46 749

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

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

2025-03-10 09:12:32 413

原创 OpenGL纹理数组

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

2025-03-05 07:45:00 366

原创 OpenGL 3D纹理

3D纹理(也称为体积纹理)是纹理映射的扩展,从2D平面扩展到3D空间。与2D纹理不同,3D纹理在三个维度上存储数据(宽度、高度和深度),允许在整个3D空间中采样,而不仅仅是在平面上。这个示例提供了一个坚实的3D纹理基础,可以根据特定需求进一步扩展和优化。例如,可以实现更复杂的体积渲染算法、添加光线行进技术或创建更复杂的程序化3D纹理。

2025-03-04 11:21:30 1049

原创 C++ OpenGL 表面剔除 (Face Culling)

表面剔除是一种优化技术,可以减少渲染不必要的图元,提高渲染性能。它基于一个简单原则:对于封闭的3D物体,观察者在任何时候最多只能看到一半的面(除非是透明物体)。通过剔除背向观察者的面,可以节省大量的片段着色器计算。:通过顶点的环绕顺序定义面的正面和背面:可以选择剔除正面、背面或两者。

2025-03-04 11:08:49 840

原创 C++ OpenGL 帧缓冲(Framebuffer)理论与实现

这个示例仅展示了基本用法,帧缓冲在实际应用中通常会结合更复杂的着色器和多重缓冲技术。在实际开发中需要根据具体的渲染需求调整帧缓冲的配置和附件类型。帧缓冲对象(FBO)是OpenGL中一种允许我们创建自定义渲染目标的对象。

2025-03-04 11:05:20 1032

原创 android .hal文件编写以及C++编译链接hal生成的代码

包括接口的方法和属性。

2025-03-03 09:00:00 1053

原创 android::IPCThreadState::self使用介绍

是 Android Binder IPC(Inter-Process Communication,进程间通信)机制中一个非常重要的函数。它主要用于管理当前线程与 Binder 驱动之间的交互状态。Binder 是 Android 中的核心 IPC 机制,而是负责管理线程级别的 Binder 状态的关键类。transactreplytransact以下是一些常见的场景和代码片段,展示了。

2025-03-03 08:15:00 1254

原创 android .rc文件

在 Android 系统中, 文件主要是 init 脚本,用于定义和配置 Android 系统的启动过程。 文件的扩展名通常为 ,例如 、、 等。这些文件是 Android 的 进程(系统的第一个用户态进程)读取和解析的脚本,它们控制系统服务、设备驱动程序、属性初始化等内容。 文件的主要用途可以总结为以下几点:启动服务:挂载文件系统:设置系统属性:权限管理:加载驱动程序:事件触发:一个 文件通常由以下几部分组成:命令部分:服务定义部分:触发器部分:使用 设置系统属性。2. 挂载文件系统使用 挂载

2025-03-03 08:00:00 608

原创 android bp构建编译C++代码

等模块类型,可以轻松地构建动态库、静态库和可执行文件。合理地组织项目结构和配置 BP 文件,可以让构建流程更加高效和清晰。文件的作用是定义如何编译、链接和打包项目中的组件,例如库(静态库、动态库)、可执行文件、AIDL 文件、资源等。(简称 BP)是一种基于 JSON 的构建配置文件格式,代替了传统的。,它是 Android 的 Soong 构建系统所使用的配置文件格式。以下是一个完整的项目示例,展示了如何使用 BP 文件定义模块。指定模块所依赖的共享库。指定模块所依赖的静态库。模块的名称,必须唯一。

2025-03-02 04:15:00 630

原创 android::hardware::configureRpcThreadpool使用介绍

的主要作用是设置服务的线程池,以便高效处理客户端请求。通常和配合使用,会启动线程池并阻塞当前线程,直到服务终止。合理配置maxThreads和参数,可以根据服务的需求优化性能。

2025-03-01 23:59:27 719

原创 Android Binder 用法详解

创建文件// 接口标识符enum {// 接口定义public:// 声明接口元信息// 纯虚函数,需要子类实现// 服务端接口public:// onTransact 函数处理来自客户端的请求完整的 IPC 框架:支持跨进程方法调用类型安全:通过接口定义保证类型安全高性能:直接在 native 层实现,避免了 JNI 开销安全性:支持身份验证和访问控制。

2025-03-01 00:17:58 1574

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关注的人

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