QLExpress和Groovy对比

原理

Groovy

  • groovy基于JVM运行。
    • 编译时:将源文件编译成class文件后,用java的classLoader加载;
    • 运行时:直接用groovy classLoader加载
      在这里插入图片描述

QLExpress

  • QLExpress将文本解析成AST,用java对象表达后执行。
    在这里插入图片描述

特点

Groovy

  • 优点
    • 兼容性强,上手成本低。和java基本无缝兼容,熟悉java的同学上手无压力。
    • 发展历史悠久。功能强大。
  • 缺点
    • 使用疏忽时容易产生一系列OOM问题。

QLExpress

  • 优点
    • 线程安全,引擎运算过程中的产生的临时变量都是threadlocal类型。
    • 高效执行,比较耗时的脚本编译过程可以缓存在本地机器,运行时的临时变量创建采用了缓冲池的技术,和groovy性能相当。
    • 弱类型脚本语言,和groovy,javascript语法类似,虽然比强类型脚本语言要慢一些,但是使业务的灵活度大大增强。
    • 安全控制,可以通过设置相关运行参数,预防死循环、高危系统api调用等情况。
    • 代码精简,依赖最小,250k的jar包适合所有java的运行环境,在android系统的低端pos机也得到广泛运用。
    • 扩展性强。可以导入jvm中的类,或者自定义扩展操作符。

例子

相关文档

  • Groovy 官网
  • alibaba/QLExpress github
  • QLExpress代码解读,运行原理解析
  • java脚本引擎的设计原理浅析
  • Groovy与Java集成常见的坑
  • Groovy灵活,但请小心–记一次FullGC分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/321399.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何用LLM和自有知识库搭建智能agent?

用LangChain建立知识库,文末中也推荐其他方案。 项目源码:ChatPDF实现 LangChain Indexes使用 对加载的内容进行索引,在indexes中提供了一些功能: Document Loaders,加载文档Text Splitters,文档切分V…

android.os.NetworkOnMainThreadException

问题 android.os.NetworkOnMainThreadException详细问题 核心代码如下: import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ja…

【Java】IDEA中的JFormDesigner使用教程

目录 1 安装 JFormDesigner 插件2 JFormDesigner 使用教程2.1 新建JFormDesigner Form时的选项2.2 JFormDesigner Form界面布局2.3 JFormDesigner 常用组件 JFormDesigner 是一款用于设计和创建图形用户界面(GUI)的插件,它允许开发者使用可视…

鸿蒙Harmony-相对布局(RelativeContainer)详解

成年人的世界,从来没有容易二字,想要什么,就得凭自己的努力去拿,遇到事情就得自己生生的硬抗,希望你即使再辛苦,但还是会选择这滚烫的人生,加油陌生的朋友们 目录 一,定义 二&#x…

瑞_Java开发手册_(一)编程规约

文章目录 编程规约的意义(一)命名风格(二)常量定义(三)代码格式(四)OOP 规约(五)日期时间(六)集合处理(七)并发…

网络分流规则

现在的网络是越来越复杂。 有必要进行分流。 有一些geosite.dat是已经整理好的,包含许多的网站的分类: 分流规则: route规则 主要是: {"type": "field","outboundTag": "direct","domain&quo…

Material Design 进阶(十一)——Chip,ChipGroup,ChipDrawable使用

流式布局标签发展历程 第一阶段:实现这种界面的时候,基本都是自定义一个控件,然后在Java代码中动态的 添加一个个的TextView,还需要计算布局宽度/高度,进行换行等等处理,比较复杂;第二阶段:使用…

cad二次开发autolisp(一)

文章目录 一、概述1.1 简介1.2 打开编辑器1.3 调试页面 二、数据类型三、函数3.1 用户函数 四、语句4.1 常规语句4.2 流程控制语句 五、图元操作5.1 定义5.2 图元选择5.3 图元属性列表 一、概述 1.1 简介 简介:cad 二次开发语言,后缀名*.lsp适用于编写…

恒源云GPU服务器使用Linux图形化界面

编程如画,我是panda! 干货满满,不要走开~ 前言 前一节分享了如何在GPU云服务器上创建实例并运行YOLOV5项目,但是使用命令行的方式容易劝退很多小白,并且有些环境配置是需要图形化界面的,所以这一节就教大家…

1119: 一维数组排序(数组)

题目描述 对一维数组按照从小到大的顺序排序。程序定义函数sort()来实现数组a的排序。函数原型如下&#xff1a; void sort(int a[], int n); 数组元素的输出调用PrintArr()。 输入 第一行输入一个整数n&#xff08;1<n<10)&#xff0c;表示数组有n个整数&#xff…

SpringFramework实战指南(一)

SpringFramework实战指南&#xff08;一&#xff09; 一、技术体系结构1.1 总体技术体系1.2 框架概念和理解 一、技术体系结构 1.1 总体技术体系 单一架构 一个项目&#xff0c;一个工程&#xff0c;导出为一个war包&#xff0c;在一个Tomcat上运行。也叫all in one。 单一架…

SpringBoot-项目部署

SpringBoot项目部署可以通过将项目打成可执行的jar包或war包来实现&#xff0c;也可以使用容器化技术如Docker将项目部署到云平台中。在部署时需要注意配置文件的位置和启动参数的设置&#xff0c;同时确保目标环境中的Java版本与项目所需的Java版本一致。部署完成后&#xff0…

1 快速前端开发

前端开发 1 前端开发1.快速开发网站2.浏览器能识别的标签2.1 编码&#xff08;head&#xff09;2.2 title&#xff08;head&#xff09;2.3 标题2.4 div和span2.4.5 超链接2.4.6 图片小结2.4.7 列表2.4.8 表格2.4.9 input系列&#xff08;7个&#xff09;2.4.10 下拉框2.4.11 多…

非线性方程求根迭代法(C++)

文章目录 问题描述算法描述不动点迭代法一维情形多维情形 牛顿迭代法单根情形重根情形 割线法抛物线法逆二次插值法 算法实现准备工作一般迭代法割线法抛物线法逆二次插值法 实例分析例1例2 迭代法是一种求解非线性方程根的方法, 它通过构造一个迭代过程, 将一个非线性方程转化…

10.抽象工厂模式

江湖上再也没人找林家的麻烦了。因为林平之一怒之下将辟邪剑谱公诸天下。一下子印出去几万份&#xff0c;江湖上人人都能轻而易举的得到这本无尚武学&#xff1b;然而江湖人士却陷入深深的矛盾之中&#xff1a; 不练&#xff0c;别人练了&#xff0c;分分钟秒杀你&#xff1b;练…

【InternLM 大模型实战】第五课

LMDeploy 大模型量化部署实践 大模型部署背景模型部署定义&#xff1a;产品形态计算设备 大模型特点内存开销巨大动态shape相对视觉模型&#xff0c;LLM结构简单 大模型部署挑战设备推理服务 大模型部署方案技术点方案云端移动端 LMDeploy 简介高效推理引擎完备易用的工具链支持…

【MATLAB随笔】GUI编程(未完结)

文章目录 一、创建图窗1.1 figure 函数详解1.11 窗口标识1.12 窗口外观1.13 位置和大小 二、xxx 一、创建图窗 跟很多GUI编程一样的&#xff0c;先创建一个基本的图窗&#xff0c;然后再添加按钮、文章、标签&#xff0c;绑定函数等等&#xff0c;比如python的tkinter。 MATL…

数组笔试题详解

文章目录 数组笔试题解析总结: 数组笔试题解析 我们可以通过做题来加深我们对数组及相关知识的理解,下面的笔试题解答正确的关键在于下面这点,一定要牢记: 数组名是首元素地址,两种情况除外: 1.sizeof(数组名) , 这是这是计算整个数组的大小,单位是字节; 2.&数组名 , 得出…

RT-Thread:STM32实时时钟 RTC开启及应用

说明&#xff1a;STM32F103/407系列基于 RT-Thread 系统的 RTC 开启及应用 应用流程介绍。 1. RTC功能开启 1.1 开启系统RTC驱动 1.2 打开系统RTC相关的宏 1.3 打开库函数 RTC 相关的宏 完成以上系统配置&#xff0c;编译无误情况下RTC 就已经开启了。 2. RTC 应用 官方 AP…

服务器里面很卡,打开文件卡住了一般是什么问题,怎么解决

随着互联网业务的快速发展&#xff0c;各项业务都绕不开服务器。在日常使用中&#xff0c;服务器有着非常重要的作用。而我们日常使用中&#xff0c;也会遇到各种各样的问题。最近就有遇到用户联系咨询德迅云安全&#xff0c;询问自己服务器突然很卡&#xff0c;打开文件都卡住…