一种数据集合确定的方法及设备与流程

文档序号:17080370发布日期:2019-03-09 00:11阅读:126来源:国知局
一种数据集合确定的方法及设备与流程
本申请涉及计算机领域,尤其涉及一种数据集合确定的方法及设备。
背景技术
:很多应用场景中需要进行数据集合的并集操作,比如列出一班男生和二班男生的总名单;在游戏平台中,比如需要向玩过a游戏的玩家或玩过b游戏的玩家推送游戏活动,则需要求解它们之间的并集。现有对数据集合的并集求解是通过中间哈希表保存结果集方法,建立一个哈希表,遍历每一需要求并集的数据集合中每个数据,将每个数据对应的键插入哈希表中,再遍历插入键后的哈希表,输出哈希表中每个键,即为需要求并集的数据集合的并集。然而,当数据量大时,因每个元素都需要哈希处理导致速度会比较慢,且大数据存入到哈希表中对系统内存消耗很大,资源开销较大。技术实现要素:本申请的一个目的是提供一种数据集合确定的方法及设备,解决现有技术中处理大数据量时处理速度慢和资源开销大的问题。根据本申请的一个方面,提供了一种数据集合确定的方法,该方法包括:将多个目标数据集合中的数据映射至预设内存的槽位中;确定含有所述目标数据集合中的数据的目标槽位,将所述目标槽位的值设定为预设值;查找所述预设内存中每一内存段中槽位的值为预设值的目标槽位,将所述目标槽位中的数据进行还原;统计所述每一内存段中被还原出的数据,根据所有被还原出的数据确定数据集合。进一步地,将多个目标数据集合中的数据映射至预设内存的槽位中,包括:确定所述目标数据集合中每一数据在预设内存中内存段信息及槽位信息;根据所述内存段信息及槽位信息将所述目标数据集合中每一数据映射至所述预设内存的槽位中。进一步地,将所述目标槽位的值设定为预设值,包括:将所述目标槽位的值设定为1。进一步地,确定含有所述目标数据集合中的数据的目标槽位,将所述目标槽位的值设定为预设值,包括:确定含有所述目标数据集合中的数据的目标槽位;根据所述目标槽位的槽位信息及内存段信息将所述目标槽位的值设定为预设值。进一步地,根据所述目标槽位的槽位信息及内存段信息将所述目标槽位的值设定为预设值,包括:将所述目标槽位的槽位信息及内存段信息进行或运算,根据运算结果将所述目标槽位的值设定为预设值。进一步地,将所述目标槽位中的数据进行还原,包括:判断每一内存段中的值是否大于0,若是,则根据所述内存段的内存段信息及内存段的总槽位数将所述内存段中的目标槽位中的数据进行还原。根据本申请另一个方面,还提供了一种数据集合确定的设备,该设备包括:映射装置,用于将多个目标数据集合中的数据映射至预设内存的槽位中;确定装置,用于确定含有所述目标数据集合中的数据的目标槽位,将所述目标槽位的值设定为预设值;还原装置,用于查找所述预设内存中每一内存段中槽位的值为预设值的目标槽位,将所述目标槽位中的数据进行还原;统计装置,用于统计所述每一内存段中被还原出的数据,根据所有被还原出的数据确定数据集合。进一步地,所述映射装置用于:确定所述目标数据集合中每一数据在预设内存中内存段信息及槽位信息;根据所述内存段信息及槽位信息将所述目标数据集合中每一数据映射至所述预设内存的槽位中。进一步地,所述确定装置用于:将所述目标槽位的值设定为1。进一步地,所述确定装置用于:确定含有所述目标数据集合中的数据的目标槽位;根据所述目标槽位的槽位信息及内存段信息将所述目标槽位的值设定为预设值。进一步地,所述确定装置用于:将所述目标槽位的槽位信息及内存段信息进行或运算,根据运算结果将所述目标槽位的值设定为预设值。进一步地,所述还原装置用于:判断每一内存段中的值是否大于0,若是,则根据所述内存段的内存段信息及内存段的总槽位数将所述内存段中的目标槽位中的数据进行还原。根据本申请另一个方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述一种数据集合确定的方法。与现有技术相比,本申请通过将多个目标数据集合中的数据映射至预设内存的槽位中;确定含有所述目标数据集合中的数据的目标槽位,将所述目标槽位的值设定为预设值;查找所述预设内存中每一内存段中槽位的值为预设值的目标槽位,将所述目标槽位中的数据进行还原;统计所述每一内存段中被还原出的数据,根据所有被还原出的数据确定数据集合。能够实现快速求数据集合,达到线性的时间复杂度,且在大数据下会非常节省资源。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1示出根据本申请的一个方面提供的一种数据集合确定的方法流程示意图;图2示出根据本申请的另一个方面提供的一种数据集合确定的设备结构示意图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本申请作进一步详细描述。在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。图1示出根据本申请的一个方面提供的一种数据集合确定的方法流程示意图,该方法包括:步骤s11~步骤s14,在步骤s11中,将多个目标数据集合中的数据映射至预设内存的槽位中;在此,目标数据集合为需要求并集的数据集合,将目标数据集合中的所有元素映射至预设内存的槽位中,预设内存为根据场景需求进行开辟的内存,预设内存中包括多个内存段,比如为平衡效率,使用2字节开辟一个内存段,一个字节有8个比特位,则内存段为0到15总共16个槽位。将目标数据集合中的元素映射至开辟的内存的对应槽位中,方便后续进行还原出数据,以确定数据集合的并集。接着,在步骤s12中,确定含有所述目标数据集合中的数据的目标槽位,将所述目标槽位的值设定为预设值;在此,目标槽位中的数据是由目标数据集合中元素映射确定的,需要将该目标槽位的值设定为预设值,比如某一槽位上的数据为目标数据集合中某一元素映射而来,需要把该槽位的值进行设定。在本申请一实施例中,将所述目标槽位的值设定为1,在此,内存的字节槽位只有二进制0和1,默认为0,则当槽位上有数据时,需要将该槽位的值进行设定为1。随后,在步骤s13中,查找所述预设内存中每一内存段中槽位的值为预设值的目标槽位,将所述目标槽位中的数据进行还原;在此,将设置成预设值的槽位中的数据进行还原,进而在步骤s14中,统计所述每一内存段中被还原出的数据,根据所有被还原出的数据确定数据集合。即统计每一内存段中被还原出的数据,进行排序,得到并集数据集合。具体地,在步骤s11中,确定所述目标数据集合中每一数据在预设内存中内存段信息及槽位信息;根据所述内存段信息及槽位信息将所述目标数据集合中每一数据映射至所述预设内存的槽位中。在此,内存段信息为该内存段的行号信息,如该内存段属于第几行,槽位信息为在该内存段的位置信息,如在内存段的第n个槽位的位置。在本申请一实施例中,开辟2字节的内存,则双字节有16个槽位,假设数字n,则将数字n进行映射时,在内存段的第n/16(取整)排的第n%16的槽位中。在本申请一实施例中,在步骤s12中,确定含有所述目标数据集合中的数据的目标槽位;根据所述目标槽位所属的槽位信息及内存段信息将所述目标槽位的值设定为预设值。进一步地,将所述目标槽位所属的槽位信息及内存段信息进行或运算,根据运算结果将所述目标槽位的值设定为预设值。在此,开辟2字节内存时,如果要把某槽位的值设定为预设值,比如设置为1,则将该内存和1进行或运算,具体公式如下:*p|2^槽位信息,比如0槽位设置成1,则*p|2^0,其中,*p为开辟的2字节数字的内存段的首地址。具体地,需要把该内存对应位和另一个空字节并且对应为1的内存求或,从而将指定的位置标记为1,比如如下表1:槽位12345678值00100000表1将上述第6个槽位的值设定为1时,需要使用下面表2的内存:槽位12345678值00100100表2将表1与表2的内存进行求或,则可得第6槽位的值为1。在本申请一实施例中,将目标数据集合中的各元素映射至内存的槽位中,且对含有映射数据的目标槽位进行设置1后,将所述目标槽位中的数据进行还原,则判断每一内存段中的值是否大于0,若是,则根据所述内存段的内存段信息及内存段的总槽位数将所述内存段中的目标槽位中的数据进行还原。在此,开辟128m个2字节,循环遍历128m个2字节的地址,若该双字节大于0,则双字节中存在数据,比如数字120,进行二进制后,在内存中分布如表3:01234567891011121314150001111000000000表3第3,4,5,6总共4个槽位被设置成了1,其他的槽位的值为0,若该内存的内存段信息为100,即行号为100,则将上述四个槽位中的数据还原,分别为:p(100,3)=100*16+3=1603;p(100,4)=100*16+4=1604;p(100,5)=100*16+5=1605;p(100,6)=100*16+6=1606;从而将开辟的内存全部扫描后还原出映射的数据。在本申请一实施例中,目标数据集合a{30,60,10,40}映射至内存中时,所在的内存的槽位的行号及槽位位置为f(30)=1行14列,即数据30映射至第1行的内存段的第14个槽位中,f(60)=3行12列,f(10)=0行10列,f(40)=2行8列。目标数据集合b{10,20,30,50}映射至内存的相应的行和列中,分别如下:f(10)=0行10列,f(20)=1行4列,f(30)=1行14列,f(50)=3行2列。将集合a和集合b映射后在内存中的所有槽位为:0行10列,1行4列,1行14列,2行8列,3行2列,3行12列。按照行进行逐一还原含有映射数据的槽位中的数据,0行10列还原出数据:0*16+10=10,还原出数据10;同理,其他行中还原数据为:行号*16+列号。1行中还原出数据20,30;2行还原出数据40,3行还原出数据50,60。因此并集为{10,20,30,40,50,60}。通过本申请所述的数据集合的确定方法,适用于求数据集合的并集,能够实现求数据集合的速度很快,时间复杂度是线性的,且在大数据下因将数据映射至比特位上,会非常节省资源。图2示出根据本申请的另一个方面提供的一种数据集合确定的设备结构示意图,该设备包括:映射装置11、确定装置12、还原装置13和统计装置14。其中,映射装置11,用于将多个目标数据集合中的数据映射至预设内存的槽位中;在此,目标数据集合为需要求并集的数据集合,将目标数据集合中的所有元素映射至预设内存的槽位中,预设内存为根据场景需求进行开辟的内存,预设内存中包括多个内存段,比如为平衡效率,使用2字节开辟一个内存段,一个字节有8个比特位,则内存段为0到15总共16个槽位。将目标数据集合中的元素映射至开辟的内存的对应槽位中,方便后续进行还原出数据,以确定数据集合的并集。确定装置12,用于确定含有所述目标数据集合中的数据的目标槽位,将所述目标槽位的值设定为预设值;在此,目标槽位中的数据是由目标数据集合中元素映射确定的,需要将该目标槽位的值设定为预设值,比如某一槽位上的数据为目标数据集合中某一元素映射而来,需要把该槽位的值进行设定。在本申请一实施例中,将所述目标槽位的值设定为1,在此,内存的字节槽位只有二进制0和1,默认为0,则当槽位上有数据时,需要将该槽位的值进行设定为1。还原装置13用于查找所述预设内存中每一内存段中槽位的值为预设值的目标槽位,将所述目标槽位中的数据进行还原;在此,将设置成预设值的槽位中的数据进行还原,统计装置14用于统计所述每一内存段中被还原出的数据,根据所有被还原出的数据确定数据集合。即统计每一内存段中被还原出的数据,进行排序,得到并集数据集合。具体地,映射装置11用于确定所述目标数据集合中每一数据在预设内存中内存段信息及槽位信息;根据所述内存段信息及槽位信息将所述目标数据集合中每一数据映射至所述预设内存的槽位中。在此,内存段信息为该内存段的行号信息,如该内存段属于第几行,槽位信息为在该内存段的位置信息,如在内存段的第n个槽位的位置。在本申请一实施例中,开辟2字节的内存,则双字节有16个槽位,假设数字n,则将数字n进行映射时,在内存段的第n/16(取整)排的第n%16的槽位中。在本申请一实施例中,确定装置12用于确定含有所述目标数据集合中的数据的目标槽位;根据所述目标槽位所属的槽位信息及内存段信息将所述目标槽位的值设定为预设值。进一步地,将所述目标槽位所属的槽位信息及内存段信息进行或运算,根据运算结果将所述目标槽位的值设定为预设值。在此,开辟2字节内存时,如果要把某槽位的值设定为预设值,比如设置为1,则将该内存和1进行或运算,具体公式如下:*p|2^槽位信息,比如0槽位设置成1,则*p|2^0,其中,*p为开辟的2字节数字的内存段的首地址。具体地,需要把该内存对应位和另一个空字节并且对应为1的内存求或,从而将指定的位置标记为1,比如如下表1:槽位12345678值00100000表1将上述第6个槽位的值设定为1时,需要使用下面表2的内存:槽位12345678值00100100表2将表1与表2的内存进行求或,则可得第6槽位的值为1。在本申请一实施例中,将目标数据集合中的各元素映射至内存的槽位中,且对含有映射数据的目标槽位进行设置1后,将所述目标槽位中的数据进行还原,则判断每一内存段中的值是否大于0,若是,则根据所述内存段的内存段信息及内存段的总槽位数将所述内存段中的目标槽位中的数据进行还原。在此,开辟128m个2字节,循环遍历128m个2字节的地址,若该双字节大于0,则双字节中存在数据,比如数字120,进行二进制后,在内存中分布如表3:01234567891011121314150001111000000000表3第3,4,5,6总共4个槽位被设置成了1,其他的槽位的值为0,若该内存的内存段信息为100,即行号为100,则将上述四个槽位中的数据还原,分别为:p(100,3)=100*16+3=1603;p(100,4)=100*16+4=1604;p(100,5)=100*16+5=1605;p(100,6)=100*16+6=1606;从而将开辟的内存全部扫描后还原出映射的数据。在本申请一实施例中,目标数据集合a{30,60,10,40}映射至内存中时,所在的内存的槽位的行号及槽位位置为f(30)=1行14列,即数据30映射至第1行的内存段的第14个槽位中,f(60)=3行12列,f(10)=0行10列,f(40)=2行8列。目标数据集合b{10,20,30,50}映射至内存的相应的行和列中,分别如下:f(10)=0行10列,f(20)=1行4列,f(30)=1行14列,f(50)=3行2列。将集合a和集合b映射后在内存中的所有槽位为:0行10列,1行4列,1行14列,2行8列,3行2列,3行12列。按照行进行逐一还原含有映射数据的槽位中的数据,0行10列还原出数据:0*16+10=10,还原出数据10;同理,其他行中还原数据为:行号*16+列号。1行中还原出数据20,30;2行还原出数据40,3行还原出数据50,60。因此并集为{10,20,30,40,50,60}。通过本申请所述的设备,用于数据集合的确定,适用于求数据集合的并集,能够实现求数据集合的速度很快,时间复杂度是线性的,且在大数据下因将数据映射至比特位上,会非常节省资源。此外,本申请实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述的方法。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1