- 博客(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
原创 正确解决! [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++ 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++链式调用与Builder模式
链式调用的核心是成员函数返回*this(引用)。适用于提高代码可读性和流畅性,常见于 Builder 模式和流式接口。注意返回类型的正确性(引用而非值)和 const 正确性。
2025-05-28 16:31:50
836
原创 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
原创 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
原创 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-05 07:45:00
398
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关注的人