首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏裸机思维

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

    ,所以实时性差; 状态机执行效率低下; 状态机执行效率高; 状态机占用代码空间大; 状态机占用资源小,适合资源有限的小单片机; 任何状态机都可以翻译成普通的RTOS任务(注意,这里的说法强调的不是不是状态机代码在 从状态机调用者的角度来看,既然我们告诉TA状态机函数是非阻塞的,那么用户最关心的最基本问题恐怕就是: 状态机是否执行完成了? 状态机有没有遇到什么自己不能处理的错误? < fsm on-going fsm_rt_wait_for_obj = 2, //! < 执行状态跃迁 执行对应的跃迁动作 } else if (返回值 满足 跃迁条件2) { s_tState = XXXXX; //! 对此我要说说我的看法: 首先,应该尽最大可能避免从状态机外部复位状态机,或者说,状态机的生命周期应该掌控在自己手里。

    2.3K11发布于 2021-03-10
  • 来自专栏OpenFPGA

    ‘SHIT’上最全有限状态机设计研究(三)-时钟同步状态机分析2

    本系列主要针对有限状态机进行分析和设计,其中主要包括两部分:时钟同步状态机的分析和时钟同步状态机的设计,预计会有五篇文章进行展开,其中介绍一篇,分析和设计分别有两篇,每一部分都会有相应的实例。 ---- 时钟同步状态机分析步骤 ? ? 1. Derive excitation equation from the circuit diagram (Di = …) (分析出激励方程Di = …) 2.

    57620发布于 2020-06-30
  • 来自专栏OpenFPGA

    ‘SHIT’上最全有限状态机设计研究(五)-时钟同步状态机设计2

    本系列主要针对有限状态机进行分析和设计,其中主要包括两部分:时钟同步状态机的分析和时钟同步状态机的设计,预计会有五篇文章进行展开,其中介绍一篇,分析和设计分别有两篇,每一部分都会有相应的实例。 ---- 时钟同步状态机设计(二)序列检测器 电路规则如下: 电路检测到输入端连续出现1101序列,输出为1。 第二步,State minimization(状态化简) Identify equivalent states, (识别等价状态) PS:等价状态–>如果两个状态:1)在所有输入组合下,都产生相同的输出;2

    80810发布于 2020-06-30
  • 来自专栏lonelydawn的前端猿区

    状态机

    这篇文章并不刻意介绍状态机的学术概念,只想谈谈状态机的实际运用。如果想看系统性的学术介绍的话,可以查看百度百科。 百度百科:状态机 应用场景 同学们在工作中,有没有遇到过类似这样的代码。 状态机模式就是用于处理这样一种复杂的逻辑判断结构的设计模式。 结构分析 在实现状态机时: 一个条件分支可以认为是一种状态(state)。 为了提高性能,我们希望用户进入该屏时,再播放该屏的动画,此时就可以使用状态机来实现这一场景。 MovieActionState1 { constructor () {} update () { // Action: 第一屏动画 } } class MovieActionState2 nowState; // 现态 constructor () { this.actionState1 = new MovieActionState1() this.actionState2

    84020发布于 2021-09-26
  • 来自专栏后端技术学习

    状态机

    一、如何实现一个状态机? 首先需要考虑涉及到哪些状态节点和哪些事件,如何方便状态节点的获取、状态节点如何串联起来呢?串联的方式下,如何拿到下一个状态节点?如果基于角色,如何实现? 1)相关状态初始化,比如:STATE1, STATE2, STATE3, STATE4 2)相关事件:比如:EVENT1, EVENT2, EVENT3, EVENT4, INTERNAL_EVENT : 构建状态机 注册状态机 展示状态机 展示状态机uml 节点操作: 基于node的数据结构进行构建,配合使用from、to、condtion、link with设置对应的布局 使用状态的步骤: 创建 操作,fire的过程中拿到下一个状态节点setNextState(source,request) 二、状态机信息流程 可以参考COLA里面的test,可以看到COLA的具体代码实现。 三、展示状态机信息效果 总体来说cola的状态机还是蛮实用的。 基于cola的状态机还可以实现复杂的状态-事件流转。如下图所示: 四、状态机的使用场景 审批流程、订单状态流转等。

    1.6K20编辑于 2023-02-28
  • 来自专栏算法之名

    Spring状态机

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

    2.1K30发布于 2020-06-02
  • 来自专栏趣Python

    (有限)状态机

    无限状态机仅仅是理论上存在的概念,比如,把1/3变成一个状态机的话,那这个状态就是无限循环了,实际上没啥实际的应用意义。 我们常说的状态机指有限状态机。 按照输入输出关系,状态机模型有2个,分别是Moore模型(发明者:Edward Moore 1956)和Mealy模型(发明者:George H. STATE_2, NULL}, {STATE_2, EVENT_INPUT_7, STATE_7, unlock}, }; #define PASSWORD_STATES_COUNT sizeof( :'_2', 'source': '2', 'dest': '7'}, {'trigger':'_7', 'source': '7', 'dest': 'unlock'}, ] class ) print(model.state) model._7() print(model.state) 运行结果: >>> 9 5 2 7 unlock >>> 掌握了核心思想,设计一个状态机的通用程序并不是很复杂的事情

    2.8K20发布于 2021-09-10
  • ASIO 状态机

    ASIO状态机的工作原理ASIO状态机通过定义一系列的状态和状态转换来管理音频流的生命周期。 停止状态:当音频流需要停止时,ASIO状态机进入停止状态,这涉及到停止DMA传输和释放资源。错误状态:如果在音频流的处理过程中发生错误,ASIO状态机将进入错误状态,进行错误处理和恢复。2. 状态机的实现需要处理以下几个关键方面:状态转换:状态机需要能够根据外部事件(如用户输入、硬件中断等)在不同状态之间转换。事件处理:状态机需要能够响应和处理各种事件,如缓冲区溢出、硬件故障等。 ASIO状态机在音频处理中的应用在音频处理中,ASIO状态机的应用主要体现在以下几个方面:实时音频处理:ASIO状态机确保音频数据的实时处理,满足专业音频应用对低延迟的要求。 ASIO状态机的优化为了提高ASIO状态机的性能和稳定性,可以采取以下优化措施:减少状态转换:尽量减少不必要的状态转换,以降低状态机的复杂性和延迟。

    4.8K00编辑于 2024-10-11
  • 来自专栏程序人生

    谈谈状态机

    在谈论一般意义的状态机时,我们先看看有限状态机,Finite State Machine,简称 FSM。 请听题:写一个状态机,验证一串二进制bit,包含偶数个 0 和奇数个 1。 我们很容易能画出这样的状态机: ? 手起刀落,马到功成。简单地有点侮辱你的智商。 来个难的吧 —— 难到那种可能你抓破头皮喊破喉咙也找不到优雅的解法的问题。 二进制逢二进一,所以相当于 被除数 乘了 2。被除数乘 2,相当于余数乘 2 再模除数(这个我就不证明了)。 所以第二个输入是 0 时,余数 (1 * 2) % 3 = 2,状态从 1 迁移到 2。 注:这里有个小问题,0 在上面的状态机并不被接受,但可以被 8 整除。更严谨正确的写法是这样(不过我们下文先不纠结这样的小细节): ? 可见,同样一个问题,可以有不同的 FSM 处理。

    1.7K70发布于 2018-03-29
  • 来自专栏后端开发随笔

    状态机入门实践

    .source("S2").target("SF").event("E3").action(s2Action()); } @Bean public Action<String, S1 MyAction -- target: S2 -- 状态机从S1状态转换到S2状态执行的动作 Transitioned from S1 to S2 -- 状态机从S1状态转换到S2状态 S2 MyAction -- target: SF -- 状态机从S2状态转换到SF状态执行的动作 Transitioned from S2 to SF -- 状态机从S2状态转换到SF状态 【参考】 什么是状态机?一篇文章就够了 状态机的介绍和使用 状态机的技术选型看这篇就够了,最后一个直叫好!!! 全网首发:Seata Saga状态机设计器实战 如何将Saga建模为状态机 保姆式教程!如何使用Cola-statemachine构建高可靠性的状态机

    62510编辑于 2024-03-30
  • 来自专栏TechBlog

    状态机设计举例

    2.ASM图中各种逻辑框之间的时间关系 3.十字路口交通灯控制电路设计举例 状态机设计准则 FSM输出方法 有限状态机HDL描述规则 可靠性与容错性 汽车尾灯控制电路设计 重点介绍构造状态图的两种方法: 一是试探法,二是基于算法状态机构造状态图的方法。 由设计要求可知:汽车左转弯时,右边的灯不亮而左边的灯依次循环点亮,即0个、1个、2个或3个灯亮,分别用L0、L1、L2、L3表示,状态机在4个状态中循环。 同理,汽车右转弯时,状态机也会在4个状态中循环,即左边灯不亮而右边的灯有0个、1个、2个或3个灯亮,分别用R0、R1、R2、R3表示。由于L0和R0都表示6个灯不亮,所以合起来用IDLE表示。 应用算法状态机设计十字路口交通灯控制电路 算法状态机ASM(Algorithmic State Machine)图是描述数字系统控制算法的流程图。

    1.4K30编辑于 2023-02-13
  • 来自专栏用户2442861的专栏

    Lighttpd1.4.20源码分析之状态机(1)---状态机总览

    状态机可以说是lighttpd最核心的部分。lighttpd将一个连接在不同的时刻分成不同的状态,状态机则根据连接当前的状态,决定要对连接进行的处理以及下一步要进入的状态。 下面这幅图描述了lighttpd的状态机: ? 图中的各个状态对应于下面的一个枚举类型: 1 typedef enum 2 { 3 CON_STATE_CONNECT, //connect 连接开始 4   下面先来说一说整个状态机的核心函数───connections.c/ connection_state_machine()函数。函数很长,看着比较吓人。。。 在循环后面,还有一段代码: 1 switch (con->state) 2 { 3 case CON_STATE_READ_POST: 4 case CON_STATE_READ

    89110发布于 2018-09-19
  • 来自专栏码农爱学习的专栏

    STM32按键状态机2——状态简化与增加长按功能

    上篇文章:STM32按键消抖——入门状态机思维,以按键消抖功能,介绍了状态机的基本原理与使用方法。 1 消抖状态简化 1.1 状态图 将按下抖动与松开抖动共用一个抖动状态来表示,同时需要将状态机的循环周期设置为50ms,这样,抖动状态只需经过一次,通过电平高低即可判定是否真的为按键抖动。 1.3 测试 2 增加长按功能 在检测按下与松开的基础上,再增加长按功能,在状态图中需要增加一个长按状态。然后,对照着状态图修改代码即可。 同样,根据是否需要区分两种抖动状态以及状态机循环周期的不同,可以有两种状态图。 2.4 测试 3 总结 本篇继续介绍状态机的使用,在上篇的基础上,通过简化按键去抖逻辑,并增加按键长按功能,进一步介绍状态图的修改与状态机代码的实现,并通过实际测试,演示状态机的运行效果。

    1K30编辑于 2022-10-04
  • 来自专栏一个会写诗的程序员的博客

    fsm:有限状态机

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

    1.8K20发布于 2020-09-28
  • 来自专栏码农那些事!!!

    Spring状态机,非常优雅!

    Java指南:https://java-family.cn 2状态机图 做需求时,需要了解以下六种元素:起始、终止、现态、次态(目标状态)、动作、条件,我们就可以完成一个状态机图了: 以订单为例:以从待支付状态转换为待发货状态为例 2、状态划分时漏掉一些状态,导致跳转逻辑不完整。所以在设计状态机时,我们需要反复的查看设计的状态图或者状态表,最终达到一种牢不可破的设计方案。 id=2 对订单进行发货 http://localhost:8084/order/deliver?id=2 对订单进行确认收货 http://localhost:8084/order/receive? id=2 正常流程结束。如果对一个订单进行支付了,再次进行支付,则会报错:http://localhost:8084/order/pay? id=2 报错如下: 2)验证持久化 内存 使用内存持久化类持久化: /** * author:公众号:码猿技术专栏 */ @Resource private StateMachinePersister

    51510编辑于 2024-05-14
  • 来自专栏H2Cloud

    状态机的实现探讨

    (译)状态机的实现探讨 原文链接地址:http://drdobbs.com/cpp/184401236?pgno=1          实现一个状态机很容易,但是实现一个好的状态机却不简单。 这种方式挺万金油的,所以在实现状态机的时候,完全可以借鉴一下。 Context:          假设场景如下:实现任务Task,它是一个状态机,其状态变化如图: l  Task被创建后假设获取了必须资源,进入Ready状态 l  Ready状态可以被任务队列执行 ,任何状态机的实现都可以按照此模板按部就班的实现. StateMachine 的实现;此实现为通用的逻辑模板,任何状态机的实现都可以套用此模板。

    2.3K50发布于 2018-03-09
  • 来自专栏采云轩

    聊一聊状态机

    2.举个例子 我们以汽车的变速箱来当做状态机来举个例子,如果是自动挡的变速箱,那么变速对应的每个档位就一个状态,如P档是表示停状态、N档是发动起空转状态、D 档是行驶状态、R 档倒车状态。 2.状态机图 了解基础知识后,再画出状态图,就可以按照状态图来写代码去实现这个状态机的逻辑了 三、状态机有用吗 1.状态机给我们带来了什么 在前面的章节里面我们介绍了什么是状态机,和怎么使用状态机2.状态机在业务上可以带来什么 前面说了状态机的优劣,都是以技术的角度去看的。然而如果换一个从业务的角度来看状态机可以带来什么。 2.辅助领域模型设计 对于状态机出来说除了可降低领域专家和技术专家的沟通成本,并且在辅助领域模型设计方面还有以下几点帮助: 辅助实体设计:前面说到状态机在业务上的可以帮忙划清业务边界,而 DDD 里面分析清楚各个实体的业务边界是一个比较困难的事情 2.状态机可以给我们带来什么 状态机作为一种设计模式,除了在技术上可以让我们的代码变动更加的灵活和易于扩展以外,它更大的优点是在可以在做技术分析的时候让我们更加清晰地理解整个业务流程。

    3.8K10编辑于 2024-01-17
  • 来自专栏pythonista的日常

    Python 状态机(transitions)实践

    什么是状态机? 所谓状态机是表示有限个状态以及在这些状态之间的流转和状态变更前后所触发的动作等行为的数学模型。 状态机也是一种算法思想,简单而言,有限状态机由一组状态、一个初始状态、输入和根据输入及现有状态转换为下一个状态的转换函数组成。有限状态机是有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 所以就用了状态机。 transitions transitions 是Python 中具有许多扩展的轻量级、面向对象的有限状态机实现库。 ,并将状态机绑定到 label_task 实例上。 它从状态开始,但永远不会进入另一个 '进行中' 状态,因为还没有定义状态之间的转换 2.增加任务之间的转换 from transitions import Machine class StatusEnum

    3.9K30编辑于 2023-09-18
  • 来自专栏java 设计模式

    设计模式-状态机模式

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

    4.4K00发布于 2020-05-08
  • 来自专栏txp玩Linux

    简单的状态机入门!

    2、考虑状态机的关键点: 从刚才的定义来看,我们只要抓住状态机的关键点来理解就行: 1、外部输入 2、当前状态 3、下一个状态 二、两种状态机类型: (1)Moore型状态机特点是:输出只与当前状态有关 相对简单,考虑状态机的下一个状态时只需要考虑它的当前状态就行了。 (2)Mealy型状态机的特点是:输出不只和当前状态有关,还与输入信号有关。 状态机接收到一个输入信号需要跳转到下一个状态时,状态机综合考虑2个条件(当前状态、输入值)后才决定跳转到哪个状态。 三、状态机的常见用途: (1)电路设计中广泛使用了状态机思想。 (2)但是偶尔会碰到这样的程序:外部不一定会按照既定流程来给程序输入信息,而程序还需要完全能够接收并响应外部的这些输入信号,还要能做出符合逻辑的输出。 五、实战例子: 开锁状态机。 #include <stdio.h> // 给状态机定义状态集 typedef enum { STATE1, STATE2, STATE3, STATE4, STATE5, STATE6

    1K10编辑于 2022-03-21
领券