第一次个人编程作业

| 这个作业属于哪个课程 | 班级链接 |
| 这个作业要求在哪 | 点此跳转 |
| 这个作业的目标 | 完成一个论文查重项目,独自开发、管理、维护项目 |

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); }

posted @ 2024-09-10 21:51  r12z  阅读(109)  评论(0编辑  收藏  举报