精华内容
下载资源
问答
  • 动态性的概念
    千次阅读
    2019-12-03 18:31:25

    Nacos - nacos基础概念


    1、什么是nacos

    一个易于使用的动态服务发现,配置和服务管理平台,用于构建云应用程序

    Nacos致力于帮助您发现,配置和管理微服务。它提供了一组简单有用的功能,使您能够实现动态服务发现,服务配置,服务元数据和流量管理。
    Nacos使构建,交付和管理您的微服务平台变得更容易,更快捷。它是通过微服务或云原生方法支持以服务为中心的现代应用程序体系结构的基础架构。

    2、nacos 的主要功能

    • 服务发现和服务运行状况检查
      • Nacos支持基于DNS和基于RPC(Dubbo / gRPC)的服务发现
      • 使用DNS或HTTP查找服务
    • 动态配置管理
      • 可以在所有环境中以集中,外部化和动态的方式管理所有应用程序和服务的配置
    更多相关内容
  • 1 贪心自顶向下求解,动态规划自底向上求解; 2 贪心最优解一定包含上一步的最优解,动态规划最优解不一定包含上一步的最优解; 3 贪心不能保证全局最优,动态规划(本质是穷举法)能保证全局最优; 4 贪心复杂度较...

    1 贪心算法

    1. 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解;
    2. 贪心算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,省去了为找最优解要穷尽所有可能而必须耗费的大量时间;
    3. 贪心算法采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择,就将所求问题简化为一个规模更小的子问题;
    4. 通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都保证能获得局部最优解,但由此产生的全局解不一定是最优的;
    5. 因此适合用贪心算法解决问题的前提是:局部最优策略能导致产生全局最优解
    6. 实际上,贪心算法适用的情况很少。一般,对一个问题分析是否适用于贪心算法,可以先选择该问题下的几个实际数据进行分析,就可做出判断;

    2 动态规划

    1. 动态规划(Dynamic Programming,DP)是求解决策过程最优化的过程,能获得全局最优解;
    2. 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解;
    3. 与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的,若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次(比如斐波拉契数列);另外,分治自顶向下,动态规划自底向上;
    4. 如果把所有的子问题看成一棵树的话,动态规划自底向上,从叶子向根;构造子问题的解,对每一个子树的根,求出下面每一个叶子的值,推得根的值,最后得到一棵完整的树,根的值即为最优值;
    5. 需要在给定约束条件下优化某种指标时,动态规划很有用;
    6. 每种动态规划解决方案都涉及网格,单元格中的值通常就是要优化的值;
    7. 每个单元格都是一个子问题,因此需要考虑如何将问题分解为子问题;
    8. 没有放之四海皆准的计算动态规划解决方案的公式;

    局限性

    1. 首先,它没有统一的处理方法,必须根据问题的各种性质并结合一定的技巧来处理;
    2. 另外当变量的维数增大时,总的计算量及存贮量急剧增大。因而,受计算机的存贮量及计算速度的限制,当今的计算机仍不能用动态规划方法来解决较大规模的问题,这就是“维数障碍”;

    3 两者区别

    1 贪心自顶向下求解,动态规划自底向上求解;

    • 贪心:如果把所有的子问题看成一棵树的话,贪心自顶向下,每次向下遍历最优子树即可(通常这个“最优”都是基于当前情况下显而易见的“最优”),这样的话,就不需要知道一个节点的所有子树情况,于是构不成一棵完整的树;
    • 动态规划:如果把所有的子问题看成一棵树的话,动态规划自底向上,从叶子向根;构造子问题的解,对每一个子树的根,求出下面每一个叶子的值,推得根的值,最后得到一棵完整的树,根的值即为最优值;

    2 贪心最优解一定包含上一步的最优解,动态规划最优解不一定包含上一步的最优解;

    • 贪心:每一步的最优解一定包含上一步的最优解,上一步之前的最优解不作保留;

    • 动态规划:全局最优解不一定包含上一步的最优解,因此需要记录上一步的所有解;

    3 贪心不能保证全局最优,动态规划(本质是穷举法)能保证全局最优;

    4 贪心复杂度较低,动态规划复杂度较高;

    展开全文
  • 生物多样性概念

    千次阅读 2018-06-06 09:20:07
    1.生物多样物种多样是群落生物组成结构的...1943年,Williams在研究鳞翅目昆虫物种多样时,首次提出了”多样指数”的概念,之后大量有关群落物种多样概念、原理、及测度方法的论文和专著被发表,形成...

    1.生物多样性

    物种多样性是群落生物组成结构的重要指标,它不仅可以反映群落组织化水平,而且可以通过结构与功能的关系间接反映群落功能的特征。生物群落多样性研究始于本世纪初叶,当时的工作主要集中于群落中物种面积关系的探讨和物种多度关系的研究。1943年,Williams在研究鳞翅目昆虫物种多样性时,首次提出了”多样性指数”的概念,之后大量有关群落物种多样性的概念、原理、及测度方法的论文和专著被发表,形成了大量的物种多样性指数,一度给群落多样性的测度造成了一定混乱。自70年代以后,Whittaker(1972)、Pielou(1975)、Washington(1984)和Magurran(1988)等对生物群落多样性测度方法进行了比较全面的综述,对这一领域的发展起到了积极的推动作用。生物多样性通常包含三层含义,即生态系统多样性、物种多样性和遗传多样性。狭义的遗传多样性是指物种的种内个体或种群间的遗传(基因)变化,亦称为基因多样性。广义的遗传多样性是指地球上所有生物的遗传信息的总和。物种多样性是指一定区域内生物钟类(包括动物、植物、微生物)的丰富性,即物种水平的生物多样性及其变化,包括一定区域内生物区系的状况(如受威胁状况和特有性等)、形成、演化、分布格局及其维持机制等。生态系统多样性是指生物群落及其生态过程的多样性,以及生态系统的内生境差异、生态过程变化的多样性等。从目前来看,生物群落的物种多样性指数可分为α多样性指数、β多样性指数和γ多样性指数三类。

    α多样性指数包含两方面的含义:①群落所含物种的多寡,即物种丰富度;②群落中各个种的相对密度,即物种均匀度。β多样性指数可以定义为沿着环境梯度的变化物种替代的程度。不同群落或某环境梯度上不同点之间的共有种越少,β多样性越大。精确地测定β多样性具有重要的意义。这是因为:①它可以指示生境被物种隔离的程度;②β多样性的测定值可以用来比较不同地段的生境多样性;β多样性与α多样性一起构成了总体多样性或一定地段的生物异质性

    群落物种多样性是梯度变化的。群落物种多样性的变化特征是指群落组织水平上物种多样性的大小随某一生态因子梯度有规律的变化

    纬度梯度:从热带到两极随着纬度的增加,生物群落的物种多样性有逐渐减少的趋势。如北半球从南到北,随着纬度的增加,植物群落依次出现为热带雨林、亚热带常绿阔叶林、温带落叶阔叶林、寒温带针叶林、寒带苔原,伴随着植物群落有规律的变化,物种丰富度和多样性逐渐降低。

    海拔梯度:随着海拔的升高,在温度、水分、风力、光照和土壤等因子的综合作用下,生物群落表现出明显的垂直地带性分布规律,在大多数情况下物种多样性与海拔高度呈伏相关,即随着海拔高度的升高,群落物种多样性逐渐降低。如喜马拉雅山维管植物物种多样性的变化,就表现了这样的规律。

    环境梯度:群落物种多样性与环境梯度之间的关系,有的时候表现明显,而有的时候则表现不明显。如Gartlan(1986)研究发现土壤中P、Mg、K的水平与热带植物群落物种多样性之间存在着显著的关系。Gentry(1982)对植物群落物种多样性进行的研究表明,在新热带森林类型,物种多样性与年降雨量呈显著正相关,而在热带亚洲森林类型,两者则不存在相关关系。

    时间梯度:大多数研究表明,在群落演替的早期,随着演替的进展,物种多样性增加。在群落演替的后期当群落中出现非常强的优势种时,多样性会降低。

    2.生态系统稳定性

    生态系统的稳定性是指生态系统所具有的保持自身结构和功能相对稳定的能力,以及在受到一定的干扰后恢复到原来平衡状态的能力。它包括以下几个概念。

    1.抵抗力稳定性和恢复力稳定性 抵抗力也叫抗变能力,表示生态系统抵抗外界干扰和维持系统的结构和功能保持原状的能力。恢复力稳定性表示生态系统在受到外界干扰后恢复到原来状态的能力。

    2.局域稳定性和全域稳定性 局域稳定性表示生态系统在经受小的干扰后回到原状的能力。全域稳定性表示生态系统在经受一次大的干扰后恢复到原状的能力。对不同的生态系统来说,这两种稳定性可能有下列4种情况(图8-13):(1)局域稳定性和全域稳定性都低(图中以小球是否容易保持稳定来表示);(2)局域稳定性高,全域稳定性低;(3)局域稳定性低,全域稳定性高;(4)局域稳定性和全域稳定性都高。

    3.脆弱性和强壮性 能在环境条件改变不大的情况下保持稳定的生态系统称为脆弱的生态系统。能在环境变化范围很大的条件下保持稳定的生态系统称为强壮的生态系统

    3.生物的多样性导致稳定性

    在生物多样性与生态系统稳定性研究动态的基础上,从生物多样性和稳定性的概念出发,可以确定忽视多样性和稳定性的生物组织层次可能是造成观点纷争的根源之一。特定生物组织层次的稳定性可能更多地与该层次的多样性特征相关。探讨多样性和稳定性的关系应从不同的生物组织层次上进行。扰动是生态系统多样性与稳定性关系悖论中的重要因子,如果根据扰动的性质,把生态系统(或其他组织层次)区分为受非正常外力干扰和受环境因子时间异质性波动干扰 “ 类系统,稳定性的 (个内涵可以理解为:对于受非正常外力干扰的系统而言,抵抗力和恢复力是稳定性适宜的测度指标;对于受环境因子时间异质性波动干扰的系统而言,利用持久性和变异性衡量系统的稳定性则更具实际意义。结合对群落和种群层次多样性与稳定性相关机制的初步讨论:在特定的前提下,多样性可以导致稳定性。例如采用多样性理论和冗余理论对固沙植物群落稳定性机制进行论述.物种多样性的变化能很好地反映固沙植物群落的稳定性状态.在生物学各级水平都存在冗余,冗余是生命系统在长期的进化过程中逐渐形成的一种特性,其主要功能是确保生物个体和群体更好地适应极端环境、维持正常的生长发育和保持稳定,而且其功能只是在受到干扰时才明显地表现出来.削弱冗余,会导致在个体、种群或群落水平上产生补偿作用,以此来增加群落的功能.固沙植物群落的稳定程度主要取决于群落内冗余的数量和结构,冗余越多结构越复杂,群落越稳定.削弱固沙群落的根系冗余可获得生物量上的补偿,但使群落稳定性下降.多数生态学家认为,群落的多样性是群落稳定性的一个重要尺度,多样性高的群落,物种之间往往形成了比较复杂的相互关系,食物链和食物网更加趋于复杂,当面对来自外界环境的变化或群落内部种群的波动时,群落由于有一个较强大的反馈系统,从而可以得到较大的缓冲。从群落能量学的角度来看,多样性高的群落,能流途径更多一些,当某一条途径受到干扰被堵塞不通时,就会有其它的路线予以补充May(1973,1976)等生态学家认为,生物群落的波动是呈非线形的,复杂的自然生物群落常常是脆弱的,如热带雨林这一复杂的生物群落比温带森林更易遭受人类的干扰而不稳定。共栖的多物种群落,某物种的波动往往会牵连到整个群落。他们提出了多样性的产生是由于自然的扰动和演化两者联系的结果,环境的多变的不可测性使物种产生了繁殖与生活型的多样化。在群落多样性与稳定性的关系上,目前仍未定论。

    物种多样性在生物群落中的功能和作用

    1.有关物种在生物群落中作用的假说,物种以什么样的机制维持生物群落的稳定?这是一个非常重要的但是目前还仍然没有解决的生态学问题,而且是生物多样性与生物群落功能关系中的核心问题。目前有关物种在生态系统中作用的假说有下列4种。

    (1)冗余种假说(Redundancy species hypothesis) :生物群落保持正常功能需要有一个物种多样性的域值,低于这个域值群落的功能会受影响,高于这个域值则会有相当一部分物种的作用是冗余的(Walker 1992)。

    (2)铆钉假说(Rivethypothesis)铆钉假说的观点与冗余假说相反,认为生物群落中所有的物种对其功能的正常发挥都有贡献而且是不能互相替代的(Ehrlich,1981) ,正像由铆钉固定的复杂机器一样,任何一个铆钉的丢失都会使该机器的作用受到影响。

    (3)特异反应假说(Idiosyncratic response hypothesis)特异反应假说认为生物群落的功能随着物种多样性的变化而变化,但变化的强度和方向是不可预测的,因为这些物种的作用是复杂而多变的。

    (4)零假说(Null hypothesis)零假说认为生物群落功能与物种多样性无关,即物种的增减不影响生物群落功能的正常发挥。 2、概念与类型:上述4个假说中都没有对每个物种的作用程度做出明确的说明。在生物群落中不同物种的作用是有差别的。其中有一些物种的作用是至关重要的,它们的存在与否会影响到整个生物群落的结构和功能,这样的物种即称为关键种(Keystone species)或关键种组(Keystone group)。关键种的作用可能是直接的,也可能是间接的;可能是常见的,也可能是稀有的;可能是特异性(特化)的,也可能是普适性的。依功能或作用不同,可将关键种分为7类。关键种的鉴定目前比较成功的研究多在水域生态系统,而陆地生态系统的成功实例相对较少(Menge等,1994 )。

    3.功能群的划分及其意义

    为了更好地认识生物多样性与生物群落结构和功能的关系,有必要引入功能群的概念。功能群是具有相似的结构或功能的物种的集合,这些物种对生物群落具有相似的作用,其成员相互取代后对生物群落过程具有较小的影响。将生物群落中的物种分成不同的功能群的意义表现在:(1)使复杂的生物群落简化,有利于认识系统的结构和功能(2)弱化了物种的个别作用,从而强调了物种的集体作用。

    4.多样性稳定性的意义及其价值

    生物多样性是地球上生命长期进化的结果,更是人类赖以生存的物质基础。由于当今世界人口的高速增长,人类经济活动的不断加剧,生物多样性正面临着日益严重的威胁,其原因原因在于以下几点:(1)人口增加;(2)生境破坏;(3)环境污染;(4)人类大规模的迁移。除外界因素之外,物种本身的遗传特点,也往往促成了灭绝的发生。如某些种定居与食物链的高级位,还有一些种分布的范围十分有限,某些种散步和定居的能力很弱,它门对环境有特殊的要求,等等这些原因。通过对生物多样性稳定性的研究,从生物多样性的保护与持续利用的角度出发,很好的利用生物多样性具有的现实及其未来的社会经济价值,等等。随着生物多样性研究的不断深入,从以物种为中心转向一生态系统为重点,即从多样性的生物学研究向转向多样性的生态学研究,在大多数物种特化群落或营养级网络层次上认识种群和群落的多样性结构、功能和动态特征。这样将能使种群生物学和保护生物学与生态学的研究内容有机的联系起来,予以它们某种统一规律的认识。充分考虑生物多样性从个体至生态系统的多层次组织结构及其功能的重要性,从而深入了解生物多样性的产生、维持和濒危机制,以及生物多样性结构与动态变化过程的相互关系。

    本文转载自博客:http://blog.sina.com.cn/s/blog_49a65ebd010003vh.html 

    参考文献

    [1] 孙儒泳.动物生态学原理(第三版).北京师范大学出版社,2001.9. 

    [2] 林育真.生态学.科学出版社,2004. 

    [3] 人类发展与生存环境.中国环境科学出版社,2001.


    展开全文
  • UML基本概念——动态视图

    千次阅读 2020-08-23 23:50:20
    需要注意的是,动态视图不能够独立存在,它必须特指一个静态视图或UML元素,说明在静态视图规定的事物结构下它们的动态行为。本节讲述的动态视图包括活动图、状态图、时序图和协作图。 4.2.1 活动图 活动图描述了...

    内容来源:《Thinking in UML》第二版。仅供交流学习,若涉及版权,会立即删除。

    4.2 动态视图

    故名思义,动态视图是描述事物动态行为的。需要注意的是,动态视图不能够独立存在,它必须特指一个静态视图或UML元素,说明在静态视图规定的事物结构下它们的动态行为。本节讲述的动态视图包括活动图、状态图、时序图和协作图。

    4.2.1 活动图

    活动图描述了为了完成某一个目标需要做的活动以及这些活动的执行顺序。UML中有两个层面的活动图,一种用于描述用例场景,另一种用于描述对象交互。在正式介绍活动图之前,让我们先来讨论一下有关活动图的一些争议。活动图被引入UML中是有争议的,因为活动图实际上描述的是业务流程,是一种过程化的分析方法,很多人担心面向过程的活动图引入会导致面向对象的类职责的混乱,这种担心是有道理的。在1.1.3面向对象方法一节中我们讲过,在面向对象的眼中是没有业务流程这种东西的,所谓流程只不过是在某个外部力量推动下对象之间相互交流的一个过程,它只是“瞬时”的。如果从活动图的观点来描述业务,实际上是不能直接看到对象是如何发挥作用的。这样在观念上很容易导致对象独立性被破坏,例如有的设计者可能会试图得到一个从头到尾参与了整个业务流程的“对象”。

    但是,在UML中引入活动图可能也是无奈之举,因为在1.1.4面向对象的困难一节中我们提到过从现实世界映射到对象世界有着诸多困难。面向对象要求对象越独立、封装度越高越好,可是面向对象越纯粹,我们越难以理解这些对象将会干什么。正所谓上帝什么都能做,但其实他什么也没有做;纯粹的对象结构也许能做无数的事情,但实际上我们只需要明确其中的一件。我们面临着这样一个矛盾,既要保持面向对象观点中对象的独立性,又要保持现实世界中业务目标的过程化描述。活动图的引入解决了业务目标过程化描述,但也给对象分析造成了混乱。虽然如此,活动图在描述用例场景时仍然是十分有效的工具,关键还是建模者自己要避免被过程化的观点所困扰,而不必忌讳使用活动图。

    笔者要提示读者,在使用活动图时,要随时保持清醒的头脑,活动图只是我们用来描述业务目标的达成过程并借此来发现对象的工具,它不是我们的分析目标,也不是编程的依据,它只是对象的应用场景之一。我们使用活动图来描述用例场景,帮助我们认识问题领域,从问题领域中发现关键的对象,然后就应该把活动图中的流程忘掉,而专心研究关键对象的特性。最后,再来验证一下这些关键对象的某个交互结果是否的确能够达到用例场景所描述的业务目标。

    4.2.1.1 用例活动图

    4.2.1.2 对象活动图

    4.2.1.3 泳道

    4.2.1.4 业务场景建模

    4.2.1.5 用例场景建模

    4.2.2 状态图

    4.2.3 时序图

    时序图用于描述按时间顺序排列的对象之间的交互模式;它按照参与交互的对象所具有的“生命线”和它们相互发送的消息来显示这些对象。在时序图中包含对象和主角实例,以及说明它们如何交互的消息。时序图描述了在参与交互的对象中所发生的事件(从激活的角度来说明),以及这些对象如何通过相互发送消息进行通信。可以为用例事件流的各种不同形式制作时序图。以上是官方文档对时序图的定义。通常我们使用时序图来描述用例实现,通过贡献于该用例实现的对象之间的交互来说明用例是如何被对象实现的。使用时序图来描述用例实现是一种从现实世界到对象世界的映射方法,它对我们确定对象职责和接口有着显著的作用。而对象的核心就是职责和接口。时序图与协作图是可以互相转换的,与协作图不同的是,时序图强调消息事件的发生顺序,更方便于阐述事件流的过程;但是时序图却难以表达对象之间的关系。在4.1.2类图一节中我们提到过类有三个层次的观点:概念层、说明层和实现层,它们分别对应于业务建模阶段、概念建模阶段和设计建模阶段。相应的,也可以在这三个层次上分别对业务实体对象、分析类对象和设计类对象绘制时序图。

    下面就结合4.1.2类图一节中三个层次的静态类图来看看时序图如何应用于这三个层次,并且实现网上购物这一业务目标。相应的,三个层次的时序图是业务模型时序图、概念模型时序图和设计模型时序图。

    4.2.3.1 业务模型时序图

    业务模型时序图用于为领域模型中的业务实体交互建模,其目标是实现业务用例。在绘制业务实体时序图之前,你应当已经绘制了业务用例实现过程的活动图。在4.2.1.5用例场景建模一节中提到,活动图可以帮助我们发现业务实体,实际上,如果之前已经有了活动图再来绘制业务实体时序图时,你会发现有迹可循,非常容易。图4.18展示了图4.7所示业务实体如何实现网上购物过程的时序图。这个时序图对这些业务实体对象如何参与业务提供了非常直观的描述,从图中我们可以非常容易地分辨出对象的职责、生命周期和会话过程。对业务模型时序图的理解将有助于我们了解业务架构。

     ■ 对象表示参与交互的对象。

    每个对象都带有一条生命周期线,对象被激活(创建或者被引用)时,生命周期线上会出现一个长条(会话),表示对象的存在。

    ■ 生命周期线

    生命周期线表示对象的存在,当对象被激活(创建或者被引用)时,生命周期线上出现会话,表示对象参与了这个会话。

    ■ 消息

    消息由一个对象的生命周期线指向另一个对象的生命周期线。如果消息指到空白的生命周期线,将创建一个新的会话;如果消息指到已有的会话,表示该对象延续已有会话。与实际的编程环境相似,消息有许多不同的类型。[插图]为简单消息。简单消息适用于大多数情况。它不强调消息的类型,仅表示一个交互。一般情况下使用简单消息就足够了,除非在设计模型的类交互时需要强调消息类型时才使用其他消息类型。

    为返回消息。返回消息为源消息的返回体,而非新的消息。一般来说不需要为每个源消息都绘制返回消息,一方面因为默认情况下源消息都有返回,另一方面太多的返回消息会使图变得更复杂。

    为同步消息。同步消息表示发出消息的对象将停止所有后续动作一直等到接收消息方响应。同步消息将阻塞源消息对象的所有行为。同步消息最为常用,通常程序之间的方法调用都是同步消息。

    为限时消息。限时消息是同步消息的一种特殊情况。源消息对象发出消息后将等待响应一段时间,在限定时间内还没有响应时,源消息对象将取消阻塞状态而执行后续操作。限时消息也很常用,例如访问一个网站,在限定时间内没有响应时浏览器会显示“找不到指定网址”的信息。

    为异步消息。异步消息表示源消息对象发出消息后不等待响应,而可以继续执行其他操作。异步消息一般需要消息中间件的支持,如JMS、MQ等。Rose里还定义了其他一些类型的消息,但这里介绍的这些消息类型已经足够了。笔者建议,在建模过程尤其是业务和概念模型中没有必要花费时间在研究消息类型上。图形简洁才能更有表达力,太多的细节只会复杂化,相反不利于理解。

    ■ 会话

    会话表示一次交互,在会话过程中所有对象共享一个上下文环境。例如事务上下文、安全上下文等。

    ■ 销毁

    销毁绘制在生命周期线上,表示对象生命周期的终止。虽然示例图中绘制了,但销毁也没有必要强调。最后,绘制业务模型时序图时要注意:第一,时序图以达成业务目标为准则;第二,这个阶段处于业务阶段,使用的描述语言应当采用业务术语;第三,时序图表达的内容会对将来的分析设计带来帮助,但是相对于编码实现来讲由于太粗略而不能够作为依据。

    4.2.3.2 概念模型时序图

    概念阶段的时序图采用分析类来绘制,目标同样是实现业务用例。但是,由于分析类本身代表了系统原型,所以这个阶段的时序图已经带有计算机理解。概念用例时序图通常是依据业务模型场景图来绘制的,它将业务模型场景用分析类重新绘制一遍,这样,既保留了实际业务需求,又得到了计算机实现的基本理念。图4.19展示了图4.8所示的说明层类图的一个时序图片段,描述了分析类实现查询商品的过程。

            请注意对比图4.8,我们看到其中的计算机实现理念的引入。这时的时序图依稀已经有了实现的影子。实际上,分析类所展示出来的已经是系统实现的原型,在设计模型阶段要做的工作就是选择适合的实现方式来实现这个蓝图。

    4.2.3.3 设计模型时序图

    设计模型时序图使用设计类作为对象绘制。目标是实现概念模型中的某个事件流,一般以一个完整交互为单位,消息细致到方法级别。显然,在实际工作中我们很难为所有的交互都绘制时序图,那将是一个巨大的工作量。好在统一方法是讲究架构驱动的,并且近几年来不使用现成软件框架的软件项目已经很少了,所以笔者建议在设计模型阶段,只需要用框架中的关键类描述典型的交互场景即可,不需要为每一个交互都绘制时序图。例如我们只需要绘制通过框架来进行增删改查的事件流,具体的查询都遵循同样的编程模型,因此参考框架事件流即可,不需要一一绘制。

    为了保证软件实现满足需求,省略了大量设计模型时序图的同时,要求有更多的概念模型时序图,这样才能保留足够的信息来说明需求与实现之间的过渡。当然,与设计模型时序图相比,概念模型时序图需要处理的信息量要少得多,工作量自然也就少得多。图4.20展示了图4.9所示的实现层类图在J2EE架构下实现查询商品过程的片断。在这个例子中,所有的类和方法都与实际编程无异,已经可以看作是伪代码了。

    小结:时序图的三种应用场合是在建模过程中经常使用的动态视图。除了这些场合,在任何时候需要表达对象间的交互时,或者想分析对象的职责和接口时都可以使用时序图。特别的,在建立软件架构时,为了说明架构中的关键对象交互场景,或者为了说明应用程序如何使用架构的编程模型,也可以使用时序图来说明。这些时序图可以作为架构文档的一部分,也可用作编程规范和指南使用。甚至,在非正式建模工作中,例如一时不能确定如何设计接口,或者不能确定设计是否合理时都可以用时序图帮助分析。时序图是十分有用的工具,掌握并随时使用它是很好的分析设计习惯。接下来,我们将学习最后一种动态视图:协作图。

    4.2.4 协作图

    协作图描述了对象间交互的一种模式;它通过对象之间的连接和它们相互发送的消息来显示参与交互的对象。协作图中可以有对象和主角实例,以及描述它们之间关系和交互的连接和消息。通过说明对象间如何通过互相发送消息来实现通信,协作图描述了参与对象中发生的情况。可以为用例事件流的每一个变化形式制作一个协作图。与时序图的作用相似,协作图用于显示对象之间如何进行交互以执行特定用例或用例中特定部分的行为,协作图的建模结果用于获取对象的职责和接口。与时序图不同的是,协作图因为展示了对象间的关系,使得它更适用于获得对对象结构的理解,而时序图则更适于获得对于调用过程的理解。不过在本质上,它们是可以互换的。

    同样的,通常我们也使用协作图来描述用例实现,通过贡献于该用例实现的对象之间的交互来说明用例是如何被对象实现的。也同样可以针对概念层、说明层和实现层分别对业务实体对象、分析类对象和设计类对象绘制协作图。如果你更在意对象间的结构关系,请选择使用协作图;如果你更在意对象交互的执行顺序,则请选择使用时序图。下面将使用与时序图相同的例子来描述协作图如何绘制。

    4.2.4.1 业务模型协作图

    业务模型协作图同样采用业务实体来绘制,目标也是实现用例场景。不过有时候协作图并不要求实现完整的场景,只需要将影响对象的关键消息绘制出来即可。因为协作图更在意的是对象的结构及其相互的影响。协作图(图4.21)展示了与时序图(图4.18)同样的信息,请读者体会它们之间在表达上不同的视觉感受和蕴含的侧面意义。

    协作图与时序图相比,对象间的结构一目了然,并且很容易就能知道哪些消息影响了对象(或者说对象需要提供哪些接口)。不过虽然用数字标明了消息的顺序,从图中我们还是很难看出执行的顺序,更无法了解一次完整的会话过程。协作图和时序图展示着对象不同的方面。 

    ■ 对象表示参与协作的对象。对象可以指定它的类,也可以直接用空对象表示,在将来再指定它的类。

    ■ 对象关联连接两个对象,表示两者的关联。与类关系不同,协作图中的对象关联是临时关联,即只在本次交互中存在;而类关系是永久关联,例如继承关系不论在什么情况下都是存在的。Rose中还定义了对象关联的可见属性,它们是:[插图]:域(Field)可见。表示关联的对象在交互域内是一直可见的。这有些类似于Java中的包内可见的性质。[插图]:参数(Parameters)可见。表示关联的对象仅在交互过程中可见,它们是通过参数传递产生关联的。[插图]:本地(Local)可见。表示关联的对象在本地可见。本地的概念类似于指对象在同一个JVM(Java虚拟机)或者同一个Server中,或者同一个进程中是可见的。[插图]:全局(Global)可见。表示关联的对象是全局可见的。全局的概念类似于指对象在整个分布式应用程序中,或者一个服务器群集中,或者整个万维网中是可见的。

    ■ 消息协作图中的消息与时序图中的消息定义完全一样。请参看4.2.3.1业务模型时序图一节中关于消息的解释部分。不过在Rose中并不能展示不同消息类型的不同符号,消息类型在打开消息属性对话框时才能看到。

    ■ 消息序号其实消息序号也是消息的一部分,这里分开讲只是为了强调。序号表明消息传递的先后顺序。在Rose中这个序号是由Rose自动维护的,并且不能够手工调整。正因为如此,如果要在已经完成的图中插入一条消息,基本上需要把整个图重画一遍来重新调整顺序。遇到这种情况时,“必杀技”就派上用场了,我们可以将协作图转化成时序图,在时序图中插入消息,再转换回协作图。

    4.2.4.2 概念模型协作图与时序图相同,

    概念阶段的协作图采用分析类来绘制,目标是实现业务用例。同样这个阶段的协作图已经带有计算机理解。图4.22展示了与时序图(图4.19)表达内容完全相同的协作图。读者可参照理解,这里就不再赘述了。

     4.2.4.3 设计模型协作图与时序图相同,

    设计模型协作图使用设计类为对象来绘制。目标是实现概念模型中的某个事件流,一般以一个完整交互为单位,消息细致到方法级别。协作图(图4.23)展示了与时序图(图4.20)完全相同的信息,读者可参照理解,不再赘述。

     小结:到此为止UML核心视图中的动态视图就学习完了。在动态视图中,我们学习了活动图、状态图、时序图和协作图,这些视图各有其适用的场合。笔者在本章的学习过程中按适用场合进行了一些讲解,不过肯定不能覆盖所有可能的情况。我们知道静态视图表达事物的结构性观点,而动态视图则表达事物的行为性观点。一个好的建模,结构性和行为性缺一不可,而且要相得益彰。既要说明该事物长得像什么样子,还要说明该事物应该怎么用。不论是静态视图还是动态视图都是建模的重要工具,熟练掌握它们除了学习基本概念之外,诀窍就是多用。这些视图不但可以用在软件建模过程中,也可以用在分析现实生活中的一些事例。只要愿意,总可以从生活中找到非常多的例子来练习。相对于掌握工具,理解其背后的本质才是更重要的。而这些理解是只可意会不能言传的,尽管作者作了以上的努力,仍然不能保证读者能深刻理解。希望大家多学多用,达到手中无剑心中有剑的层次。下一章,我们将开始学习UML的核心模型。预习:简单的理解,其实一个模型就是一堆有意义的静态图和动态图组合在一起,表达了一个有意义的中心思想。因此,学习模型最重要的不是死记硬背一个模型需要做什么,而是需要理解模型的中心思想。

     

     

     

    展开全文
  • 教你彻底学会动态规划——入门篇

    万次阅读 多人点赞 2015-08-11 13:26:41
    网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以...
  • 1.静态资源和动态资源的概念 简单来说: 静态资源:一般客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来。 动态资源:一般客户端请求的动态资源,先将请求...
  • Java多线程——基本概念

    万次阅读 多人点赞 2019-10-23 10:36:25
    线程和多线程 ...进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态概念 主线程:(每个Java程序都有一个...
  • Java基本概念:多态

    千次阅读 2021-03-01 06:16:25
    一、简介描述:多态是面向对象编程中的一个重要特性,主要是用来实现动态联编的。换句话说,就是程序的最终状态只有在执行过程中才被决定,而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活和扩展...
  • 动态规划(一):动态规划的基本概念和基本方程

    万次阅读 多人点赞 2016-11-12 19:33:37
    参考资料:《运筹学》(第三版) 清华大学出版社 ISBN:978-7-302-10214-4 戳我下载动态规划的应用场景等等就不介绍了,后面会写一些能用动态规划方法解决的常见问题。这一部分基本抄书上到1.1 多阶段决策问题及实例...
  • 2.5.干扰与景观异质、景观多样等关系 2.6干扰的生态意义和社会意义 3. 空间异质 (一)非生物环境的空间异质 (二)植物空间异质 4.景观多样 4.1概述 4.2生物多样 4.3描述指标 5. 景观连接度 1....
  • 一文搞懂常用的网络概念:域名、动态IP、DNS、DDNS

    千次阅读 多人点赞 2020-03-31 11:32:43
    网络通讯概念扫盲
  • 概念漂移简介

    千次阅读 2020-08-10 15:03:44
    本文在总结文献的基础上进行一些个人的看法和分析。主要分为概念漂移的产生背景,概念漂移分类,概念漂移相关技术以及概念漂移的应用领域。
  • c++语言中的动态性

    千次阅读 2012-03-14 13:54:25
    c++语言中的动态性: 一 概念:  动态性就是指在程序在运行的时候才能确定具体的功能;在c++中的动态性具体体现为类中的虚函数;虚基类;动态联编和多态性。 1.1 虚函数  虚函数就是在类中函数的前面...
  • 动态地磅的原理及发展

    千次阅读 2021-01-17 16:42:34
    动态地磅的原理及发展发布时间:17/12/28来源:访问次数:4954文章介绍了动态地磅的结构和工作原理,针对动态地磅的分类做了全面的概述,分别对不同的动态地磅做了对比 及详细的阐述,说明选择和使用动态地磅的注意...
  • 对于较复杂的问题在选择状态、决策、确定状态转移规律等方面需要丰富的想象力和灵活的技巧,这就带来了应用上的局限。 参考 动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。 线性动规:...
  • 《操作系统》_考研复试_概念

    千次阅读 多人点赞 2020-04-25 17:55:12
    前言: 本文作为本人的考研复试收尾笔记,先梳理全面精炼的基本知识,文末会附加我自己整理加搜集的重点面试概念题,大家可以用来自测,看是否真正掌握,如果对大家有帮助,希望大家点赞哦~(^▽ ^)
  • Android MVP(三)内存泄漏分析与动态代理

    万次阅读 多人点赞 2019-07-07 16:45:02
    ),我们讲到了如何封装一个 BaseMVP 基类,使用这个模板,可以避免我们写很多重复的代码以及一些必要的处理,避免发生漏写的错误,还有同样的代码写多了也肯定很烦。不过,从上篇的文章的 BaseMVP 封装来看,还是...
  • Java:Java静态多态动态多态

    千次阅读 2014-10-11 17:18:08
    动态多态指在运行中才能动态确定操作指针所指的对象,主要通过虚函数和重写来实现。 java 的多态机制遵循一个原则:当父类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员...
  • 面向对象基本概念

    万次阅读 多人点赞 2019-02-06 21:56:15
    面向对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体...对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。 面向对象编程(OOP:object-orie...
  • 动态规划的基本概念和最优化原理

    万次阅读 2015-12-18 15:04:06
    § 2 动态规划的基本概念和最优化原理   多阶段决策过程的特点是每个阶段都要进行决策,具有n个阶段的决策过程的策略是由n个相继进行的阶段决策构成的决策序列。由于前阶段的终止状态又是后一阶段的初始...
  • 数据库建模-概念模型建模(E-R图)

    万次阅读 2019-11-16 22:06:02
    目录数据库建模-概念模型建立面向对象模型与数据库关系模型两种模型的关系中间件概念数据模型(CDM)实体及属性实体属性联系一对一双向关系一对一单向关系一对多(等效多对一)多对多域(Domain )PowerDesigner建立概念...
  • 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,...
  • 数据库概念总结(期末考试)

    千次阅读 2021-12-03 23:17:12
    6、数据模型是严格定义的概念的集合,通常由三部分组成:数据结构(描述系统的静态特性)、数据操作(描述系统的动态特性)、完整约束(描述系统中数据的制约和依存规则)。 1)数据结构描述了系统的静态特性 ...
  • 网站基本概念

    千次阅读 2020-09-11 22:18:06
    文章目录 网站基本概念 网站 服务器 IP 域名 DNS 端口 静态网站 动态网站
  • 分布式概念

    千次阅读 2019-12-11 15:43:12
    复用高,例如:所有的产品都可以使用该系统作为用户系统,无需重复开发。 架构演进 架构演进一: 早期雏形 特征:应用程序主要做静态文件读取,返回内容给浏览器。 架构演进二: 数据库开发(LAMP特长) 特征:应用...
  • AOP概念及作用详细解释

    万次阅读 多人点赞 2022-03-20 15:59:51
    今天学习spring的时候接触到一个新的知识以及概念AOP,老师当时讲这个知识点的时候,并没有讲太多关于这方面的知识,我们所学习到的知识侧重于应用,所以对这一块的理论知识是有一点缺少,以至于小编在学习完AOP之后...
  • Flink流计算中SQL表的概念和原理

    千次阅读 2018-12-22 15:02:57
    文章目录前言动态表和动态查询的概念动态表的时间属性引用 前言 Fink在新发布的1.7版本中,不断完善和加强了SQL&Table API方面的功能支持。这使得在流计算过程中,用户同样能够运用熟悉的SQL语句来做数据...
  • 概念漂移

    千次阅读 2016-11-27 11:32:51
    大数据具有规模(volume)、多样(variety)、高速(velocity)和准确(veracity)四个特点,其前期研究工作主要集中在规模和多样上展开,而目前广泛存在并应用的数据是像金融、交通等场景下产生的流式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 612,394
精华内容 244,957
关键字:

动态性的概念