一、实验内容

(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算法

    1. 获取密钥生成器:KeyGenerator kg=KeyGenerator.getInstance("DESede");
    2. 初始化密钥生成器:kg.init(168);
    3. 生成密钥: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生成的公钥和私钥

    • 创建共享密钥

  • Java摘要算法- MD5

三、实验过程中遇到的问题及其解决方法

  • 问题:对于凯撒密码的加解密,之前做密码学实验的时候,自己用java实现过,对于其中的加解密,很是烦躁,因为明文是字符型加上密钥作为偏移量,一进行运算就会变成整数,然后还得从整数转回字符,还要考虑是否超出26。

  • 解决方法:通过本次学习,我发现将c=c+(key%26)缩写成c+=key%26;就可以很好的解决这个问题。
  • 之前我的解决办法:

四、心得体会

  • 这次实验内容大部分我之前都解决过了,所以没有什么问题。
  • 就是看别人的程序有点吃力,我搭档用的很多高级方法我都没见过,需要经常查看帮助文档才能勉强理解,但是也扩宽了我的视野。
  • 本次实验,对我来说收获最大的应该就是学会了代码的规范,规范后的代码看起来真的很舒服。
  • 补:学了Java Collections API和泛型以及java密码学算法,

    真的是受益匪浅。相当于复习了一遍数据结构和密码学,虽然并没有介绍算法的内核,但是让我学会了如何使用各种加解密算法的使用。
  • 链接里几乎对每句代码都有详细的解释,所以学起来并不难,就是内容有点多,但是看到后面就会发现其实都差不多,所以总的来说本次实验还是学到了不少东西。

五、码云链接

六、结对成员链接

七、参考资料

学号 20175313 《实验三 敏捷开发与XP实践》实验报告的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 【转载】Linux启动初始化配置文件浅析(解决source /etc/profile重启后就失效?)

    1)/etc/profile   登录时,会执行. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)/ect/bashrc   Ubuntu没有此文件,与之对应的是/ect/bash. ...

  2. Oracle 升级的必要性

    一.Oracle 历史 Oracle database 作为Oracle 公司的商业产品,凭借其稳定性和运行高效占据了全球三成以上的市场.并且主要是金融.政府等领域. Oracle 数据库拥有近40年 ...

  3. JAVA 调用https接口, java.security.cert.CertificateException

    package com.easycare.store.util; import java.security.cert.CertificateException; import java.securit ...

  4. day15.Python内置函数

    作用域相关 locals() -- 获取执行本方法所在命名空间的局部变量的字典 globals() --  获取全局变量的字典 print(locals()) print(globals()) {'_ ...

  5. WIN10在安装mysql时,出现“The security settings could not be applied to the database because the connection has failed with the following error. Error Nr. 1045

    解决方法:1, 首先卸载MySQL2, 再根据这个目录 C:\ProgramData,将MySQL删除.3, 重新安装MySQL 就好了(电脑不用重启)

  6. 设计模式之架构型MVC,MVP,MVVM模式

    一.MVCMVC,Model View Controller,是软件架构中最常见的一种设计模式,简单来说就是通过Controller的控制去操作Model层的数据,并且返回给view层展示.View跟 ...

  7. Node.js c++ 扩展之HelloWorld

    测试环境 vs:vs2017 node.js:9.9.6 相关地址 官方文档对应地址:https://www.nodejs.org/api/addons.html 官方案例对应地址:https://w ...

  8. Scrapy基础(十四)————Scrapy实现知乎模拟登陆

    模拟登陆大体思路见此博文,本篇文章只是将登陆在scrapy中实现而已 之前介绍过通过requests的session 会话模拟登陆:必须是session,涉及到验证码和xsrf的写入cookie验证的 ...

  9. PYTOGO之旅——环境搭建

    Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Windows 安装包下载地址为:https://golang.org/dl/. 如果打不开可以使用这个 ...

  10. 微信小程序免费Https获取以及Ubuntu Nginx配置

    先贴上Nginx的配置文件 user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections ...