- 博客(83)
- 收藏
- 关注
原创 MySQL数据库与表的操作
本文是一份MySQL入门指南,系统梳理了数据库的核心概念与基础操作。内容涵盖数据库的基本定义、SQL语言的四大分类(DDL/DML/DQL/DCL),以及常用存储引擎的特性对比。实操部分从库的创建、备份与恢复讲起,逐步深入到表的完整生命周期管理,包括建表、增删改查、表结构修改等日常必备技能,适合零基础读者快速建立MySQL操作的知识框架。
2026-06-29 19:46:59
776
7
原创 C++智能指针完全指南:RAII、shared_ptr/weak_ptr与线程安全
本文系统讲解C++智能指针的核心机制与实践用法。从RAII资源管理思想出发,剖析shared_ptr的引用计数原理、weak_ptr打破循环引用的方式,以及unique_ptr的独占所有权语义。重点澄清了“智能指针本身非线程安全”这一常见误区:引用计数的增减是原子操作,但所指对象的并发访问仍需外部同步。文章还涵盖make_shared的内存优化、自定义删除器、性能开销对比,以及从原始指针迁移的注意事项,旨在帮助开发者写出例外安全、内存友好的现代C++代码。
2026-06-29 19:35:37
744
6
原创 基于QQMusic项目的GUI自动化测试
本文围绕博客系统测试,设计了完整的手动、自动化及性能测试方案,覆盖登录、编辑、信息获取等核心功能,并借助日志、YAML等模块搭建了可复用的自动化框架,最终通过可视化报告验证系统稳定性和用户体验。
2026-06-22 17:31:00
760
4
原创 接口测试博客系统
这篇测试报告系统性地覆盖了博客系统的全链路质量保障,内容结构清晰,分为手动测试(登录、编辑、获取信息)、兼容性测试、自动化测试(覆盖登录、博客增删改查、用户与作者信息,并包含日志、请求、YAML及配置模块)、性能测试(单接口压测、聚合报告及TPS/响应时间/线程可视化)和最终测试报告五大板块,体现了从功能验证到系统稳定性、用户体验与性能瓶颈的完整验证思路。
2026-06-22 17:24:11
662
3
原创 C++11核心特性深度解析:从列表初始化到lambda与包装器
这篇博客系统梳理了C++11引入的多项核心新特性。内容涵盖了列表初始化的统一用法、右值引用与移动语义如何提升性能、类型分类、引用折叠、完美转发以及可变参数模板等底层机制。同时还介绍了新增的类功能、lambda表达式的语法与原理,以及包装器的使用,帮助读者全面理解现代C++编程的重要改进。
2026-06-08 22:07:12
840
6
原创 哈希表的实现
这篇博客围绕哈希表展开,前半部分讲解了哈希的基本概念,重点介绍了除法散列法、乘法散列法和全域散列法三种散列函数的原理与特点,并讨论了处理哈希冲突的常见思路。后半部分则通过链地址法的具体代码实现,展示了如何用链表解决哈希冲突,将理论与实际编码相结合。
2026-06-08 21:39:24
914
9
原创 《让Tree不再“偏科”——红黑树是怎样炼成的?》
本博客全面解析了红黑树的核心内容。首先介绍了红黑树作为一种自平衡二叉搜索树的基本概念,随后详细阐述了其必须满足的五条关键规则(如节点颜色、根节点黑色、红节点不相邻等)。文章还说明了红黑树的典型结构设计,重点讲解了插入操作的具体步骤,以及在插入过程中如何通过旋转与变色来维持红黑树规则。最后,提供了验证一棵树是否符合红黑树性质的检测方法。
2026-05-19 08:37:51
933
7
原创 从零开始手撕AVL树:详解插入、平衡因子更新与四种旋转
本博客系统介绍了AVL树的概念与完整实现。首先解释了AVL树作为一种自平衡二叉搜索树的核心特性,然后详细描述了其结构定义、插入操作及为维持平衡所需的四种旋转机制(右单旋、左单旋、左右双旋、右左双旋)。此外,还涵盖了查找、中序遍历、获取节点数与高度等基本功能,并提供了平衡性检测方法。最后附上了AVL树的完整代码,供读者参考与实践。
2026-05-19 08:28:39
894
9
原创 STL关联容器:Set/Multiset与Map/Multimap详解
这篇文章系统介绍了C++中**序列式容器与关联式容器的区别**,并重点讲解了**set**和**map**两大关联式容器。内容涵盖:set与multiset的差异、map的构造与接口(包括迭代器、容量、修改操作、查找以及`operator[]`的用法),最后总结了multimap与map的主要区别。适合用于快速掌握关联式容器的基本使用与特性对比。
2026-05-11 20:30:11
974
9
原创 二叉搜索树:数据世界的“快速寻路指南”
这篇文章系统介绍了**二叉搜索树**的核心概念与实现。内容涵盖:二叉搜索树的定义、插入、查找、删除操作的原理与性能分析,并提供了节点定义、类结构及完整代码示例。此外,还区分了 **key** 与 **key/value** 两种使用场景,补充了拷贝构造、赋值运算符重载和析构函数的实现,适合用于理解基础数据结构及其实际应用。
2026-05-11 20:21:07
1109
5
原创 多态:让代码拥有“千变万化”的能力
这篇文章围绕C++中的**多态**核心机制展开,首先介绍了多态的基本概念及其定义与实现方式,随后深入讲解了协变、析构函数的重写、override与final关键字的使用,以及纯虚函数和抽象类。在原理部分,重点分析了虚函数表指针、多态的实现机制、动态绑定与静态绑定的区别,以及虚函数表的内部结构。
2026-05-04 10:49:18
1021
8
原创 继承,一场跨越时空的对话
这篇文章围绕C++中的**继承**机制展开,重点总结了继承中的关键作用域规则、派生类的默认成员函数行为、继承与友元及静态成员的关系、多继承尤其是菱形继承带来的二义性问题,并提到I/O库中如何应用菱形虚拟继承来解决该问题,最后对比了继承与组合的适用场景。
2026-05-04 10:36:26
982
9
原创 C++进阶:模板深度解析与继承机制初探
本文深入探讨了C++模板的高级特性,包括非类型模板参数、模板特化(全特化与偏特化)以及可变参数模板,揭示了模板在编译期多态与代码复用中的强大能力。同时,文章初步引入了继承机制,重点分析派生类与基类在构造、析构、成员访问及作用域覆盖等方面的交互规则,为理解面向对象的多态性与代码复用奠定基础。
2026-04-20 19:35:09
906
6
原创 C++ 容器适配器揭秘:stack, queue 和 priority_queue 的模拟实现
本文揭示 stack、queue 和 priority_queue 作为容器适配器的本质——它们并非独立容器,而是通过对底层容器(如 deque、vector)进行接口封装与限制,实现特定数据结构行为。文章模拟实现了三种适配器,重点展示了 priority_queue 如何结合堆算法管理优先级,并探讨了底层容器的选择对性能与灵活性的影响。
2026-04-20 19:23:55
876
4
原创 C++ std::list 完全指南:从入门到精通所有接口
这篇文章系统介绍了 `list` 容器的接口功能,涵盖了从对象的构造与赋值、迭代器的使用、容量查询、元素访问,到内容的修改、特殊操作(如合并、排序、去重等)以及相关的非成员函数。
2026-03-17 16:25:50
1037
8
原创 透过源码看本质:list 的模拟实现与核心原理
这篇文章主要分为两部分:第一部分简要介绍了STL(标准模板库)的源码;第二部分则详细讲解了如何模拟实现 `list` 容器,涵盖了其核心成员变量、各种构造函数(默认、拷贝、初始化列表)、赋值运算符重载、迭代器的操作(如插入、删除、清空)以及析构函数等关键功能的实现步骤。
2026-03-16 21:00:29
1056
8
原创 探寻STL的智慧:为何有明显缺点的deque会被选为默认底层容器?
这篇文章全面介绍了C++ STL中stack、queue和deque的核心接口与底层原理。文章首先列举了stack和queue的常用操作(如构造、元素访问、大小查询、插入删除等),随后重点剖析了deque作为容器适配器的设计原理,包括其构造方式、接口函数以及底层实现机制,帮助读者深入理解这三种容器的功能特性和应用场景。
2026-03-09 16:46:59
1389
2
原创 从零实现C++ Vector容器
这篇文章简要介绍了C++中vector容器模拟实现的核心知识点,涵盖了从成员变量定义、构造函数、基本操作(如push_back、pop_back、reserve、resize等)到迭代器支持、插入删除、赋值与拷贝构造等关键函数的实现要点。适合用于理解vector底层机制和自定义容器设计的入门参考。
2026-03-09 16:45:40
880
原创 从构造到操作:全面掌握 C++ std::vector 的接口使用
本文系统地解析了C++标准库中vector容器的核心接口与应用。文章详细阐述了vector的构造函数、赋值运算符重载、迭代器机制、容量管理、元素访问方式及修改操作,并介绍了友元函数在vector中的使用场景。针对二维数组这一难点,本文深入剖析了C++中二维数组的底层逻辑,并与C语言中动态开辟二维数组的方法进行对比,帮助读者理解两种语言在处理多维数据时的异同与优劣。通过本文的学习,读者能够全面掌握vector的基本用法,并深入理解其在复杂数据结构中的应用。
2026-03-02 19:55:09
1172
7
原创 C++ string 全面指南
本文系统地介绍了C++中的模板机制与STL标准模板库,并深入剖析了String类的核心接口。文章首先阐述了函数模板的定义、工作原理、实例化过程及参数匹配原则,并拓展至类模板的应用,为泛型编程奠定基础。随后简要介绍了STL的架构与价值。最后,重点解析了String类的构造函数、迭代器、容量管理、元素访问、修改操作及非成员函数,全面覆盖了字符串处理的关键技术。本文旨在帮助读者夯实C++泛型编程基础,并熟练掌握String类的使用。
2026-03-02 19:49:27
1367
11
原创 深入理解string:通过模拟实现探讨其内部机制
这篇文章深入探讨了C++标准库中`std::string`的底层实现机制。通过模拟构建一个简化版`string`类,文章核心剖析了其动态内存管理策略(构造、析构、扩容)、核心操作的实现原理(深拷贝解决浅拷贝问题、运算符重载、增删查改)以及迭代器的底层封装,旨在帮助开发者从代码层面理解`string`的高效运作方式。
2026-02-23 20:43:19
1354
15
原创 C++对象模型与内存管理深度解析:从构造、友元到拷贝优化
本文深入探讨了C++核心机制在底层的内存布局与性能影响。文章首先剖析了构造函数、析构函数和拷贝控制(拷贝/移动构造)的实际调用时机及其对内存资源的管理策略;其次,解释了友元如何打破封装性以直接操作对象私有内存;最后重点分析了编译器在返回值优化(RVO)和拷贝省略方面的现代优化技术,旨在帮助开发者编写更高效的C++代码。
2026-02-23 20:05:03
4187
11
原创 C++类深度剖析:从定义到六大默认成员函数,一篇就够了
本文系统地介绍了C++面向对象编程的核心——类的相关知识。内容涵盖类的定义格式、访问限定符与类域;详细讲解了类的实例化概念及对象内存大小的计算;深入剖析了this指针的工作原理;全面阐述了类的六大默认成员函数,重点包括构造函数、析构函数、拷贝构造函数;并介绍了运算符重载,特别是赋值运算符重载的实现。最后,通过日期类的实际案例综合运用所学知识,并讲解了const成员函数及取地址运算符重载。
2026-02-17 14:48:25
1447
15
原创 C++核心语法入门:从命名空间到nullptr的全面解析
内容涵盖C++相较于C语言扩展的关键特性,包括:命名空间(解决命名冲突)、C++标准输入输出(cin/cout)、缺省参数(默认参数)、函数重载(同名函数不同参数)、引用(变量别名及其特性、使用场景、const修饰)、引用与指针的对比、内联函数inline(优化函数调用开销),以及空指针nullptr的使用。
2026-02-17 14:45:23
1378
8
原创 深入理解五种I/O模型
五种I/O模型揭示了网络通信效率演进的核心逻辑:从完全阻塞等待到真正异步处理,本质是应用程序与内核数据交互方式的不断优化。其中多路复用模型通过单线程监控大量连接,在实际高并发系统中取得了性能与复杂度的最佳平衡,而真正的异步I/O则代表了未来方向。理解这些模型的区别,是构建高性能网络应用的根基。
2026-02-10 20:25:28
1485
17
原创 从地址转换到点对点直连:详解NAT、代理、穿透与打洞
在复杂的网络环境中,从传统的地址转换(NAT)技术到实现高效的点对点(P2P)直连,是一场关于连接、中转与突破的技术演进。本文深入剖析了NAT如何隔离内网与公网,代理服务器如何扮演中介角色,以及如何在层层限制下通过NAT穿透与“打洞”技术,让两台处于不同私有网络后的设备建立直接通信。从理论到实践,它揭示了现代网络通信中,如何巧妙地将障碍转化为通道,最终实现高效、低延迟的直接数据交换,为实时音视频、在线游戏、文件传输等P2P应用奠定基础。
2026-02-10 20:22:35
1493
19
原创 局域网通信基石:ARP协议与MAC帧详解
局域网通信的核心是:ARP负责查询地址,MAC帧负责按址送货。• ARP协议是“地址查询员”。它通过广播询问,将目标的IP地址转换成其物理MAC地址,解决“找谁”的问题。• MAC帧是“标准快递袋”。它用获取到的MAC地址封装数据,确保在物理链路上精准投递,解决“如何送”的问题。二者紧密配合,构成设备在本地网络直接对话的基石。
2025-12-29 15:20:04
2064
19
原创 TCP可靠传输深度解析:连接、流量与拥塞的协同艺术
TCP的可靠传输,是一场连接、流量与拥塞控制的精妙“三重奏”。它以三次握手/四次挥手管理连接的生命周期,奠定对话基础。通过滑动窗口实现收发双方的速度匹配(流量控制),防止数据淹没接收方。同时,凭借慢启动、拥塞避免等算法感知并适应网络拥堵(拥塞控制),避免引发全局瘫痪。三者并非独立,而是通过“窗口”这一核心变量动态协同:拥塞控制决定全局发送上限,流量控制在此上限内进行微调,共同保障了数据在不可靠的网络中既可靠、又高效地传输。这正是一种在复杂环境中寻求动态平衡的协同艺术。
2025-12-29 15:08:55
1926
16
原创 一文读懂IP协议:网段、私有IP、公网IP与分片技术
IP协议是网络通信的基石,它如同互联网世界的“通用邮政系统”。其核心使命是在复杂的网络环境中实现主机之间的逻辑通信。通过为每台设备分配唯一的IP地址,IP协议解决了网络中的寻址问题。同时,它负责将数据包从源主机经过多个路由器的转发,最终送达目标主机,这个过程被称为路由。值得注意的是,IP协议本身提供的是“尽最大努力”的无连接服务,它不保证数据包的可靠送达、顺序或完整性。
2025-12-01 09:26:30
2116
22
原创 解码TCP:如何实现可靠的数据传输
TCP是互联网核心协议之一,工作在传输层,为应用程序提供可靠的、面向连接的通信服务。TCP具备三大核心机制:1. 连接管理:在数据传输前通过“三次握手”建立稳定连接,传输结束后通过“四次挥手”妥善断开连接。2. 可靠传输:采用确认应答、超时重传、序列号等机制,保证每个数据段都能准确送达,并能处理丢包、重复和乱序问题。3. 流量控制与拥塞控制:通过滑动窗口机制调节发送速率,既避免接收方过载,也防止网络出现拥堵,从而保障整体网络的健康与稳定。TCP被广泛应用于网页浏览、文件传输等需要数据完整性的场景中。
2025-12-01 09:26:05
1965
28
原创 用户数据报协议(UDP)详解
UDP(用户数据报协议) 是一种核心的网络传输协议,与TCP相比,它以其简单性和高速性著称。它的工作方式非常简单:直接将数据打包成数据包并从源端发送到目的端,不建立连接,也不提供任何可靠性保证。这意味着它不确保数据包能否到达、是否按序到达或是否重复。正因如此,UDP的开销极小、延迟低、速度快。它非常适合那些更看重传输速度和实时性,而可以容忍少量数据丢失的应用。
2025-11-24 13:28:54
2357
22
原创 HTTP协议核心机制解析
HTTP(超文本传输协议) 是一个无状态的客户端-服务器协议。通常,由Web浏览器等客户端向服务器发起请求,服务器则返回相应的响应,如HTML页面、图片或数据。HTTP协议的核心在于其简单直观的请求/响应模型。由于其无状态的特性,每个请求都是独立的,服务器不会保留之前请求的任何信息。为了构建复杂的交互式Web应用,人们在此基础上发展出了像Cookie/Session等技术。简单来说,HTTP就像是在互联网上传递信息的“通用语言”,确保了浏览器和服务器能够相互理解,从而让我们能够浏览网页。
2025-11-24 13:26:27
1771
29
原创 自定义协议、序列化与守护进程:构建可靠后端服务
本文系统地阐述了构建稳健网络应用的三个核心实践。首先,自定义应用层协议通过定义消息格式与规则,确保了通信两端的有序交互。其次,序列化/反序列化技术将结构化数据转换为便于网络传输的字节流,是实现数据交换的关键。最后,守护进程作为后台运行的服务实体,保障了应用的持续可用性。三者相辅相成,共同构成了开发高性能、高可靠性分布式系统与服务的基础。
2025-10-27 16:40:21
2803
50
原创 Socket编程核心概念详解:IP、端口、TCP/UDP与网络字节序
本文深入解析了Socket编程的四大核心基石:IP地址负责在网络中唯一标识一台设备;端口号则在该设备上标识具体的应用程序进程。TCP和UDP是两种主要的通信协议,前者提供可靠、面向连接的传输,后者则提供高效、无连接的传输。最后,网络字节序(大端序)是不同系统间数据通信时必须遵守的统一格式规则,确保了数据的正确解读。掌握这四者,是理解和编写任何网络应用程序的基础。
2025-10-20 15:53:28
3193
49
原创 网络协议分层:解密TCP/IP五层模型
本文系统地阐述了网络通信的核心概念。协议是设备之间为完成通信而建立的共同规则和标准。TCP/IP协议族是互联网的实际通信标准,其核心功能(如封装、寻址、路由)通常作为服务集成在操作系统内核中,是OS不可或缺的组成部分。网络传输的基本流程则遵循“分层封装”与“逐层解封装”的模型,数据从应用层出发,经过传输层(如TCP段)、网络层(IP包)、网络接口层(帧)的包装,通过物理媒介传输,最终在目标设备被逆向拆解,送达目标应用程序,从而完成一次完整的通信。
2025-10-13 17:05:58
2898
57
原创 Linux之线程池
线程池是提升Linux程序性能的利器,它通过复用固定数量的线程来处理异步任务。但其核心的“生产者-消费者”模型(任务队列 + 工作线程)也潜藏着死锁风险。主要风险源于任务间的隐式依赖。当一个任务(Task A)的执行结果依赖于另一个任务(Task B)时,如果所有线程都在等待类似Task A的依赖任务完成,而Task B因线程耗尽而无法被调度执行,整个线程池就会陷入相互等待的僵局,即池-induced死锁。
2025-09-29 20:03:19
3612
48
原创 线程互斥与同步
本文核心在于阐述多线程编程中解决资源竞争与协作执行的两种基本机制:互斥(Mutex) 与 同步(Synchronization)。互斥:解决对共享资源的竞争访问问题。其核心是“独占”,通过互斥锁(Mutex) 等机制,确保一个线程在访问临界区(共享资源)时,其他线程必须等待,从而防止数据损坏。同步:解决线程间的协作执行顺序问题。当线程需要等待某个条件成立(如数据就绪)才能继续时,需使用条件变量(Condition Variable) 等机制。
2025-09-22 13:56:10
2595
43
原创 线程概念,控制
线程是程序内部的一个独立执行流,是CPU调度的基本单位。它共享进程的大部分资源(如内存),但拥有独立的运行时状态(如栈和寄存器)。线程控制主要包括其创建、执行、同步和销毁。通过互斥锁、信号量等同步机制,解决多个线程并发访问共享资源时可能引发的数据不一致问题,确保程序正确、高效地并发运行。
2025-09-15 16:44:17
2922
51
原创 并发编程的守护者:信号量与日志策略模式解析
信号量、日志与策略模式是构建稳健软件的三大支柱。信号量作为核心同步机制,通过计数器管理多线程对共享资源的访问,有效解决竞态条件,确保数据一致性。日志提供了系统运行的审计追踪,记录状态、警告与错误,是诊断问题和分析行为的关键。策略模式是一种设计模式,它将算法(如不同的日志策略或同步策略)封装成独立对象,使其能相互替换,从而提升系统的灵活性与可扩展性。三者协同工作,共同保障了程序的并发安全、可维护性与可适应变化的能力。
2025-09-08 17:16:44
2672
55
原创 深入Linux内核:IPC资源管理揭秘
在现代操作系统中,进程间通信(IPC, Inter-Process Communication)是实现多进程协同工作的基石。System V IPC 机制是Unix/Linux内核中一套经典且强大的进程间通信工具,主要包括消息队列(Message Queues)、信号量(Semaphores) 和共享内存(Shared Memory)。本文旨在对消息队列和信号量的核心概念进行阐述,并深入剖析内核统一管理这些IPC资源的机制。
2025-09-01 19:25:35
2547
57
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅