第一次编程作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-12 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220 |
这个作业的目标 | 写一个论文查重项目 |
GitHub链接:https://github.com/Zhangxingyuan123/3122004803
一、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 85 |
Estimate | 估计这个任务需要多少时间 | 270 | 320 |
Development | 开发 | 120 | 240 |
Analysis | 需求分析 (包括学习新技术) | 60 | 30 |
Design Spec | 生成设计文档 | 55 | 85 |
Design Review | 设计复审 | 100 | 100 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 35 | 35 |
Design | 具体设计 | 150 | 300 |
Coding | 具体编码 | 210 | 480 |
Code Review | 代码复审 | 90 | 70 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 30 |
Reporting | 报告 | 120 | 80 |
Test Repor | 测试报告 | 120 | 100 |
Size Measurement | 计算工作量 | 10 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 1430 | 1945 |
二、算法设计
1、设计以及结果:
三、计算模块接口部分性能的改进:
1、概览:
2、内存:
四、单元测试:
1、测试代码:package test;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.LinkedList;
import java.util.Queue;
import com.Parse;
import org.junit.Test;
public class test {
@Test
public void testAllArticle() {
Path basePath = Paths.get("src", "testfiles");
Path resPath = Paths.get("src", "res.txt");
String origin = "orig.txt";
long startTime = System.currentTimeMillis();
Queue<String> testFileNames = getTestFileNames(basePath);
// 测试每一个子文件查重率
while (!testFileNames.isEmpty()) {
String fileName = testFileNames.poll();
if (origin.equals(fileName)) {
continue;
}
String[] args = {
basePath.resolve(origin).toString(),
basePath.resolve(fileName).toString(),
resPath.toString()
};
System.out.println("参数:" + Arrays.toString(args));
Parse.main(args);
System.out.println();
}
long endTime = System.currentTimeMillis();
System.out.println("消耗时间:" + (endTime - startTime) / 1000.0 + "s");
}
@Test
public void testWrongArgs() {
String[] args = {
"wrong_origin_path",
"wrong_target_path",
"wrong_res_path"
};
System.out.println("参数:" + Arrays.toString(args));
Parse.main(args);
}
@Test
public void testShortArgs() {
String[] args = {
"wrong_args_length"
};
System.out.println("参数:" + Arrays.toString(args));
Parse.main(args);
}
/**
* 获取目录下的所有文件名
*
* @param basePath 目录路径
* @return 目录下的所有文件名
*/
private static Queue<String> getTestFileNames(Path basePath) {
Queue<String> filenames = new LinkedList<>();
try {
Files.list(basePath).forEach(path -> {
if (!path.toFile().isDirectory()) {
filenames.add(path.getFileName().toString());
}
});
} catch (Exception e) {
e.printStackTrace();
}
return filenames;
}
}
五、异常处理:
1、FileNotFoundException
发生原因:试图打开一个不存在的文件。
处理方法:使用 try-catch 结构捕获此异常,并给出适当的提示,如文件路径错误或文件不存在等。
2、IOException
发生原因:在读取或写入文件时出现问题。
处理方法:同样使用 try-catch 结构捕获此异常,并提供相应的错误信息。
3、SecurityException
发生原因:当应用程序试图执行某些安全策略不允许的操作时。
处理方法:提示用户检查文件权限设置。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步