20155322 2016-2017-2 《Java程序设计》第10周学习总结
20155322 2016-2017-2 《Java程序设计》第10周学习总结
教材学习内容总结
第10周学习的主要内容Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)第22章
学习目标:
- 了解计算机网络基础
- 掌握Java Socket编程
- 理解混合密码系统
- 掌握Java 密码技术相关API的使用
1. 网络编程
- 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。
- 应用层协议使用了传输层的协议。传输层常见的两种协议是TCP和UDP。
- Java提供了类来封装应用层协议。
URL(统一资源定位符)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
2. Java Socket
Java Socket 可实现客户端--服务器间的双向实时通信。java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的client和server端。

3.混合密码系统
对称密码和公钥密码结合起来的密码方式称为混合密码系统(hybrid cryptosystem)。

组成机制:
- 用对称密钥加密消息
通过伪随机数生成器生成对称密码加密中使用的会话密钥 - 用公钥密码加密会话密钥
从混合密码系统外部赋予公钥密码加密时使用的密钥
相关API
- java.net.URL
在Java中,一个URL通过一个java.net.URL对象来表示。可以通过调用URL类的构造方法来构建一个URL。
可以使用URL类的getFile()、getHost()、getPath()、getPort()、getProtocol()、getQuery()等方法来获取一个URL的各个部分。
- java.net.URLConnection
API手册显示,URLConnection类没有公共的构造方法,因此无法使用new关键字构造URLConnection实例。要获取实例需要在URL对象上调用openConnection方法。
URLConnection类的两个字段doInput(默认值是true)和doOutput(默认值是false),分别表示URLConnection是用于读还是写。可以使用setDoInput和setOutPut方法来设置doInput和doOutput的值。
- java.net.Socket
套接字是一个网络链接的端点。套接字使得应用程序能够从网络读取或者向网络写入信息。
创建一个套接字,可以使用如下构造方法Socket(String host, int port)。其中,host是远程机器名或IP地址,port是远程应用程序的端口号。
可以调用Socket类的getOutputStream方法获取一个java.io.OutputStream对象,用来发送字节流;从返回的OutputStream对象构建一个java.io.PrintWriter对象,向远程应用程序发送文本。
- java.net.ServerSocket
Socket表示一个“客户端”套接字,而ServerSocket是服务器套接字的一个实现。
要创建服务器套接字,需要使用ServerSocket类提供的构造方法之一,其具有以下签名:public ServerSocket(int port,int backlog,InetAddress bindAddr)。注意,该构造方法绑定的地址必须是java.net.InetAddress类的一个实例。
教材学习中的问题和解决过程
- 问题1.:Java安全体系结构之间的关系。老师给出的解释如下:

但是我感觉解释的很抽象。
- 解决:根据教材解释和网上一些文章的理解,我感觉应该是这么回事:
- JCE/JCA是接口,不提供具体算法,只是能够调用第三方的算法,不运行算法。
- JCE扩展JCA,在其基础上增加内容。
- JSSE主要是提供SSL加密协议。
- JAAS主要提供认证服务。
- 问题2:混合密码加密系统,是如何结合的,为什么能结合两者的优势?
- 解决:
- 组成机制:用对称密钥加密消息,通过伪随机数生成器生成对称密码加密中使用的会话密钥;用公钥密码加密会话密钥,从混合密码系统外部赋予公钥密码加密时使用的密钥。
为何能结合两者优势?因为公开密钥算法并不是完美的,其比对称算法慢并且公开密钥密码系统对选择明文攻击是脆弱的,所以需要进行两者的结合。
引文:混合密码系统代码调试中的问题和解决过程
1.问题:在编译代码中遇到的关于类的编译错误

解决方案:使用import声明一下指定的DATE类:

代码托管

上周考试错题总结
错题1:课本第十章哪一个程序体现了OCP和DIP原则?
正确答案:P305 IO.java
错误原因:没有听课
结对及互评
评分标准
- 正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
- 模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
- 本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
- 其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
- 扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评过的同学博客和代码
- 本周结对学习情况
- 20155302杨效宸
- 结对照片:无
- 结对学习内容:十七章类加载
- 上周博客互评情况
- 20155302杨效宸
- 学号20155305
- 学号20155239
- 学号20155335
- 学号20155322
- 学号20155331
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 15篇 | 400小时 | |
| 第一周 | 4/4 | 1/1 | 10/10 | |
| 第二周 | 20/24 | 1/2 | 9/19 | |
| 第三周 | 80/104 | 1/3 | 10/29 | |
| 第四周 | 343/ 447 | 1/4 | 15/44 | |
| 第五周 | 748/1195 | 1/5 | 20/64 | 能够自己敲出一些简单的程序 |
| 第六周 | 207/1402 | 1/6 | 10/74 | 继续敲出一些简单的程序 |
| 第七周 | 241/1643 | 2/8 | 11/85 | |
| 第八周 | 209/1852 | 1/9 | 11/96 | |
| 第九周 | 630/2482 | 2/11 | 20/116 | 代码量提高,学会Junit |
| 第十周 | 996/3587 | 1/12 | 25/141 | 代码量提高 |
计划学习时间:20小时
实际学习时间:25小时
改进情况:五一放假,代码量提高,学习时间增多
参考资料
20155322 2016-2017-2 《Java程序设计》第10周学习总结的更多相关文章
- 20155322 2016-2017-2 《Java程序设计》 第一周学习总结
20155322 2016-2017-2 <Java程序设计> 第一周学习总结 教材学习内容总结 本周学习内容的主要是: 一.浏览教材,根据自己的理解每章提出一个问题. 在浏览教材后,我提 ...
- 2018面向对象程序设计(Java)第10周学习指导及要求
2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4) 学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...
- 面向对象程序设计(JAVA) 第10周学习指导及要求
2019面向对象程序设计(Java)第10周学习指导及要求 (2019.11.1-2019.11.4) 学习目标 1.掌握java异常处理技术: 2.了解断言的用法: 3.了解日志的用途: 4.掌 ...
- 20155313 2016-2017-2 《Java程序设计》第九周学习总结
20155313 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
随机推荐
- (转)如何解决VC中的警告warning C4251 needs to have dll-interface
这通常是由于以数据成员方式在DLL导出类中使用了模板类造成的.比如: #include <iostream> #include <vector> using namespace ...
- vs中添加工具cmder并自动定位到当前目录
有时在vs中为了使用git命令行,需要打开cmder工具,并让cmder自切换到当前目录: 方法1: 看下效果: 方法2:在文件夹中右键(添加到右键自行百度)
- Java的Calendar类
通过Date类我们可以创建并格式化一个日期对象,但是如何才能设置和获取日期数据的特定部分呢?----Calendar类 Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,通过getIn ...
- [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码
一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...
- Asp.Net Core + Ocelot 网关搭建:负载均衡的配置
前言 上一篇中简单做了一个网关Demo.本篇中也记录一下负载均衡的配置实现. 演示 首先开三个服务,端口分别为 60001,60003,60005,然后分别启动三个服务.接下来在ApiGate ...
- 转载:monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四)
转载自:lynnLi 的monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四) monkeyrunner脚本使用Python语法编写,但它实际上是通过Jython来 ...
- spring boot实战(第二篇)事件监听
http://blog.csdn.net/liaokailin/article/details/48186331 前言 spring boot在启动过程中增加事件监听机制,为用户功能拓展提供极大的便利 ...
- mysql服务器参数
mysql服务器参数: 配置是从上往下读取,同一个参数项,后边的配置项会覆盖前边的配置项 mysql获取配置信息路径: 命令行参数 mysqld_safe --datadir=/data/sq ...
- Springboot中使用ibatis输出日志
logging.level.org.apache.ibatis=DEBUG logging.level.org.mybatis=DEBUG logging.level.java.sql.Connect ...
- centos 清除yum缓存
No package nginx available. yum makecache yum install epel-release yum install nginx