第一次个人编程作业

| 作业所属课程 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834 |
| ---- | ---- | ---- |
| 作业要求 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11146 |
|这个作业的目标| 学会使用PSP表格 学会用Github来管理源代码和测试用例 学会使用论文查重性能分析工具改进性能|

一、Github地址:https://github.com/catwithcute/catwithcute

二、PSP表格记录估计及实际在程序的各个模块的开发上耗费的时间

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 80
Estimate 估计这个任务需要多少时间 10 5
Development 开发 300 360
Analysis 需求分析 (包括学习新技术) 60 90
Design Spec 生成设计文档 60 90
Design Review 设计复审 10 10
Coding Standard 代码规范 (为目前的开发制定合适的规范) 10 30
Design 具体设计 60 60
Coding 具体编码 300 360
Code Review 代码复审 10 30
Test 测试(自我测试,修改代码,提交修改) 30 60
Reporting 报告 90 120
Test Report 测试报告 15 10
Size Measurement 计算工作量 10 10
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 10 30
Total 合计 1035 1335

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

1.工程结构


说明:一共有两个类,算法的核心主要在SimHash类中

2.算法原理

·首先基于传统的IR方法,将文章转换为一组加权的特征值构成的向量。

·初始化一个f维的向量V,其中每一个元素初始值为0。

·对于文章的特征向量集中的每一个特征,做如下计算:

利用传统的hash算法映射到一个f-bit的签名。对于这个f- bit的签名,如果签名的第i位上为1,则对向量V中第i维加上这个特征的权值,否则对向量的第i维减去该特征的权值。

·对整个特征向量集合迭代上述运算后,根据V中每一维向量的符号来确定生成的f-bit指纹的值,如果V的第i维为正数,则生成f-bit指纹的第i维为1,否则为0。
原理图:

3.程序流程图

4.程序结果

四、计算模块接口部分的性能

性能分析:

内存消耗:

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

1.测试代码


public class FileToStringTest {

    @Test
    public void toStringTest(){
        FileToString fileToString = new FileToString();
        fileToString.toString("");
  }
}



import org.junit.Test;
public class SimHashTest {
    SimHash simHash;
    @Test
    public void simHashTest(){
            SimHash simHash = new SimHash("123");
            simHash.simHash();
    }
    @Test
    public void hashTest(){
        SimHash simHash = new SimHash("123");
        simHash.hash("123");
    }

    @Test
    public void subByDistanceTest(){
        SimHash simHash=new SimHash("123");
        simHash.subByDistance(simHash,3);
    }


    @Test
    public void getDistanceTest(){
        SimHash simHash=new SimHash("123");
        simHash.getDistance("123","234");
    }

    @Test
    public void hammingDistanceTest(){
        SimHash simHash=new SimHash("123");
        simHash.hammingDistance(simHash);
    }




}

2.单元测试截图:


3.单元测试得到的测试覆盖率截图:

posted @ 2020-09-25 02:46  猫与可耐  阅读(165)  评论(1编辑  收藏  举报