后端学习 | 青训营笔记

130 阅读2分钟

这是我参与「第五届青训营 」伴学笔记活动七天。


由于之前的笔记整理内容比较多,导致看的课程与笔记内容严重不匹配,笔记严重滞后,所以改变策略,直接用笔记记录课堂内容,缺失的部分在后期会补充回来。


直播课:规则引擎

规则引擎

定义

规则引擎是嵌入在应用中的组件,将业务的决策从应用程序代码中分离出来,使用预定义的模块编写业务决策。说人话就是开发人员提供给业务人员可以直接修改规则的模块,将业务决策与服务本身解耦,提高开发效率。

例子:对于不同用户的打折力度随着业务的实践可能会发生变化,如果不设计规则引擎,则每次规则的改写都需要开发人员根据业务人员的需求重新设计代码逻辑,非常不方便。

组成部分

数据输入:接收业务数据作为执行过程中的参数,如价格、标签等。

规则理解:按照预先定义的词法、语法、优先级、运算符等理解业务规则表达的语义。

规则执行:类型检查等保证执行结果的正确。

应用场景

风控对抗:对抗“薅羊毛”的核心就是规则引擎。

活动策略运营:打折、节日活动等。

数据分析和清洗:数据整理。

编译原理 这个需要好好看

理解->执行->输入输出

词法分析:把源代码字符串转为词法单元(当成句读来理解)。

有限自动机(识别token):一个有限的状态机,
任何一个状态基于输入的字符都能做成一个确定的状态转换。

语法分析:在词法分析的基础上,识别表达式的语法结构。 生成抽象语法树。

上下文无关语法:无需考虑上下文就可以判断正确性的语句,
可以巴克斯范式BNF来表达。
递归下降算法:自顶向下构造语法树。 (递归+回溯)

类型检查:

类型综合:根据子表达式构造出附表的是的类型。
如a+b a int b int,则a+b为int。
编译时检查&运行时检查

规则引擎的设计

设计目标

词法(定义合法TOKEN)、运算符、数据类型、优先级

词法:有限自动机生成token

语法:巴克斯范式递归下降算法构造语法树

......

实现规则引擎

跑代码