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.pswp.cn/news/213055.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213055.shtml
英文地址,請注明出處:http://en.pswp.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;返回一個值的類型信息。…