自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL 基本查询

本文介绍了数据库CRUD操作的基本语法和案例,包括创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)四大类操作。重点讲解了单行/多行数据插入、条件查询、结果排序、分页显示等SELECT操作,同时演示了UPDATE修改数据和DELETE删除数据的实际应用。文章还涉及聚合函数、GROUP BY分组查询等高级用法,并通过学生成绩表等示例展示了各种SQL语句的具体应用场景。最后总结了SQL查询中各关键字的执行顺序,为数据库操作提供了全面的实践指导。

2025-07-26 21:36:53 977

原创 MySQL 表的约束

本文介绍了MySQL中常见的表约束类型及其应用场景。主要约束包括:NOT NULL(非空约束)、DEFAULT(默认值)、COMMENT(列描述)、ZEROFILL(零填充)、PRIMARY KEY(主键)、AUTO_INCREMENT(自增)和UNIQUE KEY(唯一键)。文章详细说明了每种约束的语法和使用方法,并通过实例演示了如何应用这些约束来确保数据的完整性和业务逻辑正确性。特别强调了主键与唯一键的区别、外键关系的建立,最后通过一个综合案例展示了如何在实际数据库设计中组合使用这些约束。这些约束机制能

2025-07-26 13:01:28 782 1

原创 MySQL 数据类型

而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,....最多 65535 个;如果 m 被省略,默认是 10。的参数 n 最大值是 65532/3=21844 [因为 utf 中,一个字符占用 3 个字节],如果编码是 gbk,在 MySQL 中,整型可以指定是有符号的和无符号的,默认是有符号的。表示可以存放两个字符,可以是字母或汉字,但是不能超过 2 个,最多只能是 255。: 固定长度字符串,L 可以存储的长度,单位为字符,最大长度值可以为 255。

2025-07-25 15:49:51 666 1

原创 Qt 常用控件 - 2

摘要:本文介绍了Qt中常用的控件属性和几何位置管理方法,重点讲解了geometry()和frameGeometry()的区别,以及如何通过setGeometry()和move()调整控件位置。文章还详细说明了窗口标题、图标的设置方法,并介绍了Qt的qrc资源管理机制,通过将资源编译到exe中实现路径无关的资源访问。最后展示了如何通过按钮控制目标控件移动的代码示例,以及如何创建"表白程序"这种交互效果。文章内容涵盖Qt界面开发中的基础控件操作和资源管理技术。

2025-07-25 10:22:45 878

原创 MySQL 表的操作

本文介绍了MySQL数据库表的创建、查看、修改和删除操作。创建表时需要定义列名、数据类型,并可指定字符集、校验规则和存储引擎。不同存储引擎的表文件存储方式不同。通过DESC命令可查看表结构。修改表包括添加列(ALTER TABLE ADD)、修改列定义(ALTER TABLE MODIFY)、删除列(ALTER TABLE DROP)等操作。修改表结构时需注意数据类型变更和字段删除对数据的影响。删除表使用DROP TABLE命令,会永久删除表结构和数据。这些基础操作是数据库管理的重要技能,需谨慎执行以避免数

2025-07-24 23:26:49 755

原创 服务端高并发分布式结构演进之路

本文以电商应用为例,系统阐述了服务端架构从单机到千万级并发的演进过程。初始阶段采用简单单机架构,随着用户增长依次演进为应用集群、读写分离、缓存引入、分库分表等分布式架构,最终形成微服务体系。每个阶段详细分析了面临的技术瓶颈(如数据库压力、热点数据访问)及解决方案(负载均衡、主从分离、Redis缓存等),并介绍了相关技术组件(Nginx、MyCat、Redis等)。文章强调了架构演进需根据业务需求逐步优化,分布式系统虽提升性能但增加复杂度,需平衡扩展性与运维成本。最后对分布式核心概念(集群、主从、中间件等)和

2025-07-24 21:55:59 1114 1

原创 C++扩展 --- 并发支持库(下)

本文介绍了C++11并发支持库中三种重要的锁管理工具。lock_guard采用RAII机制自动管理互斥锁,在构造时加锁,析构时解锁,确保异常安全。unique_lock功能更丰富,支持延迟锁定、尝试锁定和移动语义,提供更灵活的锁管理。std::lock函数能原子性地锁定多个互斥锁,避免死锁问题。此外,文章还讲解了std::call_once的用法,保证多线程环境下某个函数只执行一次。这些工具能有效解决多线程编程中的资源管理、死锁预防等问题,提高代码的健壮性和安全性。

2025-07-24 17:25:59 1360

原创 C++11扩展 --- 并发支持库(中)

这篇文章介绍了C++11并发支持库中的互斥锁(mutex)相关概念。主要内容包括:1. 使用std::mutex保护共享数据的示例,展示了多线程环境下不加锁会导致数据不一致的问题;2. 详细讲解了mutex、timed_mutex和recursive_mutex等互斥锁类型及其特性;3. 通过实例分析线程传参问题,说明需要使用std::ref传递引用的原因;4. 提供了使用lambda表达式简化线程传参的解决方案。文章特别强调了在多线程编程中保护共享资源的重要性,并对比了不同加锁方式的性能差异。

2025-07-23 23:35:02 728

原创 Qt 常用控件 - 1

本文介绍了Qt框架中的控件体系及其核心概念。文章首先强调了Qt已提供丰富的控件库,开发者应重点掌握如何使用这些现成控件来提高GUI开发效率。核心控件QWidget是所有控件的基类,包含通用属性如enabled、geometry、windowTitle等。文章详细分类了Qt控件(布局、按钮、视图、输入等类型),并指出Qt控件体系发展的三个阶段:从无控件到基础控件再到完整控件体系。重点讲解了QWidget的核心属性和方法,特别是enabled属性的使用示例,演示了如何通过代码动态控制按钮状态。文章还提到了QtD

2025-07-23 16:56:10 1123

原创 MySQL 库的操作

本文介绍了MySQL数据库的创建、字符集设置、校验规则及基本操作。主要内容包括:1. 数据库创建语法及大小写规范,强调关键字建议大写而标识符大小写敏感性取决于操作系统;2. 字符集(CHARACTER SET)和校验规则(COLLATE)的设置方法,通过案例演示不同规则对数据比较和排序的影响;3. 数据库基本操作如查看、修改、删除,以及使用mysqldump进行备份恢复的详细步骤;4. 连接状态查看方法(SHOW PROCESSLIST)等实用技巧。文章提供了完整的SQL示例,帮助理解MySQL数据库管理的

2025-07-23 09:36:56 919 1

原创 MySQL 数据库基础

本文介绍了数据库的基本概念、主流数据库系统及MySQL的基本使用。数据库作为数据存储管理系统,解决了文件存储的安全性、查询效率等问题。主流数据库包括SQL Server、Oracle、MySQL、PostgreSQL等,各有适用场景。重点讲解了MySQL的安装、连接、服务管理,以及数据库、表的关系和基本操作示例。文章还概述了MySQL的架构、SQL语言分类(DDL/DML/DQL/DCL)和存储引擎特性对比,指出InnoDB、MyISAM等引擎在不同场景下的优缺点。这些内容为数据库的入门使用和选型提供了基础

2025-07-23 08:50:35 737

原创 Redis 初识

Redis --- 官方。

2025-07-22 19:17:13 1105 4

原创 C++11扩展 --- 并发支持库(上)

本文介绍了C++11标准库中的线程支持功能,重点讲解了std::thread和this_thread命名空间的使用。std::thread封装了底层线程库(pthread/Windows线程API),提供跨平台的线程管理,支持函数对象、lambda表达式等多种可调用对象,相比原生API更简洁易用。文章详细分析了thread的构造函数、移动语义、join操作等特性,并对比了pthread和Windows线程创建的差异。this_thread命名空间则提供4个线程控制函数:获取线程ID(get_id)、主动让出

2025-07-22 15:02:14 995

原创 哈希扩展 --- 海量数据处理

摘要:TopK问题可以通过堆或位图解决,如10亿整数中找最大100个可用小堆或位图扫描。对于海量字符串交集问题,布隆过滤器或哈希切分是有效方法,哈希切分将相同query分配到同编号文件再求交集。处理大文件时,哈希切分后统计各小文件频率可找到最频繁或TopK的IP地址。哈希切分需注意文件不均匀问题,可二次哈希或直接处理。

2025-07-14 16:49:09 907 1

原创 哈希扩展 --- 布隆过滤器

布隆过滤器是一种高效的空间优化概率型数据结构,由Burton Howard Bloom于1970年提出,适用于海量非整型数据的快速检索。它通过多个哈希函数将任意类型数据映射到位图的多个位置,实现"可能存在"或"绝对不存在"的判断。其核心优势在于节省内存(相比哈希表/红黑树)和支持非整型数据(相比普通位图),但存在误判可能(判断存在时可能错误)且不支持直接删除。典型应用包括URL去重、垃圾邮件过滤、预防缓存穿透和数据库查询优化等。文中还提供了C++实现代码,包含三种哈希

2025-07-13 19:41:07 989

原创 哈希扩展 --- 位图

摘要:针对40亿个不重复无符号整数快速查找问题,传统方法面临内存不足的挑战。位图(Bitmap)提供高效解决方案,通过比特位标记数据存在状态,仅需512MB内存即可覆盖全部32位整数范围。位图核心操作包括set(置1)、reset(置0)和test(检测),利用位运算实现O(1)时间复杂度的查询。C++标准库提供std::bitset实现,该技术还可扩展解决统计整数出现次数、求集合交集等问题,典型如使用双位图统计元素出现频率。位图在空间效率和处理速度上具有显著优势,特别适合海量整数数据的快速检索场景。

2025-07-12 20:13:14 725

原创 二叉树算法进阶

本文总结了6个二叉树相关算法题的解法:1. 二叉树转字符串(前序遍历+括号处理)2. 二叉树的层序遍历(队列实现+记录层节点数)3. 二叉树的最近公共祖先(两种解法:子树判断/路径求交)4. 二叉搜索树转双向链表(中序遍历+指针修改)5. 根据前序/中序或中序/后序重建二叉树(递归分割区间)6. 非递归实现前中后序遍历(栈模拟递归过程)每个问题都给出了核心思路和C++代码实现,涉及递归、栈、队列等数据结构的使用,并分析了不同解法的时间/空间复杂度。

2025-07-12 15:42:02 792

原创 继承和多态扩展学习

本文深入剖析了C++菱形虚拟继承原理及其解决方案。首先通过代码示例展示了菱形继承导致的数据冗余和二义性问题,然后详细讲解了虚拟继承通过虚基表指针实现共享基类成员的机制。文章还探讨了虚拟继承带来的性能损耗,并通过内存模型分析说明了虚基表与虚函数表的区别。此外,还对单继承和多继承的虚函数表进行了深入研究,通过特殊代码强制打印虚表内容。最后总结了多态相关的重要概念和常见考察点,包括虚函数实现原理、抽象类作用等。文章指出实际开发中应避免使用过于复杂的菱形继承结构。

2025-07-11 15:23:10 1047

原创 stack_queue扩展学习 --- 计算器实现

摘要:本文介绍了计算器实现的核心思路,重点解析了中缀表达式转后缀表达式(逆波兰表达式)的算法原理。通过栈结构处理运算符优先级问题,详细阐述了转换规则和运算步骤,包括数字输出、运算符优先级比较、括号处理等关键操作。文章提供了完整的C++代码实现,涵盖中缀转后缀、后缀表达式求值两个主要功能模块,并针对LeetCode题目"基本计算器"给出了特殊处理方案(如空格去除、负数识别)。最后对比了官方简化解法,展示了不同场景下的实现策略。

2025-07-09 13:50:00 826

原创 stack_queue扩展学习 --- 反向迭代器

摘要: 反向迭代器是一种适配器,通过封装正向迭代器实现容器的反向遍历。其核心功能包括operator*(返回前一个位置的元素)、operator++(内部调用正向迭代器的--)等。SGI-STL源码中,反向迭代器通过模板参数区分普通和const版本,并利用迭代器萃取处理原生指针(如vector)与自定义迭代器(如list)的类型差异。关键设计包括: 对称性:rbegin()封装end(),rend()封装begin(),operator*访问current-1。 类型适配:通过模板参数(如Ref、Ptr)或

2025-07-08 15:05:21 650 1

原创 多路转接 epoll

摘要 本文详细介绍了Linux中的高效I/O多路复用机制epoll,对比了select/poll的不足,如文件描述符数量限制和效率问题。epoll通过红黑树管理文件描述符,使用就绪队列和回调机制实现O(1)时间复杂度的事件检测。文章解析了epoll的核心接口(epoll_create、epoll_ctl、epoll_wait)及底层原理,包括红黑树节点结构、就绪队列和回调机制。最后,通过一个简单的EchoServer示例代码展示了epoll的实际应用,并指出后续需解决的问题,如完整报文接收和多线程处理。

2025-07-02 16:40:28 797

原创 多路转接 poll

摘要:本文介绍了Linux多路转接技术中的poll系统调用,对比了其与select的差异。poll通过pollfd结构体数组管理文件描述符,解决了select的三个主要问题:输入输出参数分离、文件描述符数量无上限限制、以及使用更灵活。文章详细解析了poll的接口参数、事件类型及工作原理,并提供了改写自select的poll服务器实现代码。该服务器通过poll监控多个文件描述符,处理新连接和读写事件,展示了poll在高并发场景下的应用优势。同时指出poll仍存在线性扫描的性能问题,为后续epoll的引入做了铺

2025-06-30 23:05:51 911

原创 多路转接select

《select多路转接机制详解》摘要: select是Linux系统中实现I/O多路复用的核心机制,它允许单个进程同时监控多个文件描述符(fd)的就绪状态。其核心原理是通过位图结构(fd_set)管理最多1024个fd,分别监控读、写和异常事件。当底层数据到达(读就绪)或缓冲区有空闲(写就绪)时,select会通知调用方。该机制将"等待"与"数据拷贝"分离,通过循环检测辅助数组中的fd实现高效事件管理。虽然select解决了单进程处理多连接的难题,但存在三个主要局限:

2025-06-30 19:53:41 926

原创 非阻塞 IO

文章介绍了五种IO模型中的非阻塞IO实现方式。重点讲解了使用fcntl系统调用设置文件描述符为非阻塞模式的方法,包括获取当前标志位(F_GETFL)和设置非阻塞标志(O_NONBLOCK)的步骤。作者通过示例代码展示了如何将标准输入设置为非阻塞模式,并详细说明了非阻塞read的返回值处理:当n>0时表示成功读取,n=0表示输入结束,n<0时需要根据errno区分是真正出错(EINTR)还是数据未就绪(EAGAIN/EWOULDBLOCK)。该文为后续讲解select多路复用技术奠定了基础。

2025-06-28 23:21:34 640

原创 五种 IO 模型与阻塞 IO

本文探讨了高效IO的实现方法,重点分析了五种IO模型。核心观点指出IO操作由等待和拷贝两部分组成,提高效率的关键在于减少等待时间。通过钓鱼的比喻生动阐释了阻塞IO、非阻塞IO、信号驱动IO、多路复用IO和异步IO的特点:阻塞IO需全程等待;非阻塞IO可轮询检查;信号驱动IO由外设通知;多路复用IO能同时监控多个描述符;异步IO完全由系统完成。文章强调多路复用IO是当前服务器高并发的首选方案,并澄清了同步IO与异步IO的本质区别——是否参与IO过程。最后指出后续将重点讨论非阻塞IO和多路复用IO的实现。

2025-06-28 13:35:49 598

原创 数据链路层

文章介绍了数据链路层在网络通信中的作用,特别是以太网帧格式、MAC地址与IP地址的区别、MTU的概念以及ARP协议的功能和工作流程。数据链路层负责局域网内的数据传输,通过以太网帧进行封装,并利用ARP协议实现IP地址到MAC地址的映射,确保数据能够在网络中正确传输。

2025-06-25 18:25:34 851

原创 IP 协议

本文深入解析了TCP/IP网络层IP协议的核心原理。首先介绍了IP协议的基本功能——跨网络传输数据报,以及其与传输层TCP协议的协同工作关系。重点讨论了IP地址的组成结构(网络号+主机号)和子网划分的必要性,指出子网划分能有效提高路由查找效率。文章详细分析了IP报头各字段的作用,包括如何通过首部长度、总长度和协议字段实现报文的解包与分用。 从网络架构角度,阐述了公网与内网的区别,以及NAT技术在解决IP地址不足问题中的应用。针对数据链路层MTU限制导致的IP分片问题,文章解释了分片字段(标识、标志和偏移)的

2025-06-24 11:10:55 943

原创 我的创作纪念日

例如,在《传输层协议TCP(下)》一文中,我深入探讨了TCP协议的核心机制,从可靠传输机制(确认应答、超时重传、连接管理)到性能优化机制(滑动窗口、拥塞控制、延迟应答与捎带应答),再到异常处理策略,系统地梳理了TCP协议在网络通信中的应用。同时,我也有了一些粉丝的关注,这让我感受到了作为创作者的责任和使命,更加坚定了我持续创作的决心。

2025-06-13 20:11:52 392

原创 传输层协议TCP(下)

TCP协议机制深入解析与网络可靠性实现 本文深入探讨了TCP协议的核心机制及其在网络通信中的应用,主要内容包括: 可靠传输机制 确认应答(ACK)机制:通过序列号确保数据有序接收 超时重传机制:动态调整重传时间应对网络变化 连接管理:三次握手建立连接,四次挥手断开连接,包含TIME_WAIT状态设计 性能优化机制 滑动窗口:实现流量控制,提高传输效率 拥塞控制:通过慢启动和拥塞避免算法适应网络状况 延迟应答与捎带应答:减少网络流量,提高吞吐量 异常处理 针对网络断连、机器重启等异常情况的处理策略 TCP与U

2025-06-11 21:09:04 1024

原创 传输层协议TCP(上)

本文深入解析了TCP协议的关键机制:1. TCP报文格式详解,包括源/目的端口、序列号、确认号等核心字段;2. 通过"数据偏移"字段实现报头与载荷分离的原理;3. 确认应答(ACK)机制保障可靠传输,32位序号/确认序号实现精确应答;4. 流量控制机制通过"窗口大小"动态调整发送速率;5. 6个关键标志位(SYN/ACK/FIN/PSH/RST/URG)的功能及组合应用;6. 紧急指针实现带外数据传输。文章系统阐述了TCP如何通过序号机制、确认应答、流量控制等实现可靠

2025-05-29 19:22:35 1320 3

原创 传输层协议UDP

本文深入探讨了网络编程的传输层原理,重点分析了UDP协议的特性与实现机制。文章首先明确了传输层在网络协议栈中的位置,指出其核心作用是在发送端和接收端之间传输数据。通过对UDP协议格式的详细解析,说明了UDP报头包含的四个关键字段:源端口、目的端口、长度和校验值。文章阐述了UDP的典型特征包括无连接、不可靠但高效传输、面向数据报等特点,并分析了其适用场景。此外,还探讨了UDP的缓冲区管理机制,解释了端口号的作用原理,以及操作系统如何通过sk_buff结构体来组织和管理网络数据包。最后,文章简要介绍了基于UDP

2025-05-24 17:35:18 1190 1

原创 HTTP 协议详解

本文介绍了HTTP协议的基础知识,包括其无连接、无状态特性以及URI/URL编码规则。重点分析了HTTP请求/响应格式,详细讲解了GET/POST方法的应用场景和区别,并列举了常见的HTTP状态码和Header字段。文章通过代码示例展示了HTTP服务器的实现原理,包括静态资源处理、动态交互、Cookie/Session管理等核心功能。最后梳理了HTTP各版本的技术演进,从HTTP/0.9到HTTP/3.0的性能优化路径。内容涵盖HTTP协议从基础到实践的完整知识体系,适合作为网络开发的参考指南。

2025-05-23 22:03:42 7031 1

原创 从零实现一个高并发内存池 - 6

本文介绍了高并发内存池项目的优化与性能测试过程。项目通过三层缓存机制(线程缓存、中央缓存、页面缓存)管理内存分配,针对不同大小的内存请求采用不同的策略:小于等于256KB的内存请求通过三层缓存快速分配,大于256KB的内存请求则根据大小进一步细分处理。优化过程中,使用定长内存池替代malloc和new,减少内存碎片,提升分配效率。此外,通过基数树(Radix Tree)优化了内存映射的查找效率,实现了无锁读取,显著提升了多线程环境下的性能。最终的性能测试表明,优化后的内存池在多线程环境下表现优于传统的mal

2025-05-18 01:21:16 923

原创 从零实现一个高并发内存池 - 5

本文详细介绍了内存回收机制,重点在于线程缓存、中央缓存和页面缓存之间的内存回收流程。当线程缓存的链表过长时,会将多余的内存块批量返回到中央缓存,中央缓存再根据内存块大小将其放入全局链表供其他线程使用。为了高效管理内存块与Span的映射关系,采用`unordered_map`记录页号与Span的映射。当Span的`useCount`为0时,表示所有小块内存对象已回收,可以将其归还到页面缓存。页面缓存会尝试合并相邻的Span以缓解内存碎片问题,并通过`_isUse`标志位避免线程安全问题。

2025-05-17 01:06:02 763

原创 从零实现一个高并发内存池 - 4

本文详细介绍了高并发内存池中的PageCache层,重点阐述了其内存申请和释放的过程。PageCache作为内存池的最后一层,负责管理大块内存的分配与回收。当CentralCache向PageCache申请内存时,PageCache会检查对应的Span是否存在,若不存在则向后寻找更大的Span进行分裂。如果仍找不到合适的Span,PageCache会向操作系统申请大块内存并切分。PageCache的核心结构是基于SpanList的哈希桶,与CentralCache不同,它采用直接定址法映射,能够高效处理大块

2025-05-16 15:34:14 931

原创 从零实现一个高并发内存池 - 3

本文详细介绍了高并发内存池中的中央缓存(CentralCache)结构及其工作原理。中央缓存采用哈希桶结构,与线程本地缓存(ThreadCache)的映射关系一致,但中央缓存是共享的,需要加锁。每个哈希桶挂载一个SpanList链表,Span管理大块内存,并将其切割成小内存块对象,挂载在自由链表中。中央缓存使用桶锁,减少锁竞争。内存申请流程中,当ThreadCache内存不足时,会向CentralCache批量申请内存,采用慢开始算法控制申请数量。若CentralCache内存不足,则向PageCache申

2025-05-15 17:57:33 1047

原创 从零实现一个高并发内存池 - 2

《高并发内存池-threadcache》一文详细介绍了ThreadCache的基本结构与原理。ThreadCache基于哈希桶结构,每个桶维护一个自由链表,用于存储特定大小的内存块。系统为每个线程配备独立的ThreadCache对象,通过无锁操作提升内存分配与释放的效率。内存申请流程包括分段对齐、桶位置映射及从CentralCache获取内存块。内存释放流程则将内存块推回对应桶的自由链表,若链表过长则触发回收机制。文章还介绍了线程本地存储(TLS)在多线程环境中的应用,确保了线程间数据隔离与无锁操作。通过分

2025-05-14 20:21:29 779

原创 从零实现一个高并发内存池 - 1

本文深入探讨了C++中内存管理的重要性,并介绍了如何通过内存池技术提升程序性能。传统的内存分配方式如malloc和free在高并发场景下存在性能瓶颈,而内存池通过预先申请大块内存并在程序内部管理分配,显著提高了内存分配效率和减少了内存碎片。文章详细解析了Google的tcmalloc内存分配器,它通过线程缓存、中央缓存和页缓存三层结构优化了多线程环境下的内存分配。此外,文章还展示了如何实现一个定长内存池,并通过实验比较了传统new/delete与内存池在性能上的差异,证明了内存池在高频内存操作中的优势。

2025-05-13 19:36:14 1090

原创 进程间关系与守护进程

本文主要介绍了客户端与服务端之间的自定义协议实现及序列化处理。在前一篇中,我们实现了服务端的代码,本篇补充了客户端的实现。客户端同样需要遵循协议,并通过序列化向服务端发送请求报文,接收服务端返回的序列化应答报文,再通过反序列化获取可读的应答数据。为了实现这一功能,我们进一步完善了 Protocol 类,增加了 GetResponse 接口用于获取服务端应答,以及 BuildRequestString 接口用于构建并序列化请求报文。通过这些接口,客户端能够与服务端进行有效的通信,并处理返回的数据。此外,文章还

2025-05-11 18:24:49 905

原创 应用层自定义协议与序列化

本文主要探讨了网络协议栈的分层结构,重点介绍了应用层协议的定制与实现。通过分析TCP/IP模型,文章指出应用层协议的本质是双方约定的结构化数据。以网络计算器为例,展示了如何通过序列化和反序列化技术实现数据的结构化传输。文章详细介绍了协议层的设计,包括Request和Response类的定义、报文的编码与解码机制,以及如何解决TCP流式协议中的粘包和拆包问题。同时,文章还介绍了业务逻辑层的实现,包括计算核心和错误码体系的设计。最后,通过Jsoncpp库的示例,展示了如何在实际开发中进行JSON数据的序列化和反

2025-05-10 00:36:08 746

C++面试宝典完整版最最最新.pdf

C++面试宝典完整版最最最新.pdf

2025-05-19

包含了多个关于C++编程概念和特性的图像文件,具体内容涵盖了排序算法、内存管理、迭代器使用、拷贝构造函数等多个方面,会更新,放心

本资源集合包含了多个关于C++编程概念和特性的图像文件,具体内容涵盖了排序算法、内存管理、迭代器使用、拷贝构造函数等多个方面。以下是对每项资源的简要描述: 1. Hoare Sort (hoareSort.png): 描述了霍耳排序算法的图解,展示了递归思想在排序中的应用。 2. New and Delete (new-delete.png): 展示了带有和不带有析构函数的类在内存管理上的差异,以及编译器优化的影响。 3. C++98 Swap (C++98_swap.png): 展示了C++98标准下`std::swap`函数模板的行为,包括内存空间的交换和深拷贝与浅拷贝的概念。 4. Reverse Iterator (reverse_iterator.png): 解释了反向迭代器的概念,以及它如何指向字符串的最后一个有效字符的前一个位置。 5. Shell Sort (Shell_Sort.png): 展示了希尔排序的分组和预排序结果,说明了排序过程中的gap变化。 6. String Iterator (string_iterator.png): 等等

2024-08-23

STL中string,vector,list,queue,stack....等原码

1. 资源来源:STL 2. 资源类型: 源码:提供STL的原始代码,允许用户查看和修改STL的内部实现 3. 资源内容:描述资源覆盖的主题和内容,例如容器、迭代器、算法、函数对象、适配器等。 4. 资源适用性: 进阶学习者:适合已经有一定基础,希望深入理解STL的用户 5. 资源形式:在线文档 6.资源语言:英语

2024-08-23

空空如也

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

TA关注的人

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