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

软工个人项目

时间:2023-09-17 16:35:49浏览次数:40  
标签:文件 String 个人 项目 软工 30 simHash1 str new

软件工程 21计科四班
作业要求 https://edu.cnblogs.com/campus/gdgy/CSGrade21-34/homework/13023
仓库地址 https://github.com/2077435277/introduction_myself

PSP表格

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

实验准备环境

  • 编程语言和环境:jdk1.8
  • 编程工具IDE:Intellij IDEA
  • 第三方依赖:

主要代码实现

文件io类,TextIoUtil:

public class TextIoUtil {
/**
* 读出txt文件
* 传入文件绝对路径,将文件内容转化为 String字符串输出
*
* @param txtPath 文件路径
* @return 文件内容
*/
public static String readTxt(String txtPath) {
StringBuilder str = new StringBuilder();
String strLine;
// 将 txt文件按行读入 str中
File file = new File(txtPath);
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
// 字符串拼接
while ((strLine = bufferedReader.readLine()) != null) {
str.append(strLine);
}
// 关闭资源
inputStreamReader.close();
bufferedReader.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return str.toString();
}

/**
 * 写入txt文件
 * 传入内容、文件全路径名,将内容写入文件并换行
 *
 * @param txtElem 传入的内容
 * @param txtPath 写入的文件路径
 */
public static void writeTxt(double txtElem, String txtPath) {
    String str = Double.toString(txtElem);
    File file = new File(txtPath);
    FileWriter fileWriter = null;
    try {
        fileWriter = new FileWriter(file, true);
        fileWriter.write(str, 0, (str.length() > 3 ? 4 : str.length()));
        fileWriter.write("\r\n");
        // 关闭资源
        fileWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}
海明距离计算方法:

public static int getHammingDistance(String simHash1, String simHash2) {
int distance = 0;
if (simHash1.length() != simHash2.length()) {
// 出错,返回-1
distance = -1;
} else {
for (int i = 0; i < simHash1.length(); i++) {
// 每一位进行比较
if (simHash1.charAt(i) != simHash2.charAt(i)) {
distance++;
}
}
}
return distance;
}
相似度计算:

public static double getSimilarity(String simHash1, String simHash2) {
// 通过 simHash1 和 simHash2 获得它们的海明距离
int distance = getHammingDistance(simHash1, simHash2);
// 通过海明距离计算出相似度,并返回
return 0.01 * (100 - distance * 100 / 128);
}

结果测试

public class Main {
public static void main(String[] args) throws NoSuchAlgorithmException {
// 从命令行输入的路径名读取对应的文件,将文件的内容转化为对应的字符串
String path1 = "C:\Users\26913\Desktop\demo\src\main\resources\str0.txt";
String path2 = "C:\Users\26913\Desktop\demo\src\main\resources\str1.txt";
String str0 = TextIoUtil.readTxt(path1);
String str1 = TextIoUtil.readTxt(path2);
String pathRes = "C:\Users\26913\Desktop\demo\src\main\resources\res.txt";
// 由字符串得出对应的 simHash值
String simHash0 = SimHashUtil.getSimHash(str0);
String simHash1 = SimHashUtil.getSimHash(str1);
// 由 simHash值求出相似度
double similarity = SimHashUtil.getSimilarity(simHash0, simHash1);
// 把相似度写入最后的结果文件中
TextIoUtil.writeTxt(similarity, pathRes);
// 退出程序
System.exit(0);
}
}

标签:文件,String,个人,项目,软工,30,simHash1,str,new
From: https://www.cnblogs.com/zengzhonggang/p/17709057.html

相关文章

  • 一起动手打造个人娱乐级linux
    我们使用电脑,一直以来用的都是windows,但是对于像我这种爱折腾的人来说,尝试使用linux系统应该是一种不错的体验。说到linux,许多人可能都没听过,或者知道的人对它印象是这样的:然而,linux发展这么久,桌面应用也已经发展得非常成熟了,现在我们linux可以是这样的:ubuntu16.04archlinux......
  • 30分钟快速搭建并部署一个免费的个人博客
    前言现如今网上有许多完善的博客平台,如博客园、掘金、思否、知乎等。有人会说为什么现在网上有这么多成熟的博客平台,你还要浪费时间搭建一个自己的博客系统呢?首先我相信每一个程序员都会想要拥有一个属于自己的博客系统,其次使用Docsify能够快速构建一个自己的博客文档系统,最后我......
  • BizTalk RosettaNet解决方案与项目调研
    BizTalk/AzureLogicAPP/EDIFACT/X12/RosettaNET/AS2培训或项目开发需求,欢迎随时联系:Email:[email protected] ,微信(WeChat)/Tel:18511575973RosettaNet组织(http://www.rosettanet.org)于1998年6月创建,是非盈利性的国际性组织,目前归属于GS1US。它在全球存在众多的分支机构,在国......
  • 快速搭建SpringBoot3.x项目
    写在前面上一小节中我们从0到1使用Vite搭建了一个Vue3项目,并集成了ElementPlus实现了一个简单的增删改查页面。这一篇中我们将使用IDEA快速搭建一个SpringBoot3.x的项目。一、创建项目1、File->new->project2、选择“SpringInitializr”,点击next;3、选择springboot版......
  • 个人项目
    Github项目地址https://github.com/haImurat/3121005125WC项目要求wc.exe是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。实现一个统计程序,它能......
  • 个人项目:论文查重
    个人项目作业属于哪个课程软件工程作业要求作业要求github地址作业github地址PSPPSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划209·Estimate·估计这个任务需要多少时间209Development开发19017......
  • 学信息系统项目管理师第4版系列08_管理科学基础
    1. 科学管理的实质1.1. 反对凭经验、直觉、主观判断进行管理1.2. 主张用最好的方法、最少的时间和支出,达到最高的工作效率和最大的效果2. 资金的时间价值与等值计算2.1. 资金的时间价值是指不同时间发生的等额资金在价值上的差别2.2. 把资金存入银行,经过一段时间后也......
  • spring frame项目启动过程中的踩坑记录
    在springframework项目的代码拉下来到了本地之后,创建一个testdemo,具体代码如下:importorg.spring.*;publicclassDemoTest{ publicstaticvoidmain(String[]args){ ApplicationContextcontext=newApplicationContext("applicationContext.xml"); Useruser=c......
  • 如何从 javascript 中的 Web api 将 json 对象传递到项目的其余部分
    在将从WebAPI获取的JSON数据传递到项目的其他部分之前,您需要确保在完成fetch请求并获得响应后再进行处理。因为fetch是一个异步操作,需要等待服务器响应的完成才能获取到数据。在您的代码示例中,您可以将json数据传递给其他函数或组件进行后续处理。以下是一种可能的处理方式:fetch(B......
  • Llama2-Chinese项目:2.1-Atom-7B预训练
      虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,这也导致了原始Llama2的中文能力较弱。为了能够提升模型的中文能力,可以采用微调和预训练两种路径,其中:微调需要的算力资源少,能够快速实现一个中文Llama的雏形。但缺点也显而易......