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

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

##

事实上网络编程,我们可以简单的理解为两台计算机相互通讯数据而已,对于程序员而言,掌握一种编程接口并使用一种编程模型相对而言就简单多了,javaSDK提供了一些相对简单的Api来完成12这些工作,Socket就是其中之一,对于java而言,Api的存在和java.net包里面。因此只要导入这个包就可以准备网络编程了。

客户机到服务机的模型就是网络编程的基本模型,简单的说就是引进这两个进程之间的相互通信,其中一个必须提供固定的位置,二、而另一个只需要知道这个固定的位置,并去建立两者之间的通讯,,然后完成两者的通讯就可以了,这里提供的位置通常都是成为服务器,建立联系到的通常叫客户端,给予简单的模型,就可以进入网络编程了。

在java中,有很多API可以支持这种模型,最典型的之一即socket的编程接口,对于java而言已经简化了Socket编程接口,我们需要讨论有关提供固定位置的服务方是如何建立的,java提供了SeverSocket来对其进行支持,事实上当我们创建了类的一个实例对象并提供了一个端口资源就建立一个固定位置,这个位置可以让其他计算机来访问。

代码:

这里端口的分配是唯一的,因为端口是为了唯一标识每台计算器唯一服务的,另外端口是为了唯一表示每台计算器唯一服务的,另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip作为保留端口,因此所分配的端口只能是1024个之后的,有了固定位置,现在所需要的就是一根连线,该连线由客户方首先提供要求,因此java同样提供了一个Socket对象来对其进行支持,只要客户方创建一个Socket实例对象进行支持就可以了。

代码:

Socket client = new Socket(InetAddress.getLocalHost(),5678);

客户机必须知道有关服务器的IP地址,对于这一点java提供了一些相关的类InetAddress该对象的实例必须通过static方法来提供,静态方法想得到InetAdress的方法可以通过本机的IP和通过名字或IP直接得到,除非是远程掉用。处理问题的核心在执行,否则数据的交互仍然依赖于IO操作。

这两种基本的方法就可以建立一种连线,让两台计算机相互交流,数据必须传输,事实上Input/output操作总是和网络编程息息相关,因为底层的网络总是可以继续数据,除非是远程调用,所以必须导入java.IO这个包,java.IO的操作并不复杂,该操作提供一种针对字节流和Unicode的读者和写者,然后提供一个缓冲用于数据的读写。

Java代码

BufferedReader in=new BufferedReader(new InputStreamReader(sever.getInputStream()));

PrintWriter out =new PrintWriter(server.getOutputStream);、

上面两句就是建立缓冲并把原始的字节流转变为Unicode可以操作,而原始的字节流来源于Socket的两个方法,getInputStream()和getoutputStream()方,分别用来得到输入和输出,现在有了基本的模型和基本的操作工具,我们可以做一个简单的Socket历程。

Import java.io*;

Import java.net*;

Public class MyServer{

Public static void main(String[] args)throws IoExpection{

SeverSocket server = new SeerverSocket(5678);

Socket client=server.accept();

\      BufferedReader in=

New BufferedReader(new InputStreamReader(client.getInputStream()));

PrinterWriter out=new PrintWriter(client.getOutputStream());

While(ture)

{

String str=in.readLine();

System.out.println(str);

Out.println(“has recesive…”);

Out.flush();

If(str.equals(“end”))

Break;

}

Client.close();

}

}

混合密码系统

首先,在学术界,公开密码密钥系统在科学界激起了兴奋,在公开密码学问世的当年,NSA将IBM公司设计的传统加密系统推荐为联邦数据加密标准。

现实世界证明,公开密钥算法不会代替对称密钥算法,公开密钥算法不用来加密消息,而用来加密密钥,这样做有两个理由:

(1).公开密钥算法比对称算法要慢,在一般情况下,对称算法的速度是公开密钥算法的1000倍

(2)公开密钥系统对选择明文攻击是脆弱的。如果C=E(P),当P是n个可能明文集中的一个明文时,密码分析者只需要加密所有n个可能的明文,并与C比较结果(加密密钥是公开的)。用这种方法,不可能恢复解密密钥,但他能确定p。

(3)在大多数实践中,公开密钥密码用来保护和分发会话密钥(session key),这些会话密钥会在对称算法中,对通信消息进行保密,有时称这位通信系统为混合密码系统。

尽量简单的总结一下本周学习内容

尽量不要抄书,浪费时间

看懂就过,看不懂,学习有心得的记一下

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

- 问题1:XXXXXX

- 问题1解决方案:XXXXXX

- 问题2:XXXXXX

- 问题2解决方案:XXXXXX

- ...

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

- 问题1:XXXXXX

- 问题1解决方案:XXXXXX

- 问题2:XXXXXX

- 问题2解决方案:XXXXXX

- ...

## [代码托管](码云学习项目链接)

http://git.oschina.net/tianmaxingkomg/xinjianxianmu

(statistics.sh脚本的运行结果截图)

## 上周考试错题总结

- 错题1及原因,理解情况

- 错题2及原因,理解情况

- ...

## 结对及互评

### 评分标准

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

- 不使用Markdown不加分

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

- 排版混乱的不加分

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

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

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

- [代码托管](链接)不能打开的不加分

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

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

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

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

- 上周博客互评情况

- [学号1](博客链接)

- [学号2](博客链接)

- [学号3](博客链接)

- [学号4](博客链接)

- ...

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

xxx

xxx

## 学习进度条

|            | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|

| --------   | :----------------:|:----------------:|:---------------:  |:-----:|

| 目标        | 5000行            |   30篇           | 400小时            |       |

| 第一周      | 200/200           |   2/2            | 20/20             |       |

| 第二周      | 300/500           |   2/4            | 18/38             |       |

| 第三周      | 500/1000          |   3/7            | 22/60             |       |

| 第四周      | 300/1300          |   2/9            | 30/90             |       |

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:[软件工程软件的估计为什么这么难](http://www.cnblogs.com/xinz/archive/2011/04/05/2005978.html),[软件工程 估计方法](http://www.cnblogs.com/xinz/archive/2011/04/06/2007294.html)

时间: 2024-10-29 10:46:18

20155335俞昆《java程序设计》第十周总结的相关文章

20155335俞昆《Java程序设计》第五周总结

#  20155335    <Java程序设计>第五周学习总结 ##  教材学习内容总结 ##  教材学习中的问题和解决过程 对于异常处理,程序中总有意想不到的状况所引发的的错误,Java中的错误也以对象方式呈现为Java.lang.Throwable的各种子类实例. 首先,Try和catch可用来捕捉程序中的错误,如果出现Java.util.InputMismatchExpection错误信息,表示不符合Scaneer对象预期,因为下一个字符串本身要代表数字,由Scaneer对象预期:使用

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

20155335  2006-2007-2  <Java程序设计>第三周学习总结 ##  教材学习内容总结 首先,关键是区基本类型和类类型,,产生对象必须定义类,类是一个概念,并不存在,对象是存在的,符合累的定义,Java程序由一个个类构成类的里面是变量和函数, 主函数在类中形成的代码如下 Public  class  Mytest{ Public  static  void  main(String  args[  ]){ } } 类定义使用class关键词. 对象和引用的关系 Java中,

20155335 俞昆 2016-2017-2 《Java程序设计》第九周学习总结

学号 2016-2017-2 <Java程序设计>第九周学习总结 ##JDBC入门 在正式介绍JDBC前,已知JDBC是用来执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员不需接触底层数据库驱动程序的差异性. 本章,我们需要了解JDBC与API使用和概念,我们先要认识应用程序如何与数据库进行沟通,数据库本身是一种独立运行的应用程旭,程序员撰写的应用程序是利用通信协议对数据库进行指令交换,以进行数据的增加删除以及查找. 通常应用程序会利用一组专门与数据库进行通信协议的链接库,以简化

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

20145311 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1JDBC 16.1.1JDBC简介 JDBC(Java DataBase Connectivity)是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性. 厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型: ·Type 1:JDBC-ODBC Bridge Driver·Type 2:Native API

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

20165329 <Java程序设计>第九周学习总结 教材学习内容总结 第十二章 URL类 构造方法1 try { URL url = new URL("http://www.google.com"); } catch(MalformedURLException e) { System.out.println("Bad URL:"+url); } 构造方法2:用public URL(String protocol,String host,String f

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

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

20145201 《Java程序设计》第一周学习总结

# 20145201 <Java程序设计>第一周学习总结 ## 教材学习内容总结 万事开头难,终于开始学习了Java.寒假的时候看到老师的要求确实有点慌,但是这周翻开书,从书本知识第一行学起,发现并不是自己想想中那么难,只要一步一个脚印,每周有自己的计划,并按照计划按部就班的完成,最后一定会拥有自己的小成果的. 1.1Java不只是语言 Java经过多年的版本更新后,最新的版本是Java SE8. 在java发展的过程中,它的应用领域越来越广,根据不同级别的应用开发区分了不同的应用版本,最终j

20145326蔡馨熠《Java程序设计》第一周学习总结

20145326蔡馨熠 <Java程序设计>第一周学习总结 教材学习内容总结 转眼间新的一学期终于开始了!为什么我这么期待呢?因为这学期可以上娄嘉鹏老师的java程序设计课,我不是什么电脑天才,之前c语言学得也不是特别好.可我就是对hdl和java特别感兴趣(之前在我的问卷调查报告里面提到过),并且寒假的时候在家里也预习了一部分java知识.第一周要求学习两个章节并作心得体会,虽然我早已看过前两章的知识,不过为了进一步巩固,我还是用了星期六一天的时间把第一章和第二章的知识从头到尾仔仔细细的看了

20145224-陈颢文 《Java程序设计》第一周学习总结

20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大平台,其中Java SE是基础.Java的一大特点是它可以跨平台,而JVM对Java的跨平台提供了支持,它就类似于一个虚拟机,只要在当前平台安装了相应的JVM,Java程序就有了可以在此平台上运行的基础啦.JRE是Java的执行环境,在安装了JRE的计算机上就可以运行Java的程序了,当然光是可以跑代码对于程

20145326《Java程序设计》第二周学习总结

20145326<Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对象支持语法的探讨前,对于类型.变量.运算符.流程控制等,这些各种程序语言都会有的基本语法元素,还是要有一定的基础.虽然各种程序语言都有这些基本语法元素,但千万别因此而轻忽它们,因为各种程序语言都有其诞生的宗旨与演化过程,对这些基本语法元素,也就会有其独有的特性. 1. 类型 在java的世界中,并非每个东西都