CN116185495B - 计算函数构建方法、计算引擎、电子设备及可读存储介质 - Google Patents
计算函数构建方法、计算引擎、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN116185495B CN116185495B CN202211603482.0A CN202211603482A CN116185495B CN 116185495 B CN116185495 B CN 116185495B CN 202211603482 A CN202211603482 A CN 202211603482A CN 116185495 B CN116185495 B CN 116185495B
- Authority
- CN
- China
- Prior art keywords
- function
- instance
- dsl
- calculation
- computation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及计算机术领域,具体涉及一种计算函数构建方法、计算引擎、电子设备及可读存储介质。该方法包括:在采用执行领域特定语言的方式实现数据处理的过程中,识别解释执行第一DSL语句所使用的第一计算模板;分析第一计算模板对应确定的第一计算流、以及识别第一计算流中的函数的值、操作符和表达式组成中的一项或多项;采用根据函数的值构建的第一实例、根据表达式组成创建的第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数;采用构建的至少一个计算函数执行第一DSL语句,并基于执行的结果确定对待处理数据的处理结果。如此能够减少接口调用,利于提高DSL语句的执行效率和电子设备的响应速率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种计算函数构建方法、计算引擎、电子设备及可读存储介质。
背景技术
领域特定语言(Domain-Specific Language,简称为DSL)是针对特定应用领域而设计的计算机语言,它使用约定的文法,表达专业人员的意图,辅助其在该领域中高效地解决问题。
在相关技术中,描述一种计算机语言,一般使用扩展巴科斯范式(ExtendedBackus-Naur Forms,简称为EBNF)。基于扩展巴科斯范式的传统的领域特定语言描述工具,如开源语法分析器(Another Tool of Language Recognition,简称为ANTLR),能够在一定程度上简化领域特定语言的设计。然而,传统的基于扩展巴科斯范式的计算机语言描述方法,以及现有的语言描述和解析工具(如ANTLR)还是存在问题的。例如,服务端安装的基于ANTLR的DSL应用,通常可以在运行时对输入的领域特定语言进行动态解释执行。
然而,上述动态解释执行的过程需要依赖于ANTLR的运行时。具体体现为依赖ANTLR生成的基于领域特定语言的框架。该框架的功能可以包括分词、语法解析、监听访问、以及提供执行接口等。动态解释执行为相应的DSL应用运行时配置领域特定语言提供了基础,有利于解释一些领域的特定的数据处理意图。但由于ANTLR运行时需要解释DSL语言,并需要通过监听器(listener)接口来执行计算逻辑,这需要很多额外的接口调用指令,并且需要使用框架的执行接口。因此该种方式的执行性能较差,例如在一些需要采用动态解释执行方式的场景下,服务端可能会对客户端传入的DSL相关配置包和数据的解释执行速度较慢,从而导致服务端响应时间较长,用户体验也因此下降。
发明内容
本申请提供了一种计算函数构建方法、计算引擎、电子设备及可读存储介质,其中的方法能够在电子设备首次解释执行相应DSL语句时解析该过程所使用的计算模板,并根据解析出的函数的值、操作符以及表达式等,构建出可以直接用于计算引擎执行相应DSL语句的计算函数。进而,当需要再次执行该DSL语句处理相应数据时,可以不再调用原本使用的计算函数对应的各种接口,而可以直接调用已构建的计算函数直接执行相应DSL语句,有利于提高DSL语句的执行效率,进而有利于提高电子设备及其运行的服务端的响应速率,也有利于节省电子设备上的计算资源。
第一方面,本申请提供了一种用于数据处理请求的计算函数构建方法,应用于电子设备,该方法包括:在采用执行领域特定语言的方式实现数据处理的过程中,识别解释执行第一DSL语句所使用的第一计算模板,其中第一DSL语句为采用领域特定语言(DSL)描述对待处理数据的数据处理请求的语句;分析第一计算模板对应确定的第一计算流、以及识别第一计算流中的函数的值、操作符和表达式组成中的一项或多项,其中第一计算流用于确定第一计算模板执行计算的过程;根据函数的值创建第一实例,以及根据表达式组成创建第二实例;采用第一实例、第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数;采用构建的至少一个计算函数执行第一DSL语句,并基于执行的结果确定对待处理数据的处理结果。
例如,上述电子设备可以是服务器或者云计算平台等,上述第一DSL语句可以是车险业务中用于计算保单保费的请求语句等,上述用于解释执行第一DSL语句的第一计算模板例如可以是基于ANTLR框架开发的模板,电子设备可以基于ANTLR框架提供的各种接口调用该第一计算模块。另外,上述在采用第一计算模板解释执行上述第一DSL语句的过程中识别出的函数的值,例如可以是取值函数、判断函数、赋值函数等的值,例如保险金额Policy.Suminsure以及利率Policy.Rate等可以通过取值函数实现取值。上述识别出的操作符例如可以包括“+”、“-”、“*”、“/”运算符等,上述识别出的表达式例如可以是Premium=Policy.Suminsured*Policy.Rate等形式的算术表达式。在此不做枚举,亦不作限制。
在上述第一方面的一种可能的实现中,计算引擎识别到解释执行第一DSL语句的过程中使用的第一计算模板,包括:预先定义DSL监听器,并注册DSL监听器对DSL应用的监听,其中DSL应用为基于ANTLR框架实现的应用;监听DSL应用解释执行第一DSL语句的过程中所使用的第一计算模板。
即在构建用于执行上述第一DSL语句的计算函数之前,电子设备上的计算引擎可以预先定义用于监听DSL语句的解释执行过程的DSL监听器。可以理解,电子设备可以利用ANTLR框架提供的监听器监听到待解释执行的DSL语句,例如上述第一DSL语句。计算引擎预先定义的上述DSL监听器,可以在上述第一DSL语句执行的过程中监听到该过程中使用到的计算模板。
在上述第一方面的一种可能的实现中,第一计算模板为基于ANTLR框架预设的json文件,并且第一计算模板能够被DSL应用调用并用于解释执行第一DSL语句。
在上述第一方面的一种可能的实现中,根据函数的值创建第一实例,包括:预先定义预设的第一函数的属性,其中属性至少包括对第一函数的返回值描述和函数类型声明;基于第一函数的属性,为识别出的函数的值匹配对应的函数类型;采用匹配到的函数类型以及函数的值,创建对应的函数实例作为第一实例。
在上述第一方面的一种可能的实现中,第一函数存储在预先创建的数据栈中,并且根据函数的值创建第一实例包括:预先定义第一函数对应的实例的存取路径,其中存取路径指向数据栈;将创建的第一实例存入数据栈中。
在上述第一方面的一种可能的实现中,表达式组成包括算术表达式,并且根据表达式组成创建第二实例包括:识别第一计算流中的第一表达式,创建与第一表达式相对应的表达式实例作为第二实例,并且,将创建的第二实例存入数据栈中。
在上述第一方面的一种可能的实现中,操作符存储于先创建的操作符栈中,并且方法还包括:预先定义操作符的默认存取路径,其中存取路径指向操作符栈;将从第一计算流中识别出的操作符存入操作符栈中。
在上述第一方面的一种可能的实现中,DSL监听器包括对数据栈和操作符栈的引用,并且,采用第一实例、第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数,包括:基于DSL监听器监听存入操作符栈的第一操作符,以及监听存入数据栈的第一实例、第二实例;读取监听到的第一操作符、第一实例以及第二实例,构建至少一个计算函数。
即该DSL监听器还可以监听用于存储函数实例或表达式实例的数据栈、以及存储有操作符的操作符栈。上述DSL监听器对数据栈和操作符栈的引用,也可以理解为注册监听的过程。进而,计算引擎便可以根据上述DSL监听器监听到的函数实例(即上述第一实例)、表达式实例(即上述第二实例)以及操作符等,构建用于执行上述第一DSL语句的计算函数。可以理解,所构建的计算函数可以是一个或者多个,各计算函数之间可以通过操作符或者赋值函数等方式建立联系,形成更高阶的计算函数,在此不做限制。
在上述第一方面的一种可能的实现中,采用第一实例、第二实例以及识别到的操作符,构建用于执行第一计算流的至少一个计算函数,包括:读取监听到的第一实例,创建与第一实例对应的函数类型相同的第二函数,并使第二函数的返回值与函数的值相同,其中构建的至少一个计算函数包括第二函数;读取监听到的第二实例,创建于第二实例对应的第一表达式结构相同的第二表达式,其中第二表达式中的操作符包括监听到的存入操作符栈的第一操作符,并且第二表达式中的变量包括创建的第二函数的返回值。
第二方面,本申请提供了一种计算引擎,计算引擎包括:解析模块,用于识别解释执行第一DSL语句的过程中使用的第一计算模板,并将识别的结果发送给计算流分析模块;计算流分析模块,用于分析第一计算模板对应确定的第一计算流、以及第一计算流中包括的函数的值、操作符和表达式组成,并将分析的结果发送给计算模板构建模块;以及用于根据分析出的函数的值创建第一实例、根据分析出的表达式组成创建第二实例;并且,计算模板构建模块,用于调用第一实例、第二实例以及分析得到的操作符,构建用于执行第一计算流的至少一个计算函数。
在上述第二方面的一种可能的实现中,计算引擎包括预先定义的DSL监听器,并且,解析模块根据DSL监听器对DSL应用解释执行第一DSL语句的过程的监听结果,识别第一计算模板;计算模板构建模块根据DSL监听器对数据栈以及操作符栈的监听结果,调用存入数据栈的第一实例、第二实例以及存入操作符栈的第一操作符,构建至少一个计算函数。
在上述第二方面的一种可能的实现中,计算引擎还包括:数据处理模块,用于根据客户端传入的数据处理请求,确定用于描述数据处理请求的第一DSL语句。
第三方面,本申请提供了一种电子设备,包括:上述第二方面以及上述第二方面的各种可能的实现中提供的计算引擎,其中,计算引擎用于上述第一方面以及上述第一方面的各种可能的实现中提供的计算函数构建方法,构建用于执行第一DSL语句对应描述的数据处理请求的至少一个计算函数。
第四方面,本申请提供了一种电子设备,包括:一个或多个处理器;一个或多个存储器;一个或多个存储器存储有一个或多个程序,当一个或者多个程序被一个或多个处理器执行时,使得设备执行上述第一方面以及上述第一方面的各种可能的实现中提供的计算函数构建方法。
第五方面,本申请提供了一种计算机可读存储介质,存储介质上存储有指令,指令在计算机上执行时,使计算机执行上述第一方面以及上述第一方面的各种可能的实现中提供的计算函数构建方法。
附图说明
图1所示为本申请实施例提供的一种计算函数构建方法所应用的场景示意图。
图2所示为本申请实施例提供的一种服务端的结构示意框图。
图3所示为本申请实施例提供的一种计算引擎的结构示意框图。
图4所示为本申请实施例提供的一种计算函数构建方法的实施流程示意图。
图5所示为本申请实施例提供的一种支持服务端运行的服务器的硬件结构示意图。
具体实施方式
为了便于理解本申请方案,下面先对本申请实施例涉及的部分技术领域的概念进行解释。
(1)堆栈,又称栈(stack),是一种数据项按序排列的数据结构,该数据结构中允许在一端对数据项进行插入或删除,该端被称为栈顶(top)。相应地,该数据结构的另一端是固定的,不能对数据项进行插入或删除,该端被称为栈底。堆栈这种数据结构通常应用于电子设备中的一些特定的存储区或者寄存器中,严格按照“先进后出(first-in/last-out,FILO)”的原则存取数据项。例如数据栈可以用于存取函数以及数值等、操作符栈可以用于存取连接各函数构成函数表达式的操作符等。
(2)运行时(runtime),是指一个程序在运行(或者在被执行)的依赖。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为“运行库"。这些实例可以在它们运行的时候被连接或者被任何程序调用,同时依赖于运行时系统。
可以理解,运行时是计算机程序运行生命周期内的一个阶段,其它阶段还包括:编译时、链接时和加载时。
(3)无状态(stateless),指的是对于请求方的每个请求,接收方都当这次请求是第一次请求的一种运行环境状态。之所以叫无状态,是因为对于请求方而言,每次请求时,接收方就像是失忆了一样,并不会依赖请求方以往的请求所生成的数据作回应。也就是说,就像是接收方没有保存请求方的状态(数据)一样,因此这种运行环境叫做无状态。
可以理解,无状态并不代表接收方不会保存请求方的任何数据,它只是不保存与接收方可能的下次请求相关的数据。所以无状态要求请求方每次请求时,一次性提供与请求相关的全部数据。而不能因为某些数据在以前的请求中已提供了,这次请求就不再提供。
图1根据本申请实施例示出了一种计算函数构建方法所应用的场景示意图。
如图1所示,该场景包括客户端100和服务端200。其中客户端100可以安装在用户所使用的终端设备上,例如安装在笔记本电脑、台式电脑、平板电脑、手机等电子设备上,在此不做限制。服务端200则可以部署在服务器上,为客户端100提供数据存储以及数据处理及计算的能力。
用户可以通过客户端100提供的交互界面输入对相应业务数据的处理请求,该输入操作例如可以是导入文件、键入待存储的数据、键入待查询的数据、以及点击界面上访问某个页面的控件的相关操作等。
服务端200可以安装基于ANTLR框架开发的DSL应用等,对客户端100传入的配置包和数据进行解释及执行,并将执行结果反馈给客户端100。上述传入服务端200的配置包例如可以是客户端100响应于用户输入对应的业务数据以及预设配置自动生成的配置参数包。上述传入服务端200的数据例如可以是客户端100基于用户输入所确定的业务数据,该业务数据经客户端100预处理后能够被服务端200上的计算引擎读取,该计算引擎可以进一步引用所构建的计算函数执行相应的DSL语句处理该业务数据。
如前所述,目前基于ANTLR的DSL应用在动态解释执行输入的DSL语言相关配置包和数据时,鉴于对ANTLR的运行时的依赖,可能会需要很多额外的接口调用指令,导致服务端的解释执行速度较慢,响应时间较长,因而导致用户体验下降。
为了解决上述问题,本申请实施例提供了一种计算函数构建方法,应用于服务器等电子设备或提供云计算服务的云平台。该方法通过利用服务端的计算引擎,在利用ANTLR框架解释执行相应DSL语句的过程中,识别用于执行该DSL语句的计算模板,并解析用于构建该计算模板的函数类型、操作符以及最终形成的函数表达式等,进而在该过程中创建所需的函数类型实例以及表达式实例,并基于所创建的实例和基于上述DSL语句识别到的操作符,创建能够替代ANTLR框架运行时提供的各类接口而直接执行上述DSL语句的计算函数。由于上述计算函数的构建是基于相应函数类型对应的基础函数之上实现的,因此构建出的计算函数的本质可以是一种高阶函数。进而,当服务端需要执行上述DSL语句来处理业务数据时,则可以直接调用计算引擎执行上述构建的计算函数实现对相应DSL语句的执行,即不再需要调用ANTLR框架提供的各种执行接口。
例如,在保险业务服务系统中,基于ANTLR的保费计算框架为Premium=Policy.Suminsured*Policy.Rate,其中Policy.Suminsure指保险金额,Policy.Rate指利率。基于本申请提供的计算函数构建方法,保险业务服务系统的服务端可以在首次调用该框架提供的接口计算保费的过程中,可以构建一个用于获取Policy.Suminsured的函数A,以及一个用于获取Policy.Rate的函数B,同时把这两个函数作为参数,构建一个与函数A*函数B对应的函数C。进而,当服务端需要再次处理业务数据,例如计算保费时,则可以通过Policy.Suminsured*Policy.Rate找到函数C,并利用该函数C执行保费的计算。
如此,基于DSL语句和相应的计算模板构建的计算函数,可以避免服务端对ANTLR框架提供的接口的反复多次调用,且有利于减少对ANTLR运行时的依赖,进而可以提高服务端对DSL语句的执行效率,因此也可以提高服务端的响应速度,缩短响应时间,提高用户体验。
可以理解,在本申请实施例中,上述计算引擎构建计算函数的过程所采用的操作符可以是四则运算符,例如“+”、“-”、“*”、“/”。在另一些实施例中,上述计算引擎构建计算函数的过程也可以通过构建决策树等方式实现,该方式可以与根据DSL语句解析出的计算模板相关。在此不做限制。
可以理解,本申请实施例所提供的计算函数构建方法,所适用的电子设备包括但不限于上述服务器200,以及手机、平板电脑、桌面型、膝上型、手持计算机、上网本,以及增强现实(Augmented Reality,AR)\虚拟现实(Virtual Reality,VR)设备、智能电视、智能手表等可穿戴设备、移动电子邮件设备、车机设备、便携式游戏机、便携式音乐播放器、阅读器设备、其中嵌入或耦接有一个或多个处理器的电视机、或能够访问网络的其他设备。
可以理解,本申请实施例所提供的计算函数构建方法,所适用的上述云平台以及对应提供的云计算服务,例如可以包括但不限于亚马逊TM提供的无服务器的计算(AWSLambda)服务、阿里云TM函数计算(Aliyun Function Compute)服务等,在此不做限制。
图2根据本申请实施例示出了一种服务端200的结构示意框图。
如图2所示,服务端200可以包括计算引擎300以及计算资源库400。其中,计算资源库400可以为计算引擎提供所需的各种计算资源。例如,计算资源库400中的函数库,可以为计算引擎300提供所需要的基础函数,该基础函数例如可以是上述用于获取保险金额(Policy.Suminsured)的函数A、以及用于获取利率(Policy.Rate)的函数B等。计算资源库400中的模板库,可以为计算引擎300提供计算模板,该计算模板可以与DSL语句对应表达的计算模板相匹配,以给计算引擎300识别DSL语句所表达的计算模板提供模型基础。
基于图2所示的服务端结构,图3进一步示出了一种计算引擎的结构示意框图。
如图3所示,计算引擎300可以包括函数构建模块310以及数据处理模块320。其中,函数构建模块310可以进一步包括解析模块311、计算流分析模块312、计算模板构建模块313以及计算节点设置模块314。
其中,解析模块311,用于解析DSL语句对应表达的计算模板。例如在服务端200采用上述基于ANTLR框架的DSL应用解释执行被请求的DSL语句的过程中,计算引擎300可以基于函数构建模块310中的解析模块311从该DSL语句中解析出对应采用的计算模板。可以理解,解析模块311对DSL语句中计算模板的解析结果可以发送给计算流分析模块312进行进一步的分析。
计算流分析模块312,用于分析解析出的计算模板具体执行计算的过程。该计算过程可以是以流(flow)的形式执行,因此该计算过程也可以称为计算流,上述计算模板也可以理解为基于流(flow)的模型。具体地,计算流分析模块312可以具体分析出上述计算模板的函数组成或相应函数的值、计算步骤、各计算步骤之间的执行关系、以及各计算步骤的触发条件和输出结果等。计算流分析模块312可以将对计算模板的分析结果发送给计算模板构建模块313,用于构建对应的计算模板。
可以理解,计算流分析模块312中还可以设计有函数类型生成器,用于根据对上述计算模板的分析结果生成相应的函数类型实例。例如,计算流分析模块312基于该函数类型生成器,可以根据分析出的函数组成或者相应函数的值,可以生成对应的函数类型实例等。又例如,计算流分析模块312还可以根据分析出的计算步骤、各计算步骤之间的执行关系或者说跳转条件等,生成对应的函数表达式的实例,即下述表达式实例。因此,计算流分析模块312还可以将分析过程中生成的函数类型实例以及表达式实例等发送给计算模板构建模块313,在此不做限制。
计算模板构建模块313,用于根据计算流分析模块312的分析结果、以及该模块生成的函数类型实例以及表达式实例等,构建计算模板,即目标计算函数的框架。例如,计算模板构建模块313可以基于计算流分析模块312的分析结果以及生成的函数类型实例以及表达式实例等,构建相应的计算模板实例。进而,在构建目标计算函数时,计算模板构建模块313可以执行该实例进行构建。可以理解,构建目标计算函数的过程,可以理解为执行计算模板实例的过程。
计算节点设置模块314,用于将上述计算模板的计算流分割成一组一组的计算步骤,每一组计算步骤可以是一个计算节点。各计算节点之间按照一定的执行顺序进行接续跳转,则可以形成上述计算模板的计算流。
数据处理模块320,用于把需要执行DSL语句处理的业务数据进行预处理后,传入上述计算引擎200,以作为上述函数构建模块310所创建的计算函数的处理对象。
可以理解,计算引擎300基于上述函数构建模块310构建计算函数的过程可以发生在每次业务数据处理之前,并且待处理的业务数据可以是需要重复执行计算模板进行处理的团单数据。例如,待处理数据可以是计算车辆保费的团单业务数据等。另外,计算引擎300基于上述函数构建模块310构建计算函数的过程可以是一个独立的构建过程,每次构建计算函数完成后,计算引擎300通过监听器调用的数据栈中可以只有对构建出的高阶函数的引用,该数据栈中此时可以不再存有其他函数类型实例或表达式实例,并且操作符栈此时也可以为空。即,本申请方案中构建计算函数以及基于所构建的计算函数进行相应的数据计算过程等,都可以在无状态的运行环境中进行。
如此,可以确保计算引擎300的监听器在监听服务端200接收到的输入数据进行处理时,能够准确且唯一的引用所构建的高阶函数来执行相应DSL语句,避免了对各种ANTLR框架接口的调用,进而提高了DSL语句的执行效率。服务端200的响应速率也可以因此得以提高,如此也有利于提高用户体验。
图4根据本申请实施例示出了一种计算函数构建方法的实施流程示意图。
可以理解,图4所示流程各步骤的执行主体可以均为上述计算引擎,该计算引擎可以设置在服务器上,或者设置在一些云平台提供的云计算服务中,在此不做限制。为了简化描述,以下在介绍各步骤的执行内容时,将不再重复介绍各步骤的执行主体。
如图4所示,该流程可以包括以下步骤:
401:创建数据栈、操作符栈等用于存取计算资源的堆栈。
示例性地,计算引擎300可以在服务端200的系统中创建堆栈。在本申请实施例中,上述创建的堆栈可以用于存取各种类型的基础函数,这种堆栈称为数据栈。各基础函数可以采用函数类型实例的形式存入数据栈中,具体过程可以参考下文相关步骤中的描述在此不做赘述。另外,上述创建的堆栈也可以用于存取各类操作符,例如四则运算符号“+”、“-”、“*”、“/”等,这种堆栈称为操作符栈。
可以理解,与现有的基于ANTLR框架解释执行DSL语句的方案所不同的是,在本申请实施例提供的方案中,上述数据栈中存取的是各种类型的基础函数,而非构成各基础函数的字符、数值等。而计算引擎300在数据栈中存取各类基础函数的过程,可以采用创建函数类型实例的方式实现,具体可以参考下文相关步骤中的详细描述,在此不做赘述。
402:定义基础函数的属性,并定义将各基础函数对应实例存入数据栈、以及将连接各基础函数的操作符存入操作符栈。
示例性地,计算引擎300可以获取预设在上述函数库中的基础函数,并对这些基础函数定义相应属性以及定义将识别到的这些基础函数对应存入所创建的数据栈。上述定义的属性可以包括各基础函数对应的返回值描述和函数类型声明等。其中返回值描述可以包括对应于相应基础函数指定的返回值以及返回值的类型等。并且,计算引擎300还可以定义连接各基础函数组成更高阶的函数表达式的操作符,并定义该操作符可以对应存入所创建的操作符栈中。
可以理解,函数可以有返回值,也可以没有返回值。有返回值的函数:函数的最后会有一个返回值return,可以用来获取该函数执行结果返回给该函数,让外部调用该函数的。返回值可指定,如果不指定默认返回None。
上述基础函数可以是约定的标准函数。作为示例,例如取值函数对应的函数类型声明可以定义为:
func(*common.NodeObject,*common.Arguments)(interface{},error)(1);
逻辑表达式和关系表达式函数对应的函数类型声明可以定义为:
func(data*common.NodeObject,args*common.Arguments)bool(2)。
可以理解,运行时的函数构建过程例如都会使用上述两种函数类型声明(1)和(2)。例如,当构建表达式为“A*B”的函数C时,其中“A”和“B”均为取值函数,在函数“A*B”构建之前函数A和函数B可以被压入(Push)数据栈;“*”为一个操作符,在函数表达式“A*B”构建之前“*”可以被压入操作符栈。这两个栈可以组成一个表达式包(expr pack),对应于函数表达式“A*B”。可以理解,上述“压入”的意思是将函数、操作符等存入相应栈中,例如将函数A和函数B存入上述数据栈中,将操作符“*”存入上述操作符栈中,等等。
可以理解,在另一些实施例中,定义的基础函数也可以包括其他函数,并且对应于相应基础函数定义的函数类型声明也可以包括其他形式的定义,在此不做限制。
403:定义DSL监听器,该监听器至少包括对数据栈、操作符栈的引用。
示例性地,计算引擎300在完成上述步骤401中对相应基础函数的属性定义等之后,可以继续定义DSL监听器。可以理解,该DSL监听器可以继承ANTLR框架提供的监听器,用于监听DSL语句。其中,“继承”在本申请实施例中是指可以在基于ANTLR框架的DSL应用首次解释执行对应的DSL语句之后,可以替代ANTLR框架提供的监听器监听相应DSL语句。可以理解,上述DSL语句例如可以是用于处理某一类业务请求的计算模板描述语句,服务端在接收客户端输入的业务数据之前,可以根据用户在客户端相应功能界面上的操作,预先获取处理相应业务请求所调用的DSL语句,该DSL语句可以被服务端的DSL应用解释执行。在服务端200解释执行相应的DSL语句时,再接收客户端响应于用户的输入操作对应生成的业务数据相关配置包和数据。进而服务端200可以向客户端返回执行结果,以响应用户的业务请求。
作为示例,当服务端200首次解释执行某类DSL语句时,可以构建对应的栈和函数,例如上述用于压入函数A和函数B的数据栈、以及用于压入操作符“*”的操作符栈等。进而,在服务端200便可以构建表达式为“A*B”的函数。可以理解,该表达式“A*B”可以理解为待执行的DSL语句的字面表达形式。
在完成函数表达式“A*B”的构建后,计算引擎300可以进一步定义DSL监听器并映射到的上述函数表达式“A*B”,进而该DSL监听器便可以用于监听相应的DSL语句。可以理解,上述ANTLR框架的监听器提供的是调用接口,而计算引擎300所定义的DSL监听器提供的是一种构建栈和函数的实现。而这种构建栈和函数的实现对应定义的DSL监听器,无需接口,而是直接基于对数据栈、操作符栈的引用,建立一个映射(map)到DSL的字面表达式“A*B”上,以直接监听识别对应的DSL语句输入。如此,可以更加直接、高效的实现DSL语句的识别或监听,减少接口调用,利于提高执行效率。
404:检测到在解释DSL语句的过程中识别出函数的值,构建该值对应的函数类型实例。
示例性地,计算引擎300基于识别出的函数的值,可以基于上述步骤402中对基础函数的定义,构建出相应的函数类型实例,该实例例如可以是上述步骤402中对应定义的基础函数的函数类型实例。该函数类型实例是将上述基础函数进行实例化,如此可以实现将函数用作参数或返回值,进而在上述基础函数的基础上可以进一步构建用于执行上述DSL语句的高阶函数。
可以理解,计算引擎300在执行本申请实施例提供的计算函数构建方法后,可以构建出一个高阶函数来继承基于ANTLR框架的DSL应用执行相应DSL语句的能力,所构建出的高阶函数可以接受初始累积值与对应定义的接合函数,并通过将当前累积值与每个集合元素连续接合起来代入累积值来构建返回值。该高阶函数即为本申请实施例提供的计算函数构建方法对应构建的能够提高DSL语句执行效率的计算函数。具体构建过程将在下文相关步骤中具体描述,在此不做赘述。
405:将所构建的函数类型实例压入数据栈。
可以理解,可以理解,计算引擎300在构建计算函数之前可以创建数据栈和操作符栈,这两个栈都可以通过数组来实现。计算引擎300所构建的函数类型实例可以对应存入所创建的数据栈中,即上述压入DSL监听器引用的数据栈的过程。
例如,向数据栈压入构建的扩展函数(max)实例,可以参考如下方式:
或者,在另一些示例中,例如向数据栈压入变量取值函数实例,可以参考如下方式:
可以理解,在另一些实施例中,上述构建相应函数类型实例并压入相应数据栈的方式也可以是其他方式,在此不做限制。
406:检测到在解释DSL语句的过程中识别出操作符,将识别出的操作符压入操作符栈。
示例性地,在服务端200基于上述DSL应用解释DSL语句的过程中,若识别出该DSL语句中的某个算术表达式,例如识别出操作符“*”,此时计算引擎300可以将识别处的操作符存入操作符栈,即上述压入DSL监听器所引用的操作符栈中。
407:检测到在解释DSL语句的过程中识别出算术表达式,构建相应的表达式实例。
示例性地,在服务端200基于上述DSL应用解释DSL语句的过程中,若识别出该DSL语句中的某个算术表达式,则服务端200的计算引擎300可以构建一个算术表达式类型实例。其中,算术表达式类型可以包括一个数据数组和一个操作符数组,用于后续遇到待解释的DSL语句对应的相同表达式时,无需再次解析而把相应内容还原至监听器的数据栈和操作符栈中。
408:将所构建的表达式实例压入数据栈。
如前所述,计算引擎300在构建计算函数之前可以创建数据栈和操作符栈,这两个栈都可以通过数组来实现。当服务端200中依赖于ANTLR的运行时检测到DSL语句中包含字面量(literal)为(A*B)时,计算引擎300可以通过映射(map)来获取上述数据栈和操作符栈,还原(pop)该字面量所表达的固定值和函数调用操作,进行计算。
可以理解,服务端200上的DSL应用每解释执行一次DSL语句,计算引擎300则可以执行上述步骤404至步骤408,完成向DSL监听器所引用的数据栈中更新基于识别出的值对应构建的函数类型实例、以及基于识别出的算数表达式对应构建的表达式实例的过程,以及完成向操作符栈更新识别出的操作符的过程。
409:基于数据栈中压入的函数类型实例、表达式实例,以及操作符栈中压入的操作符,构建计算函数。
示例性地,计算引擎300基于执行上述步骤404至408识别并构建的函数类型实例、操作符以及表达式实例,可以对应构建出的计算函数。该构建过程可以是将函数类型实例提供的基础函数,通过操作符连接成表达式实例对应的函数表达式,作为所构建的计算函数。由于上述函数类型实例提供的基础函数本身已是函数表达式,因此构建的计算函数可以称为高阶函数。
例如,计算引擎300基于上述函数A和函数B对应的函数类型实例、操作符“*”以及表达式实例“A*B”,可以构建出计算函数“A*B”用于执行对应于表达式(A*B)的DSL语句。其中函数A例如可以是上述用于获取保险金额的取值函数Policy.Suminsured,函数B例如可以是上述用于获取利率的取值函数Policy.Rate。
410:将所构建的计算函数压入数据栈,注册对该计算函数的引用并保存至系统。
示例性地,计算引擎300在完成本次的计算函数构建后,可以将所构建的计算函数压入数据栈,并进一步在DSL监听器中注册对该计算函数的引用,并将该DSL监听器对所构建计算函数的引用保存至应用系统中,以供应用系统在后续接收到输入的业务数据时能够引用到上述计算函数。可以理解,计算引擎300在执行本步骤410之后,可以进一步执行下述步骤411,将操作符栈置为空以及对数据栈中历史压入的函数类型实例等进行清除,从而在数据栈中可以仅保留所创建的计算函数。如此,有利于避免计算引擎300对其他实例的错误调用,有利于提高计算引擎300执行DSL语句的准确率。
411:置空操作符栈,并清除数据栈中的函数类型实例以及表达式实例。
示例性地,在服务端200基于DSL应用对DSL的解释结束时,计算引擎300所创建的DSL监听器对数据栈只有一个高阶函数的引用,并且此时可以将操作符栈置为空。该高阶函数即计算引擎300执行上述步骤409对应构建出的计算函数,用于在后续直接执行服务端200本次解释的DSL语句。而计算引擎300可以将上述数据栈中对所构建的计算函数的引用,保存至服务端200的应用系统中。在完成计算函数的构建后,计算引擎300可以基于DSL监听器对已构建的计算函数的函数引用,调用该计算函数执行监听到的DSL语句。
可以理解,上述构建计算函数的过程中,服务端对200对应解释执行的DSL语句,对于一类业务来说是同一个语句。例如,在车险业务中如果需要计算一个团单,该团单包括6000辆车的保费计算。则可以适用于这个团单中各车辆的保费计算的DSL语句可以对应描述的是用于计算车辆保费的计算模板。因而,在处理上述团单中各车辆的保费计算之前,服务端200可以先通过解释执行上述计算车辆保费的计算模板对应的DSL语句,服务端200的计算引擎300则可以在上述解释执行的过程中,解析该DSL语句对应表达的计算模板并构建相应的计算函数。进而,在服务端200接收该团单对应的业务数据时,计算引擎300便可以直接引用所构建的计算函数来执行上述DSL语句,计算出该团单中第1辆车至第6000辆车的保费。
因此,基于上述步骤401至411的计算函数构建方法,可以在服务端200首次解释执行计算车辆保费的DSL语句的过程中,构建出用于执行该DSL语句的高阶函数,即上述计算函数。进而,在后续计算其他车辆保费时,服务端200可以不再依赖ANTLR运行时,而是可以通过计算引擎直接引用所构建的计算函数执行保费计算的DSL语句。例如对于前述例子,构建计算函数后,对输入服务端200处理的上述6000辆车计算保费的团单,都可以引用所构建的计算函数直接执行计算。如此相比于依赖ANTLR运行时的动态解释,服务端200执行车辆保费计算的性能也可以得到极大提升。
上述步骤404至409所执行的分析用于解释DSL语句的计算模板以及构建计算函数的过程,可以参考以下示例。
作为示例,例如计算引擎300中的计算流分析模块312在DSL应用解释DSL语句的过程中,分析该过程对应采用的计算模板为:
该计算模板例如可以是存储在服务端200上的json文件,基于上述计算模板可以分析出以下信息:该计算模板例如用于车辆(Vehicle)的保费计算;待计算的车辆为7座车辆,即"NumberOfSeats":7;待计算保费的车辆需在3年内没有理赔记录,即"ClaimAmountInLast3Years";待计算保费的车辆的投保年限是满3年,即"NcdDeclaration":3;待计算保费的车辆用途为出租车,即"VehicleUsage":"Taxi"。
因此,可以分析出基于该计算模板来构建计算函数可以通过以下方式:
先构建一个决策树模型:
“-decisiontree:
Premium=VehicleUsageRate$SeatNo:Vehicle.NumberOfSeats;VehicleUsage:Vehicl e.VehicleUsage$Rate”
然后,基于创建的函数实例和表达式实例构建相应的表达式并将计算结果赋值给“NcdRate”:
在构建计算函数的过程中,上述构建的表达式可以对应构建为能够用于计算费率的计算函数,该计算函数的形式例如可以是func(condfunc,truefunc,falsefunc)。最终计算费率的表达式则可以为:
-expr:NcdRate=func(condfunc,truefunc,falsefunc)
最后,构建用于计算最终保费的表达式:
-expr:FinalPremium=Premium*NcdRate。
基于上述过程,最终构建完成的计算函数以及对应调用该计算函数用于车辆保费计算的计算模板则可以为:
“-decisiontree:
Premium=VehicleUsageRate$SeatNo:Vehicle.NumberOfSeats;VehicleUsage:Vehicl e.VehicleUsage$Rate;
-expr:NcdRate=func(condfunc,truefunc,falsefunc);
-expr:FinalPremium=Premium*NcdRate.”
在另一些实施例中,上述构建计算函数以及将所构建的计算函数应用于相应数据计算中的示例,也可以为其他形式,在此不做限制。
图5根据本申请实施例示出了一种服务器500的硬件结构示意图。
可以理解,该服务器500可以是支持上述服务端运行的服务器,可以包括应用程序服务器、数据库服务器、内容管理服务器等等,在此不做限制。
如图5所示,在一些实施例中,服务器500可以包括一个或多个处理器504,与处理器504中的至少一个连接的系统控制逻辑508,与系统控制逻辑508连接的系统内存512,与系统控制逻辑508连接的非易失性存储器(NVM)516,以及与系统控制逻辑508连接的网络接口520。
在一些实施例中,处理器504可以包括一个或多个单核或多核处理器。在一些实施例中,处理器504可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。在服务器500采用eNB(Evolved Node B,增强型基站)或RAN(RadioAccess Network,无线接入网)控制器的实施例中,处理器504可以被配置为执行各种符合的实施例,例如,如图2至图4所示的实施例。
在一些实施例中,系统控制逻辑508可以包括任意合适的接口控制器,以向处理器504中的至少一个和/或与系统控制逻辑508通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,系统控制逻辑508可以包括一个或多个存储器控制器,以提供连接到系统内存512的接口。系统内存512可以用于加载以及存储数据和/或指令。在一些实施例中服务器500的内存512可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(DRAM)。
NVM/存储器516可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM/存储器516可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如HDD(Hard Disk Drive,硬盘驱动器),CD(Compact Disc,光盘)驱动器,DVD(Digital Versatile Disc,数字通用光盘)驱动器中的至少一个。
NVM/存储器516可以包括安装服务器500的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口520通过网络访问NVM/存储516。
特别地,系统内存512和NVM/存储器516可以分别包括:指令524的暂时副本和永久副本。指令524可以包括:由处理器504中的至少一个执行时导致服务器500实施如图3所示的方法的指令。在一些实施例中,指令524、硬件、固件和/或其软件组件可另外地/替代地置于系统控制逻辑508,网络接口520和/或处理器504中。
网络接口520可以包括收发器,用于为服务器500提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口520可以集成于服务器500的其他组件。例如,网络接口520可以集成于处理器504的,系统内存512,NVM/存储器516,和具有指令的固件设备(未示出)中的至少一种,当处理器504中的至少一个执行所述指令时,服务器500实现上述图4所示的方法。
网络接口520可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口520可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器504中的至少一个可以与用于系统控制逻辑508的一个或多个控制器的逻辑封装在一起,以形成系统封装(SiP)。在一个实施例中,处理器504中的至少一个可以与用于系统控制逻辑508的一个或多个控制器的逻辑集成在同一管芯上,以形成片上系统(SoC)。
服务器500可以进一步包括:输入/输出(I/O)设备532。I/O设备532可以包括用户界面,使得用户能够与服务器500进行交互;外围组件接口的设计使得外围组件也能够与服务器500交互。在一些实施例中,服务器500还包括传感器,用于确定与服务器500相关的环境条件和位置信息的至少一种。
在一些实施例中,用户界面可包括但不限于显示器(例如,液晶显示器,触摸屏显示器等),扬声器,麦克风,一个或多个相机(例如,静止图像照相机和/或摄像机),手电筒(例如,发光二极管闪光灯)和键盘。
在一些实施例中,外围组件接口可以包括但不限于非易失性存储器端口、音频插孔和电源接口。
在一些实施例中,传感器可包括但不限于陀螺仪传感器,加速度计,近程传感器,环境光线传感器和定位单元。定位单元还可以是网络接口520的一部分或与网络接口520交互,以与定位网络的组件(例如,全球定位系统(GPS)卫星)进行通信。
在说明书对“一个实施例”或“实施例”的引用意指结合实施例所描述的具体特征、结构或特性被包括在根据本申请实施例公开的至少一个范例实施方案或技术中。说明书中的各个地方的短语“在一个实施例中”的出现不一定全部指代同一个实施例。
本申请实施例的公开还涉及用于执行文本中的操作装置。该装置可以专门处于所要求的目的而构造或者其可以包括被存储在计算机中的计算机程序选择性地激活或者重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读介质中,诸如,但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、专用集成电路(ASIC)或者适于存储电子指令的任何类型的介质,并且每个可以被耦合到计算机系统总线。此外,说明书中所提到的计算机可以包括单个处理器或者可以是采用针对增加的计算能力的多个处理器涉及的架构。
另外,在本说明书所使用的语言已经主要被选择用于可读性和指导性的目的并且可能未被选择为描绘或限制所公开的主题。因此,本申请实施例公开旨在说明而非限制本文所讨论的概念的范围。
Claims (15)
1.一种用于数据处理请求的计算函数构建方法,应用于电子设备,其特征在于,所述方法包括:
在采用执行领域特定语言的方式实现数据处理的过程中,识别解释执行第一DSL语句所使用的第一计算模板,其中所述第一DSL语句为采用领域特定语言(DSL)描述对待处理数据的数据处理请求的语句;
分析所述第一计算模板对应确定的适用于对所述第一DSL语句进行计算处理的第一计算流、以及识别所述第一计算流中的函数的值、操作符和表达式组成中的一项或多项,其中所述第一计算流用于确定所述第一计算模板执行计算的过程;
根据所述函数的值创建第一实例,以及根据所述表达式组成创建第二实例;
采用所述第一实例、第二实例以及识别到的所述操作符,构建用于执行所述第一计算流的至少一个计算函数;
采用构建的所述至少一个计算函数执行所述第一DSL语句,并基于执行的结果确定对所述待处理数据的处理结果。
2.根据权利要求1所述的方法,其特征在于,计算引擎识别到解释执行第一DSL语句的过程中使用的第一计算模板,包括:
预先定义DSL监听器,并注册所述DSL监听器对DSL应用的监听,其中所述DSL应用为基于ANTLR框架实现的应用;
监听所述DSL应用解释执行第一DSL语句的过程中所使用的第一计算模板。
3.根据权利要求2所述的方法,其特征在于,所述第一计算模板为基于ANTLR框架预设的json文件,并且所述第一计算模板能够被所述DSL应用调用并用于解释执行所述第一DSL语句。
4.根据权利要求2所述的方法,其特征在于,所述根据所述函数的值创建第一实例,包括:
预先定义预设的第一函数的属性,其中所述属性至少包括对所述第一函数的返回值描述和函数类型声明;
基于所述第一函数的属性,为识别出的所述函数的值匹配对应的函数类型;
采用匹配到的函数类型以及所述函数的值,创建对应的函数实例作为所述第一实例。
5.根据权利要求4所述的方法,其特征在于,所述第一函数存储在预先创建的数据栈中,并且所述根据所述函数的值创建第一实例包括:
预先定义所述第一函数对应的实例的存取路径,其中所述存取路径指向所述数据栈;
将创建的所述第一实例存入所述数据栈中。
6.根据权利要求5所述的方法,其特征在于,所述表达式组成包括算术表达式,并且所述根据所述表达式组成创建第二实例包括:
识别所述第一计算流中的第一表达式,创建与所述第一表达式相对应的表达式实例作为所述第二实例,并且,
将创建的所述第二实例存入所述数据栈中。
7.根据权利要求5所述的方法,其特征在于,所述操作符存储于先创建的操作符栈中,并且所述方法还包括:
预先定义所述操作符的默认存取路径,其中所述存取路径指向所述操作符栈;
将从所述第一计算流中识别出的操作符存入所述操作符栈中。
8.根据权利要求2至7中任一项所述的方法,其特征在于,所述DSL监听器包括对数据栈和操作符栈的引用,并且,
所述采用所述第一实例、第二实例以及识别到的所述操作符,构建用于执行所述第一计算流的至少一个计算函数,包括:
基于所述DSL监听器监听存入所述操作符栈的第一操作符,以及监听存入所述数据栈的第一实例、第二实例;
读取监听到的所述第一操作符、所述第一实例以及所述第二实例,构建所述至少一个计算函数。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述采用所述第一实例、第二实例以及识别到的所述操作符,构建用于执行所述第一计算流的至少一个计算函数,包括:
读取监听到的所述第一实例,创建与第一实例对应的函数类型相同的第二函数,并使所述第二函数的返回值与所述函数的值相同,其中构建的所述至少一个计算函数包括所述第二函数;
读取监听到的所述第二实例,创建于所述第二实例对应的第一表达式结构相同的第二表达式,其中所述第二表达式中的操作符包括监听到的存入操作符栈的第一操作符,并且所述第二表达式中的变量包括创建的所述第二函数的返回值。
10.一种计算引擎,其特征在于,所述计算引擎包括:
解析模块,用于识别解释执行第一DSL语句的过程中使用的第一计算模板,并将识别的结果发送给计算流分析模块;
计算流分析模块,用于分析所述第一计算模板对应确定的所述第一计算流、以及所述第一计算流中包括的函数的值、操作符和表达式组成,并将分析的结果发送给所述计算模板构建模块;以及用于根据分析出的所述函数的值创建第一实例、根据分析出的所述表达式组成创建第二实例;并且,
计算模板构建模块,用于调用所述第一实例、第二实例以及分析得到的所述操作符,构建用于执行所述第一计算流的至少一个计算函数。
11.根据权利要求10所述的计算引擎,其特征在于,所述计算引擎包括预先定义的DSL监听器,并且,
所述解析模块根据所述DSL监听器对DSL应用解释执行第一DSL语句的过程的监听结果,识别所述第一计算模板;
所述计算模板构建模块根据所述DSL监听器对数据栈以及操作符栈的监听结果,调用存入所述数据栈的第一实例、第二实例以及存入所述操作符栈的第一操作符,构建所述至少一个计算函数。
12.根据权利要求10或11所述的计算引擎,其特征在于,所述计算引擎还包括:
数据处理模块,用于根据客户端传入的数据处理请求,确定用于描述所述数据处理请求的第一DSL语句。
13.一种电子设备,其特征在于,包括:权利要求10至12中任一项所述的计算引擎,其中,所述计算引擎用于执行权利要求1至9中任一项所述的计算函数构建方法,构建用于执行第一DSL语句对应描述的数据处理请求的至少一个计算函数。
14.一种电子设备,其特征在于,包括:一个或多个处理器以及一个或多个存储器所述一个或多个存储器存储有一个或多个程序,其中,
当一个或者多个程序被所述一个或多个处理器执行时,使得所述电子设备执行权利要求1至9中任一项所述的计算函数构建方法。
15.一种计算机可读存储介质,其特征在于,所述存储介质上存储有指令,所述指令在计算机上执行时,使所述计算机执行权利要求1至9中任一项所述的计算函数构建方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211603482.0A CN116185495B (zh) | 2022-12-13 | 2022-12-13 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
PCT/CN2023/099918 WO2024124833A1 (zh) | 2022-12-13 | 2023-06-13 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211603482.0A CN116185495B (zh) | 2022-12-13 | 2022-12-13 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116185495A CN116185495A (zh) | 2023-05-30 |
CN116185495B true CN116185495B (zh) | 2023-10-13 |
Family
ID=86451371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211603482.0A Active CN116185495B (zh) | 2022-12-13 | 2022-12-13 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116185495B (zh) |
WO (1) | WO2024124833A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185495B (zh) * | 2022-12-13 | 2023-10-13 | 易保网络技术(上海)有限公司 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064721A (zh) * | 2011-10-24 | 2013-04-24 | 波音公司 | 多种解释性编程语言间的第一类对象共享 |
CN109298857A (zh) * | 2018-10-09 | 2019-02-01 | 杭州朗和科技有限公司 | Dsl语句模型的建立方法、介质、装置和计算设备 |
CN110175031A (zh) * | 2019-04-25 | 2019-08-27 | 平安科技(深圳)有限公司 | Sql语言转成dsl语言的方法、装置、计算机设备和存储介质 |
CN110879699A (zh) * | 2018-09-05 | 2020-03-13 | 易保网络技术(上海)有限公司 | 领域专用语言dsl的图形化处理方法和设备 |
CN111309752A (zh) * | 2019-11-26 | 2020-06-19 | 上海金融期货信息技术有限公司 | 面向业务流式数据处理的领域特定语言组件及其运作方法 |
CN113065954A (zh) * | 2020-12-24 | 2021-07-02 | 上海金融期货信息技术有限公司 | 基于低延迟复杂事件的做市策略引擎系统 |
CN113946321A (zh) * | 2021-10-18 | 2022-01-18 | 易保网络技术(上海)有限公司 | 计算逻辑的处理方法、电子设备和可读存储介质 |
CN114416778A (zh) * | 2022-01-21 | 2022-04-29 | 北京金山云网络技术有限公司 | 一种函数构建方法、装置、电子设备及可读存储介质 |
CN114462381A (zh) * | 2022-02-07 | 2022-05-10 | 北京高途云集教育科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN115269038A (zh) * | 2022-07-14 | 2022-11-01 | 易保网络技术(上海)有限公司 | 无状态计算的数据处理方法、程序产品及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7860823B2 (en) * | 2006-05-04 | 2010-12-28 | Microsoft Corporation | Generic interface for deep embedding of expression trees in programming languages |
CN113703739B (zh) * | 2021-09-03 | 2023-05-09 | 上海森亿医疗科技有限公司 | 基于omiga引擎的跨语言融合计算方法、系统及终端 |
CN114036176A (zh) * | 2021-10-26 | 2022-02-11 | 泰康保险集团股份有限公司 | 业绩报酬的确定方法、装置、电子设备及介质 |
CN116185495B (zh) * | 2022-12-13 | 2023-10-13 | 易保网络技术(上海)有限公司 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
-
2022
- 2022-12-13 CN CN202211603482.0A patent/CN116185495B/zh active Active
-
2023
- 2023-06-13 WO PCT/CN2023/099918 patent/WO2024124833A1/zh unknown
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064721A (zh) * | 2011-10-24 | 2013-04-24 | 波音公司 | 多种解释性编程语言间的第一类对象共享 |
CN110879699A (zh) * | 2018-09-05 | 2020-03-13 | 易保网络技术(上海)有限公司 | 领域专用语言dsl的图形化处理方法和设备 |
CN109298857A (zh) * | 2018-10-09 | 2019-02-01 | 杭州朗和科技有限公司 | Dsl语句模型的建立方法、介质、装置和计算设备 |
CN110175031A (zh) * | 2019-04-25 | 2019-08-27 | 平安科技(深圳)有限公司 | Sql语言转成dsl语言的方法、装置、计算机设备和存储介质 |
CN111309752A (zh) * | 2019-11-26 | 2020-06-19 | 上海金融期货信息技术有限公司 | 面向业务流式数据处理的领域特定语言组件及其运作方法 |
CN113065954A (zh) * | 2020-12-24 | 2021-07-02 | 上海金融期货信息技术有限公司 | 基于低延迟复杂事件的做市策略引擎系统 |
CN113946321A (zh) * | 2021-10-18 | 2022-01-18 | 易保网络技术(上海)有限公司 | 计算逻辑的处理方法、电子设备和可读存储介质 |
CN114416778A (zh) * | 2022-01-21 | 2022-04-29 | 北京金山云网络技术有限公司 | 一种函数构建方法、装置、电子设备及可读存储介质 |
CN114462381A (zh) * | 2022-02-07 | 2022-05-10 | 北京高途云集教育科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN115269038A (zh) * | 2022-07-14 | 2022-11-01 | 易保网络技术(上海)有限公司 | 无状态计算的数据处理方法、程序产品及电子设备 |
Non-Patent Citations (1)
Title |
---|
李韦 ; 文渊博 ; 孙广中 ; 陈云霁 ; .提升高性能计算程序性能可移植性的领域特定语言.高技术通讯.2020,37-45. * |
Also Published As
Publication number | Publication date |
---|---|
CN116185495A (zh) | 2023-05-30 |
WO2024124833A1 (zh) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489101B (zh) | 接口模拟方法、系统、介质和电子设备 | |
CN113094123B (zh) | 应用程序中功能的实现方法、装置、电子设备和存储介质 | |
US8296786B2 (en) | Agent-based remote function execution | |
CN107943485B (zh) | 一种补丁编译平台及补丁编译方法 | |
US20130007713A1 (en) | Automated testing process | |
US20180052723A1 (en) | Middleware Interface and Middleware Interface Generator | |
CN111796865B (zh) | 一种字节码文件修改方法、装置、终端设备及介质 | |
CN112395098B (zh) | 应用程序接口调用方法、装置、存储介质和电子设备 | |
CN107368339B (zh) | 容器入口程序运行方法、系统、设备及存储介质 | |
US11321090B2 (en) | Serializing and/or deserializing programs with serializable state | |
CN116185495B (zh) | 计算函数构建方法、计算引擎、电子设备及可读存储介质 | |
CN113761588A (zh) | 一种数据校验方法、装置、终端设备及存储介质 | |
CN110633162B (zh) | 远程调用实现方法、装置、计算机设备及存储介质 | |
WO2024130981A1 (zh) | 结构化数据的计算方法、计算引擎、设备及可读存储介质 | |
US7814501B2 (en) | Application execution in a network based environment | |
CN116781586A (zh) | 一种gRPC流量解析方法、装置、设备及介质 | |
CN113687880B (zh) | 一种调用组件的方法、装置、设备和介质 | |
CN114936368A (zh) | 一种Java内存木马检测方法、终端设备及存储介质 | |
CN113778451A (zh) | 文件加载方法、装置、计算机系统和计算机可读存储介质 | |
CN112068814A (zh) | 可执行文件的生成方法、装置、系统及介质 | |
CN114138507B (zh) | Python程序服务化方法、装置及计算机可读存储介质 | |
US12061900B2 (en) | Web application configuration settings for execution in a cloud computing environment | |
CN116820566A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN118689484A (zh) | 一种任务执行方法、装置、设备及存储介质 | |
CN114237624A (zh) | 基于Go语言的错误处理方法、装置、设备、介质和产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |