03.仿简道云公式函数实战-QLExpress初探

1. 前言

在上一篇文章中,我们简单介绍了一下表达式引擎,并引出我们的主角QLExpress.在这篇文章中,我们先来一个QLExpress的热身。

2. 初探QLExpress

源码地址:https://github.com/alibaba/qlExpress

笔者下载源码的版本是3.3.1-SNAPSHOT快照版。下载源码后,代码结构如下图所示

大家在学习的时候,主要关注test包下的测试案例即可。

3. helloword程序

首选我们在test包下创建自己学习的包名,笔者建立的是self包,self包下创建helloworld包。如图所示:

代码如下:

/*** 类描述: 入门程序 helloworld* @author admin* @version 1.0.0* @date 2023/11/13 13:02*/
public class HelloWorld {@Testpublic void test() throws Exception{ExpressRunner runner = new ExpressRunner();DefaultContext<String, Object> context = new DefaultContext<String, Object>();context.put("a",1);context.put("b",2);context.put("c",3);String express = "a+b*c";Object r = runner.execute(express, context, null, true, false);System.out.println(r);}
}

代码说明:相信有程序基础的小伙伴,这段代码应该难不住大家。

ExpressRunner:

语法分析和计算的入口类

DefaultContext:

表达式计算的数据注入接口,作者程序中默认的实现类

execute:执行方法,代码如下

/*** 执行一段文本** @param expressString 程序文本* @param context       执行上下文* @param errorList     输出的错误信息List* @param isCache       是否使用Cache中的指令集* @param isTrace       是否输出详细的执行指令信息* @return* @throws Exception*/
public Object execute(String expressString, IExpressContext<String, Object> context, List<String> errorList,boolean isCache, boolean isTrace) throws Exception {return this.execute(expressString, context, errorList, isCache, isTrace, null);
}

代码的运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL源码剖析笔记——适配器(adapters)

系列文章目录 STL源码剖析笔记——迭代器 STL源码剖析笔记——vector STL源码剖析笔记——list STL源码剖析笔记——deque、stack&#xff0c;queue STL源码剖析笔记——Binary Heap、priority_queue STL源码剖析笔记——AVL-tree、RB-tree、set、map、mutiset、mutimap STL源…

【Spring 基础】00 入门指南

【Spring 基础】00 入门指南 文章目录 【Spring 基础】00 入门指南1.简介2.概念1&#xff09;控制反转&#xff08;IoC&#xff09;2&#xff09;依赖注入&#xff08;DI&#xff09; 3.核心模块1&#xff09;Spring Core2&#xff09;Spring AOP3&#xff09;Spring MVC4&…

php实现截取姓名中的第一个字作为头像的实战记录

php 截取中文字符串第一个字 substr 函数 在 PHP 中&#xff0c;使用 substr 函数来截取中文字符串的第一个字。由于 PHP 默认的字符编码是 UTF-8&#xff0c;它可以正确处理中文字符。 $chineseString "你好世界"; $firstChar substr($chineseString, 0, 1); e…

vue2 组件内路由守卫使用

1、beforeRouteEnter 进入页面 to – 即将要跳转到的页面 form – 跳转前的页面&#xff0c;从哪个页面跳转过来的 next – 下一步&#xff0c;若无指定跳转的路由&#xff0c;设置为空 next() 即可 beforeRouteEnter(to, from, next) {next() }, 使用 beforeRouteEnter 时&…

中文分词演进(查词典,hmm标注,无监督统计)新词发现

查词典和字标注 目前中文分词主要有两种思路&#xff1a;查词典和字标注。 首先&#xff0c;查词典的方法有&#xff1a;机械的最大匹配法、最少词数法&#xff0c;以及基于有向无环图的最大概率组合&#xff0c;还有基于语言模型的最大概率组合&#xff0c;等等。 查词典的方法…

知识产权服务企业网站建设效果如何

知识产权服务也有较高的市场需求度&#xff0c;尤其如今互联网深入到各个行业&#xff0c;无论个人还是企业都会以不同的方式经营&#xff0c;相应的为保障自身权益&#xff0c;注册商标、专利等自然不可少&#xff0c;而对普通小白来说&#xff0c;想要完成这些流程也是有些难…

Python实现获取b站视频的弹幕内容

前言 本文是该专栏的第39篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,有详细介绍使用python增加b站视频的播放量方法,感兴趣的同学可往前翻阅《Python-增加b站视频播放量》。而本文,笔者再来单独的详细介绍,通过python来获取b站视频的弹幕内容。如下…

CGAL的3D皮肤表面网格

1、介绍 Edelsbrunner 引入的皮肤表面和具有丰富而简单的组合和几何结构&#xff0c;使其适合在生物计算中模拟大分子。 对这些表面进行网格划分通常是进一步处理其几何形状所必需的&#xff0c;例如在数值模拟和可视化中。 皮肤表面由一组加权点&#xff08;输入球&#xff09…

力扣labuladong——一刷day70

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣814. 二叉树剪枝二、力扣1325. 删除给定值的叶子节点 前言 这道题的难点在于要一直剪枝&#xff0c;直到没有值为 0 的叶子节点为止&#xff0c;只有从…

RecursionError: maximum recursion depth exceeded in comparison

诸神缄默不语-个人CSDN博文目录 这个bug的产生原因是运行rouge包时句子太长&#xff0c;所以递归次数过多了。完整的报错信息懒得粘了&#xff0c;总之很长&#xff0c;解决方案就是手动在程序开始处就增大递归次数&#xff1a; import sys sys.setrecursionlimit(100000)具体…

html通过CDN引入Vue使用Vuex以及Computed、Watch监听

html通过CDN引入Vue使用Vuex以及Computed、Watch监听 近期遇到个需求&#xff0c;就是需要在.net MVC的项目中&#xff0c;对已有的项目的首页进行优化&#xff0c;也就是写原生html和js。但是咱是一个写前端的&#xff0c;写html还可以&#xff0c;.net的话&#xff0c;开发也…

K8S学习指南-minikube的安装

简介 Minikube 是一个用于在本地开发环境中运行 Kubernetes 集群的工具。它允许开发人员在单个节点上体验 Kubernetes&#xff0c;无需配置复杂的生产环境。本指南将详细介绍在 Windows、CentOS 和 Ubuntu 系统上安装 Minikube 的步骤。 1. Windows 系统安装 1.1 &#xff1…

期末速成数据库极简版【查询】(3)

目录 多表查询 【8】多表连接——内连接 &#x1f642;等值连接 &#x1f642;自然连接 &#x1f642;非等值连接 【9】多表连接——外连接 【10】交叉连接不考 【11】联合查询 【12】扩展多表连接 【13】嵌套查询 &#x1f642; 多表查询 【8】多表连接——内连…

HIVE学习(hive基础)

HIVE基础介绍 一、HIVE简介二、hive的数据类型1、基本数据类型2、复合数据类型 三、HIVE的DDL操作四、创建一个表1. 建表语句 五、修改表结构1.修改表名2. 列修改或增加3. 修改分区 五、常见函数六、一对一关联left join左关联right join 右关联内连接全连接查询只有A表的数据 …

计算机视觉-机器学习-人工智能顶会 会议地址

计算机视觉-机器学习-人工智能顶会 会议地址 最近应该要整理中文资料的参考文献&#xff0c;很多会议文献都需要补全会议地点&#xff08;新国标要求&#xff09;。四处百度感觉也挺麻烦的&#xff0c;而且没有比较齐全的网站可以搜索。因此自己整理了一下计算机视觉-机器学习…

OSPF路由协议

随着Internet技术在全球范围的飞速发展&#xff0c;OSPF已成为目前应用最广泛的路由协议之一。OSPF&#xff08;Open Shortest Path First&#xff09;路由协议是由IETF&#xff08;Internet Engineering Task Force&#xff09;IGP工作组提出的&#xff0c;是一种基于SPF算法的…

JS 云服务 Deno Depoly 宣布,推出定时运行功能 Deno Cron

如果需要定时执行 JS 脚本&#xff0c;以后多一个选项。 Web 构建日益复杂。编写现代软件包括利用云基础设施、剖析模板代码和管理复杂的配置&#xff0c;而开发人员只想专注于编写业务逻辑。 Deno 旨在通过删除配置和不必要的模板&#xff0c;从根本上简化 Web 开发。我们将无…

网络攻击(三)--攻击阶段

5. 威胁建模阶段 目标 了解威胁建模阶段的工作内容 工作内容 威胁建模主要使用在情报搜集阶段所获取到的信息&#xff0c;来标识出目标系统上可能存在的安全漏洞与弱点。 在进行威胁建模时&#xff0c;确定最为高效的攻击方法、所需要进一步获取到的信息&#xff0c;以及从…

【前端】CSS浮动(学习笔记)

一、浮动 1、传统网页布局 网页布局的本质&#xff1a;用 CSS 来摆放盒子&#xff0c;把盒子摆放到相应位置。 CSS 提供了三种传统布局方式&#xff08;盒子如何进行排列顺序&#xff09; 普通流&#xff08;标准流&#xff09;浮动定位 实际开发中&#xff0c;一个页面基…

Go 反射技术判断结构体字段数据为空

Api介绍 在Go语言中&#xff0c;反射API用于在运行时检查类型信息、获取和修改变量的值以及调用对象的方法。反射API包含了一组函数和类型&#xff0c;可以在程序运行时动态地操作对象。 以下是一些常用的反射API&#xff1a; reflect.TypeOf&#xff1a;返回一个值的类型信息。…