文档库 最新最全的文档下载
当前位置:文档库 › c#高级网络程序的设计课后答案

c#高级网络程序的设计课后答案

c#高级网络程序的设计课后答案
c#高级网络程序的设计课后答案

第1章

1.简述分散式、集中式和分布式通信模型的特点。

【参考解答】

分散式:各自独立的系统之间没有资源或信息的交换或共享。存在大量数据冗余且维护成本高,已被淘汰。

集中式:数据和管理功能都集中在单台计算机上,用户仅能通过终端来操作。优点是硬件成本低、无冗余和不一致性问题,缺点是可靠性和灵活性低,反应慢。

分布式:是分散式系统和集中式系统的混合体,是目前比较完善的解决方案。

2.简述C/S和B/S的优缺点。

【参考解答】

C/S是一种胖客户端应用程序编程架构,其主要工作都在客户端运行。优点是可以充分利用本地计算机的性能优势,缺点是需要在本机安装客户端软件。

B/S使用HTTP进行通信。优点是单台计算机可以访问任何Web服务器,缺点是B/S模式有沙盒限制。

3.什么是套接字?套接字有哪几种类型?

【参考解答】

套接字是支持TCP/IP网络通信的基本操作单元,是不同主机间的进程进行通信的端点。在一个套接字实例中,既保存了本机的IP地址和端口,也保存了对方的IP地址和端口,同时也保存了双方通信采用的网络协议等信息。

套接字有3种类型:流式套接字、数据报套接字和原始套接字。

第3章

1.简要回答下列问题。

(1)进程和线程有什么区别?为什么要用多线程?多线程适用于哪种场合?

(2)前台线程和后台线程有什么区别和联系?如何判断一个线程属于前台线程还是后台线程?如何将一个线程设置为后台线程?

【参考解答】

(1)进程是正在执行的程序,线程是某个进程中的一个或多个执行流。多线程可让多个任务同时执行。当执行需要较长时间才能完成的连续操作时,或者等待网络或其他I/O设备相应时,都可以使用多线程技术。

(2)一个线程要么是前台线程要么是后台线程。两者的区别是:后台线程不会影响进程的终止,而前台线程则会影响进程的终止。

2.什么是同步?为什么需要同步?C#提供了什么语句可以简单地实现代码同步?

【参考解答】

执行某语句时,在该语句完成之前不会执行其后面的代码,这种执行方式称为同步执行。当并行执行的多个线程同时访问某些资源时,必须考虑如何让多个线程保持同步。同步的目的是为了防止多个线程同时访问某些资源时出现死锁和争用情况。C#提供的lock语句可以简单地实现代码同步。

3.什么是线程池?使用线程池有什么好处?

【参考解答】

线程池是在后台执行任务的线程集合,好处有:如当某个线程无法进入线程池执行时先将其放入等待队列,自动决定用哪个处理器执行线程池中的某个线程,自动调节这些线程执行时的负载平衡问题等。另外,线程池总是在后台异步处理请求的任务,而不会占用主线程,也不会延迟主线程中后续请求的处理。

4.应用程序域和进程有什么区别和联系?

【参考解答】

一个进程既可以只包含一个应用程序域,也可以同时包含多个相互隔离的应用程序域。多进程是在操作系统级别使用的功能,资源消耗较大,细节控制复杂;应用程序域是在应用程序级别使用的功能,比直接用多进程来实现进程管理速度快、资源消耗少而且更安全,是轻量级的进程管理。

第4章

1.什么是编码?什么是解码?为什么要对字符进行编码和解码?.NET框架提供了哪些用于字符编码和解码的类?

【参考解答】

将字符序列转换为字节序列的过程称为编码;当这些字节传送到网络的接收方时,接收方再将字节序列转换为字符序列,这种过程称为解码。

在网络通信中,很多情况下通信双方传达的都是字符信息。但是,字符信息并不能直接从网络的一端传递到另一端,这些字符信息首先需要被转换成一个字节序列,然后才能在网络中传输。因此,发送方需要进行编码,相应的接收方就要执行解码。

.NET框架中一般常用Encoding类实现编码和解码。Encoding类位于System.Text命名空间下,该类主要用于对字符集进行编码和解码以及将一种编码格式转换为另一种编码格式。如果有更详细的需求可以还使用与Encoding类位于同一命名空间下的Encoder和Decoder类来进行编码和解码。

2..NET提供的从Stream类继承的数据流都有哪些?

【参考解答】

文件流(FileStream)、存流(MemoryStream)、网络流(NetworkStream)加密流(CryptoStream)。

3.简述对称加密和不对称加密的特点及实现原理。

【参考解答】

对称加密:(1)加密和解密数据使用同一个密钥;(2)私钥算法以块为单位加密数据,一次加密一个数据块,因此支持数据流。

对称加密算法的优点:强度高,加、解密速度快,适合加密大量数据。

对称加密的缺点:通信双方使用相同的密钥和IV加密和解密,发送方需要先将密钥和IV传递给接收方。如果攻击者截获了密钥和IV,也就等于知道了如何解密数据。

不对称加密:(1)使用一个需要的私钥和一个可以对任何人公开的公钥。用公钥加密的数据只能用私钥解密,反之,用私钥加密的数据只能用公钥解密;(2)私钥加密算法使用长度可变的缓冲区,因此无法使用流。

不对称加密的优点:更不容易被攻击。

不对称加密的缺点:由于无法使用流,因此不适合加密大量数据。

4.什么是数字签名?数字签名有什么用途?

【参考解答】

在应用程序中,可以利用数字签名实现数据身份验证和数据完整性验证。数据身份验证是为了验证数据是不是持有私钥的人发送的;数据完整性验证则用于验证数据在传输过程中

是否被修改过。

数字签名的用途:通过Internet下载文件后,验证下载的文件是否和原始文件完全相同。换言之,如果通信双方希望确保信息是来自对方而不是来自第三方,需要使用数字签名进行身份验证。另外,数字签名还可以防止特定一方否认曾发送过的信息。

第5章

1.仅包含async和await关键字的异步方法与用Task.Run调用的异步方法有和不同?

【参考解答】

async和await关键字是C# 5.0提供的功能,仅包含async和await关键字的异步方法不会创建新线程,它只是表示在当前线程中异步执行指定的任务。而Task.Run方法是.NET框架4.5提供的功能,它会在线程池中用单独的线程执行某个任务。

2.把普通方法和异步方法作为任务来执行时,调用方法有何不同?

【参考解答】

普通方法要用Task.Run方法去调用,或者用Task、Task类的构造函数显示创建Task实例,然后再启动。异步方法不需要用Task.Run方法去调用。

3.Action和Func委托有什么不同?

【参考解答】

Action委托封装了不带返回值的方法(有0~16个输入参数,返回类型为void),Func 委托封装了带返回值的方法(有0~16个输入参数,返回类型为TResult)。

4.有几种创建任务的方式?

【参考解答】

有4种方式。

(1)利用Task.Run方法隐式创建和执行任务;

(2)利用async和await关键字隐式创建异步任务;

(3)利用WPF控件的调度器隐式创建和执行任务;

(4)通过显式调用Task或Task的构造函数创建任务。

5.在WPF应用程序中有几种可用的定时器?

【参考解答】

有3种。

(1)System.Timers.Timer类;

(2)System.Windows.Threading.DispatcherTimer类;

(3)System.Threading.Timer类。

6.简述实现任务的取消功能的机制。

【参考解答】

System.Threading.CancellationTokenSource用于创建取消通知,称为取消源。

System.Threading.CancellationToken结构用于传播应取消操作的通知,称为取消令牌。

调用任务的代码在分配任务前,可先用CancellationTokenSource类创建一个取消源。在调用任务的代码中,可通过取消源的Cancel方法发出取消通知,该方法会将每个取消令牌副本上的IsCancellationRequested属性都设置为true。

执行任务的方法接收到取消通知后,可以终止执行。

第6章

1.TPL支持哪些并行方式?

【参考解答】

TPL支持数据并行,任务并行和并行查询(PLINQ)。

2.并行编程中的分区有哪些形式?

【参考解答】

按围分区;按区块分区;动态分区;自定义分区。

3.简述Parallel帮助器类有哪些?功能分别是什么?

【参考解答】

帮助器类包括ParallelOptions、ParallelLoopState、ParallelLoopResult、CancellationToken 和CancellationTokenSource。

ParallelOptions类用于为Parallel类的方法提供操作选项,常用属性有:CancellationToken、MaxDegreeOfParallelism、TaskScheduler。

ParallelLoopState类用于将Parallel循环的迭代与其他迭代交互。常用属性和方法有:IsExceptional属性、IsStopped属性、Break方法、Stop方法。

ParallelLoopResult类用于提供Parallel循环的完成状态,常用属性有:IsCompleted、LowestBreakIteration。

CancellationTokenSource用于创建取消通知,称为取消源。

CancellationToken结构用于传播应取消操作的通知,称为取消令牌。

4.常用的并发集合类有几种?

【参考解答】

ConcurrentBag;ConcurrentQueue;ConcurrentStack;ConcurrentDictionary

5.使用Parallel.Invoke方法时,为了能让Action与WPF界面交互,要注意什么问题?

【参考解答】

不能使用默认的任务调度程序,而是通过设置并行选项,将任务调度程序与WPF当前同步上下文关联起来,相关代码如下。

ParallelOptions options = new ParallelOptions();

options.TaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();

第7章

1.简要介绍Web服务和WCF有哪些区别和联系。

【参考解答】

Web服务是一种以XML作为数据交换格式、部署在Web服务器上的一种应用程序服务,在Web服务中,可公开被各种客户端程序调用的方法。

WCF是微软公司推出的符合SOA思想的分布式应用程序技术框架和编程模型,是建立在消息通信这一概念基础之上的一个运行时服务系统。

Web服务只是WCF的其中一部分,除了Web服务外,WCF还包括其他各种服务。

2.简要介绍WCF服务的承载方式及其特点。

【参考解答】

WCF服务的承载方式包括:利用IIS或者WAS承载、利用Windows服务承载、自承载。其特点如下。

(1)用IIS或者WAS承载:这是最常用的一种承载方式,特点是部署简单,方便。

(2)用Windows服务承载:用【WCF服务库】模板创建的WCF服务利用Windows进程去承载。

(3)自承载:指开发人员自己编写代码实现承载WCF的工作。优点是实现灵活,需要的环境支持最小。缺点是高级宿主管理功能需要自己写代码去实现。

3.什么是服务协定,什么是数据协定,分别用哪些特性声明服务协定和数据协定?

【参考解答】

服务协定是指WCF对客户端公开哪些服务。WCF服务端通过服务协定向客户端公开以下容:操作方法、消息交换模式、采用的通信协议以及序列化格式。服务协定用ServiceContract 特性和OperationContract特性来共同声明。

数据协定描述的是消息中包含哪些数据,即规定哪些数据能够被序列化为XML传输到客户端。数据协定用DataContract特性和DataMember特性来共同声明。

第8章

1.编写基于C/S的HTTP应用程序时,有哪几种实现技术?各自的特点是什么?

【参考解答】

程序设计基础试题库

练习题一Visual FoxPro 基础 、选择题 1. 关系数据库管理系统应能实现的专门关系运算包括___c __________ A 显示、打印、制表B关联、更新、排序 C 选择、投影、连接D排序、索引、统计 2. 关系是指__b__。 A 属性的集合B元组的集合 C 实例的集合 D 字段的集合 3. 如果把学生看成实体,某个学生的姓名叫“杨波”,则“杨波”应看成是___b ______ 。 A)属性型B )属性值C )记录型D )记录值 4. 关系数据库系统中所使用的数据结构是 _______ d ___ 。 A)图B )树C )表格D )二维表 5. 对表进行水平方向的分割用的运算是 _______ b ___ 。 A)交B )选择C )投影D )连接 6. 下列数据库技术的术语与关系模型的术语的对应关系中_______ d _____ 是正确的。 A)实例与关系 B )字段与元组C )记录与属性 D )记录类型与关系模式 7. 下列关于数据库系统的叙述中,正确的是 _____ c _____ 。 A)数据库系统中数据的一致性是指数据类型一致 B)数据库系统只是比文件系统管理的数据更多 C)数据库系统减少了数据冗余 D数据库系统避免了数据冗余 8. 关系数据模型 ______ d ___ 。 A)只能表示实体间的1:1联系 B)只能表示实体间的1:n C只能表示实体间的m:n D 可以表示实体间的上述三种联系 9. 在一个关系中如果有这样一个属性存在,它的值能惟一地标识关系中的每一个元组,称

这个属性为 _____ a____ 。 A)关键字B )主属性C )数据项D )主属性值 10. 关系数据库管理系统中的元组是______ b ____ 。 A)关系中的垂直方向的列 B )关系中的水平方向的行 C属性或属性的组合 D )以上的答案均不正确 11. 从数据库的整体结构看,数据库系统采用的数据模型有_________ a __ 。 A)层次模型、网状模型和关系模型 B)层次模型、网状模型和环状模型 C)网状模型、链状模型和层次模型 D链状模型、关系模型和层次模型 12. 设有属性A B、C D以下表示中不是关系的是___________ d__。 A)R( A) B )R( A, B)C )R (A, B, C, D) D )R (A X B X C X D) 13. 若实体间联系是M N的,则将联系类型_________ a___ 。 A)也转换为关系模型 B)属性加入任一个关系模式中 C)属性加入N端实体类型相应的关系模式中 D)属性加入M端实体类型相应的关系模式中 14. 数据库系统的构成为数据库、计算机硬件系统、用户和________ a ____ 。 A 数据库管理系统 B 操作系统 C 数据集合 D 文件系统 15. 层次型、网状型和关系型数据库划分原则是________ c ___ 。 A 文件大小 B 记录长度 C 数据之间的联系 D 联系的复杂程度 16. 在数据库设计中用关系模型来表示实体和实体之间的联系,关系模型的结构是 _____ d ___ 。 A 封装结构 B 层次结构 C 网状结构 D 二维表结构 17. 在关系模型中,实现“关系中不允许出现相同的元组”的约束是通过__a ________ 。 A 主键 B 超键 C 外键 D 候选键 18. 层次模型不能直接表示 ______ b __ 关系。 A 1:1 B m:n C 1:m D 1:1 和1:m 19. DBAS旨的是_____ d____ 。

C++程序设计基础课后答案 第八章

8.1 阅读下列程序,写出执行结果 1.#include class Bclass { public: Bclass( int i, int j ) { x = i; y = j; } virtual int fun() { return 0 ; } protected: int x, y ; }; class Iclass:public Bclass { public : Iclass(int i, int j, int k):Bclass(i, j) { z = k; } int fun() { return ( x + y + z ) / 3; } private : int z ; }; void main() { Iclass obj( 2, 4, 10 ); Bclass p1 = obj; cout << p1.fun() << endl; Bclass & p2 = obj ; cout << p2.fun() << endl; cout << p2.Bclass :: fun() << endl; Bclass *p3 = &obj;

cout << p3 -> fun() << endl; } 2.#include class Base { public: virtual void getxy( int i,int j = 0 ) { x = i; y = j; } virtual void fun() = 0 ; protected: int x , y; }; class A: public Base { public: void fun() { cout<<"x = "<

相关文档
相关文档 最新文档