MENU

时序图的学习笔记

时序图(Sequence Diagram),亦称为序列图或循序图,是一种UML行为图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。via: wiki

简介(Brief introduction)

时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图

时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图描述了类以及类之间的交换以完成的期望行为的消息, 时序图中每条消息都代表了类的一个操作 或者 引起状态机改变的触发事件

时序图表示 : 参与交互的对象在时序图顶端水平排列, 每个对象的底端绘制了一条垂直虚线, 对象A像对象B发送消息, 用一条带箭头的实线表示, 该实线起始于对象A底部的虚线, 终止于对象B底部的虚线; 实线箭头水平放置, 越靠近顶端越早被发送

时序图轨迹 : 时序图提供了随时间推移的, 清晰的 可视化的轨迹

时序图元素(Sequence Diagram Elements)

时序图中包括的建模元素主要有:对象(Object), 生命线(Lifeline), 激活(Activation), 消息(Message)等等

对象(Object)

对象 : 时序图中的对象在交互中扮演的角色就是对象

对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线

对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建

处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了
不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的

生命线(Lifeline)

生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线

生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间

对象的生命线 : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标

激活(Activation)

激活(Activation) : 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务

去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象

激活的表示 : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条

激活去激活的时机 :

激活 : 对象激活是在激活条的顶部激活
去激活 : 激活条的底部去激活, 通常发生在一个消息离开对象生命线

消息(Message)

消息概念 : 定义 交互 和 协作 中 交换信息 的类, 对 对象之间的 通信内容 建模

消息动作 :

动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过 发送 和 接收 消息 进行通信;
产生结果 : 消息可以触发操作, 唤起信号, 或使目标对象创建 或 销毁
消息的异步和同步通信 :

异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的 命名的 对象间的异步通信
同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信
时序图和协作图中消息的区别 : 时序图中的消息强调顺序, 协作图中的消息强调交换消息的对象间的关系

参考

www.ibm.com/developerworks/cn/rational/rationaledge/content/feb05/bell/3101.html

blog.csdn.net/shulianghan/article/details/17927131

design-patterns.readthedocs.org/zh_CN/latest/read_uml.html

简单剖析用户请求响应过程

从浏览器向一个特定的URL发送HTTP请求开始,到浏览器接收到服务器的返回结果,这段过程所花费的时间就是用户的请求响应时间。

该请求过程可以分为四个阶段:
1、建立连接;
2、发送请求;
3、返回响应;
4、关闭连接。

如下图所示:
3499483059.png
请求过程看着很简单,而且往往是瞬间完成的,但是在实际执行中是经历很多的步骤。整个过程可以做以下的划分:

1、阻塞时间:包括所有的预处理的时间。比如Cache查找和等待网络连接的时间。
当浏览器向服务器发出HTTP请求时,浏览器会首先查找在缓存(Cache)中是否已经有所需要的资源。如果缓存中存在所需的资源而且是可用的,则使用缓存中的资源,避免了一次HTTP请求;如果缓存中不存在所需的资源,则需要连接服务器,在HTTP/1.1协议下,网络连接是需要排队等待直到这个网络连接可用,所以就造成等待网络连接的时间消耗,我们在浏览多图片的网站时,图片迟迟还未加载出来就是在等待连接可用。

2、连接时间:指创建TCP连接到服务器或者代理服务器所花费的时间。
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的。HTTP是比TCP更高层次的应用层协议,由于规则,只能在底层次协议连接建立之后才能进行更高层协议的连接。因此需要首先完成TCP连接建立,一般TCP连接的端口是80。如果是要建立一个HTTPS的安全连接,那么还需要一个SSL握手过程,此时Keep-Alive连接就会被经常用到,用于保存请求连接,以免多次重复建立连接。

3、发送时间:指发送HTTP请求到服务器的时间。
这个时间长短取决于该请求发送的数据量的大小,例如,使用POST方式则会需要较长的发送时间。

4、等待时间:指花费在等待服务器响应消息的空闲时间。
这个值包括网络延迟和服务器处理请求的时间,同时它也无法通过前端优化方法减少。

5、接收时间:指花费在从服务器读取响应消息的时间。
这个值会受到从服务器返回的消息内容的大小、网络带宽和是否使用HTTP压缩等因素影响。

6、缓存读取:指花费在从浏览器缓存中读取内容或者304响应的时间。
304响应是与条件GET请求相关联的。如果客户端已经完成一个有条件的请求并且请求是允许的,但这个文件并没有改变,服务器应该返回304状态码。304状态码一定不能包含信息主体,通常通过一个头字段后的第一个空行结束。

关于极限运动

电影《极盗者》(Point Braek)里的尾崎八项其实是一道哲学问题的体育式回答,既通过不断触及point break来实现一种精神上的超然,达到一种“超我”之境。

极限运动不仅是体育中的极限运动,还包括智力的极限运动和念力的极限运动。

而且那些从事体育极限运动的人也并不是在使用蛮力,都是有律可循,有科学规律的。

那些打破传统社交网站思路创造新的社交媒体的人,那些将自己关在单独的房子里半年不出去的行为艺术家,那些挑战更快速度还原魔方的人,那些些挑战记忆力的人。。。。

都是从事极限运动的人,基于知识、智慧和勇气,敢于超越、挑战和创新的人所做的那些事情都能被称作是极限运动。

练习极限运动,技术上的提升还是次要的,这些极限运动能培养我们面对困难的意志力和对生活的热情。

——这些思想和经验,不是读几本书就能学到了,需要你亲身去体味其中的苦与痛,经受身体与精神的摧残才能做出一个动作,做出一个动作能得到什么,可能什么也得不到,甚至会失去生命,但这种做成之后的成就感就是生命的最高体现,那是对自我价值的最高认同。

不断的超越自己,这种超越不会影响别人的生活,哪怕自己会有潜在的受伤,这就是极限运动。

如果你不断挑战,超越了当下,而你的内心足够强大,身体素质跟得上,我相信,你会越来越强,也会越来越挑战自己的极限。
虽不能至,心向往之。

有机会,有胆量,大家尽量在一生中尝试一下这样的极限运动,其实并没有你们所想象的那么“极限”,我们也都是丢到人堆里不起眼的普通人而已。但是要坚持,那就真的需要深沉的爱了。但是,不试试,谁知道呢?