数据处理的方法、装置及系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种数据处理的方法、装置及系统。
【背景技术】
[0002]当前,随着计算机技术的不断发展,共享内存技术越来越普遍。共享内存是指在有多个处理器的计算机系统中,不同的处理器均可访问的大容量内存。在多个处理器需要对存储器中的数据进行访问时,需要对存储器中的数据进行缓存。共享内存技术的实时性较强,在其中一个处理器对缓存进行数据更新后,共享内存中的数据也需要立即更新,以避免其他处理器访问到不同的数据。目前,对于访问实时性较强的系统,一般采用共享内存对数据结构进行存储。
[0003]在数据结构中,可以按照数据类型进行存储,例如char型数据可能占用8个比特存储位,以unit8_t表示,又例如short型数据可能占用16个比特存储位,以unitl6_t表示。在共享内存中的一个数据结构中,可以存储多种数据,例如在微博领域的某一条微博被转发的情况下,在一个数据结构中可以存储转发该微博的用户身份标识、转播评论该微博的身份标识、该微博的转播计数等。此外,在该数据结构中,还预先设置有预留存储字段,当需要增加入需要存储的数据时,应用预留存储字段来进行存储。若预留存储字段已经被应用,而还需增加入新的数据,则需要扩充共享内存,继续增加存储字段。通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。
【发明内容】
[0004]本发明的实施例提供一种数据处理的方法、装置及系统,能够解决现有技术中由于通过增加存储字段来存储后续加入的数据,造成内存资源的浪费的问题。
[0005]为达到上述目的,本发明采用如下技术方案:
[0006]一种数据处理的方法,包括:
[0007]获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值;
[0008]根据所述长度最大值,确定各已存在项目的已应用比特位;
[0009]根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目;
[0010]根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位;
[0011 ] 将所述未应用比特位分配给待增加项目;
[0012]获取所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。
[0013]一种数据处理的方法,包括:
[0014]获取数据结构中各字段的项目信息;所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置;
[0015]根据所述项目信息判断所述字段是否包括多个项目的数据;
[0016]若判断到所述字段包括多个项目的数据,根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
[0017]一种数据存储装置,包括:
[0018]获取单元、获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值;
[0019]确定单元,用于根据所述获取单元获取的所述长度最大值,确定各已存在项目的已应用比特位;
[0020]所述确定单元,还用于根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目;
[0021 ] 所述确定单元,还用于根据所述目标项目的所占用的比特位以及已应用比特位确定未应用比特位;
[0022]分配单元,用于将所述确定单元确定的所述未应用比特位分配给待增加项目;
[0023]写入单元,用于获取所述分配单元分配的所述待增加项目的数据,并将所述待增加项目的数据写入到所述未应用比特位中。
[0024]一种数据读取装置,包括:
[0025]获取单元,用于获取数据结构中各字段的项目信息;所述项目信息包括所述各字段对应的项目以及所述项目的数据在所述字段中存储的位置;
[0026]判断单元,用于根据所述获取单元获取的所述项目信息判断所述字段是否包括多个项目的数据;
[0027]读取单元,用于在所述判断单元判断到所述字段包括多个项目的数据,根据所述项目的数据在所述字段中存储的位置对各项目的数据进行读取。
[0028]一种数据处理的系统,包括上述的数据存储装置和上述的数据读取装置。
[0029]本发明实施例提供的数据处理的方法、装置及系统,确定了数据结构中已存在项目中的目标项目,并确定了所述目标项目未应用比特位,该未应用比特位没有存储所述目标项目的数据,从而将所述未应用比特位分配给待增加项目,并将所述待增加项目的数据写入到所述未应用比特位中,从而无需增加存储字段,即可对待增加项目的数据进行存储。而在现有技术中,需要通过增加存储字段来存储后续加入的数据,造成内存资源的浪费。因此,本发明能够节省内存资源,提升了内存资源的利用率。
【附图说明】
[0030]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031]图1为本发明实施例提供的数据处理的方法的流程图;
[0032]图2为本发明又一实施例提供的数据处理的方法的流程图;
[0033]图3为本发明另一实施例提供的数据处理的方法的流程图一;
[0034]图4为本发明实施例中的一种数据结构的示意图;
[0035]图5为本发明实施例中的另一种数据结构的示意图;
[0036]图6为本发明另一实施例提供的数据处理的方法的流程图二 ;
[0037]图7为本发明另一实施例提供的数据处理的方法的流程图三;
[0038]图8为本发明实施例提供的数据存储装置的结构示意图一;
[0039]图9为本发明实施例提供的数据存储装置的结构示意图二 ;
[0040]图10为本发明实施例提供的数据读取装置的结构示意图一;
[0041]图11为本发明实施例提供的数据读取装置的结构示意图二 ;
[0042]图12为本发明实施例提供的数据处理的系统的示意图。
【具体实施方式】
[0043]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。
[0045]如图1所示,本发明实施例提供的数据处理的方法,包括:
[0046]101、获取数据结构中各字段对应的各已存在项目所占用的比特位以及各已存在项目下的数据的长度最大值。
[0047]在数据结构中,如共享内存的数据结构中可以有多个字段,每个字段都可以存储不同数据类型的项目数据,一般不同的项目数据,数据类型也不同,例如,以微博领域的某一条微博被转发的情况为例,在数据结构中,一般会记录如下项目:用户身份标识(Identity,简称ID)、转评ID、转播计数、评论计数等。根据上述项目下的数据的长度最大值一般可以确定其需要占用的比特位,例如若用户ID的位数最大为9位数,即最大值为则需要32比特位来记录,即采用int型,占用32个比特位,以unit32_t表示。但也存在项目所占用的比特位远远大于该项目数据的长度最大值,例如转播计数下,数据的长度值一般为5-7位,即转播计数可能达到几万至几百万条,但转播计数所占用的比特位也可以是占用32个比特位。
[0048]102、根据所述长度最大值,确定各已存在项目的已应用比特位。
[0049]所述长度最大值表示已存在项目的比特位应用情况,从而确定已存在项目的已应用比特位,例如上述的转播计数下,数据的长度最大值为7位,即转播计数最大可能达到几百万条,则其实际需要的比特位为24比特位即可,因此,确定可以确定已应用比特位为24比特位。
[0050]103、根据所述所占用的比特位以及所述已应用比特位,确定已存在项目中的目标项目。
[0051 ] 一般情况下,若所占用的比特位与已应用比特位的值较为接近,则说明所占用的比特位中未应用比特位较小。因此,可以采用根据已存在项目所占用的比特位以及所述已应用比特位,确定所述所占用的比特位与所述已应用比特位的差值,判断所述差值是否大于一预设阈值,若所述差值大于所述预设阈值,则确定所述已存在项目为所述目标项目。例如所述预设阈值可以是8比特等。
[0052]104、根据所述目标项目的所占用的比特位以及已应用比