首页
学习
活动
专区
工具
TVP
发布

利用 Aviator 实现规则配置

背景 用户希望通过一些自定义一些表达式,灵活的对数据进行过滤 为什么选择 Aaviator 我们调研了业界主流的一些规则引擎以及表达式引擎,如 Drools、EasyRule、JEXL、Aviator、...从复杂度、与我们目前需求的契合程度、扩展性、性能、社区活跃度、文档、资料的完善程度以及使用者的学习成本等多方面考虑,决定采用 Aviator 来作为 filter_express 解析引擎 。...Aviator创建之初就是为了高性能、轻量级,并且支持自定函数以及各种定制选项,拥有各种内置函数且扩展较好,足够简单,用户的学习成本足够低,并且可以完美解决这个的问题。...Aaviator 基本使用 1.添加依赖 com.googlecode.aviator aviator 5.3.0 public class TestAviator {

3.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

Google Aviator——轻量级 Java 表达式引擎实战

简介Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。...Aviator的设计目标是轻量级和高性能,相比于Groovy、JRuby的笨重,Aviator非常小,加上依赖包也才450K,不算依赖包的话只有70K;当然,Aviator的语法是受限的,它不是一门完整的语言...其次,Aviator的实现思路与其他轻量级的求值器很不相同,其他求值器一般都是通过解释的方式运行,而Aviator则是直接将表达式编译成Java字节码,交给JVM去执行。...简单来说,Aviator的定位是介于Groovy这样的重量级脚本语言和IKExpression这样的轻量级表达式引擎之间。...Aviator会把表达式编译成字节码,然后代入变量再执行,整体上性能做得很好。

2.3K30

秒懂java规则表达式框架Aviator2.3.0

Aviator 简介 Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。...Aviator的设计目标是轻量级和*高性能 ,相比于Groovy、JRuby的笨重,Aviator非常小,加上依赖包也才450K,不算依赖包的话只有70K;当然,Aviator的语法是受限的,它不是一门完整的语言...其次,Aviator的实现思路与其他轻量级的求值器很不相同,其他求值器一般都是通过解释的方式运行,而Aviator则是直接将表达式*编译成Java字节码,交给JVM去执行。...package aviator规则引擎; import com.googlecode.aviator.AviatorEvaluator; import java.util.Date; import...设计一个根据付款金额决定是否发送优惠券的规则表达式 package aviator规则引擎; import com.googlecode.aviator.AviatorEvaluator; import

5.9K40

这款轻量级 Java 表达式引擎,真不错!

大家好,我是不才陈某~ 前面文章介绍过几款规则引擎,今天介绍一款轻量级规则引擎:aviator,往期介绍如下: 规则引擎深度对比,LiteFlow vs Drools!...聊聊小而美的规则引擎 LiteFlow Spring Boot + 规则引擎Drools aviator本来是一个轻量级、高性能的基于JVM的表达式引擎。...根据官网的介绍,aviator支持的主要特性: 支持数字、字符串、正则表达式、布尔值、正则表达式等基本类型,完整支持所有 Java 运算符及优先级等。...使用场景包括: 规则判断及规则引擎 公式计算 动态脚本控制 集合数据 ELT 等 aviator基本使用 基本表达式 要使用aviator,只需要添加相应依赖: com.googlecode.aviator aviator 5.3.3 <

73920

这款轻量级 Java 表达式引擎,真不错

aviator基本使用 基本表达式 表达式变量 使用函数 aviatorScript脚本 ---- aviator本来是一个轻量级、高性能的基于JVM的表达式引擎。...不过从5.0.0版本开始,aviator升级成为了aviatorScript,成为一个高性能、轻量级寄宿于 JVM (包括 Android 平台)之上的脚本语言。...根据官网的介绍,aviator支持的主要特性: 支持数字、字符串、正则表达式、布尔值、正则表达式等基本类型,完整支持所有 Java 运算符及优先级等。...使用场景包括: 规则判断及规则引擎 公式计算 动态脚本控制 集合数据 ELT 等 aviator基本使用 基本表达式 要使用aviator,只需要添加相应依赖: ...com.googlecode.aviator aviator 5.3.3

45730

风控规则引擎(一):Java 动态脚本

使用第三方库实现表达式的执行 使用第三方库实现动态表达式的执行 在 Java 中有很多表达式引擎,常见的有 jexl3 mvel spring-expression QLExpress groovy aviator...ognl fel jsel 这里简单介绍一下 jexl3 和 aviator 的使用 jexl3 在 apache commons-jexl3 中,该表达式引擎比较符合人的书写习惯,其会判断操作的类型...,并将参数转换成对应的类型比如 3 > 4 和 "3" > 4 这两个的执行结果是一样的 aviator 是一个高性能的 Java 的表达式类型,其要求确定参数的类型,比如上面的 "3" > 4 在 aviator...parameters); boolean result = (boolean) executeExpression.evaluate(jexlContext); 以上就会 jexl3 的简单使用 aviator...引入依赖 com.googlecode.aviator aviator <

39510

AV|Ator:一款功能强大的AV检测绕过工具

可以使用各种不同的注入技术在目标操作系统中执行注入和解密;  工具安装  Windows安装 广大研究人员可以直接点击此链接下载预编译的项目可执行文件:https://github.com/Ch0pin/AVIator.../tree/master/Compiled%20Binaries 除此之外,我们也可以使用下列命令将该项目源码克隆至本地: git clone https://github.com/Ch0pin/AVIator.git...下面以Kali为例: git clone https://github.com/Ch0pin/AVIator.gitcd AVIatorroot@kali# apt install mono-develroot...@kali# mono aviator.exe  工具使用  该工具提供了一个表单,其中包含三个主要的输入参数: 1、加密密钥,用于对Shellcode进行加密; 2、IV向量,用于AES加密; 3...项目地址  AV|Ator: https://github.com/Ch0pin/AVIator 参考资料: https://en.wikipedia.org/wiki/Ator https://attack.mitre.org

82920

一个Flink-Cep使用案例

本篇主要演练使用Flink-Cep+Groovy+Aviator 来实现一个物联网监控规则中的一个场景案例,后续将会介绍如何实现规则动态变更。...例如某一类事件连续出现三次就触发告警,可以类比Siddhi、Esper; Groovy 是一种动态脚本语言,可以让用户输入代码变成后台可执行代码,像刷题网站leetcode 应该就是用了这么类似的一个东西; Aviator...return (Boolean) AviatorEvaluator.execute(script,params); } } ParseValueFunction 表示的是一个Aviator...0.0); return sumNow>sum; } return false; } } 至此一个简单的Flink-cep+Groovy+Aviator...总结 本篇以一个简单的demo来介绍Flink-cep+Groovy+Aviator的实现流程,为后续介绍Flink-Cep如何实现动态规则变更打下基础,尽情期待。。。

1.4K30

别再说你不懂规则引擎了!

aviatoraviator又叫AviatorScript,是一门高性能、轻量级寄宿于 JVM 之上的脚本语言。又叫做表达式语言,提供的语法有限制,和js一样函数是一等公民,支持闭包和函数式编程。...在美团内部基本大部分使用规则引擎的场景比如风控,数据规则等等都选择了aviator这个轻量级的语言作为规则引擎。...我个人来看的话还是比较推荐aviatoraviator和其他的两个语言不同,他只提供了有限的语法功能,不像groovy是一整套完整的语言,比如可以做一些危险的操作,如果输入了 System.exit(...0)可以直接退出我们的进程,但是在aviator是不会提供这种能力的,aviator最开始的时候连if/else,循环都不支持,在最新的5.0版本才支持这些功能,所以他提供的整体功能算是一个安全的沙箱。...aviator虽然是区别于java的语言,但是其上手成本整体比较低,对于aviator语法有兴趣的可以看看5.0的文档: https://www.yuque.com/boyan-avfmj/aviatorscript

6K20

新一代垃圾回收器ZGC的探索与实践

规则运行是基于开源的表达式执行引擎AviatorAviator内部将每一条表达式转化成Java的一个类,通过调用该类的接口实现表达式逻辑。...再进一步分析,ClassLoader的类名表明,这些ClassLoader均由Aviator组件生成。...分析Aviator源码,发现Aviator对每一个表达式新生成类时,会创建一个ClassLoader,这导致了ClassLoader数量巨大的问题。...在更高Aviator版本中,该问题已经被修复,即仅创建一个ClassLoader为所有表达式生成类。 解决方法:升级Aviator组件版本,避免生成多余的ClassLoader。...我们最终通过业务优化解决,删除不需要执行的Aviator表达式,从而避免了大量Aviator方法进入CodeCache中。 值得一提的是,我们并不是在所有这些问题都解决后才全量部署所有集群。

1.1K41
领券