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

时间:2022-10-01 13:48:10

学习目标

  • 了解计算机网络基础
  • 掌握Java Socket编程
  • 理解混合密码系统
  • 掌握Java 密码技术相关API的使用

学习资源

教材学习内容总结

1.计算机网络基础

  • 在计算机网络中,现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4个0-255之间的数字组成,例如10.0.120.34。每个计算机在联网以后都拥有一个唯一的合法IP地址。
  • 一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。
  • 有了IP地址和端口的概念以后,在进行网络通讯交换时,就可以通过IP地址查找到该台计算机,然后通过端口标识这台计算机上的一个唯一的程序。这样就可以进行网络数据的交换了。

2.Java Socket编程

  • 搭建服务器端
    • 创建ServerSocket对象绑定监听端口
    • 通过accept()方法监听客户端的请求。
    • 建立连接后,通过输入输出流读取客户端发送的请求信息。
    • 通过输出流向客户端发送请求信息。
    • 关闭相关资源。
  • 搭建客户器端
    • 创建Socket对象,指明需要连接的服务器的地址和端口。
    • 建立连接后,通过输出流向服务器发送请求信息。
    • 通过输入流获取服务器的响应信息。
    • 关闭响应资源

3.混合密码系统

将对称密码和公钥密码结合起来的密码方式称为混合密码系统。

  • 对称密码(symmetric cryptography)是指在加密和解密时使用同一密钥的方式。
  • 公钥密码(public-key cryptography)则是指在加密和解密时使用不同密钥的方式,公钥密码又称为非对称密码(asymmetric cryptography)。

4.Java 密码技术相关API

Java Security API提供了可互操作的算法和安全服务的实现。服务以provider的形式实现,可以以插件的形式植入应用程序中。程序员可以透明地使用这些服务,如此使得程序员可以集中精力在如何把安全组件集成到自己的应用程序中,而不是去实现这些安全功能。此外,除了Java提供的安全服务外,用户可以编写自定义的security provider,按需扩展Java的security平台。

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

  • 问题1:掌握Java Socket编程与Java传统变成有什么区别?
  • 解决1:
    • Java Socket 可实现客户端--服务器间的双向实时通信。
    • 传统的编程一般只有服务器到客户端的单向通信。- Java Socket编程更适合现代的通讯需要,使用Socket能实现客户端的反馈与服务器的随时更新。**

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

课堂上老师让我们用递归的方式比较数组中的数。之前使用递归函数定义的是单个变量,但老师要求的定义是数组。一开始,总是不知道怎么敲代码,编译了好几次都有错。也尝试过用一个新的变量代替数组中没一个数,但效果还是不好。最后依旧将形参定义为单个数组才完成要求。
其他的关于密码学的代码按照教程运行,没有明显的问题。

代码托管

  • 用statistics脚本查看代码行数
    20155315 2016-2017-2 《Java程序设计》第十周学习总结

  • 代码提交结果
    20155315 2016-2017-2 《Java程序设计》第十周学习总结

上周考试错题总结

本周考试的内容是第二次实验和数据库建立,暂时没有答案,还要继续学习数据库的知识。

结对及互评

评分标准(满分10分)

  1. 从0分加到10分为止
  2. 正确使用Markdown语法(加1分):
    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  3. 模板中的要素齐全(加1分)
    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  4. 教材学习中的问题和解决过程, 一个问题加1分

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

  6. 本周有效代码超过300分行的(加2分)
  • 一周提交次数少于20次的不加分

6 其他加分:

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

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

  • 参考示例

    点评过的同学博客和代码

  • 20155304

  • 20155301
  • 20155219
  • 20155220
  • 20155336

体会

本周学习Java以及计算机网络基础和密码学的相关知识。这周的学习让我充分了解到学科融合的重要性。学习从来不只是一个学科的事,还要做到学以致用。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/1 10/10 安装了JDK、IDEA和Git,写了第一个Java程序
第二周 97/117 2/3 20/30 用Linux上传代码,熟悉修改文件的命令行
第三周 336/453 2/4 35/65 在Linux上安装JDK和IDEA,更熟悉vi的操作指令以及修改时需要注意的地方。
第四周 851/1304 1/5 25/90 学习用JDB调试程序
第五周 834/2138 1/7 32/122 能自己设计简单的程序,遇到问题也基本上能通过前面的学习和查资料解决,还有问题没有得到解决。
第六周 573/2711 1/8 15/137 理解课本中的内容并自己把之前的代码加以改正,更理解程序的作用,继续学习用JDB调试程序
第七周 400/3111 2/10 20/157 用IDEA编辑并调试程序,设置断点,完成了实验一
第八周 403/3511 1/11 20/177 熟悉通用API,深入学习代码并测试代码
第九周 1500/5011 2/13 20/217 了解了JDBC,章、第十七章和第十八章的内容,并检查以前的代码。共同学习实验二的内容,学习使用StarUML,用单元测试测试代码
第10周 1627/6638 1/14 20/237 使用递归和数组的方式使用命令行参数,学习Java以及计算机网络基础和密码学的相关知识
  • 计划学习时间:25小时
  • 实际学习时间:20小时

参考资料