教材内容总结

网络编程

定义:网络编程就是在两个或两个以上的设备之间传输数据。

计算机网络概述:

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

网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址。在计算机网络中,现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4个0-255之间的数字组成,例如10.0.120.34

为了方便记忆,有创造了另外一个概念——域名(Domain Name),例如sohu.com等。一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。

端口(port):在同一个计算机中每个程序对应唯一的端口,这样一个计算机上就可以通过端口区分发送给每个端口的数据了,就是一个计算机上可以并发运行多个网络程序(在硬件上规定,端口的号码必须位于0-65535之间)

网络编程概述:

网络通讯基于“请求-响应”模型。第一次主动发起通讯的程序被称作客户端而在第一次通讯中等待连接的程序被称作服务器端。

客户端被安装在用户电脑上,服务器端程序运行在公司机房中,为用户提供服务。这种网络编程的结构被称作客户端/服务器结构,也叫做Client/Server结构,简称C/S结构。表现力丰富,但通用性差。

没有必要使用专用的客户端,而使用通用的客户端,例如浏览器,这种结构被称作浏览器/服务器结构,也叫做Browser/Server结构,简称为B/S结构。开发的压力比较小。但是表现力不强,无法进行系统级操作。

网络通讯方式

TCP(传输控制协议)方式

UDP(用户数据报协议)方式

网络编程技术

网络编程步骤

客户端网络编程

服务器网络编程

客户端网络编程步骤

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

交换数据:由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。

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

服务器端网络编程步骤

监听端口:服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。

获得连接:当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。

交换数据:服务器端通过获得的连接进行数据交换。接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。在数据交换完成以后,关闭和客户端的连接。

关闭连接:当服务器程序关闭时,需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存可以释放出来,实现了连接的关闭。

Java网络编程技术

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

Socket类:以java.net.Socket类代表客户端连接,以java.net.ServerSocket类代表服务器端连接。

在客户端网络编程中,首先需要建立连接,在Java API中以java.net.Socket类的对象代表网络连接,所以建立客户端网络连接,也就是创建Socket类型的对象,该对象代表网络连接,示例如下:

Socket socket1 = new Socket(“192.168.1.103”,10000);

     Socket socket2 = new Socket(“www.sohu.com”,80)

连接一旦建立,紧接着的步骤就是按照“请求-响应”模型进行网络数据交换,在Java语言中,数据传输功能由Java IO实现,也就是说只需要从连接中获得输入流和输出流即可,然后将需要发送的数据写入连接对象的输出流中,在发送完成以后从输入流中读取数据即可。示例代码如下:

OutputStream os = socket1.getOutputStream(); //获得输出流

InputStream is = socket1.getInputStream();     //获得输入流
最后当数据交换完成以后,关闭网络连接,释放网络连接占用的系统端口和内存等资源,完成网络操作,示例代码如下: socket1.close();

教材中的问题及解决过程

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

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

代码托管

https://git.oschina.net/bestiisjava2017/nhx20155309-Java

结对及互评

20155220 吴思其http://www.cnblogs.com/20155220wsq/p/6718224.html

错题总结及分析

1.Linux中使用rm删除文件时,如果想忽略提示,直接删除文件,可以使用()选项强制删除。

A .

-r

B .

-R

C .

-c

D .

-f

答案是d

2.Linux中使用cp命令拷贝目录时要加上()选项。

A .

-r

B .

-directory

C .

-all

D .

-R

答案是ad

3.Linux中获取当前路径的绝对路径的命令是()?

A .

cd

B .

passwd

C .

tree

D .

pwd

答案是d

4.NIO2中,可以使用()中的方法取出文件系统根目录信息。

A .

Path

B .

DirectoryStream

C .

FileStore

D .

FileSystem

答案是d

5.Java NIO中与InputStream/OutputStream相对应的接口是(),用来连接数据节点。

A .

Channel

B .

Buffer

C .

Path

D .

FileStore

答案是a

6.正则表达式 zo* 匹配()

A .

z

B .

zo

C .

zoo

D .

zooooooooooooooooooooooooooo

答案是abcd

7.正则表达式 r.t 能够匹配字符串()

A .

rat

B .

rt

C .

rut

D .

root

答案是ac

8.正则表达式“r.t”匹配字符串“rat”的Java 代码表达式是()

A .

"rat".matcher("r.t")

B .

"r.t".matcher("rat")

C .

Pattern.compile("rat").matcher("r.t")

D .

Pattern.compile("r.t").matcher("rat")

答案是d

9.Suppose we have an array of String objects identified by the variable names. Which of the following for loops will not correctly process each element in the array.(假如我们有一个名为names的String对象数组,下面哪个for循环不能遍历数组中的每一个元素?)

A .

for(int i = 0; i < names.length; i++)

B .

for(String name : names)

C .

for(int i = 0; i < names.length(); i++)

D .

none of these will correctly process each element(以上都不能遍历)

E .

all of these will correctly process each element(以上都能遍历)

答案是c

10.可以通过Logger logger = new Logger(); 来产生Logger对象。

A .

True

B .

False

答案是b

学习与感悟

不知不觉课本上的内容已经接近了尾声。但是感觉自己对于java课程的了解还只是杯水车薪。在java路上还有很长一段路要走。正如同每周的小测验就算是自己感觉掌握得很好,可是结果还是不尽如人意。所以书自己准备再翻阅一遍,希望之后自己对java的理解能更深。

学习进度条

代码行数(新增/累积)	博客量(新增/累积)	学习时间(新增/累积)

目标 5000行 30篇 400小时

第一周 50/100 1/1 24/24

第二周 250/300 1/2 30/54

第三周 552/852 1/3 16/60

第四周 717/1569 1/4 10/70

第五周 495/2064 1/5 6/76

第六周 754/2818 1/6 7/82

第七周 679/3493 2/8 5/87

第八周 302/3795 3/8 6/90

预计学习时间6小时

实际学习时间3小时

2016-2017-2 20155309南皓芯《java程序设计》第十周学习总结的更多相关文章

  1. 2016-2017-2 20155309南皓芯java第五周学习总结

    教材内容总结 这一周学习的进度和前几周比较的话是差不多的,都是学习两章. 异常处理 1.理解异常架构 2.牚握try...catch...finally处理异常的方法 3.会用throw,throws ...

  2. 2016-2017-2 20155309 南皓芯java第六周学习总结

    教材内容详解 这一次主要学习的是第十章与第十一章的内容.主要讲述了串流,字符处理和线程以及并行API. 输入输出 串流:Java中的数据有来源(source)和目的地(destination),衔接两 ...

  3. 2016-2017-2 20155309南皓芯java第四周学习总结

    教材内容总结 这次我们学习的还是两章的内容,学习任务量跟上次比的话大体上来讲是差不多的. 继承与多态 继承 继承也符合DRY(Don't Repeat Yourself)原则 Role role1 = ...

  4. 201521123027 <java程序设计>第十周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 异常: 多线程: 2.书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 ...

  5. Java程序设计第十周学习总结

    Java课程知识梳理: 流的区分; 字符流与字节流的区别: 字节流是直接操作文件本身的,如果没有关闭字节流操作,文件会依然输出内容 而字符流在程序运行之后会发现文件没有任何的内容,这是因为字符流操作的 ...

  6. 20155220 2016-2017-2 《Java程序设计》第九周学习总结

    20155220 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity)即java数据库连接,是一种用 ...

  7. 20155336 2016-2017-2《JAVA程序设计》第九周学习总结

    20155336 2016-2017-2<JAVA程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连接 ...

  8. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  9. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  10. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

随机推荐

  1. libcurl代码示例

    http://note.youdao.com/noteshare?id=e60a679d1731c870ff45e403de81a2c0

  2. Kubernetes 1.5 配置dashboard

    配置kubernetes的dashboard相对简单.同样的,只需要从源码中获取到dashboard-controller.yaml及dashboard-service.yaml文件,稍加修改即可: ...

  3. 一篇很棒的 MySQL 触发器学习教程

    一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...

  4. windows设置代理.bat 脚本

    按照下列脚本复制到记事本中,保存,重命名后缀为.bat,使用时双击即可. 设置代理.bat,修改下列脚本中的代理地址和端口号 @echo off echo 开始设置IE代理上网 reg add &qu ...

  5. Centos7系统中安装Nginx1.8.0

    Nginx的安装 tar -zxvf nginx-1.8.0.tar.gz cd nginx-1.8.0 ./configure make make install /usr/local/nginx/ ...

  6. laravel 带条件的分页查询

    laravel 带条件的分页查询, 原文:http://blog.csdn.net/u011020900/article/details/52369094 bug:断点查询,点击分页,查询条件消失. ...

  7. Python练习-递归二分算法

    # 编辑者:闫龙 #递归,二分算法演示 l = [i for i in range(1,100)]#定义一个列表l,并追加1-99的所有数字 def FindNum(num,l):#定义函数FindN ...

  8. 动态SQL中变量赋值

    在动态SQL语句中进行变量的值绑定比较麻烦,这儿做个记录 declare @COUNT int,@sql nvarchar(max) set @sql = 'select @COUNT = count ...

  9. meterpreter使用

    1.基本命令 background:将meterpreter终端隐藏在后台 sessions:查看已经成功获取的会话,想继续与某会话进行交互使用sessions –i quit:直接关闭当前meter ...

  10. 20155303 2016-2017-2 《Java程序设计》第八周学习总结

    20155303 2016-2017-2 <Java程序设计>第八周学习总结 目录 学习内容总结(Linux命令) 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考 ...