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

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

教材学习内容总结

1.网络编程的概念:

网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据。程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴。在发送和接收数据时,大部分的程序设计语言都设计了专门的API实现这些功能,程序员只需要调用即可。网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含的设备有:计算机、路由器、交换机等等。网络最主要的优势在于共享:共享设备和数据,现在共享设备最常见的是打印机,一个公司一般一个打印机即可,共享数据就是将大量的数据存储在一组机器中,其它的计算机通过网络访问这些数据,例如网站、银行服务器等等。

2.网络通讯方式:

在现有的网络中,网络通讯的方式主要有两种:
1、 TCP(传输控制协议)方式
2、 UDP(用户数据报协议)方式
在网络通讯中,TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。而UDP方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。这两种传输方式都是实际的网络编程中进行使用,重要的数据一般使用TCP方式进行数据传输,而大量的非核心数据则都通过UDP方式进行传递,在一些程序中甚至结合使用这两种方式进行数据的传递。由于TCP需要建立专用的虚拟连接以及确认传输是否正确,所以使用TCP方式的速度稍微慢一些,而且传输时产生的数据量要比UDP稍微大一些。

3.客户端网络编程技术:

客户端(Client)是指网络编程中首先发起连接的程序,客户端一般实现程序界面和基本逻辑实现,在进行实际的客户端编程时,无论客户端复杂还是简单,以及客户端实现的方式,客户端的编程主要由三个步骤实现:
1、 建立网络连接
客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
2、 交换数据
连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。
根据逻辑需要,可以多次交换数据,但是还是必须遵循请求响应模型。
3、 关闭网络连接
在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。

4.服务器网络编程技术:

服务器端(Server)是指在网络编程中被动等待连接的程序,服务器端一般实现程序的核心逻辑以及数据存储等核心功能。服务器端的编程步骤和客户端不同,是由四个步骤实现,依次是:

1、 监听端口
服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。
这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。
2、 获得连接
当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。
一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
3、 交换数据
服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。
其实,服务器端获得的连接和客户端连接是一样的,只是数据交换的步骤不同。
当然,服务器端的数据交换也是可以多次进行的。
在数据交换完成以后,关闭和客户端的连接。
4、 关闭连接
当服务器程序关闭时,需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存可以释放出来,实现了连接的关闭。

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

  • 问题1: TCP协议和UDP协议的区别?
  • 解决方案:这个问题不涉及Java的知识,是纯粹的计算机网络的问题。TCP协议是传输控制协议,UDP协议是用户数据报协议,两者都是传输层的协议,主要区别在于前者是可靠的,面向连接的协议,后者是不可靠的,无连接的协议。其它的区别还有,TCP协议传输速度慢,UDP常用于一次性传输比较少量数据的网络应用。
  • 问题2:Java Socket运行常出现异常
  • 解决方案:上网查询后,参考了Java Socket常见异常处理和 网络编程需要注意的问题这篇博客中提到的问题,总结如下:
  1. java.net.BindException:Address already in use: JVM_Bind需要找一个没有被占用的端口
  2. java.net.ConnectException: Connection refused: connect具有ip地址的机器不能找到
  3. java.net.SocketException: Socket is closed异常的原因是本端主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。
  4. java.net.SocketException: (Connection reset或者Connect reset by peer:Socket write error)由连接断开后的读和写操作引起的
  5. java.net.SocketException: Broken pipe解决方法是首先确保程序退出前关闭所有的网络连接,其次是要检测对方的关闭连接操作,发现对方关闭连接后自己也要关闭该连接
  • 这些异常我还不能全部处理,但博客中的总结非常好

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

本周代码暂未遇到什么问题~

代码托管

代码行数统计

上周考试错题总结

上周测试了实验方面的内容,还不知道错题是哪些……提醒我今后必须更加注意实验方面的内容。

结对及互评

点评过的同学博客和代码

  • 本周结对学习情况

    • 20145226
    • 结对照片
    • 结对学习内容
      • 学习partner的代码并作出点评
      • 学习partner的博客和自己的博客做对比,找出不足
  • 上周博客互评情况

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

Java学习接近尾声,这周又换了一个新的教材,开始为Java的Android平台学习做准备,这和自己的大创项目有非常大的关系,自己也会更用心去了解这方面的知识。

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时  
第一周 50/100 1/1 24/24 安装学习Java的一系列软件
第二周 250/300 1/2 30/54 了解Java的基本语法
第三周 552/852 1/3 16/60 了解Java是面向对象的语言
第四周 717/1569 1/4 10/70 了解Java继承与接口
第五周 495/2064 1/5 6/76 了解异常处理,学会使用Collection收集对象
第六周 754/2818 1/6 6/82 了解串流和线程
第七周 679/3493 2/8 5/87 了解时间与日期,掌握Date和Calendar的一些用法
第八周 352/3845 1/9 8/95 了解并会使用通用API
第九周 1203/5048 2/11 5/100 了解通用JDBC等相关知识,完成第二次实验
第十周 1204/6252 1/12 5/105 了解网络编程等相关知识
  • 计划学习时间:6小时
  • 实际学习时间:5小时

参考资料

时间: 2024-12-09 02:04:15

20155317 2016-2017-2 《Java程序设计》第十学习总结的相关文章

201671010110 2016 2017《java程序设计》

经过一学期的时间,完成了对java的学习,对java的基本知识都有一定的了解.在刚开学的时候看到700多页的课本确实内心非常崩溃.在第一次的实验中,做了不是要求做的题目是相当难了,更加了令我挫败.后来老师采用反转课堂的教学方法,开始非常不适应,因为从来没有这样的经历,在课下提前预习对于一章几十上百页的课本很恐慌.在前几个章节中,发现java和c语言有很多的共同点,加上ppt的解释理解的比较清楚.后面的也就是java的核心部分,老师开始给我们详细讲解,也学到了很多知识.java作为一个实用的编程学

201671010127 2016—2017—2 Java学习周结

时间真是个最公平东西,只要能够好好地利用它,它可以为我们带来我们我们所想要的东西.学习Java已经有一周了,对于Java基础知识的认识也更进一步,对Java的兴趣也愈来愈浓.实现一个Java程序,主要有三个步骤:第一步是编写Java源代码,第二步是编译源代码,第三步是运行Java程序.Java源代码必须要经过编译之后才能由JVM(Java虚拟机)解析执行.Java源代码文件其实就是一个后缀名为.java的普通文本文件,可以用记事本或者在(集成开发环境)里面编写. 对于一个Java源程序,其分析如

201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。

这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的程序: 在第一次编译运行中出现如下的结果: 通过查阅资料,原来是由于编码格式不一致引起的,汉字的编码应该用国标编码GBK,解决此问题可以用以下方法: 1.在集成环境下,可以选择编码格式为UTF-8格式. 2.在dos里面编译时,可以将编码格式加上去 javac -encoding gbk Text.

201671010112 2016~2017-2《java程序设计》

周次 (阅读/编写)代码行数 发布博客里/博客评论数里 课堂/课余学习时间(小时) 最满意的编程任务 第1周          18/40            1/0              6/8         无 第2周            200/190              1/0                6/12         实验二 第3周         第4周         第5周         第6周         第7周         第8周  

2017-2018-1 20155317 实验四 外设驱动程序设计

2017-2018-1 20155317 实验四 外设驱动程序设计 一.学习笔记: 本章内容:Linux设备驱动的基本概念:Linux设备驱动程序的基本功能:linux设备驱动的运作过程:常见设备驱动接口函数:掌握LCD设备驱动程序编写步骤:掌握键盘设备驱动程序编写步骤 二.实验四外设驱动程序设计 在Ubuntu完成资源中全课中的"hqyj.嵌入式Linux应用程序开发标准教程.pdf"中的第十一章的test试验 提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息

201671010126 2016-2017-2《JAVA程序设计》学习心得

通过这两周对JAVA程序设计的学习,我对这门课程有了新的认识,每门学科都有其精髓,想要对JAVA有更深的了解,对于初学者的我来说还需付出很多努力. 两周以来尽管伴随着许多疑惑,还是完成了对前三章的学习,通过这短短半个月的时间,发现JAVA的基础知识太过繁多,知识点相对较为零碎,许多东西理解起来有一定难度.所幸JAVA程序设计与上学期所学的C语言有着许多的相似之处,所以就可以借鉴对C语言的学习经验来学习JAVA,尽管能学好C语言不意味着就能学好JAVA,不过相信以前C语言的学习对JAVA这门新课程

20145225《Java程序设计》 2015—2016年学期课程总结

20145225<Java程序设计> 2015—2016年学期课程总结 读书笔记链接汇总 1.2016年2月25日 <Java程序设计>课程准备之问卷调查 摘要: 一.你对自己的未来有什么规划?做了哪些准备? 答:未来就是找个好工作,在保证自己与父母生活条件良好的基础上,进一步的提高精神上的需求...... 2.2016年3月6日 <Java程序设计>第1周学习总结——小试牛刀 摘要: 教材学习内容总结 1.java语言概述:一门高级编程语言. 2.java语言的三种技

2017秋季面向对象程序设计(Java)教材、教学纲要、考核要求

教材简况 凯 S.霍斯特曼 (Cay S. Horstmann)(作者), 周立新(译者), Java核心技术(卷1):基础知识(原书第10版) , 2016年9月1出版 本书包括两卷,选做教材的是卷Ⅰ. 图书封面 Java领域最有影响力和价值的著作之一,由拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),与<Java编程思想>齐名,10余年全球畅销不衰,广受好评.这本书最大的优点是更新比较及时,第10版根据JavaSE8全方面更新,同时修正了第9版中的不足,系统全面地讲

20155335俞昆《java程序设计》第十周总结

学号 2016-2017-2 <Java程序设计>第十周学习总结 ## 事实上网络编程,我们可以简单的理解为两台计算机相互通讯数据而已,对于程序员而言,掌握一种编程接口并使用一种编程模型相对而言就简单多了,javaSDK提供了一些相对简单的Api来完成12这些工作,Socket就是其中之一,对于java而言,Api的存在和java.net包里面.因此只要导入这个包就可以准备网络编程了. 客户机到服务机的模型就是网络编程的基本模型,简单的说就是引进这两个进程之间的相互通信,其中一个必须提供固定的