数据处理方法及装置的制造方法

文档序号:9471368阅读:252来源:国知局
数据处理方法及装置的制造方法
【技术领域】
[0001] 本发明涉及计算机领域,具体而言,涉及一种数据处理方法及装置。
【背景技术】
[0002] 目前,生活中的很多方面都实现了电子化,比如:电子商务、社区空间共享等等,因 而也有越来越多的人开始使用终端上的客户端实现信息的交互。然而,在面对后台大量而 繁杂的数据,本领域现有技术中通常还在使用的数据处理方法通常包括以下至少一种:
[0003] 方案1、根据类型种类(如值从0到n-1)创建n个固定长度的大数组,每个数组存 放该类型的数据,数组满时则替换最老的数据。然而这种方式却存在以下缺点:
[0004] (1)数据新增、删除等操作时需要移动整块内存,耗时较长;
[0005] (2)每个数组长度难以预估,类型数据分配不均时,空间利用率低;
[0006] (3)查找某个数据时需要遍历所有数组。
[0007] 方案2、根据类型种类(如值从0到n-1)创建n个链表。新增数据时动态申请内 存,插入到链表中,删除数据时从链表删除,释放内存。然而这种方式同样存在以下诸多缺 陷:
[0008] (1)动态申请空间,容易出现系统内存耗尽等问题。如果限定最大申请结点数,则 最老结点替换时,需要遍历整个链表;
[0009] (2)频繁申请、释放内存,CPU需要花时间整理碎片,加重CPU负担;
[0010] (3)查找某个数据时需要遍历所有链表。
[0011] 通过以上方式进行数据处理时,都存在空间利用率低,查找数据时需要遍历所有 数据所导致的数据处理效率低等问题。
[0012] 针对上述的问题,目前尚未提出有效的解决方案。

【发明内容】

[0013] 本发明实施例提供了一种数据处理方法及装置,以至少解决由于处理数据的过程 中需要遍历全部数组所导致的数据处理效率低的技术问题。
[0014] 根据本发明实施例的一个方面,提供了一种数据处理方法,包括:接收用于请求对 第一数组进行操作的第一消息,其中,上述第一数组中包括不同类型的待处理数据,每种类 型的上述待处理数据存储在上述第一数组中的一个数组成员中;根据上述操作的目标对象 的标识在映射数据结构中查找存储有上述目标对象的上述数组成员在上述第一数组中的 位置,其中,上述映射数据结构中至少记录有每种类型的上述待处理数据的标识与存储有 上述待处理数据的上述数组成员在上述第一数组中的位置之间的对应关系;若在映射数据 结构中查找到存储有上述目标对象的上述数组成员在上述第一数组中的位置,则在上述第 一数组中的上述位置上对上述目标对象执行上述操作。
[0015] 可选地,上述接收用于请求对第一数组进行操作的第一消息之前,还包括:建立上 述第一数组,将每种类型的上述待处理数据存储在上述第一数组中的一个数组成员中,其 中,每个存储有上述待处理数据的上述数组成员还包括:上述待处理数据的类型、用于表示 前一个数组成员在上述第一数组中的位置的前结点标识、用于表示后一个数组成员在上述 第一数组中的位置的后结点标识;其中,存储有同一类型的上述待处理数据的上述数组成 员通过上述前结点标识和上述后结点标识形成链接;建立上述映射数据结构,在上述映射 数据结构中至少记录有每种类型的上述待处理数据的标识与存储有上述待处理数据的上 述数组成员在上述第一数组中的位置之间的对应关系。
[0016] 可选地,上述根据上述操作的目标对象的标识在映射数据结构中查找存储有上述 目标对象的上述数组成员在上述第一数组中的位置包括:在上述映射数据结构中查找记录 的上述待处理数据的标识与上述目标对象的标识相同的表项,其中,每个上述待处理数据 的标识与存储有上述待处理数据的上述数组成员在上述第一数组中的位置之间的对应关 系记录在上述映射数据结构中的一个表项中;若查找到上述记录的上述待处理数据的标识 与上述目标对象的标识相同的表项,则表示上述目标对象为包括在上述第一数组中的上述 待处理数据,并从查找到的上述表项中获取存储有上述目标对象的上述数组成员在上述第 一数组中的位置;若无法查找到上述记录的上述待处理数据的标识与上述目标对象的标识 相同的表项,则表示上述目标对象为与包括在上述第一数组中的上述待处理数据不同的新 增数据,以及表示在映射数据结构中无法查找到存储有上述目标对象的上述数组成员在上 述第一数组中的位置。
[0017] 可选地,上述待处理数据的标识为上述待处理数据的哈希值,上述目标对象的标 识为上述目标对象的哈希值,上述映射数据结构为哈希表,其中,若无法查找到上述记录的 上述待处理数据的标识与上述目标对象的标识相同的表项,上述方法还包括:将上述新增 数据的哈希值对上述哈希表的列数取余,得到上述取余的结果N;判断上述哈希表中各行 第N列的表项是否为空;若存在为空的上述表项,则在上述为空的上述表项中选择一个来 记录上述新增数据的哈希值与存储有上述新增数据的数组成员在上述第一数组中的位置 之间的对应关系;若不存在为空的上述表项,则在上述哈希表中各行第N列的表项中选择 一个表项,将所选择的表项中记录的哈希值替换为上述新增数据的哈希值。
[0018] 可选地,上述操作为查询操作,上述目标对象为包括在上述第一数组中的上述待 处理数据,其中,上述在上述第一数组中的上述位置上对上述目标对象执行上述操作包括: 从位于上述位置上的上述数组成员中获取上述目标对象;返回获取到的上述目标对象。 [0019]可选地,上述操作为新增操作,上述目标对象为与包括在上述第一数组中的上述 待处理数据不同的新增数据,其中,在根据上述操作的目标对象的标识在映射数据结构中 查找存储有上述目标对象的上述数组成员在上述第一数组中的位置之后,上述方法还包 括:若在上述映射数据结构中无法查找到上述存储有上述目标对象的上述数组成员在上述 第一数组中的位置,则判断上述第一数组中是否存在空的数组成员;若存在上述空的数组 成员,则选择一个上述空的数组成员,在所选择的空的数组成员中存储上述新增数据和上 述新增数据的类型;将上述所选择的空的数组成员中包括的前结点标识设置为用于表示存 储有类型与上述新增数据的类型相同的上述待处理数据的上述数组成员中位于上述所选 择的空的数组成员之前的数组成员在上述第一数组中的位置,将上述所选择的空的数组成 员中包括的后结点标识设置为用于表示存储有类型与上述新增数据的类型相同的上述待 处理数据的上述数组成员中位于上述所选择的空的数组成员之后的数组成员在上述第一 数组中的位置;将上述位于上述所选择的空的数组成员之前的数组成员中的后结点标识修 改为用于表示上述所选择的空的数组成员在上述第一数组中的位置,并将上述位于上述所 选择的空的数组成员之后的数组成员中的前结点标识修改为用于表示上述所选择的空的 数组成员在上述第一数组中的位置;在上述映射数据结构中记录上述新增数据的标识与所 选择的空的数组成员在第一数组中的位置之间的对应关系。
[0020] 可选地,在判断上述第一数组中是否存在空的数组成员之后,上述方法还包括:若 不存在上述空的数组成员,则在上述第一数组中查找上述存储有标识与上述新增数据的标 识相关的上述待处理数据的上述数组成员;将上述查找到的上述数组成员中包括的上述待 处理数据替换为上述新增数据,将上述查找到的上述数组成员中包括的上述待处理数据的 类型替换为上述新增数据的类型;将上述查找到的上述数组成员中的前结点标识表示的前 一个数组成员中的后结点标识修改为用于表示上述查找到的上述数组成员中的后结点标 识表示的后一个数组成员在上述第一数组中的位置,并将上述查找到的上述数组成员中的 上述后结点标识表示的后一个数组成员中的前结点标识修改为用于表示上述查找到的上 述数组成员中的前结点标识表示的上述前一个数组成员在上述第一数组中的位置;将上述 查找到的上述数组成员中包括的前结点标识修改为用于表示存储有类型与上述新增数据 的类型相同的上述待处理数据的上述数组成员中位于上述查找到的上述数组成员之前的 数组成员在上述第一数组中的位置,将上述查找到的上述数组成员中包括的后结点标识修 改为用于表示存储有类型与上述新增数据的类型相同的上述待处理数据的上述数组成员 中位于上述查找到的上述数组成员之后的数组成员在上述第一数组中的位置;将上述位于 查找到的上述数组成员之前的数组成员中的后结点标识修改为用于表示上述查找到的上 述数组成员在上述第一数组中的位置,并将上述位于查找到的上述数组成员之后的数组成 员中的前结点标识修改为用于表示上述查找到的上述数组成员在上述第一数组中的位置。
[0021] 可选地,通过以下步骤在存储有类型与上述新增数据的类型相同的上述待处理数 据的上述数组成员中查找位于上述所选择的空的数组成员之前的数组成员和位于上述所 选择的空的数组成员之后的数组成员:从第二数组中查找存储有类型与上述新增数据的类 型相同的上述待处理数据的第一个上述数组成员在上述第一数组中的位置,其中,上述第 二数组至少记录有上述每种类型与上述存储有每种类型的上述待处理数据的第一个上述 数组成员在上述第一数组中的位置之间的对应关系;从查找到的位置开始依次判断上述新 增数据与上述存储有类型与上述新增数据的类型相同的上述待处理数据的上述数组成员 中相邻的两个数组成员中包括的上述待处理数据是否满足预定插入条件,直到找到满足上 述预定插入条件的上述两个数组成员,并将上述两个数组成员中的前一个作为上述位于上 述所选择的空的数组成员之前的数组成员,并将两个数组成员中的后一个作为上述位于上 述所选择的空的数组成员之后的数组成员。
[0022] 可选地,上述操作为删除操作,上述目标对象为包括在上述第一数组中的上述待 处理数据,其中,上述在上述第一数组中的上述位置上对上述目标对象执行上述操作包括: 在上述第一数组中删除上述位置上的上述数组成员,将删除的上述数组成员中的前结点标 识表示的前一个数组成员中的后结点标识修改为用于表示删除的上述数组成员中的后结 点标识表示的后一个数组成员,并将删除的上述数组成员中的上述后结点标识表示的后一 个数组成员中的前结点标识修改为用于表示删除的上述数组成员中的前结点标识表示的 上述前一个数组成员;在上述映射数据结构中删除上述目标对象的标识与上述位置之间的 对应关系。
[0023] 根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:接收单元,用 于接收用于请求对第一数组进行操作的第一消息,其中,上述第一数组中包括不同类型的 待处理数据,每种类型的上述待处理数据存储在上述第一数组中的一个数组成员中;第一 查找单元,用于根据上述操作的目标对象的标识在映射数据结构中查找存储有上述目标对 象的上述数组成员在上述第一数组中的位置,其中,上述映射数据结构中至少记录有每种 类型的上述待处理数据的标识与存储有上述待处理数据的上述数组成员在上述第一数组 中的位置之间的对应关系;处理单元,用于在映射数据结构中查找到存储有上述目标对象 的上述数组成员在上述第一数组中的位置时,在上述第一数组中的上述位置上对上述目标 对象执行上述操作。
[0024] 可选地,上述装置还包括:第一建立单元,用于在接收用于请求对第一数组进行操 作的第一消息之前,建立上述第一数组,将每种类型的上述待处理数据存储在上述第一数 组中的一个数组成员中,其中,每个存储有上述待处理数据的上述数组成员还包括:上述待 处理数据的类型、用于表示前一个数组成员在上述第一数组中的位置的前结点标识、用于 表示后一个数组成员在上述第一数组中的位置的后结点标识;其中,存储有同一类型的上 述待处理数据的上述数组成员通过上述前结点标识和上述后结点标识形成链接;第二建立 单元,用于建立上述映射数据结构,在上述映射数据结构中至少记录有每种类型的上述待 处理数据的标识与存储有上述待处理数据的上述数组成员在上述第一数组中的位置之间 的对应关系。
[0025] 可选地,上述第一查找单元包括:第一查找模块,用于在上述映射数据结构中查找 记录的上述待处理数据的标识与上述目标对象的标识相同的表项,其中,每个上述待处理 数据的标识与存储有上述待处理数据的上述数组成员在上述第一数组中的位置之间的对 应关系记录在上述映射数据结构中的一个表项中;第一判断模块,用于在查找到上述记录 的上述待处理数据的标识与上述目标对象的标识相同的表项时,判断出上述目标对象为包 括在上述第一数组中的上述待处理数据,并从查找到的上述表项中获取存储有上述目标对 象的上述数组成员在上述第一数组中的位置;第二判断模块,用于在无法查找到上述记录 的上述待处理数据的标识与上述目标对象的标识相同的表项时,判断出上述目标对象为与 包括在上述第一数组中的上述待处理数据不同的新增数据,而且在映射数据结构中无法查 找到存储有上述目标对象的上述数组成员在上述第一数组中的位置。
[0026] 可选地,上述待处理数据的标识为上述待处理数据的哈希值,上述目标对象的标 识为上述目标对象的哈希值,上述映射数据结构为哈希表,其中,上述第二判断模块包括: 计算子模块,用于将上述新增数据的哈希值对上述哈希表的列数取余,得到上述取余的结 果N;判断子模块,用于判断上述哈希表中各行第N列的表项是否为空;第一选择子模块,用 于当存在为空的上述表项时,在上述为空的上述表项中选择一个来记录上述新增数据的哈 希值与存储有上述新增数据的数组成员在上述第一数组中的位置之间的对应关系;第二选 择子模块,用于当不存在为空的上述表项,则在上述哈希表中各行第N列的表项中选择一 个表项时,将所选择的表项中记录的哈希值替换为上述新增数据的哈希值。
[0027]可选地,上述操作为查询操作,上述目标对象为包括在上述第一数组中的上述待 处理数据,其中,上述处理单元包括:获取模块,用于从位于上述位置上的上述数组成员中 获取上述目标对象;返回模块,用于返回获取到的上述目标对象。
[0028] 可选地,上述操作为新增操作,上述目标对象为与包括在上述第一数组中的上述 待处理数据不同的新增数据,其中,上述装置还包括:判断单元,用于在根据上述操作的目 标对象的标识在映射数据结构中查找存储有上述目标对象的上述数组成员在上述第一数 组中的位置之后,当在上述映射数据结构中无法查找到上述存储有上述目标对象的上述数 组成员在上述第一数组中的位置时,判断上述第一数组中是否存在空的数组成员;存储单 元,用于当存在上述空的数组成员时,选择一个上述空的数组成员,在所选择的空的数组成 员中存储上述新增数据和上述新增数据的类型;设置单元,用于将上述所选择的空的数组 成员中包括的前结点标识设置为用于表示存储有类型与上述新增数据的类型相同的上述 待处理数据的上述数组成员中位于上述所选择的空的数组成员之前的数组成员在上述第 一数组中的位置,将上述所选择的空的数组成员中包括的后结点标识设置为用于表示存储 有类型与上述新增数据的类型相同的上述待处理数据的上述数组成员中位于上述所选择 的空的数组成员之后的数组成员在上述第一数组中的位置;将上述位于上述所选择的空的 数组成员之前的数组成员中的后结点标识修改为用于表示上述所选择的空的数组成员在 上述第一数组中的位置,并将上述位于上述所选择的空的数组成员之后的数组成员中的前 结点标识修改为用于表示上述所选择的空的数组成员在上述第一数组中的位置;记录单 元,用于在上述映射数据结构中记录上述新增数据的标识与所选择的空的数组成员在第一 数组中的位置之间的对应关系。
[0029] 可选地,上述装置还包括:第二查找单元,在判断上述第一数组中是否存在空的数 组成员之后,当不存在上述空的数组成员时,在上述第一数组中查找上述存储有标识与上 述新增数据的标识相关的上述待处理数据的上述数组成员;替换单元,用于将上述查找到 的上述数组成员中包括的上述待处理数据替换为上述新增数据,将上述查找到的上述数组 成员中包括的上述待处理数据的类型替换为上述新增数据的类型;第一修改单元,用于将 上述查找到的上述数组成员中的前结点标识表示的前一个数组成员中的后结点标识修改 为用于表示上述查找到的上述数组成员中的后结点标识表示的后一个数组成员在上述第 一数组中的位置,并将上述查找到的上述数组成员中的上述后结点标识表示的后一个数组 成员中的前结点标识修改为用于表示上述查找到的上述数组成员中的前结点标识表示的 上述前一个数组成员在上述第一数组中的位置;第二修改单元,用于将上述查找到的上述 数组成员中包括的前结点标识修改为用于表示存储有类型与上述新增数据的类型相同的 上述待处理数据的上述数组成员中位于上述查找到的上述数组成员之前的数组成员在上 述第一数组中的位置,将上述查找到的上述数组成员中包括的后结点标识修改为用于表示 存储有类型与上述新增数据的类型相同的上述待处理数据的上述数组成员中位于上述查 找到的上述数组成员之后的数组成员在上述第一数组中的位置;第三修改单元,用于将上 述位于查找到的上述数组成员之前的数组成员中的后结点标识修改为用于表示上述查找 到的上述数组成员在上述第一数组中的位置,并将上述位于查找到的上述数组成员之后的 数组成员中的前结点标识修改为用于表示上述查找到的上述数组成员在上述第一数组中 的位置。
[0030] 可选地,上述装置还包括:第三查找单元,用于在存储有类型与上述新增数据的类 型相同的上述待处理数据的上述数组成员中查找位于上述所选择的空的数组成员之前的 数组成员和位于上述所选择的空的数组成员之后的数组成员;上述第三查找单元包括:第 二查找模块,用于从第二数组中查找存储有类型与上述新增数据的类型相同的上述待处理 数据的第一个上述数组成员在上述第一数组中的位置,其
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1