自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 问卷系统自动化测试报告

本次对“问卷考试系统”的测试工作已顺利完成,测试范围全面覆盖了系统前台与后台的核心功能模块。测试重点集中于系统首页的用户信息展示与数据概览功能、题型中心复杂的拖拽交互与富文本编辑功能、问卷答题页面的输入验证与提交流程,以及题库管理后台的多条件筛选、数据列表与编辑操作。从测试结果来看,系统各主要流程运行基本顺畅。首页的核心信息与导航跳转逻辑正确;题型编辑器的拖拽添加、排序及组件操作功能完整,体现了良好的交互设计;答题页面对手机号码的格式、必填项验证严格且提示清晰,有效保障了数据收集的准确性;

2025-09-13 09:29:49 1061

原创 商城购物系统自动化测试报告

商城购物系统立足于数字经济时代背景,是零售业数字化转型的典型实践。随着互联网基础设施的完善和移动支付的普及,线上购物已成为社会主流消费方式。该项目旨在构建一个连接商家与消费者的高效线上平台,其核心意义在于突破传统零售的时空与地域限制,为中小型企业提供低成本、广覆盖的销售渠道,大幅降低运营成本。对消费者而言,则能享受到无与伦比的便捷性、丰富的商品选择及个性化的购物体验。

2025-09-12 17:02:11 1239

原创 Linux_进程间关系与守护进程

当我们客户端登陆Linux的时候会向Linux服务器发送请求,当Linux服务器收到请求会在系统中创建一个终端文件和一个bash进程(也是一个进程组,为我们提供命令行解析的服务),并将该文件与bash进程相关联。在系统层面上,创建终端文件和bash进程我们叫做构建了一个会话。会话可以看成是一个或多个进程组的集合,一个会话可以包含多个进程组。每一个会话也有一个会话 ID(SID)。进程组,无论是前台还是后台,都属于同一个会话。

2025-03-01 14:19:52 864

原创 Linux_线程同步&&生产者消费者模型

生产者消费者模型(Producer-Consumer Model)是一种经典的多线程同步问题,用于描述两个或多个线程之间共享有限资源的场景。在这个模型中,生产者负责生成数据并将其放入缓冲区(Buffer),消费者则从缓冲区中取出数据并消费。生产者和消费者通过缓冲区进行通信,但它们的执行速度可能不同,因此需要通过同步机制来协调它们的行为。

2025-01-30 19:57:20 1110

原创 Linux_线程互斥

代码这里使用多个线程共同执行上面的方法,代码很简单。但是运行结果怎么出现了负数?等于0不就直接break了吗?当我们执行上述代码时,每个线程都要这样执行上面的逻辑,但。由于ticketnum--操作不是原子的(即,将ticketnum的值移动到CPU,CPU做运算,再将结果写回内存。共三步)。当一个线程正走到以上逻辑的第二步时,正准备判断,此时这个线程被切换了,一旦被切换,当前线程在寄存器中数据都会保存下来,等在被切回来的时候,再恢复!当票数为1时,a线程会做判断,符合逻辑进入if,走到usleep语句。

2025-01-27 10:53:12 1092

原创 Linux_线程控制

之前我们已经认识到了用来创建线程,这里不再赘述。

2025-01-25 14:26:27 799

原创 Linux_线程概念

既然要谈为什么要有虚拟地址和页表,那我们就假设没有虚拟内存和分页机制,这样的话,每⼀个用户程序都会直接映射到物理内存上,并且所对应的空间是连续的。而我们运行的程序不可能都是一样的,因为每一个程序的代码、数据长度都是不一样的,如果按照这样的映射方式,物理内存将会被分割成各种离散的、大小不同的块。表中的物理地址,与物理内存之间,是随机的映射关系,哪里可用就指向哪里(物理页)。处理器在访问数据、获取指令时,使用的都是线性地址,只要它是连续的就可以了,最终都能够通过页表找到实际的物理地址。下面以一个逻辑地址为例。

2025-01-21 10:58:07 1123

原创 Linux_信号

信号是进程之间事件异步通知的一种方式,是一种软中断。标准信号:编号为1-31之间都是标准信号,这些都是预定义信号,用于通知进程发生的各种事件。实时信号:编号从32开始起均是实时信号,与标准信号相对应。当OS收到相关信号时,要通知相应的进程,但是当前进程可能正在做着别的事情,没空处理这个信号。此时就要记录下来该信号,那么如何记录呢?普通信号的编号是从 1 - 31,并没有0号信号,我们将0号位置作为来记录信号。所以就是OS修改目标进程的PCB中的信号位图:0 ->1。

2025-01-15 21:13:53 1199

原创 Linux_进程间通信_共享内存

物理内存中的这块空间,就叫做共享内存。优点:方便、接口简单、加快程序效率、不要求进程有“血缘”关系。缺点:没有提供同步机制,需要借助其他手段进行进程间同步工作。共享内存可以快于消息传递,但有高速缓存一致性问题。

2025-01-10 20:08:53 1123

原创 Linux_进程池

进程池是一种创建和管理进程的技术,它可以有效地控制同时运行的进程数量,从而提高程序的效率和性能。预先创建一定数量的进程,并将这些进程放入一个池中。当有新的任务到来时,进程池会分配一个空闲的进程来处理这个任务。任务完成后,进程不会关闭,而是返回池中等待下一个任务。这种方式避免了频繁创建和销毁进程的开销,同时也限制了同时运行的进程数量,防止操作系统过载。

2025-01-04 11:49:53 616

原创 Linux_进程间通信_管道

管道是Unix中最古老的进程间通信的形式。我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”who和wc是两个不同的命令,执行时成为两个进程,这两个进程为兄弟关系。

2024-12-30 21:42:45 749

原创 Linux_进程终止_进程等待_进程替换

我们在使用fork()系统调用之后,创建出来的子进程是对父进程的复制,也就是说子进程和父进程执行的是相同的程序,虽然说父子进程可能执行的是不同的代码分支(if else语句),但是程序流程是一样。所以我们要想让新创建的子进程中执行其他程序,就需要子进程调用一种exec函数来达到执行另一个程序的目的。当进程调用一种exec函数的时候,该进程的用户空间代码和数据全部被新程序替换掉,从新程序的启动例程开始执行。需要注意的是,调用exec并不会创建新进程,而是一种进程替换。

2024-10-23 19:19:57 784

原创 Linux_进程概念详解(续)_命令行参数_环境变量_进程地址空间

简单总结一下地址空间的本质就是struct mm_struct,上述所有内容都是由OS系统自动完成的。我们知道在进程PCB中有一个指针指向mm_struct,所以只要把PCB管理好了,mm_struct就管理好了。最后再问大家一个问题:为什么全局变量、字符常量等具有全局性,在整个程序运行期间都会有效?原因就是这些数据在地址空间中,随着进程一直存在!而其地址,可以被大家一直看到。

2024-10-13 10:53:51 1322

原创 Linux_进程概念详解

课本上说,进程是程序的一个执行实例,正在执行的程序。对,也不对,我称之为正确的废话。进程 = 内核数据结构 + 代码和数据。为什么这么说呢?请接着往下看。

2024-10-09 11:32:51 857

原创 C++_智能指针详解

什么是智能指针?为什么要有智能指针?到目前为止,我们编写的程序所使用的对象都有着严格定义的生命周期。比如说,全局对象在程序启动时分配,在程序结束时销毁;再比如说局部static对象在第一次使用前分配,在程序结束时销毁......除了这些对象,C++还支持动态分配对象。动态分配的对象的生命周期与它们在哪里创建无关,。如果不显式地释放,则很有可能造成内存泄漏!!而动态对象的正确释放是编程中最容易出错的地方,所以C++引入了智能指针的概念,来帮助我们编程人员更好的释放。

2024-10-04 20:51:25 1250 1

原创 C++11_可变参数模板

在C++98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。比如说,我想在某宝买一件商品,我想买该商品价格最便宜的哪一个,这就需要对价格排升序;我如果想买性价比最高的,就需要按照综合进行排降序...但随着C++语法的发展,有人开始觉得上面的写法太复杂了,每次为了实现一个algorithm算法,都要重新去写一个类(),如果每次比较的逻辑不一样,还要去实现多个类,特别是相同类的命名,这些都给编程者带来了极大的不便。因此,在C++11语法中引入了lambda表达式。

2024-10-03 09:43:26 988

原创 C++11_左值引用与右值引用

在C++11之前,是没有右值引用的概念的,在C++11之后才新增了右值引用。其实无论是左值引用还是右值引用都是给对象取别名。

2024-10-01 17:24:47 1021 3

原创 C++_unordered系列关联式容器(哈希)

unordered系列关联式容器,我们曾在一文中浅浅的提了几句。今天我们来详细谈谈本身在C++11之前是没有unordered系列关联式容器的,unordered系列与普通的map、set的核心功能重叠度达到了90%,他们最大的不同就是底层结构的不同,map和set的底层使用的是红黑树;unordered底层是用的hash结构,两者在使用上基本上没有什么不同,map和set使用方法那一套在unordered系列容器同样试用,这里不再赘述。本篇文章主要讨论一些哈希相关知识。

2024-09-28 17:02:26 978

原创 红黑树详解

红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。

2024-09-26 19:52:52 1080 1

原创 C++_map_set详解

set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格的排序准则(默认是小于)进行排序。set在底层是用二叉搜索树(红黑树)实现的。map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。

2024-09-16 17:46:36 1365

原创 C++_多态详解

定义:即被virtual修饰的类成员函数称为虚函数。

2024-09-06 17:55:31 764

原创 C++_继承详解

复用。

2024-09-05 17:30:23 868

原创 深度解析C++重载、隐藏、重写

从定义上看隐藏包含着重写,即重写是一种特殊的隐藏,只要两个基类和派生类的同名函数不构成重写,那么它就是隐藏;而重载与 隐藏和重写 最大的区别就是两个函数是不是在同一个作用域。

2024-07-10 11:34:54 255

原创 C++_STL---priority_queue

更多关于priority_queue的详细内容,请点击。

2024-07-04 21:16:05 533

原创 C++_STL---list

想要了解更多关于list的详细内容,请点击。

2024-07-03 17:13:05 1085

原创 C++_STL---vector

构造函数声明接口说明代码演示vector()无参构造构造并初始化n个val//初始化为5个值为10的整数拷贝构造使用迭代器进行初始化构造。

2024-06-28 18:02:24 835

原创 C++_STL---string类

说起string类,首先需要了解的是 - string类是什么?std::string是类模板std::basic_string的一个元素类型为char的实例化,而basic_string则是对元素指针的封装。由于basic_string的实现对字符串操作进行了优化,所以它不能用来表示除char以外的对象串。但是使用string类也避免了和'\0'的纠缠不休,也就是说,string并不关心它所代表的字符串有无'\0'作为字符串的结束标志,相反'\0'是它的一个合法元素。

2024-06-25 20:43:49 1158 1

原创 C++构造&析构函数

一般情况下构造函数都需要我们自己显示的去实现只有少数情况下可以让编译器自动生成构造函数1. 有资源需要显示清理,就需要写析构函数,如:Stack。2. 有两种场景不需要显示写析构函数,默认生成就可以。a.没有资源需要清理,如:Date。b.内置类型成员没有资源需要清理,如:MyQueue。

2024-04-11 17:10:55 746

原创 C语言_文件操作

int main()//打开文件return;i < 26;i++) //写文件{ //往data.txt文件里面,写入26个英文字母fclose(pf);//关闭文件pf = NULL;return 0;int main()//打开文件return;i < 5;i++) //读文件{//读取data.txt文件中的前五个字符fclose(pf);//关闭文件pf = NULL;return 0;

2024-04-09 16:44:00 808

原创 深度解析C语言——预处理详解

什么是预定义符号:预定义符号是由编译器预先设置好的特殊标识符,它们代表了特定的信息,如编译器版本、目标平台信息、编译选项等。在C语言中, 也设置了一些预定符号,可以直接使用。//常见的C语言预定义符号__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间int main()//输出结果:file:C:\Users\test.c line:269。

2024-04-02 21:34:47 2306 1

原创 C++函数重载&引用

自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!

2024-04-01 16:18:21 930

原创 C语言编译与链接

在美国国家标准学会(AMERICAN NATIONAL STANDARDS INSTITUTE: ANSI)C的任何一种实现中,存在两个不同的环境: 那么翻译环境是怎么将源代码转换为可执行的机器指令的呢?这⾥我们就得展开开讲解⼀下翻译环境所做的事情。 其实翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解成:预处理(预编译)、编译、汇编三个过程。⼀个C语言的项目中可能有多个 .c 文件一起构建,那多个 .c 文件如何生成可执行程序呢? 如果再把上图中的编译器展开,那

2024-03-30 21:59:36 2222

原创 C++入门——基础语法(一)

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。// 命名空间中可以定义变量/函数/类型int data;命名空间也可以嵌套int a;int b;//命名空间的嵌套int c;int d;同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中总结:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。

2024-03-29 18:41:44 519 1

原创 归并排序&计数排序

计数排序在数据范围集中时,效率很高,但是适用范围及场景有限。只能排序整数时间复杂度:O(MAX(N,range))空间复杂度:O(range)稳定性:稳定。

2024-03-26 09:55:43 622 1

原创 简单排序——冒泡、选择排序

无论你学习那种编程语言,在学到循环和数组时,通常都会介绍一种排序算法来作为例子,而这个算法一般就是冒泡排序。并不是它的名字多好听,而是说这个算法思路最简单,最容易理解。

2024-03-23 16:57:32 726

原创 深度解析排序算法——希尔(插入)排序

希尔排序是D.L.Shell于1959年提出来的一种排序算法,在这之前排序算法的时间复杂度基本上都是O(N^2)的,希尔排序算法是突破这个时间复杂度的第一批算法之一。

2024-03-22 16:55:53 927 1

原创 堆与实现堆

好啦~~今天关于堆的相关内容就分享到这里,我们下期再见~~~

2024-03-09 15:14:36 472 1

原创 深度解析排序算法——快速排序

快速排序算法最早是由图灵奖获得者Tony Hoare设计出来的,该算法被列为20世纪十大算法之一,也是我们必须要掌握的算法之一。任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。快排的代码实现目前快排的代码实现分为两种方式:一种是递归实现、一种是非递归实现。而递归实现有三种实现思想,希望大家能够理解。注意:下面车速较快,请系好安全带。

2024-03-07 09:35:02 959 1

原创 浅谈函数栈帧的创建与销毁

官方定义:只允许在一端进行插入或删除操作的线性表。栈常被定义为一种特殊的容器,用户可以将数据压入栈中(压栈,push),也可以将已经压入栈中的数据弹出(出栈,pop),但是栈这个容器必须遵守一条规则:先进后出栈的使用是从高地址到低地址好了,函数栈帧的创建与销毁的全部代码到这里就结束了。现在让我来回答一下文章开头的几个问题。1.局部变量是怎么创建的?答:在函数栈帧创建好之后,在函数栈帧的有效空间内,由编译器为局部变量分配空间并初始化2.为什么局部变量不进行初始化会是随机值?

2024-02-18 21:16:13 986 1

原创 深度解析C语言函数strcpy、strncpy、memcpy

官方定义:第一个参数:目的地址,要把拷贝的内容放到哪里去第二个参数:源头地址,要从哪里拷贝数据。(const表示该指针指向的内容不期望被修改)该函数的返回类型是返回目的空间的起始地址(char*)。需要包含头文件:<string.h至于三种函数的相同点,这里就不再多说,大家按需求选择使用函数。最后如果用不理解的地方,欢迎私信骚扰~~886~~

2024-02-08 11:19:51 3027

空空如也

空空如也

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

TA关注的人

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