自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 测试用例基础知识

测试用例 (Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。测试用例简单来说就是指导如何做测试的文档,该文档主要记录需要验证被测软件的是否满足需求。

2023-10-28 15:36:40 565

原创 基于Spring Boot和WebSocket的在线聊天室测试

项目旨在开发一个类似于微信聊天室的功能,让用户可以在线实时聊天,提高沟通效率。通过用户登录模块、用户注册模块、好友管理模块和消息传输模块的实现,用户可以在相同的频道里发送和接收消息,实现在线聊天的功能。登录页面(用户名:zhangsan,密码:123)

2023-10-08 17:41:19 759

原创 Web Tour Server窗口闪现

以管理员身份打开cmd命令行,输入命令netstat -aon|findstr “1080”,查看1080端口占用情况。2.右击选择编辑,在最后一行加上pause,保存后重新打开Server窗口。输入taskkill /f /pid pid值 命令,终止占用的进程。1.打开该文件所在位置。

2023-09-23 12:01:00 412

原创 JZ42连续子数组的最大和

遍历整个数组,每当遇到一个新元素时有两种情况,要么加上它会更大,要么加上它会更小。所以dp的状态转换应该为:dp[i] = Math.使用动态规划,这里用dp[]数组表示以下标i为终点的最大连续子数组和。

2023-08-28 15:30:52 168

原创 JZ41数据流在的中位数

首先对于中位数,我们都知道,排序后如果是数组长度是奇数,中位数就是中间的值,也就是n/2的值。如果数组长度是偶数,那么中位数就是中间两个值相加除2,也就是 a= n/2;中位数=(a+b)/2。这样看来我们需要一个排序后的数组,由题意可知这个数组不断在变长,如果增加一个元素排序一次未免不合理,那么我们这里直接使用插入排序。

2023-08-28 15:30:13 97

原创 JZ40最小的K个数

最简单的方法:排序后数组顺序是由小到大的,也就是说此时数组前k个数就是我们要求的结果。注意本题不需要去重。

2023-08-13 16:56:15 133

原创 JZ39数组中出现次数超过一半的数字

最简单用哈希表来记录每个数字在数组中出现的次数,在遍历这个数组时同时进行判断是否满足条件。

2023-08-13 16:55:36 78

原创 JZ38 字符串的排列

这里就要用到剪枝操作了,将整个数组排序后,相同元素必然相邻,在同一层的相同元素要进行剪枝操作,当vis[i-1]=false,相邻且arr[i-1]没有被访问过时,就表示当前是同一层。在本题中直接跳过arr[i]作为dfs开头的路径就ok。首先我们来说全排列,设置一个vis数组来记录当期元素是否被使用过,然后dfs遍历整个数组,列出所有符合条件的路径就是全排列。那么如果数组中有相同元素,将其作为路径开头是不是就会出现路径重复的问题呐?这里用到了全排列和剪枝。

2023-08-13 16:54:55 228

原创 JZ37序列化二叉树

进行反序列化的时候,首先处理空树的情况,也就是说如果字符串是”#“表示这是一个空树。首先,序列化就是将二叉树的节点值放入一个字符串中,这里可以按照前序遍历的思路来进行操作,谦虚遍历是:根左右的情况,其中根据题意我们用"#"来表示空节点,用!由于我们在序列化的时候采用的是前序遍历,因此在反序列化的过程中,我们也要采用前序遍历。在前序递归函数中,如果遇到非空节点会将其添加到str中,当然也包括表示节点与节点间分割的!首先处理空树的情况,在空树时,我们返回”#“,然后调用递归函数前序递归遍历二叉树。

2023-08-13 16:54:10 99

原创 JZ36二叉搜索树与双向链表

创建两个指针,一个指向head,一个指向当前遍历的前一个节点也就是pre。先找到双向链表的头也就是树的最左边节点,初始化head和pre。处理中间根节点,然后开始连接pre和当前节点,连接后将pre更新为当前的节点,根据左根右的顺序,处理完左子树和根节点,就递归进入右子树继续进行处理。由题目可知,这里的二叉搜索树转成双向链表的符合左根右的逻辑顺序,且是一个递增序列。在递归的过程中,递归的出口就是节点为空。

2023-08-13 16:52:17 121

原创 J35复杂链表的复制

如果我们将拷贝后的节点插入到原始链表相应节点的后面,这时连接随机节点时,原始链表随机指针的后一个元素就是原始链表的随机节点,该节点的后一个节点就是拷贝出的新节点。我们在创建节点的时候,可能当前节点创建了,但是当前节点的随机指针指向的节点还没创建,这种情况下,我们只能连接next指向的节点,而不能连接随机节点。这里我们采用双指针的方法。

2023-08-13 16:51:38 83

原创 JZ34二叉树中和为某一值的路径

从根节点开始向左右子树进行递归操作,在递归操作中要处理的是当前路径更新,目标值更新,最后如果当前结点是叶子结点就要判断这条路径是否符合题目要求,如果符合就加到结果里面。这里求的是和为某一值的路径,要用dfs算法,也就是说这里使用深度优先搜索算法。

2023-08-13 16:50:53 58

原创 JZ33二叉搜索树的后序遍历序列

我们使用一个栈来存储当前的输入数组,也就是说,栈中先出的是根结点,如果数组元素小于栈顶元素,就表明此时它是左子树的根,大于栈顶元素就是右子树的根。通读题目后,我们可以得出,二叉搜索树是左子节点小于根节点,右子节点大于根节点。符合要求就是true,否则就是false。栈的特点是:先进后出。

2023-08-13 16:49:58 110

原创 JZ32 从上往下打印二叉树(Java)

首先,队列是尾部插入,头部删除的一种数据结构。在遍历树的过程中使用层序遍历的话,是从根开始由左向右进行遍历的,那么我们在遍历树的时候将当前根的结点存入到队列中去,遍历到结点时将其从队列中删除,这样一来,队列poll方法获取的队列的头就是按从上到下顺序的。也就是我们要的结果。不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。

2023-08-12 22:37:11 204

原创 秋招备战笔试Day3

数组中出现次数超过一半的数字,字符串中找出连续最长的数字串

2023-08-10 17:27:30 192

原创 秋招备战笔试Day2

也就是说static定义的变量一定是静态成员变量。

2023-07-31 18:14:36 181

原创 秋招备战笔试Day1

/...//...//...首先这是一个叫Base的类,有不带参数的构造方法,带一个参数的构造方法,这里构成了重载。有一个fun方法,还有一个Child继承了Base类。选项中所有的方法全是fun的方法,也就是说这里要与父类的fun方法构成一个重写的关系,重写的特点是:1、必须是在继承里,2、方法名、返回值类型、参数个数和参数类型 都必须相同3、派生类重写的方法的访问权限不能低于基类的权限4、派生类抛出的异常应该和基类相等或比基类更小。

2023-07-29 19:46:57 190

原创 非线程安全问题

也就是说,在这三个步骤中,如果有多个线程同时访问,那么很大概率会出现“非线程安全”问题。如果一个线程要执行run方法,首先要判断run方法是否上锁,如果上锁,说明有其他线程在调用run方法,这个线程就要进行等待,等待其他线程将run方法调用结束后,才能继续调用run方法。当一个线程想要执行同步方法里面的代码,它会首先尝试去拿到这把锁,如果能拿到,那么该线程就会执行同步方法中的代码。也就是说,一共创建了3个线程,每个线程有自己的count变量,在执行过程中自己减少自己的count变量的值。

2023-07-13 22:42:28 317 1

原创 如何使用多线程

一个进程正在运行时,至少会有一个线程在运行。执行结果:这里输出的main其实是一个名字为mian的线程在执行main()方法中的代码,也就是说,当前线程的名字mian与mian()方法无关。该线程由JVM创建。运行结果:这里B类中的bMethod方法打印出当前执行线程的名称依旧是main,进一步说明当前线程名称为main与jmain方法无关。Java中实现多线程编程的方式主要有两种:一种是继承Thread类,另一种是实现Runnable接口。

2023-07-09 12:36:09 151

原创 线程随机性

如果调用的方法不是thread.start()而是thread.run(),这里就不是异步执行了,而是同步执行。时间片就是CPU分配给各个程序的时间,每个线程被分配一个时间片,在当前的时间片内执行线程中对应的任务。注意,当CPU在不同线程上进行切换时是需要耗时的,因此创建的线程越多,运行效率越慢。多线程随机输出的原因是CPU将时间片分给不同的线程,线程获得时间片后执行相应任务,所以这些线程在交替执行输出,导致上述的输出结果乱序。上述结果说明执行start()方法的顺序不代表run()方法的顺序。

2023-07-09 11:52:07 176

原创 使用常见的三个命令分析线程的信息

查看线程等待状态与信息可以采用3种常见命令。jps + jstack.exe jvisualvm.exe jmc.exe

2023-07-09 11:16:38 810

原创 测试基础知识

W模型强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。其中单元测试是最基础的测试,集成测试是测试组件之间的接口,系统测试将整个系统视为一个整体进行测试,验收测试检查系统是否符合要求,Alpha测试是再开发之前内部测试,Beta测试是在发布之前公开测试。同时还有非功能测试、安全测试、可移植性测试等类型的测试。通过这些明确的角色、会议和工件,Scrum 帮助团队实现更好的协作、更高效的决策和更好的透明度,从而提高团队的生产效率和创造力。

2023-04-16 14:04:36 485 3

原创 如何创建Spring项目

添加Spring配置文件spring-config.xml。(放到resources根目录下。在项目的pom.xml中添加Spring支持。这里可以到中央仓库找一下。这里使用的是2023版本的idea。在Java文件夹下创建一个启动类。

2023-04-16 12:46:04 182

原创 Spring是什么?关于Spring家族

Spring是一个开源的Java企业级应用程序开发框架,由Rod Johnson于2003年创建,并在接下来的几年里得到了广泛的发展和应用。它提供了一系列面向对象的编程和配置模型,支持开发各种类型的应用程序,包括Web应用、移动应用、消息传递应用、批处理应用等等。Spring框架是一个轻量级的框架,其核心原则是面向接口编程和控制反转(IoC)。通过使用Spring框架,可以简化应用程序的开发、部署和测试,并提高应用程序的可维护性和可扩展性,总而言之使用Spring的根本目的就是为了简化Java开发。

2023-04-16 10:30:41 1738

原创 Linux的基本命令

p,--parents可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建好尚不存在的目录。功能:切换目录,将当前工作目录改变到指定的目录下(Linux系统中文件和目录被组成一颗目录树。-R/-recursive:递归处理,将指定目录下的文件与子目录一并处理。这时要按Esc按钮。-f/--force:强行复制文件或目录,不论目的文件是否已经存在。将源文件或目录移动到目标文件或目录中。-r:递归查找,可以搜索多级目录下的所有文件。对于目录:列出该目录下所有子目录和文件。

2023-04-01 19:43:24 496

原创 三次握手四次挥手详解(一篇足以

第三次挥手:客户端收到服务器发送的确认报文后,客户端将会进入FIN-WAIT-2状态,等待服务器发送连接释放报文,服务器将要传输的最后的数据传输完毕后,向客户端发送连接释放报文,此时,服务器进入到LAST-ACK状态,等待客户端的确认。TIME-WAIT必须等待2MLS是因为等待2MLS可以保证客户端最后一个报文段能够到达服务器,如果未到达,服务器则会超时重传连接释放报文段,使得客户端、服务器都可以正常进入到CLOSE关闭状态。其中,主动进行连接的是客户端,被动进行连接的是服务器。

2023-03-26 22:40:18 79

原创 详解IP地址与子网掩码

假设使用子网掩码255.255.128.0(/17)来划分子网,意味着划分子网后,高17位都是网络位/网络号,也就是说将原来16位主机号,划分为1位子网号+15位主机号。本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(网络编程)而言,常见的开发方式都是本机到本机的网络通信。(2)网络通信时,子网掩码结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号)。网络号和子网号统一为网络标识(划分子网后的网络号/网段)。

2023-03-26 10:37:06 3984

原创 传输层协议之TCP协议详解

传输层重点协议:UDP和TCP。作用:负责数据能够从发送端传输到接收端。(在进行网络编程时,我们会使用到socket,然而一旦调用socket就进入到了传输层的范畴内)前面我们已经讲过UDP协议了,这次我们来讲解什么是TCP协议,TCP协议有哪些特点。

2023-03-19 14:11:15 594 1

原创 链表(一):移除链表元素、设计链表等力扣经典链表题目

那么,在第index个节点前添加节点的重要任务就是找到第index个节点的前一个节点(这样才能操作第index个节点)。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。链表的删除操作如上图所示,我们需要先找到要删除的节点,但是要注意,在操作某一节点时,我们必须要知道它的前一个节点。在第 index 个节点之前插入一个新节点,例如index为0,那么新插入的节点为链表的新头节点。插入后,新节点将成为链表的第一个节点。

2023-02-26 21:02:18 522 3

原创 数据结构入门DAY1

我们可以想到,对于连续子数组的最大和,有两种递推公式:一种是maxAns(i-1)+nums[i]表示nums[i]加入当前连续子序列和。那么对于整个数组,我们可以求出在每个位置的maxAns(i),然后在这些maxAns(i)中选出最大的那个连续子数组的最大和。其次,当我们将这个数组进行排序后,我们会发现,相同的元素一定是相邻的,所以我们也可以采用排序的方法来解决这道题。这样的话,我们只需要将数组排序后,遍历数组,寻找下标为i的元素与下标为i+1的元素是否相同即可(注意,这里的i从0开始)。

2023-02-26 19:41:17 240

原创 数组:二分查找、移除数组等经典数组题

每一轮迭代,将 nums[end]加到 sum,如果 sum≥s,则更新子数组的最小长度,然后将 nums[start] 从 sum 中减去并将 start 右移,直到 sum

2023-02-25 16:29:31 382

原创 关于死锁的一些基本知识

关于死锁

2023-02-25 14:59:45 939

原创 计算机网络 — UDP协议(看这一篇就可以

UDP是传输层协议,这意味着UDP的数据包需要经过IP协议的封装,然后通过IP协议传输到目的电脑。可以在应用层,针对大的数据报进行分包(拆分成多个部分),然后再通过多个UDP数据报分别发送(但是这样子无法保证顺序)接收方再将收到的几个包拼接成完整的数据。当运输层从IP层收到UDP数据报时,就是根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点--应用程序。UDP协议首部中有一个16位的最大长度,也就是说一个UDP能传输的数据的最大长度是64K(包含了UDP的首部)。

2023-02-25 14:51:01 3799

原创 计算机网络之IP协议(详解

计算机网络之IP协议(详解超级详细!!!

2023-02-23 22:20:21 573

原创 关于CSS的简单知识

Java开发要掌握的前端知识 ~

2023-02-22 16:04:25 1554 2

原创 HTML基础知识

HTML基础知识

2023-02-02 22:51:47 761 5

原创 文件操作(Java)

关于文件操作

2023-01-31 16:19:09 617 4

原创 关于网络编程

关于Socket套接字,UDP,TCP等基础知识

2023-01-29 15:18:58 1878 3

原创 进程和线程

进程和线程的区别

2023-01-21 20:18:55 1435 1

原创 网络初识

网络初识,一些概念知识。

2023-01-15 19:05:59 478 3

空空如也

空空如也

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

TA关注的人

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