自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网页聊天室测试报告

待添加。

2025-04-17 23:48:14 401

原创 论坛系统测试报告

功能测试:针对不同的功能设计测试用例,要求测试用例100%通过。界面测试:测试界面设计是否与设计文档符合。易用性测试:测试界面是否易于操作,是否具备一定的引导性,是否符合用户的行为习惯。安全测试:测试能否防止SQL注入攻击,是否保护了用户隐私安全。兼容性测试:能否在windows,macOS,Android,IOS上正常运行。弱网测试:能否在2G,3G弱网情况下正常运行。本次测试总共耗时6天,共测试出了8个bug,其中0个崩溃级,7个严重级,1个次要级。

2025-04-17 17:55:08 156

原创 高精度加法与乘法

原理就是模拟我们列竖式的过程。

2025-04-06 19:12:12 211

原创 C/C++的条件编译

条件编译是指在编译阶段根据某些条件来决定是否编译某段代码。这通常通过预处理指令来实现,比如#if#ifdef#ifndef#else#elif和#endif。

2025-04-05 00:01:21 402

原创 Linux makefile的一些语法

在makefile中,变量的定义和使用非常类似于编程语言中的变量。或者表示延迟赋值,变量的值在引用时才会被展开。:=表示立即赋值,变量的值在定义时就会被展开。makeSHELL:指定使用的 shell。MAKEFLAGS:传递给make的选项。​​定义变量​​:使用或定义变量,通过引用变量。​​注释​​:以开头的行是注释,用于解释代码的作用。​​特殊变量​make提供了一些自动变量(如$@$<$^)和预定义变量(如SHELLMAKEFLAGS​​条件语句​​:使用ifeq和else。

2025-04-04 23:51:10 347

原创 Linux make 检查依赖文件更新的原理

​​时间戳机制​make主要依靠文件的时间戳(特别是修改时间 mtime)来判断依赖文件是否有更新。​​比较过程​make会获取目标文件和依赖文件的修改时间,并比较它们的大小。如果任何一个依赖文件的修改时间比目标文件的修改时间新,make会执行规则中的命令来重新生成目标文件。

2025-04-04 23:09:27 616

原创 Linux make与makefile 项目自动化构建工具

make​​makefile​​:是一个包含构建规则的文本文件,定义了如何从源文件生成目标文件以及各个目标文件之间的依赖关系。​​make​​:是一个构建自动化工具,读取makefile中的规则,并根据这些规则决定哪些文件需要重新编译或构建。通过make和makefile,你可以高效地管理和构建项目,确保每次构建都是基于最新的文件状态。

2025-04-04 23:07:05 856

原创 linux gcc

​​预处理​​:准备食材,处理#include#define等指令。​​编译​​:编写食谱,将预处理后的代码转换成汇编代码。​​汇编​​:将食谱翻译成操作步骤,生成目标文件。​​链接​​:合并多个菜谱,生成最终的可执行文件。

2025-04-04 21:53:30 972

原创 C++的IO流

水从水龙头流出,通过水管流向水槽。在这个过程中,水龙头是水的源头,水槽是水的目的地,水管则是水流动的通道。类似地,在计算机科学中,流可以看作是数据从一个源头(如键盘、文件、网络)流向一个目的地(如屏幕、文件、网络)的通道。​连续性:数据像水流一样连续不断地传输。​方向性:数据有明确的流动方向,从源头流向目的地。​缓冲:流通常会使用缓冲区来临时存储数据,以提高传输效率。在计算机中,流是一种抽象的数据通道,用于处理输入和输出操作。流可以处理各种类型的数据,包括字符、字节、文件等。

2025-03-30 18:35:26 1123

原创 C++ 类型转换

低层次的类型重新解释(如指针与整数之间的转换),不进行类型检查,用于将一种类型转换为另一种不同的类型。dynamic_cast用于将一个父类对象的指针/引用转换为子类对象的指针或引用(动态转换)。在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与。接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型。:转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换。指向的对象的实际类型。对象,这个对象包含了类型的信息。

2025-03-29 16:17:03 897

原创 C++ 特殊类的设计

,适合存放动态分配或生命周期不确定的数据(如大型对象),虽然容量更大且灵活,但分配速度较慢,且管理不当易引发内存泄漏或碎片化问题。内存中的栈区由系统自动管理,用于存储函数调用时的局部变量、参数及返回地址,其内存分配和释放通过移动栈指针快速完成,生命周期与函数绑定,超出固定大小会导致栈溢出;(delete可以禁止默认成员函数的生成,或者是禁止任何一个成员的调用)。单例模式:一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。

2025-03-29 15:05:02 493

原创 C++ 智能指针

内存泄漏是指程序在动态分配内存后,未能正确释放这些内存,导致内存资源的浪费。随着时间的推移,未被释放的内存越来越多,最终可能导致系统资源耗尽。

2025-03-28 16:54:10 1000

原创 C++ 异常

public:try {// 抛出自定义异常return 0;在这个例子中,我们定义了一个自定义异常类,并在main函数中抛出和捕获这个异常。

2025-03-26 18:23:11 559

原创 C++11 lambda与可变参数模版

比如:[=, &a, &b]:以引用传递的方式捕捉变量a和b,值传递方式捕捉其他所有变量。在块作用域中的lambda函数仅能捕捉父作用域中局部变量,捕捉任何非此作用域或者。[&,a, this]:值传递方式捕捉变量a和this,引用方式捕捉其他变量。[=]:表示值传递方式捕获所有父作用域中的变量(包括this)比如:[=, a]:=已经以值传递方式捕捉了所有变量,捕捉a重复。[&]:表示引用传递捕捉所有父作用域中的变量(包括this)[var]:表示值传递方式捕捉变量var。非局部变量都会导致编译报错。

2025-03-25 19:23:42 826

原创 C++11 右值引用与移动语义

1. 右值引用只能右值,不能引用左值。2. 但是右值引用可以move以后的左值。

2025-03-24 21:01:08 649

原创 C++11 auto decltype

允许编译器根据变量的初始化表达式自动推导其类型,无需显式指定。​基本用法 ​推导规则 ​常见应用场景 ​范围 循环: ​泛型编程: ​注意事项 避免推导为不期望的类型(如 ): 二、 关键字​作用 返回表达式 的类型,保留顶层 和引用,且不计算 的值。​基本用法 ​推导规则 ​常见应用场景 ​模板元编程:

2025-03-24 19:05:20 1120

原创 C++11中关于初始化的一些变化

特性C++98C++11​初始化语法碎片化(()push_back统一的大括号{}​构造函数支持列表不支持,需手动处理支持​窄化转换检查不检查,可能导致数据丢失严格检查,禁止窄化转换​STL 容器初始化繁琐(需push_back或临时数组)直接列表初始化​非聚合类型初始化必须显式调用构造函数支持{}调用构造函数​默认初始化安全性基本类型可能未初始化{}强制值初始化为零​聚合类定义严格(无任何构造函数)放宽(允许非静态成员初始化)

2025-03-24 18:10:58 325

原创 C++ 仿函数

是一个,它通过重载operator(),使得该对象可以像普通函数一样被调用。

2025-03-21 00:09:52 299

原创 C++ 多态

多态允许通过基类指针或引用,调用派生类对象的特定方法,实现“一个接口,多种实现”。

2025-03-20 23:51:54 863

原创 C++ 继承

基本概念​继承:允许派生类(子类)复用基类(父类)的成员,并添加或覆盖成员。​语法class 派生类名 : 访问权限 基类名 { ... };​示例public:int a;class Derived : public Base { // 公有继承public:int b;

2025-03-20 23:23:47 746

原创 C++ 模版

优点​代码复用:一份代码支持多种数据类型。​类型安全:编译时检查类型错误,避免运行时问题。​性能优势:编译时多态(如函数模板)无运行时开销。​泛型编程支持:实现通用算法(如 STL)。

2025-03-17 21:03:47 340

原创 C++ map set pair

若元素不存在,first 和 second 均指向插入该元素时应处的位置(保持有序性)。元素存在:返回的 pair 中,first 指向该元素,second 指向其后一个元素。元素不存在:first 和 second 指向相同位置,即该元素应插入的位置。若元素存在,则 first 指向该元素,second 指向下一个元素。first:指向第一个不小于 key 的元素。second:指向第一个大于 key 的元素。共同作为元素的唯一标识(需定义比较规则)。可以存储两个不同类型的值,分别通过成员。

2025-03-17 18:25:25 988

原创 C++ 类和对象 友元 内部类 this指针 默认成员函数 初始化列表……

在构造函数中初始化成员变量(效率更高,必须用于const成员)。通过虚函数实现运行时绑定(需继承和虚函数支持)。指向当前对象的指针,用于区分成员变量与局部变量。将数据和操作数据的方法绑定,隐藏实现细节。定义在类内部的类,可访问外部类的静态成员。允许新类继承现有类的成员,实现代码复用。没有名字的临时对象,生命周期仅限当前行。允许自定义运算符对类对象的操作。

2025-03-17 16:19:18 538

原创 C++ 命名空间、函数、引用、内联函数和auto关键字

​命名空间:解决命名冲突,通过namespace划分作用域。​缺省参数:简化函数调用,需从右向左设置。​函数重载:同名函数通过参数差异实现不同功能。​引用:变量的别名,避免拷贝且允许修改实参。​内联函数:优化短小函数,减少调用开销。

2025-03-17 11:01:15 427

原创 C++ priority_queue 堆

适用于需要按优先级处理元素的场景(如任务调度、贪心算法、TopK问题等)。通过更改比较函数可实现最小堆或自定义优先级规则。

2025-03-15 05:30:00 230

原创 C++ stack queue

【代码】C++ stack queue。

2025-03-15 04:45:00 284

原创 C++ list

【代码】C++ list。

2025-03-15 00:17:22 757

原创 C++ vector

【代码】C++ vector。

2025-03-14 03:45:00 668

原创 C++ string

是C++标准库中用于表示和操作字符串的类,属于<string>头文件。它封装了动态字符数组,提供丰富的成员函数和操作符重载,支持高效的内存管理和字符串操作。

2025-03-13 22:57:10 343

原创 自定义类型:结构体

C语言结构体。

2023-04-27 20:32:22 2166 15

原创 字符函数和字符串函数(三)

字符分类函数 memcpy memmove memcmp

2023-04-25 20:12:44 584 1

原创 字符函数和字符串函数(二)

strncpy strncat strncmp strstr strchr strtok strerror

2023-04-25 19:34:41 754

原创 顺序表(C语言)

顺序表

2023-04-20 20:43:36 203 3

原创 数据结构,时间复杂度与空间复杂度

1.数据结构前言1.数据结构前言算法在编写成可执行程序后,运行时需要耗费时间资源和空间内存资源。因此,即时间复杂度和空间复杂度。在计算 机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。

2023-04-14 23:04:10 82 2

原创 字符函数和字符串函数(一)

字符函数和字符串函数,strlen,strcpy,strcat,strcmp

2023-04-13 20:42:45 106 3

原创 C语言指针的深入讲解(二)(习题讲解)

C语言指针的深入讲解(二)(习题讲解)

2023-04-08 19:06:45 94

原创 指针 = 指针的问题

所以,我们可以得出一个结论,指针1 = 指针2 其实是改变指针1的指向为指针2所指向的位置。

2023-04-01 15:47:38 2816 3

原创 qsort的使用与模拟实现

qsort的使用与模拟实现

2023-03-28 18:29:51 194 2

原创 C语言指针的深入讲解(二)

C语言指针的深入讲解,函数指针 函数指针数组 指向函数指针数组的指针 回调函数 指针和数组的相关题目 指针笔试题

2023-03-27 20:45:27 267 5

原创 指针的深入讲解(一)(习题讲解)

在有了上面问题的基础之后,剩下的两个问题就很好解决了,首先是第四个代码,很明显,我想要传递什么类型的变量,我就创建一个什么类型的变量来接收他,这是没有问题的。其实啊,因为数组名代表的是数组首元素的地址,所以,对于地址加1自然就得到了数组的下一个元素,也就是arr[1]等价于*(arr+1),所以啊,我们就可以把arr[i]理解为是*(arr+i),然后呢*(arr+i)是跟*(i+arr)等价的,自然也就可以写成i[arr],所以说,在上面的代码中,int arr[]也就跟int* arr是等价的了。

2023-03-25 20:14:34 104 7

空空如也

空空如也

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

TA关注的人

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