您的位置:首页 > 编程语言 > Java开发

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

2017-04-29 20:25 337 查看

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

教材学习内容总结

本周学习目标

了解计算机网络基础

掌握Java Socket编程

理解混合密码系统

掌握Java 密码技术相关API的使用

计算机网络概述

计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。

两台计算机用于通信的语言叫做“协议”。我们只需关心应用层中的协议,而不必关心其他层的协议。Java中提供了类来封装应用层协议,使你无需了解协议就能向协议的服务器发送信息。

一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。

超文本传输协议(HTTP)

一次http请求包含三部分:方法—统一资源标识符——协议/版本、请求头、请求实体

一次http响应包含三部分:协议-状态码-说明、响应头、响应实体:响应自身的HTML内容。

java.net.URL

URL是互联网资源的唯一的地址,HTTP是URL中最常使用的协议但并不是唯一的。

在java中,一个URL通过一个java.net.URL对象来表示

可以使用URL类的OpenStream方法来读取一个Web资源。

可以使用URL类的openStream方法来读取一个Web资源

public final java.io.InputStream openStream()
throws java.io.IOException

java.net.URLConnection

URLConnection 实例时无法使用new创造的,要获取URLConnection实例可以在URL对象上调用openConnection

URLConnection类有两个布尔类型的字段:doInput和doOput,他们分别表示URLConnection是读还是写

可以使用setDoInput和setDoOutput方法来设置doInput和doOput的值

java.net.Socket

套接字是一个网络链接的端点。套接字使得应用程序能够从网络读取或者向网络写入信息。

一旦成功创建了Socket类的一个实例,就可以使用它发送或接收字节流。

可以调用Socket类的getOutputStream方法获取一个java.io.OutputStream对象,用来发送字节流;从返回的OutputStream对象构建一个java.io.PrintWriter对象,向远程应用程序发送文本。

java.net.ServerSocket

SeverSocket和Socket不同,服务器套接字的角色是,等待来自客户端连接的请求。

JAVA与密码学

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

机密性(Confidentiality):确保数据仅能被合法的用户访问, 即数据不能被未授权的第三方使用。

完整性(Integrity):主要确保数据只能由授权方或以授权的方式进行修改,即数据在传输过程中不能被未授权方修改。

可用性(Availability):主要确保所有数据仅在适当的时候可以由授权方访问。

密码学包含密码编码学( Cryptography) 和密码分析学(Cryptanalyst) 两个分支

密码学并不是孤立存在的, 它需要有一个环境——保密通信模型。



Java与密码学

Java安全体系结构总共分为四个部分:JCA,JCE,JSSE,JAAS.

Java对称加密-DES算法

对称密钥的生成和保存

编程思路:(1) 获取密钥生成器,(2) 初始化密钥生成器,(3) 生成密钥,(4) 通过对象序列化方式将密钥保存在文件中。

Java非对称加密-RSA算法

(1) 创建密钥对生成器

(2) 初始化密钥生成器

(3) 生成密钥对

(4) 获取公钥和私钥

Java摘要算法- MD5

(1) 生成MessageDigest对象

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

(3) 计算消息摘要

(4) 处理计算结果

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

问题1:SeverSocket和Socket的不同具体有哪些

问题1解决方案:查了许多,说啥的都有,总结起来就是Socket表示一个“客户端”套接字,而ServerSocket是服务器套接字的一个实现。

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

代码托管




上周考试错题总结

错题1及原因,理解情况

错题2及原因,理解情况

...

结对及互评

20155326

博客中值得学习的或问题: 教材内容总结的很认真。

代码中值得学习的或问题:代码问题提的很好,看得出来很认真。

基于评分标准,我给本博客打分:11分。得分情况如下:

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

模板中的要素齐全(加1分)

教材学习中的问题和解决过程, (加1分)

代码调试中的问题和解决过程, (加1分)

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

其他加分:

感想,体会不假大空的加1分

排版精美的加1分

进度条中记录学习时间与改进情况的加1分

代码Commit Message规范的加1分

结对学习情况真实可信的加1分

点评过的同学博客和代码

本周结对学习情况

20155326

结对照片

结对学习内容

XXXX

XXXX

...

上周博客互评情况(只要链接,具体点评放相应博客下)

20155338常胜杰

20145226夏艺华

20155233刘高乐

20155320罗佳琪

20155235王玥

20155316黄月

其他(感悟、思考等,可选)

由于上周数据库相关内容没有学好,本周又重温了相关内容,在网上看了老师要求的书22章的PDF版本并且在读娄老师写的博客过程中,终于领会到了java与密码学相结合,虽然第一次实验中自己编了凯撒密码相关内容,但是看了老师的博客感觉受益匪浅,感觉课程之间真的需要融会贯通呀。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行15篇400小时
第一周20/201/420/20安装了JDK及IDEA
第二周144/1641/518/38学习了java语言的基本语法
第三周447/5671/620/ 58掌握了一些有关对象和封装的内容
第四周875/ 14421/723/81学习了解了继承、接口和多态的相关问题
第五周775/22501/825/106学习了异常处理以及Collection与Map相关的内容
第六周487/ 27061/922/128学习了输入输出
第七周529/31272/1120/148学习了时间与日期
第八周417/ 34911/1220/168学习了NIO与NIO2和通用API
第九周975/45482/1322/190主要学习了整合数据库
第十周320/53931/1418/208主要学习了22章与密码学内容
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

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

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

计划学习时间:15小时

实际学习时间:18小时

改进情况:多花了一些时间学上周落下的数据库内容

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

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

参考资料

Java和Android开发学习指南(第二版)

Java 密码技术

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: