- 博客(83)
- 收藏
- 关注
原创 网页聊天室测试报告
本项目旨在开发一个基于网页的聊天室,为用户提供实时在线交流的平台。用户无需安装额外的软件,只需通过浏览器即可随时随地参与聊天。无论是进行一对一私聊,还是加入多人群聊,都能便捷地实现文字、表情符号等信息的即时传递,满足不同用户在社交、娱乐、工作协作等多方面的交流需求。没有注册功能,不能自己实现,只能依托数据库管理相关人员来实现注册,并且密码已经泄密给他人,是一个严重bug消息列表中,与一个用户聊天有多个聊天框,不符合实际情况,是一个严重的bug。
2025-02-27 19:08:25
621
原创 商品信息管理自动化测试
1. 针对商品信息管理项目进行测试,商品信息管理项目主要有商品列表页、部门列表页、员工列表页,主要功能:对商品信息的增删改查的功能。对于商品信息管理的测试主要就是对主要功能进行测试,按照页面以及测试用例的思维导图进行自动化脚本的编写及测试。2.自动化测试一般步骤:1)使用Xmind编写web自动化测试用例2)创建自动化项目,根据测试用例实现脚本的编写及测试。
2025-01-29 20:40:15
836
原创 商品信息管理测试报告
商品信息管理系统采用前后端分离的方法来实现,前端使用Vue.js搭建前端页面,部署在Ngnix轻量级Web服务器上,后端使用SpringBoot框架完成业务实现,同时使用了Mysql数据库来存储相关的数据。项目主要实现商品信息的增删改查的功能来模拟实现了最简单的商品信息管理系统。添加商品信息时,表单输入框里没有数据,当填写的商品信息不够完善或者是商品信息都不填写时是否能添加成功。查询商品时只能根据名字查询,没有考虑用户如果想查询某个品牌的一系列商品。
2025-01-23 11:45:01
810
原创 多线程(初阶)
在多线程环境下代码的运行结果和在单线程环境下运行的结果相同,就说这个(多)线程(程序)是安全的。阻塞队列是一种特殊的队列,也遵守先进先出的原则。当队列元素满的时候,继续入队列就会阻塞,一直到其他线程从队列中取走元素当队列为空的时候,继续出列也会阻塞,一直到其他线程向队列中插入元素定时器是软件开发的一个重要组件,类似于闹钟,作用是设定一个时间,当达到这个时间后,就执行一个指定好的代码。定时器作为实际开发中常用的组件,比如在网络通信中,如果对方在500毫秒内没有返回数据,就会断开连接尝试重新连接。
2023-11-19 20:06:16
1650
7
原创 认识计算机-JavaEE初阶
进程是操作系统对⼀个正在运⾏的程序的⼀种抽象,换⾔之,可以把进程看做程序的⼀次运⾏过程;同时,在操作系统内部,进程⼜是操作系统进⾏资源分配的基本单位。进程控制块抽象:计算机内部要管理任何现实事物,都需要将其抽象成⼀组有关联的、互为⼀体的数据。在 Java 语⾔中,我们可以通过类/对象来描述这⼀特征// 以下代码是 Java 代码的伪码形式,重在说明,⽆法直接运⾏// 进程的唯⼀标识 —— pid;// 进程关联的程序信息,例如哪个程序,加载到内存中的区域等// 分配给该资源使⽤的各个资源。
2023-11-09 11:21:46
1014
17
原创 Java的JDBC编程
创建数据库连接 Connection构造sql语句创建操作命令Statement / PreparedStatement执行sql语句处理结果集(有查询的sql语句执行)释放资源,先申请的后释放JDBC 使用步骤:创建数据库连接 ConnectionDriverManager创建DataSource获取创建操作命令 Statement使用操作命令执行SQL// 查询操作// 新增、修改、删除操作处理结果集ResultSet...释放资源。
2023-11-07 22:33:56
367
5
原创 数据库约束及增删改查(CRUD)进阶-MySQL
数据约束NULL约束——使用NOT NULL 指定列不为空UNIQUE唯一约束——指定列唯一,不重复DEFAULT默认值约束—— 指定列为空时的默认值PRIMARY KEY主键约束——NOT NULL 和UNIQUE的结合FOREIGN KEY 外键约束——关联其他表的主键或唯一键 foreign key(列) references 其他表(列)CHECK约束(了解)——保证列中的值符合指定条件,例:check (sex =‘男’ or sex=‘女’)表的关系一对一。
2023-11-06 12:14:09
388
2
原创 MySQL表的增删改查(基础)
新增-- 单行插入insert into 表(字段1, ..., 字段N) values (value1, ..., value N);-- 多行插入insert into 表(字段1, ..., 字段N) values查询-- 全列查询select * from 表-- 指定列查询select 字段1,字段2... from 表-- 查询表达式字段select 字段1+100,字段2+字段3 from 表-- 别名select 字段1 别名1, 字段2 别名2 from 表。
2023-10-31 15:55:13
619
11
原创 数据库和表的相关操作
操作数据库//显示所有的数据库(数据集合) show databases;//创建数据库 create database 数据库名;//使用数据库 use 数据库名;//删除数据库 drop database 数据库名;常用数据类型//整型 INT //浮点数类型 DECIMAL(M , D) / 字符串类型 VARCHAR(SIZE) //日期类型 TIMESTAMP操作表// 查看所有的表 SHOW TABLES;
2023-10-29 10:44:39
833
19
原创 MySQL的安装和配置
存储数据用文件就可以了,为什么还要弄个数据库?文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便数据库存储介质磁盘和内存。为解决上述问题,专家们设计出更利于管理数据的软件——数据库,能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
2023-10-27 17:38:09
350
13
原创 泛型进阶-Java
一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大,泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现参数化。方法限定符 <类型形参列表> 返回值类型 方法名称(形参列表){...
2023-10-24 17:16:11
198
17
原创 反射、枚举及lambda表达式
定义:Java的反射机制是在运行状态中对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。用途在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。反射最重要的用途就是开发各种通用框架。
2023-10-22 18:48:14
150
2
原创 再谈String
使用常量串创建String类型对象的效率更高,而且更节省空间。用户也可以将创建的字符串对象通过 intern 方式添加进字符串常量池中。在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,的方式, 我们会在未来的学习中遇到各种 “内存池”, “线程池”, “数据库连接池”……上述创建方式类似,为什么s1和s2引用的是同一个对象,而s3和s4不是呢?字符串常量池在JVM中是StringTable类,实际。“池” 是编程中的一种常见的, 重要的。
2023-10-21 17:01:54
655
2
原创 Map和Set
虽然哈希表一直在和冲突做斗争,但在实际使用过程中,我们认为哈希表的冲突率是不高的,冲突个数是可控的,也就是每个桶中的链表的长度是一个常数,所以,通常意义下,我们认为。比如上述场景,需要插入元素44,先通过哈希函数计算哈希地址,下标为4,因此44理论上应该插在该位置,但是该位置已经放了值为4的元素,即发生哈希冲突。对有n个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数,即结点越深,则比较次数越多。,搜索的效率取决于搜索过程中元素的比较次数。
2023-10-18 20:20:59
117
1
原创 排序-算法
排序:使一串数据,按照其中某个或某些关键字的大小,递增或递减排列起来的操作。(本文所讲排序都是按升序排列。)稳定性:假设在待排序的记录序列中,存在多个具有相同的关键字,若经过排序,这些数据的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。把待排序的数据
2023-10-15 22:36:04
517
4
原创 java中对象的比较
优先级队列在插入元素时有个要求:插入的元素不能是null或者元素之间必须要能够进行比较,为了简单起见,我们只是插入了Integer类型,那优先级队列中能否插入自定义类型对象呢?优先级队列底层使用堆,而向堆中插入元素时,为了满足堆的性质,必须要进行元素的比较,而此时Card是没有办法直接进行比较的,因此抛出异常在Java中,基本类型的对象可以直接比较大小。2.2 引用类型比较Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较, 那为什么可以比较?因为对于用户实现自定义类型,都默认继承
2023-10-11 22:02:23
202
原创 数据结构-二叉树
二叉树的子树有左右之分,次序不能颠倒,故二叉树是有序树。Node right;// 右孩子的引用,常代表右孩子为根的整棵右子树。// 右孩子的引用,常代表右孩子为根的整棵右子树。// 左孩子的引用,常代表左孩子为根的整棵左子树。// 左孩子的引用,常代表左孩子为根的整棵左子树。:以某结点为根的子树中任一结点都称为该结点的子孙。:若一个结点含有子结点,则这个结点称为其子结点的父结点;:一个结点含有子树的个数称该结点的度,如上图,A结点的度为2。:一棵树中,所有结点度的最大值即为树的度,如上图,树的度为2。
2023-10-07 15:00:57
403
1
原创 栈和队列-Java
throw new StackNullEception("栈为空,无法获取栈顶元素");栈是一种数据结构,虚拟机栈是JVM划分的一块内存,栈帧是方法调用时,虚拟机给方法分配的一块内存。队列中可以存储元素,那底层肯定要有能够保存元素的空间,通过前面线性表的学习了解到。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,栈中的元素遵循。,进栈过程中可以出栈,则下列不可能的一个出栈序列是()依次入栈,然后再依次出栈,则元素出栈的顺。//将链表中的元素(节点)放入栈中。接口是比较多的,栈和队列均可以使用该接口。
2023-09-23 20:12:02
1411
38
原创 LinkedList与链表
LinkedList的底层是双向链表结构,链表没有将元素存储在连续空间中,而是存储在单独的节 点中,通过引用将节点连接起来了,因此在任意位置插入或者删除元素时,不需要搬移元素,效率较高。在集合框架中,LinkedList也实现了List接口:LinkedList实现了List接口,底层使用双向链表;没有实现RandomAccess接口,不支持随机访问;LinkedList在任意位置插入和删除效率较高,时间复杂度为O(1);适合任意位置插入的场景。
2023-09-22 14:40:13
819
19
原创 List与ArrayList
List中有许多方法:方法解释尾插 e将 e 插入 index 位置尾插 c 中的元素删除 index 位置元素删除遇到的第一个 o获取下标 index 位置的元素将 index 位置的元素设置为element清空判断 o 是否包含在线性表中返回第一个 o 的下标返回最后一个 o 的下标截取部分list在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架如下:ArrayList是以泛型方式实现的,使用时必须要先实例化;
2023-09-13 17:57:28
3643
40
原创 包装类和认识泛型
通俗讲就是:返回的Object数组里,可能存放的是任何数据类型,可能是String,可能是Person,运行时,直接转给Integer类型的数组,编译器认为不安全。虽然在这种情况下,数组可以存放任何类型的数据,但是,更多情况下,我们还是希望他只持有一种数据类型而不是同时持有这么多类型。实现一个类,类中包含一个数组成员,使数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值。故a和b存储127不会new一个对象,指的是同一个地址,c和d存储128都会new一个对象,指的是不同的地址。
2023-09-12 11:51:39
569
14
原创 时间和空间复杂度
在计算机发展早期,计算机的存储容量很小,所以很在乎空间复杂度,但经过计算机行业的迅速发展,计算机的存储容量已经达到很高程度,所以如今我们已经不需要再特别关注一个算法的空间复杂度。递归调用了N次,开辟了N个栈帧,每个栈帧使用常数个空间,空间复杂度为O(N)。执行次数:func2(N,M)=N+M,大O表示法为O(N+M)。执行次数:factorial(N)=N-1,大O表示法为O(N)。执行次数:func2(N)=2*N+10,大O表示法为O(N)。开辟N+1个lang类型变量的空间,空间复杂度为O(N)。
2023-09-09 21:29:58
434
4
原创 初识集合框架 -Java
数据结构是计算机存储、组织数据的方式,指相互之间存在的一种或多种特定关系的数据元素的集合。算法是定义良好的计算过程,输入一个或一组值,输出一个或一组值。简单来说算法就是一系列计算步骤,输入数据通过算法转化为输出结果。
2023-09-09 10:12:47
548
9
原创 大乘数法 -Java
以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。数据范围: 读入的数字大小满足 0≤n≤10的。将两个数位的乘积除以10的余数放在本位,将两位数的乘积对10取余放在前一位,本位对应的数组下标为i+j-1。由题知输入的数为字符串,就可以使用库函数来求数字的位数 ,进而定义一个数组。,其中i的初始值为num1.length-1,j的初始值为num2.length-1。假设输入的一个是二位数,一个是三位数。输入:"11","99"返回值:"1089"输入:"1","0"
2023-09-08 15:39:31
209
8
原创 异常-java
Java中虽然已经内置丰富的异常类, 但不能完全表示实际开发所遇到的一些异常,此时需要维护符合我们实际情况的异常结构。例如:实现一个用户登陆功能//用户名//密码//登录if (!} if(!System.out.println("登陆成功");在处理用户名密码错误时可能需要抛出两种异常,我们可以基于已有的异常类进行扩展(继承), 创建和业务相关的异常类。自定义异常类,然后继承自Exception 或者 RunTimeException;
2023-09-06 19:52:03
520
13
原创 指针-C语言(初阶)
指针是内存中一个最小单元的编号,也就是地址。平时所说的指针指的是指针变量,是用来存放内存地址的变量。指针变量:通过&(取地址操作符)取出变量的内存起始地址,将地址存放到变量中,这个变量就是指针变量。//在内存中开辟一块空间//p为指针变量,使用&取出变量a的地址return 0;指针变量用来存放地址,地址是唯一标识一个内存单元的,指针的大小在32位平台是4个字节,在64位平台是8个字节。
2023-08-26 07:00:00
519
10
原创 数组-C语言(初阶)
即使在函数参数部分写成数组的形式: int arr[] 表示的依然是一个指针: int *arr,函数内部的 sizeof(arr) 结果是首元素的大小即4。数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1,数组的下标如果小于0,或者大于n-1,就说数组越界访问。type_t 指数组的元素类型,arr_name数组名,const_n 是一个常量表达式,用来指定数组的大小。操作符: [] ,下标引用操作符。它就是数组访问的操作符,数组下标从0开始,数组大小可以通过计算得到。
2023-08-25 07:00:00
237
19
原创 操作符详解-C语言
操作符分为算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式和下标引用、函数调用与结构体成员。逻辑或特点:在表达式1 || 表达式2中,只要表达式1为真(非0),结果就为真(非0),后面语句不再执行。逻辑与特点:在表达式1&&表达式2中,只要表达式1为假(0)结果就为假(0),后面语句不在执行。如果表达式1为真(非0)结果为表达式2的结果,否则为表达式3的结果。printf("二进制中1的个数 = %d\n", count);
2023-08-25 07:00:00
283
1
原创 函数-C语言(初阶)
自定义函数和库函数一样,有函数名,返回值类型和函数参数,自己设计函数来完成业务的需要。statement;//语句项ret_type 返回类型fun_name 函数名para1 ,para2函数参数示例:设计一个函数找两个整数的最大值(x):(y);告诉编译器有一个函数叫什么,参数是什么,返回类型是什么,函数的声明一般出现在函数的使用之前。要满足先声明后使用,函数的声明一般要放在头文件中。
2023-08-24 07:00:00
497
13
原创 对字符串中所有单词进行倒排-C语言/Java
将分割得到的字符串数组即单词数组倒序存入新字符串中,新字符串每两个单词中间有一个空格,打印新字符串。每次输入指定字符集即一个单词,将其放入数组中,再进行倒序输出。输入一个字符串,输出字符串中单词的倒序。以非大小写字母为分隔符,将输入的整个字符串进行分割,{ //输入指定字符集即大小写字母。//以非大小字母的字符为分隔符。输入:I am a student。输出:student a am I。输入:$bo*y gi!输出:l r gi y bo。
2023-08-14 16:51:33
1257
48
原创 两个数组的交集-C语言/Java
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]//num2[i]为两个数组共有元素。//两个集合相同元素的个数。//存放两个数组的集合。输出结果中的每个元素一定是。解释:[4,9] 也是可通过的。
2023-08-13 19:42:39
1193
19
原创 密码检查-C语言/Java
输入一个数n,接下来有n(n≤100)行,每行一个字符串,表示一个密码,输入保证字符串中只出现大写字母,小写字母和数字,字符串长度不超过100。现在小明受到了n个密码,他想请你写程序判断这些密码中哪些是合适的,哪些是不合法的。//分别记录小写字母、大写字母、数字和其他字符的个数。3. 密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种;输入n行,如果密码合法,输出YES,不合法输出NO。//分别记录小写字母、大写字母、数字和其他字符的个数。1. 密码只能由大写字母,小写字母,数字构成;
2023-08-13 16:37:33
486
4
原创 尼科彻斯定理-C语言/Java
输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。//如果不满足条件,i的值为后一个奇数。//用while来找m个奇数相加的第一个奇数。输出:31+33+35+37+39+41。方法2:找规律,找到首个相加的奇数和输入的数之间的关系。//如果不满足条件,i的值为后一个奇数。//用while来找m个奇数相加的第一个奇数。输出分解后的string。
2023-08-13 15:14:02
664
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人