CN112698877B - 数据处理方法及*** - Google Patents

数据处理方法及*** Download PDF

Info

Publication number
CN112698877B
CN112698877B CN201911000297.0A CN201911000297A CN112698877B CN 112698877 B CN112698877 B CN 112698877B CN 201911000297 A CN201911000297 A CN 201911000297A CN 112698877 B CN112698877 B CN 112698877B
Authority
CN
China
Prior art keywords
data
field name
category
offset
determining
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
CN201911000297.0A
Other languages
English (en)
Other versions
CN112698877A (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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN201911000297.0A priority Critical patent/CN112698877B/zh
Publication of CN112698877A publication Critical patent/CN112698877A/zh
Application granted granted Critical
Publication of CN112698877B publication Critical patent/CN112698877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据处理方法、***、计算机设备及可读存储介质,该方法包括:获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;检测与所述每个字段名对应的多个数据的数据类别;根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。本发明能够当数据量大时,极大的加快配置表的解析速度,降低配置表的解析时间,缩短数据的读取时间,进而提升用户体验。

Description

数据处理方法及***
技术领域
本发明涉及通信技术领域,具体涉及一种数据处理方法及***。
背景技术
随着科技的迅速发展,用户对电子设备显示界面的加载速度要求也越来越高。电子设备显示界面的加载需要对文件进行读取,此时文件的读取速度直接影响了电子设备显示界面的加载速度。然,文件的读取速度很大程度上取决于配置表的解析速度。现有的配置表解析方法包括Csv,Json和BinaryFormatter,其中,Json和Csv都是字符串形式的,解析时间相当长,且占用的内存高;BinaryFormatter是一种C#的序列化和反序列化工具,当数据量小时,解析时间并未有显著的变化。现有的配置表解析方法,当数据量大时,配置表的解析时间大大加大,导致数据读取时间长,极大的降低了用户体验。
发明内容
本发明的目的在于提供一种数据处理方法、***、计算机设备及可读存储介质,能够极大的提升配置表的解析速度,降低解析时间,缩短数据的读取时间,提升用户体验。
根据本发明的一个方面,提供了一种数据处理方法,该方法包括如下步骤:
获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;
检测与所述每个字段名对应的多个数据的数据类别;
根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;
根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;
根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。
可选的,所述数据类别包括数字类别和字符串类别,所述检测与所述每个字段名对应的多个数据的数据类别的步骤,包括:
当所述多个数据均为数字时,则所述多个数据的数据类别为数字类别;
当所述多个数据均为字符串时,则所述多个数据的数据类别为字符串类别。
可选的,所述根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型的步骤,包括:
当所述多个数据的数据类别为所述数字类别时,将所述多个数据进行比较以获取所述多个数据中的最大值和最小值;
分别计算并保存所述多个数据与所述最小值的差值;
根据所述最大值与所述最小值之间的最大差值确定所述最大差值的范围;
根据所述最大差值的范围确定所述多个数据的数据类型。
可选的,所述根据所述最大差值的范围确定所述多个数据的数据类型的步骤,包括:
判断所述多个数据的取值范围;
根据所述多个数据的取值范围确定所述多个数据的预设数据类型;
根据所述最大差值的范围更新所述预设数据类型至所述数据类型。
可选的,所述根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型的步骤,还包括:
当所述多个数据的数据类别为字符串类别时,将所述多个数据进行对比以将相同的数据进行分类以获取多组数据;
统计每组数据中的数据个数;
当所述数据个数大于预设值时,将所述数据标记为公用字符串数据;
当所述数据个数小于或等于所述预设值时,将所述数据标记为非公用字符串数据。
可选地,所述根据所述字段名与所述偏移量将所述多个数据加载至所述内存中的步骤,包括:
根据所述字段名、所述偏移量、所述最小值与所述差值确定所述多个数据加载至所述内存的逻辑结构;
根据所述逻辑结构将所述多个数据与所述最小值的差值依次加载至所述内存中。
可选地,所述根据所述字段名与所述偏移量将所述多个数据加载至所述内存中的步骤,包括:
根据所述字段名和所述偏移量确定所述公用字符串与所述非公用字符串加载至所述内存的逻辑结构;
根据所述逻辑结构将所述公用字符串加载至所述内存中。
为了实现上述目的,本发明还提供一种数据处理***,该***具体包括以下组成部分:
获取模块,用于获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;
检测模块,用于检测与所述每个字段名对应的多个数据的数据类别;
确定模块,用于根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;
计算模块,用于根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;
加载模块,用于根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。
为了实现上述目的,本发明还提供一种计算机设备,该计算机设备具体包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述介绍的数据处理方法的步骤。
为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述介绍的数据处理方法的步骤。
本发明提供的数据处理方法、***、计算机设备及可读存储介质,获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;检测与所述每个字段名对应的多个数据的数据类别;根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。通过本发明实施例,能够极大的提升配置表的解析速度,降低解析时间,缩短数据的读取时间,进而提升用户体验。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的数据处理方法的一种可选的流程示意图;
图2为所述图1中步骤S104的一种可选的具体流程示意图;
图3为所述图2中步骤S206的一种可选的具体流程示意图;
图4为所述图1中步骤S104的另一种可选的具体流程示意图;
图5为所述图1中步骤S108的一种可选的具体流程示意图;
图6为所述图1中步骤S108的另一种可选的具体流程示意图;
图7为一种可选的多个数据的物理内存示意图;
图8为一种可选的所述多个数据的数据结构图;
图9为本发明实施例提供的数据处理***的一种可选的程序模块示意图;
图10为本发明实施例提供的计算机设备的一种可选的硬件架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明提供的数据处理方法进行说明。
图1为本发明数据处理方法的一种可选的流程示意图,可以理解,本发明实施例中的流程图不用于对执行步骤的顺序进行限定。下面以数据处理装置为执行主体进行示例性描述,所述数据处理装置可以为计算机设备,所述计算机设备可以是移动电话、平板个人计算机(tablet personal computer)、膝上型计算机(laptop computer)、服务器等具有数据传输功能的设备。如图1所示,该方法具体包括以下步骤:
步骤S100:获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据。所述多个数据的数据类别可以为数字类别,也可以为字符串类别。
需要说明的是,所述数据类别用于区分数据为数字还是字符串。当数据为数字时,则所述数据的数据类别为数字类别;当数据包括字母或符号时,则所述数据的数据类别为字符串类别。例如:数据为123,则所述数据的数据类别为数字类别;数据为ab123或123!$或a12!或abc@,则所述数据的数据类别为字符串类别。
示例性地,请参阅表1,若配置表中存储有字段名1与字段名2,所述字段名1所属的列包括多个数据,依次为:250、300、300、350与275,所述字段名2所属的列也包括多个数据,依次为:“Hello world!”、“student”、“Hello world!”、“Hello world!”与“teacher”,则获取所述字段名1、所述字段名1下的多个数据、所述字段名2与所述字段名2下的多个数据。
表1
字段名1 字段名2
250 Hello world!
300 student
300 Hello world!
350 Hello world!
275 teacher
步骤S102:检测与所述每个字段名对应的多个数据的数据类别。
根据字段名的不同,每个字段名下的所有数据为同一种数据类别,例如,一个字段名下的所有数据均为数字类别或者均为字符串类别。示例性地,请继续参阅表1,与字段名1对应的多个数据250、300、300、350与275为数字,则检测与所述字段名1对应的多个数据的数据类别为数字类别;与字段名2对应的多个数据“Hello world!”、“student”、“Helloworld!”、“Hello world!”与“teacher”均为字符串,则检测与所述字段名2对应的多个数据的数据类别为字符串类别。
步骤S104:根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型。所述数据类型用于确定数据的存储形式,以将数据存储到计算机内存中。其中,所述数据类型包括Byte、Ushort、Uint、Ulong型、公用字符串与非公用字符串。所述多个数据间的数据关系指的是数据之间的大小关系或数据之间的异同关系。例如:数字类别的数据间的数据关系为大小关系,也即数据之间的大小;字符串类别的数据间的数据关系为异同关系,也即字符串数据之间的相同或不同。
需要说明的是,根据数据类别的不同,数据有不同的数据类型。例如:数字类别的数据,对应的数据类型包括Byte、Ushort、Uint和Ulong型;字符串类型的数据,对应的数据类型包括公用字符串和非公用字符串。
示例性地,请继续参阅表1,若为字段名1,则根据数字类别与250、300、300、350与275之间的大小关系确定所述字段名1对应的多个数据的数据类型。若为字段名2,则根据字符串类别与“Hello world!”、“student”、“Hello world!”、“Hello world!”与“teacher”之间的异同关系,确定与所述字段名2对应的多个数据的数据类型。
步骤S106:根据所述数据类型及预设算法计算所述多个数据在内存的偏移量。
示例性地,Byte型偏移1个字节,Ushort型偏移2个字节,Uint型偏移4个字节,Ulong型偏移8个字节,公用字符串根据所述公用字符串的实际字节数偏移对应的字节,非公用字符串偏移8个字节。
需要说明的是,通过计算所述多个数据在内存的偏移量,以确定所述多个数据在内存的存储位置。
步骤S108:根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存。
示例性地,请继续参阅表1,根据确定的与所述字段名1或所述字段名2对应的多个数据的数据类型以及预设算法计算所述多个数据在内存的偏移量。然后,根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存的对应位置。
在示例性的实施例中,如图2所示,所述步骤S104可以包括步骤S200~S206。
步骤S200:当所述多个数据的数据类别为所述数字类别时,将所述多个数据进行比较以获取所述多个数据中的最大值和最小值。
示例性地,参阅表1,针对字段名1和与字段名1对应的多个数据,所述多个数据的数据类别为数字类别,将所述多个数据250、300、300、350与275进行比较,获取最大值为350,最小值为250。
步骤S202:分别计算并保存所述多个数据与所述最小值的差值。
示例性地,分别计算250、300、300、350、275与最小值250之间的差值,经计算,差值分别为0、50、50、100、25,并将该些差值保存。当然,在另一实施例中,可以只计算300、300、350、275与最小值250之间的差值,并保存所述差值。
步骤S204:根据所述最大值与所述最小值之间的最大差值确定所述最大差值的范围。
示例性地,根据计算出的差值0、50、50、100、25,经比较最大差值为100,确定所述最大差值100所处的差值范围。需要说明的是,所述差值范围为预先设定,例如:0~255;0~65535;0~4294967295;0~18446744073709551615。通过判断所述最大差值100,确定所述最大差值100所处的差值范围为0~255。
步骤S206:根据所述最大差值的范围确定所述多个数据的数据类型。
示例性地,所述数据处理装置中预设有数据范围-数据类型映射表,将所述最大差值的范围与所述数据范围-数据类型映射表中的预设数据范围进行匹配,以获取与所述最大差值范围对应的数据类型。例如:差值范围0~255对应的数据类型为Byte型,则与所述字段名1对应的多个数据的数据类型为Byte型。
在示例性的实施例中,如图3所示,所述步骤S206可以包括步骤S300~S304。
步骤S300:判断所述多个数据的取值范围。
示例性地,继续参阅表1,针对所述字段名1和与所述字段名1对应的多个数据250、300、300、350、275,判断所述多个数据的取值范围。具体地,将250、300、300、350、275分别与预先设定的取值范围进行比较,所述取值范围包括:0~255;0~65535;0~4294967295;0~18446744073709551615,由于最大值350大于255,小于65535,则与所述字段名1对应的多个数据处于0~65535的取值范围。
步骤S302:根据所述多个数据的取值范围确定所述多个数据的预设数据类型。
示例性地,将所述多个数据的取值范围与所述预设的数据范围-数据类型映射表进行匹配,以获取与所述多个数据的取值范围对应的数据类型。例如:取值范围0~65535对应的数据类型为Ushort型,则与所述字段名1对应的多个数据的预设数据类型为Ushort型。
步骤S304:根据所述最大差值的范围更新所述预设数据类型至所述数据类型。
示例性地,根据与字段名1对应的多个数据的最大差值的范围确定的数据类型为Byte型,所述多个数据的预设数据类型为Ushort型,则将所述预设数据类型Ushort型更新至Byte型。
在示例性的实施例中,如图4所示,所述步骤S104还可以包括步骤S400~S406。
步骤S400:当所述多个数据的数据类别为字符串类别时,将所述多个数据进行对比以将相同的数据进行分类以获取多组数据。
示例性地,请参阅表1,针对字段名2和与所述字段名2对应的多个数据:“Helloworld!”、“student”、“Hello world!”、“Hello world!”与“teacher”,经过对比,将所述多个数据分为“Hello world!”、“student”与“teacher”三组数据。
步骤S402:统计每组数据中的数据个数。
示例性地,统计“Hello world!”、“student”与“teacher”每组数据中的数据个数,统计结果为:“Hello world!”的数据个数为3个,“student”的数据个数为1个,“teacher”的数据个数为1个。
步骤S404:当所述数据个数大于预设值时,将所述数据标记为公用字符串数据。
步骤S406:当所述数据个数小于或等于所述预设值时,将所述数据标记为非公用字符串数据。
示例性地,所述数据处理装置预先设置有预设值,当一组数据中的数据个数超过该预设值时,则将该组数据标记为公用字符串。具体地,所述数据处理装置预先设置有预设值2,“Hello world!”的数据个数为3个,超过2,则所述“Hello world!”为公用字符串。“student”与“teacher”的数据个数均为1个,则所述“student”与“teacher”均为非公用字符串。
在示例性的实施例中,如图5所示,所述步骤S108可以包括步骤S500~S502。
步骤S500:根据所述字段名、所述偏移量、所述最小值与所述差值确定所述多个数据加载至所述内存的逻辑结构。
步骤S502:根据所述逻辑结构将所述多个数据与所述最小值的差值依次加载至所述内存中。
示例性地,请参阅表1,针对字段名1和与所述字段名1对应的多个数据,所述多个数据中的最小值为250,所述多个数据与所述最小值的差值分别为0、50、50、100、25,所述多个数据的偏移量为1个字节,则将所述最小值与所述字段名1保存,并根据所述差值按照所述偏移量加载至所述内存的逻辑生成所述多个数据加载至所述内存的逻辑结构。具体地,将0、50、50、100、25均按照1个字节的偏移量加载至内存的逻辑生成所述多个数据加载至所述内存的逻辑结构,并保存所述多个数据的字段名1与所述多个数据的最小值。
在一较佳实施例中,当接收到用户的读取指令时,根据所述字段名1将所述差值加上所述最小值得到所述字段名1中对应的数据,并将所述数据显示。
参阅图7,示出了物理内存示意图,根据不同的数据类型偏移对应的字节数,以加载配置表中的数据。
参阅图8,示出了数据结构图。示例性地,在每个表头定各个数据类别的长度,其中数字类别长度为4位struct长度,字符串类别长度为4位string长度。然后,根据不同的数据类别,将所述多个数据加载至内存的对应位置。例如:将数字类别的数据加载至struct数据位置,将字符串类别的数据加载至非公用字符串数据位置或公用字符串数据位置。
在示例性的实施例中,如图6所示,所述步骤S108还可以包括步骤S600~S602。
步骤S600:根据所述字段名和所述偏移量确定所述公用字符串与所述非公用字符串加载至所述内存的逻辑结构。
步骤S602:根据所述逻辑结构将所述公用字符串加载至所述内存中。
示例性地,请继续参阅表1及图8,针对字段名2和与所述字段名2对应的多个数据,所述多个数据中的公用字符串为“Hello world!”,非公用字符串为“student”和“teacher”,将所述字段名2保存。然后,将所述非公用字符串“student”和“teacher”按照所述预设的非公用字符串偏移量8个字节生成所述非公用字符串加载至内存的逻辑结构,以根据所述逻辑结构将所述非公用字符串“student”和“teacher”加载至所述内存的非公用字符串位置。计算所述公用字符串“Hello world!”的字节数,并将所述公用字符串“Helloworld!”按照所述“Hello world!”的字节数生成所述公用字符串加载至内存的逻辑结构,以根据所述逻辑结构将所述公用字符串加载至所述内存的公用字符串位置。
基于上述实施例提供的数据处理方法,本实施例中提供一种数据处理***,所述数据处理***可以应用于计算机设备中。具体地,图9示出了该数据处理***的可选的结构框图,该数据处理***被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合描述数据处理***在存储介质中的执行过程,以下描述将具体介绍本实施例各程序模块的功能。
如图9所示,数据处理***具体包括以下组成部分:
获取模块200,用于获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据。所述多个数据的数据类别可以为数字类别,也可以为字符串类别。
需要说明的是,所述数据类别用于区分数据为数字还是字符串。当数据为数字时,则所述数据的数据类别为数字类别;当数据包括字母或符号时,则所述数据的数据类别为字符串类别。例如:数据为123,则所述数据的数据类别为数字类别;数据为ab123或123!$或a12!或abc@,则所述数据的数据类别为字符串类别。
示例性地,请参阅表1,若配置表中存储有字段名1与字段名2,所述字段名1所属的列包括多个数据,依次为:250、300、300、350与275,所述字段名2所属的列也包括多个数据,依次为:“Hello world!”、“student”、“Hello world!”、“Hello world!”与“teacher”,则所述获取模块200获取所述字段名1、所述字段名1下的多个数据、所述字段名2与所述字段名2下的多个数据。
表1
字段名1 字段名2
250 Hello world!
300 student
300 Hello world!
350 Hello world!
275 teacher
检测模块201,用于检测与所述每个字段名对应的多个数据的数据类别。
根据字段名的不同,每个字段名下的所有数据为同一种数据类别,例如,一个字段名下的所有数据均为数字类别或者均为字符串类别。示例性地,请继续参阅表1,与字段名1对应的多个数据250、300、300、350与275为数字,则所述检测模块201检测与所述字段名1对应的多个数据的数据类别为数字类别;与字段名2对应的多个数据“Hello world!”、“student”、“Hello world!”、“Hello world!”与“teacher”均为字符串,则检测与所述字段名2对应的多个数据的数据类别为字符串类别。
确定模块202,用于根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型。所述数据类型用于确定数据的存储形式,以将数据存储到计算机内存中。其中,所述数据类型包括Byte、Ushort、Uint、Ulong型、公用字符串与非公用字符串。所述多个数据间的数据关系指的是数据之间的大小关系或数据之间的异同关系。例如:数字类别的数据间的数据关系为大小关系,也即数据之间的大小;字符串类别的数据间的数据关系为异同关系,也即字符串数据之间的相同或不同。
需要说明的是,根据数据类别的不同,数据有不同的数据类型。例如:数字类别的数据,对应的数据类型包括Byte、Ushort、Uint和Ulong型;字符串类型的数据,对应的数据类型包括公用字符串和非公用字符串。
示例性地,请继续参阅表1,若为字段名1,则所述确定模块202根据数字类别与250、300、300、350与275之间的大小关系确定所述字段名1对应的多个数据的数据类型。若为字段名2,则根据字符串类别与“Hello world!”、“student”、“Hello world!”、“Helloworld!”与“teacher”之间的异同关系,所述确定模块202确定与所述字段名2对应的多个数据的数据类型。
计算模块203,用于根据所述数据类型及预设算法计算所述多个数据在内存的偏移量。
示例性地,Byte型偏移1个字节,Ushort型偏移2个字节,Uint型偏移4个字节,Ulong型偏移8个字节,公用字符串根据所述公用字符串的实际字节数偏移对应的字节,非公用字符串偏移8个字节。
需要说明的是,通过计算所述多个数据在内存的偏移量,以确定所述多个数据在内存的存储位置。
加载模块204,用于根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存。
示例性地,请继续参阅表1,根据确定的与所述字段名1或所述字段名2对应的多个数据的数据类型以及预设算法计算所述多个数据在内存的偏移量。然后,所述加载模块204根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存的对应位置。
在示例性的实施例中,所述确定模块202还包括比较单元、计算单元和第一确定单元。
所述比较单元,用于当所述多个数据的数据类别为所述数字类别时,将所述多个数据进行比较以获取所述多个数据中的最大值和最小值。
示例性地,参阅表1,针对字段名1和与字段名1对应的多个数据,所述多个数据的数据类别为数字类别,所述比较单元将所述多个数据250、300、300、350与275进行比较,获取最大值为350,最小值为250。
所述计算单元,用于分别计算并保存所述多个数据与所述最小值的差值。
示例性地,所述计算单元分别计算250、300、300、350、275与最小值250之间的差值,经计算,差值分别为0、50、50、100、25,并将该些差值保存。当然,在另一实施例中,可以只计算300、300、350、275与最小值250之间的差值,并保存所述差值。
所述第一确定单元,用于根据所述最大值与所述最小值之间的最大差值确定所述最大差值的范围。
示例性地,根据计算出的差值0、50、50、100、25,经比较最大差值为100,所述第一确定单元确定所述最大差值100所处的差值范围。需要说明的是,所述差值范围为预先设定,例如:0~255;0~65535;0~4294967295;0~18446744073709551615。通过判断所述最大差值100,确定所述最大差值100所处的差值范围为0~255。
所述第一确定单元,还用于根据所述最大差值的范围确定所述多个数据的数据类型。
示例性地,所述数据处理***中预设有数据范围-数据类型映射表,所述第一确定单元将所述最大差值的范围与所述数据范围-数据类型映射表中的预设数据范围进行匹配,以获取与所述最大差值范围对应的数据类型。例如:差值范围0~255对应的数据类型为Byte型,则与所述字段名1对应的多个数据的数据类型为Byte型。
在示例性的实施例中,所述确定模块202还包括判断单元与更新单元。
所述判断单元,用于判断所述多个数据的取值范围。
示例性地,继续参阅表1,针对所述字段名1和与所述字段名1对应的多个数据250、300、300、350、275,所述判断单元判断所述多个数据的取值范围。具体地,将250、300、300、350、275分别与预先设定的取值范围进行比较,所述取值范围包括:0~255;0~65535;0~4294967295;0~18446744073709551615,由于最大值350大于255,小于65535,则与所述字段名1对应的多个数据处于0~65535的取值范围。
所述第一确定单元,还用于根据所述多个数据的取值范围确定所述多个数据的预设数据类型。
示例性地,所述第一确定单元将所述多个数据的取值范围与所述预设的数据范围-数据类型映射表进行匹配,以获取与所述多个数据的取值范围对应的数据类型。例如:取值范围0~65535对应的数据类型为Ushort型,则与所述字段名1对应的多个数据的预设数据类型为Ushort型。
所述更新单元,用于根据所述最大差值的范围更新所述预设数据类型至所述数据类型。
示例性地,根据与字段名1对应的多个数据的最大差值的范围确定的数据类型为Byte型,所述多个数据的预设数据类型为Ushort型,则所述更新单元将所述预设数据类型Ushort型更新至Byte型。
在示例性的实施例中,所述确定模块202还包括分类单元、统计单元及标记单元。
所述分类单元,用于当所述多个数据的数据类别为字符串类别时,将所述多个数据进行对比以将相同的数据进行分类以获取多组数据。
示例性地,请参阅表1,针对字段名2和与所述字段名2对应的多个数据:“Helloworld!”、“student”、“Hello world!”、“Hello world!”与“teacher”,经过对比,所述分类单元将所述多个数据分为“Hello world!”、“student”与“teacher”三组数据。
所述统计单元,用于统计每组数据中的数据个数。
示例性地,所述统计单元统计“Hello world!”、“student”与“teacher”每组数据中的数据个数,统计结果为:“Hello world!”的数据个数为3个,“student”的数据个数为1个,“teacher”的数据个数为1个。
所述标记单元,用于当所述数据个数大于预设值时,将所述数据标记为公用字符串数据。
所述标记单元,还用于当所述数据个数小于或等于所述预设值时,将所述数据标记为非公用字符串数据。
示例性地,所述数据处理***预先设置有预设值,当一组数据中的数据个数超过该预设值时,则所述标记单元将该组数据标记为公用字符串。具体地,所述数据处理***预先设置有预设值2,“Hello world!”的数据个数为3个,超过2,则所述标记单元标记所述“Hello world!”为公用字符串。“student”与“teacher”的数据个数均为1个,则所述标记单元标记所述“student”与“teacher”均为非公用字符串。
在示例性的实施例中,所述加载模块204包括第二确定单元及加载单元。
所述第二确定单元,用于根据所述字段名、所述偏移量、所述最小值与所述差值确定所述多个数据加载至所述内存的逻辑结构。
所述加载单元,用于根据所述逻辑结构将所述多个数据与所述最小值的差值依次加载至所述内存中。
示例性地,请参阅表1,针对字段名1和与所述字段名1对应的多个数据,所述多个数据中的最小值为250,所述多个数据与所述最小值的差值分别为0、50、50、100、25,所述多个数据的偏移量为1个字节,则将所述最小值与所述字段名1保存,并根据所述差值按照所述偏移量加载至所述内存的逻辑生成所述多个数据加载至所述内存的逻辑结构。具体地,将0、50、50、100、25均按照1个字节的偏移量加载至内存的逻辑生成所述多个数据加载至所述内存的逻辑结构,并保存所述多个数据的字段名1与所述多个数据的最小值。
在一较佳实施例中,当接收到用户的读取指令时,根据所述字段名1将所述差值加上所述最小值得到所述字段名1中对应的数据,并将所述数据进行显示。
参阅图7,示出了物理内存示意图,根据不同的数据类型偏移对应的字节数,以将配置表中的数据进行存储。
参阅图8,示出了数据结构图。示例性地,在每个表头定各个数据类别的长度,其中数字类别长度为4位struct长度,字符串类别长度为4位string长度。然后,根据不同的数据类别,将所述多个数据加载至内存的对应位置。例如将数字类别的数据加载至struct数据位置,将字符串类别的数据加载至非公用字符串数据位置或公用字符串数据位置。
在示例性的实施例中,所述第二确定单元,还用于根据所述字段名和所述偏移量确定所述公用字符串与所述非公用字符串加载至所述内存的逻辑结构。
所述加载单元,还用于根据所述逻辑结构将所述公用字符串加载至所述内存中。
示例性地,请继续参阅表1及图8,针对字段名2和与所述字段名2对应的多个数据,所述多个数据中的公用字符串为“Hello world!”,非公用字符串为“student”和“teacher”,将所述字段名2保存。然后,将所述非公用字符串“student”和“teacher”按照所述预设的非公用字符串偏移量8个字节生成所述非公用字符串加载至内存的逻辑结构,以根据所述逻辑结构将所述非公用字符串“student”和“teacher”加载至所述内存的非公用字符串位置。计算所述公用字符串“Hello world!”的字节数,并将所述公用字符串“Helloworld!”按照所述“Hello world!”的字节数生成所述公用字符串加载至内存的逻辑结构,以根据所述逻辑结构将所述公用字符串加载至所述内存的公用字符串位置。
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图10所示,本实施例的计算机设备30至少包括但不限于:可通过***总线相互通信连接的存储器301、处理器302。需要指出的是,图10仅示出了具有组件301-302的计算机设备30,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器301(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器301可以是计算机设备30的内部存储单元,例如该计算机设备30的硬盘或内存。在另一些实施例中,存储器301也可以是计算机设备30的外部存储设备,例如该计算机设备30上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器301还可以既包括计算机设备30的内部存储单元也包括其外部存储设备。在本实施例中,存储器301通常用于存储安装于计算机设备30的操作***和各类应用软件,例如实施例数据处理的数据处理***的程序代码等。此外,存储器301还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器302在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器302通常用于控制计算机设备30的总体操作。
具体的,在本实施例中,处理器302用于执行处理器302中存储的数据处理方法的程序,所述数据处理方法的程序被执行时实现如下步骤:
获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;
检测与所述每个字段名对应的多个数据的数据类别;
根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;
根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;
根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。
上述方法步骤的具体实施例过程可参见上述实施例,本实施例在此不再重复赘述。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;
检测与所述每个字段名对应的多个数据的数据类别;
根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;
根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;
根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。
上述方法步骤的具体实施例过程可参见上述实施例,本实施例在此不再重复赘述。
本实施例提供的数据处理方法、***、计算机设备及可读存储介质,获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;检测与所述每个字段名对应的多个数据的数据类别;根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。通过本发明实施例,能够极大的提升配置表的解析速度,降低解析时间,缩短数据的读取时间,进而提升用户体验。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种数据处理方法,其特征在于,所述方法包括:
获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;
检测与所述每个字段名对应的多个数据的数据类别,其中,所述数据类别包括数字类别和字符串类别;
根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;
根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;
根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。
2.如权利要求1所述的数据处理方法,其特征在于,所述检测与所述每个字段名对应的多个数据的数据类别的步骤,包括:
当所述多个数据均为数字时,则所述多个数据的数据类别为数字类别;
当所述多个数据均为字符串时,则所述多个数据的数据类别为字符串类别。
3.如权利要求2所述的数据处理方法,其特征在于,所述根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的目标数据类型的步骤,包括:
当所述多个数据的数据类别为所述数字类别时,将所述多个数据进行比较以获取所述多个数据中的最大值和最小值;
分别计算并保存所述多个数据与所述最小值的差值;
根据所述最大值与所述最小值之间的最大差值确定所述最大差值的范围;
根据所述最大差值的范围确定所述多个数据的数据类型。
4.如权利要求3所述的数据处理方法,其特征在于,所述根据所述最大差值的范围确定所述多个数据的数据类型的步骤,包括:
判断所述多个数据的取值范围;
根据所述多个数据的取值范围确定所述多个数据的预设数据类型;
根据所述最大差值的范围更新所述预设数据类型至所述数据类型。
5.如权利要求2所述的数据处理方法,其特征在于,所述根据所述多个数据的类别与所述多个数据间的数据关系确定所述多个数据的数据类型的步骤,还包括:
当所述多个数据的数据类别为字符串类别时,将所述多个数据进行对比以将相同的数据进行分类以获取多组数据;
统计每组数据中的数据个数;
当所述数据个数大于预设值时,将所述数据标记为公用字符串数据;
当所述数据个数小于或等于所述预设值时,将所述数据标记为非公用字符串数据。
6.如权利要求3所述的数据处理方法,其特征在于,所述根据所述字段名与所述偏移量将所述多个数据加载至所述内存中的步骤,包括:
根据所述字段名、所述偏移量、所述最小值与所述差值确定所述多个数据加载至所述内存的逻辑结构;
根据所述逻辑结构将所述多个数据与所述最小值的差值依次加载至所述内存中。
7.如权利要求5所述的数据处理方法,其特征在于,所述根据所述字段名与所述偏移量将所述多个数据加载至所述内存中的步骤,包括:
根据所述字段名和所述偏移量确定所述公用字符串与所述非公用字符串加载至所述内存的逻辑结构;
根据所述逻辑结构将所述公用字符串加载至所述内存中。
8.一种数据处理***,其特征在于,所述***包括:
获取模块,用于获取用户上传的配置表,并获取所述配置表中的至少一个字段名和与每个字段名对应的多个数据;
检测模块,用于检测与所述每个字段名对应的多个数据的数据类别,其中,所述数据类别包括数字类别和字符串类别;
确定模块,用于根据所述多个数据的数据类别与所述多个数据间的数据关系确定所述多个数据的数据类型;
计算模块,用于根据所述数据类型及预设算法计算所述多个数据在内存的偏移量;
加载模块,用于根据所述字段名、所述多个数据间的数据关系与所述偏移量将所述多个数据加载至所述内存中。
9.一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项的所述数据处理方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项的所述数据处理方法的步骤。
CN201911000297.0A 2019-10-21 2019-10-21 数据处理方法及*** Active CN112698877B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911000297.0A CN112698877B (zh) 2019-10-21 2019-10-21 数据处理方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911000297.0A CN112698877B (zh) 2019-10-21 2019-10-21 数据处理方法及***

Publications (2)

Publication Number Publication Date
CN112698877A CN112698877A (zh) 2021-04-23
CN112698877B true CN112698877B (zh) 2023-07-14

Family

ID=75504501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911000297.0A Active CN112698877B (zh) 2019-10-21 2019-10-21 数据处理方法及***

Country Status (1)

Country Link
CN (1) CN112698877B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116795831B (zh) * 2022-12-26 2024-06-28 慧之安信息技术股份有限公司 一种时序数据条目的数量维护方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511843A (zh) * 2014-09-22 2016-04-20 普天信息技术有限公司 一种生成应用程序界面的方法和装置
WO2018054200A1 (zh) * 2016-09-26 2018-03-29 上海泓智信息科技有限公司 文件读取方法和装置
CN108897582A (zh) * 2018-06-21 2018-11-27 珠海市君天电子科技有限公司 界面加载方法、装置、电子设备、服务器,以及存储介质
CN109582390A (zh) * 2018-11-29 2019-04-05 上海哔哩哔哩科技有限公司 基于开发配置表的游戏数据生成方法、装置和存储介质
CN109885395A (zh) * 2019-01-14 2019-06-14 珠海金山网络游戏科技有限公司 一种游戏配置表加载内存优化方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511843A (zh) * 2014-09-22 2016-04-20 普天信息技术有限公司 一种生成应用程序界面的方法和装置
WO2018054200A1 (zh) * 2016-09-26 2018-03-29 上海泓智信息科技有限公司 文件读取方法和装置
CN108897582A (zh) * 2018-06-21 2018-11-27 珠海市君天电子科技有限公司 界面加载方法、装置、电子设备、服务器,以及存储介质
CN109582390A (zh) * 2018-11-29 2019-04-05 上海哔哩哔哩科技有限公司 基于开发配置表的游戏数据生成方法、装置和存储介质
CN109885395A (zh) * 2019-01-14 2019-06-14 珠海金山网络游戏科技有限公司 一种游戏配置表加载内存优化方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种对 Struts 配置文件加载过程的改进方法;郑若颖;《大众科技》;20071231;全文 *

Also Published As

Publication number Publication date
CN112698877A (zh) 2021-04-23

Similar Documents

Publication Publication Date Title
CN108388598B (zh) 电子装置、数据存储方法及存储介质
US11714921B2 (en) Image processing method with ash code on local feature vectors, image processing device and storage medium
WO2022142551A1 (zh) 表单处理方法、装置、介质及计算机设备
CN113157854B (zh) Api的敏感数据泄露检测方法及***
CN112181430B (zh) 代码变更统计方法、装置、电子设备及存储介质
CN110705602A (zh) 大规模数据聚类方法、装置及计算机可读存储介质
CN112698877B (zh) 数据处理方法及***
WO2019119635A1 (zh) 种子用户拓展方法、电子设备及计算机可读存储介质
CN113392455B (zh) 基于深度学习的户型图比例尺检测方法、装置及电子设备
CN114998432A (zh) 一种基于YOLOv5的电路板检测点定位方法
CN112396048B (zh) 图片信息提取方法、装置、计算机设备及存储介质
CN112101024B (zh) 基于app信息的目标对象识别***
CN109388999B (zh) 一种条形码识别方法及装置
CN107077617B (zh) 指纹提取方法及装置
CN112163409A (zh) 一种相似文档检测方法、***、终端设备及计算机可读存储介质
CN109388685B (zh) 将规划行业使用的空间数据进行入库的方法和装置
CN111177387A (zh) 用户名单信息处理方法、电子装置及计算机可读存储介质
CN110766168A (zh) 数据处理方法、终端、装置及存储介质
CN115203364A (zh) 软件故障反馈处理方法、装置、设备及可读存储介质
CN115452101A (zh) 一种仪表检定方法、装置、设备及介质
CN109977992B (zh) 电子装置、批量注册行为的识别方法和存储介质
CN113869455A (zh) 无监督聚类方法、装置、电子设备及介质
CN118037472B (zh) 财务数据处理方法及相关装置
CN111404721B (zh) 基于web的模型训练过程数据可视化处理方法、装置、设备
CN112148355B (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
GR01 Patent grant
GR01 Patent grant