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

个人项目

时间:2024-03-12 21:35:49浏览次数:20  
标签:String 个人 项目 30 60 test txt orig

个人项目:论文查重

这个作业属于哪个课程 课程链接
这个作业要求在哪里 作业要求链接
这个作业的目标 完成个人项目并上传至GitHub

GitHub地址: https://github.com/YoungBYe/YoungBYe

PSP表

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

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

程序流程

项目结构

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

overview

实时内存

  • 分析:内存消耗最大的是第三方分词包com.hankcs.hanlp提供的接口,想要优化就必须用其他更好的分词算法或改进这个算法

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

测试部分代码

public class test {
    @Test
    public void origAndAllTest(){
        String[] str = new String[6];
        str[0] = main.readTxt("D:/test/orig.txt");
        str[1] = main.readTxt("D:/test/orig_0.8_add.txt");
        str[2] = main.readTxt("D:/test/orig_0.8_del.txt");
        str[3] = main.readTxt("D:/test/orig_0.8_dis_1.txt");
        str[4] = main.readTxt("D:/test/orig_0.8_dis_10.txt");
        str[5] = main.readTxt("D:/test/orig_0.8_dis_15.txt");
        String ansFileName = "D:/test/ans.txt";
        for(int i = 0; i <= 5; i++){
            double ans = main.getSimilarity(main.getSimHash(str[0]), main.getSimHash(str[i]));
            main.writeTxt(ans, ansFileName);
        }
    }

    @Test
    public void getHammingDistanceTest() {
        String str0 = main.readTxt("D:/test/orig.txt");
        String str1 = main.readTxt("D:/test/orig_0.8_add.txt");
        int distance = main.getHammingDistance(main.getSimHash(str0), main.getSimHash(str1));
        System.out.println("海明距离:" + distance);
        System.out.println("相似度: " + (100 - distance * 100 / 128) + "%");
    }

    @Test
    public void getHammingDistanceFailTest() {
        // 测试str0.length()!=str1.length()的情况
        String str0 = "10101010";
        String str1 = "1010101";
        System.out.println(main.getHammingDistance(str0, str1));
    }

    @Test
    public void getSimilarityTest() {
        String str0 = main.readTxt("D:/test/orig.txt");
        String str1 = main.readTxt("D:/test/orig_0.8_add.txt");
        int distance = main.getHammingDistance(main.getSimHash(str0), main.getSimHash(str1));
        double similarity = main.getSimilarity(main.getSimHash(str0), main.getSimHash(str1));
        System.out.println("str0和str1的汉明距离: " + distance);
        System.out.println("str0和str1的相似度:" + similarity);
    }

    @Test
    public void getHashTest(){
        String[] strings = {"今天", "是", "星期天", "天气", "晴", "今天","晚上","我","要","去","看","电影"};
        for (String string : strings) {
            String stringHash = main.getHash(string);
            System.out.println(stringHash.length());
            System.out.println(stringHash);
        }
    }

    @Test
    public void getSimHashTest(){
        String str0 = main.readTxt("D:/test/orig.txt");
        String str1 = main.readTxt("D:/test/orig_0.8_add.txt");
        System.out.println(main.getSimHash(str0));
        System.out.println(main.getSimHash(str1));
    }

    @Test
    public void readTxtTest() {
        // 路径存在,正常读取
        String str = main.readTxt("D:/test/orig.txt");
        String[] strings = str.split(" ");
        for (String string : strings) {
            System.out.println(string);
        }
    }

    @Test
    public void writeTxtTest() {
        // 路径存在,正常写入
        double[] elem = {0.11, 0.22, 0.33, 0.44, 0.55};
        for (int i = 0; i < elem.length; i++) {
            main.writeTxt(elem[i], "D:/test/ans1.txt");
        }
    }

    @Test
    public void readTxtFailTest() {
        // 路径不存在,读取失败
        String str = main.readTxt("D:/test/none.txt");
    }

    @Test
    public void writeTxtFailTest() {
        // 路径错误,写入失败
        double[] elem = {0.11, 0.22, 0.33, 0.44, 0.55};
        for (int i = 0; i < elem.length; i++) {
            main.writeTxt(elem[i], "User:/test/ans1.txt");
        }
    }

}

测试结果

运行结果

异常错误处理

当文本为空时

异常类代码

public void ERROR(String s) {
    super(s);
}

异常类测试

 @Test
 public void emptyTest() {
    String s = "text/orig.txt";
    String t = "text/empty.txt";
    String ansPath = "text/ans.txt";
    Process.solve(s,t, ansPath);
}

标签:String,个人,项目,30,60,test,txt,orig
From: https://www.cnblogs.com/youngbye/p/18069345

相关文章

  • Java项目源码基于springboot的家政服务平台的设计与实现
    大家好我是程序员阿存,在java圈的辛苦码农。辛辛苦苦板砖,今天要和大家聊的是一款Java项目源码基于springboot的家政服务平台的设计与实现,项目源码以及部署相关请联系存哥,文末附上联系信息。项目源码:Java基于springboot的家政服务平台的设计与实现.rar资源-CSDN文库项目简介:......
  • 黑马点评项目问题
    黑马点评项目问题1.你是如何实现手机号登录功能的?首先单体项目考虑使用基于session登录。首先是用户输入手机号,然后点击发送验证码,服务端收到这个请求之后,校验手机号是否不符合(前端也会校验),然后生成验证码(随机6位数),保存验证码到session中,然后把验证码发送给客户端。客户端根......
  • 认知战壳吉桔:十大思维利器——构建高效个人思维模型的必备工具
    认知战壳吉桔:十大思维利器——构建高效个人思维模型的必备工具关键词:认知战、认知域、认知战研究中心、认知战争、认知战战术、认知战战略、认知域作战研究、认知作战、认知控制、战略思想、CognitiveWarfare、CognitiveDomain、CognitiveControl内容摘要:第一性原理:第一......
  • 苍穹外卖项目问题
    1.数据库表你是怎么设计的?分为员工表、用户表、分类表、菜品表、套餐表、套餐菜品对应表、口味表、购物车表、订单表、订单详细表、地址表。为什么用逻辑外键,而不用数据库自带的外键?数据库通过外键来保证数据的完整性一致性,外键的缺点--对海量数据,性能低,因而使用逻辑外键来保证......
  • 【Springboot】--如何将springboot+vue项目部署到云服务器?
    目录一、准备工作1、购买云服务器2、获取面板地址二、jdk和数据库1、安装环境 2、配置jdk环境变量3、java版本的问题4、添加数据库三、前端部署 1、vue2、创建站点​编辑四、后端部署1、application.yml2、idea打包3、运行jar包4、开放端口五、可能遇到的......
  • 做过头个人看法
    "做过头"通常意味着过度优化或者添加了不必要的功能,这可能会导致以下几种情况:1.软件变得过于复杂:对于用户来说,复杂的软件可能难以理解和使用。这可能导致用户满意度下降,甚至选择放弃使用该软件。2.软件性能下降:过度优化可能会导致软件性能下降,例如,过多的功能可能会导致软件运......
  • Leangoo领歌免费敏捷工具项目“版本发布”功能上线
    ​ Leangoo领歌是款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。Leangoo领歌上手快、实施成本低,可帮助企业快速落地敏捷,提质增效、缩短周期、加速创新。Leangoo领歌区别于传统项目管理软件,项目的需求、......
  • 搭建Vue项目报yarn错误
    搭建Vue项目时(3/2)都会报一个Error:commandfailed:yarn的错误不废话直接上解决办法主要是这里出了问题,yarn不兼容当前模块,你只需要执行一句yarnconfigsetignore-enginestrue就完美解决了......
  • 创建Vue3项目,更多参考vue官网
     一、环境:1、Node版本(node-v命令查询,参考则是需要18.0及以上)C:\Users\86176>node-vv16.14.0后续又重新下载nvm进行新的版本安装,这里后面安装的19.0的也有错误,安装18.19.12、vue-cil版本(vue-V命令可查询电脑版本,参需3.0以上)C:\Users\86176>vue-V@vue/cli5.0.83、其他......
  • ELK日志实时分析平台搭建和使用 ELK日志分析平台是指Elasticsearch、Logstash 和 Kiba
    ELK日志实时分析平台搭建和使用ELK日志分析平台是指Elasticsearch、Logstash和Kibana三个项目的集合,后面又增加了Filebeat数据采集器。概述ELK日志分析平台是指Elasticsearch、Logstash和Kibana三个项目的集合,后面又增加了Filebeat数据采集器。Elasticsearch是一个数据......