自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QMainWindow布局框架折腾记录

写了个简易文本编辑器把这些东西串起来练了一遍,菜单栏打开/保存文件,工具栏快捷操作,状态栏显示反馈,dock 放个文件列表。

2026-05-18 22:40:42 284

原创 Qt控件用下来记一些反直觉的地方

本文总结了Qt控件使用中的一些反直觉问题和常见陷阱,主要包括: QWidget公共属性:区分geometry()和frameGeometry(),注意窗口透明度判断应使用>=而非== 按钮类:QRadioButton默认全窗口互斥,需用QButtonGroup分组;QCheckBox建议使用toggled信号 显示类:QProgressBar颜色修改需使用::chunk选择器;QLCDNumber适合做倒计时显示 输入类:inputMask和validator不可混用;Qt6推荐使用QRegularExpr

2026-05-18 16:55:05 384

原创 Qt信号槽这套机制

上次 hello world 跑通之后,我想着是不是该让窗口能"动"起来——点个按钮做点事这种。看了一下 Qt 的玩法,核心机制叫。学校 Qt 课老师当时是这么讲的:"你就把信号当事件、槽当回调,connect 一下就完了。"我当时也觉得这有啥难的,结果自己上手才发现,坑全藏在细节里。这篇就把我这几天踩过的坑串起来记一下,主要给同样在自学 Qt 的同学一个避坑参考。

2026-05-17 22:05:23 502

原创 Qt初体验-第一个窗口程序踩的坑

大三了,想着暑期得找份实习,翻 BOSS 直聘看了一圈 C++ 岗,发现"熟悉 Qt"几乎是个标配技能。学校虽然开过 Qt 课,但当时就跟着老师拖了几个控件做了一个小作业,原理基本一窍不通,纯属应付完事。正好这阵子课不算忙,决定自己重新学一遍 Qt,目标是能独立写点小工具放到简历里凑项目经历。这篇就记一下学 Qt 头一天踩的几个坑,主要是搞清楚一个最简单的窗口程序到底是怎么跑起来的,给自己留个备忘,也希望同样在自学 Qt 的同学能少走点弯路。

2026-05-17 21:04:44 405

原创 从 C++ 转向 AI 应用工程:我的 Python 基础第一阶段复盘

环境准备 -> 基础语法 -> 数据结构 -> 文件处理 -> JSON 输出 -> 小工具项目完成这个文本统计工具后,至少可以说明已经具备了继续学习 FastAPI、大模型 API、RAG 和 Agent 开发的基础。下一阶段就可以从“写脚本”进入“写后端服务”,开始学习 FastAPI,把 Python 能力封装成可以被外部调用的 API。

2026-05-12 14:22:33 508 12

原创 Reactor网络库的连接管理核心:Connection类

事件处理:通过Channel监听conn_fd的读、写、关闭、错误四种事件;数据缓冲:管理输入(接收数据)、输出(发送数据)缓冲区,解决TCP粘包/拆包问题;状态管理:维护连接从建立到关闭的全状态,避免非法操作;回调分发:将底层I/O事件转换为上层业务回调,让用户无需关心底层细节;超时管理:支持非活跃连接自动销毁,释放系统资源。状态管理:用四状态有限状态机,严格管控连接生命周期,避免非法操作;双层回调:分离底层I/O处理和上层业务逻辑,降低耦合,提升可维护性;

2026-02-02 22:09:52 1030 1

原创 深入理解Reactor模式

Reactor是事件驱动设计模式,核心是将I/O事件的监听与处理分离:由Reactor监听文件描述符(fd)的I/O事件,触发后分发到对应处理器(Handler)处理,基于epoll实现I/O多路复用,是高性能网络库的基础。单一职责:每个组件只做一件事(Channel封装fd、EventLoop驱动循环、Connection管理连接);事件驱动:所有逻辑由fd事件/定时器事件触发,无主动轮询,性能高效;线程安全:所有epoll操作、fd事件处理都在对应EventLoop线程执行,跨线程通过任务队列投递;

2026-02-02 21:48:52 1239

原创 EventLoop_Channel_ThreadPool协作原理

每个LoopThread内部创建并持有一个EventLoop,且该EventLoop仅在所属的LoopThread线程中运行,实现「线程私有」的事件调度。这是整个体系的基石,所有的线程安全、事件调度设计都围绕这个原则展开。EventLoop是线程私有的事件调度器:一个EventLoop只运行在一个线程中,负责监控IO事件、处理事件、执行跨线程任务,是整个体系的核心;eventfd是跨线程唤醒的关键:解决了epoll_wait阻塞导致跨线程任务延迟的问题,为epoll提供人工唤醒入口;

2026-02-01 23:28:12 982 3

原创 高性能定时器:时间轮算法的工程实践

这套基于时间轮的定时器,核心优势是“高性能、易落地、线程安全”,完美适配长连接网络服务的场景。它的核心设计思想,其实就是把几个简单的技术点(时间轮、智能指针、timerfd、EventLoop)优雅地结合起来,用最少的代码解决工程上的复杂问题。设计目标实现方式高效增删改时间轮 O(1) 复杂度自动执行回调TimerTask 析构函数触发刷新超时增加 shared_ptr 引用计数取消任务标记 _canceled,不删除任务线程安全所有操作统一在 Loop 线程执行时间驱动。

2026-01-31 20:06:11 1009

原创 一起实现一个Reactor网络库:从Channel到Poller

/ 写事件:放在读事件之后为什么写事件要放在读事件之后?因为如果 fd 处于异常状态(比如对端已经关闭),先执行读事件可以及时检测到异常并处理,避免在异常状态下继续写数据——比如对端已经关闭连接,我们还在写数据,就会触发错误,导致程序异常。补充一个最佳实践:不要一开始就注册 EPOLLOUT 事件,否则会导致 epoll_wait 立即返回(socket 通常默认可写),频繁触发写回调浪费资源;仅在需要写数据且 write 返回 EAGAIN 时,才注册 EPOLLOUT 事件,写完后立即注销。

2026-01-30 23:48:48 963

原创 深入理解 Socket 与 TCP 协议

本文深入解析了Socket与TCP协议在网络编程中的核心作用。Socket作为应用层与传输层的接口,通过文件描述符实现网络通信。TCP协议则提供面向连接、可靠的传输服务,通过三次握手建立连接、四次挥手关闭连接,并采用序列号、确认机制、重传和校验等方式确保数据可靠性。文章通过C++代码示例展示了服务端(创建、绑定、监听、接收)和客户端(连接、发送、接收)的完整实现流程,帮助读者理解网络通信的基本原理和实现方法。

2026-01-29 20:26:46 1191 1

原创 日志系统的进化之路

本文介绍了从C语言宏定义到C++17折叠表达式的日志系统实现方案。首先明确了日志系统的核心需求:分级控制、上下文完备、类型安全、轻量无依赖和易用性强。文章依次展示了三个版本:V1.0使用C语言宏定义实现轻量灵活的日志系统;V2.0基于C++11递归模板解决类型安全问题;V3.0利用C++17折叠表达式实现极致简洁的日志输出。每个版本都分析了核心设计思路和优缺点,最终实现了一个轻量、高效且类型安全的日志工具。

2025-11-22 23:44:15 899 2

原创 高性能 Buffer 类

本文介绍了一个高性能Buffer类的设计思路,采用std::vector<char>作为底层内存容器,通过读写偏移量(_reader_idx和_writer_idx)实现高效数据管理。核心特性包括:智能内存策略(优先合并碎片再扩容)、读写分离操作(支持预览和消费模式)、灵活接口适配不同场景(原生数据、字符串、按行读取等)。相比直接使用vector或数组,该设计减少了内存拷贝和扩容开销,特别适合网络编程和高频IO场景。

2025-11-22 20:06:59 658

原创 分布式文件存储服务设计与实现优化

摘要 本文介绍了一个高性能分布式文件存储系统的设计与实现,该方案采用brpc+MinIO+Redis+etcd全栈技术架构。系统通过分层设计实现核心功能: 基于MinIO的对象存储层,支持S3协议兼容及分布式部署 Redis缓存热点文件数据和管理分块上传元数据 etcd实现服务注册发现,支持动态扩容 brpc框架保障高性能RPC通信 系统支持单文件/多文件/分块上传三种模式,具备完善的错误处理和资源管理机制。通过MinIOClient封装存储操作、MultipartManager管理分块元数据等核心模块,实

2025-11-02 23:03:00 1743 64

原创 应用层网络协议深度解析:设计、实战与安全

本文深入解析应用层网络协议的设计与实现,包含两大核心内容:一是自定义协议的开发实践,通过JSON序列化和TCP粘包处理实现可靠通信;二是HTTP协议的核心特性与报文格式详解,包括无连接、无状态等特点,以及请求/响应报文的完整结构。文章采用代码示例与理论分析相结合的方式,帮助开发者掌握从协议设计到安全传输的完整流程,适用于网络计算、Web服务等场景开发。

2025-10-23 20:52:18 1276 35

原创 C++微服务实战中好友管理子服务的全面解析

本文将深入解析基于C++的IM好友管理子服务实现,从服务定位到完整部署方案。该服务作为IM系统的核心枢纽,负责管理用户社交关系和聊天会话容器,采用brpc+Protobuf+ODB技术栈实现。文章详细拆解了服务接口设计(10个核心ProtoBuf接口)、数据模型(4个ODB映射表)和关键业务逻辑流程,如好友申请处理包含关系校验、事件管理和会话创建。同时分享了高可用部署实践,包括负载均衡和服务发现机制。通过实际项目代码演示,帮助开发者理解如何构建解耦可靠的微服务架构。

2025-10-23 20:32:37 1887 50

原创 即时通讯系统核心模块实现

摘要(149字): 本文深入剖析了即时通讯(IM)系统的核心架构设计与技术实现方案。系统采用微服务架构,划分为消息传输服务和存储检索服务两大模块,通过MySQL+Elasticsearch混合存储方案实现消息的可靠持久化与高效检索。消息传输服务基于brpc框架实现消息转发逻辑,采用Protobuf定义标准接口;存储层通过封装ES操作实现全文检索功能,MySQL负责结构化数据存储。系统整体通过etcd实现服务治理,利用RabbitMQ异步处理消息持久化,构建了一个高并发、低延迟的IM系统完整解决方案。

2025-10-19 20:48:37 2968 54

原创 C++微服务 UserServer 设计与实现

C++微服务实战:IM用户服务设计与实现 本文分享了IM系统中用户服务(UserServer)的实战开发经验,涵盖核心设计思路和关键实现细节。 设计要点 核心职责:用户认证、信息管理、为其他服务提供基础支撑 架构设计:采用依赖注入模式,避免硬编码外部服务 组件分工: MySQL(ODB ORM)存储用户数据 Redis管理会话和验证码 ElasticSearch实现用户搜索 模拟短信服务(MockSmsClient)解决开发测试需求 关键实现 用户注册:严格校验密码格式和昵称唯一性,同时写入MySQL和ES

2025-10-15 15:58:23 1526 56

原创 网络层:从 IP 协议到路由转发

网络层通过 IP 协议给数据包 “贴标签”(源 / 目 IP),用 CIDR 和 NAT 解决 “IP 地址不够用” 的问题,靠路由表规划 “配送路径”,用分片组装解决 “MTU 限制”,最终实现跨网络的数据包传输。如果想加深理解,建议动手实操:用ipconfig(Windows)或ifconfig(Linux)看自己的 IP 和子网掩码;用(Windows)或route -n(Linux)看路由表;用测试环回地址,用ping 百度IP测试公网连通性。

2025-10-12 14:06:20 2055 53

原创 分布式文件存储 RPC 服务实现

本文详细介绍了基于BRPC+Protobuf+Etcd的分布式文件存储RPC服务实现方案。系统采用五层架构设计:协议定义层使用Protobuf规范通信接口;业务逻辑层实现文件读写核心功能;服务封装层简化BRPC服务管理;服务治理层依托Etcd实现服务注册发现;客户端测试层确保服务可用性。 协议定义层通过Protobuf明确定义了文件上传下载的消息结构和服务接口,支持单文件和多文件操作。业务逻辑层实现文件存储核心功能,包括文件ID生成、路径处理和读写操作。服务封装层采用构建者模式,将服务创建与使用解耦,便于配

2025-10-11 16:15:18 1916 50

原创 【MySQL 从入门到精通】一文吃透 MySQL 核心基础:数据类型、约束、CRUD 与聚合查询

MySQL是主流开源关系型数据库,凭借免费、高性能、跨平台和易用性成为开发者必备技能。本文从数据类型、表约束、CRUD操作等核心概念入手,结合实战案例讲解MySQL基础。重点包括:数值类型(整数、小数)的选择与优化;文本类型(char/varchar)的存储差异;时间日期类型的应用场景。通过实际SQL演示,帮助读者快速掌握MySQL基础操作,实现从入门到精通的平滑过渡。

2025-10-08 21:25:36 1144 27

原创 MySQL从入门到实战:库表操作、数据类型与性能优化全指南

本文系统介绍了MySQL数据库的核心操作与优化实践,内容涵盖字符集选择、备份恢复策略、表设计规范、存储引擎选型和数据类型优化等关键知识点。文章重点解析了utf8与utf8mb4的区别、全量+增量备份方案、三大存储引擎对比以及时间类型的2038问题解决方案,并提供了实用的技术场景案例和避坑指南。通过原理讲解与实战操作相结合的方式,帮助开发者建立规范的MySQL操作习惯,避免常见的基础性问题,提升数据库性能和可靠性。

2025-10-08 21:07:07 848 10

原创 C++:异常处理与智能指针实战指南

本文深入探讨C++错误处理与资源管理的核心技术。首先分析C语言错误码处理的局限性,引入C++异常机制,详细讲解try/throw/catch语法与栈展开原理,强调异常安全注意事项。然后介绍企业级异常体系设计方法,通过继承实现统一处理。最后针对资源管理痛点,讲解智能指针的自动回收机制,包括unique_ptr、shared_ptr等核心用法,帮助开发者编写更健壮的C++代码。

2025-10-07 20:55:47 951 9

原创 c语言贪吃蛇游戏开发

本文介绍了如何使用C语言和Win32 API开发经典贪吃蛇游戏。文章从项目结构、核心函数到游戏逻辑进行全面解析,适合编程新手学习。主要内容包括:项目采用三文件结构(snake.h、snake.cpp、test.cpp);使用链表管理蛇身动态变化;通过Win32 API实现控制台交互;详细讲解关键函数如光标定位、地图绘制、蛇移动逻辑等。该项目能帮助开发者巩固C语言基础,掌握数据结构应用和游戏逻辑设计,文中还特别强调了宽字符处理、按键检测等实用技巧。

2025-10-07 20:02:02 3363 12

原创 C++分布式语音识别服务实践

摘要 本文介绍了一个基于brpc+etcd+百度AI SDK的分布式语音识别服务实践。该系统采用模块化设计,核心功能包括:通过RPC接口接收PCM音频并返回识别结果,使用etcd实现服务注册与发现,集成百度AI语音SDK提供识别能力。 服务端采用Builder模式构建,包含RPC服务实现、语音识别封装、服务注册等模块;客户端通过etcd发现服务并实现负载均衡。文章详细解析了Protobuf接口定义、ASRClient封装、RPC服务实现等关键代码,以及基于etcd的服务发现机制。 该系统具有高可用、易扩展的

2025-10-06 23:43:23 4121 50

原创 用 C++ 快速搭建 WebSocket 服务及踩坑记录

本文介绍了如何使用C++的WebSocketpp库快速搭建WebSocket服务。主要内容包括:WebSocket相较于HTTP轮询的优势(低延迟、双向通信、资源节省);Ubuntu环境下安装Boost和WebSocketpp的步骤;服务器端核心代码实现(连接管理、消息处理回调函数);HTML+JS客户端测试代码;以及完整的联调测试流程。文章还提供了常见问题的解决方案,如编译错误、连接失败等。通过这套方案,C++开发者可以快速实现实时数据交互功能,无需切换技术栈即可对接现有业务逻辑。

2025-10-05 14:57:36 1111 16

原创 RabbitMQ C++ 客户端封装与实战

本文介绍了基于 AMQP-CPP 库的 RabbitMQ C++ 客户端开发实践。首先分析了 AMQP-CPP 的优势:完全异步、灵活网络层、现代 C++ 兼容和轻量级特性。然后详细讲解了 RabbitMQ 服务端安装配置和 C++ 客户端库的安装步骤,包括解决 SSL 版本冲突问题。文章重点剖析了一个线程安全的 MQClient 封装类,该类基于 libev 实现异步事件循环,提供了声明交换机/队列、发布消息和订阅消费三大核心功能,并确保线程安全性。最后展示了构造函数如何初始化 AMQP 连接、通道并启动

2025-10-03 22:59:01 1706 34

原创 ODB 2.5 从安装到实战:C++ ORM 工具手把手教程

本文详细介绍了C++ ORM工具ODB的安装与使用。主要内容包括:1. ODB 2.5在Linux环境的安装步骤及常见问题解决;2. 通过Person类示例演示从定义持久化类到生成数据库操作的完整流程;3. ODB核心功能解析,包括类型映射、常用指令和核心API;4. 提供可直接复用的DAO层封装方案,包含连接池和事务管理。文章还总结了ODB的优势:自动生成SQL、类型安全查询、支持事务等,能显著提升C++项目数据库开发效率。适合需要提升数据库操作效率的C++开发者参考。

2025-10-02 12:14:12 1411 43

原创 上手 cpp-httplib:轻量级 C++ HTTP 库的安装与实战指南

cpp-httplib是一个轻量级的C++ HTTP库,具有单头文件、零依赖、跨平台等优势,适合快速开发小型Web服务和API调用。它支持同步/异步操作、HTTP/1.1特性及HTTPS,API设计直观易用。安装只需克隆GitHub仓库并引用头文件即可。核心功能围绕Request、Response、Server和Client四个类展开,支持路由注册和请求处理。文中通过一个返回"Hello World"的HTTP服务器示例,展示了如何编译运行代码,并提供了跨平台编译、端口占用等注意事项。该

2025-09-26 20:06:07 2226 28

原创 从环境搭建到代码落地:ES C++ 客户端封装的实践笔记

本文介绍了在C++项目中封装Elasticsearch客户端的实践过程。主要内容包括:1. 环境搭建,包括Elasticsearch安装配置、IK分词器安装和elasticlient客户端编译;2. 封装动机,解决了原生SDK需要手动处理JSON、HTTP请求和错误检查的问题;3. 核心封装实现,包括JSON工具类、日志类和业务操作类(索引创建、数据增删改查);4. 完整示例和使用过程中遇到的典型问题及解决方案。通过封装简化了ES操作,提高了开发效率,统一了代码规范,使团队能够更专注于业务逻辑开发。

2025-09-26 19:15:24 1103 24

原创 实战:基于 BRPC+Etcd 打造轻量级 RPC 服务 —— 从注册到调用的完整实现

本文介绍了一个基于BRPC和Etcd的轻量级RPC服务实现方案。该方案解决了服务跨进程通信中的常见痛点,包括服务地址硬编码、僵尸节点调用等问题。系统采用服务自动注册与发现机制,支持负载均衡和实时节点变更感知。核心模块包括日志模块、Etcd注册发现模块、BRPC服务模块和信道管理模块。文章详细阐述了各模块的实现细节,包括服务端注册、客户端发现、信道管理和负载均衡策略,并提供了完整的部署和测试步骤。该方案特别适合中小型项目,具有代码复用性强、核心逻辑清晰等特点,同时为后续添加熔断、监控等功能预留了扩展空间。

2025-09-24 18:25:23 1381 60

原创 C++ 多态:从概念到实践,吃透面向对象核心特性

本文深入讲解C++多态机制,包括基本概念、实现原理和实际应用。多态通过"一个接口,多种实现"的方式,使不同对象对同一行为产生不同结果。实现多态需要满足两个条件:通过基类指针/引用调用虚函数,且派生类重写虚函数。文章详细分析了虚函数表机制,解释了多态的动态绑定原理,并比较了单继承和多继承下的虚表差异。最后给出了框架设计、图形绘制和支付系统等典型应用场景,以及10个常见面试问题解答。掌握多态能提升代码扩展性和可维护性,是C++面向对象编程的核心技能。

2025-09-21 18:31:01 1587 14

原创 C++后台开发工具链实战

C++后台开发工具链实战指南 本文介绍了C++后台开发所需的完整工具链,包含环境搭建和核心组件落地两大部分: 基础开发环境搭建:推荐Linux环境下使用vim+gcc/g++工具链,配合gdb调试器、cmake构建工具和git版本管理,形成高效开发基础。 核心开发组件: gflags:用于命令行参数解析,支持多种数据类型和自动帮助文档生成 gtest:Google测试框架,提供丰富的断言和事件机制,保障代码可靠性 spdlog:高性能日志库,支持多输出目标和异步日志,满足后台程序需求 文中详细介绍了各组件的

2025-09-20 18:59:16 1644 38

原创 从C++98到C++11:10个改变开发习惯的核心特性

C++11 是一次里程碑式的升级,从 C++98/03 的 10 个痛点切入,重点介绍了列表初始化、智能指针和类型推导三大核心特性。列表初始化通过统一的{}语法和 initializer_list 机制解决了初始化混乱问题;智能指针(unique_ptr、shared_ptr、weak_ptr)基于 RAII 思想彻底解决了内存管理难题;auto 和 decltype 则大幅简化了复杂类型的声明。这些特性共同使 C++ 代码更简洁、安全且高效,标志着现代 C++ 开发范式的确立。

2025-09-19 16:40:40 1379 12

原创 深入理解传输层协议:UDP 与 TCP 的核心原理与应用

本文深入解析TCP/IP协议栈中的传输层协议,重点对比了UDP和TCP的核心特性与应用场景。UDP采用轻量级设计,无连接、不可靠但高效,适合实时性要求高的场景;TCP通过确认应答、重传、流量控制等机制确保可靠性,但开销较大。文章详细拆解了端口号作用、TCP三次握手/四次挥手、滑动窗口、拥塞控制等关键技术,并针对粘包问题提出解决方案。最后指出协议选型应基于业务对可靠性和实时性的需求,为网络开发提供理论基础。

2025-09-18 21:43:52 1287 11

原创 一文吃透 HTTP:从基础到实战,读懂互联网通信的 “语言”

本文深入浅出地解析了HTTP协议的核心原理与工作机制。作为互联网通信的基础协议,HTTP通过"请求-响应"模式实现客户端与服务器的交互,具有无连接、无状态的特性。文章详细拆解了URL结构、HTTP报文格式、请求方法、状态码等核心概念,并通过C语言实现了一个简易HTTP服务器。同时梳理了HTTP从0.9到3.0的版本演进历程,重点介绍了各版本在性能与安全方面的改进。掌握HTTP的"请求-响应"基本模型、标准报文格式以及方法/状态码等核心要素,是理解现代网络通信的重要基础

2025-09-17 22:47:27 1630 9

原创 基于 TCP 协议的 C++ 计算器项目实现:从网络通信到协议封装

本文介绍了一个基于C++的TCP计算器项目,通过模块化设计解决网络编程中的核心问题。项目包含五大模块:日志系统(支持多级别日志输出)、网络通信(封装Socket API)、自定义协议(处理TCP粘包/拆包)、业务逻辑(实现计算器功能)和服务端框架(多进程处理)。项目支持加减乘除取模运算,包含完善的错误处理机制,并提供了JSON和自定义两种序列化方式。文章详细解析了各模块的设计思路和关键代码,展示了服务端和客户端的实现方式,最后提出了线程池优化、Protobuf替代等改进方向。该案例完整呈现了C++网络编程的

2025-09-17 09:31:30 1880 41

原创 继承与组合:C++面向对象的核心

C++继承机制详解:本文深入讲解了C++面向对象编程中的继承概念,包括基础语法、访问权限控制、基类与派生类对象转换、作用域隐藏问题以及派生类默认成员函数规则等核心知识点。通过丰富的代码示例,重点剖析了继承的本质是代码复用与功能扩展,详细说明了三种继承方式(public/protected/private)的权限差异,并强调了实际开发中应优先使用public继承。文章还特别提醒了继承中容易出现的陷阱,如同名成员导致的隐藏问题、对象切片转换规则等,为开发者提供了全面的继承技术指南和实践建议。

2025-09-15 16:57:22 1200 28

原创 UDP Socket 实战:用线程池实现多客户端聊天室,搞定并发与消息路由

本文介绍了如何实现一个基于UDP的多线程聊天室系统。核心要点包括:1)服务器管理在线用户列表,通过线程池并发处理消息转发;2)客户端采用双线程模式,分离收发功能实现全双工通信;3)使用互斥锁保护共享数据,确保线程安全。系统实现了消息群发功能,支持多客户端实时通信,并提出了优化方向如用户退出机制、消息可靠性等。文章提供了完整的代码实现方案,从Socket基础到并发处理,展示了UDP网络编程的核心技术。

2025-09-15 09:24:10 1375 3

原创 UDP Socket 进阶:从 Echo 到字典服务器,学会 “解耦” 网络与业务

摘要:本文介绍如何将UDP服务器改造为字典服务,实现网络层与业务层解耦。核心内容包括:1)封装Dict类加载字典文件并用哈希表存储,实现高效查询;2)使用std::function将业务逻辑与网络通信分离,UdpServer仅负责数据传输;3)可选封装Socket操作提升代码复用性。通过函数对象机制,服务器可灵活切换不同业务逻辑(如回显、查字典等),无需修改网络代码。测试表明客户端可成功查询单词翻译,为后续实现多线程并发处理奠定基础。

2025-09-14 11:05:24 1042 2

空空如也

空空如也

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

TA关注的人

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