首页 > 其他分享 >个人项目

个人项目

时间:2024-09-14 20:45:52浏览次数:1  
标签:个人 项目 System hash1 println new SimHash out

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229
这个作业的目标 开发个人项目,实现项目单元测试
个人github仓库地址: https://github.com/Kun3M/3222004768/tree/master

文章目录
0、 前言
0.1、需求
0.2、 要求
0.3、 开发环境
1.0、 整体设计
1.1、 整体流程
2.0、 性能分析****
3.0、单元测试
3.1、 主程序main的测试
4.0、 PSP表格
0、 前言
0.1、需求
题目:论文查重
描述如下:
设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:


从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。
0.2、 要求
1.在Gitcode仓库中新建一个学号为名的文件夹。
2.在开始实现程序之前,在PSP表格记录下你估计在程序开发各个步骤上耗费的时间,在你实现程序之后,在PSP表格记录下你在程序的各个模块上实际花费的时间。
3.使用C++ 、Java语言或者python3实现,提交python代码时请附带上requirements.txt,。C++请使用Visual Studio Community 2017进行开发,运行环境为64-bit Windows 10。对于C++/Java,还需将编译好的程序发布到Gitcode仓库中的releases中
4.提交的代码要求经过Code Quality Analysis工具的分析并消除所有的警告。
5.完成项目的首个版本之后,请使用性能分析工具Studio Profiling Tools来找出代码中的性能瓶颈并进行改进。
6.使用Gitcode来管理源代码和测试用例,代码有进展即签入Gitcode。签入记录不合理的项目会被助教抽查询问项目细节。
7.使用单元测试对项目进行测试,并使用插件查看测试分支覆盖率等指标;写出至少10个测试用例确保你的程序能够正确处理各种情况。
0.3、 开发环境
编译语言:Java 17
IDE:Intellij IDEA 2021.3.2
项目构建工具:maven
单元测试:JUnit 4.12
性能分析工具:JProfiler 9.2
依赖的外部 jar 包:汉语言处理包
1.0、 整体设计
1.1、 整体流程

2.0、 性能分析****
总览

方法调用次数

从这里可以看出首先最多调用的是int数组,因为SimHash算法的底层需要调用大量的int数组作为容器分装文章的句子,其次调用的就是hankcs包中的工具类,主要都是用于SimHash算法的分词和计算调用的总结:暂时没有想到什么改进方法
3.0、单元测试
测试方法如下:
测试输入正确方法参数和输入错误方法参数
3.1 主程序main的测试
public class mainTest {
@Test
void test1() throws IOException {
ReadFile rf=new ReadFile();
String article1=rf.read("D:\working\gdut-s\3222004973\orig.txt");
String article2=rf.read("D:\working\gdut-s\3222004973\orig.txt");

    long l3 = System.currentTimeMillis();
    SimHash hash1 = new SimHash(article1, 64);
    SimHash hash2 = new SimHash(article2, 64);
    System.out.println("======================================");
    System.out.println("海明距离:" + hash1.hammingDistance(hash2));
    System.out.println("文本相似度:" + hash1.getSemblance(hash2));
    long l4 = System.currentTimeMillis();
    System.out.println(l4 - l3);
    System.out.println("======================================");
}

@Test
void test2() throws IOException {
    ReadFile rf=new ReadFile();
    String article1=rf.read("D:\\working\\gdut-s\\3222004973\\orig.txt");
    String article2=rf.read("D:\\working\\gdut-s\\3222004973\\orig_0.8_add.txt");

    long l3 = System.currentTimeMillis();
    SimHash hash1 = new SimHash(article1, 64);
    SimHash hash2 = new SimHash(article2, 64);
    System.out.println("======================================");
    System.out.println("海明距离:" + hash1.hammingDistance(hash2));
    System.out.println("文本相似度:" + hash1.getSemblance(hash2));
    long l4 = System.currentTimeMillis();
    System.out.println(l4 - l3);
    System.out.println("======================================");
}

@Test
void test3() throws IOException {
    ReadFile rf=new ReadFile();
    String article1=rf.read("D:\\working\\gdut-s\\3222004973\\orig.txt");
    String article2=rf.read("D:\\working\\gdut-s\\3222004973\\orig_0.8_del.txt");

    long l3 = System.currentTimeMillis();
    SimHash hash1 = new SimHash(article1, 64);
    SimHash hash2 = new SimHash(article2, 64);
    System.out.println("======================================");
    System.out.println("海明距离:" + hash1.hammingDistance(hash2));
    System.out.println("文本相似度:" + hash1.getSemblance(hash2));
    long l4 = System.currentTimeMillis();
    System.out.println(l4 - l3);
    System.out.println("======================================");
}

@Test
void test4() throws IOException {
    ReadFile rf=new ReadFile();
    String article1=rf.read("D:\\working\\gdut-s\\3222004973\\orig.txt");
    String article2=rf.read("D:\\working\\gdut-s\\3222004973\\orig_0.8_dis_1.txt");

    long l3 = System.currentTimeMillis();
    SimHash hash1 = new SimHash(article1, 64);
    SimHash hash2 = new SimHash(article2, 64);
    System.out.println("======================================");
    System.out.println("海明距离:" + hash1.hammingDistance(hash2));
    System.out.println("文本相似度:" + hash1.getSemblance(hash2));
    long l4 = System.currentTimeMillis();
    System.out.println(l4 - l3);
    System.out.println("======================================");
}

@Test
void test5() throws IOException {
    ReadFile rf=new ReadFile();
    String article1=rf.read("D:\\working\\gdut-s\\3222004973\\orig.txt");
    String article2=rf.read("D:\\working\\gdut-s\\3222004973\\orig_0.8_dis_10.txt");

    long l3 = System.currentTimeMillis();
    SimHash hash1 = new SimHash(article1, 64);
    SimHash hash2 = new SimHash(article2, 64);
    System.out.println("======================================");
    System.out.println("海明距离:" + hash1.hammingDistance(hash2));
    System.out.println("文本相似度:" + hash1.getSemblance(hash2));
    long l4 = System.currentTimeMillis();
    System.out.println(l4 - l3);
    System.out.println("======================================");
}

@Test
void test6() throws IOException {
    ReadFile rf=new ReadFile();
    String article1=rf.read("D:\\working\\gdut-s\\3222004973\\orig.txt");
    String article2=rf.read("D:\\working\\gdut-s\\3222004973\\orig_0.8_dis_15.txt");

    long l3 = System.currentTimeMillis();
    SimHash hash1 = new SimHash(article1, 64);
    SimHash hash2 = new SimHash(article2, 64);
    System.out.println("======================================");
    System.out.println("海明距离:" + hash1.hammingDistance(hash2));
    System.out.println("文本相似度:" + hash1.getSemblance(hash2));
    long l4 = System.currentTimeMillis();
    System.out.println(l4 - l3);
    System.out.println("======================================");
}

}
测试结果:

代码覆盖率:

结果反馈:

4.0、 PSP表格
PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。

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

标签:个人,项目,System,hash1,println,new,SimHash,out
From: https://www.cnblogs.com/Alanur/p/18414536

相关文章

  • c语言快递小项目
    structpack_head{  intfd;//通信的文件描述符  unsignedchartype; //消息类型  unsignedcharusertype;//用户类型:1:用户 2:快递员   charname[32]; //用户名  charpaaswd[32];//密码  charbuf[32]; //调试信息  stru......
  • 【来学Vue吧】创建一个Vue项目
    ......
  • 将项目里的moment替换为day.js
    day.js有和moment.js完全一样的API,但是它的体积却比moment要小的很多,moment打包后的体积有280kb左右,而day.js打包后只有6.3KB。它非常轻量化,因为它可以利用treeShaking如果你的项目里面使用的是moment.js,而你想要把它替换成day.js,很简单,直接使用一个webpack插件即可,而无需做任何......
  • 5 个最佳开源无代码项目管理工具
    想象一下,你是一名项目经理,每天早上刚坐到办公桌前,咖啡还在手里,你的手机和电脑屏幕上已经被各种未完成的任务、项目更新和团队消息填满。你快速浏览着的电子邮件,分配任务的通知不断弹出,而每一个通知都要求你迅速做出决策。与此同时,团队成员纷纷通过即时消息工具询问进度更新、讨......
  • 图像生成技术飞速发展,个人化艺术创造还有多远?
    图像生成技术飞速发展,个人化艺术创造还有多远?通义万相文本绘图与人像美化希望图像生成类应用具备哪些功能通义万相改进建议在当今这个创意与科技交织的时代,图像生成技术正以前所未有的速度重塑视觉艺术的边界。不管你是否有艺术细胞,不管你是否接受了系统的艺术创作教育,你都可以......
  • 个人项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-12这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220这个作业的目标完整地做一次项目、掌握测试工具、掌握处理异常方法1.Github仓库中新建学号为名的文......
  • 前端项目通过 Nginx 发布至 Linux,并通过 rewrite 配置访问后端接口
    〇、前言本文通过将arco框架的前端项目,部署至CentOS7,并访问同服务器的WebAPI接口,来简单演示一下,如何将前端项目发布至Linux系统。关于ASP.NETWebAPI发布至Linux的步骤,可以参考博主过往文章:https://www.cnblogs.com/hnzhengfy/p/18384107/webapi_centos。一、简......
  • 记一次 公司.NET项目部署在Linux环境压测时 内存暴涨分析
    一:背景讲故事公司部署在某碟上的项目在9月份压测50并发时,发现某个容器线程、内存非正常的上涨,导致功能出现了异常无法使用。根据所学,自己分析了下线程和内存问题,分析时可以使用lldb或者windbg,但是个人比较倾向于界面化的windbg,所以最终使用windbg开干。二:WinDbg分析到底是......
  • Codes 开源研发项目管理平台——创新的敏捷测试解决方案
    前言Codes是国内首款重新定义SaaS模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对30人以下团队免费。它通过整合迭代、看板、度量和自动化等功能,简化测试协同工作,使敏捷测试更易于实施。并提供低成本的敏捷测试解决方案,如同步在线离线测试用例、流程化管......
  • (29-1)通过回测、ARIMA 和 GRU 预测股票价格:项目介绍+准备环境
    在本项目中通过一系列数据处理和模型训练步骤,旨在预测股票价格。首先,通过时间序列分析方法ARIMA对股票数据进行建模,以便了解其基本趋势。然后,使用GRU(门控递归单元)这一深度学习模型进行更复杂的预测,考虑了数据的序列特性。整个项目包括数据预处理、模型构建与训练、预测结果......