后几章的习题

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. swift-UIPickerView(选择控件)

    import UIKit //UIPickerView 的委托协议是 UIPickerViewDelegate,数据源是 UIPickerViewDataSource.我们需要在视图控制器中声明实现 ...

  2. vChart

    vue+echarts工具:    https://v-charts.js.org

  3. Tornado框架配置使用Jinja2模板引擎

    安装jinja2包 pip install jinja2 定义继承tornado.web.RequestHandler的子类BaseHandler.如果请求处理类继承这个类将会使用jinja模板引擎: ...

  4. cookies,sessionstorage,localstorage的区别?

    请描述一下 cookies,sessionStorage 和 localStorage 的区别? sessionStorage 和 localStorage 是HTML5 Web Storage AP ...

  5. Unreal4360全景视频序列渲染

    Unreal4 自带360全景渲染的插件 插件名称叫 Stereo Panoramic Movie Capture 一.打开Edit下的Plugins 二.搜索Stereo Panoramic Mov ...

  6. python1.返回一个字符串中出现次数第二多的单词 2.字符串中可能有英文单词、标点、空格 3.字符串中的英文字符全部是小写

    import re from collections import Counter def second_count_word(s): # # 利用正则按标点和空格切割,有其他标点可以添加到[]内 # ...

  7. WordCount编码实现及单元测试(第二次作业)

    项目码云地址:https://gitee.com/zhujunlin/wc.git 一.题目思路 ========== 阅读完题目要求之后我很懵,因为之前从未使用过博客园和码云工具,对编程的目标需求也 ...

  8. 浅谈Spring

    参考文章: https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/ 参考书籍: <SPRING技术内幕:深入解析SPR ...

  9. 关于ASP.NET 服务器报错 Server Error in '/' Application Runtime Error 错误及解决方法

    今天遇到一个错误 程序在服务器上运行时报错 先贴上错误代码 自己也在网上找了一些解决方法,把错误定位到服务器的配置文件也就是Web.config的问题, 于是在system.web节点下 加上cust ...

  10. jQuery之animate中的queue

    queue.dequeue clearQueue  清空 用队列完成之前动画的操作: