自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 收藏
  • 关注

原创 MySQL复合查询(重点)

复合查询

2026-04-03 21:55:21 484 39

原创 表的内连和外连

表的内连和外连

2026-04-01 17:49:07 96 27

原创 MySQL基本查询

MySQL基本查询

2026-03-30 20:07:09 499 30

原创 MySQL表的约束

表的约束

2026-03-28 23:06:40 447 30

原创 Qt界面优化

Qt界面美化

2026-03-26 17:24:02 889 27

原创 【Qt系统相关】Qt系统相关

qt系统相关——事件、Qt文件操作、多线程、网络、音视频

2026-03-23 21:37:54 705 37

原创 【Qt窗口】Qt窗口

Qt窗口

2026-03-21 20:48:34 583 25

原创 【Qt常用控件】容器类控件和布局管理器

容器类控件和布局管理器

2026-03-19 20:00:08 1059 30

原创 【Qt常用控件】多元素控件

多元素控件

2026-03-17 19:23:27 825 30

原创 【Qt常用控件】输入类控件

Line Edit。

2026-03-15 14:38:32 1030 37

原创 【Qt常用控件】显示类控件

Label。

2026-03-12 18:42:36 598 32

原创 【Qt常用控件】按钮类控件

本文介绍了Qt中QPushButton按钮控件的使用方法和主要属性。QPushButton继承自QAbstractButton,具有text文本、icon图标、iconSize图标尺寸、shortCut快捷键等核心属性。文章通过两个代码示例详细演示了按钮功能的实现:1)创建带图标的按钮,通过setIcon()方法设置图片资源并调整尺寸;2)实现带快捷键的方向控制按钮,使用setShortcut()方法绑定按键操作。此外还介绍了autoRepeat自动重复触发等实用功能,展示了Qt按钮控件丰富的可定制性。

2026-03-10 14:12:01 800 27

原创 【Qt常用控件】控件概述和QWidget 核心属性

Widget 是 Qt 中的核心概念,英文原义是 “小部件/小组件”,我们此处也把它翻译为 “控件” .控件是构成一个图形化界面的基本要素.这是一张图片,ocr 内容为:像上述示例中的,按钮, 列表视图, 树形视图, 单行输入框, 多行输入框, 滚动条, 下拉框等, 都可以称为 “控件”.

2026-03-07 22:12:49 909 36

原创 【Qt信号和槽】信号和槽的概述和使用

信号源:谁发的信号.信号的类型:哪种类别的信号.信号的处理方式:注册信号处理函数,在信号被触发的时候自动调用执行.Qt 中的信号和 Linux 中的信号,虽然不是一样的概念,但是确实有相似之处.在 Qt 中,用户和控件的每次交互过程称为一个事件。比如 “用户点击按钮” 是一个事件,“用户关闭窗口” 也是一个事件。每个事件都会发出一个信号,例如用户点击按钮会发出 “按钮被点击” 的信号,用户关闭窗口会发出 “窗口被关闭” 的信号。

2026-03-05 19:00:32 720 33

原创 【Qt初识】Qt初识

可视化操作实现Qt 窗口坐标体系。

2026-03-03 08:00:00 2372 34

原创 连接管理模块和搭建客户端

首先明确我们所实现的项目:仿 RabbitMQ 实现一个简化版的消息队列组件,其内部实现了消息队列服务器以及客户端的搭建,并支持不同主机间消息的发布与订阅及消息推送功能。

2026-02-28 20:31:22 960 26

原创 信道管理模块和异步线程模块

本文摘要描述了RabbitMQ客户端和服务端的信道管理机制。信道作为通信核心,包含信道ID、网络连接对象、协议处理器、消费者等关键信息,并采用哈希表管理请求-响应队列。信道提供丰富的操作接口,包括创建/删除信道、交换机/队列管理、消息订阅发布等功能。通过互斥锁和条件变量实现异步通信中的同步控制,确保请求-响应流程的可靠性。代码示例展示了信道打开/关闭、交换机声明/删除等核心操作的具体实现,体现了RabbitMQ高效的消息队列管理能力。

2026-02-25 00:55:18 781 29

原创 订阅者模块

RabbitMQ客户端实现采用模块化设计,主要包含四大模块:1)订阅者模块-描述消费者角色,处理消息回调;2)信道模块-提供交换机/队列管理、消息发布订阅等服务接口;3)连接模块-管理网络连接和信道开关;4)异步线程模块-包含IO事件监控线程和消息处理线程。订阅者模块通过消费者标签、队列名、确认标志和回调函数来封装消费者功能,在信道订阅队列时自动创建。整体流程遵循"创建线程→建立连接→打开信道→获取服务→关闭"的顺序,隐藏了底层网络通信细节,提供面向服务的接口调用方式。

2026-02-22 23:00:15 514 18

原创 连接管理模块和服务器模块

向用户提供一个用于实现网络通信的 Connection 对象,从其内部可创建出粒度更轻的Channel 对象,用于与客户端进行网络通信。 为什么需要这些成员和操作?操作方面:创建和删除信道是AMQP协议的基本操作,因为客户端可以通过打开和关闭信道来在同一个连接上实现多路复用。连接管理(增删查)则是对连接本身的管理,当客户端建立连接时,服务器需要创建一个连接对象,并管理起来,以便在连接断开时清理资源。2. 封装对外管理的类服务器通过对外管理的类来实现对连接的增删查操作这里我们考虑客户端和服务器之间的

2026-02-20 21:24:19 1298 24

原创 信道管理模块

信道管理。

2026-02-17 23:35:25 817 27

原创 消费者管理模块

队列消费者/订阅者管理。

2026-02-15 16:20:14 337 19

原创 交换机路由管理模块

本文介绍了RabbitMQ中交换机的路由管理机制。交换机根据类型和匹配规则决定消息路由到哪些队列:广播交换(发送给所有绑定队列)、直接交换(routing_key与binding_key完全匹配)、主题交换(基于通配符匹配)。重点解析了主题交换中binding_key和routing_key的格式要求:binding_key支持*和#通配符,但必须独立存在且不能连续出现;routing_key由字母、数字、下划线和点组成。最后给出了C++实现的合法性检查代码,验证routing_key和binding_ke

2026-02-13 15:08:01 539 23

原创 虚拟机数据管理模块

本文介绍了虚拟机管理模块的设计与实现。该模块整合了交换机、队列、绑定和消息四个数据管理模块,通过关联操作实现消息队列的核心功能。主要功能包括:交换机和队列的声明与删除(支持存在性检查)、交换机与队列的绑定/解绑、消息的新增/获取/确认删除等操作。模块采用C++实现,通过共享指针管理资源,确保数据一致性(如删除交换机/队列时同步清理关联数据)。消息存储采用独立管理对象,支持队列初始化时的历史数据恢复。该设计简化了虚拟机的操作流程,为消息队列系统提供了高效可靠的基础架构。

2026-02-12 22:04:24 631 18

原创 【Qt初识】使用 Qt Creator 新建项目

工程新建好之后,在工程目录列表中有一个后缀为 “.pro” 的文件, “.pro” 文件就是工程文件 (project),它是 qmake 自动生成的用于生产 makefile 的配置文件。这是一张图片,ocr 内容为:main.cpp源文件这是一张图片,ocr 内容为:解释:Qt 系统提供的标准类名 声明头文件没有 .h 后缀;Qt 一个类对应一个头文件,类名 就是 头文件名;QApplication 为应用程序类;(a为应用程序对象,有且仅有一个。

2026-02-08 15:27:02 874 23

原创 持久化数据管理中心模块

在开始正式项目功能模块代码编写之前,我们需要先提前做一件事情,就是将消息类型定义出来。 而消息最终是需要进行持久化存储的,因此涉及到数据的序列化和反序列化,因此消息的类型定义我们使用 protobuf 来进行生成。 因此定义消息类型,其实就是定义一个消息类型的 proto 文件,并生成相关代码。 消息所需要素: 因为客户端与服务端都会用到交换机的一些相关信息,比如交换机类型,还有就是消息的持久化模式,因此我们将交换机类型的枚举,与消息投递模式的枚举也顺便同时定义到 proto 文件中。 编译运行:2.

2026-02-08 15:16:42 1014 23

原创 日志打印和实用 Helper 工具

日志打印工具。

2026-02-05 22:14:16 768 30

原创 项目模块划分

服务端模块。

2026-02-01 16:32:42 711 26

原创 项目需求分析

本文介绍了消息队列的核心概念与AMQP协议模型。主要内容包括:1)生产者-消费者模型中的Broker核心角色及其功能;2)AMQP协议中的关键组件(VirtualHost、Exchange、Queue、Binding);3)Broker需要实现的10个核心API;4)三种主要交换机类型(Direct/Fanout/Topic)的工作机制。文章通过类比QQ红包形象说明了不同交换机类型的消息分发特点,为理解消息队列架构提供了清晰框架。

2026-02-01 16:24:34 671 30

原创 C++11 异步操作实现线程池

文章摘要: 本文介绍了C++11中的std::future模板类,它用于获取异步操作的结果。主要特点包括:阻塞当前线程直到异步操作完成,确保结果可用。应用场景包括异步任务(如网络请求)、并发控制和结果安全获取。通过std::async示例展示了两种启动策略(deferred延迟执行和async新线程并行)的区别,以及std::promise与std::future配合实现的生产者-消费者模型。代码示例演示了如何通过promise.set_value()设置结果,并通过future.get()获取结果,实现线

2026-01-30 17:32:10 889 28

原创 第三方库介绍——GTest

GTest是Google开发的跨平台C++单元测试框架,提供丰富的断言功能和事件机制。主要特性包括:1)TEST和TEST_F宏分别用于简单测试和复用测试场景;2)ASSERT_和EXPECT_系列断言支持布尔值、数值比较等验证;3)事件机制包含全局、测试套件和测试用例三个级别,支持测试环境的初始化和清理。通过示例展示了绝对值函数的测试实现,演示了断言的使用方法和测试输出结果。GTest能有效提升C++代码的测试覆盖率和可靠性。

2026-01-27 15:25:27 759 30

原创 第三方库介绍——SQLite3

SQLite 是一个轻量级、零配置、无服务器的嵌入式数据库引擎,将整个数据库存储在单一磁盘文件中。它具有体积小(<400KiB)、跨平台、支持ACID事务和标准SQL查询等特点。通过C/C++ API,开发者可以方便地操作数据库,包括创建/打开数据库(sqlite3_open_v2)、执行SQL语句(sqlite3_exec)和关闭连接(sqlite3_close_v2)。文中还展示了一个SqliteHelper类封装,简化了数据库操作流程,支持多线程安全模式设置和回调函数处理查询结果。SQLite特

2026-01-24 17:33:00 1301 33

原创 第三方库介绍——Muduo

Muduo 库是什么。

2026-01-21 09:00:00 925 30

原创 第三方库介绍——Protobuf

Protobuf 是什么。

2026-01-17 17:59:46 922 28

原创 【Linux网络】基于Reactor反应堆模式的高并发服务器

在实践中,根据如何处理接收连接(Accept)和I/O读写(Read/Write)操作,Reactor模式演化出三种主要模型,其性能和处理能力依次提升。单 Reactor 单线程模型描述:所有工作(接收新连接、I/O读写、业务处理)都在一个线程内完成。优点:模型简单,无线程切换和同步问题。缺点性能瓶颈明显。如果业务处理耗时,会阻塞整个事件循环,无法及时响应其他事件。适用场景:适用于业务处理非常快速的场景,如Redis。单 Reactor 多线程模型描述:Reactor 线程。

2026-01-06 18:10:01 8882 46

原创 多路转接epoll

epoll 是一种基于多个 fd 的就绪事件通知机制,通过监控这些 fd 上的事件(如可读、可写),在事件就绪时通知应用程序,从而避免阻塞等待。这与 select 和 poll 的目标一致,但设计更高效。:epoll 是在 Linux 内核 2.5.44 版本中引入的,按照 man 手册的说法,它是为处理大批量句柄(fd)而改进的 poll,旨在解决传统方法在高并发场景下的局限性。

2025-12-29 22:41:04 1196 42

原创 【Linux网络】多路转接poll

摘要:本文介绍了I/O多路复用机制poll的作用与实现原理,重点分析了poll相较于select的优势,包括参数不重置、无文件描述符数量限制等特性。文章通过代码示例展示了如何使用poll改写select服务器,包括初始化pollfd数组、事件派发逻辑以及连接管理器的实现。poll通过分离events和revents字段,解决了select的参数重置问题,并支持更高并发连接数,适用于服务器程序高效管理多路I/O的场景。

2025-12-22 12:36:35 16618 44

原创 远程控制软件使用体验分享:2025年个人实测记录

本文分享了2025年七款主流远程控制软件的实测体验,包括ToDesk、向日葵、RayLink等。根据实测结果,ToDesk适合日常办公,向日葵配套硬件丰富,RayLink画质出众,网易UU远程优化游戏体验,RustDesk支持自建服务器,AnyDesk轻量快速,TeamViewer稳定但限制较多。文章从连接速度、画质表现、功能特点等方面对比分析,并针对办公、设计、游戏等不同场景给出选型建议,强调备用方案和数据安全的重要性,为个人用户选择远程控制工具提供实用参考。

2025-12-18 13:09:29 723 14

原创 【Linux网络】多路转接select

本文详细介绍了select函数的核心定位和用法。select是一种I/O多路复用机制,用于监控多个文件描述符的状态变化,当任意文件描述符就绪时通知应用程序。文章解析了select函数的参数和返回值,并通过位图机制说明用户与内核的交互流程。最后,通过改写基于TCP的EchoServer示例,展示了如何使用select处理监听套接字的读事件就绪(新连接到达)。理解select有助于掌握更高效的I/O多路复用技术如epoll。

2025-12-16 21:59:00 722 37

原创 【Linux网络】五种IO模型与非阻塞IO

摘要:五种I/O模型及其核心概念 本文通过钓鱼的生动比喻,系统阐述了五种I/O模型的核心差异。I/O操作本质包含"等待"和"拷贝"两个阶段,其中等待时间往往占据主要比重。阻塞I/O(专注等待)、非阻塞I/O(轮询检查)、信号驱动I/O(事件通知)、多路复用(批量监控)和异步I/O(全权委托)分别对应不同的效率优化策略。特别强调同步I/O与异步I/O的关键区别在于用户进程是否参与I/O过程,而阻塞/非阻塞则关注等待时的线程状态。多路复用技术(如select)通过单次系统

2025-12-12 19:59:24 1991 36

原创 【Linux网络】NAT、代理服务、内网穿透

NAT、代理服务器、内网穿透、内网打洞、交换机原理

2025-12-08 17:23:36 2105 38

空空如也

空空如也

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

TA关注的人

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