- 博客(114)
- 收藏
- 关注
原创 重生之一觉睡醒开始,发现今天是七夕,开始学软件测试 概念部分(沉淀中)
文章摘要:本文主要介绍了软件需求的概念、开发模型和测试模型,重点分析了用户需求与软件需求的区别,并详细阐述了软件开发的生命周期流程。文章通过建筑案例类比,说明了软件从需求分析、计划、设计、编码、测试到运行维护的完整过程。同时,对比了瀑布模型和螺旋模型两种开发模式,指出瀑布模型适用于需求固定的小项目,而螺旋模型更适合复杂度高、风险大的项目,强调风险管理的重要性。最后,文章提示测试工作需要贯穿整个开发周期,回归测试在迭代开发中尤为关键。
2025-08-29 12:05:09
1031
原创 初触软件测试(沉淀中)
本文系统介绍了软件测试的基础概念和行业现状。首先通过购物、App使用等生活案例说明测试无处不在,指出软件测试的本质是验证产品特性是否满足用户需求。其次分析了测试岗位类型,重点区分了测试工程师与测试开发工程师的异同。然后从工作内容、技能要求等方面对比了测试与开发岗位的区别,强调测试人员同样需要掌握开发知识。最后阐述了优秀测试人员应具备的综合素质,包括沟通能力、自动化测试技术、测试用例设计能力等核心技能,以及探索性思维、责任感和抗压能力等职业素养。文章为测试初学者提供了全面的行业认知,并针对常见面试问题给出了专
2025-08-29 12:04:31
858
原创 深度剖析高性能内存池项目(沉淀中)
项目摘要 本项目实现了一个简化版的TCMalloc内存池,主要包含三层架构:ThreadCache、CentralCache和PageCache。ThreadCache采用线程本地存储实现无锁内存分配,CentralCache负责居中调度内存块,PageCache负责与系统堆交互并合并内存碎片。项目通过哈希桶结构管理不同大小的内存块,使用基数树优化页号查找性能。在测试中,该内存池在多线程环境下性能显著优于malloc。通过项目实践,加深了对内存管理、多线程编程和数据结构设计的理解,特别是哈希结构和无锁编程的
2025-08-27 17:49:13
18
原创 c++项目 高性能内存池从0到1,快来看看(沉淀中)
本项目实现了一个高并发内存池,其原型是Google开源项目tcmalloc。内存池通过预先申请大块内存并自行管理,避免了频繁调用系统malloc/free的开销,提高了多线程环境下的内存分配效率。项目采用定长内存池作为基础组件,使用自由链表管理回收的内存块,支持快速分配和释放。内存池解决了内存碎片问题,包括外碎片(不连续小内存无法满足大请求)和内碎片(对齐导致的浪费)。实现涉及C++、数据结构、操作系统内存管理、单例模式、多线程等技术,是学习高性能内存分配的优秀案例。
2025-08-27 17:48:23
152
原创 利用Qwen大模型进行c++11并发库的学习,与时俱进!!!!
本文介绍了C++异步编程的关键组件:std::future、std::shared_future、std::promise和std::packaged_task。std::future用于获取异步操作结果,std::shared_future支持多线程共享结果,std::promise用于存储值或异常,std::packaged_task包装可调用对象。文章通过代码示例演示了这些组件的使用方法,并特别对比了set_value()和set_value_at_thread_exit()的区别,强调了根据场景选择
2025-08-16 17:41:26
945
1
原创 c++11扩展(c++11并发库)
C++11并发支持库提供了跨平台的多线程编程能力。thread库封装了系统底层线程API,支持面向对象的线程管理,提供4种构造函数,最常用的是传递可调用对象和参数的版本。线程可通过join()等待结束,通过get_id()获取线程ID。this_thread命名空间提供线程控制函数,包括获取线程ID、主动让出CPU(yield)、定时休眠(sleep_for/sleep_until)等。mutex类封装互斥锁,保护临界区数据,提供lock()和unlock()接口实现线程同步。相较于原生线程API,C++1
2025-08-16 17:40:34
1002
原创 资源泄漏练习(每日一练)
本文总结了C++资源管理的常见问题。栈上对象由编译器自动释放,不属于资源泄漏;堆内存、文件句柄等需手动释放。C++11智能指针中,unique_ptr禁止拷贝,shared_ptr和weak_ptr通过引用计数管理资源,但weak_ptr不能单独使用且主要用于解决循环引用问题。这些知识点有助于避免文件未关闭、内存泄漏等资源管理问题。
2025-08-13 09:07:16
151
2
原创 每日练习(c++11)
摘要:本文包含C++11相关知识点解析和二叉树层序遍历算法题。知识点部分涉及auto关键字、范围for循环、列表初始化、final/override修饰符、默认成员函数控制及lambda表达式。算法题部分给出二叉树的层序遍历实现代码,使用队列辅助实现,将每层节点值存入二维数组。各知识点解析清晰指出常见错误,算法实现简洁高效。
2025-08-13 09:06:43
785
原创 qt项目:QQMusic下(沉淀中)
本文介绍了使用Qt框架中的QMediaPlayer和QMediaPlaylist类实现音乐播放控制功能。QMediaPlayer类支持多种音频/视频播放模式,提供了丰富的状态枚举、属性控制和方法操作,如播放控制、音量调节等。QMediaPlaylist类则用于管理播放列表,支持多种播放模式(顺序、循环、随机等)和列表操作(添加、删除、切换歌曲等)。文章详细说明了两个类的常用属性、方法、信号和枚举类型,并给出了初始化播放器和播放列表的代码示例,为音乐播放功能的实现提供了完整的技术方案。
2025-08-08 15:01:13
37
原创 qt项目:QQMusic上(沉淀中)
本文介绍了一个基于QT开发的音乐播放器项目。项目主要功能包括:窗口头部支持最小化/关闭操作、左侧菜单栏切换不同音乐页面(推荐/电台/音乐馆/本地下载等)、右侧展示对应页面内容、支持播放控制(播放/暂停/音量调节等)和歌词同步显示。界面设计采用QT Designer布局,分为head区(含搜索框和功能按钮)和body区(左侧菜单+右侧内容展示)。项目实现了音乐管理、播放控制、数据持久化(收藏和历史记录)等核心模块,通过自定义控件优化了用户体验。文章详细解析了界面布局设计和功能实现方案。
2025-08-08 15:00:15
143
原创 闭散列和开散列的练习(哈希表模块)
文章摘要(150字): 本文包含哈希表相关题目解析和链表算法题解。哈希表部分涉及平均查找长度计算(1.5)、冲突处理方法比较(开放定址法易产生聚集)、删除元素处理方式(标记法)等知识点。链表部分包含两道LeetCode题解:1)重排链表,通过线性表存储节点后重新连接;2)合并K个有序链表,使用哨兵节点简化操作,重点讲解了哨兵节点的应用场景(动态构建链表、头节点可能改变等情况)。解题时需注意循环条件处理、指针移动和剩余节点连接等细节。
2025-08-04 11:56:26
692
原创 每日练习(AVL树)
本文主要讨论了AVL树的相关概念和链表操作算法题。第一部分解析了AVL树的特性,指出AVL树是高度平衡的二叉搜索树,其平衡因子绝对值不超过1,能保持O(logN)的时间复杂度。第二部分通过选择题辨析了二叉搜索树的中序遍历特性。第三部分提供了两个链表算法题解:1)两数相加问题,通过反转链表和头插法实现;2)两两交换链表节点,采用递归方法。文章强调理解AVL树的性质和链表操作技巧对于算法练习的重要性。(149字)
2025-08-04 11:55:33
315
原创 每日练习(红黑树)
摘要: 红黑树性质:红黑树是一种近似平衡的二叉搜索树,通过颜色约束和路径黑节点数相同保证O(logn)操作复杂度,最长路径可能为最短路径的两倍(D正确)。空树视为合法红黑树,前序遍历不保证有序(A、B错误),红黑树是近似而非完全平衡(C错误)。 红黑树插入:插入操作包括O(logn)查找位置和O(1)旋转/颜色调整,总时间复杂度为O(logn)(B正确)。 红黑树实现:最左/右节点为最小/大值(A正确),头结点非必需(B错误),允许连续黑色节点(C正确),旋转不依赖平衡因子(D正确)。 AVL vs 红黑树
2025-08-01 12:04:01
968
原创 每日练习(异常)
本文解析了4道关于C++异常处理的题目。1. 指出未处理的异常可能导致程序崩溃,任何异常都应被处理;2. 说明catch捕获异常后可重新抛出;3. 强调throw抛出指针时需用指针类型捕获;4. 通过代码示例展示异常处理流程。重点包括:异常必须处理、throw/catch类型匹配、异常重新抛出机制等C++异常处理要点。
2025-08-01 12:03:17
570
原创 每日练习(map,set模块)
本文主要探讨了C++中map和set容器的特性及使用: map和set的核心区别在于map存储键值对,而set仅存储键。两者底层通常采用红黑树实现,查询时间复杂度为O(logN)。注意set不支持[]运算符访问。 map的键不可修改,但可通过自定义比较函数改变排序规则(默认升序)。map允许键值类型相同。 set具有自动去重功能,可存储对象但需定义比较规则。set元素不可直接修改,默认按升序排列。 实际应用示例展示了如何统计单词频率:使用unordered_map记录词频,通过sort自定义排序(先按频率降
2025-07-30 12:21:00
1152
原创 每日练习(二叉搜索树模块)
摘要:本文解析了4道二叉搜索树相关题目。内容涉及:1)二叉搜索树的性质(最左/右节点为最小/大值、中序遍历有序性);2)查找效率(平衡时O(logN),退化为链表时O(N));3)插入操作规则(根据节点值比较确定左右位置)。其中特别指出,二叉搜索树的结构具有唯一性,无法通过图形表示。通过选项分析,明确了各性质的具体适用条件,正确答案分别为D、B、C、A。(149字)
2025-07-30 12:20:18
309
原创 每日练习(多态)
本文主要解析了C++中关于多态性、虚函数和抽象类的10道题目。文章指出:1)多态性分为编译时多态(函数重载)和运行时多态(虚函数);2)虚函数是实现动态绑定的关键,需通过基类指针或引用调用;3)纯虚函数使类成为抽象类,不能实例化但可声明指针;4)重载、重写和重定义的区别在于作用域和继承关系。其中特别强调运行时多态不能通过模板实现,抽象类只能用于指针声明而不能实例化对象。正确理解这些概念对掌握C++面向对象编程至关重要。
2025-07-28 10:44:01
869
原创 每日练习(继承模块)
本文摘要: 子类对象大小不一定比基类大,取决于基类成员、子类新增成员和虚函数表指针等因素。 继承体现"is-a"关系(如Dog继承Animal),而"has-a"关系(如Car与Tire)应使用组合而非继承。 C++继承特性:class默认private继承,struct默认public成员;子类无法直接访问基类私有成员但实际继承。 函数重载允许同名不同参,但基类与子类同名函数会触发"同名隐藏"规则,子类函数完全隐藏基类版本。 构造/析构顺序:基类
2025-07-28 10:43:05
698
原创 每日练习(沉淀中)
本文解析了C++中的模板特化和仿函数相关知识点。在模板特化方面,详细说明了全特化和偏特化的概念,指出编译器在选择函数版本时的优先级顺序(普通函数 > 模板特化 > 模板)。在仿函数方面,分析了四个选项的正确性,指出仿函数与普通函数在性能上无本质区别,但能封装状态使代码更简洁。最后总结了模板声明和实现的规范要求,强调模板定义必须放在同一个文件中以便编译器实例化。
2025-07-25 10:19:02
837
原创 每日练习(沉淀中)
本文解析了4道编程题目:1.优先级队列(堆)的运行结果,展示了最大堆和最小堆的区别;2.STL容器特性对比,指出deque适合随机存取和首尾操作;3.迭代器失效问题,分析了vector、list和deque在删除元素时的不同表现;4.两道LeetCode题解:逆波兰表达式求值(使用栈)和数组中第K大元素(使用大顶堆)。文中提供了详细的代码实现和问题解析,重点讲解了数据结构特性和使用场景,帮助理解STL容器操作和算法应用。
2025-07-25 10:18:22
1113
原创 每日三题(沉淀中)
本文总结了三个栈相关的算法要点:1) 列表逆置操作中reverse函数的区间是左闭右开,end参数指向最后一个元素的下一个位置;2) 最小栈的实现采用辅助栈同步记录最小值,保证所有操作时间复杂度为O(1);3) 栈的压入弹出序列验证问题,通过将输入向量原地模拟栈操作,通过比较栈顶元素与弹出序列来判断合法性。三个案例分别展示了STL函数特性、栈的经典应用场景和空间优化技巧。
2025-07-23 11:11:29
317
原创 每日两题(沉淀中)
摘要:本文分享了两道算法题解法:1) 找出数组中出现次数超过一半的数字,使用哈希表统计频次后遍历判断;2) 电话号码字母组合问题,采用回溯算法生成所有可能的组合。第一题通过unordered_map记录数字出现次数,第二题建立数字-字母映射表后递归回溯求解。两题均需注意边界条件,代码中展示了核心实现逻辑和数据结构应用。
2025-07-23 11:10:55
118
原创 每日两题(沉淀中)
本文介绍了两个经典算法题的解法。第一题使用双指针法删除有序数组中的重复项,通过快慢指针遍历数组,将不重复元素前移,时间复杂度O(n)。第二题生成杨辉三角,利用二维数组动态规划,每行首尾为1,中间元素等于上一行相邻两数之和。两个题目分别考察了数组操作和动态规划思想,代码实现简洁高效。
2025-07-21 10:03:41
173
原创 每日两题(沉淀中)
本文分享了LeetCode两道关于查找只出现一次数字的题解。第一题使用哈希表统计数字出现次数,找到唯一出现一次的数字;第二题同样采用哈希表方法,但需要返回两个只出现一次的数字,使用vector存储结果。两题都利用了unordered_map的快速查找特性,并注意了其无序存储的特点。代码实现简洁高效,适用于处理类似查找唯一元素的问题。
2025-07-21 10:03:11
308
原创 每日两题(沉淀中)
本文介绍了两个LeetCode算法题解:1. 反转字符串中的单词(557题),通过双指针定位单词首尾进行局部反转;2. 找出只出现一次的数字(136题),利用异或运算特性高效求解。代码均使用C++实现,包含边界条件处理和STL容器操作说明。第一题采用逐个单词反转策略,第二题通过位运算实现O(n)时间复杂度。两个解法都体现了对问题特性的深入分析和简洁的编程技巧。
2025-07-18 10:07:54
212
原创 每日两题(沉淀中)
本文分享了两个字符串处理算法题解。第一题验证回文串,通过过滤非字母数字字符并统一大小写后双指针比较;第二题每隔k个字符反转前k个字符,使用std::reverse函数实现区间反转。文中介绍了常用的字符判断函数和大小写转换方法,并解释了std::reverse函数的用法。两个解法均采用简洁高效的处理方式,体现了字符串处理的基本技巧和标准库函数的应用。
2025-07-18 10:07:10
172
原创 每日一题(沉淀中)
本文实现了一个自定义字符串类MyString,采用深拷贝和深赋值机制。关键实现包括:构造函数动态分配内存并拷贝字符串;拷贝构造和赋值操作符实现深拷贝;重载[]、==、<<等运算符;提供长度计算和C风格字符串转换等功能。测试验证了深拷贝特性(修改原对象不影响拷贝对象)、赋值操作、比较运算等核心功能。实现中注意了内存管理(new/delete配对)、异常处理(下标越界检查)以及const正确性。代码模仿标准库string的部分接口(如c_str()),同时通过友元函数实现流输出操作。该实现展示了C+
2025-07-16 18:50:31
833
原创 6.界面优化(沉淀中)
本文介绍了Qt样式表(QSS)的基本概念和使用方法。QSS是Qt仿照CSS设计的样式系统,用于设置控件的视觉样式,包括颜色、字体、大小等属性。文章详细讲解了QSS的三种设置方式:针对单个控件设置、通过父控件设置样式影响子控件、使用全局样式统一应用。重点说明了QSS的层叠特性,当多个样式规则同时作用于一个控件时,属性会叠加生效;若出现冲突,局部样式的优先级高于全局样式。通过多个代码示例展示了设置按钮文本颜色和字体的具体操作,帮助开发者理解如何在实际项目中运用QSS实现界面美化。
2025-07-16 18:49:46
832
原创 每日两题(沉淀中)
本文介绍了两个字符串处理编程题解。第一题实现字符串转整数(atoi),处理前导空格、正负号,并通过边界值判断防止整数溢出。第二题计算最后一个单词长度,利用cin遇空格停止特性读取输入,最终输出最后一个字符串长度。两题均展示了C++中字符串处理的常见方法和注意事项。
2025-07-15 10:28:14
386
原创 5、qt系统相关
Qt事件处理机制摘要 Qt事件处理机制是应用程序响应用户操作和系统动作的核心方式。事件分为鼠标事件、键盘事件、定时器事件等多种类型,均继承自QEvent类。相比信号槽机制,事件处理提供了更底层的控制方式,适用于信号槽无法处理的特殊场景。 主要特点: 事件处理通过重写虚函数实现(如enterEvent、mousePressEvent等) 鼠标事件可以获取坐标位置和按键状态 键盘事件支持单键和组合键检测(使用Qt::Key和Qt::KeyboardModifier) 开发流程通常包括创建子类、重写事件函数、提升
2025-07-14 17:53:03
563
2
原创 4、qt窗口(沉淀中)
Qt的窗口通过QMainWindow类实现,它提供主窗口程序的布局,包含菜单栏、工具栏、浮动窗口、状态栏和中心部件。菜单栏由QMenuBar实现,最多一个,位于顶部。菜单栏通过menuBar()函数或动态创建添加,使用QMenu添加菜单,QAction创建菜单项。菜单可设置快捷键、添加子菜单和分割线(addSeparator())。示例展示了菜单栏创建、菜单项添加及事件处理的基本用法。
2025-07-14 17:52:12
837
原创 day04
本文总结了三个经典算法题解:1) 使用贪心算法和滚动数组计算斐波那契数列最接近值;2) 采用DFS搜索二维矩阵中的单词路径;3) 利用动态规划生成杨辉三角。第一题通过维护三个变量迭代求解,第二题使用深度优先搜索匹配字符,第三题通过二维DP递推构建三角形。这些题目涵盖了贪心、DFS和DP等核心算法思想,是面试中的高频考点,建议反复练习掌握解题思路和实现方法。
2025-07-13 17:25:38
273
原创 day03
文章摘要:本文总结了三个编程题解。1)字符串首字母大写转换,利用ASCII码实现字符大小写转换;2)同向双指针/滑动窗口算法求解最短子数组和问题,通过动态调整窗口边界优化时间复杂度;3)贪心算法结合优先级队列处理分鱼问题,每次取最大偶数进行操作。第三题需注意堆的使用和偶数判断。这些题目涉及基础语法、算法优化和数据结构应用,适合面试准备时反复练习。
2025-07-13 17:25:00
154
原创 day02
本文总结了三个算法问题的解法:1) 快递费用计算,使用ceil函数或条件判断实现向上取整;2) 最小花费爬楼梯问题,采用动态规划求解;3) 字符串最短距离问题,利用双指针贪心法优化。重点分析了各题的解题思路、状态转移方程和实现细节,指出需加强对动态规划和贪心算法的理解。代码示例展示了具体实现,并强调了反复练习经典面试题的重要性。
2025-07-11 13:59:28
276
原创 day01
摘要: 本文分享了三个编程题的解法:1) BC153数字统计,通过枚举和数字拆分(模10/除以10)统计区间内数字2的出现次数;2) 数组交集问题,使用哈希表(数组模拟)高效找出两数组的交集元素;3) 字符串消除问题,利用栈结构模拟相邻相同字符的消除过程。每个解法都包含核心思路、代码实现和关键注意事项,涉及枚举、哈希、栈等数据结构的使用技巧,适合作为面试准备练习题。
2025-07-11 13:58:43
253
原创 3.常⽤控件
摘要 Qt控件是GUI开发的核心组件,QWidget是所有控件的基类,提供通用属性设置。控件发展经历了三个阶段:从无控件到基础控件,再到完善的控件体系。QWidget的核心属性包括:启用状态、几何尺寸、标题、透明度、光标样式、字体、提示信息、样式表、焦点策略等。通过代码示例展示了如何禁用按钮控件(setEnabled(false))。Qt Designer和Qt Assistant提供了便捷的属性修改和文档查询功能,帮助开发者快速构建界面。控件体系的发展使GUI开发更加高效,满足多样化需求。
2025-07-09 23:40:30
983
原创 2、信号与槽
Qt信号和槽机制是Qt框架特有的消息通信方式,用于将用户交互事件与对象响应关联起来。信号是事件触发的函数(如按钮点击clicked()),槽则是响应信号的函数(如窗口关闭close())。通过QObject::connect()函数可建立信号与槽的连接,实现对象间通信。信号只需声明,槽需定义实现。开发者可通过Qt Creator可视化工具快速生成槽函数代码(命名规则为on_XXX_SSS),或在帮助文档中查询内置信号槽。该机制基于元编程自动生成信号代码,简化了事件驱动的程序开发流程。
2025-07-09 23:39:31
1098
1
原创 5、基础IO(沉淀中)
本文介绍了基础IO操作的相关概念与方法。从狭义与广义角度理解文件概念,指出文件是属性与内容的集合,所有操作最终都是进程通过系统调用实现的。文章回顾了C语言文件接口的使用,包括打开、读写文件等操作,并演示了如何实现类似cat命令的功能。同时探讨了标准输入输出流(stdin/stdout/stderr)的作用与必要性。最后提到系统级文件IO的实现方式,介绍了通过位操作传递标志位参数的方法。这些内容为理解文件IO操作提供了基础框架。
2025-07-04 17:44:27
36
原创 初识qt(沉淀中)
Qt是一个跨平台的C++图形用户界面框架,支持Windows、Linux、macOS等多种操作系统。它提供了丰富的开发工具和组件,能够高效构建桌面、移动和嵌入式应用。Qt具有跨平台性、开发效率高、内存管理简化等优点,在KDE、WPS、Skype等知名软件中均有应用。目前Qt分为商业和开源两种许可方式,版本以Qt 5为主流。开发工具推荐使用Qt Creator集成开发环境,它提供可视化设计、调试等功能,适合Qt应用开发。Qt在物联网、自动驾驶、游戏开发等领域前景广阔,相关岗位薪资可观。
2025-07-04 17:42:16
901
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人