- 博客(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++ 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++链式调用与Builder模式
链式调用的核心是成员函数返回*this(引用)。适用于提高代码可读性和流畅性,常见于 Builder 模式和流式接口。注意返回类型的正确性(引用而非值)和 const 正确性。
2025-05-28 16:31:50
809
原创 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
原创 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
原创 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-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::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无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小
2024-04-23
Qt蓝牙串口源码支持十六进制发送、字符发送、定时发送
2022-02-22
支持向量机通俗导论(理解SVM的三层境界)PDF
2018-04-13
jsoncpp_sdk_x64.rar
2020-04-06
C# TCP网络通信示例:多人聊天发文件
2018-04-02
很全的 Qt qss
2020-09-29
c++ PImpl实现机制
2021-09-15
C++/OpenCV2.4.9 数字精确识别源码
2017-11-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人