实验三 敏捷开发与XP实践

安装alibaba 插件,解决代码中的规范问题

  • 根据老师的教程:打开Settings ->Plugins -> Browse repositories...在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDEA生效

  • 在IDEA左目录栏里右键.java文件图标,选择编码约规扫描,然后根据下方报错里修改自己的代码格式。

  • 规范例代码截图

  • 学习Code菜单

    • 使用Code->Reformate Code,将代码格式化
    • 由于代码有限,我上网查找并简单实践学习了Code菜单的功能,以下是学习笔记:

与搭档互相加入项目

  • 在码云中自己项目下管理—>开发者区,邀请搭档加入自己的项目。现在两人就可以互相修改对方的项目啦!这相当于我们在开发一个软件或者公用一些代码时方便两人一起协作开发,并且Git commit时提交的提示信息的作用也显现出来。互相可以了解代码的作用,或者自己对代码做了什么修改,让搭档一目了然。
  • 接着就是连接搭档的码云地址。
    • 一开始我陷入了误区,在自己的大文件夹下新建文件夹连接搭档的项目,然后失败了,这样新建出来的文件任然属于我自己的子项目。
    • 正确的操作是:建立一个与自己主文件夹平行的文件夹用来存储搭档的代码。git clone上搭档的地址以后,只要git push一下,代码就轻松down下来了。
  • 修改与编辑操作
    • 与原来对自己的项目操作相同,改好后主要以标注修改内容,git push上码云就行。
  • 实验截图:

重构

  • 我们来看看可以在哪些方面对代码进行重构:

    • 重命名:对类,接口,方法,属性等重命名,以使得更易理解
    • 抽取代码:将方法内的一段代码抽取为另一个方法,以使得该段代码可以被其他方法调用,这是重构中很重要很常用的,此举可以极大的精炼代码,减少方法的代码行数
    • 封装字段:将类的某个字段转换成属性,可以更加合理的控制字段的访问
    • 抽取接口:将类的某些属性,方法抽取组成个接口,该类自动实现该接口
    • 提升方法内的局部变量为方法的参数:这主要是在写代码的过程中会使用到
    • 删除参数:将方法的一个或多个参数删掉
    • 重排参数:将方法的参数顺序重新排列

      实际应用中,用的最多的是1、2、3,我们可以在写代码的时候有意识的运用代码重构,这样当我们完成编码时代码的质量也能得到保证。
  • 对搭档代码进行重构

  • 参考了学长学姐的博客进行修改。

  • 实验截图如下:

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为基本字符个数)

重构后的代码为:

public class Caesar{
public static void main(String []args) throws Exception{
String s=args[0];
int key=Integer.parseInt(args[1]);
String es="";
for(int i=0;i<s.length( );i++)
{ char c=s.charAt(i);
// 是小写字母
c = getC(key, c);
es+=c;
}
System.out.println(es);
}
private static char getC(int key, char c) {
if(c>='a' && c<='z') {
//移动key%26位
c = move(key, c);
if(c<'a') {
//向左超界
c = changeCplus(c);
}
if(c>'z') {
//向右超界
c = changeCminus(c);
}
}
// 是大写字母
else if(c>='A' && c<='Z') {
c = move(key, c);
if(c<'A') {
c = changeCplus(c);
}
if(c>'Z') {
c = changeCminus(c);
}
}
return c;
}
private static char changeCminus(char c) {
c -= 26;
return c;
}
private static char changeCplus(char c) {
c += 26;
return c;
}
private static char move(int key, char c) {
c+=key%26;
return c;
}
}
  • 实验结果截图:

Java摘要算法- MD5

使用Java计算指定字符串的消息摘要。

java.security包中的MessageDigest类提供了计算消息摘要的方法,

首先生成对象,执行其update()方法可以将原始数据传递给该对象,然后执行其digest( )方法即可得到消息摘要。具体步骤如下:

(1) 生成MessageDigest对象

MessageDigest m=MessageDigest.getInstance("MD5");

分析:和2.2.1小节的KeyGenerator类一样。MessageDigest类也是一个工厂类,其构造器是受保护的,不允许直接使用new MessageDigist( )来创建对象,而必须通过其静态方法getInstance( )生成MessageDigest对象。其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。若对MD5算法的细节感兴趣可参考http://www.ietf.org/rfc/rfc1321.txt。

(2) 传入需要计算的字符串

m.update(x.getBytes("UTF8" ));

分析:x为需要计算的字符串,update传入的参数是字节类型或字节类型数组,对于字符串,需要先使用getBytes( )方法生成字符串数组。

(3) 计算消息摘要

byte s[ ]=m.digest( );

分析:执行MessageDigest对象的digest( )方法完成计算,计算的结果通过字节类型的数组返回。

(4) 处理计算结果

必要的话可以使用如下代码将计算结果s转换为字符串。

String result="";
for (int i=0; i<s.length; i++){
result+=Integer.toHexString((0x000000ff & s[i]) | 0xffffff00).substring(6);
}

重构代码:

import java.security.*;
public class DigestPass{
public static void main(String[ ] args) throws Exception{
String x = getString(args[0]);
MessageDigest m=MessageDigest.getInstance("MD5");
m.update(x.getBytes("UTF8"));
byte[] s = getDigest(m);
String result="";
for (int i=0; i<s.length; i++){
result+= getString(s[i]).substring(6);
}
System.out.println(result);
}
private static String getString(byte b) {
return Integer.toHexString((0x000000ff & b) |
0xffffff00);
}
private static byte[] getDigest(MessageDigest m) {
return m.digest();
}
private static String getString(String arg) {
return arg;
}
}
  • 实验结果截图:

实验总结

本次实验主要学会了如何在IDEA中规范代码,如何邀请搭档加入自己的项目,还明白了如何进行内容的重构。在邀请搭档加入自己项目的过程中,我们在互相加入各自2018java的项目的基础上重新建了一个项目,这样方便共同传送文件,避免误删等偶然性失误。与此同时,通过学习Java密码学算法的博客,了解了凯撒密码和摘要算法——MD5,以及如何进行秘钥的共享的知识。在IDEA中有些功能不能成功运行,然后就到Ubuntu中进行操作,虽然过程有些曲折,但总的收获很大。

20165322 实验三 敏捷开发与XP实践的更多相关文章

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

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

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

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

  3. JAVA课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

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

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

  5. 20145215实验三 敏捷开发与XP实践

    20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...

  6. 20145325张梓靖 实验三 "敏捷开发与XP实践"

    20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...

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

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

  8. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  9. 20175314 实验三 敏捷开发与XP实践

    20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...

随机推荐

  1. PIE SDK算法的自定义扩展

    1.算法功能简介 算法的自定义扩展允许用户自主开发新的算法.自定义的算法必须实现PIE.SystemAlgo.BaseSystemAlgo基础类,这样才能被PIE的算法管理器调用起来. 2.算法功能实 ...

  2. redis 网络架构

    https://blog.csdn.net/simplemurrina/article/details/53890542 GDB  redis https://gitbook.cn/gitchat/c ...

  3. python 计数器Counter

    from collections import Counter colours=( ('Yasoob','Yellow',1), ('Ali','Blue',2), ('Arham','Green', ...

  4. oracle 基础知识(四) 构成

    一, oracle服务 一个oracle 服务由一个oracle 实例和一个oracle数据库组成. oracle = instance + database 总体概念: 二, oracle 实例 0 ...

  5. Android 中判断网络状态

    首先在AndroidManifest.xml添加权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_ ...

  6. Ruby初探

    官方网站:https://www.ruby-lang.org/zh_cn/ 标准库API文档:http://ruby-doc.org/stdlib-2.3.0/ 简介特性安装Ruby 命令行选项编码语 ...

  7. ABP文档笔记 - 模块系统 及 配置中心

    ABP框架 - 模块系统 ABP框架 - 启动配置 Module System Startup Configuration ABP源码分析三:ABP Module ABP源码分析四:Configura ...

  8. Linux下远程连接工具SSHSecureShellClient的使用

    实际开发中,Linux 服务器都在其他的地方,我们要通过远程的方式去连接 Linux 并操作它,Linux 远程的操作工具有很多,企业中常用的有 Puttty.secureCRT.SSH Secure ...

  9. TOJ 4393 Game

    描述 Bob always plays game with Alice.Today,they are playing a game on a tree.Alice has m1 stones,Bob ...

  10. java scoket http TCP udp

    http://blog.csdn.net/kongxx/article/details/7259436 TCP/UDP: 齐全:http://www.blogjava.net/Reg/archive/ ...