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

对于类似”1+2″这样由常量组成的表达式,会在编译的时候直接计算出结果而非生成字节码运行时计算。非常量组成的表达式如”3.14*R*R+4/2″也会在编译的时候优化成”3.14*R*R+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——轻量级表达式执行引擎

转载于:https://blog.51cto.com/aliapp/1325698

Aviator(表达式执行引擎)发布1.0.1相关推荐

  1. aviator教程-表达式执行引擎

    转载自:https://blog.csdn.net/u011870280/article/details/80400959 github:https://github.com/killme2008/a ...

  2. 首个Laravel工作流引擎发布 V1.0正式版

    工作流在日常得系统开发中不常见,因为大部分能应用上流程引擎得都是大系统,大集团,或者政企客户.Tpflow作为开发比较久得工作流引擎,一直不支持Laravel. 辛酸历程: 2022年3月,我们立项开 ...

  3. 水星三维引擎发布2.0版本 ~友情帮介绍下~

    水星科技自主研发的三维引擎系统,功能完善,技术先进,内置编辑器功能,可应用于三维游戏.产品演示.操作培训等多种领域. 发展历程 该产品源自水星科技在三维虚拟现实领域的不断研发和项目实践,同时也包含了与 ...

  4. aviator表达式教程

    Aviator是一个轻量级.高性能的Java表达式执行引擎,它动态地将表达式编译成字节码并运行. 特性包括: 支持绝大多数运算操作符,包括算术操作符.关系运算符.逻辑操作符.位运算符.正则匹配操作符( ...

  5. Aviator表达式应用

    简介 Aviator是一个轻量级.高性能的Java表达式执行引擎. 特点 1.轻量级.高性能:整体大小450K: 2.先编译后执行: 3.支持大部分运算符,自定义函数. 包Maven依赖 <de ...

  6. JsonPath 搭配 Aviator 表达式引擎使用案例

    导语 推荐读者阅读较为官方的Aviator说明文档,本文是笔者使用过程中的笔记小结,知识可能比较零散和片面,敬请谅解 jsonpath 推荐官方文档:https://gitee.com/mirrors ...

  7. java编写正则表达式引擎_从0到1打造正则表达式执行引擎(一)

    我这里给大家奉上一篇硬核教程.首先声明,这篇文章不是教你如何写正则表达式,而是教你写一个能执行正则表达式的执行引擎. 网上教你写正则表达式的文章.教程很多,但教你写引擎的并不多.很多人认为我就是用用而 ...

  8. beetl模板使用场景_Java 模板引擎 Beetl 2.0 发布

    Java开源模板引擎 Velocity Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由 ...

  9. Python源码剖析[19] —— 执行引擎之一般表达式(2)

    Python源码剖析 --Python执行引擎之一般表达式(2) 本文作者: Robert Chen(search.pythoner@gmail.com ) 3.2     Simple.py 前面我 ...

最新文章

  1. cisco dhcp vlan vrrp ospf 实验
  2. Qt Creator指定依赖项
  3. php xml 格式化,php简单处理XML数据的方法示例
  4. CSS中的层叠性、继承性、优先级、权重
  5. Hexo博客搭建与部署
  6. CodeForces 484B Maximum Value
  7. 计算机辅助设计与制造专业课程,《计算机辅助设计与制造》课程实验指导书
  8. 【转载】推荐5款超实用的.NET性能分析工具
  9. 果园机器人反思稿_《果园机器人》教学反思
  10. python 重命名文件出现乱码_下载的文件名总是「乱码」?这里有各平台的解决方法...
  11. MySql数据库帮助类:DbHelperMySQL
  12. 《快速开发》通过Maven创建WebService项目Hello World!
  13. 机器学习入门:隐马尔科夫模型-8
  14. 信息论与编码冯桂周林著答案_信息论与编码(信息与通信工程高等学校电子信息类专业系列教材)...
  15. TCP / UDP测试工具——tcpudptest使用总结
  16. 迅雷iOS端安装 - iPhone安装手机迅雷
  17. Linux grep命令详解:查找文件内容
  18. 人工智能与大数据的区别
  19. 移动硬盘在Mac上无法拷贝或删除文件的解决办法
  20. python的彪悍特性--自省

热门文章

  1. Python练习 | Python 可迭代对象 迭代器
  2. 光流 | MATLAB实现 Brox Optical Flow(代码类)
  3. Qt学习(十一):QT设置静态数据库
  4. 树莓派4B设置静态IP
  5. 在云服务器上执行C程序和python程序(centos系统)
  6. MSG结构体和WndProc窗口过程详解
  7. 消息和事件的区别 VC++解惑
  8. json支持的最大长度_Swifter.Json 可能是 .Net 平台迄今为止性能最佳的 Json 序列化库【开源】...
  9. 第四范式荣获2020年度信创工委会 “卓越贡献成员单位”称号
  10. rust(33)-Rust and WebAssembly(1)