-
规则引擎-00-入门 聊一聊
chat
Q: 详细介绍一下 java 规则引擎
Java规则引擎是一种软件设计模式,它允许开发者将业务决策从应用程序代码中分离出来,并通过一组可配置的规则来实现业务逻辑。
这样做的好处是提高了业务逻辑的可维护性和可扩展性,因为规则可以不修改代码的情况下动态地更改。
下面将详细介绍Java规则引擎的概念、特点、使用场景以及一个流行的Java规则引擎库——Easy Rules。
概念...
2020-05-26 08:05:35 |
Engine
-
配置增量加载设计方案
背景
我们经常需要去实现各种配置的加载,有时候需要处理一些变化。
最简单的策略就是定期全量加载,不过如果配置较多,可能会产生 GC,对实时链路影响较大。
trade-off
配置的定期加载是【频率】与【耗时】之间的一个权衡。
实际业务中,我们都希望配置变更,立刻生效。但是实现上有些困难。
可行的方案主要有:
(1)mq 通知,内存同步更新
(2)存储到 redis 等共享的三...
2020-05-26 08:05:35 |
Design
-
java 表达式引擎概览-06表达式引擎引擎页面样式优化
目标
让页面样式更加现代化。
STEP7: 样式调整
需求
下面的页面样式比较原始,帮我的 css 样式进行调整美化,让其看起来更加现代化+扁平化。
要求按钮尽量加上 icon,使用 emoji 也行,表达对应的含义。比如新增/删除/重置
按钮的颜色,新增类型用绿色系,删除用红色系,重置警告橙色系等等。
原始的页面代码:
<!D...
2020-05-26 07:11:16 |
Engine
-
java 表达式引擎概览-05-google Aviator 表达式引擎布尔条件验证与规则引擎
最佳实践
https://www.yuque.com/boyan-avfmj/aviatorscript/ou23gy
STEP1: Aviator 执行表达式引擎==》规则引擎
最简单的例子
因为布尔值只是对应的 boolean,每一个对应一个条件。
所以最后的结果只是一个类似于 (c1 && c2) || (c3 || c4) 的表达式。
public sta...
2020-05-26 07:11:16 |
Engine
-
java 表达式引擎概览-04-google 表达式引擎最佳实践
最佳实践
https://www.yuque.com/boyan-avfmj/aviatorscript/ou23gy
建议最少加上这2个
static {
// 默认方法执行 60S?
AviatorEvaluator.getInstance().useLRUExpressionCache(20000);
AviatorEvaluator.setOption(...
2020-05-26 07:11:16 |
Engine
-
java 表达式引擎概览-03-google 表达式引擎 Aviator 5.x 文档
起源
Aviator 起源于 2010 年左右,当时我还在淘宝中间件,读了龙书,了解了 ASM ,开始读 clojure 编译器的源码。
刚好同时在做 Notify 这个内部消息中间件的一个重要版本实现,其中有一个需求是实现 AMQP 规范里的 header 订阅,允许用户指定一个布尔表达式来决定是否订阅某种类型的消息,需要对布尔表达式字符串进行求值。
当时正处于造轮子的兴奋期,因此就...
2020-05-26 07:11:16 |
Engine
-
java 表达式引擎概览-02-google 表达式引擎 Aviator 入门介绍
Aviator
Aviator 是一个轻量级、高性能的 Java 表达式求值器。
它可以将表达式编译为字节码,并即时执行求值。
快速入门
aviator 代码地址
Jar 依赖
<dependency>
<groupId>com.googlecode.aviator</groupId>
<artifactId>...
2020-05-26 07:11:16 |
Engine
-
java 表达式引擎概览-01-overview
背景
希望实现一些类似于 mybatis 的动态 sql,针对语句的判断,比如:
test = "name != null and name != ''"
这里就需要一个表达式的引擎,从零实现目前比较耗费时间,就去看看有没有现成的。
mvel
比较老牌了,很强大,但是好久没更新了
参考地址:
http://mvel.documentnode.com/
https://git...
2020-05-26 07:11:16 |
Engine