aviatorscript
aviatorscript copied to clipboard
A high performance scripting language hosted on the JVM.
``` Caused by: java.lang.ExceptionInInitializerError: null at com.googlecode.aviator.AviatorEvaluator.getInstance(AviatorEvaluator.java:112) ~[na:na] at com.googlecode.aviator.AviatorEvaluator.(AviatorEvaluator.java:61) ~[na:na] at com.github.dudiao.cli.sia.ExtractExcelAutoConfiguration.cliAviator(ExtractExcelAutoConfiguration.java:23) ~[nboot-cli:na] at com.github.dudiao.cli.sia.ExtractExcelAutoConfiguration$$SpringCGLIB$$0.CGLIB$cliAviator$0() ~[nboot-cli:na] at com.github.dudiao.cli.sia.ExtractExcelAutoConfiguration$$SpringCGLIB$$2.invoke() ~[nboot-cli:na] at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:257) ~[nboot-cli:6.0.2] at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[na:na] at com.github.dudiao.cli.sia.ExtractExcelAutoConfiguration$$SpringCGLIB$$0.cliAviator() ~[nboot-cli:na] at...
我看到com.googlecode.aviator.AviatorEvaluatorInstance#compile(java.lang.String, java.lang.String, java.lang.String, boolean),这个方法在expressionLRUCache开启的时候,每次都会对expressionLRUCache做synchronized,来达到线程安全的目的。 但多线程场景下,LinkedHashMap_lru实现比其他cache实现性能慢上很多,想了解下当时是怎么考量的。同时我也看到了AviatorEvaluatorInstance对expressionLRUCache和expressionCache做了很多判断和区分逻辑。那有没有可能expressionCache定义成一个interface,然后允许集成方自己实现,然后注入到AviatorEvaluatorInstance中? 这个只是一个带问题性质的讨论,打扰作者了
环境:Java 8 ,avaitor版本:5.41 情况描述:我这边获取了AviatorEvaluatorInstance后,执行表达式“e1001+e1003”,方法直接在http接口中调用,能够正常解析出两个变量e1001和e1003,但是在消息队列中调用解析出来的变量名称是0,有时候关掉缓存又能用,但是第二天又不行了  
  com.googlecode.aviator.exception.ExpressionSyntaxErrorException: Syntax error: insert ')' to complete statement at 29, lineNumber: 1, token : [type='Char',lexeme=')',index=29], while parsing expression: ` print((seq.get(o.oprninfos,0))^^^ ` at com.googlecode.aviator.AviatorEvaluatorInstance.innerCompile(AviatorEvaluatorInstance.java:1505) at com.googlecode.aviator.AviatorEvaluatorInstance.access$000(AviatorEvaluatorInstance.java:186) at com.googlecode.aviator.AviatorEvaluatorInstance$2.call(AviatorEvaluatorInstance.java:1478) at...
计算数据是2560 * 2560大小的float[] 目前测试最慢的地方需要120s左右计算完成,想问一下还可以在那些方面优化,我不需要很高的精度 公式: `(TD == 12 || TD == 13)?(6000.0*0.018*(1-W)*math.sum((5.5
![Uploading 捕获.PNG…]() 此段代码如果输出的结果是非 String 类型 的数据会报错,因为无法强转,建议改为 /** * Get string value from env. * * @param arg the var name * @param env * @return */ public static final String...
是否有计划支持java AOT
编译expression类时,版本4.2.5 aviatorscript会默认先加载为匿名类,但我们跟踪aviator的编译类代码发现,在加载匿名类时,永远失败,导致最终都使用传入loaderclass加载类,导致这些被加载的脚本类无法卸载
使用如下工具类 AviatorUtilsDemo将表达式编译后的字节流(bytes[])结果存入redis,然后取出反序列化报错 deserializeExpression方法报错: `2024-08-22 17:00:02.770 [http-nio-8083-exec-2] ERROR com.xxx.RestExceptionHandler:23 - org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.LinkageError: loader (instance of com/googlecode/aviator/parser/AviatorClassLoader): attempted duplicate class definition for name: "AviatorScript_1724315357698_58"` 序列化和反序列化代码 ```java...
举例:(a||b)&&c,a=true,b=false,d=false,未指定c,则c默认为false,得到最终结果为false