- 博客(60)
- 收藏
- 关注
原创 基于websocket的多用户网页五子棋 --- 测试报告
在本次测试中,对系统的关键性能指标进行了全面评估,包括但不限于响应时间、吞吐量和错误率。测试覆盖了以下3个核心功能模块:用户管理、用户匹配、游戏对战功能。(1)响应时间总体表现:系统在大多数情况下响应时间较为稳定。用户登录、题目列表加载、具体题目查看、提交评测等操作在高并发场景下表现良好。例外情况:注册功能在高并发场景下出现性能瓶颈,响应时间显著增加,部分请求达到 30,000ms 以上,影响用户体验。(2)吞吐量系统在高负载条件下表现出良好的吞吐能力,能够有效处理大量并发请求。
2025-03-05 12:25:52
478
原创 负载均衡在线OJ -- 测试报告
在本次测试中,对系统的关键性能指标进行了全面评估,包括但不限于响应时间、吞吐量和错误率。测试覆盖了以下3个核心功能模块:用户管理、题目展示、编写并运行题目。(1)响应时间总体表现:系统在大多数情况下响应时间较为稳定。用户登录、题目列表加载、具体题目查看、提交评测等操作在高并发场景下表现良好。例外情况:注册功能在高并发场景下出现性能瓶颈,响应时间显著增加,部分请求达到 30,000ms 以上,影响用户体验。(2)吞吐量系统在高负载条件下表现出良好的吞吐能力,能够有效处理大量并发请求。
2025-03-05 10:45:55
543
原创 自动化测试
所有的性能测试都会涉及一些并发测试,但并发测试对并发时间要求比较苛刻,通常需要借助专门的性能测试工具,采用多线程或多进程的方式来模拟多个虚拟用户的并发现操作。用于评估被测系统的某些特定操作同时发生时的性能表现,例如,被测系统被多个用户同时登陆时的响应时间,或系统的某一功能被多个用户同时操作时的性能表现。对于同一个系统的协议IP端口号都是一样的,当测试同一个系统中的不同功能时,挨个都要写很麻烦,可以添加。在负载测试的基础上,执行较长时间的测试以检查系统的稳定性,通常较长时间只3*2小时以上。
2025-02-15 12:22:47
640
原创 【Linux第十课-计算机网络】网络基础、网络套接字、应用层自定义协议与序列化
TCP建立链接的read、write、send、recv、sendto、recvfrom实际上是拷贝函数tcp发送数据的本质:把自己的发送缓冲区拷贝到接收方的接收缓冲区。通信的本质是拷贝本质是因为cs双方有一对发送和接收缓冲区。
2024-12-27 15:21:28
797
原创 【Linux第九课 -- 线程】线程、线程互斥、线程同步、线程池、日志
为什么用户空间会被内核回收,而PCB不会,子进程PCB要留给父进程回收,子进程退出的详情保存在PCB中,父进程需要知道子进程的具体因为什么退出(死后验尸QAQ),子进程PCB回收只有父进程能做。
2024-11-25 09:11:49
708
原创 【Linux第八课-进程间通信】管道、共享内存、消息队列、信号量、信号、可重入函数、volatile
两个进程之间可以进行“数据”的之间传递吗?不能!进程具有独立性。
2024-11-09 19:02:35
1171
原创 【Linux第七课--基础IO】内存级文件、重定向、缓冲区、文件系统、动态库静态库
在某一个块创建一个文件,首先查Inode Bitmap找一个没有被使用的inode,将该文件的相关属性写到找的那个inode在inode table里面。我们进程地址空间里面很多地址数据,是从可执行程序里面来的(因为不同的可执行程序,他的数据段和代码段是不一样的,进程初始化进程地址空间每块多大的时候就是根据可执行程序)当你想要修改某一个扇区中的一个bit位,必须把整个扇区加载到内存里,修改要修改的bit位,之后再将整个扇区的信息写入。硬链接:本质不是一个独立的文件,因为它的inode编号和目标文件的一样。
2024-11-01 11:49:10
928
原创 【Linux第六课-进程控制】进程创建、写时拷贝、进程终止、函数退出、进程退出、进程等待、程序替换、自定义shell
scanf输入按空格进行结束获取一行fgetsC语言中有三个输入输出流:`stdin、stdout、stderrfgets:用户敲得回车也会捕获到封装接口– 交互1024if(ret)return ret;
2024-10-17 20:37:31
715
原创 【Linux第五课-进程概念下】环境变量、程序地址空间
每一个进程,都存在一个进程地址空间,32[0, 4GB]地址空间是一个内核数据结构,里面有各种类型的区域划分地址空间,不具备对代码和数据的保存能力,在物理空间上存放将地址空间上的地址(虚拟地址/线性)转换到物理空间中给我们的进程提供一张映射表 —页表。
2024-10-05 20:00:50
928
1
原创 【Linux第五课-进程概念上】PCB内部属性、标识符、进程状态、Linux下的进程状态、进程的优先级、Linux进程的调度与切换
子进程不需要这些,只需要知道创建成功没成功,因此返回0就可以了(父:子 = 1:n,子进程找父进程是唯一的,父进程找子进程就需要pid)最初创的进程的父进程是bash,会自动回收退出信息,如果在自己创建的进程下面再fork一个子进程,此时子进程的父进程不会自动回收退出信息。:表示管道,上一条命令的输出,作为下一条命令参数进行传递,如:ls | grep “aa”,在ls的输出中查找aa字符串。创建子进程时,是以父进程为模板的。所有的保存都是为了最终的恢复,所有的恢复,都是为了继续上一次的运行位置继续运行。
2024-09-27 17:16:28
813
原创 【C++第十四课-map和set】set和multiset的用法、map和multimap的用法、底层结构(AVL树、红黑树)、哈希
之前学的都只是存储数据在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C++11)等,这些容器统称为,因为其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?它与序列式容器有什么区别关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器效率更高set – k模型map – kv模型。
2024-09-09 16:38:56
873
原创 【C++第十三课-二叉树进阶】二叉搜索树
商场的车库:进去是都可以进,出去的时候需要通过车牌号快速查找你停入的时间,判断是否超过半个小时。上面这个拷贝构造是我自己写的,虽然根据树1深拷贝了树2,但是没法给树2的_root。快速通过一个值(key)查找另一个值(value)是否存在?若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。小区内部车库:进出都有快速查看你的车牌号是否是小区住户。:找一个能替换我的节点,交换值,转换删除他。上面这个方法不好,例如当树很深的时候。
2024-08-28 15:47:03
362
原创 【C++第十二课-多态】多态概念、多态原理
普通函数的继承是一种实现继承,派生类继承了基类函数,可以使用函数,继承的是函数的实现。虚函数的继承是一种接口继承,派生类继承的是基类虚函数的接口,目的是为了重写,达成多态,继承的是接口。. 动态绑定又称后期绑定(晚绑定),是在程序运行期间,根据具体拿到的类型确定程序的具体行为,调用具体的函数,也称为动态多态。:运行时去指向对象的虚函数表中找函数的地址,进行调用,所以指向父类调的是父类虚函数,指向子类调用的是子类虚函数。父类的指针或引用去调用虚函数,传的是父类掉父类的,传子类掉子类的(切片)
2024-08-15 14:52:46
865
原创 【C++第十课 - stack_queue】stack、queue的使用、适配器模型stack、queue和priority_queue的底层实现、deque
第二种情况:如果栈为空或栈顶元素与popV当前的出栈元素不一样,将pushV当前入栈元素压入栈中,pushV向后移一位。由容器(string、vector、list、deque)封装、转换而成的,底层数据的管理不是由自己负责的。(1)如果pushV当前入栈的值和popV当前出栈的值一样,pushV向后移一位,popV向后移一位。如果第一个buff不是从头开始的,不在第一个buff,那么i -= 第一个buff的数据个数。(2)如果pushV当前入栈的值和popV当前出栈的值不一样,分两种情况。
2024-07-07 19:01:32
917
原创 【C++第十课 - List】List的使用、list底层实现、list的const迭代器实现、反向迭代器
list不能用算法库里面的sort,算法库里面的sort是快排(需要连续的空间,原地排序,不稳地排序,O(n2)),list自带的sort是归并(稳定排序,O(nlogn))(2)访问权限:struct默认的成员变量访问控制权限是public,而class默认的成员变量访问权限则为private。把一个链表的值转移到另一个链表,是把一个链接里面的节点直接拿走。是内置类型,是要改变的是Node*的指向,不能改变指针的运算符。默认的析构函数对类里面的成员是不做处理的。
2024-06-19 10:38:11
1205
原创 【C++第九课 - vector】vector介绍、vector使用,vector的底层实现、杨辉三角、全排列、只出现一次的数字
就是顺序表string类是一个保存字符的动态数组,由于其中有一个接口c_str,转化成c语言的字符串,要以\0结尾,所以string类最后会有一个\0.string支持+=string支持比较大小(通过ascii码)vector是一个保存T类型的动态数组,vector也是保存字符的动态数组,但是,不会以\0结尾,不保存\0.vector不支持+=vector不支持比较大小(也可以通过ascii码比较,但意义不大)
2024-06-09 11:02:02
787
原创 【Linux第四课 - git、gdb】git仓库的使用、dgb代码调试
问题:远程库与本地库不一致造成的,在hint中也有提示把远程库同步到本地库就可以了(一旦提交成功就必须被所有人看到)2、release(不可以调试),形成的可执行程序去掉了调试信息。1、debug(可以调试),形成的可执行程序添加了调试信息。(2)debug版本里面的格式信息ELF有debug信息。git是版本控制工具,gitee和github是网站。需要输入账号和密码(登录gitee时的账号密码)(1)debug版本比release版本大。1、默认是动态链接(动静态库)在某指定文件的指定行号打。
2024-05-09 10:49:44
1097
原创 【C++第八课 - string的底层实现】
1、不认识官方库的内容(1)没包头文件(2)命名空间的问题2、缺省参数只能在声明给,不能声明定义同时给3、重定义问题所以的重定义都是由于在多个cpp里面定义导致的。
2024-05-05 10:05:16
699
原创 【C++第七课-string用法】
basic_string是一个类模板string本质上是basic_string < char >,也就是管理char的,字符数组。
2024-05-03 17:00:57
1044
1
原创 【C++第六课 - 模板、STL简介、string】函数模板、类模板、STL简介
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。C++标准库还包括:IO流库、智能指针库、异常相关的库。容器:数据结构空间配置器:内存池,专门给数据结构提供内存,数据结构需要内存的时候不是去new,而是找内存池配接器:又叫适配器。
2024-04-29 11:54:43
370
原创 【C++第五课-C/C++内存管理】C/C++的内存分布、new/delete、new和delete的实现原理
malloc不方便解决动态申请的自定义类型对象的初始化问题new:1、开空间;2、调用构造函数delete:析构函数 + 释放空间。
2024-03-30 14:11:22
856
原创 【Linux第三课-基础开发工具的使用】yum、vim、gcc/g++编译器、gdb、Make/Makefile编写、进度条程序
vim是一款多模式的编辑器,vim里面还有很多的子命令,来进行代码的编写操作1、进入vim后一般没法写入,需要模式切换,i – insert插入模式2、写完后按esc退出插入模式 -> shift+;(也就是:)进入低行模式 -> wq(保存并退出)-> 回车3、gcc编译,运行。
2024-03-20 20:21:05
1141
原创 【C++第四课-类和对象下】初始化列表、静态成员函数、静态成员变量、explicit关键字(隐式类型转换)、友元函数、友元类、内部类、编译器的常见优化
因为B在A 里面是public,所以在外面是可以访问的,但如果B在A的里面是private,那么B这个类只能在A 类里面去访问,外面的不能访问。给的是缺省值,这样即使没有显示的在初始化列表中定义,_year也不会被初始化成随机值,而是初始化成1。此时A这个类有默认构造函数(即不需要参数的构造函数),那么对于_aa不需要显示的写定义,他就会自动去调用它的默认构造函数。不能在类声明的时候给缺省值,因为塔不走初始化列表,缺失值是给初始化列表的。B是A的友元,B能访问A 的成员,A不能访问B的成员。
2024-03-10 11:43:34
1017
原创 【C++第三课 - 类和对象中】构造函数、析构函数、拷贝构造函数、赋值重载、取地址重载、Date类的完善、const成员
Date、MyQueue可以不用写,默认生成的operator=就可以用赋值重载:(重载运算符)两个已经存在的对象拷贝拷贝构造:一个已经存在的对象去拷贝初始化另一个对象。
2024-03-04 20:57:33
977
原创 【C++第二课 - 类和对象上 - 入门知识】struct类、class类、访问限定符、this指针
C++在C语言的基础上将struct升级成了类1、struct使用上的升级,不用typedef就可以直接用类名,类名就是类型int* a;int top;return 0;2、类里面可以定义函数int* a;int top;top = 0;s1.Init();s1.Push(1);s1.Push(2);return 0;C++更喜欢用class定义类。
2024-01-21 19:09:15
929
原创 【C++第一课 - C++入门】相关软件(vs、gitee)、命名空间、输入输出流、缺省参数、函数重载、引用、内联函数、auto、范围for(语法糖)、nullptr
:域作用限定符zyh命名空间中的rand也是全局变量对于一些常用的,例如:cout、endl,每次用都得前面加上std::很麻烦,但直接展开std又比较危险## Stack实例>同一个项目中,多个文件的同一个命名空间会被合并```cppstack.hint* a;int top;}SK;return 0;
2024-01-20 20:26:37
1097
原创 【Linux第二课-权限】操作系统、Linux用户、Linux权限、Linux文件类型、粘滞位
系统中有一个用户信息配置文件,sudoers有点像linux里面的一张名单,如果一个普通用户在这个配置文件名单里面,就允许该用户进行sudo。角色是需要人去承担的,因此对于root/hui/xxx在不同的文里面会承担不同的角色(拥有者、所属组、other)在共享目录中的other设置的一个权限位,具有x的意义,同时也进一步对目录权限进行了特定的限制。权限x的意思是,你要执行的时候我不拦着你,但前提你得是个可执行文件。Linux操作对象的属性 ---- 文件权限属性上 ----
2024-01-19 17:23:04
1295
原创 第五章 数据库的完整性(实体完整性、参照完整性、用户自定义完整性、断言、触发器)
数据库的完整性(实体完整性、参照完整性、用户自定义完整性、断言、触发器)
2023-02-28 10:54:03
437
原创 类和对象(中)(构造函数、析构函数、拷贝构造、运算符重载、日期类)
类和对象的六个默认成员函数(构造函数、析构函数、拷贝构造、运算符重载...),流提取,流插入,日期类
2023-02-18 21:15:22
117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人