- 博客(39)
- 收藏
- 关注
原创 简聊测试报告
摘要 本文档针对轻量级即时通讯项目“简聊”进行了全面测试,涵盖功能、界面及性能三大维度。功能测试验证了注册/登录、消息收发等核心流程的正向与异常场景;界面测试确保各页面布局、交互及兼容性符合设计;性能测试通过50线程压力测试评估关键接口(登录、消息获取等)的稳定性。测试发现1个次要缺陷(注册页面背景缺失),已修复。结论表明核心功能运行正常,消息必达性及历史记录保存完整,系统满足轻量化、高可用的设计目标。附完整性能测试报告链接供参考。
2026-06-15 19:21:31
190
原创 好运连连测试报告
【摘要】本文档为通用抽奖管理平台"好运连连"的完整测试方案,涵盖功能、界面、自动化及性能测试全流程。主要内容包括:1)项目背景与测试范围(功能/界面/自动化/性能测试);2)核心模块测试用例设计(登录/注册/抽奖功能);3)自动化实现(基于Java+Selenium的WebUI测试和Pytest+Requests的接口测试);4)性能测试方案(50线程梯度压测关键接口);5)缺陷分级标准与报告模板;6)测试结论(核心功能正常,修复2个缺陷)。附自动化测试报告和性能测试报告链接,验证系统满
2026-06-15 18:34:58
304
原创 Jmeter 的使用
目录线程组HTTP请求默认值HTTP信息头管理器查看结果树用户定义的变量CSV数据文件设置JSON提取器JSON断言同步定时器聚合报告事务控制器逐步增压测试导出测试报告 使用Jmeter来测试已经写好的博客系统 要进行测试,先添加线程组,并且设置参数: 这里设置线程数为3,相当于有三个用户发起请求: 由于他们的IP地址和端口号都一样,为了方便在请求之前设置一个请求默认值,将请求要发送给的ip地址和端口号写死: 因为后端接口要接受的请求是j
2026-04-17 18:40:59
440
原创 性能测试相关概念
性能测试是通过模拟用户请求来评估系统性能指标的测试方法。主要性能指标包括并发量(同时在线用户数)、响应时间(请求处理总耗时)和吞吐量(单位时间处理能力)。性能测试分为基准测试(单用户)、并发测试(多用户同时操作)、负载测试(逐步增加压力寻找性能拐点)、压力测试(超出极限负载)和稳定性测试(长时间运行)。其中负载测试关注系统在性能要求内的最大承受能力,而压力测试则测试系统崩溃的临界值。通过这些测试可以发现系统瓶颈,为性能优化和容量规划提供依据。
2026-04-07 16:51:55
463
原创 UDP协议和TCP协议
在之前的中,我们使用UDP和TCP套接字分别写了一个回显服务器,但是在这篇博客中,我会对UDP协议和TCP协议的格式进行主要的介绍。
2025-11-02 15:34:10
901
原创 HTTPS 相关知识
所谓的加密,就是把明文转换成别人看不懂的密文;解密就是把别人看不懂的密文,转换为能看得懂的明文。在进行加密解密的时候,需要使用一个辅助的工具就是密钥。(就像我之前在某一部电视剧中看到的,双方都有一本《诗经》,在发电报的时候使用很多组合在一起没有意义的数字表示他们要发送的情报,这些数字代表的是某一个字在《诗经》中的第几页第几行的第几个字,在收到电报之后,他们通过这些数字对照《诗经》就能知道电报的真实内容。那么对于不知道他们这种加密方式的人来说,这个电报的信息他们就不会知道了。
2025-10-30 20:58:01
1040
原创 HTTP 协议以及 fiddler 的使用
在这个 URL 中,C++ 被写成了 C%2B%2B,这是因为在 URL 中本来就存在像&、=这些特殊字符,所以 + 也可能会被 URL 认为是查询字符串中的某个特殊字符,但是这个只是我们要查询的东西,所以就通过 URL encode 将 + 这样的特殊字符进行了转码(将需要转码的字符按照一个字节一个字节取出来之后转为16进制,并且在前面加上%符号),这里的%2B就是因为 + 被转码转为了2B。Header 在请求中称为“请求头”,Header中是请求的属性,由许多对键值对组成,每个键值对占一行;
2025-10-29 16:04:23
1128
1
原创 多线程之定时器
要注意的是,这里的第一个参数是一个TimeTask类型的对象(这个TimeTask类是一个抽象类,在实际的使用中,我们通常使用匿名内部类的方法进行创建对象)。从上述的代码中可以看出,timer通过多次调用 schedule 方法完成多次任务,这些任务的执行顺序与代码的编写顺序无关,而是与他们的等待时长有关。并且,与线程池相同,定时器不会自己关闭,在执行完所有任务的时候还是需要手动关闭(原因是也和线程池的原因一样,定时器中也包含前台线程,所以会阻碍程序结束)。
2025-10-27 16:50:38
348
原创 多线程之线程池
线程池的工作原理就是,先创建一个线程池,然后通过submit方法(submit方法中的是一个Runnable,这里使用的是匿名类的方法来创建对象)给任务队列提交一个任务,这里的任务队列其实就是阻塞队列,把这个任务提交之后,通过阻塞队列安排线程进行执行这个任务。在多线程编程中,每当需要一个线程的时候,我们就要进行创建线程的操作。”这个东西,线程池就是先把线程创建好放在“池子”里,等到我们需要使用线程的时候直接从里面拿就好了,并且在用完之后,将线程再重新放入这个“池子”中。
2025-10-26 22:07:55
1003
原创 多线程之阻塞队列
阻塞队列是一种特殊的队列,也遵守“先进先出”的规则。队列为空时,尝试出队列,出队列操作就会阻塞,等到其他线程为队列添加元素之后阻塞结束;队列为满时,尝试入队列,入队列操作就会进行阻塞,等到其他线程去除队列中的元素之后阻塞结束。阻塞队列最主要的一个应用场景就是“生产者消费者模型”。
2025-10-25 19:32:25
629
原创 Java网络编程
DatagramSocket是UDP Socket,用于发送和接收UDP数据报。DatagramSocket构造方法:方法签名说明创建一个UDP数据报套接字的Socket,绑定到本机任意一个随机端口(一般用于客户端(客户端的端口号一般都是会变化的,所以不需要指定))创建一个UDP数据报套接字的Socket,绑定到本机指定的端口(一般用于服务器(因为服务器的端口号指定的话就会比较方便,返回数据的时候可以直接指定这个端口号))DatagramSocket方法:方法签名说明。
2025-10-23 23:15:04
796
原创 网络中的基本概念
是连接不同地区局域网计算机通信的远程网。客户端也称工作站,指连入网络的计算机,它接收网络服务器的控制和管理,能够共享网络上的各种资源。这里说的路由器和交换机都是普通的路由器和交换机,因为随着社会的不断发展,科技的不断进步,出现了一些能够实现从传输层到物理层的路由器和能够实现从网络层到物理层的交换机,这些我们就不再进行讨论。对于协议来说,往往分为几个层次进行定义,分层的作用有点像接口,目的是为了让相邻的两层之间都遵守规范进行对接,使用方不关心提供方是如何实现的,提供方不展示实现细节,只需要开放接口就好了。
2025-10-22 21:08:03
793
原创 Java中的单例模式
单例模式是Java中的一种设计模式,它强制要求某一个类,在某一个程序中,必须只有一个实例。这个类提供了一种访问方式,可以让其他类进行直接访问它的对象,而不需要实例化该类的对象。单例模式的目的是解决频繁创建和销毁全局使用的类实例的问题,使用单例模式能够减少开销。注意单例类只能有一个实例单例类必须自己创建自己唯一的实例单例类必须给所有其他对象提供这一实例。
2025-10-21 17:52:55
246
原创 Java中的文件操作
字符流在进行读取的时候,会根据文件的编码进行解析,读一次就会读到3个字节,将这三个字节组合起来发现是‘你’这个汉字,然后在unicode码表中找到‘你’对应的编码值返回。在读写文件的时候,是以字节为单位,主要是针对处理二进制文件的时候使用的,包括两个抽象类:InputStream和OutputStream。判断一个文件是二进制文件还是文本文件最简单的办法就是,使用电脑中自带的记事本打开文件,如果打开是一些有意义的字符组成的文本(例如中文、英文等)就说明是文本文件,如果打开是乱码,就说明是二进制文件。
2025-10-19 21:24:32
705
原创 线程安全(synchronized、volatile)
线程安全是多线程编程中的一个概念。在多个线程同时对某个资源进行操作时,线程安全的代码会通过同步机制保证多个线程的运行是正常且正确的,不出现数据污染等意外情况(或者说在多线程中运行代码的结果与在单线程中运行的结果一致时,可以认为是线程安全的)。wait 和 notify 的四种方法都是 Object 的方法。wait 需要搭配锁使用,sleep 不做要求;
2025-10-13 19:00:00
717
原创 Java多线程的线程状态
NEW:在 Java 源码中的解释是“尚未启动的线程的线程状态”,意思就是,这个线程需要做的工作已经全部准备完毕了(run方法已经重写),但是还没有使用 start 方法启动该线程;RUNNABLE:在 Java 源码中的解释是“可运行线程的线程状态”,意思就是,有其他的线程启动了这个线程,这个线程正在运行中或者是已经启动,但是在等待某些资源中,但并非是阻塞;
2025-10-11 17:44:37
954
原创 Thread类的基本用法
目录1 线程创建2 线程启动3 Thread的构造方法4 Thread的常见属性5 线程中断6 线程等待7 线程休眠8 获取线程实例在创建线程的时候,我们重写了 run() 方法,但是其实 run() 方法中的内容是该线程需要做的工作,而不是真正地将线程启动了,要启动线程需要使用 start() 方法。此时,我们虽然创建了一个线程,并且也重写了 run() 方法,但是在进行运行的时候却发现并没有结果,是因为在 main 线程中,我们并没有启动 thread 线程。此时,只需要写 thread.start()
2025-10-10 19:51:31
833
原创 异常以及异常处理
在Java中,异常是指在程序执行过程中发生的不正常的行为,会中断程序的正常执行。在之前的学习中,我们也遇到了一些异常,例如:1.算术异常// 分母为 0// 异常信息2.数组越界异常// 数组长度为5// 访问数组下标为 10// 异常信息3.空指针异常// 数组为空// 异常信息在开发中,有时候Java中已经内置的异常类不够我们使用,所以我们就需要自己进行定义。示例:实现一个登录系统的时候,当用户名或者密码输入错误的时候,我们需要抛出异常并且进行处理。
2025-09-23 20:29:33
1034
原创 数据库的约束和设计
本文介绍了MySQL数据库中的约束类型和数据库设计规范。数据库约束包括非空、默认值、唯一、主键、外键和CHECK约束,用于确保数据完整性和一致性。数据库设计部分详细讲解了三大范式:第一范式要求原子性数据,第二范式消除部分依赖,第三范式解决传递依赖。文章还阐述了数据库设计过程,包括实体抽象、E-R图绘制和表创建,并分析了三种实体关系类型(一对一、一对多、多对多)的建模方法。
2025-09-19 10:37:34
871
原创 算法相关题目(数组)
本文主要包括三道oj题,都是与数组相关的,其中也有题目的拓展内容,最主要的学习做题的思考,可能题目本身并不是很难,但是可以有更好的方法来解决。
2025-07-15 15:52:39
1025
原创 Java——抽象类与接口
本文主要介绍关于抽象类和接口的相关知识,此外还有 Object 类中toString 方法和 equals 方法的简单介绍
2023-04-08 13:37:48
614
原创 如何利用命令行提交代码到Gitee
其实在idea中添加、提交文件,和在普通文件夹中添加、提交文件的操作是一样的,只是用idea打开了文件夹而已,要实在要说区别,那就是在idea中打开的话,会有很多自带的.xml文件。在码云创建好仓库后的页面,点击红色方框中的按钮就可以复制该仓库的地址,地址有两种,一种是HTTPS,一种是SSH,在这里我选择的是SSH方式的地址。6.继续步骤2,返回如下结果 ,会有一个警告,告诉我们这是一个空的仓库,但是没有关系,因为我们本身创建的就是一个空仓库。这时显示出来的就是公钥,至于私钥是存储在我们自己的电脑上的。
2023-04-02 23:16:49
1554
原创 Java——继承与多态
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承允许程序员在保持原有类特性的基础上进行扩展,增加新功能。继承主要解决的问题是共性的抽取,实现代码复用多态通俗的来讲,就是多种形态,具体来说就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。就比如,同样都是打印,彩色打印机打印出来的就是彩色的,黑白打印机打印出来的就是黑白的;同样是吃饭,有的人容易吃胖,但是有的人就不容易吃胖。
2023-03-17 13:34:43
198
原创 Java——数组的定义与使用
数组:可以看作是相同类型元素的一个集合。在内存中是一段连续的空间。数组中存放的元素其类型相同数组的空间是连在一起的一个元素挨着一个元素,中间没有空隙每个空间都有自己的编号,起始位置的编号为0,即数组的下标。
2023-03-12 19:10:41
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅