这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
规则引擎器的定义
接受数据的输入,解释业务的规则,并根据业务规则做出业务决策,解决了开发人员重复编码的问题,使得业务决策与服务本身解耦,提高了服务的可维护性。
规则引擎器的组成部分
- 数据输入
- 规则理解
- 规则执行
应用场景
1.风控对抗 2.活动策略运营 3.数据分析和清洗
编译原理(课堂重点)
流程:源代码字符串先被词法分析功能转为词法单元(token);通过语法分析识别出表达式的语法结构;抽象的语法经过抽象语法树(中序遍历)表示;最后进行参数注入以及类型检查。
词法分析
定义:源代码字符串先被词法分析功能转为词法单元(token) 工具:有限自动机(识别token)
语法分析
定义:通过语法分析识别出表达式的语法结构
抽象语法树
定义:抽象的语法经过抽象语法树(中序遍历)表示
重点:递归下降算法(自顶向下构造语法树),不断地对token进行语法展开(抽象树就是中序遍历)
注:执行过程是后序遍历,
总结
之前没接触过规则引擎,以为所有的规则大多都是if,else写出来的(毕竟实际开发能跑就行哈哈哈哈),学习过后感觉开发博大精深啊,将很多繁琐的业务集合成一个微服务模块,实现了逻辑业务的解耦,同时也进一步回顾了数据结构基本的树遍历(怪不得考研非得考数据结构,去年刷leetcode还是现在这个离不开数据结构,所谓开发就是数据结构的开发哈哈哈哈瞎说的俺)