CN104572655A - 数据处理的方法、装置及*** - Google Patents

数据处理的方法、装置及*** Download PDF

Info

Publication number
CN104572655A
CN104572655A CN201310476079.0A CN201310476079A CN104572655A CN 104572655 A CN104572655 A CN 104572655A CN 201310476079 A CN201310476079 A CN 201310476079A CN 104572655 A CN104572655 A CN 104572655A
Authority
CN
China
Prior art keywords
bit
data
project
destination
item
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.)
Granted
Application number
CN201310476079.0A
Other languages
English (en)
Other versions
CN104572655B (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.)
Tencent Technology Beijing Co Ltd
Original Assignee
Tencent Technology Beijing 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 Tencent Technology Beijing Co Ltd filed Critical Tencent Technology Beijing Co Ltd
Priority to CN201310476079.0A priority Critical patent/CN104572655B/zh
Publication of CN104572655A publication Critical patent/CN104572655A/zh
Application granted granted Critical
Publication of CN104572655B publication Critical patent/CN104572655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例公开了一种数据处理的方法、装置及***,涉及计算机技术领域,解决了现有技术中由于通过增加存储字段来存储后续加入的数据,造成内存资源的浪费的问题。方法包括:获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值;根据所述长度最大值,确定各已存在项目的已应用比特位;根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目;根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位;将所述未应用比特位分配给待增加项目;获取所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。本发明适用于共享内存技术中。

Description

数据处理的方法、装置及***
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理的方法、装置及***。
背景技术
当前,随着计算机技术的不断发展,共享内存技术越来越普遍。共享内存是指在有多个处理器的计算机***中,不同的处理器均可访问的大容量内存。在多个处理器需要对存储器中的数据进行访问时,需要对存储器中的数据进行缓存。共享内存技术的实时性较强,在其中一个处理器对缓存进行数据更新后,共享内存中的数据也需要立即更新,以避免其他处理器访问到不同的数据。目前,对于访问实时性较强的***,一般采用共享内存对数据结构进行存储。
在数据结构中,可以按照数据类型进行存储,例如char型数据可能占用8个比特存储位,以unit8_t表示,又例如short型数据可能占用16个比特存储位,以unit16_t表示。在共享内存中的一个数据结构中,可以存储多种数据,例如在微博领域的某一条微博被转发的情况下,在一个数据结构中可以存储转发该微博的用户身份标识、转播评论该微博的身份标识、该微博的转播计数等。此外,在该数据结构中,还预先设置有预留存储字段,当需要增加入需要存储的数据时,应用预留存储字段来进行存储。若预留存储字段已经被应用,而还需增加入新的数据,则需要扩充共享内存,继续增加存储字段。通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。
发明内容
本发明的实施例提供一种数据处理的方法、装置及***,能够解决现有技术中由于通过增加存储字段来存储后续加入的数据,造成内存资源的浪费的问题。
为达到上述目的,本发明采用如下技术方案:
一种数据处理的方法,包括:
获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值;
根据所述长度最大值,确定各已存在项目的已应用比特位;
根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目;
根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位;
将所述未应用比特位分配给待增加项目;
获取所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。
一种数据处理的方法,包括:
获取数据结构中各字段的项目信息;所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置;
根据所述项目信息判断所述字段是否包括多个项目的数据;
若判断到所述字段包括多个项目的数据,根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
一种数据存储装置,包括:
获取单元、获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值;
确定单元,用于根据所述获取单元获取的所述长度最大值,确定各已存在项目的已应用比特位;
所述确定单元,还用于根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目;
所述确定单元,还用于根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位;
分配单元,用于将所述确定单元确定的所述未应用比特位分配给待增加项目;
写入单元,用于获取所述分配单元分配的所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。
一种数据读取装置,包括:
获取单元,用于获取数据结构中各字段的项目信息;所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置;
判断单元,用于根据所述获取单元获取的所述项目信息判断所述字段是否包括多个项目的数据;
读取单元,用于在所述判断单元判断到所述字段包括多个项目的数据,根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
一种数据处理的***,包括上述的数据存储装置和上述的数据读取装置。
本发明实施例提供的数据处理的方法、装置及***,确定了数据结构中已存在项目中的目标项目,并确定了所述目标项目未应用比特位,该未应用比特位没有存储所述目标项目的数据,从而将所述未应用比特位分配给待增加项目,并将所述待增加项目的数据写入到所述未应用比特位中,从而无需增加存储字段,即可对待增加项目的数据进行存储。而在现有技术中,需要通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。因此,本发明能够节省内存资源,提升了内存资源的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据处理的方法的流程图;
图2为本发明又一实施例提供的数据处理的方法的流程图;
图3为本发明另一实施例提供的数据处理的方法的流程图一;
图4为本发明实施例中的一种数据结构的示意图;
图5为本发明实施例中的另一种数据结构的示意图;
图6为本发明另一实施例提供的数据处理的方法的流程图二;
图7为本发明另一实施例提供的数据处理的方法的流程图三;
图8为本发明实施例提供的数据存储装置的结构示意图一;
图9为本发明实施例提供的数据存储装置的结构示意图二;
图10为本发明实施例提供的数据读取装置的结构示意图一;
图11为本发明实施例提供的数据读取装置的结构示意图二;
图12为本发明实施例提供的数据处理的***的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。
如图1所示,本发明实施例提供的数据处理的方法,包括:
101、获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值。
在数据结构中,如共享内存的数据结构中可以有多个字段,每个字段都可以存储不同数据类型的项目数据,一般不同的项目数据,数据类型也不同,例如,以微博领域的某一条微博被转发的情况为例,在数据结构中,一般会记录如下项目:用户身份标识(Identity,简称ID)、转评ID、转播计数、评论计数等。根据上述项目下的数据的长度最大值一般可以确定其需要占用的比特位,例如若用户ID的位数最大为9位数,即最大值为则需要32比特位来记录,即采用int型,占用32个比特位,以unit32_t表示。但也存在项目所占用的比特位远远大于该项目数据的长度最大值,例如转播计数下,数据的长度值一般为5-7位,即转播计数可能达到几万至几百万条,但转播计数所占用的比特位也可以是占用32个比特位。
102、根据所述长度最大值,确定各已存在项目的已应用比特位。
所述长度最大值表示已存在项目的比特位应用情况,从而确定已存在项目的已应用比特位,例如上述的转播计数下,数据的长度最大值为7位,即转播计数最大可能达到几百万条,则其实际需要的比特位为24比特位即可,因此,确定可以确定已应用比特位为24比特位。
103、根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目。
一般情况下,若所占用的比特位与已应用比特位的值较为接近,则说明所占用的比特位中未应用比特位较小。因此,可以采用根据已存在项目所占用的比特位以及所述已应用比特位,确定所述所占用的比特位与所述已应用比特位的差值,判断所述差值是否大于一预设阈值,若所述差值大于所述预设阈值,则确定所述已存在项目为所述目标项目。例如所述预设阈值可以是8比特等。
104、根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位。
在所述目标项目所占用的比特位中,可以将除已应用比特位之外的比特位作为未应用比特位。此外,还可以对已应用比特位进行移位,在移位后确定未应用比特位。例如所占用的比特位为uint32_t,已应用比特位占用了uint32_t中的低24比特位,而高8比特位是空余的,则可以将高8比特位作为未应用比特位,也可以将已应用比特位向高位移动8比特位,从而空余出低8比特位,则可以将低8比特位作为未应用比特位。
105、将所述未应用比特位分配给待增加项目。
将未应用比特位分配给待增加项目,需要记录待增加项目与其对应的比特位的映射关系,在后续数据写入与读取时,可以根据待增加项目直接获取到要写入和读取的位置。
106、获取所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。
在获取待增加项目的数据时,同时也在获取已增加项目的数据,一般是将各项目数据先存储在各项目的对应的临时存储器中,而在写入到已增加项目所占用的比特位中时,需要对待增加项目的数据对应的值和已增加项目的数据对应的值先进行移位,再进行位或处理,从而在一个字段中存储了至少两个项目的数据。
值得说明的是,本发明实施例提供的实施例提供的数据处理的方法的执行主体可以是一种数据存储装置,可以向共享内存中写入数据。
本发明实施例提供的数据处理的方法,确定了数据结构中已存在项目中的目标项目,并确定了所述目标项目未应用比特位,该未应用比特位没有存储所述目标项目的数据,从而将所述未应用比特位分配给待增加项目,并将所述待增加项目的数据写入到所述未应用比特位中,从而无需增加存储字段,即可对待增加项目的数据进行存储。而在现有技术中,需要通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。因此,本发明能够节省内存资源,提升了内存资源的利用率。
如图2所示,本发明又一实施例提供的数据处理的方法,包括:
201、获取数据结构中各字段的项目信息。
其中,所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置。例如一个数据结构包括字段1、字段2、字段1仅存储了项目1的数据、字段2存储了项目2和项目3的数据,其中,项目2的数据占用字段2高24比特位,项目3的数据占用字段2低8比特位,但不仅局限于此。
202、根据所述项目信息判断所述字段是否包括多个项目的数据。
通过各字段中所对应的项目,可直接判断到一个字段是否存储了多个项目的数据。
203、若判断到所述字段包括多个项目的数据,根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
值得说明的是,本发明实施例提供的实施例提供的数据处理的方法的执行主体可以是一种数据读取装置,可以用于对共享内存中的数据的读取。
本发明又一实施例提供的数据处理的方法,由于数据结构中的字段存储了多个项目的数据,从而无需增加存储字段,即可对待增加项目的数据进行存储。而在现有技术中,需要通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。因此,本发明能够节省内存资源,提升了内存资源的利用率。
下面列举一个更为具体的实施例,如图3所示,本发明另一实施例提供的数据处理的方法,包括:
301、获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值。
其具体实现方式可以参见图1中的步骤101所示,此处不再赘述。
302、根据所述长度最大值,确定各已存在项目的已应用比特位。
其具体实现方式可以参见图1中的步骤102所示,此处不再赘述。
303、根据已存在项目所占用的比特位以及所述已应用比特位,确定所述所占用的比特位与所述已应用比特位的差值。
一般情况下,若所占用的比特位与已应用比特位的差值较小,则说明所占用的比特位中未应用比特位较小,反之,若所占用的比特位与已应用比特位的差值较大,则未应用比特位较大。
304、判断所述差值是否大于一预设阈值。
若所述差值小于等于所述预设阈值,执行步骤305。若所述差值大于所述预设阈值,执行步骤306。
305、确定所述已存在项目不为所述目标项目。
不为目标项目的项目,其所占用的比特位中的未应用比特位较小。
306、确定所述已存在项目为所述目标项目。之后继续执行步骤307。
307、在所述所占用的比特位中,将除所述已应用比特位之外的比特位作为未应用比特位。
具体的,在所述将除所述已应用比特位之外的比特位作为未应用比特位之前,还可以将所述已应用比特位在所述所占用的比特位中进行移位处理,重新确定所述已应用比特位。
另外,还可以将一个已存在项目的未应用比特位作为另一已存在项目的已应用比特位,从而空余出另一已存在项目的原已应用比特位。具体是所述目标项目包括第一目标项目和第二目标项目,将所述第一目标项目的未应用比特位分配给所述第二目标项目,所述第一目标项目的未应用比特位用于作为所述第二目标项目的部分或全部已应用比特位。从而在所述第二目标项目所占用的比特位中,重新确定第二目标项目的已应用比特位,将除所述已应用比特位之外的比特位作为未应用比特位。
例如,如图4所示的数据结构示意图,在一个数据结构中包括了字段1、字段2、字段3和字段4,对应的各已存在项目所占用的比特位为32比特位、64比特位、32比特位和32比特位,在图4中,字段1和字段2对应的是非目标项目,而字段3和字段4对应的分别是第一目标项目和第二目标项目,第一目标项目和第二目标项目已应用比特位均为24比特位,则可以将字段3的高24比特位作为第一目标项目的已应用比特位,将字段3的低8比特位作为未应用比特位,将字段4的高24比特位作为第二目标项目的已应用比特位,将字段4的低8比特位作为未应用比特位;此外,如图5所示,还可以将字段3和字段4的高8比特位作为未应用比特位,字段3的低24比特位作为第一目标项目的已应用比特位,字段4的低24比特位作为第二目标项目的已应用比特位。上述图4、图5仅为两种比特位分配方式,除上述两种比特位分配方式外,还可以有多种分配方式,本领域技术人员在不付出创造性劳动的情况下得到的分配方式均在本发明的保护范围内。
308、将一个或多个目标项目的未应用比特位分配给所述待增加项目。在步骤308之后,执行步骤309,或者执行步骤311。
将未应用比特位分配给待增加项目,需要记录待增加项目与其对应的比特位的映射关系,在后续数据写入与读取时,可以根据待增加项目直接获取到要写入和读取的位置。
309、若将多个目标项目的未应用比特位分配给所述待增加项目,获取所述待增加项目的数据,将所述待增加项目的数据拆分为多个部分数据。
310、将所述多个部分数据分别写入到各目标项目的未应用比特位中。
例如,以微博领域的某一条微博被转发的情况为例、其数据结构为
Struct  wbTweetInfo{
uint32_t  dwUid;          /*用户ID*/
uint64_t  ddwTweetId;      /*转评ID*/
uint32_t  dwCount;   /*转播计数*/
uint32_t  dwCommentCount;     /*评论计数*/
};
其中,wbTweetInfo表示所述数据结构,该wbTweetInfo数据结构中有4个字段,dwUid表示占32比特位的用户ID,ddwTweetId表示占64比特位的转评ID,dwCount表示占32比特位的转播计数,dwCommentCount表示占32比特位的评论计数。转播计数和评论计数的已应用比特位均为24比特位,未应用比特位为8比特位,例如均将高24比特位作为已应用比特位,而将低8比特位作为未应用比特位,来存储其他项目的数据。
当需要向上述wbTweetInfo数据结构中增加项目时,例如增加该微博在微群中被转播的次数,即微群计数,以wWQCount表示,则可以将上述两个低8比特位的未应用比特位分配给所述微群计数项目。
当获取到各项目的数据时,可以先将各项目存储在临时存储器中,临时存储的数据结构为:
Struct  TweetInfoNew{
uint32_t  dwNewUid;          /*用户ID*/
uint64_t  ddwNewTweetId;      /*转评ID*/
uint32_t  dwNewCount;   /*转播计数*/
uint32_t  dwNewCommentCount;     /*评论计数*/
uint16_t  wWQCount;     /*微群计数*/
};
其中,TweetInfoNew表示该临时存储的数据结构,dwNewUid表示临时存储中的用户ID,ddwNewTweetId表示临时存储中的转评ID,dwNewCount表示临时存储中的转播计数,dwNewCommentCount表示临时存储中的评论计数。具体需要将上述临时存储器中的数据结构中的各项目的数据写入到wbTweetInfo表示的数据结构中,具体的方式可以如下:
wbTweetInfo.dwUid = TweetInfoNew.dwNewUid;此式表示直接将临时存储中的用户ID各个比特位的值写入到wbTweetInfo数据结构中用户ID对应字段的各比特位中。
wbTweetInfo.ddwTweetId= TweetInfoNew.ddwNewTweetId;此式表示直接将临时存储中的转评ID各个比特位的值写入到wbTweetInfo数据结构中转评ID对应字段的各比特位中。
wbTweetInfo.dwCount=(TweetInfoNew.dwNewCount<<8)|
(TweetInfoNew.wWQCount>>8);此式表示将临时存储中转播计数的各比特位向高位移动8比特位,得到第一值,将临时存储中微群计数的各比特位向低位移动8比特位,得到第二值,将所述第一值和第二值进行位或处理,从而将各比特位的值写入到wbTweetInfo数据结构中转播计数对应字段的各比特位中。
例如:临时存储中转播计数的各比特位为:
00000000111111111111111011101111
则所述第一值为:11111111111111101110111100000000,可见第一值产生后,空余的是低8比特位。
临时存储中微群计数的各比特位为:
1111111111110111
则所述第二值为:0000000011111111
则第一值和第二值进行位或处理后,得到的各比特位的值为:
11111111111111101110111111111111,可见第一值和第二值进行位或后的值即为转播计数的各比特位的值和微群计数的高8比特位的值。
wbTweetInfo.dwCommentCount=(TweetInfoNew.dwNewCommentCount<<8)|(TweetInfoNew.wWQCount<<8>>8);此式表示将临时存储中评论计数的各比特位向高位移动8比特位,得到第三值,将临时存储中微群计数的各比特位向高位先移动8比特位,再向低位移动8比特位,得到第四值,将所述第三值和第四值进行位或处理,从而将各比特位的值写入到wbTweetInfo数据结构中评论计数对应字段的各比特位中。
例如:临时存储中评论计数的各比特位为:
00000000111111111111111111111111
则所述第三值为:11111111111111111111111100000000,可见第三值产生后,空余的是低8比特位。
临时存储中微群计数的各比特位为:
1111111111110111
则所述第四值为:0000000011110111
则第三值和第四值进行位或处理后,得到的各比特位的值为:
11111111111111111111111111110111,可见第三值和第四值进行位或后的值即为评论计数的各比特位的值和微群计数的低8比特位的值。
311、若仅将一个目标项目的未应用比特位分配给所述待增加项目,获取所述待增加项目的数据,直接将所述待增加项目的数据写入到所述未应用比特位中。其具体实现方式可以参见上述微博领域的某一条微博被转发的情况的例子,此处不再赘述。
进一步的,如图6所示,在步骤310和步骤311之后,还包括:
312、获取数据结构中各字段的项目信息。
其中,所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置。
313、根据所述项目信息判断所述字段是否包括多个项目的数据。
若判断到所述字段包括多个项目的数据,执行步骤314。若判断到所述字段仅包括一个项目的数据,执行步骤315。
314、根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
例如一个数据结构包括字段1、字段2、字段1仅存储了项目1的数据、字段2存储了项目2和项目3的数据,其中,项目2的数据占用字段2高24比特位,项目3的数据占用字段2低8比特位,则在读取时,从字段2的高24比特位获取项目2的数据,从低8比特位获取项目3的数据。
315、读取所述项目的数据。
此外,如图7所示,在步骤312之后,还可以包括:
316、根据所述项目信息判断一个项目的数据是否存储在不同字段中。
若判断到一个项目的数据存储在不同字段中,执行步骤317;若判断到一个项目的数据存储在同一字段中,执行步骤319。
317、从所述不同字段中读取所述项目的各部分数据。
318、将所述各部分数据进行合并,获得所述项目的数据。
319、从该项目的数据所在的字段中直接读取该项目的数据。
例如,以微博领域的某一条微博被转发的情况为例,其数据结构为
Struct  wbTweetInfo{
uint32_t  dwUid;          /*用户ID*/
uint64_t  ddwTweetId;      /*转评ID*/
uint32_t  dwCount;   /*转播计数*/
uint32_t  dwCommentCount;     /*评论计数*/
};
其中,转播计数对应的字段的高24比特位存储的是转播计数的数据,低8比特位存储的是微群计数的高8位数据。评论计数对应的字段的高24比特位存储的是评论计数的数据,低8比特位存储的是微群计数的低8位数据。
在读取时可以采用如下方式:
TweetInfoNew.dwNewUid = wbTweetInfo.dwUid; 此式表示直接将wbTweetInfo数据结构中用户ID对应字段的各比特位的值进行读取,得到临时存储中的用户ID各个比特位的值。
TweetInfoNew.ddwNewTweetId = wbTweetInfo.ddwTweetId ; 此式表示直接将wbTweetInfo数据结构中转评ID对应字段的各比特位的值进行读取,得到临时存储中的用户ID各个比特位的值。
TweetInfoNew.dwNewCount = wbTweetInfo.dwCount>>8;此式表示将wbTweetInfo数据结构中的转播计数对应字段的各比特位向低8比特位进行移位,得到的值为转播计数的值。
例如数据结构中的转播计数对应字段为:
11111111111111101110111111111111
按照上述方式得到的转播计数的值为:
00000000111111111111111011101111
TweetInfoNew.dwNewCommentCount = wbTweetInfo.dwCommentCount >>8;此式表示将wbTweetInfo数据结构中的评论计数对应字段的各比特位向低8比特位进行移位,得到的值为评论计数的值。
例如数据结构中的评论计数对应字段为:
11111111111111111111111111110111
按照上述方式得到的评论计数的值为:
00000000111111111111111111111111
TweetInfoNew.wWQCount=(wbTweetInfo.dwCount<<24>>16)|
(wbTweetInfo.dwCommentCount<<24>>24)
由于微群计数的数据存储在转播计数对应的字段和评论计数对应的字段,所以需要将两部分数据分别读取到,并进行合并,具体方式是将转播计数的字段的各比特位向高位移动24比特位,再向低位移动16比特位,得到第五值。
例如数据结构中的转播计数对应字段为:
11111111111111101110111111111111
则所述第五值为:
00000000000000001111111100000000
将评论计数的字段的各比特位向高位移动24比特位,再向低位移动24比特位,得到第六值。
例如数据结构中的评论计数对应字段为:
11111111111111111111111111110111
则所述第六值为:
00000000000000000000000011110111
将第五值和第六值进行位或处理,即可得到微群计数项目的数据为:
00000000000000001111111111110111
此外,若数据结构中存储各项目数据的方式不同,则进行移位和位或的方式也不同,此处不再赘述其他方式。
本发明另一实施例提供的数据处理的方法,确定了数据结构中已存在项目中的目标项目,并确定了所述目标项目未应用比特位,该未应用比特位没有存储所述目标项目的数据,从而将所述未应用比特位分配给待增加项目,并将所述待增加项目的数据写入到所述未应用比特位中,从而无需增加存储字段,即可对待增加项目的数据进行存储。而在现有技术中,需要通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。因此,本发明能够节省内存资源,提升了内存资源的利用率。
对应于上述数据处理的方法的实施例,如图8所示,本发明实施例提供的数据存储装置,包括:
获取单元41,获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值。
确定单元42,用于根据所述获取单元41获取的所述长度最大值,确定各已存在项目的已应用比特位。
所述确定单元42,还用于根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目。
所述确定单元42,还用于根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位。
分配单元43,用于将所述确定单元42确定的所述未应用比特位分配给待增加项目。
写入单元44,用于获取所述分配单元43分配的所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。
进一步的,如图9所示,所述确定单元42,包括:
确定模块421,用于根据已存在项目所占用的比特位以及所述已应用比特位,确定所述所占用的比特位与所述已应用比特位的差值。
判断模块422,用于判断所述差值是否大于一预设阈值。
所述确定模块421,还用于在所述差值大于所述预设阈值时,确定所述已存在项目为所述目标项目。
具体的,所述确定单元42,用于:
在所述所占用的比特位中,将除所述已应用比特位之外的比特位作为未应用比特位。
如图9所示,所述数据存储装置,还包括:
移位单元45,用于将所述确定单元42确定的所述已应用比特位在所述所占用的比特位中进行移位处理,重新确定所述已应用比特位。
具体的,所述目标项目包括第一目标项目和第二目标项目。如图9所示:
所述分配单元43,还用于将所述第一目标项目的未应用比特位分配给所述第二目标项目,所述第一目标项目的未应用比特位用于作为所述第二目标项目的部分或全部已应用比特位。
所述确定单元42,还用于:
在所述第二目标项目所占用的比特位中,重新确定第二目标项目的已应用比特位。
将除所述已应用比特位之外的比特位作为未应用比特位。
具体的,如图9所示,所述分配单元43,用于:
将所述确定单元确定的一个或多个目标项目的未应用比特位分配给所述待增加项目。
具体的,如图9所示,所述写入单元44,包括:
拆分模块441,用于在将多个目标项目的未应用比特位分配给所述待增加项目时,将所述待增加项目的数据拆分为多个部分数据。
写入模块442,将所述多个部分数据分别写入到各目标项目的未应用比特位中。
值得说明的是,本发明实施例提供的数据存储装置的具体实现方式可以参见图1和图3的具体实施例,此处不再赘述。
本发明实施例提供的数据存储装置,确定了数据结构中已存在项目中的目标项目,并确定了所述目标项目未应用比特位,该未应用比特位没有存储所述目标项目的数据,从而将所述未应用比特位分配给待增加项目,并将所述待增加项目的数据写入到所述未应用比特位中,从而无需增加存储字段,即可对待增加项目的数据进行存储。而在现有技术中,需要通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。因此,本发明能够节省内存资源,提升了内存资源的利用率。
对应于上述数据处理的方法的实施例,如图10所示,本发明实施例提供的数据读取装置,包括:
获取单元51,用于获取数据结构中各字段的项目信息。
其中,所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置。
判断单元52,用于根据所述获取单元51获取的所述项目信息判断所述字段是否包括多个项目的数据。
读取单元53,用于在所述判断单元52判断到所述字段包括多个项目的数据,根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
进一步的,所述判断单元52,还用于:
根据所述获取单元获取的所述项目信息判断一个项目的数据是否存储在不同字段中。
所述读取单元53,还用于在所述判断单元52判断到一个项目的数据存储在不同字段中,从所述不同字段中读取所述项目的各部分数据。
进一步的,如图11所示,所述数据读取装置,还包括:
合并单元54,用于将所述各部分数据进行合并,获得所述项目的数据。
值得说明的是,本发明实施例提供的数据读取装置的具体实现方式可以参见图1和图3的具体实施例,此处不再赘述。
本发明实施例提供的数据读取装置,由于数据结构中的字段存储了多个项目的数据,从而无需增加存储字段,即可对待增加项目的数据进行存储。而在现有技术中,需要通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。因此,本发明能够节省内存资源,提升了内存资源的利用率。
如图12,本发明实施例提供的数据处理的***,包括上述的数据存储装置61和上述的数据读取装置62。
其具体实现方式可以参见上述数据存储装置和上述的数据读取装置的具体实现方式,此处不再赘述。
本发明实施例提供的数据处理的***,确定了数据结构中已存在项目中的目标项目,并确定了所述目标项目未应用比特位,该未应用比特位没有存储所述目标项目的数据,从而将所述未应用比特位分配给待增加项目,并将所述待增加项目的数据写入到所述未应用比特位中,从而无需增加存储字段,即可对待增加项目的数据进行存储。而在现有技术中,需要通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。因此,本发明能够节省内存资源,提升了内存资源的利用率。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (21)

1.一种数据处理的方法,其特征在于,包括:
获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值;
根据所述长度最大值,确定各已存在项目的已应用比特位;
根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目;
根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位;
将所述未应用比特位分配给待增加项目;
获取所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。
2.根据权利要求1所述的数据处理的方法,其特征在于,所述根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目,包括:
根据已存在项目所占用的比特位以及所述已应用比特位,确定所述所占用的比特位与所述已应用比特位的差值;
判断所述差值是否大于一预设阈值;
若所述差值大于所述预设阈值,则确定所述已存在项目为所述目标项目。
3.根据权利要求1所述的数据处理的方法,其特征在于,所述根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位,包括:
在所述所占用的比特位中,将除所述已应用比特位之外的比特位作为未应用比特位。
4.根据权利要求3所述的数据处理的方法,其特征在于,在所述将除所述已应用比特位之外的比特位作为未应用比特位之前,还包括:
将所述已应用比特位在所述所占用的比特位中进行移位处理,重新确定所述已应用比特位。
5.根据权利要求3所述的数据处理的方法,其特征在于,所述目标项目包括第一目标项目和第二目标项目;
在所述将除所述已应用比特位之外的比特位作为未应用比特位之前,还包括:
将所述第一目标项目的未应用比特位分配给所述第二目标项目,所述第一目标项目的未应用比特位用于作为所述第二目标项目的部分或全部已应用比特位。
6.根据权利要求5所述的数据处理的方法,其特征在于,所述在所述所占用的比特位中,将除所述已应用比特位之外的比特位作为未应用比特位,包括:
在所述第二目标项目所占用的比特位中,重新确定第二目标项目的已应用比特位;
将除所述已应用比特位之外的比特位作为未应用比特位。
7.根据权利要求1所述的数据处理的方法,其特征在于,所述将所述未应用比特位分配给待增加项目,包括:
将一个或多个目标项目的未应用比特位分配给所述待增加项目。
8.根据权利要求7所述的数据处理的方法,其特征在于,所述获取所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中,包括:
若将多个目标项目的未应用比特位分配给所述待增加项目,将所述待增加项目的数据拆分为多个部分数据;
将所述多个部分数据分别写入到各目标项目的未应用比特位中。
9.一种数据处理的方法,其特征在于,包括:
获取数据结构中各字段的项目信息;所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置;
根据所述项目信息判断所述字段是否包括多个项目的数据;
若判断到所述字段包括多个项目的数据,根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
10.根据权利要求9所述的数据处理的方法,其特征在于,在所述获取数据结构中各字段的项目信息之后,还包括:
根据所述项目信息判断一个项目的数据是否存储在不同字段中;
若判断到一个项目的数据存储在不同字段中,从所述不同字段中读取所述项目的各部分数据;
将所述各部分数据进行合并,获得所述项目的数据。
11.一种数据存储装置,其特征在于,包括:
获取单元、获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值;
确定单元,用于根据所述获取单元获取的所述长度最大值,确定各已存在项目的已应用比特位;
所述确定单元,还用于根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目;
所述确定单元,还用于根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位;
分配单元,用于将所述确定单元确定的所述未应用比特位分配给待增加项目;
写入单元,用于获取所述分配单元分配的所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。
12.根据权利要求11所述的数据存储装置,其特征在于,所述确定单元,包括:
确定模块,用于根据已存在项目所占用的比特位以及所述已应用比特位,确定所述所占用的比特位与所述已应用比特位的差值;
判断模块,用于判断所述差值是否大于一预设阈值;
所述确定模块,还用于在所述差值大于所述预设阈值时,确定所述已存在项目为所述目标项目。
13.根据权利要求11所述的数据存储装置,其特征在于,所述确定单元,用于:
在所述所占用的比特位中,将除所述已应用比特位之外的比特位作为未应用比特位。
14.根据权利要求13所述的数据存储装置,其特征在于,还包括:
移位单元,用于将所述确定单元确定的所述已应用比特位在所述所占用的比特位中进行移位处理,重新确定所述已应用比特位。
15.根据权利要求13所述的数据存储装置,其特征在于,所述目标项目包括第一目标项目和第二目标项目;
所述分配单元,还用于将所述第一目标项目的未应用比特位分配给所述第二目标项目,所述第一目标项目的未应用比特位用于作为所述第二目标项目的部分或全部已应用比特位。
16.根据权利要求15所述的数据存储装置,其特征在于,所述确定单元,还用于:
在所述第二目标项目所占用的比特位中,重新确定第二目标项目的已应用比特位;
将除所述已应用比特位之外的比特位作为未应用比特位。
17.根据权利要求11所述的数据存储装置,其特征在于,所述分配单元,用于:
将所述确定单元确定的一个或多个目标项目的未应用比特位分配给所述待增加项目。
18.根据权利要求17所述的数据存储装置,其特征在于,所述写入单元,包括:
拆分模块,用于在将多个目标项目的未应用比特位分配给所述待增加项目时,将所述待增加项目的数据拆分为多个部分数据;
写入模块,将所述多个部分数据分别写入到各目标项目的未应用比特位中。
19.一种数据读取装置,其特征在于,包括:
获取单元,用于获取数据结构中各字段的项目信息;所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置;
判断单元,用于根据所述获取单元获取的所述项目信息判断所述字段是否包括多个项目的数据;
读取单元,用于在所述判断单元判断到所述字段包括多个项目的数据,根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
20.根据权利要求9所述的数据读取装置,其特征在于,所述判断单元,还用于:
根据所述获取单元获取的所述项目信息判断一个项目的数据是否存储在不同字段中;
所述读取单元,还用于在所述判断单元判断到一个项目的数据存储在不同字段中,从所述不同字段中读取所述项目的各部分数据;
所述数据读取装置,还包括:
合并单元,用于将所述各部分数据进行合并,获得所述项目的数据。
21.一种数据处理的***,其特征在于,包括权利要求11-18所述的数据存储装置和权利要求19-20所述的数据读取装置。
CN201310476079.0A 2013-10-12 2013-10-12 数据处理的方法、装置及*** Active CN104572655B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310476079.0A CN104572655B (zh) 2013-10-12 2013-10-12 数据处理的方法、装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310476079.0A CN104572655B (zh) 2013-10-12 2013-10-12 数据处理的方法、装置及***

Publications (2)

Publication Number Publication Date
CN104572655A true CN104572655A (zh) 2015-04-29
CN104572655B CN104572655B (zh) 2019-04-12

Family

ID=53088753

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310476079.0A Active CN104572655B (zh) 2013-10-12 2013-10-12 数据处理的方法、装置及***

Country Status (1)

Country Link
CN (1) CN104572655B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105373663A (zh) * 2015-11-17 2016-03-02 无锡江南计算技术研究所 一种带条目占用指示的异步缓冲实现方法
CN105450488A (zh) * 2015-11-11 2016-03-30 深圳市冠明能源科技有限公司 一种数据处理方法及相关装置
CN110096693A (zh) * 2018-01-29 2019-08-06 北京搜狗科技发展有限公司 一种数据处理方法、装置和用于数据处理的装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0925687B1 (en) * 1996-09-13 2003-04-02 Silicon Graphics, Inc. Compression and decompression scheme performed on shared workstation memory by media coprocessor
CN102457283A (zh) * 2010-10-28 2012-05-16 阿里巴巴集团控股有限公司 一种数据压缩、解压缩方法及设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0925687B1 (en) * 1996-09-13 2003-04-02 Silicon Graphics, Inc. Compression and decompression scheme performed on shared workstation memory by media coprocessor
CN102457283A (zh) * 2010-10-28 2012-05-16 阿里巴巴集团控股有限公司 一种数据压缩、解压缩方法及设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105450488A (zh) * 2015-11-11 2016-03-30 深圳市冠明能源科技有限公司 一种数据处理方法及相关装置
CN105450488B (zh) * 2015-11-11 2019-10-22 深圳市冠明能源科技有限公司 一种数据处理方法及相关装置
CN105373663A (zh) * 2015-11-17 2016-03-02 无锡江南计算技术研究所 一种带条目占用指示的异步缓冲实现方法
CN105373663B (zh) * 2015-11-17 2018-06-26 无锡江南计算技术研究所 一种带条目占用指示的异步缓冲实现方法
CN110096693A (zh) * 2018-01-29 2019-08-06 北京搜狗科技发展有限公司 一种数据处理方法、装置和用于数据处理的装置
CN110096693B (zh) * 2018-01-29 2024-05-28 北京搜狗科技发展有限公司 一种数据处理方法、装置和用于数据处理的装置

Also Published As

Publication number Publication date
CN104572655B (zh) 2019-04-12

Similar Documents

Publication Publication Date Title
CN106909372B (zh) 一种移动端用户购买路径计算方法及***
CN105468473A (zh) 数据迁移方法及数据迁移装置
CN105550345A (zh) 文件操作方法和装置
CN102142032B (zh) 一种分布式文件***的数据读写方法及***
CN104657435B (zh) 一种应用数据的存储管理方法和网络管理***
US10261898B1 (en) Concurrent marking of location and shape changing objects
CN105224444A (zh) 日志生成方法及装置
CN104123171A (zh) 基于numa架构的虚拟机迁移方法及***
CN106453444A (zh) 缓存数据共享的方法及设备
CN104899218A (zh) 数据读写方法及数据读写装置
CN104781794A (zh) 用于非易失性存储器中的数据结构的暂时和持久状态之间的原地改变
CN102023843A (zh) 函数的调用方法、装置及智能卡
CN105528179A (zh) 存储器位置之间控制的转移的***和方法
CN101546287A (zh) 代码修改方法和代码修改设备
CN103488523A (zh) 一种页的访问方法和页的访问装置、服务器
CN104572655A (zh) 数据处理的方法、装置及***
CN104424239A (zh) 资源文件加载方法和装置
CN102662799A (zh) 数据备份的方法、服务器及热备份***
CN103678360A (zh) 一种分布式文件***的数据存储方法和装置
CN103970512A (zh) 多核处理器及其并行重放方法
CN102426601B (zh) 数据删除方法和装置
CN104216834A (zh) 一种内存访问的方法、缓冲调度器和内存模块
CN104657216A (zh) 一种资源池的资源分配方法及装置
CN106708445A (zh) 链路选择方法及装置
CN104408056A (zh) 一种数据处理方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant