自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【软件测试】个人博客自动化测试

对个人博客项目的所有页面进行UI自动化测试

2025-03-10 21:37:56 132

原创 【软件测试】在线交流论坛测试报告

本次测试主要从功能和界面两个方面对论坛系统进行测试。

2025-03-02 16:32:57 478

原创 【Linux】软件管理工具 yum

linux软件包管理工具 yum、yum list、yum install、yum remove,yum安装、yum搜索、yum卸载、yum clean清除缓存、yum update更新、yum list搜索 yum earch搜索

2024-07-13 19:33:57 549

原创 【Linux】权限管理与相关指令

Linux权限管理、linux用户角色、linux文件属性、linux文件权限、linux文件类型、linux目录权限、linux粘滞位、linux umask文件掩码、linux文件权限八进制数值、linux权限指令、linuxLinux -rwx的理解 linux su sudo chmod chown chgrp umask whoami file

2024-07-13 11:32:47 1223

原创 【C++】模版与泛型编程

C++模板 函数模板 类模板

2024-07-12 11:14:07 501

原创 C/C++内存管理

C/C++内存分布、栈区、堆区、常量区、静态区、malloc/free、new/delete、new[]和delete[]、operator new和operator delete、malloc/calloc/realloc与new的区别、free与delete的区别、内存泄漏、避免内存泄漏、内存泄漏检测工具

2024-07-11 11:47:22 1714

原创 【Linux】Linux基础与常用指令大全

Linux是一款开源的操作系统,Linux只是一个总称,大体上来讲,Linux分为两个生态体系,redhat和debian。商业版本以redhat为代表,开源社区版本则以debian为代表。redhat :红帽自家服务器,商用而非免费,主要针对企业市场的商业 Linux 发行版。centos :基于红帽重新封装的去掉版权信息的免费版本,专门用于用于企业和服务器。fedora :基于红帽社区支持的桌面版,里面的包是红帽的实验版本,相对较新,它在技术上领先,但不长期支持。

2024-04-11 11:31:33 1174

原创 【C++】从C到C++、从面向过程到面向对象(类与对象)

类与对象 内联inline与#define宏 引用和指针 nullptr与null auto 缺省参数 函数重载 this指针 默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载函数 取地址重载函数 const成员函数 const调用的权限方法与缩小 static成员 友元 运算符重载 构造函数初始化列表 explict关键字修饰构造函数 friend友元修饰 内部类 匿名对象 编译器对构造与拷贝构造的优化

2024-03-27 12:04:05 1046

原创 【C++】缺省参数

缺省参数是为函数的参数指定一个缺省值,调用该函数时,如果没有指定实参则采用该形参的缺省值。缺省参数分为全缺省和半缺省。

2024-03-26 15:11:25 293

原创 【C++】关键字:auto

从C++11开始,auto变成了类型指示符(之前auto并不是这个作用)。使用auto定义变量时必须对其进行初始化,在编译阶段编译器自动推导auto变量的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。return 10;auto b = a;return 0;

2024-03-11 15:02:41 470

原创 【C++】NULL值在C、C++中的歧义

在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量,但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。从定义可以看出NULL可能是0,也可能是(void*)0,但C++将NULL看做0,而C将NULL看做(void*)0,测试后也确实如此。而为了解决这一问题,C++11更新了nullptr关键字来代表指针空值。

2024-03-11 10:16:14 644

原创 【C++】传引用 VS 传值和传指针

返回变量c的引用,但是c是一个局部变量,执行完Add就将c释放了,这里的释放指的是将c所占内存还给操作系统了。比如说外出旅游住酒店,当退房后你就没有使用的权利了。引用不是新定义一个变量,而是给已存在变量取了一个别名,比如:李逵,在家称为"铁牛",江湖上人称"黑旋风"。当再次调用Add,函数栈帧复用了上一次的栈空间,原来的变量c的空间当然是还存在的,将其修改成7。前面说过引用本质是指针,那么ret其实还是指向这块栈空间的,所以访问到7了。率是非常低下的,尤其是当参数或者返回值类型非常大时,效率就更低。

2024-03-10 19:21:03 819

原创 【C++】inline内联函数 VS #define宏

内联只是向编译器发出的一个请求,编译器可以选择忽略这个请求。不同编译器关于inline实现机制可能不同,一般来说内联用于优化。inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址了,链接就会找不到。以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方。在debug模式下,展开不生效,需要对编译器进行设置才可以展开。在release模式下,默认展开生效。C++中可以用什么替代宏?inline是一种以。

2024-03-09 12:33:24 431

原创 【C++】C语言为什么不能函数重载?

C++支持函数重载的关键在于,编译时拥有独特的函数名修饰规则,编译器不同规则就不同,比如Linux下g++编译器与Windows下的vs编译器的修饰规则就不同。vs编译器的修饰规则较为复杂,g++的修饰规则更清晰(根据函数参数信息修饰)。在链接阶段,链接器会在汇编阶段产生的符号表中寻找函数的地址,然后将这个函数与其地址链接在一起,那么链接时链接器会使用什么函数名去找该函数的地址呢?不同,满足这三个条件中任意一个则构成函数重载,函数重载常用来处理实现功能类似数据类型不同的问题。

2024-03-09 12:27:12 440

原创 【nowcoder】NC132 环形链表的约瑟夫问题

NC132 环形链表的约瑟夫问题编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数,报到 m 的人离开。下一个人继续从 1 开始报数。n-1 轮结束以后,只剩下一个人,问最后留下的这个人编号是多少?

2024-03-08 12:32:15 382

原创 【nowcoder】NC248 左叶子之和

NC248 左叶子之和计算给定二叉树的左叶子之和。树上叶子节点指没有后继节点的节点,左叶子指连向父节点的左侧的叶子节点。

2024-03-07 16:56:23 414

原创 【数据结构与算法】常见排序算法(Sorting Algorithm)

C语言 冒泡排序(Bubble Sort) 快速排序(Quick Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)选择排序(Selection Sort) 堆排序(Heap Sort)归并排序(Merge Sort)hoare快速排序 挖坑快速排序 双指针快速排序 非递归版快速排序归并排序非递归版 计数排序(CountSort)

2024-03-03 11:44:37 1223

原创 【leetcode】110. 平衡二叉树

leetcode 110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

2024-02-27 12:59:36 343

原创 【leetcode】二叉树的层序遍历 144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历

144. 二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。(二叉树的深度优先遍历)94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。145. 二叉树的后序遍历 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。二叉树的层序遍历(二叉树的广度优先遍历)

2024-02-24 12:37:58 383

原创 【leetcode】226. 翻转二叉树

leetcode 226. 翻转二叉树给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

2024-02-22 12:32:24 393

原创 【leetcode】572. 另一棵树的子树

leetcode 572. 另一棵树的子树给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。

2024-02-18 12:37:23 376

原创 【leetcode】101. 对称二叉树

101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。

2024-02-16 10:28:30 428

原创 【leetcode】判断二叉树是否完全二叉树

递归方式判断二叉树是否完全二叉树层序遍历判断二叉树是否完全二叉树

2024-02-14 20:58:30 598

原创 【leetcode】100. 相同的树

leetcode 100. 相同的树给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

2024-02-13 09:03:49 480

原创 【leetcode】965. 单值二叉树

965. 单值二叉树 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。

2024-02-11 11:42:43 514

原创 【leetcode】104. 二叉树的最大深度

leetcode 104. 二叉树的最大深度给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

2024-02-09 11:18:12 381

原创 【数据结构与算法】二叉树(Binary Tree)

C语言实现二叉树 binary tree 二叉树前序遍历(二叉树的深度优先遍历) 二叉树中序遍历 二叉树后续遍历 二叉树前序中序后续遍历 二叉树层序遍历(二叉树的广度优先遍历) 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 判断二叉树是否是完全二叉树 求二叉树节点个数 求二叉树叶子结点个数 求二叉树的高度/求二叉树的深度 求二叉树第k层的节点个数 完全二叉树/满二叉树/堆heap 二叉搜索树二叉查找树二叉排序树 平衡二叉树avl树 B树 红黑树

2024-02-07 22:31:09 968

原创 【数据结构与算法】堆 / 堆排序 / TopK问题(Heap)

数据结构 二叉树 完全二叉树 堆(heap)最大堆最小堆 堆排序 TopK

2024-02-06 16:03:30 1306

原创 【leetcode】622. 设计循环队列(Circular Queue)

leetcode 622. 设计循环队列设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。计算循环队列数据个数:(rear + lgth - front) % leth。

2024-02-04 11:08:48 1193 1

原创 【leetcode】225. 用队列实现栈

225. 用队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。 注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop f

2024-02-02 12:52:55 353

原创 【leetcode】20. 有效的括号

leetcode 20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。

2024-02-01 19:18:55 502

原创 【LeetCode】142. 环形链表 II

142. 环形链表 II:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。

2024-01-31 09:48:30 382

原创 【leetcode】232. 用栈实现队列

leetcode 232. 用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你 只能 使用标准的栈操作 —— 也就是只有 push to top, p

2024-01-29 21:02:29 515

原创 【leetcode】160. 相交链表

160. 相交链表:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

2024-01-29 11:47:48 381

原创 【nowcoder】链表分割

链表分割:现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。

2024-01-27 21:40:53 412

原创 【数据结构与算法】队列(Queue)

队列是一种特殊的线性表,只允许在队尾插入数据,在队头删除数据,和日常生活中的排队一样,因此队列具有先进先出FIFO(First In First Out)的特点。队列可以用数组和链表的结构实现。使用链表的结构实现更优一些,入队列在链表尾端插入,出队列在头部删除,效率很高;如果使用数组的结构,出队列是在数组头上出数据,也就是删除数组第一个元素,效率会比较低,后面所有数据需要向前挪动。另外还有一种循环队列也可以使用数组或循环链表实现。

2024-01-26 18:28:13 416

原创 【数据结构与算法】栈(Stack)之 浅谈数组和链表实现栈各自的优缺点

C语言实现栈结构。栈是一种特殊的线性表,只允许在栈顶(Top)进行插入和删除元素操作,另一端称为栈底,栈中的数据元素遵守后进先出LIFO(Last In First Out)或先进后出的原则。栈的插入操作(Push):称为压栈 或 入栈 或 进栈,。栈的删除操作(Pop):也叫出栈 或 弹栈。

2024-01-25 10:28:35 2809 4

原创 【nowcoder】链表的回文结构

链表的回文结构:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。

2024-01-24 12:38:29 512 4

原创 【leetcode】138. 随机链表的复制

138. 随机链表的复制:给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random -

2024-01-23 10:48:01 559 1

原创 【LeetCode】21. 合并两个有序链表

leetcode 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

2024-01-23 10:47:23 441

空空如也

空空如也

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

TA关注的人

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