这个作业属于哪个课程 | 计科21级12班 |
---|---|
这个作业要求在哪里 | 个人项目 |
这个作业的目标 | 熟悉个人软件开发流程 |
gitee:https://gitee.com/jiajidong/3121004864/tree/master/ |
1.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 60 |
Estimate | 估计这个任务需要多少时间 | 60 | 70 |
Development | 开发 | 310 | 330 |
Analysis | 需求分析 (包括学习新技术) | 120 | 210 |
Design Spec | 生成设计文档 | 50 | 40 |
Design Review | 设计复审 | 30 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
Design | 具体设计 | 50 | 70 |
Coding | 具体编码 | 300 | 400 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 110 |
Reporting | 报告 | 90 | 80 |
Test Report | 测试报告 | 40 | 30 |
Size Measurement | 计算工作量 | 50 | 50 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 70 | 40 |
合计 | 1380 | 1540 |
2.需求分析
设计一个查重算法,可以用SimHash算法实现,实现文档对比,查重。
3.模块接口的设计与实现
3.1.1 FileInput类
作用:读取文本内容
类方法:readString
3.1.2 main类
运用包内定义的类方法,实现对文本的读取,分词,hash,加权,合并,降维以及计算汉明距离,通过距离最终得到相似度
3.1.3 SimHash类
主要类方法:simhHash,hash,hammingDistance,getDistance,subByDistance
其中simHash实现SimHash算法,hash实现对特征向量的hash,hammingDistance实现加权,getDistance实现合并与降维,subByDistance实现分组检查
3.2 流程图
4.性能分析
5.模块异常分析
当读取文件不存在时会报错