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

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) 两个分支

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

1071521-20170429195816115-24597284.png

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是服务器套接字的一个实现。

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

代码托管

1071521-20170429201035022-36850792.png

上周考试错题总结

  • 错题1及原因,理解情况
  • 错题2及原因,理解情况
  • ...

结对及互评

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

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

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

  • 正确使用Markdown语法(加1分):
  • 模板中的要素齐全(加1分)
  • 教材学习中的问题和解决过程, (加1分)
  • 代码调试中的问题和解决过程, (加1分)
  • 本周有效代码超过300分行的(加2分)
  • 其他加分:
    感想,体会不假大空的加1分

  • 排版精美的加1分
  • 进度条中记录学习时间与改进情况的加1分
  • 代码Commit Message规范的加1分
  • 结对学习情况真实可信的加1分

点评过的同学博客和代码

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

由于上周数据库相关内容没有学好,本周又重温了相关内容,在网上看了老师要求的书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小时

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

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

转载于:https://www.cnblogs.com/ljq1997/p/6786162.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值