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. web服务器http.server 【python】

    参考博客: http://lxneng.iteye.com/blog/492063 http://www.cnblogs.com/itech/archive/2011/12/31/2308697.ht ...

  2. Linux下安装配置SVN

    1.检查系统上是否安装了SVN rpm -qa subversion 没有安装,则使用以下命令安装 yum -y install  subversion 2.配置svn并启动svn服务 (1) 指定s ...

  3. js中replace()方法

    str.replace(/Microsoft/g, "W3School");//全局替换 str.replace(/Microsoft/, "W3School" ...

  4. PHP遍历文件夹及子文件夹所有文件(此外还有飞递归的方法)

    <html> <body> <?php function traverse($path = '.') { $current_dir = opendir($path); / ...

  5. 在 CSS 中使用特征查询

    原文地址:Using Feature Queries in CSS 原文作者:Jen Simmons 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Che ...

  6. php 关于日期的知识总结

    1.UNIX时间戳   time() echo time(); 2.UNIX时间戳转换为日期用函数: date() 一般形式:date(); 即 echo date(date('Y-m-d H:i:s ...

  7. 【BZOJ2901】矩阵求和

    Description 给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和. Input 第一行两个正整数n,m. 接下来n行,每行n个非负整数,表示第一个矩阵. 接下来n行,每行n个非负整数 ...

  8. 【BZOJ2957】楼房重建 分块

    [BZOJ2957]楼房重建 Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子 ...

  9. Hibernate数据类型映射

    Hibernate映射类型分为两种:内置的映射类型和客户化映射类型.内置映射类型负责把一些常见的Java类型映射到相应的SQL类型:此外,Hibernate还允许用户实现UserType或Compos ...

  10. 微信小程序 --- 动画

    动画的基本使用: 旋转动画 缩放动画 偏移动画 倾斜动画 矩阵动画 动画API:wx.createAnimation(object) 示例:创建一个点击的动画 <view class=" ...