学号 20175313 《实验三 敏捷开发与XP实践》实验报告
一、实验内容
(1)编码标准
在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。
public class CodeStandard {
public static void main(String [] args){
StringBuffer buffer = new StringBuffer();
buffer.append('S');
buffer.append("tringBuffer");
System.out.println(buffer.charAt(1));
System.out.println(buffer.capacity());
System.out.println(buffer.indexOf("tring"));
System.out.println("buffer = " + buffer.toString());
if(buffer.capacity()<20)
buffer.append("1234567");
for(int i=0; i<buffer.length();i++)
System.out.println(buffer.charAt(i));
}
}
(2)Git的使用
在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push。
(3)重构
完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
(4)Java密码学相关内容的学习
参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
二、实验步骤
(1)编码标准
- 没有规范前:
- 单击IDEA菜单中的Code->Reformat 或用快捷键Ctrl+Alt+L就可以按IDEA规定的规范缩进。
- 效果如下:
- Java中的一般的命名规则有:
1.要体现各自的含义
2.包、类、变量用名词
3.方法名用动宾
4.包名全部小写,如:io,awt
5.类名第一个字母要大写,如:HelloWorldApp
6.变量名第一个字母要小写,如:userName
7.方法名第一个字母要小写:setName
更多详情请参见邹欣老师写的代码规范与代码复审。
- Code菜单中让我感觉最好用的功能:
- Surround With ( 生成包围代码 ) Ctrl + Alt +T
- Unwarp/Remove ( 取消代码包围 ) Ctrl + Shift + Delete
- Move Statement Down ( 方法、代码下移 ) Ctrl + Shift + 向下箭头
- Move Statement Up ( 方法、代码上移 ) Ctrl + Shift + 向上箭头
更多详情请参见IDEA快捷键拆解系列(六):Code篇。
- 说明:因为我之前安装过alibaba 插件,所以就没有将其安装过程写入本次试验。详情请参见Intellj IDEA 简易教程。
(2)Git的使用以及添加Complex类测试代码
- 自己的学习搭档加入自己的项目中
- 添加搭档的Complex类测试代码
- 码云上传成功截图:
(3)重构
针对编码规约扫描提出的问题一一解决。
- 问题1:包名应为全部小写字母和数字组成。
- 解决方法:右击包名->Refactor->Rename,进行重命名。
- 问题2:所有的类都必须添加创建者信息
- 解决方法:按照下面的格式,添加作者和日期。
- 问题3:类、类属性、类方法必须用javadoc规范
- 解决方法:将注释格式改完
/**内容*/
- 问题4:方法名、参数名、成员变量、局部变量没有遵从驼峰形式
- 解决方法:将要修改的变量单击右键,Refactor->Rename,进行重命名,这样能够批量的进行修改,不用自己一个一个的改。
- 修改后代码截图:
(4)Java密码学相关内容的学习
- 体验加解密-凯撒密码
- 加密:c≡m+k mod n
- 解密:m≡c+k mod n
Java对称加密-DES算法
- 获取密钥生成器:
KeyGenerator kg=KeyGenerator.getInstance("DESede"); - 初始化密钥生成器:
kg.init(168); - 生成密钥:
SecretKey k=kg.generateKey( );
- 以对象保存在文件中:通过对象序列化方式将密钥保存在文件中:
FileOutputStream f=new FileOutputStream("key1.dat");
ObjectOutputStream b=new ObjectOutputStream(f);
b.writeObject(k);

- 以字节保存在文件中:
- 获取密钥
- 获取主要编码格式
- 保存密钥编码格式

- 加密“Hello World!”

- 对“Hello World!”生成的密文解密

- 获取密钥生成器:
Java非对称加密-RSA算法

- 加密“Hello World!”

- 对“Hello World!”生成的密文解密

使用密钥协定创建共享密钥
- 创建DH公钥和私钥
- A生成的公钥和私钥

- B生成的公钥和私钥

- 创建共享密钥

- 创建DH公钥和私钥
Java摘要算法- MD5

三、实验过程中遇到的问题及其解决方法
- 问题:对于凯撒密码的加解密,之前做密码学实验的时候,自己用java实现过,对于其中的加解密,很是烦躁,因为明文是字符型加上密钥作为偏移量,一进行运算就会变成整数,然后还得从整数转回字符,还要考虑是否超出26。
- 解决方法:通过本次学习,我发现将
c=c+(key%26)缩写成c+=key%26;就可以很好的解决这个问题。 - 之前我的解决办法:
四、心得体会
- 这次实验内容大部分我之前都解决过了,所以没有什么问题。
- 就是看别人的程序有点吃力,我搭档用的很多高级方法我都没见过,需要经常查看帮助文档才能勉强理解,但是也扩宽了我的视野。
- 本次实验,对我来说收获最大的应该就是学会了代码的规范,规范后的代码看起来真的很舒服。
- 补:学了Java Collections API和泛型以及java密码学算法,
真的是受益匪浅。相当于复习了一遍数据结构和密码学,虽然并没有介绍算法的内核,但是让我学会了如何使用各种加解密算法的使用。 - 链接里几乎对每句代码都有详细的解释,所以学起来并不难,就是内容有点多,但是看到后面就会发现其实都差不多,所以总的来说本次实验还是学到了不少东西。
五、码云链接
六、结对成员链接
七、参考资料
学号 20175313 《实验三 敏捷开发与XP实践》实验报告的更多相关文章
- 20165308实验三 敏捷开发与XP实践实验报告
实验三 敏捷开发与XP实践实验报告 实验目的 安装 alibaba 插件,解决代码中的规范问题.再研究一下Code菜单,找出一项让自己感觉最好用的功能. 在码云上把自己的学习搭档加入自己的项目中,确认 ...
- 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...
- 20155220 实验三 敏捷开发与XP实践 实验报告
20155220 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- # 20155224 实验三 敏捷开发与XP实践 实验报告
20155224 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 20155226 实验三 敏捷开发与XP实践 实验报告
20155226 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 20155311 实验三 敏捷开发与XP实践 实验报告
20155311 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 xp核心工具 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告
2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...
- 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20162311 实验三 敏捷开发与XP实践 实验报告
20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...
- 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20155207王雪纯 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
随机推荐
- 在python中使用print()时,raw write()返回无效的长度:OSError: raw write() returned invalid length 254 (should have been between 0 and 127)
写出一个不是code的bug,很烦恼,解决了挺长时间,都翻到外文来看,不过还是解决了,只尝试了一种简单可观的方法,希望对大家有用 我正在使用Django与Keras(tensorflow)来训练一个模 ...
- JAVA 动态代理原理和实现
在 Java 中动态代理和代理都很常见,几乎是所有主流框架都用到过的知识.在面试中也是经常被提到的话题,于是便总结了本文. Java动态代理的基本原理为:被代理对象需要实现某个接口(这是前提),代理对 ...
- jdbc中的sql注入
- python 基于机器学习识别验证码
1.背景 验证码自动识别在模拟登陆上使用的较为广泛,一直有耳闻好多人在使用机器学习来识别验证码,最近因为刚好接触这方面的知识,所以特定研究了一番.发现网上已有很多基于machine learni ...
- mysql case when * else end
分条件计算总数 SELECT -- SUM( END) as am, -- SUM( END) as om , -- SUM( END) as aom , -- SUM( then AmoutPric ...
- phpstorm对laravel的一些使用技巧
安装laravel插件,设置ctrl+alt+s 二 安装智能提示插件 composer require barryvdh/laravel-ide-helper 在config/app.php的pro ...
- 微信小程序--家庭记账本开发--01
微信小程序的开发准备与开发工具的学习 在这次寒假伊始,临近春节,学习进程有所拉下,现在补上.寻找了好多网站的相关学习视频,包括微信公众平台关于小程序这方面也有好多相关资料供查阅. 1.开发准备: 首先 ...
- xss的一般防护措施(及CreateDefaultBuilder源码)
从上个礼拜开始,公司的安全小组就开始排查公司项目的安全性,首屈一指的就是xss问题,为此我总结了下我的经验. 1.对后台程序的输出数据做html编码处理,前端做简单的替换处理 2.如果业务需要,后台可 ...
- HttpConnection
1.HttpConnection 用于接受和发送网络数据 网络操作必须新开个子线程执行,否则会出现 ANR(Application Not Response) 应用无响应异常 Get: /** * 通 ...
- 翻转 -- CodeForces - 56B
题目链接: https://cn.vjudge.net/problem/25167/origin 思路: 这是一道水题,但是一开始思路有点问题.. 1000的数据大小,直接暴搜左开始第一个与i不等的下 ...



















