20165233 2017-2018-2 《Java程序设计》第九周学习总结

20165233 2017-2018-2 《Java程序设计》第九周学习总结

教材学习内容总结

  • 基础

     - URL类:java.net包中的URL类是对统一资源定位符的抽象,使用URL创建对象的应用程序称作客户端程序,客户端程序的URL对象调用InputStream openStream() 方法可以返回一个输入流,该输入流指向URL对象所包含的资源,通过该输入流可以将服务器上的资源信息读入到客户端。
    - InetAddress类
  • 重点(实用):套接字

     - 网络套接字是基于TCP协议的有连接通信
    - 套接字连接就是客户端的套接字对象和服务器端的套接字对象通过输入流、输出流连接在一起
    - 服务器建立ServerSocket对象,ServerSocket对象负责等待客户端请求建立套接字连接,而客户端建立Socket对象向服务器发出套接字连接请求。
  • 了解:UDP数据报,广播数据报

  • 难点:Java远程调用(RMI)

     - RMI是一种分布式技术,使用RMI可以让一个虚拟机上的应用程序请求调用位于网络上另一处虚拟机上的对象方法。

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

  • 问题1:教材396页中,在URL的构造方法那部分,地址为什么写对了也可能发生异常?
  • 问题1解决方案:通过微课老师讲解可知,由于网络不通,地址不合理,格式不正确等多种原因可导致发生异常。
  • 问题2:从套接字连接中读取数据与从文件中读取数据有何不同?
  • 问题2解决方案:通过教材中的讲解可知,尽管二者都是都是输入流,但从文件中读取数据时,所有数据都已经在文件中了;而使用套接字连接时,可能在另一端数据发送之前,就已经开始读取了,这时,就会堵塞本线程,直到该读取方法成功读取到信息,本线程才继续执行后续的操作。

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

  • 问题1:在运行教材的代码一开始出现了如下图所示的问题?

20165233 2017-2018-2 《Java程序设计》第九周学习总结

  • 问题1解决方案:这是由于没有设置output的路径。解决过程如下:

1、在Modules设置里勾选Inherit project compile path

20165233 2017-2018-2 《Java程序设计》第九周学习总结

2、设置Project中的Project compiler output,选择“Project的路径”+”\out”

这样就可以解决这个问题。

20165233 2017-2018-2 《Java程序设计》第九周学习总结

  • 问题2:教材402页例子3中,为什么在运行服务器时,没有显示问题的答案就直接跳出“客户已断开”的提示呢?
  • 问题2解决方案:由于客户端需要在服务器运行之前就开始运行。客户端运行后,会在第一个问题出来后被阻塞,服务器运行后收到回答便能正常运行直到结束。

代码托管

20165233 2017-2018-2 《Java程序设计》第九周学习总结

上周考试错题总结

  • 错题1:进程的基本状态有:新建、运行、阻塞、死亡。

原因:教材中讲解的进程的四个状态是:新建、运行、中断、死亡。我查找网络上则是5个状态:创建、就绪、执行、阻塞、终止。所以有些混淆。

理解情况:阻塞与中断应该是类似的状态。

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

本周学习内容中13章的内容,自我感觉Java网络编程这部分知识还是比较难掌握的。在看微课时,就会引出许多问题,比如“从套接字连接中读取数据与从文件中读取数据有何不同?”,或者是明白ServerSocket对象与服务器连接的原理与示意图,但是很难写出对应的代码,有些无从下手,这些方法与异常处理又出现多种情况,细节很多,在做课下测试题时也感觉比较吃力,还得多敲代码进行相应的练习才能慢慢理解代码编写的过程。

上一篇:wayne生产环境部署(360的容器发布平台-开源)


下一篇:Android(java)学习笔记60:继承中父类 没有无参构造