- 博客(53)
- 收藏
- 关注
原创 【Qt】窗口
本文系统介绍了Qt窗口体系的核心概念和主要组件。首先概述了Qt窗口类的基本层级关系,包括QWidget、QMainWindow和QDialog等基础类。重点讲解了QMainWindow的五大核心组件:菜单栏(QMenuBar)、工具栏(QToolBar)、状态栏(QStatusBar)、浮动窗口(QDockWidget)和中心部件(Central Widget),通过代码示例展示了各组件的创建和使用方法。文章还简要说明了窗口与控件的关系,以及窗口的基本属性和状态控制。
2026-02-16 12:06:55
1028
原创 【Qt】常用控件
本文系统介绍了Qt框架中的常用控件分类与使用方法。内容涵盖按钮类(QPushButton、QRadioButton等)、显示类(QLabel、QProgressBar等)、输入类(QLineEdit、QComboBox等)、多元素类(QListWidget、QTableWidget等)和容器类控件(QGroupBox、QTabWidget等),以及布局管理器的使用。通过代码示例详细展示了各类控件的核心属性和功能实现,包括按钮点击响应、单选/多选功能实现、文本输入处理等。
2026-02-16 11:49:53
1230
原创 【Qt】信号与槽
本文系统介绍了Qt框架中信号与槽机制的核心概念和使用方法。首先概述了信号与槽作为Qt特有消息传输机制的工作原理,包括信号的事件抽象本质和槽函数的响应特性。详细讲解了基本使用方式,包括connect函数连接和Qt Creator可视化生成两种方法。重点阐述了自定义信号与槽的语法规则、参数传递及重载处理,并分析了多种连接方式(一对一、一对多、多对一)。最后探讨了高级用法如断开连接和Lambda表达式槽函数,总结了信号槽机制松耦合、类型安全等优势及潜在性能开销问题。
2026-02-01 23:23:50
1386
原创 【算法题】多源BFS
/ 通用框架1. 初始化:- 距离/访问数组(dist/vis):-1/False 表示未访问;- 队列q,将所有满足条件的多源起点入队,并初始化dist/vis;2. 多源扩散:while(队列非空) {取出队首节点(a,b);遍历四个方向:计算邻接节点(x,y);if(边界合法 && 未访问) {更新dist/vis = 当前节点值 + 1 / True;入队(x,y);(可选)更新目标值(如最大距离、计数等);3. 结果计算:- 最短距离类:直接返回dist数组;
2026-01-28 20:00:41
625
原创 【算法题】BFS:最短路径
BFS(广度优先搜索)是解决中最短路径问题的“黄金算法”——其“按层扩散”的核心特性(每一层对应一步距离),保证了第一次到达目标点时的层数就是最短路径长度。这一特性使其在“迷宫最短路径”“基因/单词转换最短步数”“多目标点连续最短路径”等场景中不可替代,是算法面试中最短路径类问题的首选解法。本文通过4道经典最短路径题目(覆盖网格、字符串状态两类场景),拆解BFS解决最短路径的核心框架与场景化适配技巧。
2026-01-27 14:35:01
646
原创 【算法题】BFS:FloodFill
/ 1. 定义方向向量(上下左右)// 2. BFS核心函数void bfs(网格类型& grid, 起始坐标i, 起始坐标j) {标记起始点(访问/临时字符/颜色);while(!q.pop();// 遍历四个方向k < 4;k++) {// 3. 边界检查 + 有效节点判断(未访问/目标颜色/陆地等)if(x >= 0 && y >= 0 && x < 网格行数 && y < 网格列数 && 节点有效条件) {标记节点;
2026-01-17 16:50:58
668
原创 【算法题】堆
有一堆石头,每回合选两块最重的石头粉碎:若重量相等则完全粉碎,否则剩下重量为两者差值的石头。返回最后剩下的石头重量(无剩余则返回0)。示例18-7=1→4-2=2→2-1=1→1-1=0→剩1)将所有石头重量入大根堆。当堆中元素数>1时,取出最大的两块a和ba ≥ b):若a > b,将a - b入堆;若a == b,直接丢弃两块。最终堆中若有元素则返回堆顶,否则返回0。public:// 大根堆(默认)heap.pop();heap.pop();Onlog。
2026-01-16 23:10:47
806
原创 【算法题】队列&广度优先搜索
层序遍历(广度优先搜索,BFS)是树结构最核心的遍历方式之一,核心逻辑是,通过实现“先进先出”的层级遍历特性。它不仅能解决基础的层级节点收集问题,还能扩展处理“锯齿形遍历”“最大宽度计算”“每层最大值查找”等进阶场景,是树类算法的高频考点。本文通过4道经典题目,拆解层序遍历在不同场景下的解题思路与代码实现(涵盖N叉树、二叉树的各类层级问题)。
2026-01-16 15:40:38
1050
原创 【算法题】栈
栈是一种“后进先出(LIFO)”的线性数据结构,核心优势是。在字符串处理(去重、回退、解码)、表达式计算、栈序列验证等场景中,栈能将复杂的顺序逻辑简化为直观的入栈/出栈操作。本文通过5道经典题目,拆解栈在不同场景下的解题思路与代码实现。
2026-01-15 19:51:44
781
原创 【算法题】字符串
字符串是算法面试的高频核心考点,核心考察等能力。本文通过4道经典字符串题目,拆解不同场景下的解题技巧,涵盖公共前缀查找、回文子串求解、二进制加法、大数乘法等核心场景。
2026-01-15 15:31:58
681
原创 【算法题】哈希
哈希表(哈希映射/哈希集合)是算法中解决“查找、统计、匹配”类问题的核心工具,核心优势是。它通过“键值对”的映射关系,将原本需要线性遍历的查找操作优化为常数级,广泛应用于两数之和、字符统计、重复元素判断、异位词分组等场景。本文通过5道经典题目,拆解哈希表在不同场景下的解题思路与代码实现。
2026-01-14 17:01:01
636
原创 【算法题】链表
链表是算法中最基础且高频的数据结构之一,核心难点在于(如空指针判断、指针指向更新)。常见考点包括链表的遍历、反转、合并、重排等,需要熟练掌握指针操作的逻辑,避免空指针错误和内存泄漏。本文通过5道经典链表题目,覆盖链表的核心操作与解题技巧。
2026-01-14 13:44:01
531
原创 【算法题】归并排序
归并排序是基于的经典排序算法,核心逻辑是“拆分→排序→合并”:将数组递归拆分为子数组,分别排序后再合并为有序数组。它是(相同元素相对位置不变),时间复杂度稳定为Onlogn,不仅能解决排序问题,更能高效处理“逆序对统计”“右侧元素计数”等衍生问题。本文通过4道经典题目,拆解归并排序在不同场景下的解题思路与代码实现。
2026-01-13 14:53:12
611
原创 【算法题】快排
快速排序是基于的经典算法,核心逻辑是“选基准→分区→递归处理子区间”:通过将数组切分为“小于基准”“等于基准”“大于基准”的三个部分,逐步缩小排序范围,平均时间复杂度为Onlogn。除了基础排序,快排的“分区+选择”思想还能高效解决“找第K大元素”“取最小的N个元素”等问题。本文通过4道经典题目,拆解快排思想在不同场景下的应用。
2026-01-08 01:01:05
813
原创 【算法题】模拟
模拟”是算法中最直观的解题思路之一——,不需要复杂的算法设计,但需要理清细节,处理好边界条件。本文将通过5道经典模拟题,拆解不同场景下的模拟思路与代码实现。
2026-01-06 21:12:52
673
1
原创 【算法题】位运算
位运算是利用解决问题的高效算法,核心通过:与(&)、或(|)、异或(^)、移位(<< / >>)等基础操作,将时间/空间复杂度优化到极致(通常为On时间、O1空间)。它的应用场景覆盖“位计数”“找唯一数”“数值运算”“状态压缩”等核心问题,是算法面试中高频且易掌握的考点。本文将通过9道经典题目,拆解位运算在不同场景下的解题逻辑与代码实现。
2025-12-29 23:29:17
1111
8
原创 【C语言深度解析】手把手实现字符串函数与内存函数
本文详细解析了C语言中字符串函数和内存函数的实现原理。字符串函数部分涵盖了strlen(三种实现方式)、strcpy、strcmp、strcat和strstr的实现,重点讲解了指针操作、空指针防护和'\0'处理。内存函数部分介绍了memset的实现,强调void*指针的通用性和按字节操作的特点。所有函数实现都包含核心逻辑解析和注意事项说明,帮助开发者深入理解底层原理。文章提供了完整的可运行代码,适合C语言学习者和准备技术面试的开发者参考。
2025-12-29 18:40:12
1247
1
原创 【网络】TCP 协议深度解析:从连接建立到可靠性机制
本文系统介绍了TCP协议的核心特性和工作机制。TCP作为传输层核心协议,通过三次握手建立可靠连接、四次挥手优雅断开连接。其首部格式包含端口号、序号、确认号等关键字段,支持连接管理、流量控制和拥塞控制。TCP通过确认应答、超时重传、滑动窗口等机制确保数据可靠传输,同时采用延迟应答、捎带应答优化性能。TIME_WAIT和CLOSE_WAIT状态处理连接关闭问题,而字节流特性导致的粘包问题可通过定义数据边界解决。TCP为HTTP、FTP等应用层协议提供可靠传输基础。
2025-12-25 18:57:51
2177
43
原创 【算法题】前缀和
前缀和是一种,核心思想是通过提前计算“前缀累计值”,将数组/矩阵的从暴力遍历的On优化到O1,同时也能结合哈希表解决“子数组和”等复杂问题。它的应用场景非常广泛:既可以处理基础的“多次区间和查询”,也能扩展到二维矩阵的区域和,还能结合哈希表解决“子数组和为目标值”“最长平衡子数组”等问题。本文将通过8道经典题目,拆解前缀和在不同场景下的解题逻辑与代码实现。
2025-12-25 17:16:40
895
3
原创 【算法题】二分
给定非递减排序的整数数组nums和目标值target,找出target在数组中的开始位置和结束位置;若不存在则返回[-1, -1]。要求时间复杂度为OlognO(\log n)Ologn。示例[3,4][-1,-1]通过两次二分查找找左边界:二分找第一个等于target的位置。若,左指针右移;否则右指针左移,最终左指针即为左边界。找右边界:二分找最后一个等于target的位置。若,左指针右移;否则右指针左移,最终右指针即为右边界。若左边界对应的元素不是target,直接返回。
2025-12-23 20:11:21
1123
原创 【算法题】滑动窗口 (二)
滑动窗口不仅能解决基础的子串/子数组问题,还能处理等复杂场景。本文继续介绍4道经典滑动窗口题目,覆盖“类型限制”“异位词匹配”“多单词串联”“最小覆盖子串”等核心场景。
2025-12-22 23:27:24
1113
1
原创 【网络】UDP 协议深度解析:从五元组标识到缓冲区
本文系统介绍了UDP协议的核心特性和工作机制。UDP作为轻量级传输层协议,具有无连接、不可靠和面向数据报三大特性,适用于实时音视频等对延迟敏感的场景。文章详细解析了UDP首部格式、端口号机制、数据报传输特性以及缓冲区管理,并与TCP协议进行对比,突出了UDP高效简洁的设计优势。同时指出UDP的注意事项,如64K数据长度限制和不可靠传输的应对策略,为网络应用开发提供了重要参考。
2025-12-18 08:32:17
1032
3
原创 【算法题】滑动窗口(一)
滑动窗口是处理的经典双指针技巧,核心是通过维护一个“窗口”(左右指针界定的区间),动态调整窗口范围来满足题目条件,从而高效求解问题。
2025-12-12 21:09:14
1017
7
原创 【算法题】双指针(二)
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水,返回容器可以存储的最大水量。请返回所有和为 0 且不重复的三元组(答案中不可包含重复的三元组)。,请找出并返回满足下述全部条件且不重复的四元组。,返回其中可以组成三角形三条边的三元组个数。,请在购物车中找到两个商品的价格总和刚好是。三角形条件:任意两边之和大于第三边。购物车内的商品价格按升序记录于数组。若存在多种情况,返回任一结果即可。给定一个包含非负整数的数组。先排序数组,利用三角形的。在三数之和的基础上扩展为。说明:不能倾斜容器。
2025-12-04 20:58:12
1322
3
原创 【算法题】双指针(一)
如果直接从前往后遍历复写零,会覆盖后续未处理的元素;如果用额外数组存储结果,又不符合“原地修改”的要求。如果 n 是 快乐数 就返回 true;不是,则返回 false。(因为数字的平方和范围有限,比如 3 位数的最大平方和是。将所有 0 移动到数组末尾,同时保持非零元素的相对顺序。,将每个出现的零复写一遍,并右移其余元素。编写一个算法来判断一个数 n 是不是快乐数。(最后一个0因数组长度限制无法复写)给你一个长度固定的整数数组。,不可能无限增大)。
2025-12-02 10:32:18
1265
2
原创 【网络】HTTP协议深度解析:从请求响应到Cookie/Session
本文系统介绍了HTTP协议的核心概念与应用。作为Web通信的基础协议,HTTP定义了客户端与服务器的交互规则,包括请求/响应格式、方法类型、状态码等关键要素。文章详细解析了GET与POST方法的区别,列举了常见状态码的分类与用途,并探讨了Cookie/Session解决HTTP无状态问题的机制。通过理解HTTP的工作原理,开发者可以更好地进行Web开发与调试,构建高效的网络应用。
2025-11-30 15:16:31
862
7
原创 【网络】网络基础概念:从协议分层到Socket基础
本文系统介绍了网络通信的核心原理与技术框架。首先阐述了网络的本质是实现跨主机进程间通信,其核心价值在于资源共享、分布式协作和突破地理限制。重点解析了协议分层模型,对比了OSI七层模型和实际应用的TCP/IP五层模型,说明了每层的功能与核心协议。详细讲解了网络通信的三大标识(IP地址、MAC地址、端口号)及其作用机制,并强调IP+端口号构成Socket这一关键概念。最后概述了传输层TCP/UDP协议的特性差异及适用场景,为后续网络编程奠定理论基础。
2025-11-30 10:39:13
834
2
原创 【Linux】线程同步与互斥深度解析:从锁机制到生产者消费者模型
本文介绍了多线程编程中同步与互斥的关键概念。主要内容包括:互斥量(mutex)保护临界资源的方法,条件变量(cond)实现线程有序协作,生产者消费者模型的实际应用,以及线程安全、可重入函数和死锁等核心问题。通过售票系统示例展示了未加保护的共享资源会导致竞态条件,而使用互斥量可确保数据一致性。文章还详细讲解了互斥量接口、RAII风格锁封装、条件变量使用规范等实用技术,并对比分析了阻塞队列和环形队列两种生产者消费者模型的实现方案。最后总结了线程安全与可重入的区别,以及避免死锁的实战方法。
2025-11-29 22:05:42
2898
37
原创 【Linux】线程从内核到实战:本质、控制逻辑与封装指南
本文深入探讨线程的本质与实现机制。从内核视角看,线程是共享进程地址空间的轻量级进程(LWP),Linux通过复用task_struct结构体实现线程管理。文章详细对比了进程与线程的资源分配差异,指出线程共享虚拟地址空间但拥有私有执行上下文。在内存布局方面,解析了主线程栈与子线程栈的关键区别。最后介绍了POSIX线程库的核心API,包括线程创建、终止、等待与分离等操作,并强调线程封装的最佳实践。全文从理论到实践,系统性地阐述了多线程编程的核心概念与技术要点。
2025-11-29 15:31:42
1128
2
原创 【Linux】进程信号深度解析:从中断本质到信号捕捉全流程
本文系统性地探讨了Linux系统中的信号机制及其与中断的深层关联。信号作为进程间通信的"软中断",其生命周期包含产生、保存和递达三个阶段,处理方式分为默认、忽略和自定义三种。文章从生活场景类比入手,详细解析了信号的五大触发来源(终端按键、系统命令、软件条件、硬件异常等),并深入剖析了内核中信号保存的未决与阻塞机制。通过对比硬件中断、时钟中断、软中断和异常的实现原理,揭示了信号作为用户态中断的本质特性。最后,文章还提供了信号捕捉的完整流程分析、常见陷阱规避指南以及实际应用场景。
2025-11-29 11:25:42
1302
22
原创 【Linux】进程间通信(IPC)深度解析:从管道到共享内存
本文介绍了Linux系统中两种主要的进程间通信(IPC)方式:管道和共享内存。管道包括匿名管道和命名管道(FIFO),前者仅适用于有亲缘关系的进程间通信,后者通过文件系统中的特殊管道文件实现任意进程间通信。共享内存则是将同一块物理内存映射到不同进程的地址空间,实现高效的数据共享。
2025-11-28 19:27:42
883
1
原创 【Linux】Ext 系列文件系统深度解析:从磁盘到软硬链接
本文系统介绍了Linux文件系统的核心原理,重点解析了Ext2文件系统的设计思想与实现机制。主要内容包括:文件系统概述(Ext系列发展)、磁盘硬件基础(物理结构、CHS/LBA寻址)、文件系统核心概念(块、分区、inode)、Ext2结构详解(块组设计、超级块、inode映射)、目录解析与路径查找机制。通过深入剖析inode结构、数据块分配、软硬链接区别等关键技术点,帮助读者掌握Linux文件存储管理的底层逻辑。
2025-11-28 13:19:19
1423
2
原创 【Linux】基础 IO 深度解析:文件、描述符与缓冲区
本文摘要: 文章系统介绍了Linux文件IO操作的核心概念与实现机制。从IO本质与"一切皆文件"哲学出发,详细对比了C标准库接口(fopen/fread等)与系统调用(open/read等)的使用差异。重点剖析了文件描述符(fd)的分配规则、内核文件管理模型,以及重定向机制(dup2)的实现原理。深入讲解了Linux通过file结构体和file_operations实现设备统一抽象的机制,并分析了用户级缓冲区与内核缓冲区的协同工作方式。
2025-11-27 22:28:26
1636
33
原创 【Linux】进程控制
本文系统讲解了Linux进程控制的三大核心操作:进程终止、进程等待和进程程序替换。在进程终止部分,详细分析了正常终止(main函数return、exit/_exit调用)和异常终止(信号触发)的机制与区别。进程等待部分重点介绍了wait和waitpid函数的使用方法,以及避免僵尸进程的必要性。程序替换部分解析了exec函数族的功能与底层原理。最后通过迷你Shell的实现案例,展示了进程控制技术的综合应用。
2025-11-26 16:01:38
921
1
原创 【Linux】进程概念
本文系统介绍了Linux进程概念。首先基于冯诺依曼体系结构阐明计算机硬件基础,指出进程是操作系统资源分配的基本单位。重点解析了进程控制块(PCB)的概念及其Linux实现task_struct,包含进程标识、状态、优先级等关键信息。详细阐述了Linux进程的七种状态,特别分析了僵尸进程和孤儿进程的形成机制与处理方法。深入探讨了fork系统调用的"一次调用两次返回"特性及写时拷贝技术。最后剖析了进程地址空间的虚拟化本质及其优势,包括内存保护、高效共享等特性。
2025-11-26 13:44:39
787
1
原创 【C++】C++11:其他重要特性
本文系统介绍了C++11引入的列表初始化、可变参数模板、lambda表达式、function包装器等新特性。
2025-11-17 16:39:06
1595
12
原创 【C++】C++11:智能指针
本文系统介绍了C++智能指针的设计原理和使用方法。首先分析了传统指针在异常处理时可能出现的内存泄漏问题,提出使用RAII机制通过对象生命周期管理资源的解决方案。详细讲解了标准库中的主要智能指针类型:已废弃的auto_ptr、独占式的unique_ptr、共享式的shared_ptr以及辅助性的weak_ptr,包括它们的特性、使用场景和线程安全问题。特别探讨了shared_ptr的循环引用问题及weak_ptr的解决方案,并介绍了删除器的定制化使用。最后总结了智能指针在避免内存泄漏方面的优势。
2025-11-16 21:05:15
1173
8
原创 【C++】C++11:右值引用和移动语义
本文全面讲解了C++11中的左值、右值、引用机制以及移动语义。主要内容包括: 左值和右值的定义与区别:左值是可寻址的持久对象,右值是临时表达式或字面值 引用类型:左值引用(&)和右值引用(&&)的用法及限制 移动语义:通过std::move实现资源转移,避免不必要的拷贝 引用折叠规则和完美转发机制 现代C++中的值类别分类及实际应用场景 文章通过代码示例详细演示了各种引用类型的用法,以及如何利用移动语义提升程序性能,特别是对于容器操作和资源管理类。
2025-11-15 22:08:49
1293
25
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅