CN111680061A - 一种数据存取方法、装置、设备和存储介质 - Google Patents
一种数据存取方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN111680061A CN111680061A CN202010529205.4A CN202010529205A CN111680061A CN 111680061 A CN111680061 A CN 111680061A CN 202010529205 A CN202010529205 A CN 202010529205A CN 111680061 A CN111680061 A CN 111680061A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- target
- stored
- field
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据存取方法、装置、设备和存储介质,若接收到存储请求,可以获取待存储数据,该待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义。根据结构体中字段的位置标签,对待存储数据进行编码生成目标数据文件,从而通过编码方式将复杂数据结构转换成便于存储的二进制格式,故可以直接将目标数据文件存储至目标位置。可见,该方法可以适用于各种数据结构的数据存储,在存储时可以将复杂数据结构转换成便于存储的文件格式,无需设计存储结构,降低了使用和维护成本。同时,由于数据协议支持字段扩展,当有新的数据结构或更改数据结构时,增加字段不会影响已有数据结构的处理,简化了新的复杂数据结构的存储过程。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种数据存取方法、装置、设备和存储介质。
背景技术
终端设备在运行应用时通常会产生或者需要配置各种应用数据,应用数据的存储一般通过数据库进行存储,包括以下几种方式:SharedPreference(一种轻量级存储方式)、轻量级结构化查询语言(Structured Query Language Lite,SQLite)数据库、内容提供器(ContentProvider)等。SharedPreference一般用于储存一些简单的数据结构,比如整型、布尔值、字符串等。SQLite数据库多数用于存储关系型数据。
在基于数据库的方式存储数据结构的情况下,如果要存储比较复杂的数据结构,例如混合数据结构或自定义数据结构等,则需要设计诸如邻接表(Adjacency List)、路径枚举(Path Enumeration)、闭包表(Closure Table)等存储结构,这些存储结构不仅使用和维护的成本高,而且当出现新的数据结构时又需要完全重新编写,过程繁琐且耗时长。
发明内容
为了解决上述技术问题,本申请提供了一种数据存取方法、装置、设备和存储介质,可以适用于各种数据结构的数据存储,无需设计存储结构,降低了使用和维护成本。同时,简化了新的复杂数据结构的存储过程。
本申请实施例公开了如下技术方案:
一方面,本申请实施例提供一种数据存取方法,所述方法包括:
响应于存储请求,获取待存储数据;所述待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义;
根据所述结构体中字段的位置标签,对所述待存储数据进行编码,将所述待存储数据转换为二进制格式的目标数据文件;
将所述目标数据文件存储至目标位置。
另一方面,本申请实施例提供一种数据存取装置,所述装置包括获取单元、生成单元和存储单元:
所述获取单元,用于响应于存储请求,获取待存储数据;所述待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义;
所述生成单元,用于根据所述结构体中字段的位置标签,对所述待存储数据进行编码,将所述待存储数据转换为二进制格式的目标数据文件;
所述存储单元,用于将所述目标数据文件存储至目标位置。
另一方面,本申请实施例提供一种用于数据存取的设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行前述数据存取方法。
另一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行前述数据存取方法。
由上述技术方案可以看出,在接收到存储请求时,可以获取待存储数据,该待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义。根据结构体中字段的位置标签,对待存储数据进行编码生成目标数据文件,通过对存储数据进行编码可以将复杂数据结构转换成便于存储的文件格式,例如二进制格式的目标数据文件,故可以直接将目标数据文件存储至目标位置。可见,该方法可以适用于各种数据结构的数据存储,在存储时可以将复杂数据结构转换成便于存储的文件格式,无需设计存储结构,降低了使用和维护成本。同时,由于该数据协议支持字段扩展,当有新的数据结构或更改数据结构时,增加字段不会影响已有数据结构的处理,简化了新的复杂数据结构的存储过程。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据存取方法的应用场景示意图;
图2为本申请实施例提供的一种数据存取方法的流程图;
图3为本申请实施例提供的一种数据协议的制定方法的流程图;
图4为本申请实施例提供的JCE结构文件的示意图;
图5为本申请实施例提供的结构体中所包括信息的示意图;
图6为本申请实施例提供的一种生成代码文件的方法的流程图;
图7为本申请实施例提供的一种编码方法的流程图;
图8为本申请实施例提供的位置标签的值与读写顺序之间的关系示意图;
图9为本申请实施例提供的一种数据读取方法的流程图;
图10为本申请实施例提供的一种解码方法的流程图;
图11为本申请实施例提供的一种数据存取方法的流程图;
图12为本申请实施例提供的一种数据存取装置的结构图;
图13为本申请实施例提供的一种终端设备的结构图;
图14为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
目前,市面上绝大多数应用还是使用着安卓原生的数据库或SharedPreference来对数据进行持久化存储的,对于存储的数据的复杂度就会有限制,不能存储过于复杂的数据,比如说一些包含混合数据结构的数据。
对于一些比较复杂的数据结构,可以通过设计对应数据库表结构例如邻接表等来进行存储。但是该数据结构一旦发生字段的变化,无论是哪种设计,数据库表更新都会非常艰难,而且需要耗费大量的时间来调整,稍有不慎容易出错。如果后续再有新的复杂数据需要存储,需要从数据库建表、编写增删改查方法等步骤做起,过程繁琐且耗时长,技术成本很高。
为了解决上述技术问题,本申请实施例提供一种数据存取方法,该方法将复杂数据结构的数据通过编码,转换成便于存储的二进制格式的目标数据文件进行存储,可以适用于各种数据结构的数据存储,无需设计存储结构,降低了使用和维护成本。同时,简化了新的复杂数据结构的存储过程。
本申请实施例提供的数据存取方法可以应用于持久化存储应用数据的各种场景中,应用数据可以是终端设备上的应用运行时产生或需要配置的数据,例如无线保真(Wireless Fidelity,WiFi)管家里面的外部引导离线配置的存储和读取、上报缓存内容的存储和读取。
以外部引导离线配置这一应用场景为例,外部引导离线配置是指在离线时的推广功能,例如,在离线时向用户弹出窗口以引导用户使用。为了实现外部引导离线配置,终端设备需要从服务器获取配置数据,配置数据例如可以包括弹出窗口的样式、文案、展示条件等。为了在离线时,终端设备可以进行外部引导例如弹出窗口,终端设备可以通过本申请实施例提供的数据存取方法持久化存储该配置数据。
可以理解的是,该方法可以应用于数据处理设备上,该数据处理设备例如可以是终端设备,该终端设备例如可以是智能终端、计算机、平板电脑、个人数字助理(PersonalDigital Assistant,简称PDA)设备等。通常情况下,该终端设备可以是搭载安卓(Android)系统的设备,当然,在一些情况下,也可以是其他搭载其他系统的设备。
该数据处理设备还可以是服务器,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器等。本申请将主要以数据处理设备即用于数据存取的设备是终端设备为例进行介绍。
为了便于理解本申请的技术方案,下面结合实际应用场景,对本申请实施例提供的数据存取方法进行介绍。
参见图1,图1为本申请实施例提供的数据存取方法的应用场景示意图。该应用场景中包括终端设备101和服务器102,以终端设备101上搭载Android系统为例,终端设备101和服务器102通过支持扩展字段的数据协议例如Java加密扩展(Java CryptographyExtension,JCE)协议进行数据传输。JCE协议是一种二进制、支持字段动态增加、代码自动生成、跨平台的通信、数据传输协议。通过JCE协议中的结构体定义数据的数据结构,可以支持扩展字段,即可以增加字段而不影响已有数据结构的解析。
当需要对某数据例如待存储数据进行持久化存储时,终端设备101可以通过本申请实施例所提供的方法进行存储。具体的,当终端设备101接收到存储请求后,可以根据存储请求,获取待存储数据,该待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义。
结构体中包括了数据结构的字段信息,字段信息例如可以包括位置标签(Tag)、字段是否必选的指示标识、数据类型、字段名、注释等信息。终端设备101可以根据结构体中字段的位置标签,对待存储数据进行编码,生成目标数据文件。其中,Tag是字段的唯一标识,用于指示字段的位置,Tag可以用数字表示,一般情况下,Tag的取值范围是0-255。
通过对待存储数据进行编码得到目标数据文件,可以实现将复杂数据结构转换为便于存储的文件格式,例如当数据协议是JCE协议时,可以将复杂数据结构转换为二进制文件,这样,终端设备101可以直接将目标数据文件存储至目标位置。
接下来,结合附图对本申请实施例提供的数据存取方法进行介绍。
参见图2,图2示出了一种数据存取方法的流程图,该数据存取方法可以应用于图1所示的终端设备101,所述方法包括:
S201、响应于存储请求,获取待存储数据。
其中,存储请求可以是根据用户的选择操作触发的,若用户选择“存储”则触发存储请求。待存储数据是根据业务需求确定的,若针对WiFi管家的外部引导离线配置这一应用场景,其业务需求是为用户提供离线推广功能,则待存储数据可以是外部引导离线配置所需的配置数据,例如可以包括弹出窗口的样式、文案、展示条件等数据。
待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义,数据结构可以包括简单数据结构和复杂数据结构,简单数据结构例如可以是整型、布尔值、字符串等,复杂数据结构例如可以是混合了多种数据结构的一个结构体,其中包含且不限于自定义结构、多层嵌套的哈希表(HashMap)与动态数组(ArrayList)。
数据协议是预先制定的,以便在终端设备上使用。数据协议的制定方法的流程图可以参见图3所示:
S301、生成第一文件格式的数据协议。
在本申请实施例中,第一文件格式可以是“.JCE”格式的JCE文件,也可以是其他格式,本申请实施例主要对“.JCE”格式的数据协议(即JCE协议)的制定进行介绍。其中,JCE协议的结构是一种类似C++预研编写的代码,一份JCE结构文件可以参见图4所示,包含一个模块(module),多个结构体(struct)或者枚举(enum),同时不同的JCE结构文件之间可以相互引用。
结构体可以参见图5所示,包括位置标签(Tag)、字段是否必选的指示标识、数据类型、字段名、注释等信息。由于Tag通常用数字表示,因此,通常情况下,结构体中的第一列数字表示该字段的Tag,无论数据结构增减字段,该字段的值都不变,必须和相应的字段对应。每个字段都有唯一标识,终端设备和服务器通过Tag即可知道第几个字段代表的是什么。故可以自由地增加字段,只要保证已有的Tag不修改即可。注意一般不删除字段,因为删除字段后tag可能会不小心被复用了,从而可能由于类型不匹配导致解码失败。字段是否必选的指示标识为了限制异常数据的写入,若指示标识是require,则表示该字段必选,若指示标识是optional,则表示该字段可选。紧接着就是数据类型,数据类型标明了字段是什么数据类型。
S302、对所述第一文件格式的数据协议进行转换,生成数据协议对应的代码文件。
为了便于在终端设备上使用该数据协议,可以对第一文件格式的数据协议进行转换,生成数据协议对应的代码文件。例如运行脚本,将以“.JCE文件”格式保存的数据协议转换成代码,即生成数据结构的Java类。
在一些可能的实施例中,在运行脚本的过程中,生成代码文件的方法可以是设置环境(参见图6中S601所示),这里主要是设置Java环境,与终端设备的Java软件开发工具包(Software Development Kit,Sdk)路径绑定。读取JCE文件,转换成对应的Java代码(参见图6中S602所示)。转换之后,每个enum和struct都对应生成的Java类名字,而module的名字则为包名。而且这些类都继承自Jce文件中的Struct,并实现读写、初始化的方法。读写的顺序跟JCE数据协议中指定的Tag的顺序一样,用于后续S202的编码过程。
S303、将所述代码文件存储至目标路径下。
在得到代码文件后,可以将代码文件存储至目标路径下(参见图6中S603所示),以便终端设备运行该代码文件。以上述Java代码为例,可以将Java代码输出至JCE文件所在文件夹的src文件夹中,若不存在该文件夹,则会先创建文件夹再输出,将Java代码放到代码中使用,保证Java代码在src文件夹下。
S202、根据所述结构体中字段的位置标签,对所述待存储数据进行编码,将所述待存储数据转换为二进制格式的目标数据文件。
终端设备可以将待存储数据使用按照编码规则实现的编码器来进行编码,获取已序列化的字节(byte)数组数据,即目标数据文件。
在一种可能的实现方式中,当需要对待存储数据进行存储时,指定编码格式(参见图7中S701所示),一般指定8位元(Unicode Transformation Format,UTF-8)即可,UTF-8是针对统一码(Unicode)的一种可变长度字符编码。在按照指定编码格式进行编码的过程中,可以按照代码文件中位置标签(Tag)从小到大的顺序,将待存储数据中位置标签所对应字段的数据写入输出流(JceOutputStream),生成目标数据文件,输出流与目标位置相关联。
例如图7所示,在进行编码时,终端设备可以通过运行代码文件中的写入(writeTo)方法,将输出流设置为传入(参见图7中S702所示),在写入方法中,按照位置标签的值从小到大的顺序将字段的数据写入到输出流中(参见图7中S703所示)。以结构体中的Tag的值分别是0、1、2、3为例,则写入顺序如图8中左图的箭头所示。
在一种可能的实现方式中,数据可以包括头(head)数据和head数据所对应的数据内容,head数据可以根据字段的Tag和数据类型来制定,因此,若结构体中还包括字段的数据类型,将待存储数据中位置标签所对应字段的数据写入输出流的方式可以是,根据结构体中的位置标签和数据类型,将字段的头数据写入输出流(参见图7中S704所示),再根据头数据,向输出流中写入头数据对应的数据内容(参见图7中S705所示)。确定写入是否完毕,若是,则编码结束,若否,则重复执行S703。
其中,在根据字段的Tag和数据类型来制定head数据时,Tag和数据类型可以参见表1所示。在表1中,Type表示数据类型,用4个2进制位来表示,取值范围为0~15(单位4bits)。对于不同数据类型的数据,其后紧跟的实际数据长度和类型都会不同。
表1
Type | Tag1 | Tag2 |
4bits | 4bits | 1byte |
在本实施例中,Type的取值、数据类型与其后紧跟的实际数据长度和格式之间的关系可以参见表2所示:
表2
在表2中,int表示整型,float表示浮点型,double表示双精度浮点型,String表示字符串类型,Map表示Map容器,List表示列表类型,SimpleList表示简单列表类型。表2中“备注”列中的内容是对其后紧跟的实际数据长度和格式的解释。
Tag由Tag1和Tag2一起表示,取值范围为0~255,用来区分不同的字段(因为编码之后不会把字段名写进去,因此需要通过Tag来定位对应数据字段的位置是第几个的)。Tag1的单位是4bits,Tag2的单位是1byte。其中Tag2是可选的,当Tag的值不大于14时,只需要用Tag1来表示。Tag大于14小于255时,则Tag1的值固定为15,用Tag2的值表示Tag的值。
S203、将所述目标数据文件存储至目标位置。
在得到目标数据文件后,可以将目标数据文件存储至目标位置,例如可以将目标数据文件存储至安全数码卡(Secure Digital Memory Card,SD)中。
需要说明的是,若编码过程中,将待存储数据写入到输出流(JceOutputStream)中生成目标数据文件,由于输出流与目标位置相关联,则将目标数据文件存储至目标位置的方式可以是通过输出流将目标数据文件输出至目标位置。
以待存储数据是以下数据为例:
Struct SampleInfo
{
1require int i=34;
2optional string s=“abc”;
}
Struct SampleInfo2
{
1require SampleInfo info;
2require int a=12345;
}
结合表2的对应关系,针对该待存储数据编码后得到的目标数据文件参见表3所示:
表3
由上述技术方案可以看出,在接收到存储请求时,可以获取待存储数据,该待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义。根据结构体中字段的位置标签,对待存储数据进行编码生成目标数据文件,通过对存储数据进行编码可以将复杂数据结构转换成便于存储的文件格式,例如二进制格式的目标数据文件,故可以直接将目标数据文件存储至目标位置。可见,该方法可以适用于各种数据结构的数据存储,在存储时可以将复杂数据结构转换成便于存储的文件格式,无需设计存储结构,降低了使用和维护成本。同时,由于该数据协议支持字段扩展,当有新的数据结构或更改数据结构时,增加字段不会影响已有数据结构的处理,简化了新的复杂数据结构的存储过程。
由于本申请实施例可以采用JCE协议来定义待存储数据的数据结构,而终端设备与服务器通信可以是通过JCE协议实现数据的打包和解包。因此对于服务器传来的复杂数据结构的数据,终端设备可以很简单的进行存储。
另外,由于JCE协议内容非常紧凑,因为转化为二进制文件之后空间利用率非常的高,相比普通的数据库的方式更加节省存储空间,例如节省SD卡空间。
同时,由于转化为二进制文件,对于没有相同解码协议的应用是无法读取这个二进制文件的内容的,在一定程度上实现了数据保密。
在本申请实施例中,可以通过上述方法将待存储数据以目标数据文件的形式存储至目标位置,当应用运行时,可能会需要使用目标位置中的数据,此时需要从目标位置读取数据供该应用使用。因此,本申请还提供一种数据读取方法,参见图9,所述方法包括:
S901、响应于读取请求,从所述目标位置获取目标数据文件。
其中,响应请求可以是根据用户的选择操作触发的,若用户选择“读取”则触发读取请求。
S902、根据所述结构体中的位置标签,对所述目标数据文件进行解码,得到数据结构的数据。
在一种可能的实现方式中,当需要从目标位置读取数据时,指定编码格式(参见图10中1001所示),该编码格式与编码过程中所指定的编码格式相同。在按照指定编码格式进行解码的过程中,可以按照代码文件中位置标签(Tag)从小到大的顺序,在输入流(JceInputStream)中从目标位置读取位置标签所对应字段的数据,输入流与功能模块相关联。
例如图10所示,在进行解码时,终端设备可以通过运行代码文件中的读取(readFrom)方法,将输入流设置为传入(参见图10中S1002所示),在读取方法中,按照位置标签的值从小到大的顺序在输入流中读取数据(参见图10中S1003所示)。以结构体中的Tag的值分别是0、1、2、3为例,则读取顺序如图8中右图的箭头所示,与数据写入的顺序相同。
若数据包括head数据和head数据所对应的数据内容,在输入流中读取数据的方式可以是,根据结构体中的位置标签和数据类型,读取字段的头数据(参见图10中S1004所示),判断位置标签的值是否大于15(参见图10中S1005所示),若是,说明Tag 1的值固定为15,用Tag2的值表示Tag的值,即选取下一个字节做位置标签(参见图10中S1006所示),若否,则读取数据类型(参见图10中S1007所示),读取数据大小(参见图10中S1008所示),读取头数据对应的数据内容(参见图10中S1009所示)。确定读取是否完毕(参见图10中S1010所示),若是,则编码结束,得到目标数据文件,若否,则重复执行S1003。
需要说明的是,在解码过程中,可以通过字段是否必选的指示标识对解码过程进行监测,避免解码出现错误。若结构体中包括第一位置标签对应的字段是必选的指示标识,那么,若对目标数据文件进行解码的过程中确定第一位置标签缺失,则确定解码失败。若结构体中包括第二位置标签对应的字段是可选的指示标识,那么,若对目标数据文件进行解码的过程中确定第二位置标签缺失,则忽略该第二位置标签,继续对目标数据文件进行解码。
S903、将所述数据结构的数据返回至对应的功能模块。
解码之后得到对应数据结构的数据,可以将该数据返回至功能模块以供使用。例如,若将数据返回至WiFi管家的外部引导离线配置模块,则可以利用该数据实现离线推广功能。
接下来,将结合实际应用场景,对本申请实施例提供的数据存取方法进行介绍。终端设备上安装有WiFi管家,当WiFi管家运行时,WiFi管家可以使用预先生成的代码文件,执行图11所述的方法,所述方法包括:
S1101、用户打开终端设备上的WiFi管家。
S1102、确定用户操作,若是存储操作,则执行S1103,若是读取操作,则执行S1105。
S1103、将待存储数据按照指定编码格式进行编码,将待存储数据转换为二进制格式的目标数据文件。
S1104、将目标数据文件存储至SD卡中。
S1105、从SD卡中读取目标数据文件。
S1106、对目标数据文件进行解码,得到对应数据结构的数据。
S1107、将该数据存储至对应的功能模块,以供使用。
基于前述实施例提供的数据存取方法,本申请实施例还提供一种数据存取装置,参见图12,所述装置包括获取单元1201、生成单元1202和存储单元1203:
所述获取单元1201,用于响应于存储请求,获取待存储数据;所述待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义;
所述生成单元1202,用于根据所述结构体中字段的位置标签,对所述待存储数据进行编码,将所述待存储数据转换为二进制格式的目标数据文件;
所述存储单元1203,用于将所述目标数据文件存储至目标位置。
在一种可能的实现方式中,所述生成单元1202还用于:
生成第一文件格式的数据协议;
对所述第一文件格式的数据协议进行转换,生成数据协议对应的代码文件;
将所述代码文件存储至目标路径下。
在一种可能的实现方式中,所述生成单元1202具体用于:
运行所述代码文件;
按照所述代码文件中位置标签从小到大的顺序,将所述待存储数据中位置标签所对应字段的数据写入输出流,生成目标数据文件,所述输出流与所述目标位置相关联;
所述存储单元1203,用于:
通过所述输出流将所述目标数据文件输出至所述目标位置。
在一种可能的实现方式中,所述结构体中包括字段的数据类型,所述生成单元1202具体用于:
根据所述结构体中的位置标签和数据类型,将所述字段的头数据写入所述输出流;
根据所述头数据,向所述输出流中写入所述头数据对应的数据内容。
在一种可能的实现方式中,所述装置还包括读取单元:
所述读取单元,用于响应于读取请求,从所述目标位置获取目标数据文件;根据所述结构体中的位置标签,对所述目标数据文件进行解码,得到数据结构的数据;将所述数据结构的数据返回至对应的功能模块。
在一种可能的实现方式中,若所述结构体中包括第一位置标签对应的字段是必选的指示标识,所述读取单元还用于:
若对所述目标数据文件进行解码的过程中确定所述第一位置标签缺失,则确定解码失败。
在一种可能的实现方式中,若所述结构体中包括第二位置标签对应的字段是可选的指示标识,所述读取单元还用于:
若对所述目标数据文件进行解码的过程中确定所述第二位置标签缺失,则忽略所述第二位置标签,继续对所述目标数据文件进行解码。
本申请实施例还提供了一种用于数据存取的设备,该用于数据存取的设备具体可以是终端设备,下面将从硬件实体化的角度对本申请实施例提供的终端设备进行介绍。
参见图13,图13是本申请实施例提供的终端设备的结构示意图。如图13所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(英文全称:PersonalDigital Assistant,英文缩写:PDA)、销售终端(英文全称:Point of Sales,英文缩写:POS)、车载电脑等任意终端设备,以终端为智能手机为例:
图13示出的是与本申请实施例提供的终端相关的智能手机的部分结构的框图。参考图13,智能手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1310、存储器1320、输入单元1330、显示单元1340、传感器1350、音频电路1360、无线保真(英文全称:wireless fidelity,英文缩写:WiFi)模块1370、处理器1380、以及电源1390等部件。本领域技术人员可以理解,图13中示出的智能手机结构并不构成对智能手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储器1320可用于存储软件程序以及模块,处理器1380通过运行存储在存储器1320的软件程序以及模块,从而执行智能手机的各种功能应用以及数据处理。存储器1320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1380是智能手机的控制中心,利用各种接口和线路连接整个智能手机的各个部分,通过运行或执行存储在存储器1320内的软件程序和/或模块,以及调用存储在存储器1320内的数据,执行智能手机的各种功能和处理数据,从而对智能手机进行整体监控。可选的,处理器1380可包括一个或多个处理单元;优选的,处理器1380可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1380中。
在本申请实施例中,该终端所包括的处理器1380还具有以下功能:
响应于存储请求,获取待存储数据;所述待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义;
根据所述结构体中字段的位置标签,对所述待存储数据进行编码,将所述待存储数据转换为二进制格式的目标数据文件;
将所述目标数据文件存储至目标位置。
本申请实施例提供的用于数据存取的设备还可以是服务器,请参见图14所示,图14为本申请实施例提供的服务器1400的结构图,服务器1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)1422(例如,一个或一个以上处理器)和存储器1432,一个或一个以上存储应用程序1442或数据1444的存储介质1430(例如一个或一个以上海量存储设备)。其中,存储器1432和存储介质1430可以是短暂存储或持久存储。存储在存储介质1430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1422可以设置为与存储介质1430通信,在服务器1400上执行存储介质1430中的一系列指令操作。
服务器1400还可以包括一个或一个以上电源1426,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1458,和/或,一个或一个以上操作系统1441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图14所示的服务器结构。
本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该程序代码用于执行前述各个实施例所述的一种数据存取方法中的任意一种实施方式。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种数据存取方法,其特征在于,所述方法包括:
响应于存储请求,获取待存储数据;所述待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义;
根据所述结构体中字段的位置标签,对所述待存储数据进行编码,将所述待存储数据转换为二进制格式的目标数据文件;
将所述目标数据文件存储至目标位置。
2.根据权利要求1所述的方法,其特征在于,所述数据协议的制定方法包括以下步骤:
生成第一文件格式的数据协议;
对所述第一文件格式的数据协议进行转换,生成数据协议对应的代码文件;
将所述代码文件存储至目标路径下。
3.根据权利要求2所述的方法,其特征在于,所述根据所述结构体中字段的位置标签,对所述待存储数据进行编码,将所述待存储数据转换为二进制格式的目标数据文件,包括:
运行所述代码文件;
按照所述代码文件中位置标签从小到大的顺序,将所述待存储数据中位置标签所对应字段的数据写入输出流,生成目标数据文件,所述输出流与所述目标位置相关联;
所述将所述目标数据文件存储至目标位置,包括:
通过所述输出流将所述目标数据文件输出至所述目标位置。
4.根据权利要求3所述的方法,其特征在于,所述结构体中包括字段的数据类型,所述将所述待存储数据中位置标签所对应字段的数据写入输出流,包括:
根据所述结构体中的位置标签和数据类型,将所述字段的头数据写入所述输出流;
根据所述头数据,向所述输出流中写入所述头数据对应的数据内容。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于读取请求,从所述目标位置获取目标数据文件;
根据所述结构体中的位置标签,对所述目标数据文件进行解码,得到数据结构的数据;
将所述数据结构的数据返回至对应的功能模块。
6.根据权利要求5所述的方法,其特征在于,若所述结构体中包括第一位置标签对应的字段是必选的指示标识,根据所述结构体中的位置标签,对所述目标数据文件进行解码的过程中,所述方法还包括:
若对所述目标数据文件进行解码的过程中确定所述第一位置标签缺失,则确定解码失败。
7.根据权利要求5所述的方法,其特征在于,若所述结构体中包括第二位置标签对应的字段是可选的指示标识,根据所述结构体中的位置标签,对所述目标数据文件进行解码的过程中,所述方法还包括:
若对所述目标数据文件进行解码的过程中确定所述第二位置标签缺失,则忽略所述第二位置标签,继续对所述目标数据文件进行解码。
8.一种数据存取装置,其特征在于,所述装置包括获取单元、生成单元和存储单元:
所述获取单元,用于响应于存储请求,获取待存储数据;所述待存储数据的数据结构通过支持扩展字段的数据协议中的结构体所定义;
所述生成单元,用于根据所述结构体中字段的位置标签,对所述待存储数据进行编码,将所述待存储数据转换为二进制格式的目标数据文件;
所述存储单元,用于将所述目标数据文件存储至目标位置。
9.一种用于数据存取的设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-7任一项所述的数据存取方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-7任一项所述的数据存取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010529205.4A CN111680061A (zh) | 2020-06-11 | 2020-06-11 | 一种数据存取方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010529205.4A CN111680061A (zh) | 2020-06-11 | 2020-06-11 | 一种数据存取方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111680061A true CN111680061A (zh) | 2020-09-18 |
Family
ID=72454612
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010529205.4A Pending CN111680061A (zh) | 2020-06-11 | 2020-06-11 | 一种数据存取方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680061A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100307A (zh) * | 2020-09-25 | 2020-12-18 | 北京奇艺世纪科技有限公司 | 数据处理方法、寻路处理方法、装置及电子设备 |
CN112115126A (zh) * | 2020-09-29 | 2020-12-22 | 北京人大金仓信息技术股份有限公司 | 集合数据类型的处理方法、装置和数据库管理系统 |
CN113127551A (zh) * | 2021-04-25 | 2021-07-16 | 在秀网络科技(深圳)有限公司 | 一种取代前端设备的数据承载平台数据调取方法及系统 |
CN113726018A (zh) * | 2021-11-04 | 2021-11-30 | 浙江邦业科技股份有限公司 | 一种电能数据采集系统及方法 |
CN114201545A (zh) * | 2022-02-16 | 2022-03-18 | 希维科技(广州)有限公司 | 数据处理方法、装置、终端设备及存储介质 |
CN115344903A (zh) * | 2022-10-18 | 2022-11-15 | 广东时谛智能科技有限公司 | 一种鞋体设计数据的存储方法、装置、设备及存储介质 |
CN115470275A (zh) * | 2022-08-29 | 2022-12-13 | 北京麦聪软件有限公司 | 基于sql复杂计算的无限量数据下载方法和系统 |
CN116932615A (zh) * | 2023-09-19 | 2023-10-24 | 北京城建智控科技股份有限公司 | 自适应协议的数据序列化方法及装置 |
-
2020
- 2020-06-11 CN CN202010529205.4A patent/CN111680061A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100307A (zh) * | 2020-09-25 | 2020-12-18 | 北京奇艺世纪科技有限公司 | 数据处理方法、寻路处理方法、装置及电子设备 |
CN112115126A (zh) * | 2020-09-29 | 2020-12-22 | 北京人大金仓信息技术股份有限公司 | 集合数据类型的处理方法、装置和数据库管理系统 |
CN113127551A (zh) * | 2021-04-25 | 2021-07-16 | 在秀网络科技(深圳)有限公司 | 一种取代前端设备的数据承载平台数据调取方法及系统 |
CN113726018A (zh) * | 2021-11-04 | 2021-11-30 | 浙江邦业科技股份有限公司 | 一种电能数据采集系统及方法 |
CN113726018B (zh) * | 2021-11-04 | 2022-03-01 | 浙江邦业科技股份有限公司 | 一种电能数据采集系统及方法 |
CN114201545A (zh) * | 2022-02-16 | 2022-03-18 | 希维科技(广州)有限公司 | 数据处理方法、装置、终端设备及存储介质 |
CN114201545B (zh) * | 2022-02-16 | 2022-04-22 | 希维科技(广州)有限公司 | 数据处理方法、装置、终端设备及存储介质 |
CN115470275A (zh) * | 2022-08-29 | 2022-12-13 | 北京麦聪软件有限公司 | 基于sql复杂计算的无限量数据下载方法和系统 |
CN115344903A (zh) * | 2022-10-18 | 2022-11-15 | 广东时谛智能科技有限公司 | 一种鞋体设计数据的存储方法、装置、设备及存储介质 |
CN116932615A (zh) * | 2023-09-19 | 2023-10-24 | 北京城建智控科技股份有限公司 | 自适应协议的数据序列化方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111680061A (zh) | 一种数据存取方法、装置、设备和存储介质 | |
CN111090628B (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN105760534B (zh) | 自定义的可序列化的数据结构、hadoop集群、服务器及其应用方法 | |
US10445334B1 (en) | Query transmission in type-limited interchange formats | |
CN108334609B (zh) | Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质 | |
CN106648569B (zh) | 目标序列化实现方法和装置 | |
CN110851209B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN102918529A (zh) | 索引生成和使用的方法和装置 | |
KR101780905B1 (ko) | 거대 문자 라이브러리 설정 방법 및 장치와 문자 디스플레이 방법 및 장치 | |
US20230419016A1 (en) | Visualized Page Rendering Method, Device, Equipment, and Storage Medium | |
CN109062572B (zh) | 一种组件调用方法、装置、设备及存储介质 | |
CN107566090B (zh) | 一种定长/变长的文本报文处理方法及装置 | |
CN108241676A (zh) | 实现数据同步的方法及设备 | |
CN111813465B (zh) | 一种信息获取方法、装置、介质和设备 | |
CN110704608A (zh) | 文本主题生成方法、装置和计算机设备 | |
CN112612489B (zh) | 软件的升级包构建方法、装置和电子设备 | |
CN110032562B (zh) | 一种存储业务记录的方法及装置 | |
CN113127776A (zh) | 面包屑路径生成方法、装置及终端设备 | |
CN115629763A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
CN112698825B (zh) | 编程积木块转换方法、装置、处理设备及存储介质 | |
US20090037890A1 (en) | Method and system for generating an application | |
CN111539200B (zh) | 一种生成富文本的方法、装置、介质和电子设备 | |
CN112486465A (zh) | 一种代码更新方法及装置 | |
CN113609128A (zh) | 生成数据库实体类的方法、装置、终端设备及存储介质 | |
CN118277686A (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 |