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 ...
随机推荐
- codeforces 803G Periodic RMQ Problem
codeforces 803G Periodic RMQ Problem 题意 长度为\(1e5\)的数组复制\(1e4\)次,对新的数组进行区间覆盖和区间最小值查询两种操作,操作次数\(1e5\). ...
- css3 网格背景
background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.25, rgba(255, 255, 255, .2)), ...
- Linux调整系统时间
1.yum search ntp(搜索可安装的ntpn) 2.yum install ntp.x86_64 3.service ntpd start 4.ps -ef | grep ntpd 5.da ...
- mysql存储过程学习(一)
转载 什么是存储过程,存储过程的作用及优点 mysql存储过程详细教程 mysql 使用存储过程批量插数据 一.存储过程介绍: 存储过程(Stored Procedure)是一组为了完成特定功能的 ...
- GAutomator,GAutomatorview和Android SDK,Unity配置
1. 安装和配置JDK 环境配置中: JAVA_HOME:E:\Program Files\java\jdk1.8.0_131 Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre ...
- Elasticsearch + Elasticsearch-head搭建
Elasticsearch搭建: [root@hdoop3 elk]# tar -xvf elasticsearch-6.2.4.tar [root@hdoop3 elk]# cd elasticse ...
- 近十年one-to-one最短路算法研究整理
前言:针对单源最短路算法,目前最经典的思路即标号算法,以Dijkstra算法和Bellman-Ford算法为根本演进了各种优化技术和算法.针对复杂网络,传统的优化思路是在数据结构和双向搜索上做文章,或 ...
- HDU 3938 Portal (离线并查集,此题思路很强!!!,得到所谓的距离很巧妙)
Portal Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- Gradle Goodness: Excluding Tasks for Execution
In Gradle we can create dependencies between tasks. But we can also exclude certain tasks from those ...
- Node 192.168.248.12:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
[root@node00 src]# ./redis-trib.rb add-node --slave --master-id4f6424e47a2275d2b7696bfbf8588e8c4c3a5 ...