第一次个人编程作业
| 这个作业属于哪个课程 | 班级链接 |
| 这个作业要求在哪 | 点此跳转 |
| 这个作业的目标 | 完成一个论文查重项目,独自开发、管理、维护项目 |
github : https://github.com/r12-7/3122004665
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planing | 计划 | 40 | 60 |
.Estimate | .估计这个任务需要多久时间 | 10 | 10 |
Development | 开发 | 300 | 480 |
.Analysis | .需求分析(包括学习新技术) | 120 | 240 |
.Design Review | .设计复审 | 20 | 30 |
.Coding Standard | .代码规范 | 10 | 10 |
.Design | .具体设计 | 40 | 30 |
.Coding | .具体编码 | 240 | 240 |
.Code Review | .代码复审 | 60 | 30 |
.Test | .测试 | 60 | 50 |
.Reporting | .报告 | 90 | 120 |
.Test Report | .测试报告 | 20 | 20 |
.Size Measurement | .计算工作量 | 20 | 10 |
.Postmortem & Process Improvement Plan | . 事后总结,并提出过程改进计划 | 60 | 70 |
. 合计 | 1110 | 1540 |
开发环境
开发工具:IDEA
项目构建工具:maven
单元测试:Junit
依赖外部jar包:汉语言处理包HanLP
性能分析工具:JProfiler
项目模块设计与实现
·main:main 方法所在的类
·HammingUtils:计算海明距离的类
·SimHashUtils:计算 SimHash 值的类
·TxtIOUtils:读写 txt 文件的工具类
·ShortStringException:处理文本内容过短的异常类
项目结构
算法核心
Simhash+海明距离:SimHash通过将文本特征映射为紧凑的哈希值,简化了相似性比较的过程;而海明距离则用于快速判断这些哈希值之间的差异大小,以确定文本的相似度。
测试结果
性能分析
覆盖率
可能出现的异常以及处理方法
·数组下标越界异常:在读取命令行参数之前,检查 args 的长度,确保它至少有3个参数
if (args.length < 3) { System.err.println("Error: Please provide three file paths as arguments."); System.exit(1); }
·空指针异常:在使用这些对象之前,检查它们是否为 null
![](https://img2024.cnblogs.com/blog/3509664/202409/3509664-20240910214841311-2045810925.png)
·文件未找到异常:确保输入的文件路径正确,并且文件存在。可以在 TxtIOUtils.readTxt() 中处理该异常或在主程序中捕获异常
try { String str0 = TxtIOUtils.readTxt(args[0]); String str1 = TxtIOUtils.readTxt(args[1]); } catch (FileNotFoundException e) { System.err.println("Error: File not found. Please check the file paths."); e.printStackTrace(); System.exit(1); }