CN114356317A - 虚拟机中通用数据类型获取方法、存储介质、设备及系统 - Google Patents
虚拟机中通用数据类型获取方法、存储介质、设备及系统 Download PDFInfo
- Publication number
- CN114356317A CN114356317A CN202111521466.2A CN202111521466A CN114356317A CN 114356317 A CN114356317 A CN 114356317A CN 202111521466 A CN202111521466 A CN 202111521466A CN 114356317 A CN114356317 A CN 114356317A
- Authority
- CN
- China
- Prior art keywords
- data
- type
- value information
- interface
- information
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种虚拟机中通用数据类型获取方法、存储介质、设备及系统,涉及数据处理领域,该方法包括创建通用数据存储模型,对C++层所有类型的数据进行存储;创建object数组,对所述通用数据存储模型中存储的数据的类型信息进行存储;获取所述通用数据存储模型中存储的数据的键值信息并存储至创建的字符串数组中;基于所述object数组中存储的数据的类型信息,将所述通用数据存储模型中存储数据的数值信息存储至object数组中;基于虚拟机提供的接口注册模式在所述C++层进行接口注册,所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息。本发明能够减少接口的编写数量,并有效减轻接口的维护工作量。
Description
技术领域
本发明涉及数据处理领域,具体涉及一种虚拟机中通用数据类型获取方法、存储介质、设备及系统。
背景技术
在某些情况下,需要将c++层中计算的结果数据发送至虚拟机中,例如,数据的计算或者加密过程在c++层中执行,执行得到的结果数据则需要发送至虚拟机中进行使用,而这些结果数据可能存在类型不一样的情况,可能是字符串的类型,也可能是整数类型,也可能是浮点数类型,也可能是同时包含多个类型的结果数据,且每个结果数据的类型都是不一样的。
对于上述情形,当前常见的解决方案是针对每种情况均单独设计接口,以适配不同类型的数据,从而导致会形成多个不同返回数据的接口,使得对于接口的维护工作不易,且当有新的数据类型增加时还需要对应增加新的接口。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种虚拟机中通用数据类型获取方法、存储介质、设备及系统,能够减少接口的编写数量,并有效减轻接口的维护工作量。
为达到以上目的,本发明提供的一种虚拟机中通用数据类型获取方法,具体包括以下步骤:
创建通用数据存储模型,并基于创建的所述通用数据存储模型对C++层所有类型的数据进行存储;
创建object数组,并基于创建的所述object数组对所述通用数据存储模型中存储的数据的类型信息进行存储;
遍历所述通用数据存储模型,获取所述通用数据存储模型中存储的数据的键值信息并存储至创建的字符串数组中;
基于所述object数组中存储的数据的类型信息,将所述通用数据存储模型中存储数据的数值信息存储至object数组中;
基于虚拟机提供的接口注册模式在所述C++层进行接口注册,所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息。
在上述技术方案的基础上,
所述通用数据存储模型中存储的每一个数据均包括数据的数值内容、类型信息和键值信息;
所述数据的类型包括布尔类型、浮点数类型、长整数类型、整数类型和字符串类型。
在上述技术方案的基础上,所述基于创建的所述object数组对所述通用数据存储模型中存储的数据的类型信息进行存储,具体步骤包括:
创建用于获取数据的类型信息的类型获取接口;
基于for循环遍历通用数据存储模型,获取得到通用数据存储模型e中存储的数据的类型信息;
通过创建的类型获取接口将获取得到的类型信息存储至object数组中。
在上述技术方案的基础上,所述遍历所述通用数据存储模型,获取所述通用数据存储模型中存储的数据的键值信息,具体步骤包括:
创建用于获取数据的键值信息的接口,以及创建用于存储键值信息的字符串数组;
基于创建的用于获取键值信息的接口,并采用for循环遍历通用数据存储模型,获取得到通用数据存储模型中存储的数据的键值信息;
将获取得到的键值信息存储至字符串数组中。
在上述技术方案的基础上,所述基于所述object数组中存储的数据的类型信息,将所述通用数据存储模型中存储数据的数值信息存储至object数组中,具体步骤包括:
创建用于获取数据的数值信息的接口;
基于for循环遍历通用数据存储模型,获取通用数据存储模型中存储的数据的数值信息;
基于object数组中存储的数据的类型信息,得到类型信息对应数据的数值信息;
通过创建的用于获取数值信息的接口将得到的数值信息存储至object数组中。
在上述技术方案的基础上,所述基于虚拟机提供的接口注册模式在所述C++层进行接口注册,所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息,具体步骤包括:
基于虚拟机提供的接口注册模式在C++层进行接口注册,注册的接口包括类型信息接口、键值信息接口和数值信息接口;
虚拟机调用类型信息接口获取得到object数组中存储的类型信息;
虚拟机调用键值信息接口获取得到字符串数组中存储的键值信息;
虚拟机调用数值信息接口获取得到object数组中存储的数值信息。
在上述技术方案的基础上,当所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息之后,还包括:
创建ResultData对象,对虚拟机获取的键值信息、类型信息和数值信息进行存储;
将ResultData对象映射至虚拟机中。
本发明提供的一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述方法的步骤。
本发明提供的一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述所述方法的步骤。
本发明提供的一种虚拟机中通用数据类型获取系统,包括:
第一创建模块,其用于创建通用数据存储模型,并基于创建的通用数据存储模型对C++层所有类型的数据进行存储;
第二创建模块,其用于创建object数组,并基于创建的object数组对所述通用数据存储模型中存储的数据的类型信息进行存储;
第一存储模块,其用于遍历所述通用数据存储模型,获取所述通用数据存储模型中存储的数据的键值信息并存储至创建的字符串数组中;
第二存储模块,其用于基于所述object数组中存储的数据的类型信息,将所述通用数据存储模型中存储数据的数值信息存储至object数组中;
获取模块,其用于基于虚拟机提供的接口注册模式在所述C++层进行接口注册,驱使所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息。
与现有技术相比,本发明的优点在于:通过基于虚拟机提供的接口注册模式在C++层进行接口注册,使得通过一个接口能够适配所有的数据类型,从而实现C++层和虚拟机间数据的交互,减少接口的编写数量,从而避免编写多种接口来进行C++层和虚拟机间数据交互的适配,有效减轻接口的维护工作量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种虚拟机中通用数据类型获取方法的流程图;
图2为本发明实施例中一种虚拟机中通用数据类型获取系统的结构示意图。
具体实施方式
本发明实施例提供一种虚拟机中通用数据类型获取方法,通过基于虚拟机提供的接口注册模式在C++层进行接口注册,使得通过一个接口能够适配所有的数据类型,从而实现C++层和虚拟机间数据的交互,减少接口的编写数量,从而避免编写多种接口来进行C++层和虚拟机间数据交互的适配,有效减轻接口的维护工作量。本发明实施例相应地还提供了一种存储介质、电子设备和虚拟机中通用数据类型获取系统。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,本发明实施例提供的一种虚拟机中通用数据类型获取方法,具体包括以下步骤:
S1:创建通用数据存储模型,并基于创建的通用数据存储模型对C++层所有类型的数据进行存储;
本发明实施例中,通用数据存储模型中存储的每一个数据均包括数据的数值内容、类型信息和键值信息;数据的类型包括布尔类型、浮点数类型、长整数类型、整数类型和字符串类型。
在C++层中需要使用一种能够存储任意类型数据的模型,本发明则选用通用数据存储模型,通用数据存储模型可以存储任意类型的数据。对于数据在通用数据存储模型中的存储,具体的过程为:
首先使用一个枚举变量来表示每一种类型数据,相应的执行代码为:
Enum Type{数据类型。
NULL=0,此类型表示是一个空类型。
Bool,此类型则是一个布尔类型。
Double,此类型则是一个浮点数类型。
Long,此类型则是一个长整数类型。
Int,此类型则是一个整数类型。
String,此类型则是一个字符串类型。
}
然后将C++层所有类型的数据存储至通用数据存储模型中。
需要说明的是,在通用数据存储模型中,每一个存储的数据均包括数值内容(即数据内容)、类型信息和键值信息。
考虑到实际的需求情况,由于会存在多个返回数据,而每个数据的映射关系均需要告诉到虚拟机,从而虚拟机才能够方便的获取对应的数据,因此,本发明对于每个数据基于通用数据存储模型的支持类型,均设计成3个元素来组合成一个元素,即将数据的数值内容、类型信息和键值信息三个元素组合成一个元素,进而存储至通用数据存储模型中,且每个元素对应一个数组。从而,对应任意一种返回数据的情况,都使用3个数组来完成数据的传输,达到尽可能的用最少的信息来进行传递的目的,同时又能够涵盖所有的数据传输情况。
S2:创建object数组,并基于创建的object数组对通用数据存储模型中存储的数据的类型信息进行存储;
对应于虚拟机的数据类型存在多种,这些数据在虚拟机中都有对应的类型。基于实际的情况,无论存在多少个数据均只需要一个接口进行转换,因此需要使用一种能够通用的转换和存储方式。本发明采取使用虚拟机数据类性的一种基础类object,其中所有的数据类型都是继承自object的,故所有数据类型都可以通过object来进行转换得到,因此本发明使用一个object数组来存储所有的数据。
本发明实施例中,通过创建object数组,首先对所有数据的类型信息进行存储,每个数据类型均为一个type(类型),将所有数据的类型信息均存储至object数组中。
S3:遍历通用数据存储模型,获取通用数据存储模型中存储的数据的键值信息并存储至创建的字符串数组中;
在进行数据存储时,每个数据均设置了一个键值信息用于存储数据的名称,从而在虚拟机中能够知晓如何获取每个对应的数据。在通用数据存储模型存储一个字符串用于作为键值信息,那么遍历通用数据存储模型即可获取得到键值信息的相关数据。
S4:基于object数组中存储的数据的类型信息,将通用数据存储模型中存储数据的数值信息存储至object数组中;
S5:基于虚拟机提供的接口注册模式在C++层进行接口注册,虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息。
当对c++层数据的键值信息、类型信息和数值信息进行存储之后,则可以通过调用注册的接口获取得到数据的这三个数据,这三个数据则对应了返回结果数。
本发明实施例中,基于创建的object数组对通用数据存储模型中存储的数据的类型信息进行存储,具体步骤包括:
S201:创建用于获取数据的类型信息的类型获取接口;
创建的类型获取接口的相关执行代码为:
Local<ArrayObject>getTypes()
其中,Local表示代码定义,ArrayObject表示object数组,getTypes()表示获取数据的类型信息。
由于本发明所要实现的是C++层和虚拟机间的数据交换功能,C++层和虚拟机两者对对象的生命周期管理是不同的,因此在通过类型获取接口进行类型信息的获取时,需要返回一个智能指针类型Local,从而可以自动管理对象的生命周期,无需在C++层或虚拟机中特别的管理对象的生命周期。
通过类型获取接口进行类型信息的获取后,返回值是一个Int数组,Int数组中存储有所有数据的类型信息。
S202:基于for循环遍历通用数据存储模型,获取得到通用数据存储模型中存储的数据的类型信息;
通过for循环遍历通用数据存储模型,相应的执行代码为:
For(int i=0;i<commonType.size();++i)
其中,For表示for循环,commonType.size()表示通用数据存储模型中存储的数据,commonType即为本发明所创建的通用数据存储模型。
S203:通过创建的类型获取接口将获取得到的类型信息存储至object数组中。
由于类型信息是一个枚举变量,因此返回值是一个可以存储类型信息的Int数组。对于结果的返回,相应的执行代码为:
IntArray dat;
dat->setElement(i,commonType[i].type);
Return data;
其中,IntArray dat表示创建一个返回值的变量,dat->setElement(i,commonType[i].type)表示将类型信息存储到返回值中,Return data表示返回结果。
本发明实施例中,遍历通用数据存储模型,获取通用数据存储模型中存储的数据的键值信息,具体步骤包括:
S301:创建用于获取数据的键值信息的接口,以及创建用于存储键值信息的字符串数组;
创建的用于获取数据的键值信息的接口,相关执行代码为:
Local<StringArray>getKeys()
其中,Local表示代码定义,StringArray表示字符串数组,getKeys()表示获取数据的键值信息。
由于本发明所要实现的是C++层和虚拟机间的数据交换功能,C++层和虚拟机两者对对象的生命周期管理是不同的,因此在通过类型获取接口进行类型信息的获取时,需要返回一个智能指针类型Local,从而可以自动管理对象的生命周期,无需在C++层或虚拟机中特别的管理对象的生命周期。
S302:基于创建的用于获取键值信息的接口,并采用for循环遍历通用数据存储模型,获取得到通用数据存储模型中存储的数据的键值信息;
采用for循环遍历通用数据存储模型,相关的执行代码为:
For(int i=0;i<commonType.size();++i)
其中,For表示for循环,commonType.size()表示通用数据存储模型中存储的数据。
S303:将获取得到的键值信息存储至字符串数组中。由于键值信息为字符串信息,故本发明通过字符串数组来对键值信息进行存储。
对于结果的返回,相应的执行代码为:
IntArray dat;
dat->setElement(i,commonType[i].type);
Return data;
其中,IntArray dat表示创建一个返回值的变量,dat->setElement(i,commonType[i].type)表示将类型信息存储到返回值中,Return data表示返回结果。
本发明实施例中,基于object数组中存储的数据的类型信息,将通用数据存储模型中存储数据的数值信息存储至object数组中,具体步骤包括:
S401:创建用于获取数据的数值信息的接口;
创建的用于获取数据的数值信息的接口,相关执行代码为:
Local<StringArray>getValues()
其中,Local表示代码定义,StringArray表示字符串数组,getValues()表示获取数据的数值信息。
由于本发明所要实现的是C++层和虚拟机间的数据交换功能,C++层和虚拟机两者对对象的生命周期管理是不同的,因此在通过类型获取接口进行类型信息的获取时,需要返回一个智能指针类型Local,从而可以自动管理对象的生命周期,无需在C++层或虚拟机中特别的管理对象的生命周期。
S402:基于for循环遍历通用数据存储模型,获取通用数据存储模型中存储的数据的数值信息;
采用for循环遍历通用数据存储模型,相关的执行代码为:
For(int i=0;i<commonType.size();++i)
其中,For表示for循环,commonType.size()表示通用数据存储模型中存储的数据。
S403:基于object数组中存储的数据的类型信息,得到类型信息对应数据的数值信息;
S404:通过创建的用于获取数值信息的接口将得到的数值信息存储至object数组中。
本发明基于数据的类型信息,将数据的数值信息存储至object数组中,并实现数据转换,相应的执行代码为:
Switch(commonType[i].type){
Case Null;
{
dat->setElement(i,null);
}
Case Bool;
{
dat->setElement(i,commonType[i].value.Bool())
}
Case Double;
{
dat->setElement(i,commonType[i].value.Double());
}
Case Long;
{
dat->setElement(i,commonType[i].value.Long());
}
Case Int;
{
dat->setElement(i,commonType[i].value.Int());
}
Case String;{
dat->setElement(i,commonType[i].value.String());
}
Return data;}
其中,Switch表示代码定义;commonType[i].type表示通过判断当前数据的类型来获取对应的数据;Case Null表示数据为一个空类型数据;dat->setElement(i,null)表示将空类型数据存储到数组中;Case Bool表示是一个布尔类型的数据;dat->setElement(i,commonType[i].value.Bool())表示存储一个空类型数据到数组中;commonType[i].value.Bool()表示取出的内容为一个布尔类型的数据;Case Double表示是一个浮点数类型的数据;dat->setElement(i,commonType[i].value.Double())表示存储一个空类型的数据到数组中;commonType[i].value.Double()表示取出的内容为一个浮点数类型的数据;Case Long表示是一个长整数类型的数据;dat->setElement(i,commonType[i].value.Long())表示存储一个空类型的数据到数组中;commonType[i].value.Long()表示取出的内容为一个长整数类型的数据;Case Int表示是一个整数类型的数据;dat->setElement(i,commonType[i].value.Int())表示存储一个空类型的数据到数组中;commonType[i].value.Int()表示取出的内容为一个整数类型的数据;Case String表示是一个字符串类型的数据;dat->setElement(i,commonType[i].value.String())表示存储一个空类型的数据到数组中;commonType[i].value.String()表示取出的内容为一个字符串类型的数据;Return data表示返回结果。
通过上述转换过程,依据数据的数据类型将数据统一存储至object数组中,即使存在多个不同类型的数据也可以使用一个object数组来进行存储。
本发明实施例中,基于虚拟机提供的接口注册模式在C++层进行接口注册,虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息,具体步骤包括:
S501:基于虚拟机提供的接口注册模式在C++层进行接口注册,注册的接口包括类型信息接口、键值信息接口和数值信息接口;
S502:虚拟机调用类型信息接口获取得到object数组中存储的类型信息;
其中,类型信息接口具体为Local<ArrayObject>types=getTypes()。由于在C++层中对接口进行了注册,因此类型信息接口可以在虚拟机中进行调用,调用类型信息接口即可获取得到所有数据的类型信息数组。类型信息接口中types的大小为返回的数据大小,types则存储了所有的数据的类型信息,返回值是之前设计的智能指针,从而可以自动管理生命周期。
S503:虚拟机调用键值信息接口获取得到字符串数组中存储的键值信息;
其中,键值信息接口具体为Local<StringArray>keys=getKeys()。由于在C++层中对接口进行了注册,因此键值信息接口可以在虚拟机中进行调用,调用键值信息接口即可获取得到所有数据的键值信息数组。键值信息接口中keys存储了所有数据的键值信息,返回值是之前设计的智能指针,从而可以自动管理生命周期。
S504:虚拟机调用数值信息接口获取得到object数组中存储的数值信息。
数值信息接口具体为Local<objectArray>values=getValues()。由于在C++层中对接口进行了注册,因此数值信息接口可以在虚拟机中进行调用,调用数值信息接口即可获取得到所有数据的数值信息数组。数值信息接口中values存储了所有数据的数值信息,返回值是之前设计的智能指针,从而可以自动管理生命周期。
得到了所有的类型信息同时也得到了所有的数值信息,那么在虚拟机中则需要遍历来得到具体的数值,相应的执行代码为:
For(int i=0;i<types.length();i++){
Switch(types->getElement[i]){
Object v=values->getElement(i);
Case Null;{
Object v=values->getElement(i);
}
Case Bool;
{Boolean b=(Boolean)v;}
Case Double;
{Double b=(Double)v}
Case Long;表明是一个Long类型的数据。
{Long b=(Long)v}
Case Int;
{Integer b=(Integer)v;}
Case String;
{Stringb=(String)v}
其中,For(int i=0;i<types.length();i++)表示通过遍历types来得到数据的类型信息,types.length()表示数据的长度;Switch(types->getElement[i])表示判断当前数据的类型来获取对应的数据;Object v=values->getElement(i)表示取出对应数据的数值信息;Case Null表明数据是一个空类型;Object v=values->getElement(i)表示对应空类型数据的值,v内容也为空;Case Bool表示是一个布尔类型的数据;Boolean b=(Boolean)v表示转换成布尔类型;Case Double表示是一个浮点数类型的数据;Double b=(Double)v表示转换成浮点数类型;Case Long表示是一个长整数类型的数据;Long b=(Long)v表示转换成长整数类型;Case Int表示是一个整数类型的数据;Integer b=(Integer)v表示转换成整数类型;Case String表示是一个字符串类型的数据;Stringb=(String)v表示转换成字符串类型。
经过上述转换过程即可转换成对应的数据类型,在虚拟机中便可以依据数据的键值信息来取到对应的数据,并且是精确的类型数据,从而可以进行后续的使用。
本发明实施例中,当虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息之后,还包括:
S601:创建ResultData对象,对虚拟机获取的键值信息、类型信息和数值信息进行存储;
创建的ResultData对象具体为:
Struct ResultData{
global<ArrayObject>types;
global<StringArray>keys;
global<objectArray>values;
}
其中,Struct ResultData表示创建的ResultData对象;global<ArrayObject>types表示存储返回的类型信息数组;global<StringArray>keys表示存储返回的键值信息数组;global<objectArray>values表示存储返回的数值信息数组。
S602:将ResultData对象映射至虚拟机中。
在c++层中创建ResultData对象并把数据存储到ResultData对象中,然后将ResultData对象传递到虚拟机中,虚拟机依据ResultData对象的3个属性来获取数据。
在传统的方案中,对于c++层和虚拟机间的数据交互,需要返回一个整数类型数据的接口、一个浮点数类型数据的接口和一个字符串类型数据的接口,如果是返回多个数据,则需要单独的设计一个结构体来包装多个数据的返回结果,并且每个返回数据的类型不一样时还需要定义不同的结构体。例如:返回一个整数类型数据和一个浮点数类型数据,则需要定义整数类型数据接口和浮点数类型数据接口,对于返回结果,还需要在虚拟机中设计结果的映射关系;返回一个整数类型数据、一个浮点数类型数据和一个字符串类型数据,则需要定义整数类型数据接口、浮点数类型数据接口和字符串类型数据接口,对于返回结果,还需要在虚拟机中设计结果的映射关系。
而本发明中,则只需要设计一个返回接口和一个虚拟机的映射关系即可,ResultData对象包含了所有的情况,可以适配不同的情况,且无需正度每种情况单独设计接口。
本发明实施例的虚拟机中通用数据类型获取方法,通过基于虚拟机提供的接口注册模式在C++层进行接口注册,使得通过一个接口能够适配所有的数据类型,从而实现C++层和虚拟机间数据的交互,减少接口的编写数量,从而避免编写多种接口来进行C++层和虚拟机间数据交互的适配,有效减轻接口的维护工作量。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述实施例所述的虚拟机中通用数据类型获取方法的步骤。
本发明实施例还提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述的虚拟机中通用数据类型获取方法的步骤。
存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
参见图2所示,本发明实施例还提供一种虚拟机中通用数据类型获取,包括第一创建模块、第二创建模块、第一存储模块、第二存储模块和获取模块。
第一创建模块用于创建通用数据存储模型,并基于创建的通用数据存储模型对C++层所有类型的数据进行存储;第二创建模块用于创建object数组,并基于创建的object数组对通用数据存储模型中存储的数据的类型信息进行存储;第一存储模块用于遍历通用数据存储模型,获取通用数据存储模型中存储的数据的键值信息并存储至创建的字符串数组中;第二存储模块用于基于object数组中存储的数据的类型信息,将通用数据存储模型中存储数据的数值信息存储至object数组中;获取模块用于基于虚拟机提供的接口注册模式在C++层进行接口注册,驱使虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息。
本发明实施例的虚拟机中通用数据类型获取系统,通过基于虚拟机提供的接口注册模式在C++层进行接口注册,使得通过一个接口能够适配所有的数据类型,从而实现C++层和虚拟机间数据的交互,减少接口的编写数量,从而避免编写多种接口来进行C++层和虚拟机间数据交互的适配,有效减轻接口的维护工作量。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
Claims (10)
1.一种虚拟机中通用数据类型获取方法,其特征在于,具体包括以下步骤:
创建通用数据存储模型,并基于创建的所述通用数据存储模型对C++层所有类型的数据进行存储;
创建object数组,并基于创建的所述object数组对所述通用数据存储模型中存储的数据的类型信息进行存储;
遍历所述通用数据存储模型,获取所述通用数据存储模型中存储的数据的键值信息并存储至创建的字符串数组中;
基于所述object数组中存储的数据的类型信息,将所述通用数据存储模型中存储数据的数值信息存储至object数组中;
基于虚拟机提供的接口注册模式在所述C++层进行接口注册,所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息。
2.如权利要求1所述的一种虚拟机中通用数据类型获取方法,其特征在于:
所述通用数据存储模型中存储的每一个数据均包括数据的数值内容、类型信息和键值信息;
所述数据的类型包括布尔类型、浮点数类型、长整数类型、整数类型和字符串类型。
3.如权利要求1所述的一种虚拟机中通用数据类型获取方法,其特征在于,所述基于创建的所述object数组对所述通用数据存储模型中存储的数据的类型信息进行存储,具体步骤包括:
创建用于获取数据的类型信息的类型获取接口;
基于for循环遍历通用数据存储模型,获取得到通用数据存储模型中存储的数据的类型信息;
通过创建的类型获取接口将获取得到的类型信息存储至object数组中。
4.如权利要求1所述的一种虚拟机中通用数据类型获取方法,其特征在于,所述遍历所述通用数据存储模型,获取所述通用数据存储模型中存储的数据的键值信息,具体步骤包括:
创建用于获取数据的键值信息的接口,以及创建用于存储键值信息的字符串数组;
基于创建的用于获取键值信息的接口,并采用for循环遍历通用数据存储模型,获取得到通用数据存储模型中存储的数据的键值信息;
将获取得到的键值信息存储至字符串数组中。
5.如权利要求1所述的一种虚拟机中通用数据类型获取方法,其特征在于,所述基于所述object数组中存储的数据的类型信息,将所述通用数据存储模型中存储数据的数值信息存储至object数组中,具体步骤包括:
创建用于获取数据的数值信息的接口;
基于for循环遍历通用数据存储模型,获取通用数据存储模型中存储的数据的数值信息;
基于object数组中存储的数据的类型信息,得到类型信息对应数据的数值信息;
通过创建的用于获取数值信息的接口将得到的数值信息存储至object数组中。
6.如权利要求1所述的一种虚拟机中通用数据类型获取方法,其特征在于,所述基于虚拟机提供的接口注册模式在所述C++层进行接口注册,所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息,具体步骤包括:
基于虚拟机提供的接口注册模式在C++层进行接口注册,注册的接口包括类型信息接口、键值信息接口和数值信息接口;
虚拟机调用类型信息接口获取得到object数组中存储的类型信息;
虚拟机调用键值信息接口获取得到字符串数组中存储的键值信息;
虚拟机调用数值信息接口获取得到object数组中存储的数值信息。
7.如权利要求1所述的一种虚拟机中通用数据类型获取方法,其特征在于,当所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息之后,还包括:
创建ResultData对象,对虚拟机获取的键值信息、类型信息和数值信息进行存储;
将ResultData对象映射至虚拟机中。
8.一种可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-7任一项所述方法的步骤。
10.一种虚拟机中通用数据类型获取系统,其特征在于,包括:
第一创建模块,其用于创建通用数据存储模型,并基于创建的通用数据存储模型对C++层所有类型的数据进行存储;
第二创建模块,其用于创建object数组,并基于创建的object数组对所述通用数据存储模型中存储的数据的类型信息进行存储;
第一存储模块,其用于遍历所述通用数据存储模型,获取所述通用数据存储模型中存储的数据的键值信息并存储至创建的字符串数组中;
第二存储模块,其用于基于所述object数组中存储的数据的类型信息,将所述通用数据存储模型中存储数据的数值信息存储至object数组中;
获取模块,其用于基于虚拟机提供的接口注册模式在所述C++层进行接口注册,驱使所述虚拟机调用注册的接口获取得到数据的键值信息、类型信息和数值信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111521466.2A CN114356317A (zh) | 2021-12-13 | 2021-12-13 | 虚拟机中通用数据类型获取方法、存储介质、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111521466.2A CN114356317A (zh) | 2021-12-13 | 2021-12-13 | 虚拟机中通用数据类型获取方法、存储介质、设备及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356317A true CN114356317A (zh) | 2022-04-15 |
Family
ID=81100003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111521466.2A Pending CN114356317A (zh) | 2021-12-13 | 2021-12-13 | 虚拟机中通用数据类型获取方法、存储介质、设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356317A (zh) |
-
2021
- 2021-12-13 CN CN202111521466.2A patent/CN114356317A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7865887B2 (en) | Context based event handling and execution with prioritization and interrupt management | |
CN102193810B (zh) | 模块间内联候选标识 | |
JP7012689B2 (ja) | コマンド実行方法及び装置 | |
JP7350923B2 (ja) | ディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体 | |
CN103164249A (zh) | 用于脚本语言编译器的扩展机制 | |
CN102541630B (zh) | 计算机处理器中线程间数据通信的方法和系统 | |
CN111324619B (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
CN111694617B (zh) | 网络离线模型的处理方法、人工智能处理装置及相关产品 | |
CN110717268B (zh) | 一种基于face架构的可移植组件单元封装方法 | |
US8752056B2 (en) | Running native code across single or multi-core hybrid processor achitecture | |
CN103853535A (zh) | 修改中间件的方法和装置 | |
CN113010265A (zh) | Pod的调度方法、调度器、存储插件及系统 | |
CN113467980A (zh) | 日志输出方法、装置及系统和嵌入式设备 | |
WO2024152665A1 (zh) | 代码构建方法、装置、计算机设备及存储介质 | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN113625998B (zh) | 一种请求处理方法和装置 | |
CN113377342A (zh) | 一种项目构建方法、装置、电子设备及存储介质 | |
CN114371858A (zh) | 基于应用组件的代码处理系统、方法、设备及存储介质 | |
CN111475148A (zh) | 第三方依赖库隔离方法及装置、电子设备、存储介质 | |
CN114356317A (zh) | 虚拟机中通用数据类型获取方法、存储介质、设备及系统 | |
CN109597611A (zh) | 前端数据流控制组件开发系统、方法、设备及存储介质 | |
CN112527264B (zh) | 基于异构平台的常量数据访问优化方法 | |
CN111782196A (zh) | 基于mvp架构的开发方法及装置 | |
CN111399806B (zh) | 一种组件管理方法、装置、电子设备及存储介质 | |
CN111258628A (zh) | 一种规则文件比对方法、装置、可读存储介质及终端设备 |
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 |