20155237 2016-2017-2 《Java程序设计》第十周学习总结
教材学习内容总结
- 计算机网络,是指分布在不同地理区域的计算机用通信线路互连起来的一个具有强大功能的网络系统。网络中的主机之间通过网络协议来交流和联系。
- 根据计算机网络的区域大小,可以把网络分为局域网(LAN)和广域网(WAN)。Internet是全球范围的广域网,不同的网络之间的互联靠网络上的标准语言--TCP/IP协议。
- OSI参考模型:
国际标准化组织(iOS)研究了一种用于开放系统互联(OSI)的体系结构,将网络分为七层,从下往上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如下图所示。每一层使用下层提供的服务,并为上层提供服务。 - TCP/IP参考模式和TCP/IP协议:
IOS制定的OSI参考模式提出了网络分层的思想,但并没有投入到实际运用。与OSI模型类似的TCP/IP参考模型借鉴了OSI分层的思想,对其进行了简化,并在网络各层(除了主机-网络层外)都提供了完善的协议。TCP/IP参考模型分为4个层次:应用层、传输层、网络互联层和主机-网络层,如下图所示。每一层都有相应的协议。 - IP协议:
IP网络中的每一台主机都有一个唯一的IP地址,IP地址是一个32位的二进制灱序列。IP地址由两部分组成:IP网址和IP主机地址。 - 网络掩码用来确定IP地址中哪个部分是网址,哪个部分是主机地址。把网络掩码与IP地址进行二进制与操作,得到的就是IP网址。主机实际上有两个不同的地址:物理地址和IP地址,物理地址才是主机的真实地址。当主机A向主机B发送数据包的时候,会通过地址解析协议将主机B的IP地址解析为物理地址,然后把包发给主机B。
- 域名:
域名与IP地址一一对应。例如JavaThinker网站的域名为www.javathinker.org,对应的IP地址为221.130.187.148。DNS协议采用DNS服务器来提供把域名转换为IP地址的服务。 - 端口:
端口不是物理设备,而是用于标识进程的逻辑地址。更确切的说,是用于标识TCP连接的端点的逻辑地址。客户进程的端口一般由所在主机的操作系统动态分配。TCP和UDP都用端口来标识进程,在一个主机中,TCP端口和UDP端口的取舍范围是各自独立的,允许存在取值相同的TCP端口与UDP端口。 - 客户/服务器通信模式:
在通信的两个进程中,一个为客户进程,一个为服务器进程。客户进程向服务器进程发出请求,服务器进程响应请求,并返回给客户进程响应结果。一个服务器进程可同时为多个客户进程服务。接下来介绍的Java网络程序都是建立在TCP/IP的基础上,致力于实现应用层。传输层向应用层提供套接字Socket接口,Socket封装了下层的数据传输细节,应用层的程序通过Socket来建立与远程主机的连接,以及进行数据传输。
教材学习中的问题和解决过程
- 问题一:java密码学构架
问题一解决方案:密码服务提供者
java.security.Provider是所有的安全提供者的基类。每一个密码安全提供者都包含这个类的实例,这个实例提供了提供者的名称和实现的安全算法列表。当需要某个算法的实例的时候,JCA框架会查询提供者的数据库,如果找到合适的算法,就会创建实例。
提供者保包含了实现了声明的密码算法的一个包(一系列包)。每个jdk的安装包都会安装一个或者多个提供者并按照默认的方式来排序。额外的提供者可以动态或者静态的添加(参见Provider和Security类)。客户可以配置运行环境为自己偏好的顺序。也就是指请求提供的服务却没有指定具体的提供者的,JCA框架查找提供者的顺序。- 问题二:什么是长连接?
问题二解决方案:长连接也就是这个socket连接一直保持连接,也就是通道一直保持通畅,两个对端可以随时发送和接收数据;短连接就是我们发送一次或有限的几次,socket通道就被关闭了。首先,我们必须明白的是socket连接后,如果没有任何一方关闭,这个通道是一直保持着的,换句话说,如果任何一方都不关闭连接,这个socket连接就是长连接,因此Java中的socket本身就是支持长连接的。
代码托管
- 代码量截图:
上周考试错题总结
暂时不知道错题情况,数据库仍需要更深入的学习
结对及互评
点评过的同学博客和代码
其他(感悟、思考等,可选)
java的学习已经进入了成熟阶段了,按照娄老师的教学方式好多同学已经有了及格的分数,随着时间的积累,大家会能可观的看到自己的努力和进步。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 3000行 | 30篇 | 200小时 |
第一周 | 5/5 | 1/1 | 10/10 |
第二周 | 36/41 | 1/2 | 12/24 |
第三周 | 271/312 | 1/3 | 20/44 |
第四周 | 577/889 | 1/4 | 25/69 |
第五周 | 520/1409 | 1/5 | 25/94 |
第六周 | 884/2293 | 1/6 | 20/114 |
第七周 | 404/2697 | 2/8 | 10/124 |
第八周 | 599/3296 | 1/9 | 20/144 |
第九周 | 1610/4906 | 2/11 | 20/164 |
第十周 | 361/5267 | 1/12 | 10/174 |
参考:软件工程软件的估计为什么这么难,软件工程 估计方法(http://www.cnblogs.com/xinz/archive/2011/04/06/2007294.html)
参考资料
- [Java学习笔记(第8版)] (http://book.douban.com/subject/26371167/)
- [《Java学习笔记(第8版)》学习指导] (http://www.cnblogs.com/rocedu/p/5182332.html)