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

教材学习内容总结

1.计算机网络概述

  • (1)路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤、网线等连接将设备连接起来,从而形成了一张巨大的计算机网络。
  • (2)域名:如sohu.com等。一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。
  • (3)IP地址:为了能够方便的识别网络上的每个设备,网络中的每个设备的唯一的数字标识。现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4个0-255之间的数字组成,例如10.0.120.34。IP地址可能是固定的,例如网络上各种各样的服务器;也可以是动态的,例如使用ADSL拨号上网的宽带用户。
  • (4)DNS服务器:在网络中传输的数据,全部是以IP地址作为地址标识,所以在实际传输数据以前需要将域名转换为IP地址,实现这种功能的服务器称之为DNS服务器,也就是通俗的说法叫做域名解析。
  • (5)端口:让一个计算机可以同时运行多个网络程序,在同一个计算机中每个程序对应唯一的端口。在硬件上规定,端口的号码必须位于0-65535之间,每个端口唯一的对应一个网络程序,一个网络程序可以使用多个端口。

2.网络编程概述

  • (1)网络编程就是两个或多个程序之间的数据交换。
  • (2)“请求-响应”模型:通讯的一端发送数据,另外一端反馈数据,网络通讯都基于该模型。
    • 在网络通讯中,第一次主动发起通讯的程序被称作客户端程序,简称客户端Client
    • 而在第一次通讯中等待连接的程序被称作服务器端程序,简称服务器Server
    • 一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。
  • (3)客户端/服务器结构:也叫做Client/Server结构,简称C/S结构。
    • 优势:客户端是专门开发的,根据需要实现各种效果;
    • 劣势:通用性差,几乎不能通用等,在实际维护时,也需要维护专门的客户端和服务器端,维护的压力比较大。
  • (4)览器/服务器结构:也叫做Browser/Server结构,简称为B/S结构。
    • 优势:开发的压力比较小,不需要维护客户端;
    • 劣势:浏览器的限制比较大,表现力不强,无法进行系统级操作等。B/S结构其实也就是一种特殊的C/S结构。
  • (5)P2P程序:是一种特殊的程序,既包含客户端程序,也包含服务器端程序。使用客户端程序部分连接其它的种子(服务器端),而使用服务器端向其它的BT客户端传输数据。
  • (6)协议(Protocol):在实际进行数据交换时数据的格式。因为各个网络程序之间协议格式的不同,导致了客户端程序都是专用的结构。

3.网络通讯方式

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

  • TCP(传输控制协议)方式
  • UDP(用户数据报协议)方式

4.网络编程步骤:

  • (1)客户端网络编程步骤:

    • 1、建立网络连接:客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
    • 2、交换数据:连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。根据逻辑需要,可以多次交换数据,但是还是必须遵循请求响应模型。
    • 3、关闭网络连接:在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。
  • (2)服务器端网络编程步骤:
    • 1、监听端口:服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。
    • 2、获得连接:当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息。一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
    • 3、交换数据:服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。其实,服务器端获得的连接和客户端连接是一样的,只是数据交换的步骤不同。当然,服务器端的数据交换也是可以多次进行的。在数据交换完成以后,关闭和客户端的连接。
    • 4、关闭连接:当服务器程序关闭时,需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存可以释放出来,实现了连接的关闭。
5.Java网络编程技术
  • 和网络编程有关的基本API位于java.net包中,该包中包含了基本的网络编程实现,该包是网络编程的基础。
  • InetAddress类:该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。

6.Java语言中客户端的实现步骤:

  1. 建立连接:
Socket socket1 = new Socket("192.168.1.103",10000);
Socket socket2 = new Socket("www.sohu.com",80);
  1. 数据交换:
OutputStream os = socket1.getOutputStream(); //获得输出流
InputStream is = socket1.getInputStream(); //获得输入流
  1. 关闭网络连接:
socket1.close();

7.Java语言中服务端的实现步骤:

  1. 监听端口:
ServerSocket ss = new ServerSocket(10000);
  1. 获得连接:
Socket socket = ss.accept();
  1. 数据交换:
socket = serverSocket.accept(); //接收客户端发送内容
is = socket.getInputStream();
  1. 关闭网络连接:
ss.close();

代码托管

结对及互评

点评过的同学博客和代码

  • 本周结对学习情况

    • 20155319
    • 结对学习内容:相互查看对方代码,并对学习中遇到的疑问进行交流,合作解决编程过程中遇到的问题。
  • 上周博客互评情况

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

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 5/5 1/1 10/10
第二周 90/95 1/2 15/25
第三周 131/234 1/3 20/45
第四周 289/523 1/4 21/66
第五周 446/969 1/5 25/91
第六周 720/1689 1/6 25/116
第七周 431/2120 1/7 30/146
第八周 381/2501 2/9 35/181
第九周 909/3410 2/11 39/220
第十周 305/3715 1/12 31/251

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:35小时

  • 实际学习时间:31小时

  • 改进情况:

参考资料

评分标准

  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分

点评模板:

  • 博客中值得学习的或问题:

    • xxx
  • 代码中值得学习的或问题:
    • xxx
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

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

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

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

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

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

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

    20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...

  4. 20155334 2016-2017-2 《Java程序设计》第一周学习总结

    20155334 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一章主要讲了Java的前世今生以及Java的三大平台(Java SE.Java EE.Ja ...

  5. 20155334 2016-2017-2 《Java程序设计》第二周学习总结

    20155334 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 java中的基本类型 整数:有short.int.long三种 字节:byte 字符:cha ...

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

    20155333 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity) 驱动的四种类型 JDBC- ...

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

    20155321 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 厂商在实现JDBC驱动程序时,依方式可将驱动程序分为四种类型: JDBC-OD ...

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

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

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

随机推荐

  1. jquery-validation验证插件

    参考网站:菜鸟教程 一.导入js <script src="http://static.runoob.com/assets/jquery-validation-1.14.0/lib/j ...

  2. 原生js模仿jq fadeIn fadeOut效果 兼容IE低版本

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. Jenkins获取编译状态

    背景:在通过python的API调用Jenkins,启动Jenkins的job任务时,是需要知道Jenkins的编译状态,获取编译状态为 status=server.get_build_info(jo ...

  4. OS开发小记:iOS富文本框架DTCoreText在UITableView上的使用

    要在页面中显示自己的布局,比如文字的字体和颜色.图文并排的样式,我们要用iOS SDK的原生UI在app本地搭建,如果一个页面需要在服务器端获取数据的话,我们也要在本地搭建好固定的布局,解析服务器传回 ...

  5. [枫叶学院] Unity3d高级开发教程 工具集(一) 哈希列表——强大的自己定义数据集

    在日常开发中.数据集合是我们不可缺少的重要工具之中的一个.在C#中,.Net Framework也为我们提供了种类繁多,功能多样的数据集工具.在此,我基于List<T> 和 HashTab ...

  6. Maven经常使用命令

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/UP19910522/article/details/25985021 Maven库: http:// ...

  7. UVa 10288 - Coupons(数学期望 + 递推)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. webpack中使用babel处理es6语法

    index.js const arr = [ new Promise(()=>{}), new Promise(()=>{}) ]; arr.map(item => { consol ...

  9. C/C++——赋值理解(匿名临时对象)

    对三,王炸: 赋值的本质,是将变量传递给一个匿名临时变量,之后再传递给另一个变量.  匿名临时对象: #include <iostream> using namespace std; cl ...

  10. Linux Ubuntu安装sogou中文输入法

    在linux下开发,有时还是需要使用中文输入法的,每次安装的时候都觉得痛苦,这次做下记录,方便下次安装. 安装fcitx 安装sogou输入法之前,需要安装fcitx(Free Chinese Inp ...