java 实验三 实验报告

实验内容

代码规范

不规范的代码可能妨碍阅读,在粘贴下来老师在云班课中设置的提交点一的代码之后,我首先使用了IDEA中Code选项卡的Reformat Code功能规范代码的格式

然后,我下载了alibaba插件,对代码的规范进行进一步的学习。首先这段代码中没有包含关于作者的注释信息

然后,添加我的学号作为author的注释信息,再在for循环的括号里把直接使用的数字(“魔法值”)改成了赋了值的变量

再进行编码规约扫描,不建议使用行注释,遂改之

对于Code菜单,我觉得Generate是一个很方便的功能,可以直接生成重写方法还有构造方法的框架,用快捷键Alt+Insert十分方便
最后,这是第一个检查点提交的截图:

结对

此部分,首先我和搭档贾普涵同学互相地把对方加为自己项目的……管理员,对,就是管理员:
然后在IDEA中下载下来他的项目,找到上次实验的Complex代码
在测试代码中添加测试用例:
通过测试的结果:
下面的截图下方是搭档的项目的Git log ,包含了我添加测试用例后进行提交的提交记录

重构

通过老师的博客,我了解到重构是指在不改变软件外部行为的基础上,改变软件的内部结构,使软件更加易于阅读、易于维护、易于变更。
重构的内容包括对于不规范的变量名进行重新命名,提炼出代码中重复的功能,修改过长的方法以及参数列,将复杂的逻辑条件式分解等等内容。
我搭档的代码可以说都非常合乎规范,几经阅读之后,我决定对搭档第六周课下测试的CPU代码进行重构,当然在重构之前我现学现卖地在程序中添加了@author的注释信息:

最开始的代码我忘记截图了,下面只好一部分一部分地说明我重构搭档的这个程序的过程。
首先CPU的属性speed这里原来没有使用private修饰speed的名字是s
变量的属性是友好型的可以直接用圆点使用这个变量就像C语言中的结构体,但是程序中有setSpeed和getSpeed两个方法,所以说在这里将变量的属性设为友好型是不合乎封装的要求的。另外最初的变量s应当是CPU的速度属性,这个名字并不“清晰”。在这两个地方进行了重构,将变量的属性设为private,把s的名字改为speed,下面是修改之后的结果

下一处能够进行重构的地方是重写的equals和toString方法,在上面增加@Override

然后,就没有特别可以重构的地方了,这是第三个检查点的截图

结对学习Java密码学相关内容

对称加密算法-DES

Triple-DES是DES算法的改进,相比DES安全性得到了提高。获取密钥生成器传入的字符串参数是“DESede”,这样程序就知道我们用的是Triple-DES算法。并且还需要注意的是

  1. 密钥的保存方式可以有两种。或者是将密钥以对象序列化的方式保存在文件中此时文件中保存的是对象,ObjectOutputStream类中提供的writeObject方法可以将对象序列化,以流的方式进行处理。这里将文件输出流作为参数传递给ObjectOutputStream类的构造器,这样创建好的密钥将保存在文件key1.data中。或者以字节形式写入到文件中,首先创建文件输出流对象给其指定目的文件也就是我们保存密钥的文件,然后调用文件输出流的write方法,并将参数指定为存有密钥内容的字节数组,就可以把字节数组中的密钥内容以字节的形式写入到目的文件中。前者操作起来相对方便,后者能够通过字节数组更直观的将密钥中的内容打印出来。在我们学习的老师的示例中,这两种办法前后是衔接到一起的,第一个先用对象序列化的方式把密钥存进文件key1.dat中。但是这样虽然存进去了密钥,我们不知道它的内容。但是用后一种办法就可以,创建一个文件输入流,输入流的源是刚才生成的文件。创建输入流成功之后将其作为参数传给新建的对象输入流对象输入流就可以读取刚才对象序列化的密钥文件,使用的是对象输入流的readObject方法返回一个Object对象。再将其强制类型转换为Key类,这样新建的Key类的对象就能够调用getEncode方法把密钥的内容传入字节数组中,通过输出字节数组就可以输出查看密钥。

单向散列函数MD5算法

最开始的时候,我们编写代码时忘记用类方法getInstance创建对象,希望直接使用构造器new MessageDigest() 创建对象。这样并不合乎要求,IDEA为了纠正错误自动
在我们的程序中添加了内部类重写了MessageDigest对象protected的方法,发生这张图片的问题

所以一定要记住这个“工厂类”创建新对象的方法。
修改为getInstance
输入20165204and20165207经MD5算法计算后得到下图输出结果

学习成果

对称加密算法DES


非对称加密算法RSA

单向散列函数算法MD5

Git log 截图

这里有几个地方是我和搭档分工之后,提交的时候我们忘记了pull,所以有几个merge操作才提交上去,以后我们一定注意。

2017-2018-2 20165207 实验三《敏捷开发与XP实践》实验报告的更多相关文章

  1. 20162311 实验三 敏捷开发与XP实践 实验报告

    20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...

  2. 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...

  3. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  4. 20165308实验三 敏捷开发与XP实践实验报告

    实验三 敏捷开发与XP实践实验报告 实验目的 安装 alibaba 插件,解决代码中的规范问题.再研究一下Code菜单,找出一项让自己感觉最好用的功能. 在码云上把自己的学习搭档加入自己的项目中,确认 ...

  5. 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20155207王雪纯 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  6. 20155220 实验三 敏捷开发与XP实践 实验报告

    20155220 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  7. # 20155224 实验三 敏捷开发与XP实践 实验报告

    20155224 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  8. 20155226 实验三 敏捷开发与XP实践 实验报告

    20155226 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  9. 20155311 实验三 敏捷开发与XP实践 实验报告

    20155311 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 xp核心工具 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  10. 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告

    2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...

随机推荐

  1. 《C++ Primer Plus》14.4 类模板 学习笔记

    14.4.1 定义类模板下面以第10章的Stack类为基础来建立模板.原来的类声明如下:typedef unsigned long Item; class Stack{private:    enum ...

  2. TP框架控制器的空操作

    在浏览器中输入tp框架入口文件的地址,如图 要注意,localhost/后面跟的是www的下一级,tp文件的上一级,因为我直接把tp文件做成了www目录的下一级,所以我写的地址localhost后面跟 ...

  3. poj_2396 有上下界的网络流

    题目大意 一个mxn的矩阵,给出矩阵中每一行的和sh[1,2...m]以及每一列的数字的和目sv[1,2...n],以及矩阵中的一些元素的范围限制,比如a[1][2] > 1, a[2][3] ...

  4. 【thinkphp5】 分页样式修改

    1 找到文件:/thinkphp/library/think/paginator/driver/Bootstrap.php <?php // +------------------------- ...

  5. Shell 将两个文件按列合并

    file1. 1 2 2 3 3 4 4 5 5 6 file2. a b b c c d d e e f 需要把file2的第二列合并到file1,使File1并成三列. 第一种方法:paste p ...

  6. MQTT的学习研究(一)MQTT学习网站

    MQTT的官方推荐网站: http://mqtt.org/software 使用IBM 的MQTT协议实现push消息地址: http://tokudu.com/2010/how-to-impleme ...

  7. Java多线程详解(三)

    1)死锁 两个线程相互等待对方释放同步监视器时会出现死锁的现象,这时所有的线程都处于阻塞状态,程序无法继续向下执行. 如下就是会出现死锁的程序. 首先flag = 1,线程d1开始执行,锁住对象o1, ...

  8. WCF(五) 深入理解绑定

    适用于本机WCF-WCF交互性能最佳的绑定: 允许跨主机,但只能用于部署同一台主机上,不能访问命名管道 netNamePipeBinding总结 一 WCF与SOA SOA是一种通过为所有软件提供服务 ...

  9. Oracle入门笔记 ——启动

    参考教材<深入浅出Oracle> 兴趣 + 勤奋 + 坚持 + 方法 ≍ 成功 DBA生存之四大守则 1.备份重于一切: 2.三思而后行: 3.rm是危险的: 4.你来制定规范: 第一章: ...

  10. ThinkPHP流程控制!

    IF判断: 在thinkphp 中不能使用 <> 这样的尖括号: <if condition='表达式'> <elseif condition='表达式'/> &l ...