Aviator(表达式执行引擎)发布1.0.1

简介:

Aviator是一个表达式执行引擎,最近由于工作上的原因,又将这个东西扩充了一下,加入了静态的编译优化和seq库。

对于类似”1+2”这样由常量组成的表达式,会在编译的时候直接计算出结果而非生成字节码运行时计算。非常量组成的表达式如”3.14RR+4/2” 也会在编译的时候优化成”3.14RR+2”,也就是说能在编译的时候计算的都计算出来,不能在编译的时候确定的就生成字节码,运行时动态计算。默认不启用编译优化,除非设置:
[java]
AviatorEvaluator.setOptimize(AviatorEvaluator.EVAL);
[/java]
另外,加入了seq库用于操作集合和数组,在aviator中,你可以用[ ]操作符直接访问数组和java.util.List,除此之外seq库添加了一些对数组和集合的常用操作,示例如下:
[java]
map(seq,println) //打印集合
map(seq,-) //取集合中元素的相反数组成的集合
include(seq,element) //判断element是否在集合中
sort(seq) //排序,返回新的集合
reduce(seq,+,0) //求和
reduce(seq,-,1) //求积
filter(seq,seq.gt(3) //大于3的元素组成的新集合
filter(seq,seq.exists()) //不为nil元素组成的新集合
count(seq) //集合大小
[/java]
可以看到seq库的风格偏向FP,但是能做的事情其实有限,毕竟aviator不是一门语言,seq库只提供了最常见的一些函数,其他的只有用户自己扩展了。

Aviator的一个介绍PPT

Aviator——轻量级表达式执行引擎

本文来源于"阿里中间件团队播客",原文时间"2010-09-07"

相关文章
|
缓存 安全 Java
|
Java API Maven
Sentinel 实现网关限流(Spring-Gateway)
Sentinel 不仅仅可以可以作用于服务之间,还可以完美的和服务网关 GateWay 或者 Zuul 一起使用来对网关实现流控。
1276 0
Sentinel 实现网关限流(Spring-Gateway)
|
Java
规则引擎选型及应用
规则引擎具体执行可以分为接受数据输入,解释业务规则,根据业务规则做出业务决策几个过程。 使用规则引擎可以把复杂、冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植。
25106 0
|
人工智能 缓存 Java
 《Cursor+Copilot引领的AI辅助开发路径》
本文记录某垂直电商库存中台重构项目,通过“Cursor+GitHub Copilot+Sourcery”的AI工具协同框架,攻克技术债重、工期紧张、性能要求高等难题。Cursor破解遗留代码理解困境,GitHub Copilot完成批量代码迁移与模板生成,Sourcery优化性能瓶颈。项目中明确“AI执行重复性工作、人类聚焦决策与业务校验”分工,建立反馈闭环与审核机制。
637 1
|
机器学习/深度学习 存储 算法
强化学习:蒙特卡罗求解最优状态价值函数——手把手教你入门强化学习(五)
本文介绍了强化学习中的蒙特卡罗算法,包括其基本概念、两种估值方法(首次访问蒙特卡罗与每次访问蒙特卡罗)及增量平均优化方式。蒙特卡罗法是一种基于完整回合采样的无模型学习方法,通过统计经验回报的平均值估计状态或动作价值函数。文章详细讲解了算法流程,并指出其初期方差较大、估值不稳定等缺点。最后对比动态规划,说明了蒙特卡罗法在强化学习中的应用价值。适合初学者理解蒙特卡罗算法的核心思想与实现步骤。
1115 4
|
人工智能 数据可视化 算法
CrewAI与LangGraph:下一代智能体编排平台深度测评
在过去的一年里,我深度研究了多种智能体编排平台的技术演进,见证了从单一智能体应用向多智能体协作系统的转变。随着大语言模型能力的不断提升,**智能体编排(Agent Orchestration)**已成为构建复杂AI系统的核心技术。在众多新兴框架中,CrewAI以其直观的团队协作模式和LangGraph以其强大的状态图编排能力,代表了两种截然不同的技术路径。 CrewAI采用**代码优先(Code-First)的编排方式,将智能体建模为具有特定角色和目标的团队成员;而LangGraph则提供可视化编排(Visual Orchestration)**能力,通过状态图来管理复杂的工作流程。这两种平台
1832 0
CrewAI与LangGraph:下一代智能体编排平台深度测评
|
Arthas 监控 IDE
Arthas 全攻略:让调试变得简单
Arthas 全攻略:让调试变得简单
880 7
|
Arthas 监控 Java
Arthas watch (方法执行数据观测)
Arthas watch (方法执行数据观测)
1474 12