第一次个人编程作业 | 您所在的位置:网站首页 › spec测试报告 › 第一次个人编程作业 |
目录 PSP计算模块接口的设计与实现过程计算模块接口部分的性能改进计算模块部分单元测试展示gitcode代码库:朱政霖 / 3121005192 · GitCode PSPPSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 40 · Estimate · 估计这个任务需要多少时间 1200 1470 Development 开发 360 480 · Analysis · 需求分析 (包括学习新技术) 200 240 · Design Spec · 生成设计文档 20 20 · Design Review · 设计复审 10 10 · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 70 80 · Design · 具体设计 60 80 · Coding · 具体编码 300 360 · Code Review · 代码复审 30 30 · Test · 测试(自我测试,修改代码,提交修改) 60 60 Reporting 报告 10 20 · Test Repor · 测试报告 10 20 · Size Measurement · 计算工作量 10 10 · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 30 · 合计 1200 1470 计算模块接口的设计与实现过程 本算法一共有三个类,分别为main,FileUtil类,SimHashUtil类 FileUtil类和SimHashUtil类都为工具类。FileUtil类有readFile,writeFile两个方法,分别负责读取和写入文件。SimHashUtil类则为程序中最重要的getHash,getSimHash,getHammingDistance,getSimilarity四个方法。其中getSimHash会计算出它的simHash值,并以字符串形式输出,而它内部会调用getHash计算出字符串的hash值,并以字符串形式输出。getHammingDistance则会比较两个simHash值,计算它们的海明距离,并由getSimilarity给出相似度。程序函数整体关系图: 主要函数getSimhash流程图: 计算模块接口部分的性能改进 性能分析图:
程序中消耗最大的函数:getSimHash /** * 传入String,计算出它的simHash值,并以字符串形式输出 * * @param str 传入的Srting类型字符串 * @return 返回str的simHash值 */ public static String getSimHash(String str) { // 用数组表示特征向量,取128位,从 0 1 2 位开始表示从高位到低位 int[] v = new int[128]; // 1、分词 List keywordList = HanLP.extractKeyword(str, str.length());//取出所有关键词 // hash int size = keywordList.size(); int i = 0;//以i做外层循环 for (String keyword : keywordList) { // 2、获取hash值 StringBuilder keywordHash = new StringBuilder(getHash(keyword)); if (keywordHash.length() < 128) { int dif = 128 - keywordHash.length(); for (int j = 0; j < dif; j++) { keywordHash.append("0"); } } // 3、加权、合并 for (int j = 0; j < v.length; j++) { if (keywordHash.charAt(j) == '1') { v[j] +=1; } else { v[j] -= 1; } } i++; } // 4、降维 StringBuilder simHash = new StringBuilder();// 储存返回的simHash值 for (int k : v) { // 从高位遍历到低位 if (k |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |