[note] 在x趋近于0,cosx趋近于1-,1-cosx趋近于0+(x->0,cosx->1-)的解释

解释:为什么在 时,

首先要知道,根据单侧极限的定义,的意思是,x从小于0的地方(即0的左边)趋近于0; 的意思是,x从大于0的地方(即0的右边)趋近于0

因为在 时,cosx的函数值只能从小于1的地方趋近于1,而不能从大于1的地方趋近于1,所以说只能说 ,同理,在时,1-cosx的函数值只能从大于0的地方趋近于0,而不能从小于0的地方趋近于0,所以说

LeetCode 461. Hamming Distance

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Given two integers x and y, calculate the Hamming distance.

Note:
0 ≤ x, y < 2^31.

Example:

Input: x = 1, y = 4

Output: 2

Explanation:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑

The above arrows point to positions where the corresponding bits are different.

分析:将x和y不断右移一位,然后比较他们的最后一位。对于右移一位,采用x / 2和 y / 2的方式,对于比较最后一位,即比较x % 2 和 y % 2,统计不相同的次数cnt,直到x和y都等于0为止

 

《软件体系结构》知识点整理

软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识
软件工程包括3要素:方法、工具、过程
软件重用过程中需要重用的开发组织结构予以支持,它包括构件开发组、构件应用组、协调组三组成员组成
采用层次式软件体系结构,将产品的系统构件模型定义为4个层次,分别为:系统构件层、通用类构件层、业务构件层、表现层
软件体系结构的模型分为5种:结构模型、框架模型、动态模型、过程模型、功能模型
软件体系结构的生命周期模型主要分为需求分析阶段、建立软件体系结构阶段、设计阶段和实现阶段
软件体系结构应建立于传统的软件开发过程的需求分析和软件设计阶段之间
黑板系统主要由知识源、黑板数据结构和控制组成
三层C/S结构风格是由表示层、功能层和数据层构成
消息总线对消息过滤提供了转换和阻塞两种方式
正交软件体系结构由组织层、线索的构件构成
C/S体系结构服务器主要负责有效的管理系统的资源,主要负责数据库安全性的要求、数据库访问并发性的控制、数据库前端的客户应用程序的全局数据完整性规则、数据库的备份和恢复
层次系统最广泛的应用是分层通信协议
软件体系结构的描述方法主要有图形表达工具、模块内连接语言、基于软构件的系统描述语言和软件体系结构描述语言
ADL是一种在底层语义模拟支持下的形式化语言。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持
可重用的体系结构描述框架可以从需求视点、设计视点、实现视点、测试视点四个视点出发描述体系结构
典型的ADL在充分集成和吸收传统程序设计语言的精确性和严格性特点的同时,还应该具有构造、抽象、重用、组合、异构和分析推理等多种能力和特性。组合能力指的是ADL使得其描述的每一个系统元素都具有其自己的局部结构
一个完整的Web服务包括3种逻辑构件:服务提供、服务代理、服务请求
Web服务栈的五层标准为:发现服务层、描述层、消息格式层、编码格式层、传输协议层
Web服务开发生命周期分为:构建、部署、运行、管理四个阶段
实现完整测试的典型方法是利用测试准则定义测试需求,进而生成测试用例。参照相关研究工作,可定义构件或连接件内部消息的传递路径、构件或连接件内部端口的执行顺序路径等测试路径
构件依赖图是用于在体系结构级进行可靠分析的概率模型
一个复杂的系统通常包括顺序、并行计算、容错和客户/服务器常用的结构风格模型
体系结构评估中,一般采用刺激、环境和响应三个方面来对场景进行描述
可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力。包括可维护性、可扩展性、结构重组、可移植性4各方面
软件体系结构的开发是大型软件系统开发的关键环节
领域工程阶段的主要任务有:领域分析、领域设计和领域实现三个阶段
软件体系结构设计的主要目的是满足对软件的质量需求
软件危机的原因:1 用户需求不明确 2 缺乏正确的理论指导 3 软件规模越来越大 4 软件复杂度越来越高
重用组织框构中的主要组成成员:构件开发组、构件应用组、协调组不包括:构件需求组
常用的软件体系结构评估的方法包括:体系结构权衡分析法、软件体系结构分析法、中间设计的积极评审,不包括:系统体系结构分析法
软件体系结构的核心模型的5种元素是:构件、连接件、配置、端口、角色,其中构件、连接件和配置是最基本的元素
“4+1”视图模型:逻辑是图、开发视图、进程视图、物理视图、场景。不包括:连接视图
逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务
开发视图也称模块视图,主要侧重于软件模块的组织和管理
进程视图侧重于系统的运行特性,主要关注一些工作能性需求,例如系统的性能和可用性
物理视图主要考虑如何把软件映射到硬件上,它通常要考虑系统性能、规模、可靠性等
场景
逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构
在三层C/S体系结构中,中间件是最重要的构件
正交软件体系结构具有以下优点:1.结构清晰,易于理解 2.易修改,可维护性强 3.可移植性强,重用粒度大
C/S系统中,服务器的任务包括:1 数据库安全性要求 2数据库访问并发性的控制 3 数据库前端的客户应用程序的全局数据完整性规则 4 数据库的备份与恢复;不包括:数据库一致性要求
客户应用程序的主要任务包括:1 提供用户与数据库交互的界面 2 向数据库服务器提交用户请求并接收来自数据库服务器的信息 3 利用客户应用程序对存在于客户端的数据执行应用逻辑要求
黑板系统的3个组成部分:知识源、黑板数据结构、控制,不包括内存
与C/S相比,B/S体系结构也有很多不足之处,例如:1. B/S体系结构缺乏动态页面的支持能力,没有集成有效的数据库处理功能 2. B/S体系结构的系统扩展能力差,安全性难以控制 3. 采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远低于C/S体系结构 4. B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于事务处理应用
关于软件体系结构描述方法的说法:1. 图形表达工具在软件中占据主导地位 2. 由于程序设计语言和模块内连接语言具有严格的语义基础,因此它们能支持对较大的软件单元进行描述 3.基于软构件的系统描述语言将软件体系结构描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统 4.软件体系结构描述语言是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言ADL
ADL与其他语言的比较:1.ADL与需求语言的区别在于后者描述的是问题空间,而前者则扎根于解空间中 2.ADL与建模语言区别在于后者对整体行为的关注要大于对部分的关注,而ADL集中在构件的表示上 3.ADL与传统的程序设计语言的构成元素有许多相同和相似之处,又各自有着很大的不同
动态体系结构的特征:1. 可构造性动态特征 2.适应性动态特征 3.智能性动态特征,不包括安全性
通常,一个Web服务可以分为4个逻辑层,分别为数据层、数据访问层、业务层和监听者。离客户端最近的是监听者,离客户最远的是数据层。
同传统分布式体系结构相比,Web服务体系结构的主要优势体现为:1. 高度的通用性和易用性 2.完全的平台、语言独立性 3.高度的集成性 4.容易部署和发布
Web服务是采用XML格式的信息来定义和描述对外的公共接口和绑定
尽管对Web服务进行的描述和出发点或应用类型不同,但他们均具有如下共同特征:1. 应用的分布式 2.应用到应用的交互 3.平台无关性
设计模式方法的分类:1. Coad的面向对象模式 2.代码模式 3. 框架应用模式 4.形式合约 5.设计模式目录的内容 不属于其分类方法的是:遗传算法
一般来说,模式有一下四个基本成分:模式名称、问题、解决方案、效果
软件体系结构文档化过程的主要输出结果是:体系结构需求规格说明
软件体系结构设计的过程: 1.提出软件体系结构模型 2.把已标识的构件映射到软件体系结构中 3.分析构件之间的相互作用 4.产生软件体系结构 5.设计评审
软件体系结构的严重性分级:灾难性的、危急的、边际性的、较小的,不属于的是:较大的
传统的软件测试和基于体系结构的软件测试都需要研究的对象是:测试内容、测试准则、测试需求和测试用例的生成;不都需要的是:测试语言
在体系结构中,应用于当前环境中有多个构建同时运行的情况,主要用来提高系统性能的结构风格是并行/管道-过滤器结构风格
集成测试是测试构件之间的接口以保证构件能够交互,它将构件本身抽象为单元,并关注与构件间的消息传递,构件的交互行为可以通过形式化规约得到,可以提前进行
评估方法质量属性中可修改性不包括完整性,包括可维护性、可扩展性、结构重组、可移植性
刺激是场景中解释或描述风险承担者怎样引发与系统的交互部分
产品线就是由在系统的组成元素和功能方面具有共性和个性相似的多个系统组成的系统族
领域工程阶段的主要任务:领域分析、领域设计、领域实现。不包括:需求分析

 

软件危机
答案:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
依据页码:P1
软件重用
答案:是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
依据页码:P4
构件组装答案:构件组装是指将库中的构件经过适当修改后相互连接,或者将它们与当前开发项目中的软件元素相互连接,最终构成新的目标软件。
依据页码:P12
构件
答案:是指语义完整、语法正确和具有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通信接口和实现代码的复合体。
依据页码:P4
7、场景(scenarios):
答:场景是那些重要系统活动的抽象,它使4个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。 依据页码:P36
9、软件体系结构
答案:软件体系结构是一个设计,它包括所建立系统中的各元素(构件和连接件)的描述、元素之间的交互、指导装配的范例和对范例的约束。
根据页码:P44
10、软件体系结构风格
答案:软件体系结构风格是描述某一特定领域中系统组织方式的惯用模式。 依据页码:P49
11、“服务模型”
答案:“服务模型”是对所创建的构件进行分组的一种逻辑方式,这种模型与语言无关。服务模型基于这样一个概念:每个构件都是一系列服务的集合,这些服务由构件提供给其他对象。 依据页码:P62
12、消息转换
答案:消息转换是针对构件实例而言的,即所有构件实例发出和接收的消息类型都经过消息总线的过滤。
依据页码:P77
13、C2体系结构风格
答案:C2体系结构风格是通过连接件绑定在一起的、按照一组规则运作的并行构件网络。 依据页码:P54
16、ADL中的构件:
答案:构件是一个计算单元或数据存储。也就是说,构件是计算与状态存在的场所。
依据页码:P104
17、ADL中的连接件:
答案:连接件是用来建立构件间的交互以及支配这些交互规则的体系结构构造模块。
依据页码:P104
18、ADL中的体系结构配置:
答案:体系结构配置或拓扑是描述体系结构的构件与连接件的连接图。体系结构配置提供信息来确定构件是否正确连接、接口是否分配、连接件构成的通信是否正确,并说明实现要求行为的组合含义。
依据页码:P105
19、构造能力:
答案:构造能力指的是ADL能够使用较小的独立的体系结构元素来建造大型软件系统。
依据页码:P102
20、UML:
答案:UML是指统一建模语言Unified Modeling Language,是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立文档。
依据页码:P123
25、Web服务栈
答案:Web服务栈是一种全新的体系结构,是整个Web服务的技术系列。
依据页码:P174
29、需求
答案:用户对目标软件系统在功能、行为、性能、设计约束等方面的期望
依据页码:P215
30、设计模式中,什么是元素的一个空间配置?
答案:每个模式规定了的一个特定的结构。
31、模式
答案:模式是指从某个具体的形式中得到的一种抽象,在特殊的非任意性的环境中,该形式不断地重复出现。
依据页码:P196
35、单元测试
答案:是最底层的测试活动,指构件开发者对构件本身的测试,涉及的消息流是构件内部的消息,一般由构件开发者完成。
依据页码:253
36、软件体系结构的可靠性
答案:在基于构件的可靠性模型中,通过状态图来描述系统的行为,软件系统的可靠性依赖于状态的执行顺序和每一个状态的可靠性。
依据页码:P244
37、风险评估
答案:风险评估是基于能够通过定量的方法对软件产品属性进行的度量。
依据页码:P248
38、可修改性
答案:可修改性是指能够快速地以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。可修改性包括:
1可维护性 2可扩展性 3结构重组 4可移植性
见书P257
39、评估方法中质量属性中性能的含义。
答:性能指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某个时间内系统所能处理的事件的个数。经常用单位时间内处理事务的数量或系统完成某个事物处理所需的时间来对性能进行定量的表示。
依据页码:P256
40、基于场景的评估方法。
答:场景是一系列有序地使用或修改系统的步骤。这种评估方式分析软件体系结构对场景也就是对系统的使用或修改活动的支持程度,从而判断该体系结构对这一场景所代表的质量需求的满足程度。
依据页码:P260
41、什么是软件安全性?
答:安全性是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性是根据系统可能受到的安全威胁的类型来分类的。安全性又可分为机密性,完整性,不可否认性以及可控性等特性。其中,机密性保证信息不泄漏给非授权的用户,实体或过程;完整性保证信息的完整和准确,防止信息被非法修改;可控性保证对信息对传播以及内容具有控制的能力,防止为非法者所使用。
依据页码: P257
42、核心资源
答案:是领域工程所有结果的集合,是产品线中产品构造的基础。
依据页码: P285
软件产品线
答案:软件产品线就是在一个公共的软件资源集合基础上建立起来的共享同一个特性集合的系统集合。
依据页码:P282
产品线体系结构
答案:产品线体系结构是一个软件体系结构和一组产品中可重用的构件,为增加软件重用、为企业降低软件开发和维护的成本提供了一个重要的途径。
1、纵观软件体系结构技术的发展过程,从最初的“无结构”设计到现行的基于体系结构的软件开发,可以认为经历了哪四个阶段?P23
答案:(1)“无体系结构”设计阶段。以汇编语言进行小规模应用程序开发为特征
(2)萌芽阶段。出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征
(3)初期阶段。出现了从不同侧面描述系统的结构模型,以UML为典型代表
(4)高级阶段。以描述系统的高层抽象结构为中心,不关心集体的建模细节,划分了体系结构模型与软件结构的界限,该阶段以Kruchten,提出了“4+1”模型为标志。
依据页码:P23
2、试述下可重用技术对构件库组织方法的几点要求:
答案:(1)支持构件库的各种维护动作,如增加、删除以及修改构件,尽量不要影响构件库的结构。
(2)不仅要支持精确匹配,还要支持相似构件的查找。
(3)不仅能进行简单的语法匹配,而且还能够查找在功能或行为方面等价或相似的构件。
(4)对应用领域具有较强的描述能力和较好的描述精度。
(5)库管理员和用户容易使用
依据页码:P7
简要概产生软件危机的原因答案:1.用户需求不明确 2.缺乏正确的理论指导 3.软件规模越来越大 4.软件复杂度越来越高。
依据页码:P3
软件体系结构的定义众多,你是如何理解软件体系结构的?软件体系结构在软件系统中有何作用?
答案:(1)软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素继承的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,还显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
(2)体系结构是风险承担者进行交流的手段。它明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性,可以预测软件的质量,是推理和控制更改更简单,有助于循序渐进的原型设计。同时,软件体系结构是可传递和可重用的模型。
依据页码:p19

6、体系结构的生命周期模型分为哪几个阶段?
答案:1、需求分析阶段 2、建立软件体系结构阶段 3、设计阶段 4、实现阶段
依据页码:P38

11、试阐述与C/S体系结构相比,B/S体系结构的不足之处。
答案:
1、B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能;
2、B/S体系结构的系统扩展能力差,安全性难以控制;
3、采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远的低于C/S体系结构;
4、B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理应用。
依据页码:P66
14、请简述三层C/S结构的优点
答案:1、允许合理的划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为合理清晰,能提高系统和软件的可维护性和可扩展性。
2、允许更灵活的选用相应的平台和硬件系统使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层,并且具有可升级性和开放性
3、可并行开发,各层可选择各自最适合语言使之高效开发,从而达到较高的性价比
4、允许利用功能层有效的隔离开表示层 和数据层,未授权的用户难以通过如黑客手段访问数据层,具有可控性
参考页码:P64
18、在C2中,连接件和构件是如何工作的?
答案:连接件负责构件之间消息的传递,而构件维持状态,执行操作并通过top和bottom端口和其他的构件交换信息。每个接口包含一种可发送的消息和一组可接受的消息,构件之间的消息要么是请求其他构件执行某个操作的请求消息,要么是通知其他构件自身执行某个操作或状态发生改变的通知消息。构件之间的消息交换不能直接进行,而只能通过连接件来完成。
依据页码:P109
41、软件体系结构评估对主要方式有哪些?
1.基于调查问卷或检查表的评估方式
2.基于场景的评估方式
3.基于度量的评估方式
依据页码:P260-P261
42、简述双生命周期中的领域工程阶段的主要任务及内容。
(1)领域分析。利用现有的系统设计、体系结构和需求建立领域模型。
(2)领域设计。用领域模型确定领域/产品线的共性和可变性,为产品线设计体系结构。
(3)领域实现。基于领域体系结构开发领域可重用资源(构件、文档、代码生成器)。
依据页码:P283
软件产品线的划分依据有?
答案:1、该组织是用演化方式还是革命方式引入产品线开发过程的。
2、是基于现有产品还是开发全新的产品线。
依据页码:P287

【软件体系结构】考点整理

一、填空题
1、软件元素包括 、 、 、 、 甚至领域知识。
软件工程包括3个要素: 、 和 。
软件重用过程中需要重用的开发组织结构予以支持,它包括:__、__、___三组成员组成。
采用层次式软件体系结构,将产品的系统构件模型定义为4个层次,分别为: 、 、 、 。
5、软件体系结构的模型分为5种: 、 、 、 和 。
8、软件体系结构的生命周期模型主要分为需求分析阶段,建立软件体系结构阶段()和实现阶段。
9、软件体系结构应建立于传统的软件开发过程的________和________阶段之间。
10、黑板系统主要由 __________ 、____________ 和 _________ 组成 。
11、三层C/S结构风格是由 _________ 、_________ 和 __________ 构成的。
12、消息总线对消息过滤提供了________和___________两种方式。
13、正交软件体系结构由____和_____构成。
14、C/S体系结构服务器主要负责有效的管理系统的资源主要负责__、____、____和 ___ 。
15、层次系统最广泛的应用是 ____________.
16、软件体系结构的描述方法主要有 、 、基于软构件的系统描述语言和 。
17、ADL是一种在底层语义模拟支持下的形式化语言。基于底层语义的工具为体系结构的 、分析、 、 、设计过程等提供支持。
18、可重用的体系结构描述框架可以从 、 、 和 四个视点出发描述体系结构。
20、典型的ADL在充分继承和吸收传统程序设计语言的 和 特点的同时,还应该具有构造、抽象、重用、组合、异构和分析推理等多种能力和特性。 能力指的是ADL使得其描述的每一个系统元素都有其自己的局部结构。
25、一个完整的Web服务包括3种逻辑构件:______ 、______、_______。
26、Web服务栈的五层标准为:发现服务层、描述层、________、________、________。
27、Web服务开发生命周期分为:________、________、________、________四个阶段。
35、实现完整测试的典型方法是利用测试准则定义测试需求,进而生成测试用例.参照相关研究工作,可定义 、 等测试路径。 依据页码:P255
36、构建依赖图是用于在体系结构级进行可靠性分析的 模型。
37、一个复杂的系统通常包括 、 、 和 常用的结构风格模型。
体系结构评估中,一般采用刺激,环境,和_____三方面来对场景进行描述。
40、可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力。包括可维护性、可扩展性、 、可移植性4个方面。
42、软件重用是为了解决 _____
43、________的开发是大型软件系统开发的关键环节。
领域工程阶段的主要任务有_____ 、______和______三个阶段。
软件体系结构设计的主要目的是满足对软件的_____。
二、选择题
1、软件危机的原因不包括():
A、 用户需求不明确 B、缺乏正确的理论指导
C、软件规模越来越大D、软件复杂度越来越低
2、下列选项中,哪个不是重用组织框构中的主要组成成员:
A. 协调组 B.构件应用组 C.构件需求组 D.构件开发组
常用的软件体系结构评估的方法不包括:A体系结构权衡分析法 B.软件体系结构分析法C系统体系结构分析法 D中间设计的积极评审 4、下列选项中,不是软件危机的原因的是:
A、 用户需求不明确 B.缺乏正确的理论指导
C.软件规模越来越小 D.软件的复杂度越来越高P2
5、不属于软件体系结构的核心模型的最基本的元素是 ()
A 构件 B 连接件 C 配置 D 角色
6、选项中不属于“4+1”试图模型的是:()
A 逻辑视图 B 物理视图 C 连接视图 D 开发视图
7、下列说法错误的一项的是()
A:逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务
B:开发视图也称模块视图,主要侧重于软件模块的组织和管理
C:进程视图侧重与系统的运行特性,主要关注一些功能性需求,例如系统的性能和可用性。
D:物理视图主要考虑如何吧软件映射到硬件上,它不需要要考虑到系统性能、规模、可靠性等。
8、Kruchten在1995提出了“4+1”模型,从5个不同的视角来描述软件体系结构,其中“4”不包括的视图是()
A逻辑视图 B开发视图 C物理视图 D场景视图
9、下列哪个选项是描述系统的静态结构()
A.逻辑视图和开发视图 B.进程视图和物理视图
C.开发视图和物理视图 D.开发视图和进程视图
10、在三层C/S体系结构中,____是最重要的构件。
A 中间件 B 末尾件 C 功能层 D 数据层
11、正交软件体系结构的有点有()
A 结构清晰,易于理解 B 易修改,可维护性强
C 可移植性强,重用程度大 D 以上都是
12、C/S系统中,服务器的以下任务中哪一个是错的?()
A 数据库一致性要求B 数据库访问并发性控制
C 数据库前端的客户应用程序的全局数据完整性规则D 数据库的备份与恢复
13、下列哪个不是黑板系统的组成部分?()
A.知识源 B.黑板数据结构 C.控制 D.内存
14、与C/S体系结构相比,B/S体系结构也有许多不足之处一下说法正确的是()
A B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理能力
B B/S体系结构的系统扩展能力差,但是安全性比较容易控制
C 采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远的高于C/S体系结构
D B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,利于在线事务处理(Online Transaction Processing,OLTP)应用。
15、以下不是正交软件体系结构优点的是()
A. 结构清晰,易于理解B已修改,可维护性强C.可移植性强,重用粒度大D. 很大很复杂
16、以下关于软件体系结构描述方法说法错误的是( )
A. 图形表达工具在软件设计中占据主导地位。
B. 由于软件设计语言和模块内连接语言具有严格的语义基础,因此它们能支持较小的软件单元进行描述。
C. 基于软构件的系统描述语言将软件系统描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。
D. 软件体系结构描述语言是参照传统程序设计语言的设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构描述语言。
20、下列选项中关于ADL与其他语言的比较说法中错误的是()
A. ADL与需求语言的区别在于后者描述的问题空哦关键,而前者则扎根于解空间中
B. ADL与建模语言的区别在于后者对部分的关注要大于对整体的关注
C. ADL与传统的程序设计语言的构成元素由许多相同和相似之处,有各自有着很大的不同
D. ADL集中在构件的表示上。
23、以下哪些特征不属于动态体系结构特征() ?
A 可构造性动态特征 B 适应性动态特征 C 智能性动态特征 D 安全性动态特征
25、通常,一个Web服务可以分为4个逻辑层,分别为数据层(Data Layer)、数据访问层(Data Access Layer)、
业务层(Business Layer)和监听者(Listener)。离客户端最近的是监听者,离客户最远的是______:()
A 数据层(Data Layer) B 数据访问层(Data Access Layer)
C 业务层(Business Layer) D 监听者(Listener)
26、同传统分布式体系结构相比,Web服务体系结构的主要优势体现为()
①高度的通用性和易用性
②完全的平台、语言独立性
③高度的集成性
④容易部署和发布
A.①②④ B.②③④ C.①③④ D.①②③④
27、Web服务是采用________格式的信息来定义和描述对外的公共接口和绑定。
A.URI B.XML C.SOAP D.HTTP
28、尽管对Web服务进行的描述的出发点或应用类型不同,但他们均具有如下共同特征:()
①应用的分布式
②应用到应用的交互
③平台无关性
A.①② B.②③ C.①③ D.①②③
29、下面哪个不属于设计模式方法分类()
A Coad的面向对象模式 B 代码模式 C 框架应用模式 D 遗传算法
30、一般来说,模式有以下四个基本成分: (  )、问题、解决方案、效果 。
A.模式名称 B.  时间 C.  地点 D.  思想
31、软件体系结构的文档要求与软件开发项目中的其他文档是相似的,下列哪项属于体系结构文档化过程的主要输出结果()
A 体系结构需求规格说明B 体系结构概要设计说明
C 体系结构详细设计说明D 体系结构总体框架说明
32、软件体系结构设计有哪些过程?()
①提出软件体系结构模型
②把已标识的构件映射到软件体系构件中
③ 分析构件之间的相互作用
④ 产生软件体系结构
⑤ 设计评审
A①②③ B①③④ C①②③④ D①③④⑤
34、下列选项中不是软件体系结构的严重性分级的一项是( )
A.灾难性的 B.危急的 C.较大的 D.边际性的
35、以下不属于传统的软件测试和基于体系结构的软件测试都需要研究的对象是?( )
A、测试内容 B、测试准则 C、测试用例 D、测试语言
36、在体系结构中,应用于当前环境中有多个构建同时运行的情况,主要用来提高系统性能的结构风格是( )
A、顺序结构风格 B、并行/管道—过滤器结构风格
C、容错结构风格 D、调用—返回结构风格
37、下列哪一个测试过程是测试构件之间的接口以保证构件能够交互,它将构件本身抽象为单元,并关注与构件间的消息传递,构件的交互行为可以通过形式化规约得到,可以提前进行( )
A、单元测试 B、模块测试 C、集成测试 D、系统测试
39、评估方法质量属性中可修改性不包括()。
A. 可维护性 B。可扩展性 C.完整性 D.可移植性
( )是场景中解释或描述风险承担者怎样金发与系统的交互部分。
A.刺激 B.环境 C.响应 D.互操作
41、软件评估中关注大可修改性包含可维护性,可扩展性,( )和结构重组4个方面。
A 。可用性 B 。可移植性 C 。可变性 D 。互操作性
42、产品线就是由在系统的组成元素和功能方面具有共性和()相似的多个系统组成的系统族。
A、异步性 B、个性 C、可变性 D、继承性
一下哪个不是领域工程阶段的主要任务()。
领域设计 B需求分析 C、领域分析 D、领域实现
三、 名词解释
软件危机
软件重用
构件组装
构件
7、场景(scenarios):
9、软件体系结构
10、软件体系结构风格
11、“服务模型”
12、消息转换
13、C2体系结构风格
16、构件:
17、连接件:
18、体系结构配置:
19、构造能力:
20、UML:
25、Web服务栈
29、需求
30、设计模式中,什么是元素的一个空间配置?
31、模式
35、单元测试
36、软件体系结构的可靠性
37、风险评估
38、可修改性
39、评估方法中质量属性中性能的含义。
40、基于场景的评估方法。
41、什么是软件安全性?
42、核心资源
软件产品线
产品线体系结构
四、 问答题
1、纵观软件体系结构技术的发展过程,从最初的“无结构”设计到现行的基于体系结构的软件开发,可以认为经历了哪四个阶段?P23
2、试述下可重用技术对构件库组织方法的几点要求:
简要概产生软件危机的原因
软件体系结构的定义众多,你是如何理解软件体系结构的?软件体系结构在软件系统中有何作用?
6、体系结构的生命周期模型分为哪几个阶段?
7、软件体系结构是必需,软件体系结构的生命周期分为哪几个阶段?
8、请简述软件体系结构的生命周期。
11、试阐述与C/S体系结构相比,B/S体系结构的不足之处。
14、请简述三层C/S结构的优点
18、在C2中,连接件和构件是如何工作的?
41、软件体系结构评估对主要方式有哪些?
42、简述双生命周期中的领域工程阶段的主要任务及内容。
软件产品线的划分依据有?

滨江学院 刘生 计算机网络考点知识点整理

第一章
计算机网络的常用数据交换技术。
1. 电路交换——必须经过“建立连接、通信、释放连接”三个步骤,联网方式为面向连接的。整个报文的比特流连续从源点传送到终点,整个通信线路物理占用。
2. 报文交换——基于存储转发原理,在报文交换中心,以每份报文为单位,根据报文的目的站地址,进行相应的转发。整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
3. 分组交换——分组或包是将划分成等长的数据段,每个数据段前加上必要的控制信息组成的首部。将报文分割为多个分组,每个分组在相邻节点间采用存储转发方式进行传送。与报文交换一样,对通信线路逐段占用。采用无连接的方式。
计算机网络的定义。
计算机网络是指以资源共享为目的相互连接的自治计算机集合。
计算机网络是把不同区域位置的计算机与网络设备用通信线路互连成一个综合系统,使计算机之间相互交换数据,共享信息和软、硬件资源。
计算机网络的分类。
1.数据交换技术的不同:电路交换网、报文交换网、分组交换网、组合交换网
2.作用范围:广域网、城域网、局域网
3.使用者方式:公用网、专用网
4.拓扑结构:总线型、星型、环形、树形、网状网络
计算机网络的主要性能指标
要求:
1. 带宽。掌握模拟信道和数字信道中带宽的具体含义及表示单位。
模拟信号
带宽--表示允许信号占用的频率范围。
单位:HZ、KHZ、MHZ
数字信号
带宽--表示数字信道发送数字信号的速率,即传输速率,也称为吞吐量 。
· 常用的带宽单位是
– 千比每秒,即 kb/s (103 b/s)
– 兆比每秒,即 Mb/s(106 b/s)
– 吉比每秒,即 Gb/s(109 b/s)
– 太比每秒,即 Tb/s(1012 b/s)
在计算机上表示数据大小和容量时,k=2^10=1024, M=2^20, G=2^30, T=2^40
2. 时延。掌握发送时延和传播时延的概念及区别,并能熟练进行计算。计算时应注意单位的统一,并尽量采用国际单位。
· 时延:指数据(报文或分组,比特)从网络(或一条链路)的一端传送到另一端所需的时间。
· 发送时延:也称为传输时延,是指发送数据时数据块从发送节点通过网络接口进入传输介质所需要的时间。也就是从发送数据的第一个比特算起,到最后一个比特发送完毕为止所需的时间。
发送时延=(数据块长度bit)/ (信道带宽bit/s或bps)【bps比特/秒、位/秒,大写的B是Byte的意思,1B=8bit】

传播时延:指电磁波在网络信道中传播一段距离所需的时间。
传播时延 = 信道长度(米) / 电磁波在信道中的传播速率(米/秒)

~~~~~计算以下情况的发送时延和传播时延:数据长度为100MB,数据发送速率为100kbit/s,传输距离为1000km,信号在媒体上的传播速率为3*10^8m/s
发送时延:100*1048576*8/(100*1000)=8388.6s
传播时延:100*1000/(3*10^8)=0.0033s
国际单位——m,bit,s

往返时延RTT:数据从发送端开始发送,到发送端收到来自接收端的确认信息所经历的时间。

3. 利用率。掌握利用率的计算公式及其物理意义
利用率分为信道利用率和网络利用率。
· 信道利用率指出信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率为零。
· 网络利用率则是全网络的信道利用率的加权平均值。
· 信道利用率并非越高越好。
利用率的计算:利用率 = 1 – (D0 / D),D0是网络空闲时的时延,D为网络当前的时延
协议的基本概念及组成要素。
协议是为进行数据交换而建立的规则、标准或约定,是网络中结点进行通信的规则集合。
· 语法:数据与控制信息的结构或格式。
· 语义:即需要发出何种控制信息,完成何种动作以及何种响应。
· 同步:也即时序,即事件实现顺序的详细说明。
协议与服务的关系。
· 协议的实现保证了向上一层提供服务。要实现本层协议,还需要使用下一层所提供的服务。
· 本层的服务接受者只能看见服务,而无法看见下层的协议。
· 协议是水平方向的,服务是垂直方向的。
OSI七层模型 和 TCP/IP 。
要求:掌握OSI七层模型 和 TCP/IP 的各层名称(必须按顺序)及相互对应关系。注意OSI七层模型 和 TCP/IP 适用场合。

第二章
物理层与传输媒体的接口特性。
1.机械特性:指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。
2.电气特性:指明在接口电缆的各条线上出现的电压的范围。
3.功能特性:指明某条线上出现的某一电平的电压表示何种意义。
4.规程特性:指明对于不同功能的各种可能事件的出现顺序。
奈奎斯特准则和香农公式的具体内容、参数及其含义 。并能利用奈奎斯特准则和香农公式进行计算。
奈氏准则
C = 2Wlog2M 【W为信道带宽(单位是Hz),M为信号状态数量(2W为理想低通信道的最高码元传输率,1W为理想带通信道的最高码元传输率)】
具体含义:实际信道的最高码元传输速率因受到实际物理信道的干扰,要低于奈氏准则的上限值。
信号传输速率:即码元速率,表示单位时间内通过信道传输的码元个数,单位是baud波特。

~~~假定信道的最高码元传输率为20k码元/秒。如果采用振幅调制的方法,码元的振幅划分为16个不同的等级,问可以获得多高的数据速率(bps)?
C = R * log2(16) = 20 * 1000 * 4 = 80000 b/s
香农公式
无论采用何种技术,都无法突破香农公式给出的传输速率极限值C。
香农公式表明,信道的带宽以及信道中的信噪比越大,信息的极限传输效率也就越高。这意味着只要信道的信息传输速率低于信道的极限信息传输速率,就可能找到某种方法来实现无差错的传输。
C(信道的极限信息传输速率),W(信道带宽,单位是Hz),S:信道内部所传信号的平均功率,N:信道内部高斯噪声的功率,S/N:信道的信噪比。
C=Wlog2(1+S/N)

~~~假定信道的带宽为3.1kHz,其最大信息传输速率为35kbps,若想使信道的最大信息传输速率增加60%,那么信噪比S/N应该增大到多少倍?如果在刚才的基础上将信噪比S/N再增大到10倍,这时的最大信息速率是否可以再增加20%?

计算机网络中常用的有线传输介质、无线传输介质与技术 。

同轴点电缆又分为基带同轴电缆和宽带同轴电缆。
计算机网络中常用的信道复用技术及其原理。
· 频分多路复用:将物理线路的可用频率带宽按频率不同划分不同的信道,即若干带宽较小的信道
· 时分多路复用:将线路的传输时间分为若干个等长的时隙,多路信号采用轮流的方式使用相应的时隙
· 波分多路复用:对光的频分复用,是对光信号进行多路复用和多路分离,将不同的波长多路复用到一根光纤上的技术
· 码分多路复用:也是一种共享信道的方法,主要采用扩频通信。
共有四个站进行码分多址CDMA通信。四个站的码片分别为
A:(-1 -1 -1 +1 +1 -1 +1 +1) B:(-1 -1 +1 -1 +1 +1 +1 -1)
C:(-1 +1 -1 +1 +1 +1 -1 -1) D:(-1 +1 -1 -1 -1 -1 +1 -1 )
现收到这样的码片序列:S(-1 +1 -3 +1 -1 -3 +1 +1)问哪个站发送数据了?发送数据的站发送的1还是0?
将A、B、C、D与S正交,除以m,得到的结果:如果是0则表示没有发送;如果是1则表示发送了1,如果是-1则表示发送了0。
常用的宽带接入技术。
· 电话拨号接入
· DSL(数字用户线)接入
· 混合光纤同轴电缆接入
· 光纤接入
· LAN接入
· 无线接入
第三章
数据链路层必须解决的三个基本问题?是如何解决的?
· 封装成帧
在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。
· 透明传输
ν 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”
ν 字节填充或字符填充——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
ν 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
· 差错检测
ν 循环冗余检验CRC
ν 帧检验序列 FCS
循环冗余检验码的计算。
要发送的数据为1101011011。采用CRC的生成多项式是G(X) = X^4 + X + 1,求应添加在数据后面的余数。数据在传输过程中最后一个1变成了0,问接收端能否发现?若数据在传输过程中最后两个1都变成了0,采用CRC检验后,数据链路层的传输是否就变成了可靠的传输?
1. 根据CRC的多项式G(x)得到阶数r、G(x)的二进制表达式【这个就是除数】
2. r等于多少就在要发送的数据后面补多少个0,然后把这个要发送的数据除以除数G(x),得到的余数就是要添加的检验序列R(x),这个检验序列加在原本要发送的数据后面。
3. 根据题目要求改位数后+R(x),把这个值除以G(x)的那个除数,得到的余数如果是0表示接收端没发现,如果不是0表示接收端发现了。

仅仅采用CRC检验,缺少重传机制,数据链路层的传输还不是可靠的传输。
局域网的工作层次及特点。
工作在数据链路层
局域网的主要特点是网络为一个单位所拥有,地理范围和站点数目均有限。具有较高的数据传输速率和较低的误码率,便于安装、维护和扩充。
网卡的MAC地址。
在局域网中,硬件地址又称为物理地址或MAC地址,是局域网中每一台计算机固化在网卡ROM中的地址。
以太网的介质访问控制方法的英文缩写、中文名称及含义。
载波监听多点接入/碰撞检测协议(CSMA/CD)
扩展以太网的方法及特点。
1 在物理层扩展局域网 (集线器)
优点
使原来属于不同碰撞域的局域网上的计算机能够进行通信。
扩大了局域网覆盖的地理范围。
缺点
碰撞域增大了,但总的吞吐量并未提高。
如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
2 在数据链路层扩展局域网
优点
过滤通信量。
扩大了物理范围。
提高了可靠性。
可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网
ν 缺点
存储转发增加了时延。
在MAC 子层并没有流量控制功能。
具有不同 MAC 子层的网段桥接在一起时时延更大。
网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。
高速以太网的标准名称及其所代表的含义。
10BASE-T:10表示信号在电缆上的传输率 BASE表示电缆上的信号是基带信号 T表示双绞线星形网
第四章
虚电路和数据报两种服务的优缺点 (区别)。
虚电路的可靠通信由当前网络来保证,数据报的可靠通信由用户主机来保证;
虚电路必须有连接,而数据报是面向无连接的。虚电路总是按照发送顺序到达目的站,而数据报服务到达目的站不一定按照发送顺序。
虚电路服务的拥塞控制易于实现,而数据报服务的拥塞控制很难实现。
IP地址和物理地址的关系。
物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。
分类IP地址的分类标准。
ν A类:1~126
ν B类:128~191
ν C类:192~223
ν D类:224~239
ν E类:240~247
子网IP地址的原理及划分和表示方法。
原理:从IP地址的主机号部分借用若干个比特位作为子网号,而主机号也就相应减少了若干个比特位。
表示方法:使两级IP地址变成三级IP地址,IP地址分为网络号、子网号、主机号
子网掩码的概念,A、B、C类IP地址的默认子网掩码,子网掩码的计算,子网地址的计算。
子网掩码:与IP地址一样也是32位,由连续的1和跟随连续的0组成。子网掩码中的1对应于IP
地址中的网络号和子网号,而子网掩码中的0对应与现在的主机号。
A、B、C类地址的默认子网掩码:如果一个网络不划分子网,那么该网络就使用默认子网掩码。
A: 255.0.0.0 B:255.255.0.0 C:255.255.255.0
子网掩码的计算:
子网地址的计算:把IP地址和子网掩码进行逐位“与”运算,就可以得到该网络的网络地址(也就是子网地址)
若主机号部分占用n个比特位数,每个子网包含主机数2^n-2台
子网号部分占用m个比特位数,则子网数有2^m个
某单位分配到一个B类IP地址,其net-id为129.250.0.0 该单位有4000台机器,平均分布在16个不同的地点,如果选用子网掩码为255.255.255.0 试给每一个地点分配一个子网号码,并计算出每个地点主机号码的最大值和最小值。
地点 子网号 子网网络号 主机IP的最小值和最大值
1 00000001 129.250.1.0 129.250.1.1 – 129.250.1.254
2 00000010 129.250.2.0 129.250.2.1 – 129.250.2.254
以此类推16个

某单位分配到一个地址块136.23.12.31/26。现在需要进一步划分为4个一样大的子网:
(1) 每个子网的网络前缀有多长?26+log2(4) = 28
(2) 每一个子网中有多少个地址?2的32-28次方 = 16
(3) 这个地址块和每一个子网的网络号分别是多少?
(4) 每一个子网可分配给主机使用的最小地址和最大地址是什么?

CIDR地址的概念及CIDR地址块。
CIDR(无类型域间选路,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
υ CIDR地址块
ν CIDR 将网络前缀都相同的连续的 IP 地址组成“CIDR地址块”。
ν 一个CIDR地址块由地址块的起始地址和地址块中的地址数来定义。
IP数据报的基本构成 。

RIP、OSPF、BGP路由选择协议的主要特点。
· 仅和相邻路由器交换信息。
· 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
· 按固定的时间间隔交换路由信息(如每隔 30 秒)。
OSPF
· “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
· “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF
· OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
· 是分布式的链路状态协议。
BGP
· BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
· 在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
第五章
传输层的作用。
· 传输层为应用进程之间提供端到端的逻辑通信。
· 传输层还要对收到的报文进行差错检测。
· 传输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。
TCP/IP体系的运输层的两个协议的名称及特点。
· 用户数据报协议 UDP
· 传输控制协议 TCP

· UDP 在传送数据之前不需要先建立连接。对方在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。
· TCP 则提供面向连接的服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使TCP报文的首部增大很多,还要占用许多的处理机资源。
TCP可靠传输的原理及实现方法。
原理:确认和重传机制
实现方法:
· 使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
· 这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。
TCP的流量控制。
利用滑动窗口实现流量控制
· 流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
· 利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。
TCP拥塞控制的实现方法。
· 慢开始和拥塞避免
· 传输轮次
· 乘法减小
· 加法增大
TCP建立连接的三次握手机制。

第六章
域名系统DNS的作用。
将域名解析成IP地址
电子邮件系统的构成及所使用的协议。
· 发送邮件的协议:SMTP
· 读取邮件的协议:POP3 和 IMAP
· MIME 在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等),使用 MIME 可在邮件中同时传送多种类型的数据。

组成:
· 发件人用户代理
· 发送方邮件服务器
· 接收方邮件服务器
· 收件人用户代理
www(万维网)的概念及服务机制。
概念:
· 万维网 WWW (World Wide Web)并非某种特殊的计算机网络。 是一个大规模的、联机式的信息储藏所。
· 万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为“链接”。
服务机制:
· 万维网以客户服务器方式工作。
· 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。
· 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
· 在一个客户程序主窗口上显示出的万维网文档称为页面(page)。
掌握下列英文缩写词的英文全称及对应的中文名称:
DHCP:动态主机设置协议

实验部分
组装100BASE-TX所需的设备和器件。
RJ45水晶头,非屏蔽双绞线,压线钳
非屏蔽双绞线布线标准EIA/TIA568A和EIA/TIA568B。
EIA/TIA568A:绿白,绿,橙白,蓝,蓝白,橙,棕白,棕
EIA/TIA568B:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕
直通线缆和交叉线缆的制作方法。
交叉线: 又叫反线,按一端A类,一端B类的标准排列好线序,并用RJ45水晶头夹好。
直通线:又叫正线,两端采用B类做线标准,注意两端都是同样的线序且一一对应。

1120. Friend Numbers (20)-PAT甲级真题

Two integers are called “friend numbers” if they share the same sum of their digits, and the sum is their “friend ID”. For example, 123 and 51 are friend numbers since 1+2+3 = 5+1 = 6, and 6 is their friend ID. Given some numbers, you are supposed to count the number of different friend ID’s among them. Note: a number is considered a friend of itself.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N. Then N positive integers are given in the next line, separated by spaces. All the numbers are less than 10^4.

Output Specification:

For each case, print in the first line the number of different frind ID’s among the given integers. Then in the second line, output the friend ID’s in increasing order. The numbers must be separated by exactly one space and there must be no extra space at the end of the line.

Sample Input:
8
123 899 51 998 27 33 36 12
Sample Output:
4
3 6 9 26

分析:在接收输入数据的时候就把该数字的每一位相加,并把结果插入一个set集合中。因为set是有序的、不重复的,所以set的size值就是输出的个数,set中的每一个数字即所有答案的数字序列