实验三 《敏捷开发与XP实践》

实验报告封面

课程:Java程序设计 班级:1751班 姓名:王鑫浩 学号:20175105

指导教师:王鑫浩 实验日期:2019年4月29日

实验时间:--- 实验序号:实验三

实验名称:敏捷开发与XP实践


实验要求:

  • 完成实验三 敏捷开发与XP实践中的内容,参考Java密码学算法相关内容
  • 其中Eclipse相关的内容参考Intellj IDEA简易教程换成IDEA实现
  • 完成云班课中的检查点,也可以先完成实验报告,直接提交。注意不能只有截图,要有知识点,原理,遇到的问题和解决过程等说明。实验报告中一个检查点要有多张截图。
  • 发表实验报告博客,标题“学期(如2018-2019-2) 学号(如20175300)实验三《敏捷开发与XP实践》实验报告”

实验步骤

代码规范

要求:

敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA

参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。

在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));
}
}

具体操作

  • 打开 Settings-> Plugins -> Marketplace 在搜索框输入Alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效:

  • 利用编码规约扫描,解决代码中的规范问题

  • 格式化代码(快捷键为Ctrl+Alt+L,操作中清理代码选项可根据自身情况勾选)

  • Code操作快捷键对照

    Override Methods ( 重写覆盖方法 ) Ctrl + O

    Implements Methods ( 实现接口方法 ) Ctrl + I

    Gengrate ( 用于生成Construct、Getter/Setter、toString等) Alt + Insert

    Surround With (使用if-else、for、while等语句包装代码段) Ctrl+Alt+T

    SmartType ( 智能选择并实现 ) Ctrl + Shift + 空格

    Cyclic Expand Word ( 循环往上选择单词 ) Alt + /

    Cyclic Expand Word (Backwrad)( 循环往下选择单词 ) Alt + Shift + /

    Expand ( 方法展开 ) Ctrl + 加号

    Collapse ( 方法折叠 ) Ctrl + 减号

    Expand Recursively ( 同上,方法展开 ) Ctrl + Alt + 加号

    Collapse Recursively ( 同上,方法折叠 ) Ctrl + Alt + 减号

    Expand All ( 全部方法展开 ) Ctrl + Shift + 加号

    Collapse All ( 全部方法折叠 ) Ctrl + Shift + 减号

    Insert Live Template ( 选择Live Templates模板 ) Ctrl + J

    Surround with Live Template ( 选择Live Templates模板 ) Ctrl + Alt + J

    Comment with Line Comment ( 行注释 ) Ctrl + /

    Comment with Block Comment ( 块注释 ) Ctrl + Shift + /

    Reformat Code ( 格式化代码 ) Ctrl + Alt + L

    Show Reformat File Dialog ( 弹出格式化弹框 ) Ctrl + Alt + Shift + L

    Optimize Imports ( 去除未引用的包导入声明 ) Ctrl + Alt + O

结对编程

要求:

  • 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
  • 提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。
  • 邀请结对伙伴加入自己的仓库

具体操作

  • 1.拷贝同伴仓库代码到虚拟机

  • 2.加入不少于三个JUnit单元测试用例



重构

要求

  • 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
  • 完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

概念:重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。

前提:不改变软件外部行为;来确保重构的安全

如何做到不改变软件外部行为?

重构后的代码要能通过单元测试

修改软件的四种动机:

1.增加新功能

2.原有功能有BUG

3.改善原有程序的结构

4.优化原有系统的性能

重构过程中常出现的问题:

没有为类注释作者

所有的覆写方法,必须加@Override注解


Java密码学算法

要求

安全问题可以归结为安全的三个属性(CIA金三角):

机密性(Confidentiality)

完整性(Integrity)

可用性(Availability)

密码学: 主要是研究保密通信和信息保密的学科, 包括信息保密传输和信息加密存储等。密码学包含密码编码学( Cryptography) 和密码分析学(Cryptanalyst) 两个分支。

Java安全体系结构总共分为4个部分:

  • JCA( Java Cryptography Architecture, Java加密体系结构):JCA提供基本的加密框架, 如证书、 数字签名、消息摘要和密钥对产生器。
  • JCE( Java Cryptography Extension, Java加密扩展包):JCE在JCA的基础上作了扩展, 提供了各种加密算法、 消息摘要算法和密钥管理等功能。JCE的实现主要在javax.crypto包( 及其子包) 中
  • JSSE( Java Secure Sockets Extension, Java安全套接字扩展包):JSSE提供了基于SSL( Secure Sockets Layer,安全套接字层) 的加密功能。 在网络的传输过程中, 信息会经过多个主机(很有可能其中一台就被窃听) , 最终传送给接收者, 这是不安全的。这种确保网络通信安全的服务就是由JSSE来提供的。
  • JAAS( Java Authentication and Authentication Service, Java鉴别与安全服务):JAAS提供了在Java平台上进行用户身份鉴别的功能。

体验加解密---凯撒密码

其加密过程如下:

在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。凯撒密码的加密过程可记为如下一个变换:

c≡m+k mod n (其中n为基本字符个数)

同样,解密过程可表示为:

m≡c+k mod n (其中n为基本字符个数)

/**
* @author wxh
* @date 2019/5/2
*/ public class Caesar {
public static void main(String args[]) throws Exception{
String s=args[0];
int key=Integer.parseInt(args[1]);
Movement m=new Movement();
int n=s.length();
String es="";
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
if(c >= 'a' && c <= 'z'){
es=m.realizeMove(n,c,key,'a','z');
}
else if (c >= 'A' && c <= 'Z'){
es=m.realizeMove(n,c,key,'A','Z');
}
}
System.out.println(es);
}
}
/**
* @author wxh
* @date 2019/5/2
*/
public class Movement {
String es="";
public String realizeMove(int n,char c,int key,char a,char b){
//移动key%26位
c+=key%26;
if(c<a) {
c+=26;
//向左超界
}
if(c>b) {
c-=26;
//向右超界
}
es+=c;
return es;
}
}




感悟和收获

在本次实验中感受到了代码重构也是做程序一道重要且十分耗费精力的步骤,也进一步体会到结对作业的好处,同时学习了git clone的使用,方便了结对过程中双方互相补充的过程。

其次就是第一次利用代码直观了解了密码算法的实现,体会了密码学思想。

代码托管

我的码云[https://gitee.com/xinhaoa/textbook_code.git]

小伙伴的码云[https://gitee.com/Apollo20175126/java-besti-20175126.git]

参考资料

https://blog.csdn.net/weixin_42254058/article/details/81219931

2018-2019-2 20175105王鑫浩《Java程序设计》实验三 《敏捷开发与XP实践》的更多相关文章

  1. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

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

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

  3. 20145213《Java程序设计》实验三敏捷开发与XP实践

    20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...

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

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

  5. 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"

    20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...

  6. 20155324 《Java程序设计》实验三 敏捷开发与XP实践

    20155324 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 1.XP核心实践 2.相关工具 实验步骤 敏捷开发与XP 1.敏捷开发(Agile Developme ...

  7. 20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践

    20165205 2017-2018-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 检查点1: 安装alibaba 插件,解决代码中的规范问题 首先把搭档加入到自己的项目中 ...

  8. 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践

    20155314 2016-2017-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验知识点总结 (一)敏捷开发与XP 软件工程:把系统 ...

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

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

  10. 20155233 《Java程序设计》 实验三 敏捷开发与XP实践

    20155233 <Java程序设计> 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤与内容 1.在IDEA中使用工具(Code->Reformat ...

随机推荐

  1. 16/8/23-jQuery完全图解scrollLeft,scrollWidth,clientWidth,offsetWidth 获取相对途径,滚动图片

    引用地址:http://www.cnblogs.com/mguo/archive/2013/03/19/2969657.html scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最 ...

  2. 【Unity知识点】安卓游戏如何在切后台后继续运行

    解决方法很简单,在android项目AndroidManifest.xml文件中的activity中添加如下内容: android:configChanges="fontScale|keyb ...

  3. MapReduce(3): Partitioner, Combiner and Shuffling

    Partitioner: Partitioning and Combining take place between Map and Reduce phases. It is to club the ...

  4. (经典文章uplink)Information capacity and power control in single-cell multiuser communications(1995)

    摘要:本文在用户衰落被完美测量的情况下,提出一种可最大程度提高单小区多用户通信平坦衰落的信息容量的功率控制.主要特征为:在任何特定的时刻,只有一个用户在整个带宽上进行传输,并且在信道良好时为用户分配更 ...

  5. 《JAVA设计模式》之代理模式(Proxy)

    在阎宏博士的<JAVA与模式>一书中开头是这样描述代理(Proxy)模式的: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式的结 ...

  6. Spring Security 04

    转至:Elim的博客http://elim.iteye.com/blog/2161648 Filter Porxy DelegatingFilterProxy DelegationFilterProx ...

  7. 解读vue filter

    1.全局filter, 全局的过滤一般在main.js里面使用 <div id="app"> <div> {{testVal | filVal(10,30) ...

  8. 细聊Spring Cloud Bus

    细聊Spring Cloud Bus Spring 事件驱动模型 因为Spring Cloud Bus的运行机制也是Spring事件驱动模型所以需要先了解相关知识点: 上面图中是Spring事件驱动模 ...

  9. 【洛谷UVA307】小木棍Sticks

    小木棍Sticks[传送门] 算法的话:dfs+超强剪枝: (另外注意UVA上好像不接受万能头[因为万能头WA了两次,瑟瑟发抖]) 思路: 最直接的思路,枚举木棍长度来dfs,但这样很容易就TLE了. ...

  10. [Bzoj1051][HAOI2006]受欢迎的牛(tarjan)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1051 由题意可知,被所有牛仰慕的牛之间也互相仰慕,则最后的答案一定是唯一的强连通分量,如 ...