当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

Fast EL

表达式计算引擎
授权协议 Apache
开发语言 Java
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 萧嘉茂
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

fast-el 是轻量级的高效的表达式计算引擎,源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求。

Fel 是开放的,引擎执行中的多个模块都可以扩展或替换。Fel 的执行主要是通过函数实现,运算符(+、-等都是Fel函数),所有这些函数都是可以替换的,扩展函数也非常简单。

Fel 有双引擎,同时支持解释执行和编译执行。可以根据性能要求选择执行方式。编译执行就是将表达式编译成字节码(生成java代码和编译模块都是可以扩展和替换的) 

Fel基于 Java 1.5 开发,适用于 Java 1.5 及以上版本。

具体的测试数据请参见 http://code.google.com/p/fast-el/wiki/Performance

特点:

易用性:API使用简单,语法简洁,和java语法很相似。

轻量级:整个包只有300多KB。

高 效:目前没有发现有开源的表达式引擎比Fel快。

扩展性:采用模块化设计,可灵活控制表达式的执行过程。

根函数:Fel支持根函数,“count(1,2,3)”在Fel中是常用的使用函数的方式。

不足:

支持脚本:否。

支持数组:否。Fel不支持类似于arrayi?这样的语法,可以通过其他方法获取数据值。后续版本可以改进。

支持三元表达式:否。后续版本可以改进。

适应场景:

Fel适合处理海量数据,Fel良好的扩展性可以更好的帮助用户处理数据。

Fel同样适用于其他需要使用表达式引擎的地方(如果工作流、公式计算、数据有效性校验等等)

Fel使用例子:

执行四则表达式,代码如下所示:

1:常量表达式:

FelEngine fel = new FelEngineImpl();
Object result = fel.eval("5000*12+7500");
System.out.println(result);

输出结果:67500

2:变量

使用变量,其代码如下所示:
FelContext ctx = fel.getContext();
ctx.set("单价", 5000);
ctx.set("数量", 12);
ctx.set("运费", 7500);
Object result = fel.eval("单价*数量+运费");
System.out.println(result);

输出结果:67500

  • http://www.iteye.com/news/22797 http://www.iteye.com/topic/1114021 温少的: http://www.iteye.com/topic/993292  simpleEl apache :http://lqw.iteye.com/blog/528254   jxel

  • 有时候我们需要在Element-UI中实现这样的一个效果,鼠标水平拖动,表格也水平滚动,这样可以隐去滚动条! 一、元素增加三个事件 <template> <el-table @mousedown.native="mouseDownHandler" @mouseup.native="mouseUpHandler" @mouse

  • 项目新功能需要用到抽屉 但是直接使用el-drawer报错 升级了element-ui也没用 这个项目element-ui 版本是2.8.2 没有日历 抽屉等组件(项目模版一直用公司之前的) 但是更新element-ui后 仍然没有 报错 未注册 就是找不着不认呗 网上查少有类似 发现 src下的element-ui index文件 从element-ui里 import了一些插件 eg:分页 弹

  • <div class="form-group row"> <label class="control-label col-xs-12 col-sm-2">{:__('Spec')}:</label> <div class="col-xs-12 col-sm-8"> <table class="table table-responsive fi

  • require 引入第三方js public/assets/js/require-backend.js 文件paths添加引入文件 表单使用Vue提交处理 add.html 移除 class layer-footer <div class="form-group"> <label class="control-label col-xs-12 col-sm-2"></labe

 相关资料
  • 使用DevTools控制台的求值计算功能,探测页面上任何项的状态。 DevTools控制台允许您以特别的方式了解页面中项的状态。他可以计算JavaScript的任何表达式,控制台本身支持几个功能。 TL;DR 计算键入的表达式。 使用其中一个快捷方式选择元素。 使用 inspect()检查DOM元素和JavaScript对象。 使用$0 - 4访问最近选择的元素和对象。 操作表达式 在控制台中输入

  • 主要内容:示例在MS Access中,表达式就像Excel中的公式。 这包括一些可以单独使用或组合使用以产生结果的元素。 表达式可以包括运算符,常量,函数和标识符。 表达式可用于执行各种任务,从检索控件的值或将查询条件提供给查询来创建计算的控件和字段,或者为报表定义组级别。 在本章中,我们将着重于创建一个称为计算表达式的非常具体的表达式。创建几个计算的字段,这些字段将计算并显示不存储在数据库本身任何位置的数据,

  • 当我们想临时修攺某个变量的值或查看其内部方法返回值的时候,可以使用计算表达式功能. Android Studio中提供了一个计算表达式和代码片段的功能, 使用起来非常方便.它除了支持正则表达式计算以外,还支持操作表达式,匿名表达式和内部类的计算. 两种计算模式: Expression Mode: 计算单行表达式 Code Fragment Mode: 计算代码片段, 我们可以对声明、赋值、循环和i

  • Evaluates simple math expression like 2*4 or 10/2 and outputs its result. You can use \ operator which is equivalent to round(a/b). 计算简单的数学表达式,比如2*4 或 10/2,并输出结果。\ 操作符结果同 round(a/b)。 Very useful in CS

  • 这是一个理论上的问题: 我必须计算一个表达式,我已经从中缀转换到后缀。后缀保存在中,因为我希望避免使用。这样我就知道数字之间的除法在哪里,我可以按“正确”的顺序访问它。 它看起来是这样的: 现在我想用两个堆栈: null 如果我到达一个运算符,并且数量计数至少为2,我将执行该操作并将其推到目标堆栈上。到达原始堆栈的末尾(现在是空的),我会把所有的东西都传递给它,然后从头开始,直到只剩下结果。 我现

  • 8 表达式计算/求值 在计算表达式时,ffmpeg通过libavutil/eval.h接口调用内部计算器进行计算。 表达式可以包含一元运算符、运算符、常数和函数 两个表达式expr1和expr2可以组合起来成为”expr1;expr2” ,两个表达式都会被计算,但是新表达式(组合起来的)值实为表达式expr2的值。 表达式支持的二元运算符有:+,-,*,/,^ 一元运算符:+,- 以及下面的函数:

  • 我们正在使用iReport 5.0.1,并且已经成功地转换了我们的许多水晶报告包。 我正在处理整数和双精度数据类型的混合数据,并且我正在详细信息部分的变量字段中执行计算。 然后,我有3个变量对详细数据求和。第一个变量是上面的细节变量的直接和。第二个根据IF..THEN.ELSE语句添加一个参数或第二个参数,第三个根据类似的IF..THEN.ELSE语句减去相同的参数值。 我需要舍入组页脚中的3个变

  • 使用表达式 例5.1 使用表达式 #!/usr/bin/python # Filename: expression.py length =5 breadth =2 area = length * breadth print'Area is', area print'Perimeter is', 2* (length + breadth) (源文件:code/expression.py) 输出 $