Aviator(表达式执行引擎)发布1.0.1
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相关推荐
- aviator教程-表达式执行引擎
转载自:https://blog.csdn.net/u011870280/article/details/80400959 github:https://github.com/killme2008/a ...
- 首个Laravel工作流引擎发布 V1.0正式版
工作流在日常得系统开发中不常见,因为大部分能应用上流程引擎得都是大系统,大集团,或者政企客户.Tpflow作为开发比较久得工作流引擎,一直不支持Laravel. 辛酸历程: 2022年3月,我们立项开 ...
- 水星三维引擎发布2.0版本 ~友情帮介绍下~
水星科技自主研发的三维引擎系统,功能完善,技术先进,内置编辑器功能,可应用于三维游戏.产品演示.操作培训等多种领域. 发展历程 该产品源自水星科技在三维虚拟现实领域的不断研发和项目实践,同时也包含了与 ...
- aviator表达式教程
Aviator是一个轻量级.高性能的Java表达式执行引擎,它动态地将表达式编译成字节码并运行. 特性包括: 支持绝大多数运算操作符,包括算术操作符.关系运算符.逻辑操作符.位运算符.正则匹配操作符( ...
- Aviator表达式应用
简介 Aviator是一个轻量级.高性能的Java表达式执行引擎. 特点 1.轻量级.高性能:整体大小450K: 2.先编译后执行: 3.支持大部分运算符,自定义函数. 包Maven依赖 <de ...
- JsonPath 搭配 Aviator 表达式引擎使用案例
导语 推荐读者阅读较为官方的Aviator说明文档,本文是笔者使用过程中的笔记小结,知识可能比较零散和片面,敬请谅解 jsonpath 推荐官方文档:https://gitee.com/mirrors ...
- java编写正则表达式引擎_从0到1打造正则表达式执行引擎(一)
我这里给大家奉上一篇硬核教程.首先声明,这篇文章不是教你如何写正则表达式,而是教你写一个能执行正则表达式的执行引擎. 网上教你写正则表达式的文章.教程很多,但教你写引擎的并不多.很多人认为我就是用用而 ...
- beetl模板使用场景_Java 模板引擎 Beetl 2.0 发布
Java开源模板引擎 Velocity Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由 ...
- Python源码剖析[19] —— 执行引擎之一般表达式(2)
Python源码剖析 --Python执行引擎之一般表达式(2) 本文作者: Robert Chen(search.pythoner@gmail.com ) 3.2 Simple.py 前面我 ...
最新文章
- cisco dhcp vlan vrrp ospf 实验
- Qt Creator指定依赖项
- php xml 格式化,php简单处理XML数据的方法示例
- CSS中的层叠性、继承性、优先级、权重
- Hexo博客搭建与部署
- CodeForces 484B Maximum Value
- 计算机辅助设计与制造专业课程,《计算机辅助设计与制造》课程实验指导书
- 【转载】推荐5款超实用的.NET性能分析工具
- 果园机器人反思稿_《果园机器人》教学反思
- python 重命名文件出现乱码_下载的文件名总是「乱码」?这里有各平台的解决方法...
- MySql数据库帮助类:DbHelperMySQL
- 《快速开发》通过Maven创建WebService项目Hello World!
- 机器学习入门:隐马尔科夫模型-8
- 信息论与编码冯桂周林著答案_信息论与编码(信息与通信工程高等学校电子信息类专业系列教材)...
- TCP / UDP测试工具——tcpudptest使用总结
- 迅雷iOS端安装 - iPhone安装手机迅雷
- Linux grep命令详解:查找文件内容
- 人工智能与大数据的区别
- 移动硬盘在Mac上无法拷贝或删除文件的解决办法
- python的彪悍特性--自省
热门文章
- Python练习 | Python 可迭代对象 迭代器
- 光流 | MATLAB实现 Brox Optical Flow(代码类)
- Qt学习(十一):QT设置静态数据库
- 树莓派4B设置静态IP
- 在云服务器上执行C程序和python程序(centos系统)
- MSG结构体和WndProc窗口过程详解
- 消息和事件的区别 VC++解惑
- json支持的最大长度_Swifter.Json 可能是 .Net 平台迄今为止性能最佳的 Json 序列化库【开源】...
- 第四范式荣获2020年度信创工委会 “卓越贡献成员单位”称号
- rust(33)-Rust and WebAssembly(1)