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

SimpleEL

表达式解析引擎
授权协议 未知
开发语言 Java
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 戴建义
操作系统 跨平台
开源组织 阿里巴巴
适用人群 未知
 软件概览

Simple EL是一个表达式解析引擎。它将表达式解析分成四个部分:预处理、编译、缓存和执行。这四个步骤任意一部分都可以替换,类似设计模式中的Template Method。

缺省的实现是:将表达式处理成Java Source,调用Tools.jar的Javac API动态编译,缓存变异后反射得到的实例,使得表达式的解析速度和Java静态编译的速度接近。

这是一个性能极致、扩展性良好的表达式解析引擎。

介绍项目的PPT:http://code.alibabatech.com/svn/SimpleEL/trunk/doc/SimpleEL.pptx 
SVN:http://code.alibabatech.com/svn/SimpleEL 
JIRA:http://code.alibabatech.com/jira/browse/SIMPLEEL 
wiki:http://code.alibabatech.com/wiki/display/SimpleEL/Home 

使用范例: 

import com.alibaba.simpleEL.eval.DefaultExpressEvalService;  
import com.alibaba.simpleEL.preprocess.DefaultVariantResolver.Type;  
  
DefaultExpressEvalService service = new DefaultExpressEvalService();  
service.regsiterVariant(Type.Integer, "a", "b"); // 注册两个类型为Integer的变量  
  
Map ctx = new HashMap();  
ctx.put("a", 3);  
ctx.put("b", 4);  
  
Assert.assertEquals(7, service.eval(ctx, "@a + @b"));
  • Simple EL是一个表达式解析引擎。它将表达式解析分成四个部分:预处理、编译、缓存和执行。这四个步骤任意一部分都可以替换,类似设计模式中的Template Method。 SimpleEL将表达式处理成Java Source,调用Tools.jar的Javac API动态编译,缓存编译后反射得到的实例,使得表达式的解析速度和Java静态编译的速度接近。 这是一个性能极致、扩展性良好的表达式解析

  • <!-- jsp 的声明 --> <%! int m =10; int n =20; public void aa(){ } %> <hr/> <!-- jsp的脚本表达式 --> <%= "aaaa" %>

  • Fel是最近javaeye比较火的关键词,这是由网友lotusyu开发的一个高性能的EL,从作者给出的数据来看,性能非常优异,跟前段时间温少开源的Simple EL有的一拼。首先要说,这是个好现象,国内的开源项目越来越多,可以看出开发者的水平是越来越高了,比如我最近还看到有人开源的类似kestel的轻量级MQ——fqueue也非常不错,有兴趣可以看下我的分析《fqueue初步分析》。 进入正文,本

  • vuex数据更新后,插件中使用数据的地方没有更新,刷新浏览器后,vuex数据再次存放,而el-table却没有数据。 //el-table绑定数据 <el-table :data="tableData" style="width: 100%"> data() { return { tableData: this.$store.state.userSto

  • 方法: //在接口获取数据成功之后进行,需要用nextTick包裹,否则获取不到dom元素 this.$nextTick(() => { [...document.querySelectorAll('.el-steps .el-step__icon div')].forEach((el, index, arr) => { console.log(el,arr.length - index,

  • 完整错误信息 2022-11-28 16:24:47 ERROR (TemplateEngine.java:1136)- [THYMELEAF][http-nio-8080-exec-4] Exception processing template "admin/types": An error happened during template parsing (template: "class

  • const arr = res.data.data.menuidList; arr.forEach((item, index) => { const node = this.$refs.tree.getNode(item); if (node.isLeaf) { this.$refs.tree.setChecked(n

  • <template> <div class="app-container"> <el-button size="mini" @click.native="openTable(true)" >展开</el-button > <el-button size="mini" @click.native="openTab

  • 目前在实现文件上传功能,使用vue-simple-uploader,目前初步封装了一个组件,详细内容日后补充: <template> <div id="global-uploader"> <uploader :options="simpleUploader.options" :key="simpleUploader.uploaderKey" @fil

 相关资料
  • 我正在寻找一个JAVA库来解析 我的要求: 支持所有的值类型(例如int,双,布尔,String等) 支持所有已知的数学 有什么建议吗?

  • 由来 很多JavaBean嵌套有很多层对象,这其中还夹杂着Map、Collection等对象,因此获取太深的嵌套对象会让代码变得冗长不堪。因此我们可以考虑使用一种表达式还获取指定深度的对象,于是BeanResolver应运而生。 原理 通过传入一个表达式,按照表达式的规则获取bean下指定的对象。 表达式分为两种: .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值 []表

  • 编写算术表达式的方法称为notation 。 算术表达式可以用三种不同但等效的符号书写,即不改变表达式的本质或输出。 这些符号是 - Infix Notation 前缀(波兰语)表示法 后缀(反向波兰)表示法 这些符号被命名为它们如何在表达式中使用运算符。 我们将在本章中学到相同的内容。 中缀表示法 我们用中infix表示法编写表达式,例如a - b + c,其中运算符用in操作数之间。 我们人类

  • 本文向大家介绍Java 8 引入lambda表达式的原因解析,包括了Java 8 引入lambda表达式的原因解析的使用技巧和注意事项,需要的朋友参考一下 在Java8出现之前,如果你想传递一段代码到另一个方法里是很不方便的。你几乎不可能将代码块到处传递,因为Java是一个面向对象的语言,因此你要构建一个属于某个类的对象,由它的某个方法来放置你想传递的代码块。 下面看两个非常典型的例子,构造线程与

  • Java中的正则表达式问题。我正在从元素href属性中提取Id号。我在一个字符串中有一堆这样的链接:

  • 问题内容: 有什么方法可以在python中的流上使用正则表达式匹配吗?喜欢 而且我不想通过获取整个字符串的值来做到这一点。我想知道是否有任何方法可以在srtream上匹配正则表达式(即时)。 问题答案: 我有同样的问题。首先想到的是实现一个类,该类的作用类似于字符串,但仅从流中读取当前所需的数据(我通过重新实现并提取和缓冲字符直到访问的最高位置来完成此操作……)。 这没有解决(我从中得到了“ Ty