北邮分布式计算环境课堂作业答案及点评
分布式计算、云计算与大数据习题参考解答
《分布式计算、云计算与大数据》习题解答参考第1章分布式计算概述一、选择题1,CD 2,ABC 3,ABCD 4,ACD二、简答题1,参考1.1.1和节2,参考1.1.2节3,分布式计算的核心技术是进程间通信,参考1.3.2节4,单播和组播5,超时和多线程三、实验题1.进程A在进程B发送receive前发起send操作进程A进程B发出非阻塞send操作,进程A继续运行发出阻塞receive操作,进程B被阻塞进程B在进程A发起send前发出receive操作发出非阻塞send 操作,进程A 继续运行发出阻塞receive 操作,进程B被阻塞收到进程A 发送的数据,进程B 被唤醒2. 进程A 在进程B 发送receive 前发起send 操作进程A 进程B发出阻塞send 操作,进程A 被阻塞发出阻塞receive 操作,进程B 被阻塞进程B 在进程A 发起send 前发出receive 操作发出阻塞send操作,进程A被阻塞发出阻塞receive操作,进程B被阻塞收到进程A发送的数据,进程B被唤醒收到进程B返回的数据,进程A被唤醒3.1).在提供阻塞send操作和阻塞receive操作的通信系统中receiveoperationsendoperationt=1在提供非阻塞send操作和阻塞receive操作的通信系统中t=1receiveoperationsendoperation2).P1,P2,P3进程间通信的顺序状态图m1m1m2m2第2章分布式计算范型概述1.消息传递,客户-服务器,P2P,分布式对象,网络服务,移动代理等2.分布式应用最广泛最流行的范型是客户-服务器范型,参考节3.分布式应用最基本的范型是消息传递模型,参考节4.参考节,P2P应用有很多,例如Napster,迅雷,PPS网络电视等5.参考节6.参考节7.略8.消息传递模式是最基本的分布式计算范型,适用于大多数应用;客户-服务器范型是最流行的分布式计算范型,应用最为广泛;P2P范型又称为对等结构范型,使得网络以最有效率的方式运行,适用于各参与者地位平等的网络;分布式对象范型,是抽象化的远程调用,适用于复杂的分布式计算应用等。
分布计算环境作业答案
分布计算环境作业一.判断是非题1)RDF没有描述资源间关系的能力,且不能描述两个类的互不相交关系、类的基数和等价性等,因此在语义Web中需要引入本体。
F2)无状态会话Bean也可以用于实现有状态的应用。
T二.多项选择题1)你认为BT可能是基于下面__A、D__________结构实现的?A. 中心化拓扑B. 全分布式非结构化拓扑C. 全分布式结构化拓扑D. 半分布式拓扑2)在五层沙漏结构中,位于_A、B__________层的协议需要在所有提供共享资源的节点上提供。
A. 资源层B. 连接层C. 构造层D. 汇聚层E. 应用层三.问答题1、(15分)试分析为什么近年来云计算发展得如此迅猛?6分:有需求:需要节约IT成本、需要节约能源、需要具有按需服务能力等;6分:能够迎合这个需求:描述云计算技术的优势,再呼应前面的问题:总之恰好能解决这些问题。
3分:简单可行:云计算的实现相对简单,虚拟化技术等已经基本成熟。
如果前面两点是抄PPT一条条罗列,再扣2分。
2、(15分)现要为某网上商城实现一个商品价格查询服务,该服务具有以下功能:•用户可以主动查询某个商品的价格。
•用户可以订购某个商品的价格,当商品价格低于用户指定的阈值时,该服务通知订购用户当前的价格。
•多个用户可同时使用该服务。
现要使用面向对象的技术,如CORBA技术实现该服务:请描述该服务对象和客户端程序分别需要实现的接口。
接口可以采用任何一种程序设计语言描述(甚至夹杂自然语言),但要明确每个接口名、接口中的方法名、方法的返回值和参数名以及类型。
商品价格查询服务的接口:方法一:价格查询。
Float getPrice(String goodID) throws someFailure;返回值为价格。
方法二:订购价格变化情况Void subscribe(String goodID, float myInterestPrice, Ref myCallback) throws some someFilure其中,myInterestPrice为指定的价格阈值,myCallback为实现nicePrice()方法的客户端回调接口对象引用。
《分布式计算、云计算与大大数据》习题参考解答
《分布式计算、云计算与大数据》习题解答参考第1章分布式计算概述一、选择题1,CD 2,ABC 3,ABCD 4,ACD二、简答题1,参考1.1.1和1.1.2节2,参考1.1.2节3,分布式计算的核心技术是进程间通信,参考1.3.2节4,单播和组播5,超时和多线程三、实验题1.进程A在进程B发送receive前发起send操作进程A进程B发出非阻塞send操作,进程A继续运行发出阻塞receive操作,进程B被阻塞进程B在进程A发起send前发出receive操作发出非阻塞send 操作,进程A 继续运行发出阻塞receive 操作,进程B被阻塞收到进程A 发送的数据,进程B 被唤醒2. 进程A 在进程B 发送receive 前发起send 操作进程A 进程B发出阻塞send 操作,进程A 被阻塞发出阻塞receive 操作,进程B 被阻塞进程B 在进程A 发起send 前发出receive 操作发出阻塞send操作,进程A被阻塞发出阻塞receive操作,进程B被阻塞收到进程A发送的数据,进程B被唤醒收到进程B返回的数据,进程A被唤醒3.1).在提供阻塞send操作和阻塞receive操作的通信系统中receiveoperationsendoperationt=1在提供非阻塞send操作和阻塞receive操作的通信系统中t=1receiveoperationsendoperation2).P1,P2,P3进程间通信的顺序状态图m1m1m2m2第2章分布式计算型概述1.消息传递,客户-服务器,P2P,分布式对象,网络服务,移动代理等2.分布式应用最广泛最流行的型是客户-服务器型,参考2.2节3.分布式应用最基本的型是消息传递模型,参考2.1节4.参考2.3节,P2P应用有很多,例如Napster,迅雷,PPS网络电视等5.参考2.4节6.参考2.7节7.略8.消息传递模式是最基本的分布式计算型,适用于大多数应用;客户-服务器型是最流行的分布式计算型,应用最为广泛;P2P型又称为对等结构型,使得网络以最有效率的方式运行,适用于各参与者地位平等的网络;分布式对象型,是抽象化的远程调用,适用于复杂的分布式计算应用等。
分布式课后习题答案
分布式课后习题答案第⼀章分布式数据库系统概述1.1请⽤⾃⼰的语⾔定义下列分布式数据库系统中的术语:(1)局部数据:只提供本站点的局部应⽤所需要的数据。
全局数据:虽然物理上存储在个站点上,但是参与全局应⽤(2)全局/局部⽤户:局部⽤户:⼀个⽤户或⼀个应⽤如果只访问他注册的那个站点上的数据称为本地或局部⽤户或本地应⽤;全局⽤户:如果访问涉及两个或两个以上的站点中的数据,称为全局⽤户或全局应⽤。
全局/局部DBMS:1)LDBMS(Local DBMS):局部场地上的数据库管理系统,其功能是建⽴和管理局部数据库,提供场地⾃治能⼒,执⾏局部应⽤及全局查询的⼦查询。
(2)GDBMS(Global DBMS):全局数据库管理系统,主要功能是提供分布透明性,协调全局事物的执⾏,协调各局部DBMS 以完成全局应⽤,保证数据库的全局⼀致性,执⾏并发控制,实现更新同步,提供全局恢复功能等。
(3)全局外模式:全局应⽤的⽤户视图,也称全局视图。
从⼀个由各局部数据库组成的逻辑集合中抽取,即全局外模式是全局概念式的⼦集。
对全局⽤户⽽⾔,都可以认为在整个分布式数据库系统的各个站点上的所有数据库都如同在本站点上⼀样,只关⼼他们⾃⼰所使⽤的那部分数据(4)全局概念模式:描述分布式数据库中全局数据的逻辑结构和数据特性,是分布式数据库的全局概念视图。
采⽤关系模型的全局概念模式由⼀组全局关系的定义(如关系名、关系中的属性、每⼀属性的数据类型和长度等)和完整性定义(关系的主键、外键及完整性其他约束条件等)组成。
(5)分⽚模式:描述全局数据的逻辑划分。
每个全局关系可以通过选择和投影的关系操作被逻辑划分为若⼲⽚段。
分⽚模式描述数据分⽚或定义⽚段,以及全局关系与⽚段之间的映像。
这种映像是⼀对多的。
(6)分配模式:根据选定的数据分布策略,定义各⽚段的物理存放站点,即定义⽚段映像的类型,确定分布式数据库是冗余的还是⾮冗余的,以及冗余的程度。
如果⼀个⽚段分配在多个站点上,则⽚段的映像是⼀对多的,分布式数据库是冗余的,否则是不冗余的。
《分布式计算、云计算与大数据》习题参考解答
《分布式计算、云计算与大数据》习题解答参考第1章分布式计算概述一、选择题1,CD 2,ABC 3,ABCD 4,ACD二、简答题1,参考1.1.1和1.1.2节2,参考1.1.2节3,分布式计算的核心技术是进程间通信,参考1.3.2节4,单播和组播5,超时和多线程三、实验题1.进程A在进程B发送receive前发起send操作进程A进程B发出非阻塞send操作,进程A继续运行发出阻塞receive操作,进程B被阻塞进程B在进程A发起send前发出receive操作发出非阻塞send 操作,进程A 继续运行发出阻塞receive 操作,进程B被阻塞收到进程A 发送的数据,进程B 被唤醒2. 进程A 在进程B 发送receive 前发起send 操作进程A 进程B发出阻塞send 操作,进程A 被阻塞发出阻塞receive 操作,进程B 被阻塞进程B 在进程A 发起send 前发出receive 操作发出阻塞send操作,进程A被阻塞发出阻塞receive操作,进程B被阻塞收到进程A发送的数据,进程B被唤醒收到进程B返回的数据,进程A被唤醒3.1).在提供阻塞send操作和阻塞receive操作的通信系统中receiveoperationsendoperationt=1在提供非阻塞send操作和阻塞receive操作的通信系统中t=1receiveoperationsendoperation2).P1,P2,P3进程间通信的顺序状态图m1m1m2m2第2章分布式计算范型概述1.消息传递,客户-服务器,P2P,分布式对象,网络服务,移动代理等2.分布式应用最广泛最流行的范型是客户-服务器范型,参考2.2节3.分布式应用最基本的范型是消息传递模型,参考2.1节4.参考2.3节,P2P应用有很多,例如Napster,迅雷,PPS网络电视等5.参考2.4节6.参考2.7节7.略8.消息传递模式是最基本的分布式计算范型,适用于大多数应用;客户-服务器范型是最流行的分布式计算范型,应用最为广泛;P2P范型又称为对等结构范型,使得网络以最有效率的方式运行,适用于各参与者地位平等的网络;分布式对象范型,是抽象化的远程调用,适用于复杂的分布式计算应用等。
北邮邹华教授《分布式环境》课件chapter3_面向对象的分布计算环境
Beijing University of Posts and Telecommunications
分布计算环境
邹华
北京邮电大学网络技术研究院 2014.9
Beijing University of Posts and Telecommunications
Page 1
Beijing University of Posts and Telecommunications
Page 2
主要内容
分布式系统中的面向对象技术 开放分布式处理ODP
分布式对象继承机制的实现:从接口继承出发
系统首先根据接口的继承关系生成接口的继承关系 图,当客户请求某一个接口中所描述的某个服务时, 如果系统检查到与该服务所对应的对象实现不存在 时,根据接口的继承关系图,向客户返回一个能够 提供该服务,并且相应的对象实现又存在的对象的 访问信息
Beijing University of Posts and Telecommunications
Page 7
分布式系统对传统对象模型的影响
传统的对象与访问该对象的程序只能存在于同一进程中,客户进 程不可能直接访问异地服务进程中的常规对象
传统对象的关注点:封装和通过继承对实现进行重用
封装提供了一种将对象实现细节与其它对象屏蔽开的严格方法,
可以大大缓解在面向过程系统中较突出的维护问题。
继承提供了一种重用对象实现的简便方法
北邮邹华老师分布式计算分布式计算环境课程总结
企业视 企业对信息系统 角色,方针,动作,活动 企业管理者,用户
点 的需求
,资源提供者
信息视 点
计算视 点
工程视 点
技术视 点
信息、信息流 和信息处理
分布式应用的逻 辑划分
信息对象,不变方案,静态 方案,动态方案
计算对象,计算接口,接口 引用,操作,信号,流,联 编,联编对象
信息分析员,系统 分析员,信息工程 师
CORBA的OMA
对象管理体系结构OMA:描述了OMG规范所遵循的概 念化的基础结构
CORBA的IDL
仅定义接口,不定义实现 分隔“对象作什麽 (WHAT)”与“如何做 (HOW)”
Client
Side
C
C++
IDL
COBO L
IDL IDL
IDL
Ada
IDL
ORB
Small talk
定义了一系列API、通信协议、组件/服务信息模型, 使得异质应用程序能够互相操作,这些应用程序 用不同的程序语言编写,运行在不同的平台上。
目的:在分布式环境下实现应用的集成,使 基于对象的软件成员,在分布的、异构的环 境下可重用、可移植、可互操作。
方法:提供一个框架,如果符合这一框架, 就可以在主要的硬件平台和操作系统上建立 一个异质的分布式应用。
主要内容
第一章 绪论 第二章 面向对象的分布计算环境 第三章 面向构件的分布计算环境 第四章 面向Web的分布计算环境 第五章 其他分布计算环境 第六章 代理技术
面向对象的分布计算环境
分布式系统中的面向对象技术
分布对封装性、继承性和对象引用的影响
开放分布式处理ODP
ODP是为了解决什么问题而提出来的? 主要内容:视点、透明性、功能
分布式系统原理与范型课后习题答案
第一章绪论1、中间件在分布式系统中扮演什么角色?答:中间件主要是为了增强分布式系统的透明性(这正是网络操作系统所缺乏的),换言之,中间件的目标是分布式系统的单系统视图。
2、解释(分布)透明性的含义,并且给出各种类型透明性的例子。
答:分布透明性是一种现象,即一个系统的分布情况对于用户和应用来说是隐藏的。
包括:访问透明、位置透明、移植透明、重定位透明、复制透明、并发透明、故障透明和持久性透明。
3、在分布式系统中,为什么有时难以隐藏故障的发生以及故障恢复过程?答:通常,要探测一个服务器是停止服务还是该服务器的反应变慢这些情况是不可能的。
因此,一个系统可能在服务响应变慢的时候报告该服务已经停止了。
4、为什么有时候要求最大程度地实现透明性并不好?答:最大程度地实现透明性可能导致相当大的性能损失,从而导致用户无法接受。
5、什么是开放的分布式系统?开放性带来哪些好处?答:开放的分布式系统根据明确定义的规则来提供服务。
开放系统能够很容易地与其它系统协作,同时也允许应用移植到同一个系统的不同实现中。
6、请对可扩展系统的含义做出准确描述答:一个系统的可扩展包含下面几个方面:组件的数量、几何尺寸、管理域的数量与尺寸,前提是这个系统可以在上面几个方面进行增加而不会导致不可接受的性能损失。
7、可以通过应用多种技术来取得可扩展性。
请说出这些技术。
答:可扩展性可以通过分布式、复制和缓存来获得。
8、多处理器系统与多计算机系统有什么不同?答:在多处理器系统中,多个CPU访问共享的主存储器。
在多计算机系统中没有共享存储器,CPU之间只能通过消息传递来进行通信。
9、在多计算机系统中的256个CPU组成了一个16 X 16的网格方阵。
在最坏的情况下,消息的延迟时间有多长(以跳(hop)的形式给出,跳是结点之间的逻辑距离)?答:假设路由是最优的,最长的路由是从网格方阵的一个角落到对角的角落。
那么这个路由的长度是30跳。
如果一行或一列中的处理器彼此相连,则路由长度为15跳。
北邮移动网络优化阶段作业答案
一、判断题(共9道小题,共45.0分)1.(错误)用户业务模型是对用户使用业务行为的统计性表征,是用户使用业务的强度的统计量,是宏观统计特性的体现。
()A.正确B.错误知识点: 阶段作业2学生答案: []标准答案:A得分: [0] 试题分值:5.0提示:2.(错误)LTE支持I.4MHz、3MHz、5MHz、10MHz和20MHz共5种带宽。
LTE使用OFDMA 多址方式,其子载波带宽为15kHz,每12个连续的子载波组成一个资源块(RB)。
()A.正确B.错误知识点: 阶段作业2学生答案: []标准答案:A得分: [0] 试题分值:5.0提示:3.(错误)GIS俗称数字化地图,是按照地球椭球体结构,以一定的投影方式把地球分为不同的板块。
目前的数字化地图只有二维地图一种。
()A.正确B.错误知识点: 阶段作业2学生答案: []标准答案:B得分: [0] 试题分值:5.0提示:4.(错误)邻区过少会影响到终端的测量性能,容易导致终端测量不准确,引起切换不及时、误切换及重选慢等。
()A.正确B.错误知识点: 阶段作业2学生答案: []标准答案:B得分: [0] 试题分值:5.0提示:5.(错误)网络评估测试包括单站性能测试、全网性能测试和定点CQT抽样测试。
测试项目包括覆盖率、呼叫成功率、掉线率、切换成功率、数据的呼叫成功率和下行平均速率等。
()A.正确B.错误知识点: 阶段作业2学生答案: []标准答案:A得分: [0] 试题分值:5.0提示: 6.(错误)耦合器与功分器都属于功率分配器件,二者无差别。
()A.正确B.错误知识点: 阶段作业2学生答案: []标准答案:B得分: [0] 试题分值:5.0提示:7.(错误)在满足覆盖要求的前提下,应充分利用信号源功率,尽量采用有源分布系统,多采用干放等有源器件。
()A.正确B.错误知识点: 阶段作业2学生答案: []标准答案:B得分: [0] 试题分值:5.0提示:8.(错误)室内天线布放总体遵循“大功率、少天线”原则,使信号尽量均匀分布,减少信号外泄。
分布式数据库系统部分课后题答案
∑ ∑ aff ( A1, A1) =
3 l =1
accl
(qk
)
=
acc1
(q2
TITLE
根据如下关系代数表达式进行分片后的 EMP TITLE PAY 连接图:
EMP1 = σ TITLE =”Elect. Eng.”(EMP);
EMP2 =σ TITLE =”Syst. Anal.”(EMP);
EMP3 = σ TITLE =”Mech. Eng..”(EMP);
EMP4 =σ TITLE =”Programmer”(EMP);
TITLE Mech. Eng. Programmer Mech. Eng
图 5.5.2
EMP2 ENO ENAME E1 J. Doe E2 M. Smith E5 B. Casey E6 L. Chu E8 J. Jones
TITLE Elect. Eng Syst. Anal. Syst. Anal. Elect. Eng. Syst. Anal.
PAY TITLE
Elect. Eng. Syst. Anal. Mech. Eng. Programmer
SAL 40000 34000 27000 24000
Figure 5.3. Modified Example Database
5.1 p1: TITLE < “Programmer” and p2: TITLE > “Programmer”. (a) 根据{ p1, p2 }对关系 EMP 进行水平分片:EMP1 = σ TITLE < ”Programmer” (EMP);
q5 1 1 1 0 0
(a)
S1 S2 S3
q1 10 20 0
分布式计算原理及应用第五章部分答案
1.In the context of distributed computing,describe the client-server paradigm.Why is this paradigm especially appropriate for network services?Answer:In distributed computing,the client-server paradigm refers to a model for network applications where processes play one of two different roles:a server process,also called a server for short,if dedicated to managing access to some network service,while client processes,called clients for short,access the server to obtain a network service.The client-server model is designed for providing network services,which were,and still are,the most popular application of distributed computing.By network service we mean a service provided to allow network users to share resources.It is very easy for us to create a mechanism that a server can provide service concurrently for multiple clients,that is,one-to-many.ing the three-tier software architecture presented in this chapter,design and implement a client-server suite for the following protocol (it is not a well-known service):Each client sends a name to the server.The sever accumulates the names received from successive clients (by appending each,with a newline character,'/n',to a static string).Upon receiving a name,the server sends the names it has collected to the client.The client then displays all the names it receives from the server.Figure 5.38 below illustrates the sequence diagram of the protocol with 3 concurrent client sessions.a.Is this server a stateful server?If so,what kind of state information(global or session) does it maintain?b.Create one or more of the following suites for the protocol:i.Connectionless server and clientii.Connection-oriented,iterative server and clientiii.Connection-oriented,concurrent server and clientFor each suite,hand in:(A)program listings,and (B) a description of how the three-tier architecture is realized using separate software modules(Java classes).Name server Client1 Client2 Client3MattMattCathyMatt\nCathyJohnMatt\nCathy\nJohnFigure 5.35 A sequence diagram of the protocol showing three concurrent client sessions.A.This server is a stateful server.It maintains a global information which records all the messages by order the clients send to it,separated by the character '\n'.B.i.Connectionless server and clientClient:(1)Presentationpackage distributedComputing;//This is the presentation layer//connectionlessimport java.io.BufferedReader;import java.io.InputStreamReader;public class Client1 {static final String endMessage = ".";public static void main(String[] args){InputStreamReader is = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(is);try{System.out.println("Welcome to the client.\n"+"What is the name of the server host?");String hostName = br.readLine();if(hostName.length()==0)hostName = "localhost";System.out.println("What is the port number of the server host?");String portNum = br.readLine();if(portNum.length()==0)portNum = "13";ClientHelper1 helper =new ClientHelper1(hostName,portNum);boolean done = false;String message,echo;while(!done){System.out.println("Enter a line to receive an echo back" +"from the server,"+"or a single peroid to quit.");message = br.readLine();if((message.trim()).equals(endMessage)){done = true;helper.done();}else{echo = helper.getEcho(message); //send messages and receive responseSystem.out.println(echo);}}}catch(Exception ex){ex.printStackTrace();}}}(2)Applicationpackage distributedComputing;//this is the application layer//connectionlessimport java.io.IOException;import .InetAddress;import .SocketException;import .UnknownHostException;public class ClientHelper1 {private MyClientDatagramSocket mySocket;private InetAddress serverHost;private int serverPort;ClientHelper1(String hostName,String portNum)throws SocketException,UnknownHostException{this.serverHost = InetAddress.getByName(hostName);this.serverPort = Integer.parseInt(portNum);this.mySocket = new MyClientDatagramSocket();}public String getEcho(String message)throws SocketException,IOException{String echo = "";mySocket.sendMessage(serverHost, serverPort, message);echo = mySocket.receiveMessage();echo.replaceAll(" ", "");return echo;}public void done() throws SocketException{mySocket.close();}}(3)Servicepackage distributedComputing;//this is the service layer//connectionlessimport java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .InetAddress;import .SocketException;public class MyClientDatagramSocket extends DatagramSocket{static final int MAX_LEN = 64;MyClientDatagramSocket() throws SocketException{super();}MyClientDatagramSocket(int portNo) throws SocketException{super(portNo);}public void sendMessage(InetAddress receiverHost,int receiverPort,String message) throws IOException{byte[] sendBuffer = message.getBytes();DatagramPacket datagram =new DatagramPacket(sendBuffer,sendBuffer.length,receiverHost,receiverPort);this.send(datagram);}public String receiveMessage () throws IOException{byte[] receiveBuffer = new byte[MAX_LEN];DatagramPacket datagram =new DatagramPacket(receiveBuffer,receiveBuffer.length);this.receive(datagram);String message = new String(datagram.getData(),0,datagram.getLength());return message;}}Server:(1)presentation and applicationpackage distributedComputing;//connectionless//These are the application layer and the presentation layerimport java.util.Date;public class Server1 {private static StringBuffer sbf = new StringBuffer();public static void main(String[] args){int serverPort = 13;if(args.length==1)serverPort = Integer.parseInt(args[0]);try{MyServerDatagramSocket mySocket =new MyServerDatagramSocket(serverPort);System.out.println("server ready.");while(true){DatagramMessage request =mySocket.receiveMessageAndSender();System.out.println("Request received");String message = request.getMessage();//这里有问题if(sbf.length()==0)sbf.append(message);elsesbf.append("\\n"+message);System.out.println("message received:"+message);mySocket.sendMessage(request.getAddress(), request.getPort(), sbf.toString());}}catch(Exception ex){ex.printStackTrace();}}}(2)Servicepackage distributedComputing;//connecitonless//this is the service layerimport java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .InetAddress;import .SocketException;public class MyServerDatagramSocket extends DatagramSocket{static final int MAX_LEN = 64;MyServerDatagramSocket(int portNo) throws SocketException{super(portNo);}public void sendMessage(InetAddress receiverHost,int receiverPort,String message)throws IOException{byte[] sendBuffer = message.getBytes();DatagramPacket datagram =new DatagramPacket(sendBuffer,sendBuffer.length,receiverHost,receiverPort);this.send(datagram);}public String receiveMessage() throws IOException{byte[] receiveBuffer = new byte[MAX_LEN];DatagramPacket datagram =new DatagramPacket(receiveBuffer,receiveBuffer.length);this.receive(datagram);String message = new String(datagram.getData(),0,datagram.getLength());return message;}public DatagramMessage receiveMessageAndSender() throws IOException{byte[] receiveBuffer = new byte[MAX_LEN];DatagramPacket datagram =new DatagramPacket(receiveBuffer,receiveBuffer.length);this.receive(datagram);DatagramMessage returnV al = new DatagramMessage();returnV al.putV al(new String(datagram.getData(),0,datagram.getLength()), datagram.getAddress(), datagram.getPort());return returnV al;}}(3)package of the datagrampackage distributedComputing;//This class helps the program to package the datagramimport .InetAddress;public class DatagramMessage { private String message;private InetAddress senderAddress; private int senderPort;public void putV al(String message,InetAddress addr,int port){ this.message = message; this.senderAddress = addr; this.senderPort = port;}public String getMessage(){ return this.message; }public InetAddress getAddress(){ return this.senderAddress; }public int getPort(){ return this.senderPort;}}UML class diagram for Client1Client1DatagramPacketClientHelper1DatagramSocketMyClient DatagramSocketsendMessage() receiveMessage()Presentation logic Application logicService logicUML class diagram for Server1Running Result:Client ServerDatagramPacketDatagramMessageMyServerDatagramSocketsendMessage() receiveMessage() receiveMessageAnd Sender()Server1 DatagramSocketService logicPresentation+applicationlogicii.Connection-oriented,iterative server and clientClient:(1)Presentationpackage distributedComputing;//connection-oriented//this is the presentation layerimport java.io.BufferedReader;import java.io.InputStreamReader;public class Client2 {static final String endMessage = ".";public static void main(String[] args){InputStreamReader is = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(is);try{System.out.println("Welcome to the client.\n"+"What is the name of the server host?");String hostName = br.readLine();if(hostName.length()==0)hostName = "localhost";System.out.println("What is the port number of the server host?");String portNum = br.readLine();if(portNum.length()==0)portNum = "13";ClientHelper2 helper =new ClientHelper2(hostName,portNum);boolean done = false;String message,echo;while(!done){System.out.println("Enter a line to receive an echo back" +"from the server,"+"or a single peroid to quit.");message = br.readLine();if((message.trim()).equals(endMessage)){done = true;helper.done();}else{echo = helper.getEcho(message);System.out.println(echo);}}}catch(Exception ex){ex.printStackTrace();}}}(2)Applicationpackage distributedComputing;//connection-oriented//this is the application layerimport java.io.IOException;import .InetAddress;import .SocketException;import .UnknownHostException;public class ClientHelper2 {static final String endMessage = ".";private MyStreamSocket mySocket;private InetAddress serverHost;private int serverPort;ClientHelper2(String hostName,String portNum) throws SocketException,UnknownHostException,IOException{ this.serverHost = InetAddress.getByName(hostName);this.serverPort = Integer.parseInt(portNum);this.mySocket = new MyStreamSocket(hostName,this.serverPort);System.out.println("Connection request made");}public String getEcho(String message) throws SocketException,IOException{ String echo = "";mySocket.sendMessage(message);echo = mySocket.receiveMessage();return echo;}public void done() throws SocketException,IOException{mySocket.sendMessage(endMessage);mySocket.close();}}(3)Servicepackage distributedComputing;//connection-oriented//this is the service layerimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import .Socket;import .SocketException;public class MyStreamSocket extends Socket{private Socket socket;private BufferedReader input;private PrintWriter output;MyStreamSocket(String acceptorHost,int acceptorPort) throws SocketException, IOException{ socket = new Socket(acceptorHost,acceptorPort);setStreams();}MyStreamSocket(Socket socket) throws IOException{this.socket = socket;setStreams();}private void setStreams() throws IOException{InputStream inStream = socket.getInputStream();input =new BufferedReader(new InputStreamReader(inStream));OutputStream outStream = socket.getOutputStream();output =new PrintWriter(new OutputStreamWriter(outStream));}public void sendMessage(String message) throws IOException{ output.println(message);output.flush();}public String receiveMessage() throws IOException{String message = input.readLine();return message;}}Server:(1)presentation and applicationpackage distributedComputing;//connection-oriented//these are the presentation layer and the application layerimport .ServerSocket;public class Server2 {static final String endMessage = ".";private static StringBuffer sbf = new StringBuffer();public static void main(String[] args){int serverPort = 13;String message;if(args.length==1)serverPort = Integer.parseInt(args[0]);try{ServerSocket myConnectionSocket =new ServerSocket(serverPort);System.out.println("Waiting for a connection.");MyStreamSocket myDataSocket = new MyStreamSocket(myConnectionSocket.accept());System.out.println("connection accepted");boolean done = false;while(!done){message = myDataSocket.receiveMessage();System.out.println("message received:"+message);if(sbf.length()==0)sbf.append(message);elsesbf.append("\\n"+message);if((message.trim()).equals(endMessage)){System.out.println("Session over.");myDataSocket.close();done = true;}else{myDataSocket.sendMessage(sbf.toString());}}}catch(Exception ex){ex.printStackTrace();}}}(2)ServiceIt's the same as the Client's.UML class diagram for Client2Client2ClientHelper2 MyStreamSocketsendMessage()receiveMessage() SocketPresentation logicApplication logicService logicUML class diagram for Server2Server3Running Result:Client ServerServerSocketThreadMyStreamSocketreceiveMessage AndSender()SocketService logicPresentation and Application logiciii.Connection-oriented,concurrent server and clientIt's almost the same as the answer of the below question except that there is some differences with the server.(1)ServerThreadpackage distributedComputing;public class ServerThread implements Runnable{static final String endMessage = ".";static StringBuffer sbf = new StringBuffer();MyStreamSocket myDataSocket;ServerThread(MyStreamSocket myDataSocket){this.myDataSocket = myDataSocket;}public void run(){boolean done = false;String message;try{while(!done){message = myDataSocket.receiveMessage();System.out.println("message received:"+message);if(sbf.length()==0)sbf.append(message);elsesbf.append("\\n"+message);if((message.trim()).equals(endMessage)){System.out.println("Session over.");myDataSocket.close();done = true;}else{myDataSocket.sendMessage(sbf.toString());}}}catch(Exception ex){System.out.println("Exception caught in thread:"+ex);}}}(2)Serverpackage distributedComputing;import .ServerSocket;public class Server3 {private static StringBuffer sbf = new StringBuffer();public static void main(String[] args){int serverPort = 13;String message;if(args.length==1)serverPort = Integer.parseInt(args[0]);try{ServerSocket myConnectionSocket =new ServerSocket(serverPort);System.out.println("Server ready");while(true){System.out.println("Waiting for a connection");MyStreamSocket myDataSocket = new MyStreamSocket(myConnectionSocket.accept());System.out.println("connection accepted");Thread theThread =new Thread(new ServerThread(myDataSocket));theThread.start();}}catch(Exception ex){ex.printStackTrace();}}}Running Result:Client1 Client2These are two differentconnectionServerChapter 210.Draw a sequence diagram for the Daytime protocol.Answer :Server Client11.Is it possible for a Daytime client to be blocked indefinitely?Explain.Answer :It's possible for a Daytime client to be blocked indefinitely when the server starts its receiving service after the client's giving request.Ask for a timestampResponse with a timestampTime。
北邮分布式计算环境课堂作业点评
分布计算环境作业一.通过生成进程来构建并发服务器与使用多线程来构建并发服务器相比有优点也有缺点,请分析这两种方式的优缺点。
你认为基于CORBA实现的并发服务器是基于生成进程的方法,还是基于多线程的方法?为什么?并发服务器需要同时处理多个请求。
采用多进程:优点:1)处理各个请求的进程之间隔离性好。
缺点:1)创建/撤销处理各个请求的进程的代价大;2)分发器(主进程……)将请求发送到另一个进程的代价大(如果能说明为什么代价大更好);3)如果各个子进程间需要通信,代价大。
采用线程:优点:1)创建/撤销处理各个请求的线程的代价小;2)分发器(主线程……)将请求发送到另一个线程的代价小(如果能够说明为什么代价小更好);3)如果各个线程间需要通信,代价小。
缺点:1)一个线程出问题,可能会影响其他线程。
CORBA:使用多线程技术实现并发服务器。
因为如果采用多进程实现,有以下问题:1)服务器端要同时维护多个可被用户访问的CORBA对象,这些对象的数量常常会比较大,为每个服务对象起一个进程,进程数会比较大,系统开销过大;2)对于远程方法调用来说,请求的参数比较复杂,主进程将请求再发送给子进程,开销比较大;3)主进程、子进程都需要ORB的Runtime,进程启动/撤销的代价大;所以如果采用多进程的话实现并发CORBA服务器很困难。
主要问题:(一)针对性不够:a)直接罗列进程和线程的优缺点(二)理由不够充分:a)为支持高并发及高可用,所以多线程或多进程b)为支持稳定性和健壮性,所以多线程或多进程c)ORB拿到请求后要决定哪一个对象实例完成这个请求,送过去,这种工作过程类似于线程d)多线程更适合,代价低,所以e)因为ORB每拿到一个对象都会派生一个线程,所以f)事务控制,所以…….g)CORBA要对稳定性隔离性要求较高,所以基于进程方式(三)没有弄清楚题目问的重点:a)CORBA支持远程调用,客户和服务器不在同一个位置,所以多进程(四)其它:a)服务对象由不同语言编写,不能在单一进程中b)因为POA有线程策略,那么如果你不知道POA的工作机制呢?c)多个伺服对象在不同位置,所以多进程。
2019 网络与分布式计算重点习题和答案
1.2 什么是分布式计算系统?它的实质是什么?分布式计算系统是由多个相互连接的计算机组成的一个整体,这些计算机在一组系统软件(分布式操作系统或中间件)环境下,合作执行一个共同的或不同的任务,最少依赖于集中的控制过程、数据和硬件。
实质:分布计算系统=分布式硬件+分布式控制+分布式数据。
1.10多处理机与多计算机的区别是什么?同构多计算机和异构多计算机各有什么特点?区别:多计算机是将多个计算机联合起来处理问题,多处理机是在一个系统内集成多个处理器.广义上说,使用多台计算机协同工作来完成所要求的任务的计算机系统都是多处理机系统。
即多计算机系统。
狭义上说:多处理机系统的作用是利用系统内的多个CPU来并行执行用户的几个程序,以提高系统的吞吐量或用来进行冗余操作以提高系统的可靠性。
同构计算机的特点:1.每个节点是一台计算机,包含CPU和存储器。
2.节点间的通信量较少。
3.同构计算机系统的互连有两种结构:基于总线的多计算机系统和基于交换的多计算机系统。
异构计算机的特点:1.节点可能是多处理机系统、集群或并行高性能计算机。
2.节点间通过互联网络如Internet连接起来的。
3.有两种实现方法:采用分布式操作系统和中间件软件层。
1.16什么是中间件,它的功能是什么?它在分布式系统中的地位是什么?中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯,是连接两个独立应用程序或独立系统的软件功能:命名服务作业调度高级通信服务资源管理数据持久化分布式事务分布式文档系统安全服务地位:中间件的一个重要目标是对应用程序隐藏底层平台的异构型,因此中间件系统都提供一组完整度不同的服务集。
这些服务是通过中间件系统提供的接口来调用的。
一般禁止跳过中间件层直接调用底层操作系统的服务。
1.18分布式系统有哪些计算模式?(必考)1.面向对象模式(OOM),是基于客户/服务器模型,服务器是以面向对象的技术实现2.面向服务模式(SOM),也是基于客户/服务器模型,但服务器是动态的。
北邮算法与数据结构习题参考答案
北邮算法与数据结构习题参考答案作业参考答案一、(带头结点)多项式乘法 C = A×B:void PolyAdd ( list &C, list R) // R 为单个结点{p=C;while ((!p->next) && (p->next->exp>R->exp)) p=p->next; if ((p->next) || (p->next->exp<R->exp)){ R->next=p->next; p->next=R; } else{ p->next->inf += R->inf; delete R;if ( ! p->next->inf ){ R=p->next; p->next=R->next; delete R; } }}void PolyMul ( list A, list B, list &C ){C=new struct node; C->next=NULL; q=B->next; While ( q ){p=A->next;while ( p ){r = new struct node; r->exp = p->exp + q->exp;r->inf = p-> inf * q->inf; PolyAdd(C, r);p=p->next;}q=q->next;}}二、梵塔的移动次数:已知移动次数迭代公式为:M ( n ) = 2M ( n-1 ) + 1初值为:M ( 0 ) = 0则:M ( n ) = 2 ( 2M ( n-2 ) + 1 ) + 1= 4M ( n-2 ) + 3= 8M ( n-3 ) + 7= 2i M ( n-i ) + 2i– 1若n=i ,则M ( n-n ) = 0,故:M ( n ) = 2n M ( n-n ) + 2n– 1= 2n– 1所以,梵塔的移动次数为2n– 1次。
计算机网络作业及参考答案
第一次作业[判断题]在TCP/IP协议中,TCP提供可靠的面向连接服务,UDP提供简单的无连接服务,而电子邮件、文件传送、域名系统等应用层服务是分别建立在TCP、UDP之上的。
参考答案:正确[判断题]如果一台计算机可以和其他地理位置的另一台计算机进行通信,则这台计算机就是一个遵循OSI标准的开放系统。
参考答案:错误[判断题]网络协议的三要素是语义、语法与层次结构。
参考答案:错误[判断题]在线路交换、数据报与虚电路方式中,都要经过线路建立、数据传输与线路释放这3个过程。
参考答案:错误[判断题]计算机网络与分布式系统的主要区别不是表现在物理结构上,而是表现在高层软件上。
参考答案:正确[判断题]Internet。
是将无数个微型计算机通过路由器互连的大型网络。
参考答案:错误[单选题]网络拓扑对网络性能与网络( )有很大的影响。
A:造价B:主从关系C:结构D:控制关系参考答案:A[论述题]TCP/IP协议的主要特点是什么?参考答案:答:1开放的协议标准,可以免费使用,并且独立于特定的计算机硬件与操作系统。
2独立于特定的网络硬件,可以运行在局域网、广域网,更适用于互联网络中。
3统一的网络地址分配方案,所有网络设备在Internet中都有唯一的地址。
4标准化的高层协议,可以提供多种可靠的用户服务。
[论述题]ISO在制定OSI参考模型时对层次划分的主要原则是什么?参考答案:答:ISO制定OSI参考模型时对层次划分的主要原则:网络各结点都有相同的层次;不同结点的同等层具有相同的功能;同一结点内相邻层之间通过接口连接;每一层可以使用下层提供的服务,并向其上层提供服务;不同结点的同等层通过协议来实现对等层之间的通信。
[论述题]计算机网络采用层次结构的模型有什么好处?参考答案:答:计算机网络采用层次结构的模型好处:1各层之间相互独立 2灵活性好3 各层都可以采用最合适的技术来实现,各层实现技术的改变不影响其他层4易于实现和维护5有利于促进标准化。
参考答案及评析3
参考答案及评析一、选择题(1)D评析:算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。
分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。
(2)C评析:在有向图中,若任意两个顶点都连通,则称该图是强连通图,这样的有向图的形状是环状,因而至少应有n 条边。
(3)B评析:当数据表A 中每个元素距其最终位置不远,说明数据表A 按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少,故答案为选项B。
(4)A评析:链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。
故链式存储结构下的线性表便于插入和删除操作。
(5)D评析:结构化分析的常用工具有数据流图、数据字典、判定树和判定表。
而PAD 图是常见的过程设计工具中的图形设计。
(6)A评析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
它可以分为软件定义、软件开发及软件运行维护三个阶段。
(7)C评析:软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
(8)D评析:在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。
而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。
(9)B评析:分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。
若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。
北邮分布式计算环境课堂作业答案及点评
分布计算环境作业一.通过生成进程来构建并发服务器与使用多线程来构建并发服务器相比有优点也有缺点,请分析这两种方式的优缺点。
你认为基于CORBA 实现的并发服务器是基于生成进程的方法,还是基于多线程的方法?为什么?并发服务器需要同时处理多个请求。
采用多进程:优点:1)处理各个请求的进程之间隔离性好。
缺点:1)创建/撤销处理各个请求的进程的代价大;2)分发器(主进程……)将请求发送到另一个进程的代价大(如果能说明为什么代价大更好);3)如果各个子进程间需要通信,代价大。
采用线程:优点:1)创建/撤销处理各个请求的线程的代价小;2)分发器(主线程……)将请求发送到另一个线程的代价小(如果能够说明为什么代价小更好);3)如果各个线程间需要通信,代价小。
缺点:1)一个线程出问题,可能会影响其他线程。
CORBA:使用多线程技术实现并发服务器。
因为如果采用多进程实现,有以下问题:1)服务器端要同时维护多个可被用户访问的CORBA对象,这些对象的数量常常会比较大,为每个服务对象起一个进程,进程数会比较大,系统开销过大;2)对于远程方法调用来说,请求的参数比较复杂,主进程将请求再发送给子进程,开销比较大;3)主进程、子进程都需要ORB的Runtime,进程启动/撤销的代价大;所以如果采用多进程的话实现并发CORBA服务器很困难。
主要问题:(一)针对性不够:a)直接罗列进程和线程的优缺点(二)理由不够充分:a)为支持高并发及高可用,所以多线程或多进程b)为支持稳定性和健壮性,所以多线程或多进程c)ORB拿到请求后要决定哪一个对象实例完成这个请求,送过去,这种工作过程类似于线程d)多线程更适合,代价低,所以e)因为ORB每拿到一个对象都会派生一个线程,所以f)事务控制,所以……g)CORBA要对稳定性隔离性要求较高,所以基于进程方式(三)没有弄清楚题目问的重点:a)CORBA支持远程调用,客户和服务器不在同一个位置,所以多进程(四)其它:a)服务对象由不同语言编写,不能在单一进程中b)因为POA有线程策略,那么如果你不知道POA的工作机制呢?c)多个伺服对象在不同位置,所以多进程。
北京邮电大学学科讲座作业一
[A;B;C;]
得分:
[10]
试题分值:
10.0
提示:
6
谷歌的云计算应用可以提供一个免费配额,这个免费配额包括下列的哪些内容?()。
1三个应用开发实例
1500M存储空间
12000封邮件/周
1共10G出/入站带宽
知识点:
阶段作业一
学生答案:
[A;B;]
得分:
[10]
试题分值:
10.0
提示:
三、单项选择题(共4道小题,共40.0分)
7
研究性论文的方案论证方法通常包括数学模型理论验证和()两大类方法。
1实践的方法
1实验的方法
1文献证明
1计算机仿真
知识点:
阶段作业一
学生答案:
[D;]
得分:
[10]
试题分值:
10.0
提示:
8
研究性工作的第一个阶段就是():
1选题
1文献阅读
1研究与论证
1论文撰写
知识点:
阶段作业一
学生答案:
[B;]
得分:
10.0
提示:
4
下列哪种云计算应用不需要客户自己装载操作系统?()。
1IaaS
1PaaS
1SaaS
知识点:
阶段作业一
学生答案:
[B;C;]
得分:
5
科学研究中,通常可以采用什么方法来论证自己方案的合理性?()。
1数学模型
1计算机仿真
1方案实现
1别人的研究成果
知识点:
阶段作业一
[10]
试题分值:
10.0
提示:
9
对于最一般的用户,他们如果只需要使用云计算最简单的服务,而不希望自己有大量的维护工作,则他应该选择()业务模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布计算环境作业一.通过生成进程来构建并发服务器与使用多线程来构建并发服务器相比有优点也有缺点,请分析这两种方式的优缺点。
你认为基于CORBA实现的并发服务器是基于生成进程的方法,还是基于多线程的方法?为什么?并发服务器需要同时处理多个请求。
采用多进程:优点:1)处理各个请求的进程之间隔离性好。
缺点:1)创建/撤销处理各个请求的进程的代价大;2)分发器(主进程……)将请求发送到另一个进程的代价大(如果能说明为什么代价大更好);3)如果各个子进程间需要通信,代价大。
采用线程:优点:1)创建/撤销处理各个请求的线程的代价小;2)分发器(主线程……)将请求发送到另一个线程的代价小(如果能够说明为什么代价小更好);3)如果各个线程间需要通信,代价小。
缺点:1)一个线程出问题,可能会影响其他线程。
CORBA:使用多线程技术实现并发服务器。
因为如果采用多进程实现,有以下问题:1)服务器端要同时维护多个可被用户访问的CORBA对象,这些对象的数量常常会比较大,为每个服务对象起一个进程,进程数会比较大,系统开销过大;2)对于远程方法调用来说,请求的参数比较复杂,主进程将请求再发送给子进程,开销比较大;3)主进程、子进程都需要ORB的Runtime,进程启动/撤销的代价大;所以如果采用多进程的话实现并发CORBA服务器很困难。
主要问题:(一)针对性不够:a)直接罗列进程和线程的优缺点(二)理由不够充分:a)为支持高并发及高可用,所以多线程或多进程b)为支持稳定性和健壮性,所以多线程或多进程c)ORB拿到请求后要决定哪一个对象实例完成这个请求,送过去,这种工作过程类似于线程d)多线程更适合,代价低,所以e)因为ORB每拿到一个对象都会派生一个线程,所以f)事务控制,所以…….g)CORBA要对稳定性隔离性要求较高,所以基于进程方式(三)没有弄清楚题目问的重点:a)CORBA支持远程调用,客户和服务器不在同一个位置,所以多进程(四)其它:a)服务对象由不同语言编写,不能在单一进程中b)因为POA有线程策略,那么如果你不知道POA的工作机制呢?c)多个伺服对象在不同位置,所以多进程。
二.为什么传输层通信服务往往不适合用于直接构建比较复杂的分布式应用?目前的解决办法是什么?为什么这样做?首先,说明传输层通信服务提供什么样的能力?只是为端到端连接提供传输服务。
其次分析构建比较复杂分布式应用需要什么样的支持?不仅仅是端到端的通信支持,而且要求具有一些分布透明性,如位置的透明性、访问透明性等,显然,仅仅基于传输层服务,位置、访问透明性等的支持,例如远程对象访问方法的打包拆包等等,都需要应用程序开发者来负责实现,大大加大了应用开发的难度。
目前使用分布计算环境(中间件)来支持相应的分布式应用系统的实现。
例如使用CORBA、EJB支持面向对象的分布式系统的实现。
使用消息中间件来支持面向消息的分布式系统的实现。
使用Web Service来实现Web环境下分布式系统的实现。
等等(举2个或以上例子就好)。
这些分布式计算环境解决了相应的分布式应用系统要解决的共性问题,如支持访问、位置透明性,使得分布式应用系统可以更加方便地构建。
主要问题:(一)为什么不行,说得太简单,就说了没有支持分布透明性,需要开发人员注意通信的实现,从而导致解决方案的可扩展性很差。
(二)解决方法单一:ODP、RPC、MPI、HTTP、消息队列…….。
(三)使用C/S模式。
(四)流、各种应用级协议都提到了,就是不提分布计算环境。
(五)局限在通信一点上。
三.DNS中的高层命名服务器(那些在DNS命名空间中接近根的)一般不支持递归式名字解析,为什么?你认为CORBA的命名服务使用的是哪种解析方法,为什么?(1)采用递归方式,对性能影响较大:维持缓存、服务器要等待等等。
而基于DNS的工作机制,高层服务器要处理的请求量大,对性能要求高。
所以……(2)CORBA命名服务通过resolve方法,根据指定的对象名,返回给相应的对象引用,对于客户来说,这是一次请求得到最终结果的方式,因此可以认为是递归方式。
采用这种一次性获得结果的方式,使得客户端编程简单便捷。
主要问题:(一)说明了DNS的工作机制,指明根域名服务器不支持递归,但没有说明为什么。
(二)C ORBA名字空间的树形结构是基于LDAP属性的吗?(三)C ORBA的命名服务提供了Iterator迭代接口,但这不能说明是迭代解析。
(四)至于DNS中的重定位/重定向方式,在CORBA中主要用于提供重置透明性,与命名服务的工作机制无关。
四.CORBA ORB中,实现了ODP工程视点中存根对象、联编对象和协议对象的功能的组件分别是什么?CORBA应用中,对应于客户端和服务器端的基本工程对象的组件分别是什么?存根对象:服务器端骨架、客户端存根;联编对象:ORB核心和对象适配器;协议对象:ORB核心;服务器端基本工程对象:对象实现的实例(伺服对象);客户端基本工程对象:客户应用程序。
主要问题:答非所问的,把通道里的对象也当成基本工程对象的。
五.现要为某网上商城实现一个商品价格查询服务,该服务具有以下功能:用户可以主动查询某个商品的价格。
•用户可以订购某个商品的价格,当商品价格低于用户指定的阈值时,该服务通知订购用户当前的价格。
•多个用户可同时使用该服务。
现要使用面向对象的技术,如CORBA技术实现该服务:请描述该服务对象和客户端程序(用户程序)分别需要实现的接口。
接口可以采用任何一种程序设计语言描述(甚至夹杂自然语言),但要明确每个接口名、接口中的方法名、方法的返回值和参数名以及类型。
商品价格查询服务的接口:方法一:价格查询Float getPrice(String goodID)throws someFailure返回值为价格。
方法二:订购价格变化情况Void subscribe(String goodID, float myInterestPrice, Ref myCallback) throws some someFailure其中,myInterestPrice为指定的价格阈值,myCallback为实现nicePrice()方法的客户端回调接口对象引用。
客户端实现的接口:方法一:Void nicePrice(String goodID, float nicePrice) throws some someFailure其中,nicePrice是低于阈值的新价格。
(参数类型和名字等,可在合理范围内变动。
缺失红色部分,不会扣分)主要问题:写代码的。
写属性的。
接口与方法混淆的。
代码里直接写着提醒用户的。
还有把客户端和服务器端要实现的方法写在同一个接口中的。
首先弄清楚,谁实现的接口由谁来调。
六.无状态会话Bean可以用于实现有状态的应用吗?为什么?可以。
虽然无状态会话Bean在不同方法调用中不保留任何状态,但可以将用于识别会话的数据保留在客户端,客户随后的请求中携带该数据,使得接收请求的无状态会话Bean可以识别出正在为哪个会话进行处理,从而实现有状态服务。
例如,无状态会话Bean在客户某次会话的第一次请求时将一个可以标识本次会话的ID 返回给客户方,由客户保存,同时服务器将该会话相关的状态数据保留在持久化存储中。
则该会话持续过程中,客户每次请求服务器时,在方法参数中加入这个ID,这样,无状态会话Bean的该方法执行时,可以根据这个标识符从数据库中取出相应的状态数据,基于该数据进行处理,处理完后新状态可以重新存入数据库,以备后续调用使用,从而实现有状态服务。
主要问题:第一问不明确答复。
明确回答可以或者不可以。
把无状态会话Bean的定义和特点抄一遍就是原因了。
回答不可以,因为存在于对象池中供多个客户使用,所以不能保持某一客户的状态。
无状态会话Bean中也有成员变量。
无状态会话Bean 会有成员变量吗?你需要怎么谨慎地使用它,才能保证这个状态不至于影响各个方法的调用结果?想一想,为什么EJB2.0中说到,无状态会话Bean的Create方法没有参数?(计数器服务?)使用Cookie,Bean的使用环境中无Cookie。
有状态Bean New不出那么多,大家共享。
七.EJB3.0中是否还有类似EJB2.0中的生命周期方法(回调方法)的成份存在?为什么?还有。
因为EJB3.0中的Bean,例如很多有状态会话Bean,仍然需要有容器负责相应的状态初始化、状态保存、状态恢复等生命周期管理工作,如在初始化或者从外存恢复到内存时进行状态的赋值,所以必须要有相应的接口如回调函数供容器调用从而完成这些工作,这些回调函数的作用与2.0的生命周期函数是基本一样的。
只是回调函数的定义方法与2.0不一样,不再需要实现某个接口,而是可以定义任意名字的方法,通过增加标注如@PostConstruct来声明其为一标注指定类型的回调方法。
主要问题:明确回答有或者没有。
八.在语义网中,各概念(或资源)间的关系有清晰的定义,请问这些关系可以由语义网中的哪些技术来定义?为什么?(不考虑本体上面的层次)可以使用RDF Schema自身词汇、RDF Schema 定义的新的词汇、本体语言自身词汇、本体语言定义的新的词汇。
例如RDF schema 中的subClassOf、value;RDF Schema 定义的新的词汇author;本体语言OWL中的disjointWith、partOf;OWL定义的Fly。
主要问题:不针对性回答问题,把相关定义抄一遍。
九.轻量级容器的控制反转实质上是“对象生成”的控制权的倒置,这是把对象生成的控制权从对象的调用者交给了被调用对象吗?为什么?不是。
因为实际上是把对象生成的控制权从对象的调用者交给了容器,由容器来控制。
容器根据配置文件或者标注,为调用对象创建出被调用对象(被依赖对象),然后把创建好的对象注入到调用对象那里,供调用对象使用。
主要问题:没有明确说交给了容器或由容器来控制。
十.XML标记及其标记之间的嵌套可以描述XML文档的结构并传达所标记数据的含义,因此对数据的处理方式取决于标记,对吗?为什么?不对。
虽然XML标记说明了数据的含义,但是处理方式取决于具体处理这个数据的程序或者脚本,对于同样含义的数据,可以有不同的处理方式。
当然,对于标准化的程序,比如XHTML的浏览器,对于XHTML的标记的处理,就有相对一致的处理方式,这时候,才可以说取决于标记。
主要问题:此处理非彼处理。
题中泛指对数据的各种处理。
有的同学特指为解析器或者XSLT。
对于XML解析器来说,从某种角度说好像取决于标记,但实际上取决于使用解析器的程序。
对于XSLT来说,实际上取决于XSL,它决定对什么样的标记做什么样的工作。