说明下对状态机的理解。(如果项目中有遇到,可以简单描述下)

状态机在编译原理中较为重要
其中状态机可以用作如识别正则表达式,识别句子中含有单词(假如英语句子没有空格)以及进行自然语言处理。
其作用是当判定一个状态,如当前状态,及拿当前状态判定下一个节点或指向的状态,
并结合判定的节点来判定下一个节点应有的状态或指向某个节点。

比如在正则表达式中,用某个正则格式来断定一句话是否符合这个格式,当判定语句的多个字眼后,再判定下一个是否符合,如果下一个字眼不符合,
则正则不被匹配。而正则之所以要设定开始匹配和匹配结束的相关标识,即需要进行匹配句子中有哪些句子字眼是符合正则的开始或结束的。

而程序中,比如在之前基金估值系统中,需要设定规则,当A种类基金计算的估值偏离了设定阈值多少之后,则哪个字段需要进行标红展示,
而当B种类基金计算的另一个值偏离以后,哪个字段或者需要重新计算等。

比如在节点提交的程序如工作流中,即银行担保系统,A岗提交给B岗是预先设定好的,而比如B岗提交文件给秘书岗或经理岗是可以的,但
不是提交给财务岗,因为财务岗位不在B岗可提交的范围之内。
而当提交后,经理岗可以退回需要AB岗重审,而可能秘书岗就没有这个权利,需要自己进行审核再提交给经理岗。
最终经理岗确认,秘书岗才可以提交财务岗进行类似划款操作。

最感觉是状态机的程序业务按说就是同济中学的数学题试卷word的读取了,
因为设定了每个题都有题目,选项,答案,但有的题是没有图片的,有的有,
有的有选项,而有的只有填空,在判定的时候,需要按行读取,
并且判定上一个标示下面是否有对应的标示,如果没有则需要有
另一个标示,不然此题是不完整的。
当所有题都完整,并且都能按判定顺序去读取后,数据也就真正
可以入库,并且做相关处理后展示到页面上了。

又比如在现在微服务网关的gateway当中,gateway使用predicate进行网关路由的断言,
判定前置路径是否与服务接口匹配,
比如我使用/userService/*来匹配用户服务下的全部接口与
/authService/encrypt是完全不同的。
而通过判定不同的路径,接口被路由到对应的接口。

又比如Java线程中,运行中的线程可以加入等待,等待中的线程可以被唤起,
而不是销毁的线程的可以被唤起,而是需要创建线程进入Runnable状态后才可。

又比如在Spring的组件Spring Batch中,用其进行计算某些数值后,如果值等于
预期的某些值,那么执行一个Step,而非预期另一个值,执行另一个Step。

posted @ 2022-09-08 13:27  ukyo--夜王  阅读(67)  评论(0编辑  收藏  举报