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

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

教材学习内容总结

网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据。

  • 程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴。

  • 在发送和接收数据时,大部分的程序设计语言都设计了专门的API实现这些功能,程序员只需要调用即可。

网络概述

  • 网络编程就是两个或多个设备(程序)之间的数据交换。

  • 识别网络上的每个设备:

  • IP地址:每个计算机在联网以后都拥有一个唯一的合法IP地址,就像手机号,在计算机网络中,现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4个0-255之间的数字组成。这个IP地址可能是动态的,也可能是固定的。

  • 域名(Domain Name)。

    一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。

    DNS服务器:在网络中传输的数据,全部是以IP地址作为地址标识,所以在实际传输数据以前需要将域名转换为IP地址,实现这种功能的服务器称之为DNS服务器,也就是通俗的说法叫做域名解析。 当DNS服务器正常工作时,使用IP地址或域名都可以很方便的找到计算机网络中的某个设备,例如服务器计算机。当DNS不正常工作时,只能通过IP地址访问该设备。

    C/S结构:网络编程的结构被称作客户端/服务器结构,也叫做Client/Server结构。

    B/S结构:使用浏览器作为客户端的结构被称作浏览器/服务器结构,也叫做Browser/Server结构。B/S结构其实也就是一种特殊的C/S结构。

    P2P程序:P2P程序中既包含客户端程序,也包含服务器端程序,是一种特殊的程序。

    端口:让一个计算机可以同时运行多个网络程序。端口的号码必须位于0-65535之间,每个端口唯一的对应一个网络程序,一个网络程序可以使用多个端口。

  • 协议(Protocol):在实际进行数据交换时,为了让接收端理解该数据,需要规定该数据的格式,这个数据的格式就是协议。

    如何来编写协议格式:只要按照这种协议格式能够生成唯一的编码,按照该编码可以唯一的解析出发送数据的内容即可。也正因为各个网络程序之间协议格式的不同,所以才导致了客户端程序都是专用的结构。

  • 在现有的网络中,网络通讯的方式主要有两种:

    TCP(传输控制协议)方式:进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。

    UDP(用户数据报协议)方式:进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。

  • 网络编程的一般有两种结构:

    客户端/服务器结构,也叫做Client/Server结构,简称C/S结构。优点是表现力丰富,缺点是通用性差、维护的压力比较大。

    浏览器/服务器结构,也叫做Browser/Server结构,简称为B/S结构。优点是开发的压力比较小,不需要维护客户端。缺点是限制比较大,表现力不强,无法进行系统级操作等。

网络编程技术

  • 客户端的编程主要由三个步骤实现:

    1.建立网络连接:在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。

    2.交换数据:连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。根据逻辑需要,可以多次交换数据,但是还是必须遵循请求响应模型。

    3.关闭网络连接:在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。

  • 实现服务器端监听的代码为:
    ServerSocket ss = new ServerSocket(10000);

  • 实现UDP方式的编程,包含客户端网络编程和服务器端网络编程,主要由两个类实现,分别是:

    DatagramPacket:实现对于网络中传输的数据封装,该类的对象代表网络中交换的数据。在UDP方式的网络编程中,无论是需要发送的数据还是需要接收的数据,都必须被处理成DatagramPacket类型的对象,该对象中包含发送到的地址、发送到的端口号以及发送的内容等。和TCP方式的网络传输相比,IO编程在UDP方式的网络编程中变得不是必须的内容,结构也要比TCP方式的网络编程简单一些。

    InetAddress类:该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。

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

  • 和TCP方式的网络传输相比,IO编程有什么区别?
    IO编程在UDP方式的网络编程中变得不是必须的内容,结构也要比TCP方式的网络编程简单一些。
  • 在JDBC里要表示日期、时期所使用的是什么?
    日期是使用java.sql.Date,其日期格式是“年、月、日”,要表示时间的话则是使用java.sql.Time,其时间格式为“时、分、秒”,如果要表示“时、分、秒、微秒”的格式,你可以使用java.sql.Timestamp。
  • 每一次执行executeUpdate(),其实都会向数据库发送一次SQL,如果大量更新的SQL有一万笔,就等于通过网络进行了一万次的信息传送,网络传送信息实际上必须打开I/O、进行路由等动作。所以最好就是所有收集的SQL,最后会串为一句SQL,然后传送给数据库,既然是批次更新,顾名思义,就是仅用在更新上,所以批次更新的限制是?
    SQL不能是SELECT,否则会抛出异常。
  • 如何使服务器端支持多个客户端同时工作?
    改善服务端示例程序将由两个部分组成,MulThreadSocketServer类实现服务器端控制,实现接收客户端连接,然后开启专门的逻辑线程处理该连接,LogicThread类实现对于一个客户端连接的逻辑处理,将处理的逻辑放置在该类的run方法中。

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

  • 22.6中使用await而没有使用wait,两者区别为?

    wait()后,线程会释放掉它所占有的“锁标志”,从而使线程所在对象中的其他shnchronized数据可被别的线程使用。

代码托管

上传完毕。但是statistics出现一点问题,应该是370行代码但是只有65行。。。不知道为啥

错题总结

1.教材第十章示例代码中(p 305 IO .java )类符合SOLID原则中的OCP和DIP原则。

2.数据库实验测试答案

结对及互评

  • 学习内容

    1.使用C/S结构的程序,在开发时需要分别开发客户端和服务器端,这种结构的优势在于由于客户端是专门开发的,所以根据需要实现各种效果,专业点说就是表现力丰富,而服务器端也需要专门进行开发。但是这种结构也存在着很多不足,例如通用性差,几乎不能通用等,也就是说一种程序的客户端只能和对应的服务器端通讯,而不能和 其它服务器端通讯,在实际维护时,也需要维护专门的客户端和服务器端,维护的压力比较大。

    2.使用B/S结构的程序,在开发时只需要开发服务器端即可,这种结构的优势在于开发的压力比较小,不需要维护客户端。但是这种结构也存在着很多不足,例如浏览器的限制比较大,表现力不强,无法进行系统级操作等。

结对照片

点评过的同学博客和代码

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

这周是这本学习笔记的最后的部分,这本学习笔记经过这两个月就算正式学完一遍,但我觉得我对各个章节的掌握情况不尽相同,这学习的一遍结束后,或许才是真正的开始,古人所谓读书要读三遍,所以我还需要反过头来继续巩固和复习,相信在回头看的过程中一定还会有许多新的体会和感悟,继续努力。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 10/10 1/1 10/10
第二周 100/100 2/2 19/25
第三周 200/278 1/3 10/26
第四周 660/938 1/4 10/36
第五周 1100/2100 1/5 18/54
第六周 740/2840 1/6 23/77
第七周 352/3192 2/8 20/97
第八周 631/3805 1/9 20/117
第九周 387/4200 2/11 20/137
第十周 370/4570 1/12 15/152
  • 计划学习时间:25小时

  • 实际学习时间:15小时

  • 改进情况:觉得自己没什么改进,反而有点退步,恩还需要对于内容结合起来之后的学习与熟悉。

参考资料

无0.0

posted @ 2017-04-30 19:04  Heineken  阅读(151)  评论(2编辑  收藏  举报