规则引擎设计与实现 | 青训营笔记

73 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

通过今天的录播课,学习到了规则引擎的优点以及利用规则引擎能够解决了开发人员重复编码问题并能够缩短开发路径,提高效率.温故了在学校学习到的编译原理,编译型语言和解释性语言的区别、词法分析(有限自动机)、语法分析(抽象语法树)等知识.

一、认识规则引擎

规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。在执行时接受数据输入、解释业务规则,并做出决策。规则引擎能大大提高系统的灵活性和扩展性

传统修改业务代码:

image.png

利用规则引擎:

image.png

  • 解决了开发人员重复编码问题
  • 业务决策与服务本身解耦,提高服务的可维护性
  • 缩短开发路径,提高效率

规则引擎的组成部分:

image.png

规则引擎的应用场景:

image.png

二、编译原理基本概念

什么是编译: 编译的过程就是 把某种语言的源程序,在不改变语义的条件下,转换成另一种语言程序(目标语言程序)

解释性语言和编译型语言:

  • 有的语言提前把代码一次性转换完毕,这种就是编译型语言,用的转换工具就叫编译器,比如C、C++、Go。一次编译可重复执行 编译后产物不能跨平台,不同系统对可执行文件的要求不同。.exe 特殊的,c、c++、汇编、源代码也不能跨平台

  • 有的语言则可以一边执行一边转化,用到哪里了就转哪里,这种就是解释性语言,用的转化工具叫虚拟机或者解释器,比如java python、javascript

词法分析: 把源代码字符串转换为词法单元(Token)的这个过程。

image.png

语法分析: 词法分析是识别一个个的单词,而语法分析就是在词法分析的基础上识别出程序的语法结构。这个结构是一个树状结构。这棵树叫做抽象语法树(Abstract Syntax Tree,AST)。树的每个节点(子树)是一个语法单元,这个单元的构成规则就叫“语法”。每个节点还可以有下级节点。

image.png