学习
实践
活动
专区
工具
TVP
写文章

状态机

这篇文章并不刻意介绍状态机的学术概念,只想谈谈状态机的实际运用。如果想看系统性的学术介绍的话,可以查看百度百科。 百度百科:状态机 应用场景 同学们在工作中,有没有遇到过类似这样的代码。 状态机模式就是用于处理这样一种复杂的逻辑判断结构的设计模式。 结构分析 在实现状态机时: 一个条件分支可以认为是一种状态(state)。 以上也就是状态机的四大概念:state、event、action、transition。 用法示例 假如业务想要做一个下滑翻屏的 Swiper 页面,每一屏都有不同的内容和动画。 为了提高性能,我们希望用户进入该屏时,再播放该屏的动画,此时就可以使用状态机来实现这一场景。

22220

Spring状态机

有限状态机简称就是状态机,因为一般的状态机的状态都是离散和可举的,即为有限,所以后面的介绍都不加有限二字。状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态。 所以状态机会包含以下几个重要的元素: State:状态。一个标准的状态机最少包含两个状态:初始和终态。初态是状态机初始化后所处的状态,而终态顾名思义就是状态机结束时所处的状态。 标准的状态机还会涉及到一些中间态,存在中间态的状态机流程就会比较复杂(用处也不是特别大,而且可以通过其他方式实现),所以在目标实现的状态机里不会引入这个概念。 Event:事件。 还有中描述叫Trigger,表达的意思都一样,就是要执行某个操作的触发器或口令:当状态机处于某个状态时,只有外界告诉状态机要干什么事情的时候,状态机才会去执行具体的行为,来完成外界想要它完成的操作。

1.2K30
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器7.33元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    (有限)状态机

    基础 状态机是最基本的设计模式。 而我们常常说的状态机指有限状态机,缩写是FSM(Finite State Machine)。 无限状态机仅仅是理论上存在的概念,比如,把1/3变成一个状态机的话,那这个状态就是无限循环了,实际上没啥实际的应用意义。 我们常说的状态机指有限状态机。 不夸张的说,状态机模型是世界运行的基础,大脑做的决策推演,在火星上运行的祝融号,计算机软件的底层设计,游戏中的沙雕AI,其底层逻辑都是状态机。 有限状态机的定义:有限个状态及在这些状态之间的转移和动作等行为的数学模型;在计算机科学中,状态机的关键要素是状态和状态的转移。 回到程序设计的话题,要设计一个通用的状态机程序,只用switch,case肯定是不够的; 当然,不管是用哪种语言,只要把握住状态机的三个核心要素即可,即: 状态(state ):当前处于哪种状态

    84320

    状态机的实现探讨

    (译)状态机的实现探讨 原文链接地址:http://drdobbs.com/cpp/184401236?pgno=1          实现一个状态机很容易,但是实现一个好的状态机却不简单。 一般实现状态机的时候会有如下的实现代码: switch (state_)          case A:                    do_A();          case B:                    这种方式挺万金油的,所以在实现状态机的时候,完全可以借鉴一下。 Context:          假设场景如下:实现任务Task,它是一个状态机,其状态变化如图: ? ,任何状态机的实现都可以按照此模板按部就班的实现. StateMachine 的实现;此实现为通用的逻辑模板,任何状态机的实现都可以套用此模板。

    1.1K50

    fsm:有限状态机

    有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 有限状态机是在自动机理论和计算理论中研究的一类自动机。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。 ? 有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。 它有三个特征: 状态总数(state)是有限的。 任一时刻,只处在一种状态之中。 现实世界中存在大量具有有限个状态的系统:钟表系统、电梯系统、交通信号灯系统、通信协议系统、正则表达式、硬件电路系统设计、软件工程,编译器等,有限状态机的概念就是来自于现实世界中的这些有限系统。 ?

    58920

    设计模式-状态机模式

    模型图 [image.png] 涉及的角色及说明 何为有限状态机 有限状态机在维基百科中的解释是: 有限状态机( 英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 咋一看好像很虚幻,我们先看一下地铁运营的例子: [image.png] 站在有限状态机的角度来看,可以抽象如下几个关键点: 状态(State) 即地铁所处的状态,同上述例子的:“行进中” 在状态机初始化时创建 [image.png] 说明: 状态A 有三种动作,每个动作都是由某个具体事件触发, 一个事件只能触发一个动作 事件 public 每个事件都有注册事件监听程序 [image.png] 借鉴 什么场景适合使用状态机模式?

    1.9K00

    简单的状态机入门!

    所以今天的文章只是带大家入门和了解一下状态机,等你真正在工作当中有遇到这个状态机作为开发需要的话,你再去深入研究。 一、什么是状态机? 1、有限状态机: 常说的状态机是有限状态机FSM(Finite State Machine)。 2、考虑状态机的关键点: 从刚才的定义来看,我们只要抓住状态机的关键点来理解就行: 1、外部输入 2、当前状态 3、下一个状态 二、两种状态机类型: (1)Moore型状态机特点是:输出只与当前状态有关 状态机接收到一个输入信号需要跳转到下一个状态时,状态机综合考虑2个条件(当前状态、输入值)后才决定跳转到哪个状态。 三、状态机的常见用途: (1)电路设计中广泛使用了状态机思想。 五、实战例子: 开锁状态机

    17410

    ‘SHIT’上最全有限状态机设计研究(一)-状态机介绍

    本系列主要针对有限状态机进行分析和设计,其中主要包括两部分:时钟同步状态机的分析和时钟同步状态机的设计,预计会有五篇文章进行展开,其中介绍一篇,分析和设计分别有两篇,每一部分都会有相应的实例。 ---- ‘SHIT’上最全有限状态机设计研究(一)-状态机介绍 ‘SHIT’上最全有限状态机设计研究(二)-时钟同步状态机分析1 ‘SHIT’上最全有限状态机设计研究(三)-时钟同步状态机分析2 ‘ SHIT’上最全有限状态机设计研究(四)-时钟同步状态机设计1 ‘SHIT’上最全有限状态机设计研究(五)-时钟同步状态机设计2 ---- FSM介绍   有限状态机(FSM,Finite State 状态机按是否和现态有关分为输出是现态的函数的 Moore 型状态机和输出是现态和输入的函数的 Mealy 型状态机。具体如图2和图3所示。 ?          对于状态机另一个需要考虑的就是状态机编码,在表1.1中,列出了几个状态机编码的编码方式,其中二进制码和格雷码是压缩码形式,具体优缺点如下:(1)独热编码。

    72520

    从零开始的状态机漫谈(2)——switch:你的状态机初恋

    所以说,与上述情况类似,市面上不少关于状态机的说法其实都是“有待商榷”、甚至是“错误的”,比如: 状态机天然的是非阻塞代码; 因为状态机经常切换,因此实时性好; 状态机经常切换,没法以最快的速度响应事件 ,所以实时性差; 状态机执行效率低下; 状态机执行效率高; 状态机占用代码空间大; 状态机占用资源小,适合资源有限的小单片机; 任何状态机都可以翻译成普通的RTOS任务(注意,这里的说法强调的不是不是状态机代码在 这里的要点是——以上说法并不是“非黑即白”的,而是来源于某一些具体的状态机翻译方式,错就错在把某一种状态机翻译方式所具有的优点/缺点当成了整个状态机固有的优点/缺点——脱离了具体的状态机翻译方式,从而导致了 从状态机调用者的角度来看,既然我们告诉TA状态机函数是非阻塞的,那么用户最关心的最基本问题恐怕就是: 状态机是否执行完成了? 状态机有没有遇到什么自己不能处理的错误? 对此我要说说我的看法: 首先,应该尽最大可能避免从状态机外部复位状态机,或者说,状态机的生命周期应该掌控在自己手里。

    57710

    闲聊有限状态机

    什么是有限状态机 有限状态机概念 有限状态机简称就是状态机(Finite-state machine,FSM),因为一般的状态机的状态都是离散和可举的,即为有限,所以后面的介绍都不加有限二字。 通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态。 所以状态机会包含以下几个重要的元素: State:状态。一个标准的状态机最少包含两个状态:初始和终态。初态是状态机初始化后所处的状态,而终态顾名思义就是状态机结束时所处的状态。 (我们最终实现的状态机,会把初态和终态都当做一个流状态来对待)。 说了这么多,状态机能干什么?状态机主要的应用场景就是流程控制。 目标状态机功能介绍 状态机的定义:通过定义State,Event,Action,Transition来实现状态机的流转,摒弃标准状态机中那些较复杂的概念(通过其他方式来实现所谓的较复杂的操作) 状态持久化

    22430

    有限状态机模型

    在阅读harbor源码时,在jobservice代码中,发现实现了一个有限状态机。状态管理在系统设计中常被使用。通过实现它,可以方便的对程序的状态进行管理。状态在现实生活中,有很多存在的例子。 状态机 有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 状态是离散的存在 对状态机进行抽象,可以归纳出以下属性: 1. 当前的状态 2. 事件 3. 行为 // 有限状态机数据结构 type FSM struct { mu sync.Mutex // 排他锁 state ,接下来,我们来实现这个状态机的方法,使得状态机能被外部使用。

    1.3K10

    Openssl状态机的实现

    状态机需要针对约定好的加密算法按照一定的步骤执行。所以需要状态机保存握手过程中的参数。 二、状态机是什么 简单地说,状态机保存Ssl握手需要一些消息处理函数,和算法函数来解析消息,执行加解密操作。 所以一个状态机是在读写函数不断切换。消息状态机如果不按正常的流程走,就形成了状态机的异常或者遭受到了安全攻击。以下的状态机模型是基于最新的openssl 1.1.1版本得出。 ](5) 2.2、写状态机 写的状态机是由消息流状态机调用,写状态机调用结束后有两种返回状态:SUB_STATE_FINISHED或者SUB_STATE_END_HANDSHAKE。 SUB_STATE_FINISHED表明此次写状态机调用结束,写状态机完成必要的状态迁移或者发送操作,控制权转交给消息流状态机,由消息流状态机决定下个操作。 三、Openssl握手状态 这些消息流状态机、写状态机、读状态机共同完成了TLS握手过程。

    1.5K30

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 人工智能

      人工智能

      提供全球领先的人脸识别、文字识别、图像识别、语音技术、NLP、人工智能服务平台等多项人工智能技术。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券