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

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

教材学习内容总结

网络编程

•网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据。程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴。在发送和接收数据时,大部分的程序设计语言都设计了专门的API实现这些功能,程序员只需要调用即可。所以,基础的网络编程可以和打电话一样简单。

13.1 网络概述

•网 络编程技术是当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网络编程技术获得了大量的使用。

•13.1.1 计算机网络概述

•网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。

•按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含的设备有:计算机、路由器、交换机等等

•IP地址和域名很好的解决了在网络中找到一个计算机的问题,但是为了让一个计算机可以同时运行多个网络程序,就引入了另外一个概念——端口(port)。

•13.1. 2 网络编程概述

•按照前面的介绍,网络编程就是两个或多个设备之间的数据交换,其实更具体的说,网络编程就是两个或多个程序之间的数据交换,和普通的单机程序相比,网络程序最大的不同就是需要交换数据的程序运行在不同的计算机上,这样就造成了数据交换的复杂。虽然通过IP地址和端口可以找到网络上运行的一个程序,但是如果需要进行网络编程,则还需要了解网络通讯的过程。

•由于TCP需要建立专用的虚拟连接以及确认传输是否正确,所以使用TCP方式的速度稍微慢一些,而且传输时产生的数据量要比UDP稍微大一些。

13.2 网络编程技术

•13.2.1 网络编程步骤

•按照前面的基础知识介绍,无论使用TCP方式还是UDP方式进行网络通讯,网络编程都是由客户端和服务器端组成。当然,B/S结构的编程中只需要实现服务器端即可。所以,下面介绍网络编程的步骤时,均以C/S结构为基础进行介绍。 •13.2.1.1 客户端网络编程步骤

•1、 建立网络连接

•2、 交换数据

•3、 关闭网络连接

•13.2.1.2 服务器端网络编程步骤

•1、 监听端口

•2、 获得连接

•3、 交换数据

•4、 关闭连接

•13.2.1.3 小结

•总之,无论使用任何语言,任何方式进行基础的网络编程,都必须遵循固定的步骤进行操作,在熟悉了这些步骤以后,可以根据需要进行逻辑上的处理,但是还是必须遵循固定的步骤进行。

•13.2.2 Java网络编程技术

•首先来介绍一个基础的网络类——InetAddress类。该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。

•13.2.3 TCP编程

•在使用TCP方式进行网络编程时,需要按照前面介绍的网络编程的步骤进行,下面分别介绍一下在Java语言中客户端和服务器端的实现步骤。

•这就是最基本的网络编程功能介绍。下面是一个简单的网络客户端程序示例,该程序的作用是向服务器端发送一个字符串“Hello”,并将服务器端的反馈显示到控制台,数据交换只进行一次,当数据交换进行完成以后关闭网络连接,程序结束。

网络协议

•网络协议是指对于网络中传输的数据格式的规定。对于网络编程初学者来说,没有必要深入了解TCP/IP协议簇,所以对于初学者来说去读大部头的《TCP/IP协议》也不是一件很合适的事情,因为深入了解TCP/IP协议是网络编程提高阶段,也是深入网络编程底层时才需要做的事情。

•网络协议设计完成以后,在进行网络编程时,就需要根据设计好的协议格式,在程序中进行对应的编码了,客户端程序和服务器端程序需要进行协议处理的代码分别如下。

•客户端程序需要完成的处理为

•1、 客户端发送协议格式的生成

•2、 服务器端反馈数据格式的解析

•服务器端程序需要完成的处理为:

•1、 服务器端反馈协议格式的生成

•2、 客户端发送协议格式的解析

•13.2.6小结

•关于网络编程基本的技术就介绍这么多,该部分介绍了网络编程的基础知识,以及Java语言对于网络编程的支持,网络编程的步骤等,并详细介绍了TCP方式网络编程和UDP方式网络编程在Java语言中的实现。

•13.3.1质数判别示例

•该示例实现的功能是质数判断,程序实现的功能为客户端程序接收用户输入的数字,然后将用户输入的内容发送给服务器端,服务器端判断客户端发送的数字是否是质数,并将判断的结果反馈给客户端,客户端根据服务器端的反馈显示判断结果。

•总体来说,该程序示例的结构以及功能都与上一个程序比较类似,希望通过比较这两个程序,加深对于网络编程的认识,早日步入网络编程的大门。

学习中的问题和解决方法

•1、如何复用Socket连接?

•在前面的示例中,客户端中建立了一次连接,只发送一次数据就关闭了,这就相当于拨打电话时,电话打通了只对话一次就关闭了,其实更加常用的应该是拨通一次电话以后多次对话,这就是复用客户端连接。

•2、如何使服务器端支持多个客户端同时工作?

•一个服务器端一般都需要同时为多个客户端提供通讯,如果需要同时支持多个客户端,则必须使用前面介绍的线程的概念。简单来说,也就是当服务器端接收到一个连接时,启动一个专门的线程处理和该客户端的通讯。

代码托管

上周考试错题总结

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

•理解情况:所有包含dump方法的都可以。

•递归函数

public class LMYDigui {
 public static void main(String [] args) {
 int sum = 0;
// 参考Integer类中的方法把字符串转为整数
// 补充代码以递归的方式求命令行参数的args中整数数据的和
for(int i=0;i<args.length;i++){
    int a=Integer.parseInt(args[i]);
    sum+=a;
}

// 打印
System.out.println(sum);

}


}

结对及互评

评分标准
1.正确使用Markdown语法(加1分):

•不使用Markdown不加分

•有语法错误的不加分(链接打不开,表格不对,列表不正确...)

•排版混乱的不加分

2.模板中的要素齐全(加1分)

•缺少“教材学习中的问题和解决过程”的不加分

•缺少“代码调试中的问题和解决过程”的不加分

•代码托管不能打开的不加分

•缺少“结对及互评”的不能打开的不加分

•缺少“上周考试错题总结”的不能加分

•缺少“进度条”的不能加分

•缺少“参考资料”的不能加分

3.教材学习中的问题和解决过程, 一个问题加1分

4.代码调试中的问题和解决过程, 一个问题加1分

5.本周有效代码超过300分行的(加2分)

•一周提交次数少于20次的不加分

6.其他加分:

•周五前发博客的加1分

•感想,体会不假大空的加1分

•排版精美的加一分

•进度条中记录学习时间与改进情况的加1分

•有动手写新代码的加1分

•课后选择题有验证的加1分

•代码Commit Message规范的加1分

•错题学习深入的加1分

•点评认真,能指出博客和代码中的问题的加1分

•结对学习情况真实可信的加1分

7.扣分:

•有抄袭的扣至0分

•代码作弊的扣至0分

•迟交作业的扣至0分

点评过的同学博客和代码

•本周结对学习情况

20155216

20145209

20155117

20155230

20145207

其他

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 4/200 1/2 10/20
第二周 20/500 2/4 20/38
第三周 40/1000 3/7 30/60
第四周 60/1300 4/9 40/90
第五周 80/1600 5/11 50/120
第六周 100/1600 6/11 60/120
第七周 120/1900 7/13 70/150
第八周 150/1900 8/13 80/150
第九周 180/2200 9/15 90/180
第十周 210/2200 10/15 100/180

参考资料

posted @ 2017-04-29 00:17  20155310  阅读(181)  评论(1编辑  收藏  举报