首页 > 其他分享 >个人项目-论文查重

个人项目-论文查重

时间:2024-09-08 19:51:53浏览次数:9  
标签:查重 10 run String 个人 论文 参数 new Main

这个作业属于哪个课程 班级链接
这个作业要求在哪里 个人项目 - 作业 - 计科22级12班 - 班级博客 - 博客园 (cnblogs.com)
这个作业的目标 准备、创建、开发、管理、测试个人项目

GitHub项目链接

https://github.com/chocohQL/3122004348-01

可运行 jar 已发布在最新 releases

项目设计

项目分为主函数、参数解析运行工具、查重算法工具、异常提示信息、Junit单元测试5部分:

  • 主函数(Main):主函数负责接收命令行参数,调用参数解析运行工具并捕获打印可能发送的异常。
  • 参数解析运行工具(DuplicateCheck):负责解析命令行参数、加载源文件和目标文件、调用查重算法工具得到查重结果、输出结果文件,出现异常抛出不同的异常信息。
  • 查重算法工具(HammingUtil):实现SimHash海明距离算法。
  • 异常提示信息(ExceptionResult):统一管理不同异常对应不同提示信息。
  • Junit单元测试(MainTest):集成Junit单元测试工具调用主函数run方法,模拟命令行输入不同参数得到的结果。

项目调用流程:Main(run) -> DuplicateCheck(check) -> HammingUtil(getSimilarity)

项目结构

src
├── main 
│       └── java
│       │       └── DuplicateCheck	// 参数解析运行工具
│       │       └── ExceptionResult	// 异常提示信息
│       │       └── HammingUtil		// 查重算法工具
│       │       └── Main		// 主函数
│       └── resources			// 测试输入输出文件
│       │       └── result
│       │       └── orig.txt
│       │       └── ...
├── test							
│       └── java
│       │       └── MainTest.java	// 测试样例

性能分析

黄色部分为项目函数的消耗,紫色部分为junit框架本身的消耗,需要关注运行事件和相较父级的占用时间,不需要观察全部的占用。项目核心最耗时的是计算SimHash码的部分。

异常和测试

通过模拟参数为空、参数为null、参数不全、错误文件地址、正确文件地址等不同情况验证程序运行。

不同的异常可以总结为三种:

public static final String UNABLE_LOAD_FILE = "无法加载文件";
public static final String UNABLE_EXPORT_FILE = "无法输出文件";
public static final String PARAMETER_EXCEPTION = "请深入参数:java -jar main.jar [原文文件] [抄袭版论文的文件] [答案文件]";

参数不全:

if (args.length != 3) {
    throw new RuntimeException(ExceptionResult.PARAMETER_EXCEPTION);
}
@Test
public void test1() {
    Main.run(new String[]{});
}

参数为空:

for (int i = 0; i < 3; i++) {
    if (args[i] == null) {
        throw new RuntimeException(ExceptionResult.PARAMETER_EXCEPTION);
    }
}
@Test
public void test4() {
    Main.run(new String[]{null, null, null});
}

无法加载文件:

try {
    sourceFile = new String(Files.readAllBytes(Paths.get(args[0])));
    targetFile = new String(Files.readAllBytes(Paths.get(args[1])));
} catch (IOException e) {
    throw new RuntimeException(ExceptionResult.UNABLE_LOAD_FILE);
}
@Test
public void test5() {
    Main.run(new String[]{
            "a",
            "b",
            "c"
    });
}

项目模拟了大部分输入情况,Main函数不是100%是由于命令行是通过主函数main调用run方法,而junit直接调用run方法没用调用主函数main。

PSP

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

标签:查重,10,run,String,个人,论文,参数,new,Main
From: https://www.cnblogs.com/chocohql/p/18403329

相关文章

  • MaPLe(论文解读): Multi-modal Prompt Learning
    Comment:AcceptedatCVPR2023摘要预训练的视觉语言模型(VL-PTMs)(比如CLIP)在下游任务中已经表现出不错的泛化能力。但是它们对输入文本提示模板的选择很敏感,需要仔细选择提示模板才能表现良好。受到NLP领域的启发,最近的CLIP的自适应性方法开始学习提示作为文本输入,来微调CLIP......
  • TPT(论文解读):Test-Time Prompt Tuning for Zero-Shot Generalization in Vision-Langua
    Comment:NeurIPS2022视觉语言模型中用于zero-shot泛化的测试期间提示调优摘要预训练的视觉语言模型在许多具有恰当文本提示的下游任务中表现出不错的zero-shot泛化。最近的研究并非使用手动设计的提示,而是使用下游任务中的训练数据来学习提示。虽然这种方法是有效的,但是......
  • python+flask计算机毕业设计基于web点餐小程序的个性化推荐(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,餐饮业与信息技术的深度融合已成为不可逆转的趋势。特别是在后疫情时代,线上点餐服务因其便捷性、安全性受到了广......
  • python+flask计算机毕业设计基于web技术的课程思政元素信息交流平台的设计与探索(程序+
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在高等教育日益重视课程思政建设的背景下,如何将思想政治教育有机融入专业课程,提升学生思想政治素质,成为当前教育改革的重要课题。随着互联......
  • python+flask计算机毕业设计基于单片机及spring框架的高血压患者居家监测系统(程序+开
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着现代社会生活节奏的加快和人口老龄化趋势的加剧,高血压作为一种常见的慢性疾病,其发病率逐年上升,已成为影响公众健康的重要因素之一。传......
  • python+flask计算机毕业设计基于弹幕视频的在线教学系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,教育领域正经历着前所未有的变革。在线教学作为一种新兴的教学模式,凭借其跨越时空限制、资源丰富多样等优势,逐渐......
  • Java毕业设计源码 - ssm框架网上服装销售系统+jsp+vue+数据库mysql+毕业论文等
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、用户功能模块2、管理员功能模块四、毕设内容和源代码获取总结逃逸的卡路里博主介绍:✌️码农一枚|毕设布道师,专注于大学生项目实战开发、......
  • 基于python+flask框架的基于web的购物商城系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为全球经济的重要组成部分,深刻改变了人们的消费习惯与商业模式。购物商城作为电子商务的核心表现形......
  • 基于python+flask框架的献血管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会文明与医疗技术的不断进步,无偿献血已成为保障临床用血安全、缓解血源紧张的重要途径。然而,传统的献血管理模式往往存在信息不对称......
  • 基于python+flask框架的流浪猫救助平台(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,流浪猫问题日益凸显,成为城市生态与人文关怀的一大挑战。这些无家可归的小生命,不仅面临着食物短缺、生存环境恶劣的困......