一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据压缩方法、装置和电子设备与流程

2021-10-23 00:47:00 来源:中国专利 TAG:终端 电子设备 装置 特别 数据压缩


1.本技术涉及智能终端技术领域,特别涉及一种数据压缩方法、装置和电子设备。


背景技术:

2.在个人终端(例如,手机、个人电脑)的应用场景中,伴随着个人终端所能实现的应用功能不断增加,个人终端的日志数据的数据量也越来越大。
3.在某些应用场景中,个人终端的日志数据需要上传至服务器以便进行综合分析(例如,进行个人终端故障分析)。伴随着个人终端日志数据的数据量的增大,个人终端上存储日志数据的存储空间需求也不断增加,上传日志数据所消耗的数据传输流量也随之增多,严重影响到个人终端的正常运行,降低了用户体验。


技术实现要素:

4.针对日志数据的数据量过大问题,本技术提供了一种数据压缩方法、装置和电子设备,以及,一种计算机可读存储介质。
5.本技术实施例采用下述技术方案:
6.第一方面,本技术提供一种数据压缩方法,包括:
7.获取对应第一事件的第一事件记录,第一事件记录包括第一事件中已定义的一个或多个参数的参数标识以及记录值;
8.调用对应第一事件的第一事件定义,第一事件定义包括第一事件中已定义的所有参数的参数标识以及预设值;
9.对比第一事件定义以及第一事件记录,根据对比结果生成第一事件记录压缩数据,其中,第一事件记录压缩数据包括:
10.事件标识数据,其中,事件标识数据包括第一事件的事件标识;
11.第一类参数数据,其中,第一类参数数据包括第一类参数的参数标识以及记录值,第一类参数为,第一事件记录所包含的参数中,参数的记录值与预设值不同的参数;
12.第二类参数数据或者第三类参数数据,其中:
13.第二类参数数据包括第二类参数的参数标识,第二类参数为,第一事件记录所包含的参数中,参数的记录值与预设值相同的参数;
14.第三类参数数据包括第三类参数的参数标识,第三类参数为,第一事件定义所包含的参数中,参数的记录值没有被记录在第一事件记录中的参数。
15.在基于上述第一方面的一种可能的实现方式中,第一事件记录压缩数据包括:
16.第二类参数数据与第三类参数数据中,数据量较少的一类数据。
17.在基于上述第一方面的一种可能的实现方式中,第一类参数数据还包括第一参数类标识,第二类参数数据还包括第二参数类标识,第三类参数数据还包括第三参数类标识。
18.在基于上述第一方面的一种可能的实现方式中,事件标识数据还包括第一压缩方式标识或第二压缩方式标识,其中:
19.当第一事件记录压缩数据包括第二类参数数据时,事件标识数据包括第一压缩方式标识;
20.当第一事件记录压缩数据包括第三类参数数据时,事件标识数据包括第二压缩方式标识。
21.在基于上述第一方面的一种可能的实现方式中,事件标识数据的二进制编码为,用第一压缩方式标识或第二压缩方式标识的二进制编码代替事件标识偏移编码的最后一位所生成的编码,其中,事件标识偏移编码为将事件标识的二进制编码左移1位后生成的编码。
22.在基于上述第一方面的一种可能的实现方式中,第一类参数数据还包括第一参数类标识,第二类参数数据还包括第二参数类标识,第三类参数数据还包括第二参数类标识。
23.在基于上述第一方面的一种可能的实现方式中:
24.第一类参数数据的二进制编码包括第一类参数标识编码,第一类参数标识编码为,用第一参数类标识的二进制编码代替第一类参数偏移编码的最后一位所生成的编码,其中,第一类参数偏移编码为将第一类参数的参数标识的二进制编码左移1位后生成的编码;
25.第二类参数数据的二进制编码包括第二类参数标识编码,第二类参数标识编码为,用第二参数类标识的二进制编码代替第二类参数偏移编码的最后一位所生成的编码,其中,第二类参数偏移编码为将第二类参数的参数标识的二进制编码左移1位后生成的编码;
26.第三类参数数据的二进制编码包括第三类参数标识编码,第三类参数标识编码为,用第二参数类标识的二进制编码代替第三类参数偏移编码的最后一位所生成的编码,其中,第三类参数偏移编码为将第三类参数的参数标识的二进制编码左移1位后生成的编码。
27.第二方面,本技术提供一种数据解析方法,包括:
28.获取第一事件记录压缩数据,第一事件记录压缩数据为根据上述第一方面方法压缩第一事件记录所生成的数据,第一事件记录对应第一事件;
29.调用对应第一事件的第一事件定义,第一事件定义包括第一事件中已定义的所有参数的参数标识以及预设值;
30.根据第一事件定义解析第一事件记录压缩数据,包括:
31.当第一事件记录压缩数据包括第二类参数数据时,针对第一事件记录压缩数据中记录参数标识但没有记录参数值的参数,以第一事件定义中预设值为参数值;
32.或者,
33.当第一事件记录压缩数据包括第三类参数数据时,针对第一事件记录压缩数据中没有记录参数标识的参数,以第一事件定义中预设值为参数值。
34.第三方面,本技术提供一种数据压缩装置,包括:
35.事件记录获取模块,其用于获取对应第一事件的第一事件记录,第一事件记录包括第一事件中已定义的一个或多个参数的参数标识以及记录值;
36.事件定义调用模块,其用于调用对应第一事件的第一事件定义,第一事件定义包括第一事件中已定义的所有参数的参数标识以及预设值;
37.压缩模块,其用于对比第一事件定义以及第一事件记录,根据对比结果生成第一事件记录压缩数据,其中,第一事件记录压缩数据包括:
38.事件标识数据,其中,事件标识数据包括第一事件的事件标识;
39.第一类参数数据,其中,第一类参数数据包括第一类参数的参数标识以及记录值,第一类参数为,第一事件记录所包含的参数中,参数的记录值与预设值不同的参数;
40.第二类参数数据或者第三类参数数据,其中:
41.第二类参数数据包括第二类参数的参数标识,第二类参数为,第一事件记录所包含的参数中,参数的记录值与预设值相同的参数;
42.第三类参数数据包括第三类参数的参数标识,第三类参数为,第一事件定义所包含的参数中,参数的记录值没有被记录在第一事件记录中的参数。
43.第四方面,本技术提供一种数据解析装置,包括:
44.数据获取模块,其用于获取第一事件记录压缩数据,第一事件记录压缩数据为根据上述第一方面方法压缩第一事件记录所生成的数据,第一事件记录对应第一事件;
45.事件定义调用模块,其用于调用对应第一事件的第一事件定义,第一事件定义包括第一事件中已定义的所有参数的参数标识以及预设值;
46.数据解析模块,其用于根据第一事件定义解析第一事件记录压缩数据,包括:
47.当第一事件记录压缩数据包括第二类参数数据时,针对第一事件记录压缩数据中记录参数标识但没有记录参数值的参数,以第一事件定义中预设值为参数值;
48.或者,
49.当第一事件记录压缩数据包括第三类参数数据时,针对第一事件记录压缩数据中没有记录参数标识的参数,以第一事件定义中预设值为参数值。
50.第五方面,本技术提供一种电子设备,电子设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述电子设备执行本技术实施例的方法步骤
51.第六方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行本技术实施例的方法。
52.根据本技术实施例所提出的上述技术方案,至少可以实现下述技术效果:
53.根据本技术一实施例的方法,通过减少事件记录中记录的参数记录值以及参数标识,有效降低了日志数据的数据量,从而降低日志数据的存储空间占用以及传输过程中的流量消耗;
54.进一步的,根据本技术一实施例的方法,对于多种数据结构的文件,不需要修改生成数据结构的代码即可进行相应的数据压缩操作,避免了修改程序带来的风险;
55.进一步的,根据本技术一实施例的方法,压缩操作依赖于事件定义,在无对应的事件定义时,无法对压缩结果进行解析,大大提高了数据安全性。
附图说明
56.图1所示为根据本技术数据压缩方法一实施例的流程图;
57.图2所示为根据本技术数据解析方法一实施例的流程图;
58.图3所示为根据本技术数据压缩装置一实施例的结构示意图;
59.图4所示为根据本技术数据解析装置一实施例的结构示意图。
具体实施方式
60.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
61.本技术的实施方式部分使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。
62.针对日志数据的数据量过大问题,本技术提供了一种数据压缩方法,以削减日志数据中不必要的数据代码,从而减少日志数据的数据量。
63.针对日志数据,一种可行的压缩方式是采用js对象简谱(javascript object notation,json)键值对的格式进行数据存储与传输。但是,采用键值对的形式进行存储,存在大量的键字符串,需要占据较大存储空间;并且,在数据传输时,以明文形式进行传输,存在信息安全隐患。
64.另一种可行的压缩方式是采用序列结构化数据格式(protocol buffer,protobuf)。其采用以下流程:
65.将结构化的数据定义为message,message相当于java中的class,用数据结构定义文件存放message定义;
66.根据数据结构定义文件,生成一个个对应的代码文件,如每个message将生成一个.class文件;
67.给message中的每个成员进行编号,采用tag-value的形式进行存储,tag中存储成员的编号和成员的编码类型值,value中存储对应的数据值。
68.在上述方案中,需要针对每个message单独生成一个.class文件,且生成大量的辅助代码,对于有很多个message的情况,将产生大量辅助代码,数据压缩效果并不理想。并且,上述方案的实现需要修改程序源代码,这会大大加大方案的实现难度。
69.另一种可行的压缩方式是采用数据数据压缩系统avro。avro的整体实现思想类似protobuf。在基于avro的压缩方案中,对成员数据进行编号,按照编号顺序进行编码,但avro中不存储tag,依赖事件定义文件按照顺序进编解码。在基于avro的压缩方案中,由于需要生成对应的代码文件,如.calss文件,因此仍然会产生大量的辅助代码,并且需要修改程序源代码才能实现基于avro的压缩方案。
70.基于上述对不同压缩方案的分析,本技术一实施例提出了一种新的数据压缩方式,以实现对日志数据进行更优的数据压缩。为了提出本技术实施例的方法,发明人首先分析日志数据的数据结构。一般的,日志数据用于记录个人终端的事件。针对每个事件,该事件可能包含用于描述事件的一个或多个参数,参数通过不同的参数值来描述不同的事件状态。对一个事件的事件记录而言,事件记录用于记录该事件所包含的所有参数中的一个或多个参数的参数值(以下事件记录中所记录的参数值简称为记录值)。
71.以手机日志数据为例,手机在运行时会产生日志数据,用于记录手机的运行状态。日志数据会以一个个事件(event)的形式进行记录。针对不同的事件生成时间和/或事件生
成源头,一个事件可以拥有一个或多个不同的事件记录。每个事件记录都包含有一个或者多个参数(param)的记录,每个参数的记录包含该参数对应的参数标识称以及该参数对应的记录值,事件记录通过参数的记录来描述事件的状态信息。
72.由于日志数据包括多个事件记录的集合。因此,如果可以减少事件记录的数据量,就相当于减少了日志数据的数据量,实现了对日志数据的数据压缩。
73.一般的,针对某一事件,该事件所包含的参数具备预设的参数值(以下参数所预设的参数值简称为预设值)。参数的预设值为该事件处于预设状态时参数的参数值。通常将事件正常状态时参数的值设定为预设值,这样,如果事件异常,那么事件所包含的参数中,就存在一个或多个参数的参数值不为预设值。
74.由于预设值预先已确定具体值,那么,基于预设值的存在,如果可以确定一个参数满足预设值,那么,即使不记录该参数的具体参数值,也可以通过检索预设值的方式来确认该参数的参数值。
75.进一步的,在实际应用场景中,为了便于解读日志数据,通常会预先定义事件定义,通过事件定义规范日志数据的数据格式。事件定义包括事件所包括的所有参数的定义,例如,参数的参数标识称、参数的参数值的数据类型。事件定义被日志数据的生成端(例如,个人终端)以及解析端(例如,需要分析日志数据的服务器)保存。在生成日志数据时,如果要生成某个事件的事件记录,则调用预先保存的、该事件的事件定义,通过事件定义中的参数的定义生成满足事件定义数据格式的事件记录。在解析日志数据时,如果要解析某个事件的事件记录,则调用预先保存的、该事件的事件定义,通过事件定义中的参数的定义解析事件记录。
76.因此,基于事件定义的存在,如果在事件定义中写入参数的预设值,那么在压缩事件记录时,在压缩结果中,针对参数值为预设值的参数,就不需要保存参数值;在对事件记录的压缩结果进行解析时,如果检索到没有记录参数值的参数,直接调用事件定义中的预设值。
77.进一步的,在实际应用场景中,事件记录中还存在没有记录参数值的参数,或者,参数在事件定义中被定义,但是在事件记录中完全没有被记录。针对上述情况,如果可以确认事件记录中有参数值记录的参数,那么根据与事件定义中所有定义了的参数做对比,就可以确认事件记录中没有参数值记录的参数。
78.综上,在本技术一实施例中,在压缩事件记录时,在压缩结果中:
79.针对参数值不为预设值的参数,保留参数的参数标识以及参数值;
80.针对参数值为预设值的参数,不保留参数值,只保留参数标识;
81.针对事件记录中没有记录参数值的参数或者事件定义中已定义但事件记录完全没有记录的参数,即不保留参数值,也不保留参数标识。
82.进一步的,考虑到如果可以确认事件记录中没有参数值记录的参数,那么根据与事件定义中所有定义了的参数做对比,也可以确认事件记录中有参数值记录的参数。
83.因此,在本技术一实施例中,在压缩事件记录时,在压缩结果中:
84.针对参数值不为预设值的参数,保留参数的参数标识以及参数值;
85.针对事件记录中没有记录参数值的参数或者事件定义中已定义但事件记录完全没有记录的参数,不保留参数值,只保留参数标识;
86.针对参数值为预设值的参数,即不保留参数值,也不保留参数标识。
87.以下结合附图,详细说明本技术各实施例提供的技术方案。
88.图1所示为根据本技术数据压缩方法一实施例的流程图。在本技术一实施例中,如图1所示,针对第一事件记录进行压缩的流程包括:
89.步骤110,获取对应第一事件的第一事件记录,第一事件记录包括第一事件中已定义的一个或多个参数的参数标识以及记录值;
90.步骤120,调用对应第一事件的第一事件定义,第一事件定义包括第一事件中已定义的所有参数的参数标识以及预设值;
91.步骤130,对比第一事件定义以及第一事件记录,根据对比结果生成第一事件记录压缩数据。
92.具体的,在步骤130中,生成第一事件记录压缩数据包括事件标识数据以及第一类参数数据,其中:
93.事件标识数据包括所述第一事件的事件标识;
94.第一类参数数据包括第一类参数的参数标识以及记录值,第一类参数为,第一事件记录所包含的参数中,参数的记录值与所述预设值不同的参数。
95.进一步的,在步骤130中,生成第一事件记录压缩数据还包括第二类参数数据或者第三类参数数据(第一事件记录压缩数据还包括第二类参数数据以及第三类参数数据中的一类数据,不会同时包含第二类参数数据以及第三类参数数据),其中:
96.第二类参数数据包括第二类参数的参数标识,第二类参数为,第一事件记录所包含的参数中,参数的记录值与所述预设值相同的参数;
97.第三类参数数据包括第三类参数的参数标识,第三类参数为,第一事件定义所包含的参数中,参数的记录值没有被记录在第一事件记录中的参数。
98.即,步骤130至少具备第一实现方式以及第二实现方式。在实际应用过程中,选用第一实现方式以及第二实现方式中的一种实现方式实现步骤130。
99.具体的,在步骤130的第一实现方式中,第一事件记录压缩数据包括:事件标识数据、第一类参数数据以及第二类参数数据。
100.具体的,在步骤130的第二实现方式中,第一事件记录压缩数据包括:事件标识数据、第一类参数数据以及第三类参数数据。
101.根据本技术一实施例的方法,通过减少事件记录中记录的参数记录值以及参数标识,有效降低了日志数据的数据量,从而降低日志数据的存储空间占用以及传输过程中的流量消耗。
102.进一步的,根据本技术一实施例的方法,对于多种数据结构的文件,不需要修改生成数据结构的代码即可进行相应的数据压缩操作,避免了修改程序带来的风险。
103.进一步的,根据本技术一实施例的方法,压缩操作依赖于事件定义,在无对应的事件定义时,无法对压缩结果进行解析,大大提高了数据安全性。
104.具体的,本技术实施例中,参数标识可以是参数编号(id)或者参数名。具体的,在实际应用场景中,可以根据具体应用需求确定参数标识的具体类型。例如,在一应用场景中,考虑到参数编号的代码长度小于参数名,因此使用参数编号作为参数标识。在另一应用场景中,考虑到参数编号存在重复,因此使用参数名作为参数标识。
105.这里需要说明的是,在本说明书的多个实施例以及应用场景举例中,数据压缩的对象是日志数据的事件记录。但是,本技术实施例所提出的数据压缩方法并不仅限于针对日志数据的事件记录,任何与日志数据的事件记录具备相似数据记录结构的数据均可以采用本技术实施例所提出的数据压缩方法。
106.以下以具体的应用场景描述图1所示的实施例的具体分析过程以及执行过程。
107.在一应用场景中,每个事件都有一个对应的事件定义,事件定义中指定了事件标识(id)和参数。事件定义的作用是规定事件参数的数量、参数值的数据类型,相当于配置文件。例如,假设针对事件a有如下事件(event)定义:
108.<event id=913000007>
109.<param id=0name="age"type="int32"default=10/>
110.<param id=1name="money"type="double"default=1.0/>
111.<param id=2name="name"type="string"default=”abc”/>
112.<param id=3name="data"type="event"classid=913009001/>
113.</event>
114.在事件定义中:
115.事件id:每个事件的唯一标识,相当于每个人的身份证号,如上述事件a的事件定义中,event id=913000007,其中913000007即为事件a的事件id;
116.参数:一个事件有一个或者多个参数,用来记录事件的信息,在参数定义中,每个参数有自己的参数编号(id)、参数名、参数类型、预设(default)值。在下述实施例的应用场景描述中,当需要指定某参数时,为描述方便,使用参数名指代具体参数。
117.具体的,参数定义包括:
118.参数id:参数的id,如上述id=0,其中0即为参数id,参数id在一个事件中是唯一的,即在一个事件中,只存在一个参数id为0的参数,在不同的事件中,参数id的取值互不影响,即在一个事件中,存在参数id为0的参数,在另外一个事件中,也可以有一个参数id为0的参数,二者没有关联,也互不影响;
119.参数名:参数的名字,如name=“age”,age即是参数名;
120.参数类型:参数值的数据类型,如type="double",double即是参数类型;
121.预设值:在事件参数定义时,预先设置的参数的值,如<param id=0name="age"type="int32"default=10/>中default=10,10就是age的预设值;在上述事件定义中,当参数类型是事件(event)时,该参数没有预设值。
122.进一步的,在某些应用场景中,由于存在多个事件,事件定义文件是由多个事件定义组成。如上述事件a的事件定义,只是事件定义文件中的一个事件定义。例如,在一具体应用场景中,事件定义文件如下所示:
[0123][0124][0125]
基于上述事件a的事件定义,在一具体的应用场景中,一条针对事件a的事件记录a可以为如下举例的格式:
[0126]
{“eventid”:913000007;“age”:23;“money”:1.0;“name”:“abc”}。
[0127]
在事件记录a中,针对参数的记录数据存在下述三类情况:
[0128]
a类数据(图1所示实施例的第一类参数数据):参数在事件记录中的记录值与预设值不同。在手机的日志数据中,这类数据一般是表示异常数据,即程序中出错的地方,如示例中的age,在事件定义中预设值default=10,即age的预设值为10,而事件记录a中“age”:23,即age的记录值为23,预设值与记录值不相同,在手机日志的场景下,预设值为程序运行时参数的正确值,所以10是正常的,而23是异常,a类数据就是表示这类与预设值不同数据;
[0129]
b类数据(图1所示实施例的第二类参数数据):参数在事件记录中的记录值与预设值相同。在手机的日志数据中,这类数据一般是程序运行时的正常数据,或者用于标记数据正常的预设值,如money和name;
[0130]
c类数据(图1所示实施例的第三类参数数据):事件记录中没有记录值的参数,如上述事件中的参数data,data在事件定义中有定义,但是在事件记录中,并没有相应的记录值。在手机日志数据中,这类数据对应着这样一种情况,如上述事件定义,有4个参数age、money、name、data,程序在运行过程中对这4个参数进行赋值,假设赋值的顺序是money、name、age、data,在对money和name进行赋值时,都是正常的,money=1.0,name=“abc”,当对age进行赋值age=23,赋值结束后,代码运行到age和data之间,程序因为age的错误赋值导致程序崩溃,这时data并没有值,因此,在上报日志时,只能上报money、name、age三个参数的值,data参数的数据就无法上报。
[0131]
以手机日志为例,上述三类数据中,a类数据代表日志中的故障信息,是需要存储的关键信息,必须完整地存储下来;b类数据,由于记录值和事件定义中参数的预设值相同,可以在数据压缩时,对b类数据不存储,在数据解析时,根据事件定义中的预设值进行恢复;
c类数据由于没有赋值,没有办法进行存储。
[0132]
对于a类数据,必须完整地存储下来;b类数据的参数值在数据解析时可以根据事件定义中的预设值进行恢复,因此可以不进行存储;c类数据由于没有赋值,没有办法存储参数值。因此,在数据压缩结果中,对于b类和c类数据的参数值不进行存储,并且,为了解析数据时区分没有存储参数值的是b类数据还是c类数据,使用是否在压缩结果中存储参数标识来区分。
[0133]
具体的,步骤130的第一实现方式可以为如下描述:
[0134]
对于a类数据,存储完整的信息,如参数标识(参数名或参数id) 参数值;
[0135]
对于b类数据,只存储参数标识(参数名或参数id),用于标记参数为b类数据;
[0136]
对于c类数据,直接什么都不存。
[0137]
以上述事件a的事件定义以及针对事件a的事件记录a为例。在事件记录a中,可以看出age是a类数据,money、name是b类数据,data是c类数据,在基于步骤130的第一实现方式进行数据压缩后可以获得如下的事件记录压缩数据a1:
[0138]
{913000007;age:23;money;name}。
[0139]
在上述事件记录压缩数据a1中:
[0140]
事件id,913000007,是为了在事件定义文件中查找到事件id为913000007的事件定义;
[0141]
age:23是必须完整存储的a类数据,因此将age的参数标识和参数值23都存储下来;
[0142]
money和name是b类数据,为了压缩数据,数据压缩时只存储参数名money和name,用于标记money和name与预设值相同,在数据解析时,需要根据事件定义文件中的预设值进行数据恢复;
[0143]
data没有赋值,直接不进行存储,在数据解析时,在存储的信息{913000007;“age”:23;“money”;“name”}中没有data的任何数据,就可以知道data是c类数据,没有赋值,也不采用预设值进行赋值。
[0144]
在相较于事件记录a,事件记录压缩数据a1中,c类数据没有被存储,这样就相当于压缩了原本用来存储c类数据的空间,同时b类数据也只是存储了参数名,进行标记,并没有存储参数值,也节省了空间。
[0145]
具体的,步骤130的第二实现方式可以为如下描述:
[0146]
对于a类数据,存储完整的信息,如参数标识(参数名或参数id) 参数实际值;
[0147]
对于b类数据,直接什么都不存;
[0148]
对于c类数据,只存储参数标识(参数名或参数id),用于标记参数为c类数据。
[0149]
以上述事件a的事件定义以及针对事件a的事件记录a为例。在基于步骤130的第二实现方式进行数据压缩后可以获得如下的事件记录压缩数据a2:
[0150]
{913000007;age:23;data}。
[0151]
在上述事件记录压缩数据a2中:
[0152]
与事件记录压缩数据a1相同,事件id如913000007,a类数据age:23,都是必须完整存储的,保持不变;
[0153]
事件记录压缩数据a2中对于b类数据,不存储任何信息,在数据解析时,由于
{913000007;age:23;data}中没有money和name的任何信息,采用事件定义中的预设值进行数据恢复;
[0154]
事件记录压缩数据a2中对于c类数据,只存储参数名,用于标记data是没有赋值的c类数据,在数据解析时不进行赋值,也不采用事件定义中的预设值进行赋值。
[0155]
在相较于事件记录a,事件记录压缩数据a2中,b类数据没有被存储,这样就相当于压缩了原本用来存储b类数据的空间,同时c类数据也只是存储了参数名,进行标记,并没有存储参数值,也节省了空间。
[0156]
进一步的,基于图1所示实施例的数据压缩方法,本技术一实施例还提出了一种针对压缩数据的一种数据解析方法。
[0157]
图2所示为根据本技术数据解析方法一实施例的流程图。在本技术一实施例中,如图2所示,针对第一事件记录压缩数据进行解析的流程包括:
[0158]
步骤210,获取第一事件记录压缩数据,第一事件记录压缩数据为根据权利要求1~7中任一项方法压缩第一事件记录所生成的数据,第一事件记录对应第一事件;
[0159]
步骤220,调用对应第一事件的第一事件定义,第一事件定义包括第一事件中已定义的所有参数的参数标识以及预设值;
[0160]
步骤230,根据第一事件定义解析第一事件记录压缩数据,包括:
[0161]
当第一事件记录压缩数据包括第二类参数数据时,针对第一事件记录压缩数据中记录参数标识但没有记录参数值的参数,以第一事件定义中预设值为参数值;
[0162]
或者,
[0163]
当第一事件记录压缩数据包括第三类参数数据时,针对第一事件记录压缩数据中没有记录参数标识的参数,以第一事件定义中预设值为参数值。
[0164]
具体的,步骤230的具体实现方式由步骤130的具体实现方式而定。
[0165]
在步骤230的一种实现方式中,当步骤130采用第一实现方式时,针对第一事件记录压缩数据中记录有参数标识但没有记录参数值的参数,以第一事件定义中预设值为参数值;
[0166]
在步骤230的另一种实现方式中,当步骤130采用第二实现方式时,针对第一事件记录压缩数据中没有记录有参数标识的参数,以第一事件定义中预设值为参数值。
[0167]
这里需要说明的是,在本说明书的实施例以及应用场景举例中,数据解析的对象是日志数据的事件记录的压缩结果。但是,本技术实施例所提出的数据解析方法并不仅限于针对日志数据的事件记录的压缩数据,任何采用本技术实施例方法进行数据压缩的数据都可以采用本技术实施例所提出的数据解析方法。
[0168]
进一步的,由于步骤230的具体实现方式由步骤130的具体实现方式而定,因此,在一实施例中,在数据压缩端(例如,上传日志数据的手机)与数据解析端(例如,解析日志数据的服务器)需要统一默认的事件记录压缩数据的数据格式,即,在双端需要确认默认情况下,事件记录压缩数据是包含第二类参数数据,或是,包含第三类参数数据。
[0169]
进一步的,在实际应用场景中,在一实施例中,根据具体实际情况来确定步骤130的实现方式。具体的,在步骤130的一种实现方式中,选择第二类参数数据与第三类参数数据中,数据量较少的一类数据作为保存在第一事件记录压缩数据中的数据。即,第一事件记录压缩数据包括:第二类参数数据与所述第三类参数数据中,数据量较少的一类数据。
[0170]
例如,针对上述举例的事件记录a。在事件记录a中:a类数据1个,b类数据2个,c类数据1个,b类数据占比50%,a类和c类数据各占25%,因此步骤130采用第二实现方式可以获得更优的压缩效果(事件记录压缩数据a2的数据长度明显短于事件记录压缩数据a1)。
[0171]
进一步的,上述事件记录压缩数据a1,事件记录压缩数据a2中,参数标识都是采用参数名,如age、name、money、data。由于参数名是字符串,占据空间较大,因此,在一种更优的解决方案中,参数标识采用参数id。
[0172]
进一步的,在一实施例中,在步骤130的一种实现方式中,在事件记录压缩数据中写入描述信息,该描述信息用于描述步骤130是采用第一实现方式还是第二实现方式。这样,数据解析端就可以根据事件记录压缩数据中的描述信息来确定步骤230需要采用的实现方式。
[0173]
具体的,在步骤130的一种实现方式中,事件标识数据还包括第一压缩方式标识或第二压缩方式标识,其中:
[0174]
当第一事件记录压缩数据包括第二类参数数据时,事件标识数据包括第一压缩方式标识;
[0175]
当第一事件记录压缩数据包括所述第三类参数数据时,事件标识数据包括第二压缩方式标识。
[0176]
进一步的,在实际应用场景中,事件记录压缩数据是以二进制编码形式保存并传输。在步骤130的一种实现方式中,事件标识数据的二进制编码为,用第一压缩方式标识或第二压缩方式标识的二进制编码代替事件标识偏移编码的最后一位所生成的编码,其中,事件标识偏移编码为将事件标识的二进制编码左移1位后生成的编码。
[0177]
例如,以事件标识数据的二进制编码为事件tag1,事件tag1的定义如下:
[0178]
事件tag1=事件id<<1|压缩方式标识。(1)
[0179]
式(1)的含义是将事件id的二进制编码左移1位后,用压缩方式标识(compress_type)代替左移后的最后一位。
[0180]
compress_type:取值为0(第一压缩方式标识)或1(第二压缩方式标识),分别对应步骤130的第一实现方式以及第二实现方式。
[0181]
以事件id 913000007为例。如913000007的二进制编码为:
[0182]
0011 0110 0110 1011 0100 0110 0100 0111。
[0183]
左移一位后:
[0184]
0110 1100 1101 0110 1000 1100 1000 1110。
[0185]
如步骤130采用第二实现方式,compress_type取值1,用1替代最后一位0,得到0110 1100 1101 0110 1000 1100 1000 1111。
[0186]
通过压缩方式标识,解析端就可以确认事件记录压缩数据所包含的数据中没有参数值的参数是第二类参数数据还是第三类参数数据。但是,在这之前,解析端还需要通过事件记录压缩数据所包含的参数是否有参数值来确认第一类参数数据。
[0187]
为了便于区分第一类参数数据,在步骤130的一种实现方式中,不使用压缩方式标识,为每类参数数据分别定义标识。分别定义对应第一类参数数据、第二类参数数据、第三类参数数据的三个参数类标识,解析端通过参数数据中所包含的参数类标识确认该参数数据属于哪一类。具体的,在步骤130的一种实现方式中,第一类参数数据还包括第一参数类
标识,第二类参数数据还包括第二参数类标识,第三类参数数据还包括第二参数类标识。
[0188]
例如,在一应用场景中,参数类标识被写入参数标识的二进制编码后生成参数tag1。
[0189]
定义第一参数类标识为00,第一参数类标识为01,第一参数类标识为10。
[0190]
第一类参数数据的二进制编码包括第一类参数数据的参数tag1以及参数值的二进制编码;
[0191]
第二类参数数据的二进制编码包括第二类参数数据的参数tag1;
[0192]
第三类参数数据的二进制编码包括第三类参数数据的参数tag1。
[0193]
每类参数数据的参数tag1根据该类参数数据对应的参数标识生成。
[0194]
参数tag1的定义如下:
[0195]
参数tag1=参数id<<2|参数类标识。(2)
[0196]
式(1)的含义是将参数id的二进制编码左移2位后,用参数类标识代替左移后的最后2位。
[0197]
进一步的,在步骤130的一种实现方式中,在使用压缩方式标识的基础上引入参数类标识。具体的,定义第一参数类标识以及第二参数类标识,在事件记录压缩数据中,第一类参数数据包括第一参数类标识,第二类参数数据包括第二参数类标识,第三类参数数据包括第二参数类标识。这样,数据解析端就可以基于参数类标识确认第一类参数数据,当参数数据包括第一参数类标识时,其为第一类参数数据。并进一步的,根据压缩方式标识确认第二类参数数据或第三类参数数据,当事件标识数据包含第一压缩方式标识时,包含第二参数类标识的参数数据为第二类参数数据;当事件标识数据包含第二压缩方式标识时,包含第二参数类标识的参数数据为第三类参数数据。
[0198]
进一步的,在实际应用场景中,事件记录压缩数据是以二进制编码形式保存并传输。在步骤130的一种实现方式中,将参数类标识写入参数标识的二进制编码以生成参数标识编码。具体的:
[0199]
第一类参数数据的二进制编码包括第一类参数标识编码,第一类参数标识编码为,用第一参数类标识的二进制编码代替第一类参数偏移编码的最后一位所生成的编码,其中,第一类参数偏移编码为将第一类参数的参数名的二进制编码左移1位后生成的编码;
[0200]
第二类参数数据的二进制编码包括第二类参数标识编码,第二类参数标识编码为,用第二参数类标识的二进制编码代替第二类参数偏移编码的最后一位所生成的编码,其中,第二类参数偏移编码为将第二类参数的参数名的二进制编码左移1位后生成的编码;
[0201]
第三类参数数据的二进制编码包括第三类参数标识编码,第三类参数标识编码为,用第二参数类标识的二进制编码代替第三类参数偏移编码的最后一位所生成的编码,其中,第三类参数偏移编码为将第三类参数的参数名的二进制编码左移1位后生成的编码。
[0202]
例如,在一应用场景中,定义参数标识编码为参数tag2,参数类标识被写入参数标识的二进制编码后生成参数tag2。参数tag2的思想与事件tag1的思想类似,是用参数id左移一位后的最后一位进行数据区分。参数tag2的定义如下:
[0203]
参数tag2=参数id<<1|data_type。(2)
[0204]
式(2)的含义是将参数id的二进制编码左移2位后,用参数类标识data_type代替左移后的最后2位。data_type用于区分参数数据类型,data_type为一位二进制数,0和1,取
值含义如下:
[0205]
当参数数据为第一类参数数据时,对应的data_type取0;
[0206]
当参数数据为第二类参数数据或者第三类参数数据时,对应的data_type取1。
[0207]
结合压缩方式标识(compress_type)可以得到如下关系:
[0208][0209][0210]
表1
[0211]
以事件描述a为例,采用步骤130的第二实现方式对事件描述a进行压缩:
[0212]
对于a类数据age:23,age的参数id为0,其二进制编码为:0000 0000;
[0213]
左移一位后为:0000 0000;
[0214]
因为age是a类数据,所以data_type的值为0,用0代替0,得到:0000 0000(age的参数tag2);
[0215]
对于b类数据不存储,所以什么都不用存;
[0216]
对于c类数据data,data的参数id为3,其二进制编码为:0000 0011;
[0217]
左移一位后:0000 0110;
[0218]
因为data是c类数据,所以data_type的值为1,用1代替0,得到0000 0111(data的参数tag2)。
[0219]
最终所有的数据都采用二进制形式进行存储。
[0220]
对于a类数据采用tag-value的形式进行完整数据存储。由于age的参数tag为00000000,age的参数值23的二进制编码为0001 0111。因此age的完整存储为:
[0221]
0000 0000 0001 0111。
[0222]
因此,事件描述a最终的压缩结果为:
[0223]
0110 1100 1101 0110 1000 1100 1000 1111 0000 0000 0001 0111 0000 0111。
[0224]
其中:
[0225]
0110 1100 1101 0110 1000 1100 1000 1111为事件tag1;
[0226]
0000 0000为age的参数tag2;
[0227]
0001 0111为age的实际数值23;
[0228]
0000 0111为data的参数tag2。
[0229]
可以理解的是,上述实施例中的部分或全部步骤骤或操作仅是示例,本技术实施例还可以执行其它操作或者各种操作的变形。此外,各个步骤可以按照上述实施例呈现的不同的顺序来执行,并且有可能并非要执行上述实施例中的全部操作。
[0230]
进一步的,基于本技术一实施例中提出的数据压缩方法,本技术一实施例还提出了一种数据压缩装置。图3所示为根据本技术数据压缩装置一实施例的结构示意图。如图3
所示,数据压缩装置300包括:
[0231]
事件记录获取模块310,其用于获取对应第一事件的第一事件记录,第一事件记录包括第一事件中已定义的一个或多个参数的参数名以及记录值;
[0232]
事件定义调用模块320,其用于调用对应第一事件的第一事件定义,第一事件定义包括第一事件中已定义的所有参数的参数名以及预设值;
[0233]
压缩模块330,其用于对比第一事件定义以及第一事件记录,根据对比结果生成第一事件记录压缩数据,其中,第一事件记录压缩数据包括:
[0234]
事件标识数据,其中,事件标识数据包括第一事件的事件标识;
[0235]
第一类参数数据,其中,第一类参数数据包括第一类参数的参数名以及记录值,第一类参数为,第一事件记录所包含的参数中,参数的记录值与预设值不同的参数;
[0236]
第二类参数数据或者第三类参数数据中的一类数据,其中:
[0237]
第二类参数数据包括第二类参数的参数名,第二类参数为,第一事件记录所包含的参数中,参数的记录值与预设值相同的参数;
[0238]
第三类参数数据包括第三类参数的参数名,第三类参数为,第一事件定义所包含的参数中,参数的记录值没有被记录在第一事件记录中的参数。
[0239]
进一步的,基于本技术一实施例中提出的数据解析方法,本技术一实施例还提出了一种数据解析装置.图4所示为根据本技术数据解析装置一实施例的结构示意图。如图4所示,数据解析装置400包括:
[0240]
数据获取模块410,其用于获取第一事件记录压缩数据,第一事件记录压缩数据为根据本技术实施例的数据压缩装置所生成的数据,第一事件记录对应第一事件;
[0241]
事件定义调用模块420,其用于调用对应第一事件的第一事件定义,第一事件定义包括第一事件中已定义的所有参数的参数名以及预设值;
[0242]
数据解析模块430,其用于根据第一事件定义解析第一事件记录压缩数据,包括:
[0243]
当第一事件记录压缩数据包括第二类参数数据时,针对第一事件记录压缩数据中记录参数标识但没有记录参数值的参数,以第一事件定义中预设值为参数值;
[0244]
或者,
[0245]
当第一事件记录压缩数据包括第三类参数数据时,针对第一事件记录压缩数据中没有记录参数标识的参数,以第一事件定义中预设值为参数值。
[0246]
进一步的,在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由访问方对器件编程来确定。由设计人员自行编程来把一个数字装置“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为
硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0247]
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0248]
在本技术实施例的描述中,为了描述的方便,描述装置时以功能分为各种模块/单元分别描述,各个模块/单元的划分仅仅是一种逻辑功能的划分,在实施本技术实施例时可以把各模块/单元的功能在同一个或多个软件和/或硬件中实现。
[0249]
具体的,本技术实施例所提出的装置在实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,检测模块可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0250]
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,asic),或,一个或多个数字信号处理器(digital singnal processor,dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,fpga)等。再如,这些模块可以集成在一起,以片上装置(system-on-a-chip,soc)的形式实现。
[0251]
本技术一实施例还提出了一种电子设备,电子设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发电子设备执行如本技术实施例所述的方法步骤。
[0252]
具体的,在本技术一实施例中,上述一个或多个计算机程序被存储在上述存储器中,上述一个或多个计算机程序包括指令,当上述指令被上述设备执行时,使得上述设备执
行本技术实施例所述的方法步骤。
[0253]
具体的,在本技术一实施例中,电子设备的处理器可以是片上装置soc,该处理器中可以包括中央处理器(central processing unit,cpu),还可以进一步包括其他类型的处理器。具体的,在本技术一实施例中,电子设备的处理器可以是pwm控制芯片。
[0254]
具体的,在本技术一实施例中,涉及的处理器可以例如包括cpu、dsp、微控制器或数字信号处理器,还可包括gpu、嵌入式神经网络处理器(neural-network process units,npu)和图像信号处理器(image signal processing,isp),该处理器还可包括必要的硬件加速器或逻辑处理硬件电路,如asic,或一个或多个用于控制本技术技术方案程序执行的集成电路等。此外,处理器可以具有操作一个或多个软件程序的功能,软件程序可以存储在存储介质中。
[0255]
具体的,在本技术一实施例中,电子设备的存储器可以是只读存储器(read-only memory,rom)、可存储静态信息和指令的其它类型的静态存储设备、随机存取存储器(random access memory,ram)或可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者还可以是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何计算机可读介质。
[0256]
具体的,在本技术一实施例中,处理器可以和存储器可以合成一个处理装置,更常见的是彼此独立的部件,处理器用于执行存储器中存储的程序代码来实现本技术实施例所述方法。具体实现时,该存储器也可以集成在处理器中,或者,独立于处理器。
[0257]
进一步的,本技术实施例阐明的设备、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
[0258]
本领域内的技术人员应明白,本技术实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
[0259]
在本技术所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。
[0260]
具体的,本技术一实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行本技术实施例提供的方法。
[0261]
本技术一实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行本技术实施例提供的方法。
[0262]
本技术中的实施例描述是参照根据本技术实施例的方法、设备(装置)、和计算机
程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0263]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0264]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0265]
还需要说明的是,本技术实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示单独存在a、同时存在a和b、单独存在b的情况。其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a和b,a和c,b和c或a和b和c,其中a,b,c可以是单个,也可以是多个。
[0266]
本技术实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0267]
本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0268]
本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0269]
本领域普通技术人员可以意识到,本技术实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0270]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、
装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0271]
以上所述,仅为本技术的具体实施方式,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜