掌桥专利:专业的专利平台
掌桥专利
首页

编译方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 18:46:07


编译方法、装置、计算机设备和存储介质

技术领域

本申请涉及计算机技术领域,特别是涉及一种编译方法、装置、计算机设备、存储介质和计算机程序产品。

背景技术

随着数字化转型的热潮以及信息化建设技术的发展,各种业务的各种需求可以通过脚本代码来实现。一般地,业务需求可以是预先确定的阶段性事件需求,这样,可以根据预先确定的阶段性事件需求开发程序代码,通过线上化的脚本引擎,进行线上化的脚本编译,来满足业务场景中的需求。

相关技术中,线上化脚本编译的过程是将脚本代码转换为执行文件,启动该执行文件,进行编译。随着业务的发展,会出现多种实时需求,此时需要重新上传脚本代码。但是,每一次脚本代码的重新上传都需要重新启动文件,导致脚本编译的效率较低。

发明内容

基于此,有必要针对上述技术问题,提供一种能够提高脚本编译效率的编译方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

第一方面,本申请提供了一种编译方法,应用于服务容器,所述服务容器包括第一内存、第二内存、编译接口、加载接口,所述方法包括:

基于所述脚本的标识信息,在所述第一内存中提取目标脚本,所述目标脚本是响应于脚本发布操作预先存储在所述第一内存的;

通过所述编译接口,在所述服务容器对应的编译环境中对所述目标脚本进行编译,得到编译后的目标脚本;

通过所述加载接口,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口,所述服务接口用于供外部设备进行调用。

在其中一个实施例中,所述方法还包括:

基于所述服务容器对应的环境配置参数,对所述初始内存进行配置,得到第二内存。

在其中一个实施例中,所述服务容器包括脚本执行类;

所述方法还包括:

将所述服务接口配置为所述脚本执行类的子类;

响应于对所述脚本执行类的调用操作,通过父子节点关系,调用所述服务接口。

在其中一个实施例中,所述第一内存为分布式内存;所述方法还包括:

响应于所述脚本发布操作,将所述目标脚本发布至各目标服务容器对应的分布式内存。

在其中一个实施例中,所述服务容器还包括网关设备以及部署接口;

所述响应于所述脚本发布操作,将所述目标脚本发布至各服务容器对应的分布式内存,包括:

通过所述网关设备,接收所述部署接口发送的目标脚本,并基于所述网关设备对应的注册地址列表,确定至少一个目标服务容器;

响应于所述脚本发布操作,通过所述网关设备将所述目标脚本发布至各目标服务容器对应的分布式内存。

在其中一个实施例中,所述通过所述加载接口,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口,包括:

通过所述加载接口,在所述执行内存中,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口。

在其中一个实施例中,所述预设的语言编译参数包括编译环境类参数、编译加载参数;所述方法还包括:

将所述编译环境类参数配置为内存文本虚拟编译环境;

将所述编译加载参数配置为字符文件加载方式。

第二方面,本申请还提供了一种脚本编译装置,应用于服务容器,所述服务容器包括第一内存、第二内存、编译接口、加载接口,所述装置包括:

提取模块,用于基于所述脚本的标识信息,在所述第一内存中提取目标脚本,所述目标脚本是响应于脚本发布操作预先存储在所述第一内存的;

编译模块,用于通过所述编译接口,在所述服务容器对应的编译环境中对所述目标脚本进行编译,得到编译后的目标脚本;

加载模块,用于通过所述加载接口,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口,所述服务接口用于供外部设备进行调用。

在其中一个实施例中,所述装置还包括:

第一配置模块,用于基于所述服务容器对应的环境配置参数,对所述初始内存进行配置,得到第二内存。

在其中一个实施例中,所述服务容器包括脚本执行类;

所述装置还包括:

第二配置模块,用于将所述服务接口配置为所述脚本执行类的子类;

调用模块,用于响应于对所述脚本执行类的调用操作,通过父子节点关系,调用所述服务接口。

在其中一个实施例中,所述第一内存为分布式内存;所述装置还包括:

发布模块,用于响应于所述脚本发布操作,将所述目标脚本发布至各目标服务容器对应的分布式内存。

在其中一个实施例中,所述服务容器还包括网关设备以及部署接口;

所述发布模块,具体用于:通过所述网关设备,接收所述部署接口发送的目标脚本,并基于所述网关设备对应的注册地址列表,确定至少一个目标服务容器;响应于所述脚本发布操作,通过所述网关设备将所述目标脚本发布至各目标服务容器对应的分布式内存。

在其中一个实施例中,所述加载模块具体用于:

通过所述加载接口,在所述执行内存中,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口。

在其中一个实施例中,所述预设的语言编译参数包括编译环境类参数、编译加载参数;所述装置还包括:

第三配置模块,用于将所述编译环境类参数配置为内存文本虚拟编译环境;

第四配置模块,用于将所述编译加载参数配置为字符文件加载方式。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

基于所述脚本的标识信息,在所述第一内存中提取目标脚本,所述目标脚本是响应于脚本发布操作预先存储在所述第一内存的;

通过所述编译接口,在所述服务容器对应的编译环境中对所述目标脚本进行编译,得到编译后的目标脚本;

通过所述加载接口,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口,所述服务接口用于供外部设备进行调用。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

基于所述脚本的标识信息,在所述第一内存中提取目标脚本,所述目标脚本是响应于脚本发布操作预先存储在所述第一内存的;

通过所述编译接口,在所述服务容器对应的编译环境中对所述目标脚本进行编译,得到编译后的目标脚本;

通过所述加载接口,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口,所述服务接口用于供外部设备进行调用。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

基于所述脚本的标识信息,在所述第一内存中提取目标脚本,所述目标脚本是响应于脚本发布操作预先存储在所述第一内存的;

通过所述编译接口,在所述服务容器对应的编译环境中对所述目标脚本进行编译,得到编译后的目标脚本;

通过所述加载接口,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口,所述服务接口用于供外部设备进行调用。

上述编译方法、装置、计算机设备、存储介质和计算机程序产品,该编译方法包括:通过基于脚本的标识信息,在第一内存中提取目标脚本,目标脚本是响应于脚本发布操作预先存储在第一内存的;通过编译接口,在服务容器对应的编译环境中对目标脚本进行编译,得到编译后的目标脚本;通过加载接口,对编译后的目标脚本进行加载,生成目标脚本对应的服务接口,服务接口用于供外部设备进行调用。通过采用本方法,可以在内存中实现脚本的实时更新,实现新增脚本的实时编译,提高了脚本的编译效率,以及可以通过编译完成的脚本满足高性能高并发的决策应用场景。

附图说明

图1为一个实施例中编译方法的流程示意图;

图2为一个实施例中调用步骤的流程示意图;

图3为一个实施例中加载步骤的流程示意图;

图4为另一个实施例中编译方法的流程示意图;

图5为一个实施例中编译装置的结构框图;

图6为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图1所示,提供了一种编译方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现,上述终端可以但不限于是各种个人计算机、笔记本电脑、智能手机等,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本实施例中,该编译方法应用于服务容器,服务容器包括第一内存、第二内存、编译接口、加载接口,该编译方法包括以下步骤:

步骤102,基于脚本的标识信息,在第一内存中提取目标脚本。

其中,目标脚本是响应于脚本发布操作预先存储在第一内存的,脚本的标识信息可以是脚本的code信息,即脚本的名称,服务容器可以是基于java语言的spring cloud服务容器,第一内存可以是服务容器中的主线程对应的分布式内存(redis),一个服务容器与分布式内存中的一个内存相对应,Spring cloud服务:指的只是一种采用的spring框架的一种微服务。

在本实施例中,终端获取用于满足新增需求的新增脚本,作为目标脚本;这样,终端可以通过服务容器的部署接口,将获取到的目标脚本基于目标脚本的标识信息存储至服务容器的第一内存。这样,终端可以基于目标脚本的标识信息,在该第一内存中提取该目标脚本的标识信息对应的目标脚本。

步骤104,通过编译接口,在服务容器对应的编译环境中对目标脚本进行编译,得到编译后的目标脚本。

在本实施例中,终端可以通过编译接口,将提取到的目标脚本发布至该服务容器对应的编译环境。这样,在服务容器对应的编译环境中,终端可以依赖于该服务容器对应的编译环境对目标脚本进行编译,得到编译完成的目标脚本。

步骤106,通过加载接口,对编译后的目标脚本进行加载,生成目标脚本对应的服务接口,服务接口用于供外部设备进行调用。

在本实施例中,服务容器可以通过加载接口,获取编译完成的脚本,这样,服务容器可以将编译完成的脚本加载到服务容器的执行内存中,并在执行内存中对编译完成的目标脚本进行封装,得到封装后的目标脚本,即目标脚本对应的服务接口,该服务接口可以用于供第三方的外部设备进行调用,从而提供服务。

上述编译方法中,通过基于所述脚本的标识信息,在所述第一内存中提取目标脚本,所述目标脚本是响应于脚本发布操作预先存储在所述第一内存的。通过所述编译接口,在所述服务容器对应的编译环境中对所述目标脚本进行编译,得到编译后的目标脚本。通过所述加载接口,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口,所述服务接口用于供外部设备进行调用。通过采用本方法,可以在内存中实现脚本的实时更新,提高脚本的编译效率以及服务能力。

在一个实施例中,该服务容器还包括执行内存;该编译方法还包括:

基于服务容器对应的环境配置参数,对初始内存进行配置,得到执行内存。

在本实施例中,服务容器的环境配置参数可以是服务容器的编译环境中参数,例如可以是各个API接口的参数等等。初始内存可以是服务容器的主线程对应的内存;这样,服务容器可以基于上述环境配置参数对服务容器的主线程的内存进行配置,得到与服务容器适配的内存,服务容器的执行内存。

基于以上方案,可以实现对服务容器的编译环境与服务容器的内存进行同步,实现了新增脚本的实时编译。

在一个实施例中,服务容器包括脚本执行类。

如图2所示,该编译方法还包括:

步骤202,将服务接口配置为脚本执行类的子类。

在本实施例中,服务容器可以将目标脚本对应的服务接口配置为服务容器的脚本执行类的子类,即将脚本执行类作为父类,将生成的服务接口作为该父类的子类。

步骤204,响应于对脚本执行类的调用操作,通过父子节点关系,调用服务接口。

在本实施例中,外部设备可以对该脚本执行类进行调用操作,这样,服务容器可以响应于对该脚本执行类的调用操作,调用该类的子类,并基于子类内部的逻辑进行处理。具体地,服务容器在接收到对脚本执行类的调用操作的步骤之后,可以基于该类的父子节点关系,确定该脚本执行类的子类,并调用该子类中的服务接口,通过该服务接口进行处理。

在一个示例中,目标脚本通过部署、编译、加载以及发布等过程,得到该目标脚本的服务接口,即可以进行封装处理,得到rest服务,该rest服务可以用于外部设备进行调用等操作。服务容器内部配置有脚本执行类(即,用于进行脚本执行的父类),服务容器中的目标脚本均可以配置为该父类的子类。这样,在脚本脚本完成后,服务容器中的rest接口可以对脚本进行实例化,实现通过父类调用子类中目标脚本的代码片段,基于代码片段的运行,提供决策服务。

本实施例中,可以实现脚本的高效执行,提高脚本执行的灵活性。

在其中一个实施例中,所述第一内存为分布式内存;该编译方法还包括:

响应于所述脚本发布操作,将所述目标脚本发布至各目标服务容器对应的分布式内存。

在本实施例中,每一服务容器上均配置有分布式内存,这样,可以基于分布式内存的分布式结构,通过目标脚本对应的脚本发布操作,向分布式内存发布目标脚本,即将目标脚本发布至分布式内存中,实现将目标脚本发布至多个服务容器的效果。

在其中一个实施例中,所述服务容器还包括网关设备以及部署接口;

所述响应于所述脚本发布操作,将所述目标脚本发布至各服务容器对应的分布式内存,包括:

通过所述网关设备,接收所述部署接口发送的目标脚本,并基于所述网关设备对应的注册地址列表,确定至少一个目标服务容器;响应于所述脚本发布操作,通过所述网关设备将所述目标脚本发布至各目标服务容器对应的分布式内存。

在本实施例中,网关设备可以接收其他服务容器通过部署接口发送的目标脚本,这样,在网关设备接收到该目标脚本后,服务容器可以确定在网关设备上进行注册且已注册完成的服务容器的地址列表,并确定上述服务容器为目标服务容器。这样,该服务容器可以基于接收到的脚本发布操作,通过网关设备向分布式内存发布目标脚本,即将目标脚本发布至分布式内存中,实现将目标脚本发布至多个服务容器的效果。

在一个实施例中,所述通过所述加载接口,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口,包括:

通过所述加载接口,在所述执行内存中,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口。

在本实施例中,服务容器可以通过加载接口获取到已经编译完成的目标脚本,并在服务容器的执行内存中对编译完成的目标脚本进行加载,实现该目标脚本在服务中的使用。

本实施例中,可以实现对目标脚本的使用,提高目标脚本的可用性。

在一个实施例中,预设的语言编译参数包括编译环境类参数、编译加载参数。如图3所示,该编译方法还包括:

步骤302,将编译环境类参数配置为内存文本虚拟编译环境。

在本实施例中,服务容器中的语言编译参数的具体过程可以是,首先加载tools.jar工具包,根据java编译参数进行编译环境的制定以及依赖包的设定,完成服务容器的脚本编译环境的设置。服务容器可以对工具包中的编译环境类进行重写,即将编译环境类参数配置为内存文本虚拟编译环境,实现从只能采用文件进行编译到可以采用内存中存储的脚本进行编译的转换。

步骤304,将编译加载参数配置为字符文件加载方式。

在本实施例中,编译加载参数可以是用于描述加载内容的参数。服务容器可以通过对编译加载参数的重新实现对编译加载方式的重写。例如,可以将编译加载参数配置为字符文件加载方式,实现对字符的加载。

在一个示例中,服务容器可以将编译加载参数配置为String Java File Manage自定义类,该自定义类可以将脚本中的字符转换为文件,并将转换得到的文件作为加载类对象的加载目标,这样,可以实现对字符的加载,并可以将编译完成的脚本以及加载后的目标脚本一并存储至内存中进行保存。

本实施例中,可以实现内存中脚本的编译以及脚本中字符的加载,提高了脚本的编译效率以及加载效率。

以下,如图4所示,结合一具体实施例详细描述该编译方法的具体执行过程:

在一示例性实施例中,随着数字化转型的热潮,信息化建设的转型,业务的场景所需都由阶段事件人为确定,转变成了实时的业务场景所需,因此对业务决策所需的性能需求也在提升,现有的很多决策都是基于开源的脚本技术以及决策引擎而进行实现,此开源技术因在设计初就只是为了满足决策所需而制定,并没有考虑后续场景针对性能所需场景的需求。

因此,需要构建可以实时进行脚本编译以及脚本加载的服务容器,例如可以是实时进行基于java语言的脚本编译以及脚本加载pring cloud服务容器。这样,提供脚本的部署接口、编译接口、加载接口、发布接口,并可以将上述接口以JAVA的形式进行封装,提供调用服务。其中,部署接口,可以通过传递脚本CODE的名称信息传递脚本内容,即,将脚本内容发布到分布式内存(Redis)中进行保存;编译接口,可以基于脚本的名称信息,从分布式内存中获取脚本内容,并依赖Spring Cloud服务容器的环境进行脚本编译,把编译好的脚本内容保存至Spring Cloud服务容器的内存;加载接口,可以通过脚本的名称信息,从SpringCloud服务容器中获取编译完成的脚本,加载到Spring Cloud服务容器的执行内存中,让脚本可以实现在服务中的使用;发布接口,可以通过脚本CODE,把以编译好的脚本内容动态发布生成可供外部调用的web(Result)服务,供外部其他第三方应用调用。这样,可以提供内存保存脚本以及脚本资源的容器用于脚本的临时内存保存,以及提供脚本加载完成后,可立即提供对外决策服务的能力。

在一个示例中,spring cloud服务容器可以加载tools.jar工具包,以及设置服务容器的脚本的编译环境,直接根据java编译参数进行编译环境的制定以及依赖包的设定;重写java tools工具包中的编译环境类,设置内存文本虚拟编译环境,以及重写javatools中编译加载方式,实现字符的加载;动态获取编译依赖环境的依赖参数进行代码设定,自定义java加载类,可进行文本流的编译脚本进行加载;获取整个spring cloud的执行主线程容器对象,根据系统环境进行内存编译好的脚本进行容器线程加载自定义的文本流的加载器,使其脚本能完本与容器环境进行集合,以及在脚本中采用继承父类的方式进行脚本拼接。在该种情况下,外部设备可以直接调用父类的执行方法,进行不同脚本内部逻辑的调用。

基于以上方案,可以实现自定义的内存字符流编译存储器,可对字符流进行编译,编译完成后并存储与容器内存中,待容器线程加载;以及自定义字符流编译文件类加载器,对内存中的字符流加载封装成类加载器,供容器线程加载器对内存中的编译好的字符流脚本加载,使其能与容器一体化供外部调用。在加载完成后,可直接通过spring cloud分布式服务的能力来满足高性能高并发的决策应用场景。

也就是说,一方面。服务容器可以对脚本进行自定义脚本子类的操作,即重新脚本中的执行方法,得到脚本字符流,这样,可以将脚本字符流添加至内存编译文件集合中。另一方面,可以通过Java tools工具类进行脚本字符流编译环境以本身的编译环境设定,通过重新设定的编译环境对内存编译文件集合中的脚本字符流发送至脚本内存字符流加载器。服务容器可以是通过spring cloud微服务提供的容器,该服务容器可以获取容器线程环境,并基于该容器线程环境与脚本内存字符流加载器得到脚本容器集成,并基于具体决策规则逻辑实现对脚本的加载以及编译。还可以通过服务接口调用脚本父类中的执行方法,实现对脚本的加载以及编译。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的编译方法的编译装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个编译装置实施例中的具体限定可以参见上文中对于编译方法的限定,在此不再赘述。

在一个实施例中,如图5所示,一种脚本编译装置500,应用于服务容器,服务容器包括第一内存、第二内存、编译接口、加载接口,该编译装置500包括:

提取模块501,用于基于脚本的标识信息,在第一内存中提取目标脚本,目标脚本是响应于脚本发布操作预先存储在第一内存的。

编译模块502,用于通过编译接口,在服务容器对应的编译环境中对目标脚本进行编译,得到编译后的目标脚本。

加载模块503,用于通过加载接口,对编译后的目标脚本进行加载,生成目标脚本对应的服务接口,服务接口用于供外部设备进行调用。

在其中一个实施例中,所述装置还包括:

第一配置模块,用于基于所述服务容器对应的环境配置参数,对所述初始内存进行配置,得到第二内存。

在其中一个实施例中,所述服务容器包括脚本执行类;

所述装置还包括:

第二配置模块,用于将所述服务接口配置为所述脚本执行类的子类;

调用模块,用于响应于对所述脚本执行类的调用操作,通过父子节点关系,调用所述服务接口。

在其中一个实施例中,所述第一内存为分布式内存;所述装置还包括:

发布模块,用于响应于所述脚本发布操作,将所述目标脚本发布至各目标服务容器对应的分布式内存。

在其中一个实施例中,所述服务容器还包括网关设备以及部署接口;

所述发布模块,具体用于:通过所述网关设备,接收所述部署接口发送的目标脚本,并基于所述网关设备对应的注册地址列表,确定至少一个目标服务容器;响应于所述脚本发布操作,通过所述网关设备将所述目标脚本发布至各目标服务容器对应的分布式内存。

在其中一个实施例中,所述加载模块具体用于:

通过所述加载接口,在所述执行内存中,对所述编译后的目标脚本进行加载,生成所述目标脚本对应的服务接口。

在其中一个实施例中,所述预设的语言编译参数包括编译环境类参数、编译加载参数;所述装置还包括:

第三配置模块,用于将所述编译环境类参数配置为内存文本虚拟编译环境;

第四配置模块,用于将所述编译加载参数配置为字符文件加载方式。

上述编译装置500中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储XX数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种编译方法。

本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

技术分类

06120115686492