自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 优选算法【专题九:哈希表】

空间消耗为O(n) 二分是logn的时间复杂度1)是什么?存储数据的容器2)有什么用?快速查找某个元素---O(1)3)什么时候用哈希表?当频繁查找某一个数的时候,此时就要想到用哈希表这个容器4)怎么用哈希表直接使用语言提供的哈希表容器。用数组模拟简易哈希表:1)当我们只关心字符串中的字符的时候 2)当数据范围很小的时候(int) (能用数组模拟哈希表就用)

2026-02-01 19:12:24 661

原创 优选算法【专题八:链表】

创建一个小根堆,使用k个指针,先指向第一个节点,然后把这些元素全放进小根堆当中,拿出堆顶的元素,这个堆顶元素肯定是输入的k个链表中某个节点,如果这个节点的后面还有节点就放到堆里。

2026-01-29 19:32:03 944

原创 优选算法【专题七:分治】

的原始下标,合并的时候其实是在左边拿一个右边拿(说到底其实都是左边拿一个右边拿一个,因为会分到只有一个元素,再从下往上合并),所有,当左拿一右拿一的时候,元素的位置可能就不是元素的时的位置了,因为进行排序过了。我们可以创建一个index数组,数组的元素就是原始数组的下标,将原始数组元素和数组下标进行绑定,这样元素进行排序移动的时候,就可以很快找到元素的原始x。策略二:找出该数之后有多少个数比我小,这个策略应该使用降序。所以,最重要的就是我们要找到当前元素。堆排序 和 快速选择算法。

2026-01-27 21:36:18 645

原创 优选算法【专题六_模拟】

模拟算法--->“比葫芦画瓢”特点是:思路简单,主要考察将思路转化为代码的能力。

2026-01-25 09:55:33 565

原创 优选算法【专题五:位运算】

<(左移运算符) >>(右移运算符) ~(按位取反运算符)&:有0就是0 |:有1就是1 ^:相同为0,不同为1/无进位相加1.2 给一个数n,确定他的二进制表示中的第x位是0还是1x位是从左到右的第x位,右边是最低位(是第0位),下标从0开始,要判断第x位是0还是1,就让这一位和1 进行& 因为&操作,是有0则为0,那么如果&完结果为1,这一位就是1,&完结果为0,这一位就是0.我们先将这一位右移 x 位,再和1进行&1---->1。

2026-01-23 11:05:06 623

原创 优选算法【专题四_前缀和】

和为K的子数组,遍历数组,算出开始到当前位置的sum(前缀和),前缀和会被放到哈希表中,如果说哈希表中有sum-k,那么就代表从i+1开始到当前位置的和为k,也就是有几个和为sum-k,就有几个和为k的子数组。对数组进行预处理出来一个前缀和数组--------f[i]=f[i-1]+nums[i],然后再利用前缀和数组。第二个公式,给出两个坐标,是求这两个坐标范围内的和,【用总的和-(A+B)-(A+C)+A】0和1数量相同的子数组---->将0变为-1---->找和为0的子数组。要理解前缀和的思想!

2026-01-17 15:16:24 329

原创 优选算法【专题三:二分查找算法】

因此我们要找的是大于等于target---首先确定是大于等于t而不是小于等于t-----确定等于是属于哪边的,属于小于的一边就left不要移动超过mid(即left=mid。目标值比right位置的大,就是要在他的后面,即right+1,目标值比他小,就是要在这个位置(比这个位置前面的大)),属于大于的一边,right就移动不要查过mid(即right=mid) ------- 核心!1)我们要找的是等于目标值的。从1开始给数平方,直到刚好找到比目标值大的数,那么这个数的前一个数就是要找到的值。

2026-01-12 09:32:46 818

原创 优选算法【专题二:滑动窗口】

什么时候更新结果???当我们是一个合法窗口的时候就更新结果。

2025-12-02 16:22:50 944

原创 【Python】基础

变量里面存储的不仅仅是数字,还可以存储其他种类的数据,为了区分不同种类的数据,我们引入了“类型”概念。在Py中,一个变量是上面类型,是可以在程序运行过程中发生变化的,这个特性称为“动态类型”C/C++是不允许这样的,一个变量定义类型后就固定了,这叫做“静态类型”2、Python中,单引号构成的字符串和双引号构成的字符串没有区别。1、Python变量的类型不需要显式指定,而是在复制的时候确定。如果条件a成立,执行1,2,3 不成立执行3。2、不同的作用域允许出现相同的函数名。a为真,执行1,a为假执行2。

2025-11-18 17:10:59 620

原创 【MySQL】内外连接、索引、事务、用户管理

MySQL服务可能会同时被多个客户端进程(线程)访问,访问的方式以事务方式进行一个事务可能由多条SQL构成,

2025-11-17 13:12:41 992

原创 【MySQL】多表查询

但是这样这张表里面有很多费数据,我们要对这张表进行整合那么,我们要得到有效数据,就需要添加过滤条件。这样就得到一张新表。select 部门号 部门名 员工名 工资 from 员工表,部门表 where如果两个表里面的列名称有相同的话,就需要加上 表名.列名(要指明表名)

2025-11-16 09:57:55 1037

原创 【MySQL】基础

表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库中的数据是符合预期的。反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。一般而言,我们建议将主键设计成为和当前业务无关的字段,这样,当业务调整的时候,我们可以尽量不会对主键做过大的调整。enum(枚举)是单选(多选一),插入的数据必须是枚举值中的一个,可以使用下标进行插入数据,并且下标是从1开始。当对应的字段不给值,就会自动被系统触发,会从当前的最大值+1,得到一个新的值,通常和主键搭配使用,作为逻辑主键。

2025-11-16 09:57:37 1076

原创 优选算法【专题一:双指针】

两个位置:cur和dest(开始指向-1)。cur是把数组遍历一遍,dest是判断数组的最后一个位置为止1)先判断cur位置的值2)根据cur位置的值判断dest向后移动一步还是两步3)判断一下dest是否已经到结束位置4)dest没有到结束位置cur++

2025-09-24 16:59:09 665

原创 【论坛系统性能测试】

博客详情页的请求参数有blogId,我们不能使用固定的blogId因为如果当这篇博客被删除的话,博客详情页就会访问失败,那么这个blogId应该从博客列表页的返回值获取。我们要求并发数是一点一点增加的 而不是配置并发数之后中断,因此就需要使用插件。为了达到并发的效果就需要添加同步定时器。要将提取用户凭证放在登录接口的子集。CSV数据文件管理器可以实现参数化。发送10个请求必须要在1s内完成。将信息头管理器放在全局。

2025-08-19 11:14:24 446

原创 【博客系统测试报告】---web界面自动化测试

【代码】【博客系统测试报告】---web界面自动化测试。

2025-08-15 16:04:36 248

原创 【博客系统测试报告】---接口自动化测试

功能复杂度高、高风险功能、重复性高我们对博客系统的每个接口都进行自动化测试。

2025-08-14 21:00:40 783

原创 【接口自动化测试】---logging日志、allure测试报告

实例四、设置日志格式。

2025-08-13 10:41:28 565

原创 【接口自动化测试】---YAML、JSON Schema

控制是否允许对象中存在未在 properties (这是JSON schema中的属性)中定义的额外属性,默认为True。(默认是允许在json返回数据里面存在未在schema中的properties中的)uniqueItems设置为True表示元素必须是唯一的,设置为False表示元素可以是唯一的(也可以是不唯一的) 默认情况,允许存在重复的数据。注意:配置里面不要存在其他字符或者空格,会导致识别不出来当前的配置,意味着配置是失效的。uniqueItems :确保数组中的元素是唯⼀的。

2025-08-11 22:10:25 1216

原创 【接口自动化测试】---自动化框架pytest

初始化--第一个用例、第二个用例---清理--初始化---第一个用例、第二个用例--清理)

2025-08-11 12:10:24 943

原创 【接口自动化测试】---requests模块

requests.get就是发送一个get请求到指定的URL。根据接口的需求和功能,设计正向测试用例(正常场景)和反向测试用例(异常场景),包括边界值测试、参数组合测试等。需求分析、挑选自动化接口、测试用例设计、搭建测试环境、设计测试框架、编写代码、执行测试、生成测试报告。一般我们用GET的时候,请求参数就用params。选择变成语言、开发环境(pycharm)来实现。分析请求:明确接口的URL、请求方法、请求头、请求参数和请求体。分析响应:确定接口返回的数据格式,状态码、可能的错误信息。

2025-08-08 21:49:15 906

原创 【接口自动化测试】---【1】接口测试

⽐如输⼊20个字符、输⼊特殊字符等,但这些可能只是在前端做了校验,后端可能没做校验,如果有⼈通过抓包绕过前端校验直接发送到后端怎么办呢?现在有⼀个操作商品的接⼝,有个字段type,传1的时候代表修改商品,商品id、商品 、名称、价格有⼀个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。接口是可以绕过前端发送的请求。接⼝⼀般来说有两种,⼀种是程序内部的接⼝,⼀种是系统对外的接⼝。

2025-08-08 12:34:48 514

原创 【性能测试】---测试工具篇(jmeter)

用户登录之后,服务器返回一个认证凭证,后续请求必须携带该凭证(如访问列表页),否则服务器会返回401/403未授权。法二:将文件路径复制一下,配置环境变量,打开cmd,输入jmeter就可以打开。JMeter需要手动实现这一过程,否则列表页请求会被视为“未登录用户”的请求。2、服务器⽆法继续处理,达到了瓶颈(代码写的不好,内存泄漏、硬件资源等。如果选择了永远,就必须要配置调度器,否则性能测试就是一个死循环。如果配置了调度器,配置了持续时间,就会在2s内不断发送请求。通过变量提取+断言机制。

2025-08-07 21:19:55 2624

原创 【性能测试】---概念篇

负载测试是通过逐步加载的⽅式来确定系统的处理能⼒,确定运动员在其⾝体状况保持正常的情况下所能举起的最⼤重量。举例1:某⼀系统1分钟处理1000个业务,那么TPS = 1000 / 60 = 16.7。从从客⼾端发起⼀个请求到服务器收到请求的整个过程中,各阶段都可能存在性能问题。每秒处理事务数,⽤于衡量系统在⼀定时间内能够处理的事务数。发出开始,到客⼾端接收到最后⼀个字节数据所消耗的时间。根据⼆⼋定律(80%的事务在20%的时间内完成)系统的某⼀功能被多个⽤⼾同时操作时的性能表现,

2025-08-06 10:01:48 703

原创 【web自动化测试】实战--论坛系统

web自动化测试就是对界面的测试。

2025-08-05 23:06:25 456

原创 【web自动化测试】---自动化测试常用函数

由于页面要加载的资源比较多,程序执行的速度很快,因此当代码脚本执行到该行代码的时候页面还没有渲染完成,因此找不到元素,当添加了time.sleep(3)之后,页面已经再3秒内加载完成,此时再去查找,该元素就可以找到了。应用场景:当我们使用自动化测试的时候,我们可能会点击页面上的某个元素,就会出现跳转,我们通过获取当前页面的标题和URL就可以知道当前的跳转结果是不是正确的。当自动化运行报错时,仅仅通过终端的错误提示给的有用信息是一定的,若能将当时的页面变化截图拍下来,能更好的定位问题并解决问题。

2025-08-02 16:36:56 1047

原创 【web自动化测试】---概念篇

驱动可以打开浏览器 就需要安装web驱动。

2025-08-01 11:55:58 478

原创 【论坛系统测试报告】

本次测试对象是一个web网页论坛系统,该系统拥有登录注册、论坛首页、查看帖子详情、发布帖子、编辑帖子、站内私信、个人主页管理等功能登录注册:包括登录功能和注册功能。用户可以输入正确的用户名和密码登录自己的账号,也可以输入用户名、昵称密码以及确认密码进行注册账号。论坛首页:论坛首页可显示不同板块下的帖子,并具备关键字搜索功能,用户可输入关键字精准定位目标内容。此外,首页支持网页背景切换,提供白天和夜间两种视觉模式。查看帖子详情:用户点击帖子标题即可进入帖子详情页。发布帖子。

2025-07-16 16:09:36 768

原创 【MySQL】数据库基础

mysql他是数据库服务的客户端mysqld他是数据库服务的服务器端mysql本质:基于C(mysql)S(mysqld)模式的一种网络服务MySQL是,一套给我提供数据存取的服务的网络程序数据库一般是指,在磁盘或者内存中存储的特定结构组织的数据---将来在磁盘上存储的一套数据库方案。数据库服务:---mysqld为什么不直接把数据存储在文件里,而是要以数据库的形式存储在文件里???因为一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力(用户角度)

2025-06-30 18:22:39 421

原创 【高并发服务器项目测试报告】

基于多线程和事件驱动的服务器。用于处理大量并发连接,实现高并发和高性能的网络服务的一个网络组件。使用主从Reactor实现连接的监听和读写操作的分离,并采用一个线程对应一个事件循环的方式避免了多线程下的线程安全问题。2、测试计划项目完成之后,我们本篇对我写的项目进行一下测试;1. 设计测试用例2. 根据测试用例进行对应的测试3. 编写自动化测试脚本。

2025-06-27 16:55:23 889

原创 【测试】测试分类

动态测试(dynamic testing),指的是实际运⾏被测程序,输⼊相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断⼀个测试属于动态测试还是静态的,唯⼀的标准就是看是否运⾏程序。来 实现重复的和⼀致的回归测试。但是,灰盒测试没有⽩盒测试详细和完整,⿊盒测试是覆盖产品范围最⼴的测试,因此灰盒测试基本是不能够替代⿊盒测试,否则需要很⼤的代价,设计⾮常多的⽤例。集成测试也称联合测试(联调)、组装测试,将程序模块采⽤适当的集成策略组装起来,对系统的⼝ 及集成后的功能进⾏正确性检测的测试⼯作。

2025-05-15 20:07:12 1264

原创 【测试】用例篇

笔试的时候编写测试用例,需要按照excel表格的方式来答题。(会涉及到测试用例的要素)面试的时候回答测试用例题,按照思维导图的方式一一道来即可(不会涉及到测试用例的要素)

2025-05-15 18:17:18 991

原创 【测试】BUG

什么是BUG???程序与规格说明之间的不匹配才是错误问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果。

2025-05-14 20:45:29 416

原创 【测试】测试基础概念

用户需求:就是一句话,但是能不能真的实现,不一定软件需求:或者叫功能需求,该需求会详细描述开发⼈员必须实现的软件功能。软件需求是测试⼈员进⾏测试⼯作的基本依据。

2025-05-14 19:04:55 637

原创 【智能指针】

当资源对应的引用计数减为0时对应的资源才会被释放,因此资源1的释放取决于资源2当中的prev成员,而资源2的释放取决于资源1当中的next成员。而资源1当中的next成员的释放又取决于资源1,资源2当中的prev成员的释放又取决于资源2,于是这就变成了一个死循环,最终导致资源无法释放。1、现在main函数刚开始,node1和node2分别有一个shared_ptr指向,所有node1和node2的引用计数都是1.// 编译错误,拷贝构造被禁用。->next 也持有 node1,node1的引用计数+1。

2025-05-10 18:08:40 726

原创 数据结构---【二叉搜索树】

数据大于根 往右走 小于根往左走//1、判断树是否为空 为空创建节点 把数据放入//2、树不为空 首先判断 这个要插入的数据是否重复 重复直接返回,cur指向要插入数据的位置 perv指向要插入数据的父亲节点//3、找到位置//4、将父亲的左/右指向插入的数据节点(看num的值大于prev->data还是小于,大于就是right指向node,小于就是left。

2025-04-30 16:48:22 701

原创 数据结构--【堆】

放到最后一个 + 向上调整删除:顶部挪到最后一个 + 向下调整。

2025-04-26 17:35:42 520

原创 数据结构--【二叉树】

一个结构体就是一个树节点。

2025-04-25 18:07:12 915

原创 数据结构--【栈和队列】

特殊情况:判断队列是否为空 为空时要将头尾指针都指向newnode。eg:top=2,ps[0] ps[1] 刚好等于top的值。因为top初始化的时候是0,所以直接返回top即可。链式结构只要插入数据,就要重新向内存申请空间。使用指针指向队头,从头往后走,计数器++使用while循环 top--直接对top--操作即可。

2025-04-23 21:40:02 522 1

原创 【项目日记(三)】

SERVER服务器模块实现:1、Buffer模块:缓冲区模块提供的功能:存储数据,取出数据实现思想:1、实现缓冲区得有一块内存空间,采取vector<char>vector底层其实使用的就是一个线性的内存空间2、要素:a、默认的空间大小b、当前的读取数据数据位置c、当前的写入数据位置3、操作a、写入数据:当前写入位置指向哪里,就从哪里开始写如果后面剩余空间不够了1、考虑整体缓冲区空闲空间是否足够(因为读位置也会向后偏移,前面有可能会有空闲空间)

2025-04-21 14:23:20 1162

原创 【项目日记(二)】

我们的这个高并发服务器是可以支持各种不同的协议,我们进行协议支持的时候,socket有数据到来了,我们去接收数据的时候,缓冲区中的数据不足一条完整的请求,或者比一条完整的请求多。我们就得考虑将socket缓冲区中的数据进行处理,那么数据处理到一半的时候,就得考虑在下次数据到来的时候继续处理,因此,我们就需要给服务器中的每一个连接都设置一个协议处理的上下文,专门用来控制请求数据接收和处理的节奏的。2、上下文的类型不能固定,因为服务器支持的协议可能会不断增多,不同的协议,可能会有不同的上下文结构。

2025-04-16 14:50:54 828

空空如也

空空如也

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

TA关注的人

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