后几章的习题

1.异步调用开始后,什么时候才能使用异步执行的结果?

A:最好在EndInvoke()方法返回之后才能使用异步执行的结果,其它时候不能保证异步调用已完成。

2.委托的异步调用开始后(即调用BeginInvoke方法后),EndInvoke方法是否可以在同一线程中调用?

A:可以。EndInvoke()方法既可以在同一线程中调用,也可以在其它线程中调用,EndInvoke()方法会阻塞调用线程,直到异步调用执行结束。

3.异步调用时,AsyncCallback委托在什么线程中调用?

A:会在系统线程池中的某一个线程中调用AsyncCallback委托。

4.简述异步编程与多线程编程的区别与联系。

A:异步编程与多线程编程的效果类似,都是为了能够并行执行代码,达到同时处理任务的目的。异步编程时,系统自己通过线程池来分配线程,不需要人工干预,异步编程逻辑复杂不易理解,而多线程编程时,完全需要人为去控制,相对较灵活。

1..NET编程代码中组件的定义是?

A:特指实现(直接或间接)了System.ComponentModel.IComponent接口的类型,只有组件才可以在窗体设计器中进行可视化设计。

2.“容器-组件-服务”模型中容器的含义是?

A:特指实现(直接或间接)了System.ComponentModel.IContainer接口的类型,不包括ArrayList、Queue、Stack以及Array等物理容器。

3.组件有哪两种状态?怎样区分组件的当前状态?

A:组件有“设计时(Design-Time)”与“运行时(Run-Time)”两种状态,可以通过组件的DesignMode属性去判断它的当前状态,一般情况下,如果该属性为true,说明当前组件处于设计时,否则处于运行时。在窗体设计器中创建的组件的状态即为设计时,程序运行后组件的状态即为运行时。

1.一个Windows桌面应用程序主要包括哪几个部分?

A:存放数据的消息队列、为程序提供动力的消息循环以及处理数据的窗口过程。

2.GUI界面能够持续响应用户输入并能维持界面显示的根本原因是什么?

A:消息泵的存在,它能够为程序持续运转提供动力。

3.“嵌套消息循环”指的是什么?

A:在一次消息循环过程中,再次开启一个消息循环,内部循环退出之前,外部循环一直处于等待状态,但是由于两个循环均负责处理同一个消息队列中的消息,因此不会出现Windows消息不能及时被处理的情况。

1.如果两台主机之间需要通信,为何仅仅使用IP地址是不够的?

A:因为IP只能确定主机,不能定位通信程序,通信过程表面上是发生在两台主机之间,实质上是发生在两个通信程序之间。

2.举例说明有哪些应用层协议。

A:常见应用层协议如下:

(1)域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务。

(2)文件传输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。

(3)简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能。

(4)超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。

(5)简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。

(6)远程登录协议(Telnet):用于实现远程登录功能。

3.简述通信协议的本质。

A:所有的通信协议本质上都是一种数据结构,通信双方都必须按照这种数据结构规定的形式去发送或接收(解析)数据。

4.简述TCP通信与UDP通信的区别。

A:基于TCP协议的通信在进行数据交互之前需要先建立连接,类似打电话,这种通信方式保证了数据传输的正确性、可靠性;基于UDP协议的通信在进行数据传输之前不需要建立连接,类似发短信,这种通信方式不能保证数据传输的正确性。

5.“泵”结构对通信编程有哪些作用?

A:“泵”结构保证了通信双方程序能够持续正常运转,如持续监听、持续接收数据等,它能为通信程序提供持续运行的动力。

1..NET中循环结构有哪些?分别主要用于什么场合?

A:.NET中的循环结构有for循环、foreach循环、while循环以及do-while循环。for循环主要用于重复执行指定次数的操作,foreach循环主要用于遍历容器元素,while循环和do-while循环主要用于重复执行某项操作直到某一条件满足或不满足为止。代码中的“泵”结构主要由while循环来实现。

2.简述代码中“泵”结构的作用。

A:代码中的“泵”结构具备“持续性”和“动力性”两大特点,它能够维持程序的持续运行状态,为程序运转提供动力支持。

3.串行处理数据的泵与并行处理数据的泵之间有什么区别?

A:串行处理数据的泵是按顺序处理数据的,本次数据处理结束之前,下一次处理不能开始;并行处理数据的泵不是按顺序处理数据,所有的数据处理均是同时进行的,没有先后顺序,不能确保先开始处理的数据一定先结束处理,也不能保证后开始处理的数据一定后结束处理。通过异步编程很容易实现两种泵结构。

1.简述“软件设计模式”与“软件设计原则”的区别。

A:虽然两者都是前人通过大量的实践总结出来、有利于软件系统开发的一些经验,但是“设计模式”更具体,每个设计模式的存在都是为了解决某一个(或某一类)问题,而“设计原则”相比起来更抽象,它只是一个理论思想,并不能应用到某个具体的场景之中,去解决某一个具体的问题。“设计模式”与“设计原则”在软件系统设计过程中均起到了重要作用。

2.“Solid原则”包含哪五大软件设计原则?英文全称分别是?

A:

(1)单一职责原则(Singleton Responsibility Principle);

(2)开闭原则(Open Closed Principle);

(3)里氏替换原则(Liskov Substitution Principle);

(4)接口隔离原则(Interface Segregation Principle);

(5)依赖倒置原则(Dependency Inversion Principle)。

3.哪些设计原则的主要目的是为了降低代码之间的依赖程度?

A:单一职责原则和依赖倒置原则,前者建议每个类型只应该负责某一个(或某一类)任务,这样与外界发生关联关系的可能性较小;后者建议对象之间发生不可避免的依赖关系时,所有的依赖均应该建立在“抽象”之上,而不应该是“具体”,由于抽象的事物可变,对象之间不会产生绑定的不可变的依赖关系。

1.简述“面向对象”的三大特征。

A:从对象基础、对象扩展以及对象行为三个方面来讲,“面向对象(OO)”主要包含三大特征,分别是:封装、继承和多态。封装是前提,它强调代码模块化,将数据以及相关的操作组合成为一个整体,对外只公开必要的访问接口;继承是在封装的前提下,创建新类型的一种方式,它建议有族群关系的类型之间可以发生自上而下地衍生关系,处在族群底层的类型具备高层类型的所有特性;多态强调对象的多种表现行为,它是建立在继承的基础之上的,多态同时也是降低代码依赖程度的关键。

2.简述“面向抽象编程”的具体含义。

A:如果说“面向对象编程”教我们将代码世界中的所有事物均看成是一个整体——“对象”,那么“面向抽象编程”教我们将代码中所有的依赖关系都建立在“抽象”之上,一切依赖均是基于抽象的,对象跟对象之间不应该有直接具体类型的引用关系。“面向接口编程”是“面向抽象编程”的一种。

3.“依赖倒置原则(DIP)”中的“倒置”二字作何解释?

A:正常逻辑思维中,高层模块依赖底层模块是天经地义、理所当然的,而“依赖倒置原则”建议我们所有的高层模块不应该直接依赖于底层模块,而都应该依赖于一个抽象,注意这里的“倒置”二字并不是“反过来”的意思(即底层模块反过来依赖于高层模块),它只是说明正常逻辑思维中的依赖顺序发生了变化,把所有违背了正常思维的东西都称之为“倒置”。

4.在软件设计过程中,为了降低代码之间的依赖程度,我们遵循的设计原则是什么?我们设计的目标是什么?

A:有两大设计原则主要是为了降低代码依赖程度,即:单一职责原则(SRP)和依赖倒置原则(DIP)。我们在软件设计时追求的目标是:高内聚、低耦合。

《修炼之道:.NET开发要点精讲》读书笔记(三)的更多相关文章

  1. 《修炼之道:.NET开发要点精讲》读书笔记(四)

    委托的作用:1)它允许把方法作为参数,传递给其它的模块:2)它允许我们同时调用多个具有相同签名的方法:3)它允许我们异步调用任何方法. “方法签名”指方法的参数个数.参数类型以及返回值等,具有相同签名 ...

  2. 《修炼之道:.NET开发要点精讲》读书笔记(二)

    1.简述.NET中CTS.CLS以及CLR的含义与作用. A:CTS指公共类型系统,是.NET平台中各种语言必须遵守的类型规范:CLS指公共语言规范,是.NET平台中各种语言必须遵守的语言规范:CLR ...

  3. 《修炼之道:.NET开发要点精讲》读书笔记(一)

    CLR 公共语言运行库 没有CLR的存在,就不能讲该中间件转换成对应操作系统中的机器指令. 程序集是非完全编译的产物,它兼备了源代码和本地代码的特性,是一种介于源代码和本地代码之间的独立存在的一种数据 ...

  4. 关于新书《修炼之道:.NET开发要点精讲》的各种说明

    索引 新书介绍 新书封面 新书目录 试读章节 原稿试读 网购地址 规格参数 反馈方式 一些感谢 附加说明 1.新书介绍 从2013年年底到2014年9月,历时将近10个月,这本书终于看到了“出版发行” ...

  5. 《android开发艺术探索》读书笔记(二)--IPC机制

    接上篇<android开发艺术探索>读书笔记(一) No1: 在android中使用多进程只有一种方法,那就是给四大组件在AndroidMenifest中指定android:process ...

  6. 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化

    第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...

  7. delphi 精要-读书笔记(内存分配释放)

    delphi 精要-读书笔记(内存分配释放)     1.内存分为三个区域:全局变量区,栈区,堆区 全局变量区:专门存放全局变量 栈区:分配在栈上的变量可被栈管理器自动释放 堆区:堆上的变量内存必须人 ...

  8. 《android开发艺术探索》读书笔记(十五)--Android性能优化

    接上篇<android开发艺术探索>读书笔记(十四)--JNI和NDK编程 No1: 如果<include>制定了这个id属性,同时被包含的布局文件的根元素也制定了id属性,那 ...

  9. 《android开发艺术探索》读书笔记(十四)--JNI和NDK编程

    接上篇<android开发艺术探索>读书笔记(十三)--综合技术 No1: Java JNI--Java Native Interface(java本地接口),它是为了方便java调用C. ...

随机推荐

  1. visual studio 2013 几个测试工具(Nunit 3、xUnit)

    一.Nunit 3 1.在解决方案里添加一个类库——引用——右键(如下图)) 3.搜索nunit 并安装(如图) 3.注意引入命名空间并给测试类和测试方法添加特性(如图) 4.如果测试通过则为绿色(如 ...

  2. TinkPHP框架学习-02控制器基本操作

        1-----创建控制器     2-----访问视图页面 3-----注册变量到视图页面 4-----获取表单数据 一 在Home模块下创建控制器 举例: 目录tp/Application/H ...

  3. Linux 内核的 Makefile

    Linux内核的配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则: 2.配 ...

  4. JavaScript字符串操作方法大全,包含ES6方法

    一.charAt() 返回在指定位置的字符. var str="abc" console.log(str.charAt(0))//a 二.charCodeAt() 返回在指定的位置 ...

  5. codeblock 恢复默认字体设置

    默认字体为:Courier New   我使用的codeblock版本为:17 .12. 今天我想调整一下codeblock的代码驱的字体,根据设置:settings->Editor->F ...

  6. inpu控件接受pipe的处理结果

    input控件绑定的变量,要接受用户的输入值,一般只要使用   [(ngModel)]  就可以. 但是,pipe处理结果如何反映到变量里去呢?不知道吧?嘿嘿 这样就可以了 :  <input ...

  7. (ZT)算法杂货铺——分类算法之决策树(Decision tree)

    https://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html 3.1.摘要 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分 ...

  8. 不用安装Oracle客户端

    1 pl/sql developer 1.1 下载解压instantclient-basic-nt-12.1.0.2.0. 1.2 在其目录下新建Network/ADMIN/tnsnames.ora文 ...

  9. Interlij idea

    https://blog.csdn.net/qq_30180559/article/details/79146795 http://baijiahao.baidu.com/s?id=157736618 ...

  10. Python来袭,教你用Neo4j构建“复联4”人物关系图谱!

    来源商业新知网,原标题:Python来袭,教你用Neo4j构建“复联4”人物关系图谱!没有剧透! 复仇者联盟 之绝对不剧透 漫威英雄们为了不让自己剧透也是使出了浑身解数.在洛杉矶全球首映礼上记者费尽心 ...