这是我参与「第五届青训营」伴学笔记创作活动的第 6 天
一、本堂课主要内容:
- 认识规则引擎
- 编译原理基本概念
- 设计一个规则引擎
- 规则引擎的实现
1、规则引擎:
当我们在对复杂的业务进行开发时,程序本身逻辑代码和业务代码互相嵌套、错综复杂,同时维护成本高,可拓展性差。
规则引擎即是:可降低复杂业务逻辑组件复杂性、降低应用程序的维护和可扩展性成本的组件! 解决开发人员重复编码问题,缩短开发路径,提高效率,可维护性。
组成部分:
- 数据输入
- 规则理解
- 规则执行
主要可应用的场景:
- 风控对抗
- 活动策略运营
- 数据分析和清洗
2、编译原理的基本概念
语法分析-->词法分析-->抽象语法树-->类型检查
- 词法分析:
- 把源代码字符串转化为词法单元的这个 过程。
- (例如:李湘通过了青训营选拔,这一个字符串分为 主语 谓语 宾语三个部分)
- 语法分析:
- 在词法分析的基础上,识别出表达式的语法结构
- 抽象语法树:
- 表达式抽象语法结构的树,对于一个表达式,抽象语法树一定是唯一确定的。表达式语法结构可以用树来表示,每个节点子树是一个语法单元,这个单元构成的规则就叫做”语法“,每个节点还可以有下级结点
- (个人理解语法树可以参考红黑树,数据结构中的红黑树与语法树有异曲同工之妙,可以帮助加深理解整个过程)
- 参数注入、类型检查:
- 在规则执行过程中,使用输入的参数来计算语法树的标识符结点的过程
最后这节课结束,单独设计一个简单的规则引擎还是可以做到,大家可以参考ppt最后的模拟案例,做一个相对简单的就可以了。