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

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

    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分

    点评过的同学博客和代码

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

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

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 15篇 400小时
    第一周 20/20 1/4 20/20 安装了JDK及IDEA
    第二周 144/164 1/5 18/38 学习了java语言的基本语法
    第三周 447/567 1/6 20/ 58 掌握了一些有关对象和封装的内容
    第四周 875/ 1442 1/7 23/81 学习了解了继承、接口和多态的相关问题
    第五周 775/2250 1/8 25/106 学习了异常处理以及Collection与Map相关的内容
    第六周 487/ 2706 1/9 22/128 学习了输入输出
    第七周 529/3127 2/11 20/148 学习了时间与日期
    第八周 417/ 3491 1/12 20/168 学习了NIO与NIO2和通用API
    第九周 975/4548 2/13 22/190 主要学习了整合数据库
    第十周 320/5393 1/14 18/208 主要学习了22章与密码学内容

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

    • 计划学习时间:15小时

    • 实际学习时间:18小时

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

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

    参考资料

  • 相关阅读:
    ffmpeg 实现多宫格效果,视频拼接合成
    导入Excel文件
    递归查询区域信息及子区域到advTree
    Python简介以及入门
    windows环境下安装Python2和Python3
    计算机基础知识
    IIS服务器上apple-app-site-association文件报404、403解决
    redis IP 无法连接服务器
    返璞归真之 抽象类和接口区别
    记录自己不会的地方---webform中基于表格的基础上获取其中文本框的值
  • 原文地址:https://www.cnblogs.com/ljq1997/p/6786162.html
Copyright © 2020-2023  润新知