第一次个人编程作业

发布时间 2023-09-20 21:44:00作者: Little_陈
工程概论 计算21级
作业要求 个人项目
作业目标 实现论文查重并测试性能

GitHub地址

计算模块接口的设计与实现过程

CosineSimilarity类

函数 功能
float getSimilarity(int[] number1,int[] number2) 计算两个向量的余弦定理值并返回

在函数内部,声明了三个变量square1square2product,它们分别用于存储两个向量的平方和和它们的点乘结果。
使用一个循环遍历两个向量的所有维度,计算它们的点乘结果并累加到product中。
在循环中,还计算了两个向量的平方和,分别累加到square1square2中。
最后,根据余弦相似度的公式,将点乘结果除以两个向量的模长之积,得到它们的余弦值,并将其作为函数的返回值。

计算模块接口部分的性能改进

并行化:输入数组的长度很大,用并行流或者线程来改进性能。在Java 8及以上版本中,使用parallel()方法来实现。
预分配内存:对于square1square2,在循环之前预先计算他们的大小,然后一次性分配足够的内存,而不是在每次循环时都重新分配内存。这可以通过使用float[]数组来实现。

计算模块部分单元测试展示

image

计算模块部分异常处理说明

点击查看代码
try {
            //打开path路径的文件
            File read = new File(path);
            InputStreamReader reader = new InputStreamReader(new FileInputStream(read));
            BufferedReader r = new BufferedReader(reader);
            String line = r.readLine();
            //循环读取每一行的文字并加入到表中
            while (line != null) {
                article.add(line);
                line = r.readLine();
            }
        } catch (IOException e) {
            System.out.println("文件打开失败,请检查文件路径是否正确");
        }
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 10
· Estimate · 估计这个任务需要多少时间 540 835
Development 开发 240 300
· Analysis · 需求分析 (包括学习新技术) 15 10
· Design Spec · 生成设计文档 20 40
· Design Review · 设计复审 10 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 15 5
· Design · 具体设计 100 100
· Coding · 具体编码 140 200
· Code Review · 代码复审 10 20
· Test · 测试(自我测试,修改代码,提交修改) 30 20
Reporting 报告 30 30
· Test Repor · 测试报告 20 20
· Size Measurement · 计算工作量 50 40
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 30
· 合计 540 835