20155228 2016-2017-2 《Java程序设计》第10周学习总结

教材学习内容总结

网络

  • 网络是能够波此通信的计算机的集合根据范}到的宽度,网络可以分为局域网和广域网。LAN通常限定在一个有效的地理区域之内,例如建筑之内,最少由3台计算机,最多由数百台计算机组成。而WAN相反,由地理上分隔开的多个LAN组成。当然,最大的网络还是互联网。

  • HTTP是允许Web服务器和浏览器之间通过互联网发送和接收数据的协议。它是一种请求和响应协议。客户端请求一个文件,而服务器则响应该请求。HTTP使用可靠的TCP连接,默认是80号端上的TCP。HTTP的第一个版本是HTTP/0.9,随后就被HTTP/ 1.0所替代。替代HTTP/1.0的当前的版本是HTTP/1.1,该版本在RFC 2616中定义,可以从http://www.w3.org/Protocols/HTTP, 1. 1 /rtc2616.pdf 中下载该文档。

  • URL是互联网资源的唯一的地址。例如,互联网上的每一页都有一个不同的URL。URL有几个部分。第1部分表示用来获取资源的协议。在上面的例子中,协议是HTTP。第2部分www.yahoo.com是主机。它告诉你资源驻留在什么位置。主机后面的数字80是一个端口号。最后一部分/enlindex.html,指定了到URL的路径。默认情况下,HTTP使用端口80。

  • URLConnection表示到远程机器的一次连接。使用它读取资源并写到一台远程机器中。URLConnection类并没有公共的构造方法,因此,你无法使用new关键字来构造一个URLConnection实例。要获取URLConnection的一个实例,可以在个URL对象上调川openConnection方法。URLConnection类有两个布尔类型的字段,dolnput和do0utput,它们分别表示:URLConnection是用于读还是写。dolnput的默认值是true,表示可以使用一个URLConnection来读取一个Web资源。do0utput的默认值是false,表示一个URLConnection不能用于写。可以使用setDofnput和setDoOutput方法来设置dolnput和do0utput的值。

  • 套接字是一个网络连接的端点。套接字使得应用程序能够从网络读取或者向网络写入信息。位于两台不同的计算机上的软件,通过一个连接来发送和接受位数据流,就可以彼此通信。要从你的应用程序向另一个应用程序发送一条消息,需要知道另一个应用程序的IP地址以及套接字的端口号。在Java中,使用一个」ava.net.Socket对象来表示一个套接字。

  • Socket表示一个客户端套接字,即当你想要连接到一个远程服务器应用的时候,可以构造一个套接字。然而,如果你想要实现一个服务器应用程序,例如个HTTP服务器或一个FTP服务器,你需要一种不同的方法。服务器必须随时待命,因为它不知道客户端应用程序下什么时候会尝试连接它。为了让应用程序能够做到这一点,你需要使用java.net.ServerSocket类。ServerSocket是服务器套接字的一个实现。

java密码技术

密码学常用术语 常用术语解释
明文(Plaintext) 指待加密信息。明文可以是文本文件、 图片文件、 二进制数据等。
密文(Ciphertext) 指经过加密后的明文。 密文通常以文本、 二进制数据等形式存在。
发送者(Sender) 指发送消息的人。
接收者(Receiver) 指接收消息的人。
加密(Encryption) 指将明文转换为密文的过程。
加密算法( Encryption Algorithm) 指将明文转换为密文的算法。
加密密钥( Encryption Key) 指通过加密算法进行加密操作用的密钥。
解密( Decryption) 指将密文转换成明文的过程。
解密算法( Decryption Algorithm) 指将密文转换为明文的算法。
解密密钥( Decryption Key) 指通过解密算法进行解密操作用的密钥。
密码分析( Cryptanalysis) 指截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程。
密码分析者( Cryptanalyst) 等同于密码破译者, 指从事密码分析的人。
被动攻击( Passive Attack) 指对一个保密系统采取截获密文并对密文进行分析和攻击的行为。 这种攻击对密文没有破坏作用。
主动攻击( Active Attack) 指攻击者非法入侵密码系统, 采用伪造、 修改、 删除等手段向系统注入假消息进行欺骗的行为。 这种攻击对密文具有破坏作用。
密码体制( Cipher System) 由明文空间、 密文空间、 密钥空间、 加密算法和解密算法五部分构成。

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平台上进行用户身份鉴别的功能。

教材学习中的问题和解决过程

1.java中的网络通信的方式和区别

名称 解释
TCP TCP是一种面向连接的保证可靠传输的协议。通过TCP实现的传输,得到的是一个顺序的无差错的数据流。发送方和接收方成对的两个socket之间必须建立连接,以便在TCP的基础上进行通信,当一server socket)等个socket(通常都是等待建立连接时
UDP 而UDP是一种无连接的协议,每个数据都是一个独立的信息,包括完整的源地址和目的地址 ,UDP是不可靠的。

2.JAVA使用DES对称加密

DES是一种对称加密(Data Encryption Standard)算法,一般有两个关键点:第一个是加密算法,第二个是数据补位。

DES加密算法常见的有ECB模式和CBC模式:

  • ECB模式:电子密本方式,这是JAVA封装的DES算法的默认模式,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,则补足8个字节(注意:这里就涉及到数据补位了)进行计算,之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响。
  • CBC模式:密文分组链接方式,这是.NET封装的DES算法的默认模式,比较麻烦。

数据补位

  • 一般有NoPadding和PKCS7Padding填充方式,PKCS7Padding和PKCS5Padding只是协议不一样,,PKCS5Padding明确定义了加密块是8字节,PKCS7Padding加密快可以是1-255之间。但是封装的DES算法默认都是8字节,所以可以认为他们一样。

  • 对于JAVA在使用DES对称加密时,需要指定算法和填充模式,并且在写DES加解密算法时,还需要根据创建Cipher对象的不同,正确使用IV向量。在不同系统需要互相数据时,必须要明确的是加密算法,Key和算法模式,再根据不同模式是否需要IV向量,最后是填充模式。

代码调试中的问题和解决过程

JAVA中的DES加密

    public static String encrypt2(String src) throws Exception {
SecureRandom sr = new SecureRandom();
DESKeySpec ks = new DESKeySpec(KEY.getBytes("UTF-8"));
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
SecretKey sk = skf.generateSecret(ks);
Cipher cip = Cipher.getInstance("DES/CBC/PKCS5Padding");//Cipher.getInstance("DES");
IvParameterSpec iv2 = new IvParameterSpec(IV);
cip.init(Cipher.ENCRYPT_MODE, sk, iv2);//IV的方式
//cip.init(Cipher.ENCRYPT_MODE, sk, sr);//没有传递IV
String dest = byteToHex(cip.doFinal(src.getBytes("UTF-8")));
return dest;
}
  • JAVA的javax.crypto.Cipher包下,提供了加密解密的功能,它的静态getInstance方法,可以返回一个Cipher对象,一般有public static final Cipher getInstance(String transformation)方法,transformation为:algorithm/mode/padding,分别表示算法名称,比如DES,也可以在后面包含算法模式和填充方式,但也可以只是算法名称。JAVA中默认的算法为ECB,默认填充方式为PKCS5Padding

    Cipher的Init方法用来初始化加密对象,常见的有:

    public final void init(int opmode, Key key, AlgorithmParameterSpec params)

    public final void init(int opmode,Key key, SecureRandom random)

代码托管

上周考试错题总结

1.ByteBuffer 调用了flip()之后,position的值一定是0。

  • A .True

  • B .False

答案:B

2.正则表达式”(‘|”)(.*?)\1”匹配 “'Hello',"World””的结果是()

  • A .不匹配

  • B .'Hello'

  • C ."World"

  • D .'Hello',"World"

答案:B、C
解析:反向引用 \1 代表第一个()中的匹配内容

3.bc? 匹配( )

  • A .ab

  • B .abc

  • C .abcc

  • D .abccc

答案:A、B
解析:? 重复0或1次

4.Which of the statements is true about the following code snippet?(对于下面的代码段,说法正确的是?)

     int[] array = new int[25];
array[25] = 2;
  • A .The integer value 2 will be assigned to the last index in the array.(整数2会赋给数组中最后一个元素)

  • B .The integer value 25 will be assigned to the second index in the array.(整数25会赋给数组中的第2个索引)

  • C .The integer value 25 will be assigned to the third value in the array. (整数25会赋给数组中的第3个元素)

  • D .This code will result in a compile-time error.(代码会产生编译时错误)

  • E .This code will result in a run-time error. (代码会产生运行时错误)

答案:E
解析:This code will throw an ArrayIndexOutOfBoundsException, since the last index in this array will be 24. This causes a run-time error.

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评过的同学博客和代码

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 20篇 400小时
第一周 10/10 1/4 12/12
第二周 120/130 1/5 9/21
第三周 210/340 1/6 9/30
第四周 460/800 1/7 9/39
第五周 400/1200 1/8 9/48
第六周 300/1500 1/9 9/57
第七周 300/1800 2/11 9/66
第八周 300/2100 1/12 9/75
第九周 300/2400 2/14 9/84
第十周 300/2700 1/15 9/93

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:9小时

  • 实际学习时间:9小时

(有空多看看现代软件工程 课件

软件工程师能力自我评价表
)

参考资料

20155228 2016-2017-2 《Java程序设计》第10周学习总结的更多相关文章

  1. 2018面向对象程序设计(Java)第10周学习指导及要求

    2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4)  学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...

  2. 面向对象程序设计(JAVA) 第10周学习指导及要求

    2019面向对象程序设计(Java)第10周学习指导及要求 (2019.11.1-2019.11.4)   学习目标 1.掌握java异常处理技术: 2.了解断言的用法: 3.了解日志的用途: 4.掌 ...

  3. 20155334 2016-2017-2 《Java程序设计》第九周学习总结

    20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...

  4. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  5. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  6. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  7. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  10. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

随机推荐

  1. 20165336 预备作业3 Linux安装及学习

    Linux 安装及学习 一.VirtualBox和Ubuntu的安装 依照老师所给的步骤下载了VirtualBox 5.2.6和Ubuntu 16.04.3. 按照步骤一步一步进行了安装,出现的问题有 ...

  2. 【PyQt5-Qt Designer】在GUI中使用pyqtgraph绘图库

    pyqtgraph绘图库 1.1 简介: pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于内部实现方式上,使用了高速计算的numpy信号处理库以 ...

  3. oracle创建表空间 授权

    --创建表空间 临时表空间 create temporary tablespace xiaodai_temp tempfile '/main/app/oracle/oradata/devdb/xiao ...

  4. mysql \c 终止 mysql输入语句模式

    \c 遇到这种情况怎么退出mysql 输入语句模式? mysql> select -> 输入\c退出 mysql> select -> \c mysql> 另外一种情况 ...

  5. MySQL 5.7 并行复制

    一.缘由: 某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下. 一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) ----->IO Thread (从) - ...

  6. RN-系列

    8081端口被占用,McAfee Agent关不掉 sudo lsof -n -i4TCP:8081 sudo launchctl list | grep 5693 sudo launchctl re ...

  7. from C++ to Java

    绝大部分对象都是指针,创建对象习惯性用new const ->  final 枚举类型 与 int的相互转换: 从int到enum: MyEnum.values()[x], where x mu ...

  8. extjs model store学习笔记

    http://docs.sencha.com/extjs/6.2.0/guides/core_concepts/data_package.html // 定义一个ModelExt.define('My ...

  9. js模拟队列----小优先队列

    队列:先进先出,后进后出 var Queue = (function(){ var item = new WeakMap(); class Queue{ constructor(){ item.set ...

  10. Permission denied: user=root, access=WRITE, inode="/":hadoopuser:supergroup:drwxr-xr-x

    提示往HDFS写文件是不容许的. 在conf/hdfs-site.xml中加入: <property> <name>dfs.permissions</name> & ...