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

文档序号:9471368阅读:来源:国知局
排行榜中的第3名 的消息进行删除,则可以应用上述数据处理方法对微博客户端中的数据执行删除。上述举 例只是一种示例,本实施例对此不做任何限定。
[0128] 可选地,在本实施例中上述映射数据结构可以但不限于为哈希表,通过上述哈希 表中记录的映射关系,查找存储有目标对象的数组成员在第一数组中的位置。
[0129] 可选地,在本实施例中,在步骤S102,接收用于请求对第一数组进行操作的第一消 息之前,还包括:
[0130]S1,建立第一数组,将每种类型的待处理数据存储在第一数组中的一个数组成员 中;
[0131]S2,建立映射数据结构,在映射数据结构中至少记录有每种类型的待处理数据的 标识与存储有待处理数据的数组成员在第一数组中的位置之间的对应关系。
[0132] 可选地,在本实施例中,上述第一数组中包括不同类型的待处理数据,每种类型的 待处理数据存储在第一数组中的一个数组成员中,其中,每个存储有待处理数据的数组成 员还包括:待处理数据的类型、用于表示前一个数组成员在第一数组中的位置的前结点标 识、用于表示后一个数组成员在第一数组中的位置的后结点标识。
[0133] 具体结合附图来说明,如图3所示,第一数组用DArray表示,以第一数组DArray 中位于第3个位置的第一数组成员D_1为例来描述。其中,该数组成员中包括:待处理数据 的类型Type为2,前一个数组成员在第一数组DArray中的位置的前结点标识为PreElem为 0,后一个数组成员在第一数组DArray中的位置的后结点标识为NextElem为10。
[0134] 可选地,在本实施例中,存储有同一类型的待处理数据的数组成员通过前结点标 识和后结点标识形成链接,其中,上述链接可以但不限于为链表链接。例如,结合图3-图4 所示,第一数组DArray中属于同一类型,类型Type为2的待处理数据的数组成员包括:第 一数组成员D_l、第二数组成员D_2、第三数组成员D_3。对于第二数组成员D_2的前一个数 组成员在第一数组DArray中的位置的前结点标识为PreElem为3,后一个数组成员在第一 数组DArray中的位置的后结点标识为NextElem为25,则上述属于同一类型的待处理数据 的数组成员可以通过前结点标识PreElem和后结点标识NextElem形成如图4所示的链表 链接。
[0135] 可选地,在本实施例中,上述映射数据结构中至少记录有每种类型的待处理数据 的标识与存储有待处理数据的数组成员在第一数组中的位置之间的对应关系。可选地,在 本实施例中,当上述映射数据结构为哈希表DHash时,上述待处理数据的标识可以但不限 于为待处理数据的哈希值。例如,如图3所示,以第一数组DArray中位于第3个位置的第 一数组成员D_1为例来描述,上述第一数组成员D_1在哈希表DHash中对应的信息包括:用 于标识第一数组成员D_1中的数据Data的标识key,取值为k3,以及用于查找第一数组成 员D_1在第一数组DArray中的位置的索引Index,取值为3。
[0136] 可选地,在本实施例中,当上述映射数据结构为哈希表DHash时,上述哈希表 DHash所占用的空间的大小小于第一数组DArray中的待处理数据所占用的空间大小。
[0137] 例如,上述哈希表DHash可以如表2所示。表2中的"空"表示该位置未被占用, "…"表示该位置已被占用,具体的待处理数据的标识与存储有待处理数据的数组成员在第 一数组中的位置不在此详细表示。
[0138] 表 2
[0140] 可选地,在本实施例中还包括但不限于第二数组TArray。其中,第二数组至少记录 有每种类型与存储有每种类型的待处理数据的第一个数组成员在第一数组中的位置之间 的对应关系。可选地,可以按照类型的顺序依次将存储有每种类型的待处理数据的第一个 数组成员在第一数组中的位置记录在第二数组TArray中的数组成员中。
[0141] 例如,如图3所示,在第二数组TArray中的第一个数组成员中记录存储有类 型Type为0的待处理数据的第一个数组成员D_1在第一数组DArray中的位置(例如, HeadIndex= 11,表示存储有类型Type为0的待处理数据的第一个数组成员D_1的位置 为第一数组DArray中的第11位),在第二数组TArray中的第二个数组成员中记录存储有 类型Type为1的待处理数据的第一个数组成员D_1在第一数组DArray中的位置(例如, HeadIndex= 4,表示存储有类型Type为1的待处理数据的第一个数组成员D_1的位置为 第一数组DArray中的第4位),在第二数组TArray中的第三个数组成员中记录存储有类 型Type为2的待处理数据的第一个数组成员D_1在第一数组DArray中的位置(例如, HeadIndex= 3,表示存储有类型Type为2的待处理数据的第一个数组成员D_1的位置为 第一数组DArray中的第3位)。
[0142] 可选地,在本实施例中,服务器204接收到终端206上的客户端202发送的用于请 求对第一数组DArray中的待处理数据进行操作的第一消息,其中,上述第一消息包括但不 限于:请求对待处理数据进行查询、新增、删除的操作。
[0143] 可选地,在本实施例中,当上述映射数据结构为哈希表DHash时,根据哈希表 DHash中已存储的每种类型的待处理数据的标识与存储有待处理数据的数组成员在第一数 组DArray中的位置之间的对应关系,查找上述操作的目标对象在第一数组DArray中的位 置,若在哈希表DHash中查找到上述目标对象的数组成员在第一数组DArray中的位置,则 在第一数组DArray中的相应位置上对上述目标对象执行相应的操作。
[0144] 以下结合具体场景来描述,假设当上述映射数据结构为哈希表DHash时,上述客 户端202以微博客户端为例,上述微博客户端在内存中创建一个内存池,在该内存池中建 立第一数组DArray,所有类型的数据都存储在该内存中的第一数组DArray中,例如,上述 第一数组DArray中的类型可以包括但不限于:微博中的热度、微博中的活跃度、微博中的 重点推荐。假设上述第一数组DArary数据总量为m。服务器204接收上述微博客户端发送 的对微博中的热度排行榜中的排名第3位的消息进行删除,则服务器204将根据上述排名 第3位的消息的标识(例如,该标识为k3)在哈希表DHash中查找上述消息所对应的目标 对象在第一数组DArray中的位置。假设查找到上述在微博热度排行榜中排名第3位的消 息所对应的目标对象的位置为3,则将第一数组DArray中相应位置上的目标对象删除,即, 将微博热度排行榜中排名第3位的消息删除,并对该类型所对应的链表连接中该数组成员 的前后数组成员的结点标识进行相应的修改,以使微博客户端热度排行榜中的其他消息还 可以按照一定的顺序显示。
[0145] 通过本发明提供的实施例,通过建立第一数组以及与第一数组中的数组成员相对 应的映射数据结构,利用所请求的操作的目标对象的标识,在映射数据结构查找存储有目 标对象的数组成员在第一数组中位置,以实现对第一数组中的数组成员的快速而准确地获 取,进而提高了对第一数组中的数据的处理效率。
[0146] 作为一种可选的方案,在本实施例中上述装置还包括:
[0147] 1)第一建立单元,用于在接收用于请求对第一数组进行操作的第一消息之前,建 立第一数组,将每种类型的待处理数据存储在第一数组中的一个数组成员中,其中,每个存 储有待处理数据的数组成员还包括:待处理数据的类型、用于表示前一个数组成员在第一 数组中的位置的前结点标识、用于表示后一个数组成员在第一数组中的位置的后结点标 识;其中,存储有同一类型的待处理数据的数组成员通过前结点标识和后结点标识形成链 接;
[0148] 2)第二建立单元,用于建立映射数据结构,在映射数据结构中至少记录有每种类 型的待处理数据的标识与存储有待处理数据的数组成员在第一数组中的位置之间的对应 关系。
[0149] 可选地,在本实施例中,上述第一数组中包括不同类型的待处理数据,每种类型的 待处理数据存储在第一数组中的一个数组成员中,其中,每个存储有待处理数据的数组成 员还包括:待处理数据的类型、用于表示前一个数组成员在第一数组中的位置的前结点标 识、用于表示后一个数组成员在第一数组中的位置的后结点标识。
[0150] 具体结合附图来说明,如图3所示,第一数组用DArray表示,以第一数组DArray 中位于第3个位置的第一数组成员D_1为例来描述。其中,该数组成员中包括:待处理数据 的类型Type为2,前一个数组成员在第一数组DArray中的位置的前结点标识为PreElem为 0,后一个数组成员在第一数组DArray中的位置的后结点标识为NextElem为10。
[0151] 可选地,在本实施例中,存储有同一类型的待处理数据的数组成员通过前结点标 识和后结点标识形成链接,其中,上述链接可以但不限于为链表链接。例如,结合图3-图4 所示,第一数组DArray中属于同一类型,类型Type为2的待处理数据的数组成员包括:第 一数组成员D_l、第二数组成员D_2、第三数组成员D_3。对于第二数组成员D_2的前一个数 组成员在第一数组DArray中的位置的前结点标识为PreElem为3,后一个数组成员在第一 数组DArray中的位置的后结点标识为NextElem为25,则上述属于同一类型的待处理数据 的数组成员可以通过前结点标识PreElem和后结点标识NextElem形成如图4所示的链表 链接。
[0152] 可选地,在本实施例中,上述映射数据结构中至少记录有每种类型的待处理数据 的标识与存储有待处理数据的数组成员在第一数组中的位置之间的对应关系。可选地,在 本实施例中,当上述映射数据结构为哈希表DHash时,上述待处理数据的标识可以但不限 于用待处理数据的哈希值来标识。例如,如图3所示,以第一数组DArray中位于第3个位 置的第一数组成员D_1为例来描述,上述第一数组成员D_1在哈希表DHash中对应的信息 包括:用于标识第一数组成员D_1中的数据Data的标识key,取值为k3,以及用于查找第一 数组成员D_1在第一数组DArray中的位置的索引Index,取值为3。
[0153] 可选地,在本实施例中,当上述映射数据结构为哈希表DHash时,上述哈希表 DHash所占用的空间的大小小于第一数组DArray中的待处理数据所占用的空间大小。
[0154] 可选地,在本实施例中还包括但不限于第二数组TArray。其中,第二数组至少记录 有每种类型与存储有每种类型的待处理数据的第一个数组成员在第一数组中的位置之间 的对应关系。例如,如图3所示,对于类型Type为2的待处理数据的第一个数组成员D_1 在第一数组DArray中的位置为3,则第二数组TArray中的HeadIndex的取值为3,而对应 另外两种类型的HeadIndex的取值分别为11和4,也就是说,这两类待处理数据的第一个数 组成员D_1在第一数组DArray中的位置分别为第11位和第4位。
[0155] 作为一种可选的方案,第一查找单元804包括:
[0156] 1)第一查找模块,用于在映射数据结构中查找记录的待处理数据的标识与目标对 象的标识相同的表项,其中,每个待处理数据的标识与存储有待处理数据的数组成员在第 一数组中的位置之间的对应关系记录在映射数据结构中的一个表项中;
[0157] 2)第一判断模块,用于在查找到记录的待处理数据的标识与目标对象的标识相同 的表项时,判断出目标对象为包括在第一数组中的待处理数据,并从查找到的表项中获取 存储有目标对象的数组成员在第一数组中的位置;
[0158] 3)第二判断模块,用于在无法查找到记录的待处理数据的标识与目标对象的标识 相同的表项时,判断出目标对象为与包括在第一数组中的待处理数据不同的新增数据,而 且在映射数据结构中无法查找到存储有目标对象的数组成员在第一数组中的位置。
[0159] 可选地,在本实施例中,上述待处理数据的标识可以但不限于为待处理数据的哈 希值,上述目标对象的标识可以但不限于为目标对象的哈希值,上述映射数据结构可以但 不限于为哈希表。本实施例对此不做任何限定。可选地,在哈希表DHash已记录的哈希值 中查找是否有与目标对象的哈希值相同的表项。如果在上述哈希表DHash中可以查找到哈 希值与目标对象相同的表项,则表示上述目标对象在第一数组DArray的待处理数据的数 组成员中已经有记录,贝1J可以直接由哈希表DHash获取的目标对象在第一数组DArray中的 位置;如果在上述哈希表DHash中无法查找到哈希值与目标对象相同的表项,则表示上述 目标对象是与第一数组DArray中已记录的待处理数据不同的新增数据,进一步,也就无法 查找到存储有所述目标对象的所述数组成员在第一数组DArray中的位置。
[0160] 具体结合以下示例说明,假设服务器204接收到客户端202发送的用于对第一数 组DArray中的类型Type为2的第二数组成员D_2进行删除的请求,其中,上述目标对象的 哈希值为kl,则在哈希表DHash中查找是否具有与上述目标对象,即类型Type为2的第二 数组成员D_2的哈希值相同的表项,假设查找到哈希表DHash中具有与上述目标对象的哈 希值相同的表项,则可以直接从表项中获取上述目标对象对应的数组成员在第一数组中的 位置,例如,上述目标对象位置的索引Index的取值为10,S卩,上述目标对象位于第一数组DArray的第10个位置。假设服务器204接收到客户端202发送的用于对第一数组DArray 中的类型Type为2的第四数组成员D_4进行修改的请求,在哈希表DHash查找后,并未找 到哈希值与上述目标对象的哈希值相同的表项,则表示上述目标对象为与第一数组DArray 中的待处理数据不同的数据。
[0161] 通过本发明提供的实施例,通过在映射数据结构中查找是否具有与目标对象的标 识相同的表项,进而判断出上述目标对象是否为第一数组中的数组成员,若判断出是第一 数组中的数组成员,则可以从映射数据结构中获取上述目标对象在第一数组中的位置,达 到了快速而准确地获取第一数组中的数组成员的位置,提高了对数据的处理效率,为用户 节省了操作时间。
[0162] 作为一种可选的方案,上述待处理数据的标识为待处理数据的哈希值,上述目标 对象的标识为目标对象的哈希值,上述映射数据结构为哈希表,其中,第二判断模块包括:
[0163] 1)计算子模块,用于将新增数据的哈希值对哈希表的列数取余,得到取余的结果 N;
[0164] 2)判断子模块,用于判断哈希表中各行第N列的表项是否为空;
[0165] 3)第一选择子模块,用于当存在为空的表项时,在为空的表项中选择一个来记录 新增数据的哈希值与存储有新增数据的数组成员在第一数组中的位置之间的对应关系;
[0166] 4)第二选择子模块,用于当不存在为空的表项,则在哈希表中各行第N列的表项 中选择一个表项时,将所选择的表项中记录的哈希值替换为新增数据的哈希值。
[0167] 具体结合以下示例来描述,结合表2所示,假设新增数据的哈希值为K,将上述新 增数据的哈希值K对哈希表DHash的列数取余,得到余数N,例如,上述余数为3,然后上述 哈希表DHash中各行第3列的表项是否为空,查找后得出在第3行的第3列存在空表项,则 可以选择上述空表项来存储新增数据的数组成员在第一数组DArray中的位置。
[0168] 又例如,结合表2所示,假设新增数据的哈希值为K(例如,K= 6),将上述新增数 据的哈希值K对哈希表DHash的列数(例如,列数=10)取余,得到余数N(例如,上述余数 为6)。然后,判断上述哈希表DHash中各行第6列的表项是否为空,由表2所示可知,哈希 表DHash中每行的第6列中的表项均已占用,则可在哈希表DHash中各行的第6列中选择 一个表项(例如,选择最早存入哈希表中的第1行的第6列的表项),将所选择的表项中记 录的哈希值替换为新增数据的哈希值。
[0169] 可选地,在本实施例中,对映射数据结构(例如,哈希表DHash)中的表项中进行替 换时可以但不限于先替换记录时间最长的表项。其中,在本实施例中映射数据结构(例如, 哈希表DHash)中被替换的表项所标识的数组成员与新增数据的表项所标识的数组成员可 以但不限于为相关的数组成员。
[0170] 通过本发明提供的实施例,当无法在映射数据结构(例如,哈希表DHash)中查找 到待处理数据的标识(例如,待处理数据的哈希值)与目标对象的标识(例如,目标对象的 哈希值)相同的表项时,则在映射数据结构中按照预定的条件选择一个合适的表项来记录 新增数据的哈希值与存储有上述新增数据的数组成员在第一数组中的位置之间的对应关 系,通过将新增数据的相关信息在映射数据结构中进行更新的方式,使哈希表与第一数组 中的数组成员可以实时保持对应关系,进而保证通过映射数据结构可以实时准确获取第一 数组中的数组成员的位置。
[0171] 作为一种可选的方案,操作为查询操作,目标对象为包括在第一数组中的待处理 数据,其中,处理单元806包括:
[0172] 1)获取模块,用于从位于位置上的数组成员中获取目标对象;
[0173] 2)返回模块,用
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1