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. linux mysql添加用户,删除用户,以及用户权限

    一些主要的命令: 登录: mysql -u username -p 显示全部的数据库: show databases; 使用某一个数据库: use databasename; 显示一个数据库的全部表: ...

  2. poj_2182 线段树/树状数组

    题目大意 n个数排成一排(不知道大小,只是占了一个位置),从a[1]到a[n]进行遍历,对于每个a[i],给出从a[1]到a[i-1]中小于a[i]数的个数.要求出 a[1]到a[n]中这n个数的相对 ...

  3. 使用Sublime Text 3做Python开发

    引言 刚转到OS X平台时,寻找写Python,JavaScript,Markdown等文件的工具时,比较了许多工具, 最终选择了Sublime Text 2,主要原因是其跨平台, 想着以后再转到wi ...

  4. font-size对展示的影响

    实例: <head>        <style type="text/css">            span{display: inline-bloc ...

  5. ajax操作的链式写法

    ajax操作的传统写法: $.ajax({ url: url, success: function(){ doWhenSuccess(); }, error: function(){ doWhenEr ...

  6. Hibernate(1)——数据访问层的架构模式<转>

    数据库的概念.逻辑.数据模型概念 应用程序的分层体系结构发展 MVC设计模式与四层结构的对应关系 持久层的设计目标 数据映射器架构模式 JDBC的缺点 Hibernate简介 迅速使用Hibernat ...

  7. 日志系统实战 AOP静态注入

    http://www.cnblogs.com/mushroom/p/3932698.html http://www.cnblogs.com/mushroom/p/4124878.html http:/ ...

  8. {Azure} 常用链接

    https://azure.microsoft.com/zh-cn/documentation/scenarios/web-app/

  9. iOS - 常用iOS的第三方框架

    图像:1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等 ...

  10. jQuery Ajax 全解析(转载)

    本文地址: jQuery Ajax 全解析 本文作者:QLeelulu 转载请标明出处! jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写Java ...