规则引擎设计与实现

news2024/11/18 6:03:08

规则引擎设计与实现

「字节跳动第五届青训营」笔记

是什么

规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并
使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业
务决策。

之前:

image-20230203105452415

之后:

image-20230203114009207

eg:

输入:计算规则、 商品价格、用户标签、商品属性 …
输出:积分

为什么要用

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

规则简单容易配置
可扩展

什么时候用

  • 风控对抗
  • 活动策略运营
  • 数据分析和清洗

怎么实现(编译原理)

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

词法分析、语法分析–>抽象语法树–>参数注入、类型检查


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

语法分析:在词法分析的基础上识别出表达式的语法结构。

抽象语法树:表达式抽象语法结构的树状表示,对于一个表达式,抽象语法树一定时唯一确定的。

类型检查:验证执行的结果是否为合适的数据类型。在抽象语法树中,通常会验证某节点的子节点的数据类型是否合法。

参数注入:在规则执行过程中,使用输入的参数值来计算语法树中的标识符节点值的过程。

相关参考:

Java规则引擎:easy-rules

用Nacos ,里面修改配置的jar包配置文件,springBoot 会自动更新内容,我们的动态实时更新规则,就是这样实现的。

go的demo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用最简单的方法实现个人网站-wordpress结合LAMP架构实战

文章目录前言一、LAMP架构是什么?1.1 LAMP架构简介1.2 什么是apache?1.3 什么是MySQL?1.4 什么是php?二. wordpress是什么三. 搭建博客过程1. 实验环境2. 搭建LAMP架构3. 设置数据库并授权4. 上传wordpress并解压5. 修改配置文件6. 网页端进…

基于C#制作一个网址检测工具

此文主要基于C#制作一个网址检测工具。随着时间推移以及公司人员的变动,手头所负责的项目也越来越多,对网站运行状况的管理也是一件让人十分头疼的事,秉持着偷懒是第一生产力的原则,制作一个工具对网址一键监测。 实现流程1、创建…

支付测试怎么做?要点有哪些?

目录 支付测试 避不开的 公司有没有支付牌照的问题? 国内有支付牌照的公司(搞一张支付牌照 ,不是钱多少的事)总共 200 多家而已​编辑 没有支付牌照 公司就不可以支付么? 没有支付牌照 的公司的支付 做的什么支付&…

文档存储Elasticsearch系列--1 ES介绍

前言:Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,支持结构化文档数据的分布式存储,并提供准实时的查询,全文检索,数据聚合; 1 为什么要使用ES: ES 本身存在哪些特性…

第二章---进程的描述与控制

🌞欢迎来到操作系统的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🙏作者水平很有限,如果发现错误&#xff…

打印机之——G3800故障维修

一 故障现象 5B00/1471/1472打印机进空气二 解决办法 2.1 5B00/1471/1472 解决办法——不需要软件清零,按键解决 步骤1 插上电源,打印机处于未开机状态,挡板处放入打印纸同时按住“停止”键和“电源”键,此时“电源”键亮起松开“停止”键…

python-opencv第六期:addWeighted函数详解

概要: 众嗦粥汁所周知,在如今计算机视觉(Computer Version short for CV)是人工智能与机器人技术发展的一个重大研究方向,而opencv作为一个专门为机器视觉编程提供技术与函数支持的第三方库,自然是一个需要…

Devops简介

Devops DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和**质量保障(QA)**部门之间的沟通、协作与整合。 其目的就是让开发人员和运维人员更好的沟通合作的文化、运动或惯例,通过自动化交付流程来使软件开发&#x…

牛客网C基础题目练习1

目录题目1:竞选社长题目2:最高分数题目3:判断是元音还是辅音题目4:判断是不是字母题目5:字母大小写转换题目1:竞选社长💭法1:使用字符串数组代码实现:int main() {char a…

【按位考虑DP】代码源每日一题div1 2023.02.02 与

与 - 题目 - Daimayuan Online Judge这太酷了,很符合我对DP的想象这DP太妙了,我还没做过这种按位考虑DP的题题意:思路:首先看第二个条件,一个数与后面的那个数与了之后还是后面那个数,这说明什么我们按位考…

快速入门KMM和Compose Multiplatform

一、前言 最近才有空,想起来Compose-jb和kmm这2个框架,就来个快速入门指南吧。 什么是KMM (Kotlin Multiplatform Mobile) KMM用于简化跨平台开发,可以在Android和IOS之间共享通用的代码。 仅在使用各自平台能力的时候,才会去编…

解决前端组件渲染没更新数据问题

问题: 使用前端日期控件时 - 数据联动时数据绑定无效问题 现象: 选择A日期,想动态改变B日期数据,只有第一次选择时会动态改变B日期数据,第二次选择A日期时,B日期数据虽已改变,但是页面数据未改变…

电子邮件备份软件:Email Backup Wizard Crack

适用于所有用户的电子邮件备份软件 在您的计算机、台式机或硬盘驱动器上本地创建您的电子邮件帐户的备份。 下载并保存电子邮件以备后用。 如果您想备份和移动服务器电子邮件,请尽快获取备份工具。 通过简单直观的功能获得强大的结果 苹果系统邮箱备份向导 - 批量下…

C++ · 类和对象 · 03 | 深化理解

啊我摔倒了..有没有人扶我起来学习.... 👱个人主页:《CGod的个人主页》\color{Darkorange}{《CGod的个人主页》}《CGod的个人主页》交个朋友叭~ 💒个人社区:《编程成神技术交流社区》\color{Darkorange}{《编程成神技术交流社区》…

Python tkinter -- 第18章 画布控件之椭圆

**18.2.18 create_oval(bbox, options) 根据限定矩形 bbox 在画布上创建一个椭圆。 (1)bbox:定义要创建对象的边界(x1, y1, x2, y2) (2)options:创建椭圆的选项。选项的具体含义: 选项含义activedash当鼠标…

微信小程序+前端+天行数据垃圾图像识别接口API

文章目录 前言 步骤 1. 去到天行数据官网注册账号,去到接口的介绍网站 2. 去测试网站,先看看请求的格式 3. 小程序端我采用的是把网站上的url链接的网络图片转成base64编码后的形式作为传入参数,这里需要有点基础,因为只给上了…

JVM基础 - 类加载的过程

类加载的过程加载验证准备解析初始化使用卸载其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的。而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始&…

RFID技术在生产企业的集成应用分析

RFID技术在生产企业的集成应用分析1.RFID的主要功能RFID自动识别功能RFID标签的主要核心部件是一个电子芯片,芯片中存储着能够识别目标的信息。RFID标签具有持久性、信息接收传播穿透性强、存储信息容量大、种类多等特点。有些RFID标签支持读写功能,目标…

CHAPTER 15 Mesos(一)

Mesos-优秀的集群资源调度平台15.1 Mesos简介15.2 Mesos安装与使用1. 安装1. 源码编译2. 软件源安装3. Docker方式安装2. 配置说明1. ZooKeepr2. Mesos3. Marathon3.访问Mesos图形界面4.访问Marathon图形界面1. 通过界面方式2. REST API方式15.3 原理与架构1. 架构2. 基本单元3…

CentOS7中安装Hadoop3详细步骤

目录 (一)新建一个虚拟机 (二)配置网络 (三)安装vim工具 (四)设置ssh免密登录 (五)设置时间同步 (六)修改主机名 1.方法一 2.方法二 (七)给主机文件添加IP名称映射 (八)安装JDK8 (九)安装Hadoop 1.打开Xftp,连接虚拟机,在/opt目录下新建两个…