- 博客(48)
- 收藏
- 关注
原创 博客系统自动化测试
通过上述的一系列操作,我们测试了博客列表页的导航栏和博客列表页的主体,在博客导航栏,左边的logo正常显示,logo旁边的“我的博客系统”正常显示,而且功能正常,右边的“主页”、“写博客”、“登录”均正常显示,并且功能正常;博客列表页的主体有两篇博客,第二篇博客下面有四个按钮:首页、上一页、下一页、末页。通过测试,我们发现博客的标题、发布博客的时间、博客的简介、查看全文按钮均正常显示,查看全文按钮功能正常。首页、上一页、下一页、末页四个按钮均正常显示且功能正常。
2023-10-23 10:32:39
210
原创 博客系统测试报告
通过上述的一系列操作,我们测试了博客列表页的导航栏和博客列表页的主体,在博客导航栏,左边的logo正常显示,logo旁边的“我的博客系统”正常显示,而且功能正常,右边的“主页”、“写博客”、“登录”均正常显示,并且功能正常;博客列表页的主体有两篇博客,第二篇博客下面有四个按钮:首页、上一页、下一页、末页。通过测试,我们发现博客的标题、发布博客的时间、博客的简介、查看全文按钮均正常显示,查看全文按钮功能正常。首页、上一页、下一页、末页四个按钮均正常显示且功能正常。
2023-10-21 20:40:21
722
原创 java中的wait和sleep
Java中线程的状态分为 6 种:初始(NEW):新建了一个线程对象,但是还没调用start() 方法运行(RUNNABLE):Java 线程中将就绪(ready)和运行中(running)两种状态统称为“运行”。线程对象在创建之后,其他线程(比如 main 线程)调用了该对象的 start() 方法,该状态的线程位于可变线程池中,等待被线程调度选中,获取CPU 的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得 CPU时间片后变为运行状态(running)。阻塞(BLOCKED):表示
2023-10-20 07:56:17
2836
原创 ObjectMapper
Jackson ObjectMapper类(com.fasterxml.jackson.databind.ObjectMapper)是使用 Jackson 解析 JSON 最简单的方法。ObjectMapper 可以从字符串、流或文件来解析 JSON,并创建 java 对象或对象图表示已解析的 JSON。将 JSON 解析为java 对象也称从JSON 反序列化 java 对象。ObjectMapper也可以从 Java 对象创建 JSON。从 java 对象生成 JSON 的过程也称为。
2023-10-18 16:17:32
1630
原创 WebSocket
早期,很多网站为了实现推送技术,所用的技术都是轮询(也称为短轮询)。轮询是指浏览器每隔一段时间向服务器发送 HTTP 请求,然后服务器返回最新的数据给客户端。常见的轮询方式分为轮询和长轮询,他们的区别如下图所示:为了更加直观的感受轮询与短轮询之间的区别,我们来看一下具体代码:短轮询的方式有一个明显的缺点,即浏览器需要不断的向服务器发出请求,然而 HTTP 请求与响应可能会包含较长的头部,其中真正有效的数据可能只是一小部分,所以这样会浪费很多的带宽资源。在下棋游戏过程中轮询操作就会出现下图情况,
2023-10-17 09:45:07
485
原创 每日一题~组合总数III
如果我们在寻找组合的时候,就进行剪枝,只保存升序的列表例如,【1,2,3】,【1,2,4】,【1,2,5】,……1、准备一个 tmp 列表保存当前集合的数据,用 list 列表保存所有符合条件的列表,用 sum 来记录当前 tmp 列表中的数据之和,用一个 used 数组来记录该数据是否已经被使用。这是一个组合的问题,所以我们可以使用深度优先搜索(DFS)的方式将所有的情况都列举出来,然后将其中符合条件的情况添加到列表中,最后返回这个列表就可以了。
2023-09-25 10:07:31
172
原创 每日一题~把二叉搜索树转换为累加
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。
2023-09-24 21:44:32
112
原创 每日一题~将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
2023-09-23 15:31:21
88
原创 每日一题~修剪二叉树
由题可知,我们要将原来的二叉搜索树调整为值在 low~high 之间的新二叉搜索树,接下来我们分析一下针对不同的节点的处理方式。2、val > high,这种情况说明 root 的右子树全部大于 high,我们这时候只需要到左子树中再进行修剪即可。1、val < low,这种情况说明 root 的左子树全部小于 low,我们只需要到右子树中再进行修剪就可以了。
2023-09-22 16:11:48
217
原创 每日一题~删除二叉搜索树中的节点
我们可以看到删除掉目标节点之后,父节点指向了右子树,右子树的节点指向了左子树,看似简单的调整。由题可知,这是一个二叉搜索树,我们删除掉一个节点之后,需要重新调整树,使其仍然是二叉搜索树,那么我们接下来分析一下有多少中删除的情况。3、删除节点的左子树和右子树都不为空,和题目中所给的例子相同,题目中给了两种结果,我们都分析一下。4、删除节点的左右子树都为空时,这种情况在左右子树都存在的情况下已经得到了解决,2、删除节点的右子树为空,当右子树为空的时候,情况和左子树相似,我们直接让。
2023-09-21 18:53:05
194
原创 Redis缓存
在程序中如果没有设置缓存的时候,用户想要获取到数据一般都是直接从数据库中获取。加入缓存之后会这样执行我们都知道查询数据库是一个比较慢的过程,对用户而言这样的体验是非常不好的。加入缓存之后,查询数据就会先在缓存中查找,如果缓存中没有才会去访问数据库,在数据库中查找到数据后再写回到缓存中以便后面查找,这样可以大大降低访问数据库的次数,从而减少多次访问数据库带来的压力,提高查询效率。缓存的优点缓存一般使用 key-value 来存储和查询数据,
2023-09-20 18:00:48
155
原创 每日一题~二叉搜索树中的插入操作
由第一步可以知道,我们是从 root 节点开始向下找,所以当 root = null 时,说明我们已经找到了那个位置,这时候我们直接返回到上一个节点,如果此时 root.left == null && root.val > val,那么直接将 val 添加到 root.left 就可以,由题可知,题目的要求是给我们一个二叉搜索树和一个 val,将这个 val 插入到二叉搜索树中,并且这个树仍然是二叉搜索树。第二种是,将 val 替换掉已经存在的节点,然后重新调整树。
2023-09-20 12:03:06
192
原创 每日一题~二叉树的最近公共祖先
由题可知,我们需要找到 p 和 q 两个二叉树的最近公共祖先节点,首先我们分析一下,这个最近公共祖先节点的可能情况。1、这个最近公共祖先节点既不是 p 也不是 q,简单来说,p 和 q 一个是某个节点的左子树,另一个是该节点的右子树,也就是示例一的情况。2、这个最近公共祖先节点是 p 或者 q,也就是说,p 是 q 的父节点或者 q 是 p 的父节点,也就是示例二的情况。如果说只有找到了一个树,那么说明另一个树是这个树的子树,则直接返回找到的那个结点就可以,原因可以看下面的图片。
2023-09-19 17:36:55
98
原创 每日一题~二叉搜索树中的众数
那么我们可以根据这一特性来获取到二叉搜索树中的所有 val,放在一个 List 中,并且这个 List 是有序的。获取到二叉搜索树中的所有 val 之后,我们接下来就可以寻找众数。我们使用 max 来记录 List 中众数出现的次数,使用 Map 来保存 val 及其出现的次数,这样在后面我们就可以直接从 Map 中获取到 val 出现的次数。,我们再使用一个 ArrayList 来存放众数,将所有的众数都存放到 ArrayList 之后,我们再将 ArraryList 中的数据拷贝到数组中就可以了。
2023-09-18 20:09:34
139
原创 HashMap
从前文我们已经知道HashMap的初始容量是16(2^4),每次扩容都是在原来的容量上增加一倍,扩容之后容量仍然是2次幂的形式。接下来我们分析一下为什么采取这种形式进行扩容,首先我们来看两段源码:图一图二图一是向 HashMap 中添加元素 putVal() 方法的部分源码,可以看到,向集合中添加元素时,每次都会使用,的计算方法来得到该元素在集合中的位置。
2023-09-17 20:37:15
188
原创 每日一题~二叉树中的搜索
我们可以利用二叉树的性质来解决这道题,例子中所给的 val 是 2,2 小于 root.val,所以我们接下来再左子树中寻找符合条件的子树即可,如果说,val 大于 root.val 的话,那我们只需要在右子树中去寻找目标子树就可以了。注意如果 root 等于 null,说明树为空,或者我们已经找到底了,这时候直接返回 null 就行了。其特点如下:设 x 为二叉查找树中的一个结点,x 节点包含关键字 val,简单来说就是左孩子比父节点小,右孩子比父节点大,还有一个特性就是”中序遍历“可以让结点有序。
2023-09-17 20:23:56
101
原创 每日一题~合并二叉树
由图可知,当两个位置都有节点的时候,直接将两个节点的 val 相加就是结果,如果在一个位置两棵树只有一棵在此位置上有节点,那么这个节点就是合并之后的结果。因此在合并二叉树的过程我们只需要做两步就可以了。
2023-09-16 20:39:28
163
原创 每日一题~最大二叉树
2. 根据根节点的 index 划分数组,我们约定保存 val 和 index 的数组名为 indexVals,indexVals[0] 是 val,indexVals[1] 是 index,beg 是数组的开始,end 是数组的结尾,那么左子树部分就是 beg~indexVals[1]-1,右子树的部分就是 indexVals[1]+1~end。我们可以写一个方法,它的返回值可以是一个数组,这样我们就可以一次获得数组中的最大值及其下标,将所得的最大值保存在根节点中。给定一个不重复的整数数组。
2023-09-15 08:41:37
174
原创 每日一题~前序中序遍历构造二叉树
接下来我们再分析一下右子树里面的数据,通过观察可以发现,在右子树的根节点左侧的数据是右子树的左子树,在右子树的根节点右侧的数据则是右子树的右子树,与整颗二叉树的分布规律相同。2、在中序遍历中找到根节点的位置 rootIndex,然后根据根节点的位置将中序遍历数组分为左子树部分和右子树部分,也就是。如上图所示,我们发现 ①号就是前序遍历结果的第一个数据,同时它也是二叉树的。,接下来我们再看 ③号,③号在前序遍历结果中在②号的后面,而且是根节点的。,②号是前序遍历结果的第二个数据,同时它还是根节点的。
2023-09-14 12:53:13
194
原创 每日一题~中序后序遍历构造二叉树
第一个节点比较容易找到,但是其他的节点就没有那么容易,因此我们准备了一个 index 用来记录找到了多少个节点,这样在找后面的节点的时候我们只需要找postorder[postorder.length-1-index] 就可以了。不难看出后序遍历的结果中的最后一个元素就是根节点,倒数第二个元素则是根节点的右子树的根节点,而倒数第三个元素则是右子树的新右子树的根节点,依次类推。3. 构建右子树,左子树,必须要先构建右子树,因为 postorder 从后往前的顺序就是右子树在先,左子树在后。
2023-09-13 12:10:32
220
原创 Redis五大基本数据类型
String 存储的种类虽然很多,但是限制了 String 的大小,最多只能存储 512MB。Redis 的有序集合是按相关分数排序的唯一字符串(成员)的集合。在 Redis 中,当你重新 set 一个已经存在的 key 时,它的 value 会变成最新的 value。:添加一个新的成员和与之有关的分数到有序集合中,如果这个成员已经存在,那么更新该成员的分数。1. 跟踪唯一的项目(例如,跟踪访问给定的博客文章的所有的唯一 IP 地址):返回在给定的范围内,排好序的有序集合的成员。
2023-09-12 22:04:55
329
原创 自动化测试介绍
自动化测试是指软件测试的自动化,即在预设状态(正常、异常)下运行应用程序或者系统,最后评估运行结果,将人为驱动的测试行为转化为机器执行的过程。自动化测试包括UI自动化、接口自动化、单元测试自动化。按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自动化测试产出投入比(ROI),可以用较少的投入获得更好的收益。
2023-03-15 16:18:38
580
1
原创 常见八大排序
从第 j 个数字开始,往前面寻找比 arr[j] 小的数,如果找到比 arr[j] 小的数,假设下标为 i,然后交换 arr[i] 和 arr[j] 即可。从 i 开始遍历,若 arr[i+1] > arr[i],则arr[i+1] 和 arr[i] 进行交换即可,交换一轮之后,最大值就会跑到最后一个位置。时间复杂度:O(N*logN)--- 直接选择排序对数据不敏感,无论有序还是无序,时间复杂度都是O(n^2)空间复杂度:最好情况——O(logN),最坏情况O(N),当N越大的时候,递归的就越深。
2023-03-14 20:45:50
436
原创 设计测试用例
需要补充的是,对于每一个应用软件系统,非功能特性的质量需求都是存在的,但是不同的项目类型对各个非功能特性的要求是不一样的,这个需要根据具体项目、具体需求和不同产品应用的特点进行分析。外部大型复杂网络应用系统,比如电子商务,网上银行,视频网站(腾讯,优酷)等,除了有复 杂的系统的功能测试需求外,在系统的性能,安全性,兼容性,容错性,可靠性等都有很高的要求。有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验 证程序是否实现了规格说明中所规定的功能和性能。
2023-03-05 08:58:47
2593
原创 认识BUG
如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;环境分为硬件环境和软件环境,如果是 web 项目,需要描述浏览器版本,客户机操作系统等,如果是 app 项目,需要描述机型、分辨率、操作系统版本等。
2023-03-03 21:41:51
606
原创 Java的抽象类和接口
🎉🎉🎉哈喽!!!大家好,这里是 我不是小明同学🎆欢迎各位小伙伴关注➕点赞➕留言➕收藏🎆我坚信努力奔跑才能与幸运不期而遇。🎆🎉🎉🎉作者知识水平有限,若有什么错误或者需改进之处希望大家指出,若是你有更好的代码希望能给博主留言,博主希望能在优快云与各位一起进步。目录抽象类抽象类语法抽象类特性接口语法规则接口使用接口的特性实现多个接口接口间的继承抽象类在解决实际问题时,我们一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理。在..
2022-05-26 11:20:54
765
29
原创 JavaSE小练习——图书管理系统
🎉🎉🎉哈喽!!!大家好,这里是 我不是小明同学🎆欢迎各位小伙伴关注➕点赞➕留言➕收藏🎆我坚信努力奔跑才能与幸运不期而遇。🎆🎉🎉🎉作者知识水平有限,若有什么错误或者需改进之处希望大家指出,若是你有更好的代码希望能给博主留言,博主希望能在优快云与各位一起进步。目录一、用户界面编辑1、管理员界面2、普通用户界面编辑编辑二、思路分析三、具体方法的实现1、Book包下的Book类和BookList类2、user包下的User类、AdminUser类和N...
2022-05-25 15:12:32
537
17
原创 Java基础(方法)
🎉🎉🎉哈喽!!!大家好,这里是禾子日月🎆欢迎各位小伙伴关注➕点赞➕留言➕收藏🎆我坚信努力奔跑才能与幸运不期而遇。🎆🎉🎉🎉作者知识水平有限,若有什么错误或者需改进之处希望大家指出,若是你有更好的代码希望能给博主留言,博主希望能在优快云与各位一起进步。目录1.方法1.1什么是方法1.2方法的定义1.3实参和形参的关系1.4无返回值的方法2.方法重载2.1为什么需要方法重载2.2方法重载概念3.递归3.1递归的概念3.2 递归执行过程分析.
2022-05-22 10:09:52
399
44
原创 Java基础知识(运算符)
一、算术运算符1、加减乘除模(+、-、*、/、%)int a=20;int b=10;System.out.println(a+b); //30System.out.println(a-b); //10System.out.println(a*b); //200System.out.println(a/b); //2System.out.println(a%b); //0🚨注意:①都是二元运算符,使用时必须要有左右两个操作数②int / int结果还是int类型,而且会向
2022-05-14 20:54:11
1076
81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人