CN105094756B - 数据读写方法和装置 - Google Patents

数据读写方法和装置 Download PDF

Info

Publication number
CN105094756B
CN105094756B CN201410174130.7A CN201410174130A CN105094756B CN 105094756 B CN105094756 B CN 105094756B CN 201410174130 A CN201410174130 A CN 201410174130A CN 105094756 B CN105094756 B CN 105094756B
Authority
CN
China
Prior art keywords
data
message
agreement
document
node object
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
Application number
CN201410174130.7A
Other languages
English (en)
Other versions
CN105094756A (zh
Inventor
曹玉鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201410174130.7A priority Critical patent/CN105094756B/zh
Publication of CN105094756A publication Critical patent/CN105094756A/zh
Application granted granted Critical
Publication of CN105094756B publication Critical patent/CN105094756B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种数据读写方法与装置,其中,该方法包括:根据定义好的数据格式生成协议文件;根据所述协议文件定义消息对象和节点对象;根据所述节点对象的类型选择对应的编解码器;利用选择的编解码器进行数据的读写。通过本发明实施例的数据读写方法和装置,可以提高数据读写效率,通用性高且成本较低。

Description

数据读写方法和装置
技术领域
本发明涉及数据处理领域,尤其涉及一种数据读写方法和装置。
背景技术
谷歌协议缓冲器(Google Protocol Buffer,简称ProtoBuf)是Google公司内部的混合语言数据标准,目前已经正在使用的有超过48162种报文格式定义和超过12183个.proto文件。它们用于远程过程调用协议(Remote Procedure Call Protocol,RPC)系统和持续数据存储系统。
协议缓冲器(Protocol Buffer)是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或RPC数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
Google提供的ProtoBuf包括两部分内容:编码协议和代码生成器,其中编码协议是ProtoBuff数据的存储方式,代码生成器则提供了基于定义文件的翻译机制,用户可以自己定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。图1是现有技术中protobuff数据读写装置构成示意图,如图1所示,编写模块101用于定义数据格式、编写proto文件;生成模块102用于调用代码生成器,生成工具代码;编译模块103用于根据生成模块102生成的代码,编写编解码工具,并编译打包;应用模块104,其将编译包部署到应用机器上;编解码模块105,其用于在应用机器上调用编解码工具读写数据,通过调用编码工具,可以将结构化的数据转化成ProtoBuf格式的数据,通过调用解码工具,可以将数据解码成明文(需要依赖Google提供的基本工具包)。
应该注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
发明人在实现上述内容时发现,现有技术中存在以下问题:
首先ProtoBuff数据可读性差,即获取明文数据需要使用代码生成器产出的代码,定制解码器,不具有通用性。其次,格式修改复杂,编解码器依赖于proto定义,修改格式牵一发动全身,需要重新产出代码,重新定制编解码器;并且改动成本很高,每次改动都需要重复生成并编译代码的过程,在所有应用机器上都需要更新编解码器并重新部署服务。
本发明实施例提出了一种数据读写方法和装置,重新设计了通用的编解码器,可以动态加载协议文件;编解码协议由通用编解码器实现,而不是通过代码生成器写在代码中,因此读文件只需要获取数据的协议文件即可,不需要重新定制解码器,数据格式修改也只需要修改定义文件,不需要重新定制编解码器,在应用机器上,同样也只需要更新定义文件,而不必重新部署。从而解决了上述技术问题。
根据本发明实施例的一个方面,提供了一种数据读写方法,其中,所述方法包括:
根据定义好的数据格式生成协议文件;
根据所述协议文件定义消息对象和节点对象;
根据所述节点对象的类型选择对应的编解码器;
利用选择的编解码器进行数据的读写。
根据本发明实施例的另一个方面,其中,所述协议文件包括一个以上的消息,每一个消息包含一个以上的数据条目,根据所述协议文件定义消息对象和节点对象,包括:
将所述协议文件的每一个消息定义为消息对象,所述消息对象包含消息对象名称和节点对象列表,所述消息对象名称对应所述协议文件的每一个消息的消息名称,所述节点对象列表包含一个以上的节点对象;
将所述协议文件的每一个消息所包含的每一个数据条目定义为对应的节点对象。
根据本发明实施例的另一个方面,其中,所述节点对象的类型对应所述数据条目中数据的类型,根据所述数据条目中数据的类型选择对应的编解码器。
根据本发明实施例的另一个方面,其中,利用选择的编解码器进行数据的读写包括:
将待读写的数据转换为所述节点对象;
利用选择的编解码器对所述节点对象进行读写。
根据本发明实施例的一个方面,提供了一种数据读写装置,其中,所述装置包括:
生成单元,其根据定义好的数据格式生成协议文件;
定义单元,其根据所述生成单元成的协议文件定义消息对象和节点对象;
选择单元,其根据所述节点对象的类型选择对应的编解码器;
处理单元,其利用所述选择单元选择的编解码器进行数据的读写。
根据本发明实施例的另一个方面,其中,所述协议文件包括一个以上的消息,每一个消息包含一个以上的数据条目,所述定义单元还包括:
第一定义模块,其将所述协议文件的每一个消息定义为消息对象,所述消息对象包含消息对象名称和节点对象列表,所述消息对象名称对应所述协议文件的每一个消息的消息名称,所述节点对象列表包含一个以上的节点对象;
第二定义模块,其将所述协议文件的每一个消息所包含的每一个数据条目定义为对应的节点对象。
根据本发明实施例的另一个方面,其中,所述节点对象的类型对应所述数据条目中数据的类型,所述选择单元根据所述数据条目中数据的类型选择对应的编解码器。
根据本发明实施例的另一个方面,其中,所述处理单元包括:
第一处理模块,其将待读写的数据转换为所述节点对象;
第二处理模块,其利用所述选择单元选择的编解码器对所述节点对象进行读写。
本发明实施例的有益效果在于,通过本发明实施例的数据读写方法和装置,可以提高数据读写效率,通用性高且成本较低。
参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
参照以下的附图可以更好地理解本发明的很多方面。附图中的部件不是成比例绘制的,而只是为了示出本发明的原理。为了便于示出和描述本发明的一些部分,附图中对应部分可能被放大或缩小。在本发明的一个附图或一种实施方式中描述的元素和特征可以与一个或更多个其它附图或实施方式中示出的元素和特征相结合。此外,在附图中,类似的标号表示几个附图中对应的部件,并可用于指示多于一种实施方式中使用的对应部件。
在附图中:
图1是现有技术中数据读写流程图;
图2是本发明实施例1的数据读写方法流程图;
图3是本发明实施例1步骤204的实施方式方法流程图;
图4是本发明实施例1的消息对象构成示意图;
图5是本发明实施例1的节点对象构成示意图;
图6是本发明实施例2的数据读写装置构成示意图。
具体实施方式
参照附图,通过下面的说明书,本发明实施例的前述以及其它特征将变得明显。这些实施方式只是示例性的,不是对本发明的限制。为了使本领域的技术人员能够容易地理解本发明的原理和实施方式,本发明实施例以该协议文件为.proto文件为例进行说明,但可以理解,本发明实施例并不限于.proto文件。
下面参照附图对本发明的优选实施方式进行说明。
实施例1
图2是本发明实施例2的数据读写方法流程图,请参照图2,该方法包括:
步骤201,根据定义好的数据格式生成协议文件;
步骤202,根据所述协议文件定义消息对象和节点对象;
步骤203,根据所述节点对象的类型选择对应的编解码器;
步骤204,利用选择的编解码器进行数据的读写。
在步骤201中,需要首先将需要处理的结构化数据转换成协议文件,如proto文件,在协议文件中,包括一个以上的消息(Message),每一个消息包含一个以上的数据条目,以下代码清单1和2为协议文件格式的示例。
代码清单1
message SearchRequest
{
required string query=abc;
optional int32page_number=2;
optional int32result_per_page=3;
}
在上述代码清单1中,待处理的结构化数据为“搜索请求”,该定义好的数据格式包含多个请求项,例如查询字符串、用户感兴趣的查询结果所在的页数、以及每一页有多少条查询结果,则可以将该定义好的数据格式按照代码清单1生成为对应的协议文件,其中,协议文件中消息的消息名称为SearchRequest,该消息SearchRequest中包含多个数据条目,如将查询字符串定义为required string query=abc,将用户感兴趣的查询结果所在的页数定义为optional int32page_number=2,将每一页有多少条查询结果定义为optionalint32result_per_page=3,从而将定义好的结构化的数据格式“搜索请求”生成了如代码清单1所示的协议文件。
代码清单2
message Person
{
required string name=zx;
required int32id=2;
optional string email=abc@com;
enum PhoneType
{
MOBILE=0;HOME=1;WORK=2;
}
message PhoneNumber
{
required string number=123456;
optional PhoneType type=2[default=HOME];
}
repeated PhoneNumber phone=4;
}
在上述代码清单2中,待处理的结构化数据为“人”,其定义好的数据格式包含多个与个人相关的信息,例如姓名、ID、邮件地址、结构化的数据电话号码等,则可以将定义好的数据格式按照代码清单2生成为对应的协议文件,其中,该协议文件包含了消息名称为Person的消息,其中还嵌套了一个消息名称为PhoneNumber的消息。其中,该消息Person中包含多个数据条目,如将姓名定义为required string name=zx,将ID定义为requiredint32id=2,将邮件地址定义为optional string email=abc@com等,另一个结构化数据“电话号码”用来定义消息Person中的phone域,其定义好的数据格式包含电话号码和电话号码类型,则可以将将电话号码定义为required string number=1;将电话类型定义为optional PhoneType type=2[default=HOME];从而将定义好的结构化的数据格式“人”生成了如代码清单2所示的协议文件。
关于步骤201的具体实施方式可参考现有技术,本实施例并不以此作为限制。
在步骤202的一个实施方式中,将步骤201中生成的所述协议文件的每一个消息定义为消息对象,所述消息对象包含消息对象名称和节点对象列表,所述消息对象名称对应所述协议文件的每一个消息的消息名称,所述节点对象列表包含一个以上的节点对象;将步骤201中生成的所述协议文件的每一个消息所包含的每一个数据条目定义为对应的节点对象。其中,所述协议文件的每一个消息所包含的每一个数据条目可以称为一个元素,则所述节点对象可以包括如元素类型、元素值等成员。
图3示出了消息对象的构成,如图3所示,消息对象ProtoMessage包括消息对象名称name,和节点对象nodes的列表ProtoMessage(),getNodes()。图4示出了节点对象的构成,如图4所示,节点对象ProtoNode对应每一个元素,还包括与该元素对应的元素类型type、元素值等信息。
以代码清单1为例,根据代码清单1中的proto文件,定义一个消息对象和三个节点对象,具体的说,在消息对象中,消息对象名称为SearchRequest,其对应代码清单1中的消息名称SearchRequest,节点对象列表为“query”、“page_number”、和“result_per_page”,其对应代码清单1中的消息SearchRequest的三个数据条目。在每一个节点对象中,可以包含有对应该节点对象的一些信息,例如,对于节点对象query,具体可包括数据类型如string,以及对应的元素值如abc。
以代码清单2为例,根据代码清单2中的proto文件,定义两个消息对象和多个节点对象,具体的说,在一个消息对象中,消息对象名称为Person,其对应代码清单2中的消息名称Person,节点对象列表包含“name”,“id”,“email”等,其对应代码清单2中的消息Person的数据条目,在每一个节点对象中,可以包含有对应该节点对象的一些信息,例如,对于节点对象name,具体可包括数据类型如string,以及对应的元素值如zx,在另一个消息对象中,消息对象名称为PhoneNumber,其对应代码清单2中的消息名称PhoneNumber,节点对象列表包含“number”,“type”,,其对应代码清单2中的消息PhoneNumber的两个数据条目,在每一个节点对象中,可以包含有对应该节点对象的一些信息,例如,对于节点对象number,具体可包括数据类型如string,以及对应的元素值如123456,以上仅是示例性的说明,本实施例并不以此作为限制。
在步骤203中,在按照上述实施方式定义了消息对象和节点对象后,根据所述节点对象的类型选择对应的编解码器。
在本实施例的一个实施方式中,可以预先设置节点对象的类型与编解码器的对应关系,每一个节点对象的类型对应的编解码器可以用于对这种类型的节点对象进行编解码的操作。该对应关系可以通过表格的形式存储,也可以通过其它形式存储,本实施例并不以此作为限制。
在本实施例的另一个实施方式中,节点对象的类型与其对应的数据条目中数据的类型相对应,则在本实施方式中,可以预先设置数据类型与编解码器的对应关系,每一个数据类型对应的编解码器可以用于对这种类型的节点对象进行编解码的操作。同样的,该对应关系可以通过表格的形式存储,也可以通过其它形式存储,本实施例并不以此作为限制。
其中,所述节点对象的类型对应所述数据条目中数据的类型,例如节点对象类型是protobuf的类型,比如int32,int64,string,而节点对象中数据条目(元素)的类型是与protobuf类型对应的java的类型,比如int32对应的是int,int64对应的是long,string对应的是String。在上述代码清单1中,例如节点对象page_number的类型int32与该数据条目中数据page_number=2的类型int相对应。
在本实施例中,根据所述节点对象的类型选择对应的编解码器,是根据所述数据条目中数据的类型选择对应的编解码器,其中所选择的编解码器是能够对所述数据条目中的数据的类型进行编解码的通用函数。例如,在节点对象类型为string类型时,使用能够对String类型进行编解码的通用的编解码函数,在节点对象类型为int32类型时,使用能够对int类型编解码的通用的编解码函数。
在步骤204中,利用选择的编解码器进行数据的读写。其中,数据的写入是指将结构化的数据按照编码协议(protobuff数据的存储方式)转换成协议格式的数据,例如将结构化的数据“搜索请求”按照protobuf编码协议存入到一个对应的proto文件中的过程。数据的读取是指将编码好的protobuf数据格式转换成对应的结构化数据的过程。
图5是本发明实施例步骤204中的一种实施方式示意图,如图5所示,所述方法包括:
步骤501,将待读写的数据转换为所述节点对象;
步骤502,利用选择的编解码器对所述节点对象进行读写。
在步骤501和502中,如果想要写入一条数据,即将结构化的数据编码为protobuf格式的数据,则首先需要将待写入的数据,转换为如步骤202中定义的对应的节点对象,通过调用步骤203中所选择的编码函数,将数据写入输出流。
例如需要写入的数据分别是query=iphone,page_number=1,result_per_page=2,则将query,page_number,result_per_page转换成节点对象后,会给这三个节点对象赋值,比如query=iphone,page_number=1,result_per_page=2,并分别选择与节点对象类型对应的编码函数,各个编码函数会将query=iphone,page_number=1,result_per_page=2转化为byte数组存在节点对象的content中,比如page_number节点对象为int型,因此可以调用代码清单3中的int2byte函数,将它的值1转化成byte数组。最后编码器将这些分别转化的byte数组合并写到文件中,就产出了一份SearchRequest的protobuf数据。
代码清单3
在步骤501和502中,如果想要读取一条数据,即将protobuf格式的数据转换为可读的明文数据,同样的,需要将protobuf格式数据转换为步骤202中定义的对应的节点对象,通过调用步骤203中所选择的解码器,将protobuf格式数据成对应格式的可读数据。
例如,在读取代码清单3中写入的SearchRequest的protobuf数据时,利用步骤202生成节点对象,解码器会从文件中读出数组,并将数组切分,将对应的值存放到对应的节点对象的byte数组中,比如page_number节点对象就存放了它的值1对应的byte数组,此时,page_number节点对象类型为int32,因此调用代码清单4中的byte2int函数就可以读出数组中的值,并转化为可读的值1。
代码清单4
在本实施例中,由于利用了通用的编解码器,因此,可以动态加载协议文件;编解码协议由通用编解码器实现,而不是通过代码生成器写在代码中,因此读文件只需要获取数据的协议文件即可,不需要重新定制解码器。从而解决了现有技术中的问题。
在本实施例中,如果在应用过程中,需要修改之前定义好的数据格式,并对修改格式后的数据进行读写,也只需要修改协议文件,并定义修改后的消息对象和节点对象,仅根据修改后的节点对象类型选择对应的编解码器,因此不需要重新定制编解码器,在应用机器上,同样也只需要更新协议文件,而不必重新部署。
通过本实施例的上述数据读写方法,可以提高数据读写效率,通用性高且成本较低。
实施例2
本发明实施例2还提供了一种数据读写装置,由于该节点解决问题的原理与实施例1的方法类似,因此其具体的实施可以参照实施例1的方法的实施,重复之处不再赘述。
图6是本发明实施例2的一种数据读写装置构成示意图,如图6所示,该装置600包括:
生成单元601,其根据定义好的数据格式生成协议文件;
定义单元602,其根据所述生成单元601成的协议文件定义消息对象和节点对象;
选择单元603,其根据所述节点对象的类型选择对应的编解码器;
处理单元604,其利用所述选择单元603选择的编解码器进行数据的读写。
在本实施例中,由于利用了通用的编解码器,因此,可以动态加载协议文件;编解码协议由通用编解码器实现,而不是通过代码生成器写在代码中,因此读文件只需要获取数据的协议文件即可,不需要重新定制解码器。从而解决了现有技术中的问题。
在本实施例中,所述协议文件包括一个以上的消息,每一个消息包含一个以上的数据条目,所述定义单元602还包括:
第一定义模块6021,其将所述协议文件的每一个消息定义为消息对象,所述消息对象包含消息对象名称和节点对象列表,所述消息对象名称对应所述协议文件的每一个消息的消息名称,所述节点对象列表包含一个以上的节点对象;
第二定义模块6022,其将所述协议文件的每一个消息所包含的每一个数据条目定义为一个节点对象。
在本实施例中,关于消息对象和节点对象的具体实施方式可参照实施例1,此处不再重复。
在本实施例中,所述节点对象的类型对应所述数据条目中数据的类型,所述选择单元603根据所述数据条目中数据的类型选择对应的编解码器。
在本实施例中,所述处理单元604包括:
第一处理模块6041,其将待读写的数据转换为所述节点对象;
第二处理模块6042,其利用所述选择单元603选择的编解码器对所述节点对象进行读写。
在本实施例中,如果在应用过程中,需要修改之前定义好的数据格式,并对修改格式后的数据进行读写,也只需要修改协议文件,并定义修改后的消息对象和节点对象,仅根据修改后的节点对象类型选择对应的编解码器,因此不需要重新定制编解码器,在应用机器上,同样也只需要更新协议文件,而不必重新部署。
通过本实施例的上述数据读写装置,可以提高数据读写效率,通用性高且成本较低。
本发明实施例还提供一种计算机可读程序,其中当在数据读写装置中执行所述程序时,所述程序使得计算机在所述数据读写装置中执行如实施例1所述的数据读写方法。
本发明实施例还提供一种存储有计算机可读程序的存储介质,其中所述计算机可读程序使得计算机在数据读写装置中执行如实施例1所述的数据读写方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。该计算机软件产品可以包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。该计算机软件产品可以存储在内存中,内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括短暂电脑可读媒体(transitory media),如调制的数据信号和载波。
本说明书中,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

Claims (4)

1.一种数据读写方法,其中,所述方法包括:
根据定义好的数据格式生成协议文件;所述协议文件包括一个以上的消息,每一个消息包含一个以上的数据条目;
将所述协议文件的每一个消息定义为消息对象,所述消息对象包含消息对象名称和节点对象列表,所述消息对象名称对应所述协议文件的每一个消息的消息名称,所述节点对象列表包含一个以上的节点对象;将所述协议文件的每一个消息所包含的每一个数据条目定义为对应的节点对象;
根据所述节点对象的类型选择对应的编解码器;
利用选择的编解码器进行数据的读写;
根据所述节点对象的类型选择对应的编解码器包括:
所述节点对象的类型对应所述数据条目中数据的类型,根据所述数据条目中数据的类型选择对应的编解码器。
2.根据权利要求1所述的方法,其中,利用选择的编解码器进行数据的读写包括:
将待读写的数据转换为所述节点对象;
利用选择的编解码器对所述节点对象进行读写。
3.一种数据读写装置,其中,所述装置包括:
生成单元,其根据定义好的数据格式生成协议文件;
定义单元,其根据所述生成单元成的协议文件定义消息对象和节点对象;
选择单元,其根据所述节点对象的类型选择对应的编解码器;
处理单元,其利用所述选择单元选择的编解码器进行数据的读写;
其中,所述协议文件包括一个以上的消息,每一个消息包含一个以上的数据条目,所述定义单元还包括:
第一定义模块,其将所述协议文件的每一个消息定义为消息对象,所述消息对象包含消息对象名称和节点对象列表,所述消息对象名称对应所述协议文件的每一个消息的消息名称,所述节点对象列表包含一个以上的节点对象;
第二定义模块,其将所述协议文件的每一个消息所包含的每一个数据条目定义为对应的节点对象;
其中,所述节点对象的类型对应所述数据条目中数据的类型,所述选择单元根据所述数据条目中数据的类型选择对应的编解码器。
4.根据权利要求3所述的装置,其中,所述处理单元包括:
第一处理模块,其将待读写的数据转换为所述节点对象;
第二处理模块,其利用所述选择单元选择的编解码器对所述节点对象进行读写。
CN201410174130.7A 2014-04-28 2014-04-28 数据读写方法和装置 Active CN105094756B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410174130.7A CN105094756B (zh) 2014-04-28 2014-04-28 数据读写方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410174130.7A CN105094756B (zh) 2014-04-28 2014-04-28 数据读写方法和装置

Publications (2)

Publication Number Publication Date
CN105094756A CN105094756A (zh) 2015-11-25
CN105094756B true CN105094756B (zh) 2018-07-03

Family

ID=54575302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410174130.7A Active CN105094756B (zh) 2014-04-28 2014-04-28 数据读写方法和装置

Country Status (1)

Country Link
CN (1) CN105094756B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101202736A (zh) * 2006-12-13 2008-06-18 西安大唐电信有限公司 一种在通讯网络中实现编解码的方法
CN102265277A (zh) * 2011-06-01 2011-11-30 华为技术有限公司 数据存储系统的操作方法和装置
WO2012126177A2 (zh) * 2011-03-22 2012-09-27 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101202736A (zh) * 2006-12-13 2008-06-18 西安大唐电信有限公司 一种在通讯网络中实现编解码的方法
WO2012126177A2 (zh) * 2011-03-22 2012-09-27 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
CN102265277A (zh) * 2011-06-01 2011-11-30 华为技术有限公司 数据存储系统的操作方法和装置

Also Published As

Publication number Publication date
CN105094756A (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
TWI728266B (zh) 二維條碼生成、業務處理方法、裝置和設備以及二維條碼
CN104657140B (zh) 代码生成方法及装置
CN106897341A (zh) 二维码信息查询方法、服务器、客户端及系统
CN110442330A (zh) 列表组件转换方法、装置、电子设备及存储介质
CN101405761B (zh) 供服务接收和处理数据的方法和系统
CN106878367B (zh) 服务接口异步调用的实现方法和装置
CN111352935A (zh) 一种块链式账本中的索引创建方法、装置及设备
US10496423B2 (en) Method for opening up data and functions of terminal application based on reconstruction technology
CN100511140C (zh) 构件化软件系统实现脚本语言调用多输出参数接口的方法
CN110362547A (zh) 日志文件的编码、解析、存储方法和装置
CN111142849B (zh) 流程处理方法、装置、存储介质及处理器
CN113672204A (zh) 一种接口文档生成方法、系统、电子设备及存储介质
JP2005050347A (ja) 実行時バインディング/動的パス名解決の方法および装置
JP2006338303A (ja) 表記変換装置、整合性チェック装置、及びプログラム
JP2009252153A5 (zh)
CN105094756B (zh) 数据读写方法和装置
CN113568697A (zh) 一种pc端页面转换为移动端页面的方法、系统及介质
CN107643892B (zh) 接口处理方法、装置、存储介质和处理器
US8436753B2 (en) System and method for efficiently translating media files between formats using a universal representation
JP2023517004A (ja) ピッチ敵対的ネットワークを用いた教師なし歌唱音声変換
CN110069258A (zh) 一种hci代码二次生成方法
Weiher et al. Polymorphic identifiers: uniform resource access in objective-smalltalk
CN113778549B (zh) 一种后端环境变量替换的实现方法、装置、设备及介质
CN113504896B (zh) 一种应用程序的业务数据处理方法、装置及移动终端
CN108932224B (zh) 实现独立于注意力机制的拷贝机制的方法及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant