CN113391791A - 一种数据处理方法、装置及存储介质 - Google Patents
一种数据处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113391791A CN113391791A CN202010169326.2A CN202010169326A CN113391791A CN 113391791 A CN113391791 A CN 113391791A CN 202010169326 A CN202010169326 A CN 202010169326A CN 113391791 A CN113391791 A CN 113391791A
- Authority
- CN
- China
- Prior art keywords
- field
- language
- type
- data
- structure data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据处理方法、装置及存储介质,其中,数据处理方法包括:获取基于Proto描述文件解析得到的第一语言结构数据,该第一语言结构数据包括以第一语言表示的Proto描述文件中的字段,以及Proto描述文件中与字段的字段类型相对应的语言间的转换限定信息;调用基于Proto描述文件解析得到的预置转换函数;该预置转换函数表征基于Proto描述文件中字段的字段类型以及与字段类型相对应的语言间的转换限定信息确定的语言间的映射关系;根据所述预置转换函数,将第一语言结构数据转换为第二语言结构数据;对第二语言结构数据进行序列化,得到Protobuf序列化数据。本发明既可以使用Protobuf作为协议的数据交换格式,又可以在服务中使用共享内存,并提高了数据传输效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种数据处理方法、装置及存储介质。
背景技术
Protocol Buffers即Protobuf是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化,它很适合做数据存储或RPC(Remote Procedure CallProtocol,远程过程调用协议)数据交换格式,可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。相对于Xml和Json这两种数据交换格式,Protobuf采用二进制字节的序列化方式使得数据传输效率更高。
共享内存是一种高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝。共享内存一般为固定大小的内存,其中的数据常以静态语言如C语言结构体类型。相关技术中,Protobuf没有C语言结构数据的序列化接口,从而相关服务在使用共享内存时无法使用Protobuf作为协议的数据交换格式,不仅影响了协议的前后端的上下兼容,而且数据传输效率不高。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种数据处理方法、装置及存储介质。所述技术方案如下:
一方面,提供了一种数据处理法,所述方法包括:
获取基于proto描述文件解析得到的第一语言结构数据,所述第一语言结构数据包括以第一语言表示的所述proto描述文件中的字段,以及所述proto描述文件中与所述字段的字段类型相对应的语言间的转换限定信息;所述语言包括第一语言和第二语言;
调用基于所述proto描述文件解析得到的预置转换函数;所述预置转换函数表征基于所述proto描述文件中字段的字段类型以及与所述字段类型相对应的所述语言间的转换限定信息,确定的所述语言间的映射关系;
根据所述预置转换函数,将所述第一语言结构数据转换为第二语言结构数据;
对所述第二语言结构数据进行序列化,得到protobuf序列化数据。
另一方面,提供了一种数据处理装置,所述装置包括:
第一获取模块,用于获取基于proto描述文件解析得到的第一语言结构数据,所述第一语言结构数据包括以第一语言表示的所述proto描述文件中的字段,以及所述proto描述文件中与所述字段的字段类型相对应的语言间的转换限定信息;所述语言包括第一语言和第二语言;
第一调用模块,用于调用基于所述proto描述文件解析得到的预置转换函数;所述预置转换函数表征基于所述proto描述文件中字段的字段类型以及与所述字段类型相对应的所述语言间的转换限定信息,确定的所述语言间的映射关系;
第一转换模块,用于根据所述预置转换函数,将所述第一语言结构数据转换为第二语言结构数据;
序列化模块,用于对所述第二语言结构数据进行序列化,得到protobuf序列化数据。
可选的,所述第一转换模块包括:
第一确定模块,用于确定所述预置转换函数中,与所述第一语言结构数据中字段的字段类型相匹配的第一目标转换函数;所述第一目标转换函数表征将所述第一语言转换为所述第二语言;
第一转换子模块,用于根据所述第一目标转换函数将所述第一语言结构数据转换为第二语言结构数据。
可选的,所述语言间的转换限定信息包括对应于字段类型为嵌套类型的第一转换限定信息,和对应于字段类型为数组类型的第二转换限定信息;
相应的,所述装置还包括用于基于所述proto描述文件解析得到预置转换函数的解析模块,所述解析模块包括:
第二获取模块,用于获取所述proto描述文件;
第一遍历模块,用于遍历所述proto描述文件中的消息结构;
预置转换函数生成模块,用于在所述proto描述文件中的消息结构遍历结束时,根据遍历过程中的赋值函数得到预置转换函数;
所述第一遍历模块包括:
第二遍历模块,用于遍历所述消息结构中的字段,获取当前字段的字段类型;
第一生成模块,用于在所述当前字段的字段类型为基础类型时,生成赋值所述当前字段的赋值函数;
第三获取模块,用于在所述当前字段的字段类型为嵌套类型时,获取所述当前字段中嵌套消息的消息名称以及第一转换限定信息;
第二生成模块,用于根据所述嵌套消息的消息名称以及所述第一转换限定信息,生成调用所述嵌套消息的赋值函数;
第三生成模块,用于在所述当前字段的字段类型为数组类型时,根据所述第二转换限定信息以及所述当前字段包含的子字段的字段类型生成赋值函数。
可选的,所述第三生成模块包括:
第三遍历模块,用于遍历所述当前字段中包含的子字段,获取当前子字段的字段类型;
第四生成模块,用于在所述当前子字段的字段类型为基础类型时,生成赋值所述当前子字段的赋值函数;
第四获取模块,用于在所述当前子字段的字段类型为嵌套类型时,获取所述当前子字段中嵌套消息的消息名称以及第一转换限定信息;
第五生成模块,根据所述嵌套消息的消息名称以及所述第一转换限定信息,生成调用所述嵌套消息的赋值函数。
可选的,所述第一转换限定信息包括用于标识所述嵌套类型的字段的使用状态的标识字段,所述第二转换限定信息包括用于指向数组类型的字段的实际长度的长度字段;
相应的,所述第一转换子模块在根据所述第一目标转换函数将所述第一语言结构数据转换为第二语言结构数据时,针对所述第一语言结构数据中字段类型为嵌套类型的字段,由所述第一目标转换函数根据所述字段中的标识字段确定待转换目标,并将所述待转换目标转换为第二语言结构数据;针对所述第一语言结构中字段类型为数组类型的字段,由所述第一目标转换函数根据所述字段中的长度字段确定待转换目标,并将所述待转换目标转换为第二语言结构数据。
可选的,所述装置还包括:
第五获取模块,用于获取所述protobuf序列化数据;
反序列化模块,用于对所述protobuf序列化数据进行反序列化,得到所述第二语言结构数据;
第二调用模块,用于调用所述预置转换函数,确定所述预置转换函数中与所述第二语言结构数据中字段的字段类型相匹配的第二目标转换函数;所述第二目标转换函数表征将所述第二语言转换为所述第一语言;
第二转换模块,用于根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据。
可选的,所述第一转换限定信息包括所述嵌套类型的字段中各字段对应的第一字段扩展项,所述第一字段扩展项指向内部状态的标识字段名,所述第二转换限定信息包括所述数组类型的字段对应的第二字段扩展项,所述第二字段扩展项用于标识所述数组类型的字段的最大长度;
相应的,所述第二转换模块在根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据时,针对所述第二语言结构数据中字段类型为嵌套类型的字段,基于所述第二目标转换函数将所述字段中包含所述第一字段扩展项的目标字段转换为第一语言结构数据;针对所述第二语言结构中字段类型为数组类型的字段,基于所述第二目标转换函数判断所述字段的长度是否超过所述第二字段扩展项,并在判断的结果为否时将所述字段转换为第一语言结构数据。
可选的,所述装置还包括:
写入模块,用于在根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据之后,将所述第一语言结构数据写入共享内存中;
相应的,所述第一获取模块,用于从所述共享内存中获取基于proto描述文件解析得到的第一语言结构数据。
另一方面,提供了一种计算机设备,包括处理器和存储器,所述存储器中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现上述数据处理方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如上述的数据处理方法。
本发明实施例中第一语言结构数据包括以第一语言表示的proto描述文件中的字段,以及该proto描述文件中与字段的字段类型相对应的语言间(即第一语言和第二语言)的转换限定信息,预置转换函数表征基于该proto描述文件中字段的字段类型以及与字段类型相对应的语言间的转换限定信息确定的该语言间的映射关系,从而在获取到C语言结构数据(即第一语言结构数据)后可以调用预置转换函数实现将C语言结构数据转换为C++语言结构数据(即第二语言结构数据),由于Protobuf提供了C++语言结构数据的序列化接口,进而可以调用Protobuf中的序列化接口对C++语言结构数据进行序列化,得到Protobuf序列化数据。实际应用中,可以对该Protobuf序列化数据进行传输,实现了既可以使用Protobuf作为协议的数据交换格式来保证协议的前后端的上行兼容,又可以在服务中使用共享内存来增强服务的稳定性和可靠性,同时提高了数据传输效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明实施例提供的数据处理方法的一种应用场景示意图;
图1B是本发明实施例提供的数据处理方法的另一种应用场景示意图;
图2是本发明实施例提供的一种数据处理方法的流程示意图;
图3是本发明实施例提供的另一种数据处理方法的流程示意图;
图4是本发明实施例提供的基于Proto描述文件解析得到预置转换函数的一种可选方法的流程示意图;
图5是本发明实施例提供的当字段类型为数组类型时,生成相应赋值函数的一种可选方法的流程示意图;
图6是本发明实施例提供的另一种数据处理方法的流程示意图;
图7是本发明实施例提供的一种数据处理装置的结构示意图;
图8是本发明实施例提供的另一种数据处理装置的结构示意图;
图9是本发明实施例提供的一种计算机设备的硬件结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1A,其所示为本发明实施例提供的一种数据处理方法的应用场景示意图,该应用场景中可以包括共享内存100和数据库200,其中,共享内存100与数据库200基于Protobuf协议传输。
其中,共享内存100指(shared memory)在多处理器的计算机***中,可以被不同中央处理器(CPU)访问的大容量内存,其是Unix下的多进程之间的通信方式,多个程序间也可以通过共享内存来传递信息。本说明书实施例中,共享内存100中的数据为第一语言结构数据,该第一语言可以是C语言,该第一语言结构数据为基于用户上传的Proto描述文件解析得到。共享内存100可以是终端或者服务器中的内存。
数据库200可以是关系型数据库、非关系型数据库或者键值数据库,数据库200可以对共享内存100中数据进行存储,共享内存100也可以从数据库200读取数据并写入到共享内存100中。
作为一个可选的实施方式,本发明实施例的数据处理方法还可以应用于图1B所示的数据共享***300,数据共享***300是指用于进行节点与节点之间数据共享的***,该数据共享***中可以包括多个节点301,多个节点301可以是指数据共享***中的各个客户端。每个节点301在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护该数据共享***内的共享数据。为了保证数据共享***内的信息互通,数据共享***中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享***中的任意节点接收到输入信息时,数据共享***中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享***中全部节点上存储的数据均一致。
对于数据共享***中的每个节点,均具有与其对应的节点标识,而且数据共享***中的每个节点均可以存储有数据共享***中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享***中的其他节点。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息。数据共享***中的每个节点均存储一条相同的区块链。区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
请参阅图2,其所示为本发明实施例提供的一种数据处理方法的流程示意图,该方法可以应用于图1A以及图1B所示的应用场景中。需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的***或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
S201,获取基于Proto描述文件解析得到的第一语言结构数据。
其中,Proto描述文件是Protobuf Message(简称Message)的定义文件,其定义了Message消息结构。需要说明的是,一个Proto描述文件中可以定义多个消息结构,也可以引用定义在其他Proto描述文件中的Message。
针对每一个Message消息结构,Proto描述文件提供构成该Message消息结构的至少一个字段的描述信息,每个字段的描述信息至少包括:字段类型、数据类型、字段名称和字段编号。
其中,字段类型可以包括:基础类型、嵌套类型和数组类型。嵌套类型是指在一个message中嵌套的另一个message,该嵌套的另一个message的字段类型即为嵌套类型;数组类型即repeated类型,表示相应字段可以重复任意次数,包括0次,重复数据的顺序将会保存在protocol buffer中;除上述嵌套类型和数组类型之外,剩下的字段类型均为基础类型,可以但不限于包括必须类型(required)、可选类型(optional)等等。
数据类型与各种编程语言数据类型相一致,包括常见的原子scalar类型,例如int32、string、和float等等。
字段名称与C、C++、Java等语言的变量命名方式基本相同,例如可以page、num等等。
字段编号作为字段身份的标识符,类似于数据库中的主键,不可重复,标识符用于在编译后的二进制消息格式中对字段进行识别,也即在序列化和反序列化将会使用到字段编号,其范围为[1,536870911],其中19000~19999是保留数字。
本说明书实施例中,为了实现第一语言结构数据如C语言结构数据与第二语言结构数据如C++语言结构数据的相互转换,Proto描述文件中还包括与字段的字段类型相对应的语言间的转换限定信息,该语言可以是第一语言(如C语言)和第二语言(如C++语言),基于该语言间的转换限定信息可以实现第一语言结构数据与第二语言结构数据的相互转换。
具体的,语言间的转换限定信息包括对应于字段类型为嵌套类型的第一转换限定信息,和对应于字段类型为数组类型的第二转换限定信息。其中,第一转换限定信息可以包括标识字段和嵌套类型的字段中各字段对应的第一字段扩展项,第二转换限定信息可以包括长度字段和与数组类型的字段对应的第二字段扩展项。
标识字段用于标识嵌套类型的字段的使用状态,使用状态是指嵌套类型的字段中当前被使用的字段,也就是说,通过标识字段可以确定嵌套类型的字段中当前被使用的字段,例如,该标识字段可以为(use_filed)=“type”。该标识字段用于在实现将第一语言结构数据转换为第二语言结构数据时,标识嵌套类型的字段中当前被使用的字段,从而确定将当前被使用的字段作为待转换目标。
嵌套类型的字段中可以包括多个字段,每个字段对应有第一字段扩展项,该第一字段扩展项指向内部状态的标识字段名,该内部状态可以理解为第一字段扩展项所对应字段的激活状态,也就是说,通过标识字段名可以确定第一字段扩展项所对应的字段是否为激活字段即当前被使用的字段,例如,字段:String home_num=100[(union_field_value)=“phone_home”],其中,[(union_field_value)=“phone_home”]即为第一字段扩展项,“phone_home”即为标识字段名。该第一字段扩展项用于在实现将第二语言结构数据转换为第一语言结构数据后,在第一语言结构数据中标识当前被使用的字段。
长度字段用于指向数组类型的字段的实际长度,在实现将第一语言结构数据转换为第二语言结构数据时,通过长度字段可以确定实际待转换的数组类型的字段即确定待转换目标,例如,该长度字段可以是(num_field)=”num”。
第二字段扩展项用于标识数组类型的字段的最大长度。本说明书实施例中,第一语言结构数据如C语言中数组类型的字段的大小是固定的,而第二语言结构数据如C++语言中数组类型的字段的大小是可变的,因此,在将第二语言结构数据转换为第一语言结构数据时,对于数组类型的字段需要通过第二字段扩展项判断字段的长度是否超出了第一语言结构数据中数组类型字段的最大长度,在未超出时才能进行转换。
本说明书实施例中,长度字段和第二字段扩展项可以通过custom option自定义选项添加为数组类型的字段的扩展内容,同理,第一字段扩展项也可以通过自定义选项添加为嵌套类型的字段的扩展内容。
基于以上描述,下面是本发明实施例中的Proto描述文件的一个具体示例,可以理解的,该示例用于更加清楚的理解本说明书实施例中的语言间的转换限定信息,并不构成对本发明的任何限定。
该示例中,enum表示字段类型为枚举类型,enum类型的字段只能用指定的常量集中的一个值作为其值。通过在消息结构中添加枚举类型的字段,可以实现为消息结构中的某个字段指定某“预定义值序列”中的一个值的目的。该示例定义了一个名称为Book的消息结构,其中包含名称为author_tel_num的嵌套消息,该嵌套消息的类型为one of,本说明书实施例中,将该示例1中的oneof author_tel_num{}作为message Book中的嵌套类型的字段,one of字段类似于可选字段,表示最多只能同时设置one of中的一个字段。
上述示例1中,(use_filed)=“type”即为标识字段,通过“type”的值可以知道oneof的使用状态,即one of中哪个字段被使用了。[(union_field_value)=“phone_home”]和[(union_field_value)=“phone_telphone”]即为相应字段的第一字段扩展项,其中“phone_home”和“phone_telphone”即为标识字段名。
该示例定义了一个名称为Book的消息结构,其中“repeated”表示数组类型,其中(num_field)=”num”为长度字段,用于指向数组类型字段的实际长度;(max_len_1)=max_array_size为第二字段扩展项,标识数组类型字段的最大长度。
本说明书实施例中,第一语言结构数据为基于Proto描述文件解析得到的,对于Proto描述文件的解析可以用Protocol buffer编译器来运行.Proto描述文件,此时编译器将生成选定的第一语言的代码如C语言代码,这些代码可以操作在.Proto描述文件中定义的消息结构,包括获取、设置字段值等。通过解析Proto描述文件得到第一语言结构数据,从而第一语言结构数据包括以第一语言如C语言表示的该Proto描述文件中的字段,以及该Proto描述文件中与各字段的字段类型相对应的语言间的转换限定信息。当第一语言为C语言,第二语言为C++语言时即可得到以第一语言表示的与字段的字段类型相对应的C语言与C++语言间的转换限定信息。
基于以上描述,在步骤S201之前,如图3所示,数据处理方法还可以包括步骤301,解析Proto描述文件得到第一语言结构数据。具体的,可以通过Protocol buffer编译器将Proto描述文件解析为第一语言结构数据,该第一语言可以是C语言。
在一个具体的实施例中,共享内存中的数据为基于Proto描述文件解析得到的C语言结构数据,那么步骤S201具体为从共享内存中获取基于Proto描述文件解析得到的C语言结构数据。
S203,调用基于所述Proto描述文件解析得到的预置转换函数。
其中,预置转换函数表征基于Proto描述文件中字段的字段类型以及与字段类型相对应的语言间的转换限定信息,确定的语言间的映射关系。也就是说,本说明书实施例中对同一Proto描述文件进行两个方向的解析,一个方向是解析得到步骤S201中的第一语言结构数据如C语言结构数据,另一个方向是解析得到表征第一语言与第二语言间的映射关系的预置转换函数。
基于以上描述,在步骤S203之前,如图3所示,数据处理方法还可以包括步骤S303,解析Proto描述文件得到预置转换函数。
具体的,解析Proto描述文件得到预置转换函数的方法可以包括图4所示的步骤:
S401,获取Proto描述文件。
S403,遍历Proto描述文件中的消息结构,在遍历上述Proto描述文件中的消息结构时执行以下步骤S405-步骤S413。
S405,遍历消息结构中的字段,获取当前字段的字段类型;
S407,在当前字段的字段类型为基础类型时,生成赋值当前字段的赋值函数。
S409,在当前字段的字段类型为嵌套类型时,获取当前字段中嵌套消息的消息名称以及第一转换限定信息。
S411,根据嵌套消息的消息名称以及第一转换限定信息,生成调用嵌套消息的赋值函数。
S413,在当前字段的字段类型为数组类型时,根据第二转换限定信息以及当前字段包含的子字段的字段类型生成赋值函数。
针对步骤S413,在实际应用中可以包括图5中的以下步骤:
S501,遍历当前字段中包含的子字段,获取当前子字段的字段类型;
S503,在当前子字段的字段类型为基础类型时,生成赋值当前子字段的赋值函数;
S505,在当前子字段的字段类型为嵌套类型时,获取当前子字段中嵌套消息的消息名称以及第一转换限定信息;
S507,根据嵌套消息的消息名称以及第一转换限定信息,生成调用嵌套消息对应的赋值函数。
S415,在Proto描述文件中的消息结构遍历结束时,根据遍历过程中的赋值函数得到预置转换函数。即将遍历过程中得到的赋值函数集合作为预置转换函数。
S205,根据预置转换函数,将第一语言结构数据转换为第二语言结构数据。
具体的,可以确定预置转换函数中与第一语言结构中字段的字段类型相匹配的第一目标转换函数,该第一目标转换函数表征将第一语言转换为第二语言。例如,第一目标转换函数表征将C语言转换为C++语言。然后根据第一目标转换函数将第一语言结构数据转换为第二语言结构数据。
实际应用中,当第一转换限定信息包括用于标识嵌套类型的字段的使用状态的标识字段,第二转换限定信息包括用于指向数组类型的字段的实际长度的长度字段时,在根据第一目标转换函数将第一语言结构数据转换为第二语言结构数据时,针对第一语言结构数据中字段类型为嵌套类型的字段,由第一目标转换函数根据该字段中的标识字段确定待转换目标,并将待转换目标转换为第二语言结构数据;针对第一语言结构数据中字段类型为数组类型的字段,由第一目标转换函数根据字段中的长度字段确定待转换目标,并将待转换目标转换为第二语言结构数据。
以第一语言为C语言,第二语言为C++语言为例,在实现C语言结构数据转换为C++语言结构数据时,对于嵌套类型的字段,通过标识字段可以确定嵌套消息如前述one of中被使用的字段,并将one of中被使用的字段通过赋值函数赋值给C++;对于数组类型的字段,通过长度字段可以确定字段的实际长度,并将实际长度的字段通过赋值函数赋值给C++。
S207,对第二语言结构数据进行序列化,得到Protobuf序列化数据。
本说明书实施例中,第二语言为Protobuf提供了序列化接口的语言,且可以与第一语言混合使用的语言。例如C语言(第一语言)和C++语言(第二语言),Protobuf为C++语言结构数据提供了序列化接口,且C语言与C++语言可以混合使用。
序列化是指将结构数据或对象转换成能够被存储和传输(例如网络传输)的格式,同时应当要保证这个序列化结果在之后(可能在另一个计算环境中)能够被重建回原来的结构数据或对象。具体的,可以通过Protobuf的语言库(如C++库)中提供的序列化接口(Application Programming Interface,API)对第二语言结构数据进行序列化得到相应的Protobuf序列化数据。
Protobuf与Xml、Json序列化的方式不同,Protobuf采用了二进制字节的序列化方式,用字段编号和字段类型通过算法计算得到字段之前的关系映射,从而达到更高的时间效率和空间效率,特别适合对数据大小和传输速率比较敏感的场合使用。也即Protobuf把消息结构message通过key-value对来表示,其中的key是通过每个message中每个字段的字段编号和数据类型进行运算得到。
实际应用中,在得到Protobuf序列化数据之后可以对该Protobuf序列化数据进行网络传输,例如由共享内存发送给数据库,从而将相应数据存储在数据库中。
请参阅图6其所示为本发明实施例提供的另一种数据处理方法的流程示意图,该方法中,在图2所示方法实施例的步骤S207之后还可以包括:
S601,获取Protobuf序列化数据;
具体的,可以从数据库中获取Protobuf序列化数据。
S603,对Protobuf序列化数据进行反序列化,得到第二语言结构数据;
具体的,可以通过Protobuf的语言库(如C++库)中提供的反序列化接口(Application Programming Interface,API)将Protobuf序列化数据即二进制数据反序列化为该语言库对应的语言结构数据,例如可以将Protobuf序列化数据反序列化为C++语言结构数据。
S605,调用预置转换函数,确定预置转换函数中与第二语言结构数据中字段的字段类型相匹配的第二目标转换函数。
其中,第二目标转换函数表征将第二语言转换为第一语言。例如,第二目标转换函数表征将C++语言转换为C语言。
S607,根据第二目标转换函数将第二语言结构数据转换为第一语言结构数据。
具体的,当Proto描述文件中的第一转换限定信息包括嵌套类型的字段中各字段对应的第一字段扩展项,且该第一字段扩展项指向内部状态的标识字段名,第二转换限定信息包括数组类型的字段对应的第二字段扩展项,且该第二字段扩展项用于标识数组类型的字段的最大长度时,在执行步骤S607时,针对第二语言结构数据中字段类型为嵌套类型的字段,可以基于第二目标转换函数将字段中包含第一字段扩展项的目标字段转换为第一语言结构数据,其中目标字段为嵌套类型的字段中实际被使用的字段,由于目标字段包含第一字段扩展项,当将该目标字段转换为第一语言结构数据之后,第一语言可以根据第一字段扩展项来确定嵌套类型的字段中实际被使用的字段。针对第二语言结构中字段类型为数组类型的字段,基于第二目标转换函数判断字段的长度是否超过第二字段扩展项,并在判断的结果为否时将该字段转换为第一语言结构数据。
以第一语言为C语言,第二语言为C++语言为例,在实现C++语言结构数据转换为C语言结构数据时,对于嵌套类型的字段,C语言结构数据可以基于第一字段扩展项知道被C++赋值的字段;对于数组类型的字段,可以确保C语言结构数据中数组类型的字段的实际长度不超过固定的最大长度。
实际应用中,当将C++语言结构数据转换为C语言结构数据之后,还可以将该C语言结构数据写入共享内存中,以方便各进程对共享内存中数据的读取。
由本发明实施例的上述技术方案可见,本发明实施例通过第一语言结构数据包括以第一语言表示的proto描述文件中的字段,以及该proto描述文件中与字段的字段类型相对应的语言间(即第一语言和第二语言)的转换限定信息,预置转换函数表征基于该proto描述文件中字段的字段类型以及与字段类型相对应的语言间的转换限定信息确定的该语言间的映射关系,从而在获取到C语言结构数据(即第一语言结构数据)后可以调用预置转换函数实现将C语言结构数据转换为C++语言结构数据(即第二语言结构数据),由于Protobuf提供了C++语言结构数据的序列化接口,进而可以调用Protobuf中的序列化接口对C++语言结构数据进行序列化,得到Protobuf序列化数据。实际应用中,可以对该Protobuf序列化数据进行传输,实现了既可以使用Protobuf作为协议的数据交换格式来保证协议的前后端的上行兼容,又可以在服务中使用共享内存来增强服务的稳定性和可靠性,同时提高了数据传输效率。
与上述几种实施例提供的数据处理方法相对应,本发明实施例还提供一种数据处理装置,由于本发明实施例提供的数据处理装置与上述几种实施例提供的数据处理方法相对应,因此前述数据处理方法的实施方式也适用于本实施例提供的数据处理装置,在本实施例中不再详细描述。
请参阅图7,其所示为本发明实施例提供的一种数据处理装置的结构示意图,该装置具有实现上述方法实施例中数据处理方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图7所示,该装置可以包括:
第一获取模块710,用于获取基于proto描述文件解析得到的第一语言结构数据,所述第一语言结构数据包括以第一语言表示的所述proto描述文件中的字段,以及所述proto描述文件中与所述字段的字段类型相对应的语言间的转换限定信息;所述语言包括第一语言和第二语言;
第一调用模块720,用于调用基于所述proto描述文件解析得到的预置转换函数;所述预置转换函数表征基于所述proto描述文件中字段的字段类型以及与所述字段类型相对应的所述语言间的转换限定信息,确定的所述语言间的映射关系;
第一转换模块730,用于根据所述预置转换函数,将所述第一语言结构数据转换为第二语言结构数据;
序列化模块740,用于对所述第二语言结构数据进行序列化,得到protobuf序列化数据。
作为一个可选的实施方式,第一转换模块730可以包括:
第一确定模块,用于确定所述预置转换函数中,与所述第一语言结构数据中字段的字段类型相匹配的第一目标转换函数;所述第一目标转换函数表征将所述第一语言转换为所述第二语言;
第一转换子模块,用于根据所述第一目标转换函数将所述第一语言结构数据转换为第二语言结构数据。
在一个具体的实施方式中,语言间的转换限定信息包括对应于字段类型为嵌套类型的第一转换限定信息,和对应于字段类型为数组类型的第二转换限定信息;
相应的,上述装置还可以包括用于基于所述proto描述文件解析得到预置转换函数的解析模块,该解析模块可以包括:
第二获取模块,用于获取所述proto描述文件;
第一遍历模块,用于遍历所述proto描述文件中的消息结构;
预置转换函数生成模块,用于在所述proto描述文件中的消息结构遍历结束时,根据遍历过程中的赋值函数得到预置转换函数;
其中,第一遍历模块可以包括:
第二遍历模块,用于遍历所述消息结构中的字段,获取当前字段的字段类型;
第一生成模块,用于在所述当前字段的字段类型为基础类型时,生成赋值所述当前字段的赋值函数;
第三获取模块,用于在所述当前字段的字段类型为嵌套类型时,获取所述当前字段中嵌套消息的消息名称以及第一转换限定信息;
第二生成模块,用于根据所述嵌套消息的消息名称以及所述第一转换限定信息,生成调用所述嵌套消息的赋值函数;
第三生成模块,用于在所述当前字段的字段类型为数组类型时,根据所述第二转换限定信息以及所述当前字段包含的子字段的字段类型生成赋值函数。
在一个具体的实施方式中,第三生成模块可以包括:
第三遍历模块,用于遍历所述当前字段中包含的子字段,获取当前子字段的字段类型;
第四生成模块,用于在所述当前子字段的字段类型为基础类型时,生成赋值所述当前子字段的赋值函数;
第四获取模块,用于在所述当前子字段的字段类型为嵌套类型时,获取所述当前子字段中嵌套消息的消息名称以及第一转换限定信息;
第五生成模块,根据所述嵌套消息的消息名称以及所述第一转换限定信息,生成调用所述嵌套消息的赋值函数。
在一个具体的实施方式中,第一转换限定信息包括用于标识所述嵌套类型的字段的使用状态的标识字段,所述第二转换限定信息包括用于指向数组类型的字段的实际长度的长度字段;
相应的,第一转换子模块在根据所述第一目标转换函数将所述第一语言结构数据转换为第二语言结构数据时,针对所述第一语言结构数据中字段类型为嵌套类型的字段,由所述第一目标转换函数根据所述字段中的标识字段确定待转换目标,并将所述待转换目标转换为第二语言结构数据;针对所述第一语言结构中字段类型为数组类型的字段,由所述第一目标转换函数根据所述字段中的长度字段确定待转换目标,并将所述待转换目标转换为第二语言结构数据。
作为一个可选的实施方式,如图8提供的另一种数据处理方法的流程示意图,该装置还可以包括:
第五获取模块750,可以用于获取所述protobuf序列化数据;
反序列化模块760,可以用于对所述protobuf序列化数据进行反序列化,得到所述第二语言结构数据;
第二调用模块770,可以用于调用所述预置转换函数,确定所述预置转换函数中与所述第二语言结构数据中字段的字段类型相匹配的第二目标转换函数;所述第二目标转换函数表征将所述第二语言转换为所述第一语言;
第二转换模块780,可以用于根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据。
在一个具体的实施方式中,第一转换限定信息包括所述嵌套类型的字段中各字段对应的第一字段扩展项,所述第一字段扩展项指向内部状态的标识字段名,所述第二转换限定信息包括所述数组类型的字段对应的第二字段扩展项,所述第二字段扩展项用于标识所述数组类型的字段的最大长度;
相应的,第二转换模块780在根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据时,针对所述第二语言结构数据中字段类型为嵌套类型的字段,基于所述第二目标转换函数将所述字段中包含所述第一字段扩展项的目标字段转换为第一语言结构数据;针对所述第二语言结构中字段类型为数组类型的字段,基于所述第二目标转换函数判断所述字段的长度是否超过所述第二字段扩展项,并在判断的结果为否时将所述字段转换为第一语言结构数据。
作为一个可选的实施方式,该装置还可以包括:
写入模块,用于在根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据之后,将所述第一语言结构数据写入共享内存中;
相应的,第一获取模块710,可以用于从所述共享内存中获取基于proto描述文件解析得到的第一语言结构数据。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例的数据处理装置实现了既可以使用Protobuf作为协议的数据交换格式来保证协议的前后端的上行兼容,又可以在服务中使用共享内存来增强服务的稳定性和可靠性,同时提高了数据传输效率。
本发明实施例提供了一种计算机设备,该终端包括处理器和存储器,该存储器中存储有至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的数据处理方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本发明实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行,即上述计算机设备可以包括计算机终端、服务器或者类似的运算装置。图9是本发明实施例提供的运行一种数据处理方法的计算机设备的硬件结构框图,如图9所示,该计算机设备的内部结构可包括但不限于:处理器、网络接口及存储器。其中,计算机设备内的处理器、网络接口及存储器可通过总线或其他方式连接,在本说明书实施例所示图9中以通过总线连接为例。
其中,处理器(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI、移动通信接口等)。存储器(Memory)是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器可以是高速RAM存储设备,也可以是非不稳定的存储设备(non-volatile memory),例如至少一个磁盘存储设备;可选的还可以是至少一个位于远离前述处理器的存储装置。存储器提供存储空间,该存储空间存储了电子设备的操作***,可包括但不限于:Windows***(一种操作***),Linux(一种操作***),Android(安卓,一种移动操作***)***、IOS(一种移动操作***)***等等,本发明对此并不作限定;并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。在本说明书实施例中,处理器加载并执行存储器中存放的一条或一条以上指令,以实现上述方法实施例提供的数据处理方法。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可设置于计算机设备之中以保存用于实现一种数据处理方法相关的至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的数据处理方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
获取基于Proto描述文件解析得到的第一语言结构数据,所述第一语言结构数据包括以第一语言表示的所述Proto描述文件中的字段,以及所述Proto描述文件中与所述字段的字段类型相对应的语言间的转换限定信息;所述语言包括第一语言和第二语言;
调用基于所述Proto描述文件解析得到的预置转换函数;所述预置转换函数表征基于所述Proto描述文件中字段的字段类型以及与所述字段类型相对应的所述语言间的转换限定信息,确定的所述语言间的映射关系;
根据所述预置转换函数,将所述第一语言结构数据转换为第二语言结构数据;
对所述第二语言结构数据进行序列化,得到Protobuf序列化数据。
2.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述预置转换函数,将所述第一语言结构数据转换为第二语言结构数据包括:
确定所述预置转换函数中,与所述第一语言结构数据中字段的字段类型相匹配的第一目标转换函数;所述第一目标转换函数表征将所述第一语言转换为所述第二语言;
根据所述第一目标转换函数将所述第一语言结构数据转换为第二语言结构数据。
3.根据权利要求1所述的数据处理方法,其特征在于,所述语言间的转换限定信息包括对应于字段类型为嵌套类型的第一转换限定信息,和对应于字段类型为数组类型的第二转换限定信息;
相应的,所述方法还包括基于所述Proto描述文件解析得到预置转换函数的步骤,所述基于所述Proto描述文件解析得到预置转换函数包括:
获取所述Proto描述文件;
遍历所述Proto描述文件中的消息结构,在遍历所述Proto描述文件中的消息结构时执行以下步骤:
遍历所述消息结构中的字段,获取当前字段的字段类型;
在所述当前字段的字段类型为基础类型时,生成赋值所述当前字段的赋值函数;
在所述当前字段的字段类型为嵌套类型时,获取所述当前字段中嵌套消息的消息名称以及第一转换限定信息;
根据所述嵌套消息的消息名称以及所述第一转换限定信息,生成调用所述嵌套消息的赋值函数;
在所述当前字段的字段类型为数组类型时,根据所述第二转换限定信息以及所述当前字段包含的子字段的字段类型生成赋值函数;
在所述Proto描述文件中的消息结构遍历结束时,根据遍历过程中的赋值函数得到预置转换函数。
4.根据权利要求3所述的数据处理方法,其特征在于,所述在所述当前字段的字段类型为数组类型时,根据所述第二转换限定信息以及所述当前字段包含的子字段的字段类型生成赋值函数包括:
遍历所述当前字段中包含的子字段,获取当前子字段的字段类型;
在所述当前子字段的字段类型为基础类型时,生成赋值所述当前子字段的赋值函数;
在所述当前子字段的字段类型为嵌套类型时,获取所述当前子字段中嵌套消息的消息名称以及第一转换限定信息;
根据所述嵌套消息的消息名称以及所述第一转换限定信息,生成调用所述嵌套消息对应的赋值函数。
5.根据权利要求2所述的数据处理方法,其特征在于,所述第一转换限定信息包括用于标识所述嵌套类型的字段的使用状态的标识字段,所述第二转换限定信息包括用于指向数组类型的字段的实际长度的长度字段;
相应的,所述根据所述第一目标转换函数将所述第一语言结构数据转换为第二语言结构数据包括:
针对所述第一语言结构数据中字段类型为嵌套类型的字段,由所述第一目标转换函数根据所述字段中的标识字段确定待转换目标,并将所述待转换目标转换为第二语言结构数据;
针对所述第一语言结构数据中字段类型为数组类型的字段,由所述第一目标转换函数根据所述字段中的长度字段确定待转换目标,并将所述待转换目标转换为第二语言结构数据。
6.根据权利要求3所述的数据处理方法,其特征在于,所述方法还包括:
获取所述Protobuf序列化数据;
对所述Protobuf序列化数据进行反序列化,得到所述第二语言结构数据;
调用所述预置转换函数,确定所述预置转换函数中与所述第二语言结构数据中字段的字段类型相匹配的第二目标转换函数;所述第二目标转换函数表征将所述第二语言转换为所述第一语言;
根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据。
7.根据权利要求6所述的数据处理方法,其特征在于,所述第一转换限定信息包括所述嵌套类型的字段中各字段对应的第一字段扩展项,所述第一字段扩展项指向内部状态的标识字段名,所述第二转换限定信息包括所述数组类型的字段对应的第二字段扩展项,所述第二字段扩展项用于标识所述数组类型的字段的最大长度;
相应的,根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据包括:
针对所述第二语言结构数据中字段类型为嵌套类型的字段,基于所述第二目标转换函数将所述字段中包含所述第一字段扩展项的目标字段转换为第一语言结构数据;
针对所述第二语言结构中字段类型为数组类型的字段,基于所述第二目标转换函数判断所述字段的长度是否超过所述第二字段扩展项,并在判断的结果为否时将所述字段转换为第一语言结构数据。
8.根据权利要求6所述的数据处理方法,其特征在于,在根据所述第二目标转换函数将所述第二语言结构数据转换为第一语言结构数据之后,所述方法还包括:
将所述第一语言结构数据写入共享内存中;
相应的,所述获取基于Proto描述文件解析得到的第一语言结构数据包括:
从所述共享内存中获取基于Proto描述文件解析得到的第一语言结构数据。
9.一种数据处理装置,其特征在于,所述装置包括:
第一获取模块,用于获取基于Proto描述文件解析得到的第一语言结构数据,所述第一语言结构数据包括以第一语言表示的所述Proto描述文件中的字段,以及所述Proto描述文件中与所述字段的字段类型相对应的语言间的转换限定信息;所述语言包括第一语言和第二语言;
第一调用模块,用于调用基于所述Proto描述文件解析得到的预置转换函数;所述预置转换函数表征基于所述Proto描述文件中字段的字段类型以及与所述字段类型相对应的所述语言间的转换限定信息,确定的所述语言间的映射关系;
第一转换模块,用于根据所述预置转换函数,将所述第一语言结构数据转换为第二语言结构数据;
序列化模块,用于对所述第二语言结构数据进行序列化,得到Protobuf序列化数据。
10.一种计算机可读存储介质,所述存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如权利要求1~8任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010169326.2A CN113391791A (zh) | 2020-03-12 | 2020-03-12 | 一种数据处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010169326.2A CN113391791A (zh) | 2020-03-12 | 2020-03-12 | 一种数据处理方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113391791A true CN113391791A (zh) | 2021-09-14 |
Family
ID=77615685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010169326.2A Pending CN113391791A (zh) | 2020-03-12 | 2020-03-12 | 一种数据处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113391791A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528263A (zh) * | 2022-02-11 | 2022-05-24 | 上海森亿医疗科技有限公司 | 基于不同计算机语言的数据处理方法、***、介质及设备 |
CN114979296A (zh) * | 2022-05-20 | 2022-08-30 | 深圳市晨北科技有限公司 | 物联网通信方法及相关终端、存储介质 |
CN115509532A (zh) * | 2022-09-26 | 2022-12-23 | 重庆大学 | C语言结构体转protobuf文件及互相转换代码自动生成方法 |
CN115878125A (zh) * | 2022-11-11 | 2023-03-31 | 盐城金堤科技有限公司 | 生成类的扩展方法、装置、存储介质及电子设备 |
CN116401081A (zh) * | 2023-06-09 | 2023-07-07 | 中汽智联技术有限公司 | 数据共享方法 |
-
2020
- 2020-03-12 CN CN202010169326.2A patent/CN113391791A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528263A (zh) * | 2022-02-11 | 2022-05-24 | 上海森亿医疗科技有限公司 | 基于不同计算机语言的数据处理方法、***、介质及设备 |
CN114979296A (zh) * | 2022-05-20 | 2022-08-30 | 深圳市晨北科技有限公司 | 物联网通信方法及相关终端、存储介质 |
CN114979296B (zh) * | 2022-05-20 | 2024-05-10 | 深圳市晨北科技有限公司 | 物联网通信方法及相关终端、存储介质 |
CN115509532A (zh) * | 2022-09-26 | 2022-12-23 | 重庆大学 | C语言结构体转protobuf文件及互相转换代码自动生成方法 |
CN115878125A (zh) * | 2022-11-11 | 2023-03-31 | 盐城金堤科技有限公司 | 生成类的扩展方法、装置、存储介质及电子设备 |
CN115878125B (zh) * | 2022-11-11 | 2024-02-06 | 盐城天眼察微科技有限公司 | 生成类的扩展方法、装置、存储介质及电子设备 |
CN116401081A (zh) * | 2023-06-09 | 2023-07-07 | 中汽智联技术有限公司 | 数据共享方法 |
CN116401081B (zh) * | 2023-06-09 | 2023-09-01 | 中汽智联技术有限公司 | 数据共享方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113391791A (zh) | 一种数据处理方法、装置及存储介质 | |
US11010681B2 (en) | Distributed computing system, and data transmission method and apparatus in distributed computing system | |
CN109308224B (zh) | 跨平台数据通信、跨平台数据处理的方法、装置及*** | |
CN108108162B (zh) | 应用程序编程接口生成方法及装置 | |
JP5063899B2 (ja) | サービスおよびクライアント・ランタイムを生成、交換、構成するための抽象的な記述の利用 | |
US7519713B2 (en) | Mapping between object oriented and service oriented representations of a distributed application | |
CN111625585B (zh) | 硬件加速数据库的访问方法、装置、主机及存储介质 | |
CN111949856B (zh) | 基于web的对象存储查询方法及装置 | |
CN113177034A (zh) | 一种跨平台统一的分布式图数据处理方法 | |
CN116225578A (zh) | 数据序列化方法、反序列化方法、进程间指令参数传递方法 | |
US20070011691A1 (en) | System, method and program product for invoking a remote method | |
CN113434147B (zh) | 基于ProtoBuf协议的消息解析方法及装置 | |
CN109388406A (zh) | 转换java代码的方法及装置、存储介质、电子装置 | |
US6708310B1 (en) | Method and system for implementing user-defined codeset conversions in a computer system | |
CN107643892B (zh) | 接口处理方法、装置、存储介质和处理器 | |
CN116414689A (zh) | 一种基于反射机制的接口参数校验方法及*** | |
CN115328679A (zh) | 异构函数库的自动化集成方法、计算设备及其*** | |
CN112650502A (zh) | 批处理任务处理方法、装置、计算机设备和存储介质 | |
CN111984679A (zh) | 硬件加速数据库的访问方法、装置、主机、***及介质 | |
US8082553B2 (en) | Client management of java management extensions (JMX) Mbean state | |
CN112764731B (zh) | 一种软件接口维护方法、***、计算机设备及存储介质 | |
US11886838B2 (en) | Space- and time-efficient enumerations | |
CN114780216B (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN114969121A (zh) | 数据获取方法、装置、存储介质以及计算机设备 | |
CN114168652A (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 |