CN108205577A - 一种数组构建、数组查询的方法、装置及电子设备 - Google Patents
一种数组构建、数组查询的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN108205577A CN108205577A CN201611187039.4A CN201611187039A CN108205577A CN 108205577 A CN108205577 A CN 108205577A CN 201611187039 A CN201611187039 A CN 201611187039A CN 108205577 A CN108205577 A CN 108205577A
- Authority
- CN
- China
- Prior art keywords
- array
- key
- value
- value pair
- field
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24547—Optimisations to support specific applications; Extensibility of optimisers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数组构建的方法、装置、一种电子设备、一种数组查询的方法、装置以及另一种电子设备。其中,所述数组构建的方法包括:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将比特位数作为数组元素的容量建立数组;将各字段的取值存储到数组的数组元素内。采用上述方法通过键值对的键值所占用的最大空间,将bitmap数组中数组元素的容量进行扩容,将常规的数组元素的容量从一个bit位扩展到能存放下键值所占用的最大内存空间的bit位数,并以扩展容量后的数组元素为单位创建数组,扩展了使用bitmap数组查询的使用场景,这种结构相对于hash表查询,不进行hash值的函数的计算,也无hash值的冲突处理,只需要O(1)的时间复杂度,查询效率高。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种数组构建的方法以及一种数组查询的方法;本申请同时涉及一种数组构建的装置、一种电子设备、一种数组查询的装置以及另一种电子设备。
背景技术
随着计算机信息技术的快速发展,越来越多的用户对数据的存储和查询提出了更高的要求。目前在大量数据信息中进行特定数据元素的查询时,常使用bitmap(位图)数据结构实现快速查询以及存储数据。bitmap数据结构以key-value(键值对)的数据存储都是基于一个字段作为key,将bitmap中每一个bit位来表示一个key对应的value,key不单独占用存储空间,通过在bitmap中的偏移bit来表示。由于bitmap是使用每一个bit位单独存放value,所以value的值为只能为0或1,例如:用数字表示的用户ID时,key可以表示为int类型,而且value只有两个值可以表示为用户在线或不在线,此时使用bitmap数组来查询非常高效。
而当value为字符或字符串类型,不能使用数值类型来表达时,就无法使用bitmap数据结构来查询数据元素,此时常使用hashtable(hash表)来提高查询效率。使用hash表来进行查询时,在数据元素的数目较大的情况下,由于对key进行hash值计算时,计算出的hash值可能会存在冲突,在hash值冲突以及hash桶遍历都需要一些计算资源,即使增加表项容量,也并不能改善冲突率,同时也增加了内存消耗。
由此可见,在现有的快速查询方案下,如果使用bitmap数据结构来查询数据元素,则要求value只能包含0或1两个值,使用场景有限;对于不能使用bitmap数据结构来查询数据元素的情况下,使用hash表作为替代方案时,计算hash值以及在hash冲突时查询的计算代价高,相对于bitmap的时间复杂度较高。
发明内容
本申请提供了一种数组构建的方法以及一种数组查询的方法,以解决现有技术中的上述问题。本申请同时提供了一种数组构建的装置、一种电子设备、一种数组查询的装置以及另一种电子设备。
本申请实施例提供了一种数组构建的方法,所述数组构建的方法,包括:
根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;
将所述比特位数作为数组元素的容量建立数组;
将各字段的取值存储到所述数组的数组元素内。
可选的,所述字段,包括:键值对。
可选的,所述根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数,包括:
根据待存储的各键值对的键值,确定存储最大键值占用的比特位数;或者
根据待存储的各键值对预设的键值容量,确定所述键值容量占用的比特位数。
可选的,所述将所述比特位数作为数组元素的容量建立数组时,包括:
按照所述数组元素在所述数组内的偏移位置,为所述数组元素设置下标。
可选的,所述将各字段的取值存储到所述数组的数组元素内,包括:
将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内。
可选的,若所述键值对的键值类型为文本型时,则为所述键值创建键值映射数组;所述键值映射数组用于存储各键值对的键值。
可选的,通过键值映射数组实现数组的构建,需要采取以下步骤:
将各键值对的键值,与存储所述键值的键值映射数组的数组元素的下标,建立映射关系;
在所述根据待存储的各字段的取值的步骤中,所述待存储的各键值对的键值为:存储所述键值的键值映射数组的数组元素的下标。
可选的,若所述键值对的键名类型为文本型时,则为所述键名创建键名映射数组;所述键名映射数组用于存储各键值对的键名。
可选的,通过键名映射数组实现数组的构建,需要采取以下步骤:
将各键值对的键名,与存储所述键名的键名映射数组的数组元素的下标,建立映射关系;
在所述将各字段的取值存储到所述数组的数组元素内的步骤中,包括:将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内;所述各键值对的键名为:存储所述键名的键名映射数组的数组元素的下标。
可选的,所述数组为bitmap数组。
相应的,本申请实施例还提供了一种数组构建的装置,所述数组构建的装置,包括:
比特位确定单元,用于根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;
数组建立单元,用于将所述比特位数作为数组元素的容量建立数组;
字段存储单元,用于将各字段的取值存储到所述数组的数组元素内。
此外,本申请实施例还提供了一种电子设备,包括:
显示器;
处理器;
存储器,用于存储数组构建程序,所述程序在被所述处理器读取执行时,执行如下操作:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。
此外,本申请实施例还提供了一种数组查询的方法,所述数组查询的方法,包括:
获取待查询的字段信息;
根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;
从所述数组中获取与所述字段信息相对应的数组元素。
可选的,所述字段信息,包括:键值对的键名。
可选的,所述根据所述字段信息查询相应的数组,包括:
根据键值对的键名,获取所述键名在所述数组内的偏移值;
确定所述数组内下标与所述偏移值相对应的数组元素。
可选的,若所述待查询的字段信息的类型为文本型时,则获取所述数组在构建时创建的键名映射数组。
可选的,在所述根据所述字段信息查询相应的数组的步骤之前,包括:
根据所述键值对的键名查询键名映射数组;
获取存储所述键名的键名映射数组的数组元素的下标;
将所述字段信息替换为所述数组元素的下标。
可选的,在所述从所述数组中获取与所述字段信息相对应的数组元素的步骤之后,包括:
若所述数组在构建时,创建了键值映射数组,则根据所述数组元素,获取所述数组元素在所述键值映射数组内的偏移值;
在所述键值映射数组内确定下标与所述偏移值相对应的数组元素,获取键值。
可选的,所述数组为bitmap数组。
相应的,本申请实施例还提供了一种数组查询的装置,所述数组查询的装置,包括:
字段获取单元,用于获取待查询的字段信息;
数组查询单元,用于根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;
元素获取单元,用于从所述数组中获取与所述字段信息相对应的数组元素。
此外,本申请实施例还提供了另一种电子设备,包括:
显示器;
处理器;
存储器,用于存储数组查询程序,所述程序在被所述处理器读取执行时,执行如下操作:获取待查询的字段信息;根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;从所述数组中获取与所述字段信息相对应的数组元素。
与现有技术相比,本申请具有以下优点:
本申请提供的一种数组构建的方法、装置以及电子设备,通过根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。所述技术方案通过键值对的键值所占用的最大内存空间,将bitmap数组中数组元素的容量进行扩容,将常规的数组元素的容量从一个bit位扩展到能存放下所述键值所占用的最大内存空间的bit位数,并以扩展容量后的数组元素为单位创建数组,扩展了使用bitmap数组查询的使用场景;并通过创建映射数组,将键名或键值不能转化为整数类型的键值对进行映射,将映射数据存放在bitmap数组中,使不能转化为整数类型的键值对也能使用bitmap数组来提高查询效率,这种结构相对于hash表查询,没有进行hash值的函数的计算,也没有hash值的冲突处理,只需要O(1)的时间复杂度,查询效率高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的实施例提供的数组构建的方法的流程图;
图2示出了根据本申请的实施例提供的构建的数组的示意图;
图3示出了根据本申请的实施例提供的创建映射数组的示意图;
图4示出了根据本申请的实施例提供的数组构建的装置的示意图;
图5示出了根据本申请的实施例提供的电子设备的示意图;
图6示出了根据本申请的实施例提供的数组查询的方法的流程图;
图7示出了根据本申请的实施例提供的通过映射数组查询的示意图;
图8示出了根据本申请的实施例提供的数组查询的装置的示意图;
图9示出了根据本申请的实施例提供的电子设备的示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
本申请的实施例提供了一种数组构建的方法以及一种数组查询的方法;本申请同时涉及一种数组构建的装置、一种电子设备、一种数组查询的装置以及另一种电子设备。在下面的实施例中逐一进行详细说明。
目前在大量数据信息中进行特定数据元素的查询时,常使用bitmap(位图)数据结构实现快速查询以及存储数据。bitmap数据结构以key-value(键值对)的数据存储都是基于一个字段作为key,将bitmap中每一个bit位来表示一个key对应的value,key不单独占用存储空间,通过在bitmap中的偏移bit来表示。由于bitmap是使用每一个bit位单独存放value,所以value的值为只能为0或1,例如:用数字表示的用户ID时,key可以表示为int类型,而且value只有两个值可以表示为用户在线或不在线,此时使用bitmap数组来查询非常高效。而当value为字符或字符串类型,不能使用数值类型来表达时,就无法使用bitmap数据结构来查询数据元素,此时常使用hashtable(hash表)来提高查询效率。使用hash表来进行查询时,在数据元素的数目较大的情况下,由于对key进行hash值计算时,计算出的hash值可能会存在冲突,在hash值冲突以及hash桶遍历都需要一些计算资源,即使增加表项容量,也并不能改善冲突率,同时也增加了内存消耗。由此可见,在现有的快速查询方案下,如果使用bitmap数据结构来查询数据元素,则要求value只能包含0或1两个值,使用场景有限;对于不能使用bitmap数据结构来查询数据元素的情况下,使用hash表作为替代方案时,计算hash值以及在hash冲突时查询的计算代价高,相对于bitmap的时间复杂度较高。针对这一问题,所述技术方案通过键值对的键值所占用的最大内存空间,将bitmap数组中数组元素的容量进行扩容,将常规的数组元素的容量从一个bit位扩展到能存放下所述键值所占用的最大内存空间的bit位数,并以扩展容量后的数组元素为单位创建数组,扩展了使用bitmap数组查询的使用场景;并通过创建映射数组,将键名或键值不能转化为整数类型的键值对进行映射,将映射数据存放在bitmap数组中,使不能转化为整数类型的键值对也能使用bitmap数组来提高查询效率,这种结构相对于hash表查询,没有进行hash值的函数的计算,也没有hash值的冲突处理,只需要O(1)的时间复杂度,从而实现了数据元素的快速查询的功能。
在详细描述本实施例的具体步骤之前,先对本技术方案涉及的bitmap数组作简要说明。
数组是指:相同数据类型的数组元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组元素,有时也称为下标变量。数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。
bitmap数组是指:用一个bit位来标记某个元素对应的value,而key即是这个元素。由于采用bit为单位来存储数据,因此在可以大大的节省存储空间。在bitmap数组中,每个数组元素为“0”或“1”,表示其对应的数组元素不存在或者存在。例如:在32位机器上,一个整形int a在内存中占32bit,可以用对应的32个bit位来表示十进制的0-31个数。
bitmap数组在内存中的表示可以为一列由0和1组成的二进制表,例如0101001等。在当bitmap数组中的某个bit位为占用状态时,将该bit位的取值置为1;当某个bit位为空闲状态时,将该bit位的取值置为0。而每个bit位的编号,即为该bit位在该bitmap数组中的距离起点的偏移量。
key-value是指:键值对。其中key代表键值对中的键名,value待变键值对中的键值,在一个键值对中key和value两个值是一一对应的,可以根据key的值查询到value的值。
本申请的实施例提供了一种数组构建的方法。所述数组构建的方法实施例如下:
请参考图1,其示出了根据本申请的实施例提供的数组构建的方法的流程图。
所述数组构建的方法,包括:
步骤S101,根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数。
在本实施例中,所述根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数,可以采用如下方式实现:根据待存储的各字段的取值,确定用于存储各字段的取值的容量,将所述容量换算为二进制数值确定所需要的比特位数,使所述比特位数能分别存储下各个字段的取值。
需要说明的是,所述字段可以是以Key-Value形式记录的键值对,则在执行步骤S101时,是根据待存储的各个键值对的键值,确定用于存储各个键值对的键值的容量,并将所述容量换算为二进制数值确定所需要的比特位数。
确定用于存储各个键值对的键值的容量,可以通过以下两种方式确定:
第一种方式是,根据待存储的各键值对的键值,确定存储最大键值占用的比特位数;
第二种方式是,根据待存储的各键值对预设的键值容量,确定所述键值容量占用的比特位数。
可以理解的,在构建数组时,由于在数组内需要存储的各键值对可以是单一的一个键值对,也可以是包含若干数量的一组键值对,所以所述确定用于存储各个键值对的键值的容量是为了:使构建出的所述数组的每一个数组元素均能存储下待存储的各键值对的键值。
其中,采用第一种方式确定容量时,是遍历待存储的各个键值对的键值,从中获取数值最大的键值,并将所述键值由十进制数值换算为二进制数值,以换算出的所述二进制数值的比特位数,作为存储各个键值对的键值的容量。可以理解的,如果构建的数组的数组元素的容量,能存放下待存储的各键值对中数值最大的键值,就能够存放下其他比所述键值小的各个键值对的其他键值。
例如:待存储的键值对组中包括以下键值对:0(键名):1(键值),11:3,14:9,1:15,3:0,5:2,6:3,7:7,9:4,则遍历待存储的键值对组后,从中获取的数值最大的键值为:15,并将所述键值由十进制数值15换算为二进制数值1111,由于每一位二进制数值均占一位比特(bit)位,所以以换算出的所述二进制数值1111的比特位数(4位),作为存储各个键值对的键值的容量。
由于在构建数组之后,可能会对该数组进行多次的写入,若执行后续的写入操作写入新的待存储的各键值对时,新键值对的键值大于所述数组存储各个键值对的键值的容量时,采用第一种方式就无法进行写入。
为了解决第一种方式的新键值对的键值超过数组中数组元素的容量时无法写入的问题,可以通过第二种方式确定容量。采用第二种方式确定容量时,是根据待存储的各键值对预设的键值容量,并将所述键值容量由十进制数值换算为二进制数值,作为存储各个键值对的键值的容量。可以理解的,在获取各键值对时可以是从数据库中提取、接收用户从客户端或网页中对键值对的录入,从数据库中提取时,数据库会预先规定各个字段的类型(例如:int类型)或接收用户从客户端或网页中对键值对的录入时,会预先规定录入的键值对中键值的长度(例如:2位数),如果构建的数组的数组元素的容量,与待存储的各键值对预设的键值容量相同时,就能够存放下各个键值对的其他键值。
例如:当字段的类型为int类型时,由于int类型由32位二进制数表示占4字节(4byte)内存,字节(byte)并非是计算机存储的最小单位,1字节等于8个比特位,8个0或1组成一个字节,那么根据int类型允许存储的字节数是4个字节,就能换算出int类型能存储的最大二进制数值为4294967295(即4B=32b,最大值即为32个1组成),所以各键值对预设的键值容量为4294967295时,确定的所述键值容量占用的比特位数为32位;当预设的键值容量为2位数时,即键值的取值[0,99],所以将所述键值的取值由十进制数值[0,99]换算为二进制数值[0000,1100011],由于每一位二进制数值均占一位比特(bit)位所以以换算出的所述二进制数值1100011的比特位数(7位),作为存储各个键值对的键值的容量。
步骤S103,将所述比特位数作为数组元素的容量建立数组。
在本实施例中,所述将所述比特位数作为数组元素的容量建立数组,可以采用如下方式实现:以步骤S101中确定的比特位数作为数组元素的容量,创建数组,使创建的所述数组中的每一数组元素均通过所述比特位数存放键值。
在具体实施时,所述将所述比特位数作为数组元素的容量建立的数组为:bitmap数组。
需要说明的是,在构建数组时,可以按照所述待存储的各键值对中的键名的最大值,确定所述数组内需求的数组元素的个数,并通过所述数组元素的容量,确定构建的数组的长度。在确定所述数组的长度之后,在所述数组内通过数组元素的容量划分每一数组元素,按照所述数组元素在所述数组内的偏移位置,为所述数组元素设置下标。
下面以一个具体的实例对构建数组的过程进行说明。
请参考图2,其示出了根据本申请的实施例提供的构建的数组的示意图。
根据所述待存储的各键值对的键值,确定存储各个键值对的键值的容量:待存储的键值对组中包括以下键值对:0:1,11:3,1:15,3:0,5:2,6:3,7:7,9:4,遍历待存储的键值对组后,从中获取的数值最大的键值为:15,并将所述键值由十进制数值15换算为二进制数值1111的比特位数为4位,将4位比特位数作为存储各个键值对的键值的容量。
根据所述待存储的各键值对的键名,确定所述数组内需求的数组元素的个数:再次遍历待存储的键值对组,从中获取的数值最大的键名为:11,由于数组中是以下标为0的数组元素开始构建数组的,所以所述数组内需求的数组元素的个数为12个(下标0-11)。
根据所述键值的容量以及所述数组内需求的数组元素的个数,确定构建的数组的长度:由于每个数组元素由4个比特位组成,且所述数组内需求的数组元素的个数为12个(下标0-11),所以需要构建的所述数组的长度为48个比特位,即:6字节。
在确定所述数组的长度之后,在所述数组内通过数组元素的容量划分每一数组元素,按照所述数组元素在所述数组内的偏移位置,为所述数组元素设置下标:由于一字节由8个比特位组成,所以每字节中可以存储两个键值对(即:每字节由2个数组元素组成),在确定所述数组的长度之后,在所述数组内按照每4个比特位对所述数组划分出12个数组元素,按照所述数组元素在所述数组内的偏移位置,为所述数组元素设置下标(0-11)。
由于在构建数组之后,可能会对该数组进行多次的写入,若固定了构建的数组的长度,则在执行后续的写入操作写入新的键值对时,可能会出现所述数组的未写入键值的数组元素的数目小于新的键值对的数目,为了使在写入新的键值对时所述数组均有足够的未写入键值的数组元素,本实施例的技术方案提供了一种优选实施方式,在优选方式下,所述数组可以采用创建动态数组实现自动扩容。
步骤S105,将各字段的取值存储到所述数组的数组元素内。
在本实施例中,所述将各字段的取值存储到所述数组的数组元素内,可以采用如下方式实现:将所述各字段的取值存储到所述数组中下标与各字段相对应的数组元素内。
需要说明的是,所述各字段具有各自的字段名,将各自的字段名与所述数组中下标进行匹配后,将各字段的取值存储到,所述数组中的下标与该字段名相同的数组元素内。
在本实施例中,所述字段可以是以Key-Value形式记录的键值对,则在执行步骤S105将各字段的取值存储到所述数组的数组元素内时,是将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内。
需要说明的是,所述数组内的数组元素是以二进制的形式存储键值的,所以在将各键值对的键值存储到数组元素内时,需要将十进制形式的键值转换为二进制的键值。
例如:待存储的键值对组中包括以下键值对:0:1,11:3,1:15,3:0,5:2,6:3,7:7,9:4,则将键值对0:1的键值1以二进制0001存储到下标为0的数组元素内;将键值对1:15的键值15以二进制1111存储到下标为1的数组元素内;将键值对3:0的键值0以二进制0000存储到下标为3的数组元素内;将键值对5:2的键值2以二进制0010存储到下标为5的数组元素内;将键值对6:3的键值3以二进制0011存储到下标为6的数组元素内;将键值对7:7的键值7以二进制0111存储到下标为7的数组元素内;将键值对9:4的键值4以二进制0100存储到下标为9的数组元素内;将键值对11:3的键值3以二进制0011存储到下标为11的数组元素内。
需要说明的是,由于所述数组内的数组元素的下标都是以数字的形式进行记录的,所以在将所述键值对的键名与所述数组元素的下标进行匹配时,若能匹配成功则所述键值对的键名也必须为数字(int类型),为了使键值对的键名为非数字类型时,也能通过所述键值对的键名查询所述数组,本实施例的技术方案提供了一种优选实施方式,在优选方式下,若所述键值对的键名类型为文本型时,则为所述键名创建键名映射数组;所述键名映射数组用于存储各键值对的键名。
需要说明的是,所述键值对的键名类型为文本型时,可以包括:char(字符型),string(字符串型)等非整形的类型。
下面以一个具体的实例对构建键名映射数组的过程进行说明。
请参考图3,其示出了根据本申请的实施例提供的创建映射数组的示意图。
在本实施例中,所述为所述键名创建键名映射数组,可以采用如下方式实现:创建具有与所述键名数量相同数组元素的键名映射数组。其中,所述键名映射数组可以是字符串数组。
例如:键值对组中包括以下键值对:japan:0,america:1,korea:3,china:5,则创建具有4个数组元素的键名映射数组。
在创建所述键名映射数组之后,按照各键值对的顺序,将各键值对的键名存储到所述键名映射数组中,并将各键值对的键名,与存储所述键名的键名映射数组的数组元素的下标,建立映射关系。
例如:键值对组中键值对的顺序为:japan:0,america:1,korea:3,china:5,则按照japan,america,korea,china的顺序将上述4个键名存储到所述键名映射数组中,由于所述键名映射数组具有4个数组元素,其下标分别为0-3,所以将各键值对的键名与存储所述键名的键名映射数组的数组元素的下标,建立的映射关系为:japan-0,america-1,korea-2,china-3。
在将所述键值对的键名存储到所述键名映射数组中,并使各键值对的键名与所述键名映射数组的下标建立映射关系后,由于所述键值对的键名与所述键名映射数组的下标建立了映射关系,将所述各键值对的键名映射为存储所述键名的键名映射数组的数组元素的下标,所以在执行步骤S105将各字段的取值存储到所述数组的数组元素内时,是将各键值对的键值存储到,所述数组中下标与所述将存储所述键名的键名映射数组的数组元素的下标相同的的数组元素内。
除此之外,由于在bitmap数组内只能存储数字类型(int型等)的键值,为了使所述键值对的键值为非数字类型时,也能将所述键值对的键值存储到所述数组内,本实施例的技术方案提供了一种优选实施方式,在优选方式下,若所述键值对的键值类型为文本型时,则为所述键值创建键值映射数组;所述键值映射数组用于存储各键值对的键值。
需要说明的是,所述键值对的键值类型为文本型时,可以包括:char(字符型),string(字符串型)等非整形的类型。
下面以一个具体的实例对构建键值映射数组的过程进行说明。
请参考图3,其示出了根据本申请的实施例提供的创建映射数组的示意图。
在本实施例中,所述为所述键值创建键值映射数组,可以采用如下方式实现:创建具有与所述键值数量相同数组元素的键值映射数组。其中,所述键值映射数组可以是字符串数组。
例如:键值对组中包括以下键值对:0:japan,1:america,3:korea,5:china,则创建具有4个数组元素的键值映射数组。
在创建所述键值映射数组之后,按照各键值对中键名的顺序,将各键值对的键值存储到所述键值映射数组中,并将各键值对的键值,与存储所述键值的键值映射数组的数组元素的下标,建立映射关系。
例如:键值对组中键值对的为:0:japan,1:america,3:korea,5:china,则按照0,1,3,5的顺序将上述4个键值对的键值存储到所述键值映射数组中,由于所述键值映射数组具有4个数组元素,其下标分别为0-3,所以将各键值对的键值与存储所述键值的键值映射数组的数组元素的下标,建立的映射关系为:japan-0,america-1,korea-2,china-3。
在将所述键值对的键值存储到所述键值映射数组中,并使各键值对的键值与所述键值映射数组的下标建立映射关系后,由于所述键值对的键值与所述键值映射数组的下标建立了映射关系,将所述个键值对的键值映射为存储所述键值的键值映射数组的数组元素的下标,所以在执行步骤S101根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数时,是根据各键值对的存储所述键值的键值映射数组的数组元素的下标的最大数值,确定用于能存放下存储所述键值的键值映射数组的数组元素的下标的容量,将所述容量换算为二进制数值确定所需要的比特位数。
需要说明的是,若所述键值对的键值以及键名的类型均为非数字类型时,则可以同时创建键值映射数组以及键名映射数组,从而实现本身请提供的数组构建的方法,由于在上述实施例中已经对创建键值映射数组以及键名映射数组进行了比较详细的描述,此处不再赘述。
在上述的实施例中,提供了一种数组构建的方法,与上述数组构建的方法相对应的,本申请还提供了一种数组构建的装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述数组构建的装置实施例如下:
请参考图4,其示出了根据本申请的实施例提供的数组构建的装置的示意图。
所述数组构建的装置,包括:比特位确定单元401、数组建立单元403以及字段存储单元405;
所述比特位确定单元401,用于根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;
所述数组建立单元403,用于将所述比特位数作为数组元素的容量建立数组;
所述字段存储单元405,用于将各字段的取值存储到所述数组的数组元素内。
可选的,所述比特位确定单元401,具体用于根据待存储的各键值对的键值,确定能存储各键值对的键值所需的比特位数;
所述字段存储单元405,具体用于将各键值对的键值存储到所述数组的数组元素内。
可选的,所述比特位确定单元401,具体用于根据待存储的各键值对的键值,确定存储最大键值占用的比特位数;或者
根据待存储的各键值对预设的键值容量,确定所述键值容量占用的比特位数。
可选的,所述数组建立单元403,包括:下标设置子单元;
所述下标设置子单元,用于按照所述数组元素在所述数组内的偏移位置,为所述数组元素设置下标。
可选的,所述字段存储单元405,具体用于将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内。
可选的,所述数组构建的装置,包括:键值映射数组创建单元;
所述键值映射数组创建单元,用于若所述键值对的键值类型为文本型时,则为所述键值创建键值映射数组;所述键值映射数组用于存储各键值对的键值。
可选的,若通过键值映射数组实现数组的构建,所述数组构建的装置,包括:键值映射建立单元;
所述键值映射建立单元,用于将各键值对的键值,与存储所述键值的键值映射数组的数组元素的下标,建立映射关系;
所述比特位确定单元401,用于根据存储各键值对的键值的键值映射数组的数组元素的下标,确定能存储各数组元素的下标所需的比特位数。
可选的,所述数组构建的装置,包括:键名映射数组创建单元;
所述键名映射数组创建单元,用于若所述键值对的键名类型为文本型时,则为所述键名创建键名映射数组;所述键名映射数组用于存储各键值对的键名。
可选的,若通过键名映射数组实现数组的构建,所述数组构建的装置,包括:键名映射建立单元;
所述键名映射建立单元,用于将各键值对的键名,与存储所述键名的键名映射数组的数组元素的下标,建立映射关系;
所述字段存储单元405,用于将各键值对的键值存储到所述数组中下标,与存储各键值对的键名的键名映射数组的数组元素的下标相对应的数组元素内。
可选的,所述数组建立单元403,用于将所述比特位数作为数组元素的容量建立bitmap数组。
在上述的实施例中,提供了一种数组构建的方法以及一种数组构建的装置,此外,本申请还提供了一种电子设备;所述电子设备实施例如下:
请参考图5,其示出了根据本申请的实施例提供的电子设备的示意图。
所述电子设备,包括:显示器501;处理器503;存储器505;
所述存储器505,用于存储数组构建程序,所述程序在被所述处理器读取执行时,执行如下操作:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。
在上述的实施例中,提供了一种数组构建的方法、一种数组构建的装置以及一种电子设备,此外,本申请还提供了一种数组查询的方法;所述数组查询的方法实施例如下:
请参考图6,其示出了根据本申请的实施例提供的数组查询的方法的流程图。
所述数组查询的方法,包括:
步骤S601,获取待查询的字段信息。
在本实施例中,所述获取待查询的字段信息,可以采用如下方式实现:从基于用户触发的查询操作中获取待查询的字段信息。
例如:基于用户触发的查询操作可以是查询语句,或者查询指令,所述从基于用户触发的查询操作中获取待查询的字段信息是指:从查询语句,或者查询指令中获取关键字,所述关键字就是待查询的字段信息。
需要说明的是,所述字段信息可以是以Key-Value形式记录的键值对中的键名,则在执行步骤S601时,是获取待查询的键值对的键名信息。
步骤S603,根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量。
在本实施例中,所述根据所述字段信息查询相应的数组,可以采用如下方式实现:根据所述字段信息查询存储了所述字段信息的数组。
需要说明的是,所述根据所述字段信息查询的数组,是在构建时,按照所述待存储的各键值对中的键值的最大值所占用的比特位数,作为数组元素的容量。
例如:所述预设的比特位数为4位,则所述数组的数组元素的容量为0000至1111(即:0至15)。
在具体实施时,所述根据所述字段信息查询相应的数组为:bitmap数组。
在本实施例中,在执行步骤S603根据所述字段信息查询相应的数组时,具体包括如下步骤:
根据键值对的键名,获取所述键名在所述数组内的偏移值;
确定所述数组内下标与所述偏移值相对应的数组元素。
可以理解的,在根据所述字段信息确定了需要查询的数组之后,获取所述字段信息中键值对的键名,所述键值对的键名是整形类型(int)的形式记录的,所述键名的取值就是所述键值对在所述数组内存放了键值的数组元素的偏移量,即:所述数组元素的下标。
例如:所述键值对的键名为0,则说明在所述数组内存放了该键值对的键值的数组元素的偏移量为0,即所述键值对的键值存放在下标为0的数组元素内;同样的道理,当所述键值对的键名为6时,则说明在所述数组内存放了该键值对的键值的数组元素的偏移量为6,即所述键值对的键值存放在下标为6的数组元素内。
步骤S605,从所述数组中获取与所述字段信息相对应的数组元素。
在本实施例中,所述从所述数组中获取与所述字段信息相对应的数组元素,可以采用如下方式实现:根据所述字段信息,在所述数组中确定与所述字段信息相对应的数组元素,并读取所述数组元素内的比特位,将读取出的二进制数值换算为十进制数值。
例如:所述键值对的键名为6,则在所述数组中确定下标为6的数组元素,并读取所述数组元素内的比特位0011,将读取出的二进制数值0011换算为十进制数值3。
需要说明的是,由于所述数组内的数组元素的下标都是以数字的形式进行记录的,所以在通过键值对的键名在所述数组内查找对应下标的数组元素时,若能查找到对应下标的数组元素,则所述键值对的键名也必须为数字(int类型),为了使键值对的键名为非数字类型时,也能通过所述键值对的键名查询所述数组,本实施例的技术方案提供了一种优选实施方式,在优选方式下,若所述待查询的字段信息的类型为文本型时,则获取所述数组在构建时创建的键名映射数组。其中,所述键名映射数组可以是字符串数组。
需要说明的是,所述键值对的键名类型为文本型时,可以包括:char(字符型),string(字符串型)等非整形的类型。
下面以一个具体的实例对通过键名映射数组进行查询的过程进行说明。
请参考图7,其示出了根据本申请的实施例提供的通过映射数组查询的示意图。
在本实施例中,在获取所述数组在构建时创建的键名映射数组之后,需要通过所述键名映射数组,将字符串型的键值映射为所述键名映射数组内的整数型键值,所以在执行步骤S603根据所述字段信息查询相应的数组的步骤之前,需要执行如下步骤:
根据所述键值对的键名查询键名映射数组;
获取存储所述键名的键名映射数组的数组元素的下标;
将所述字段信息替换为所述数组元素的下标。
需要说明的是,所述根据所述键值对的键名查询键名映射数组是:以所述键值对的键名作为关键字,查询所述键名映射数组;所述获取存储所述键名的键名映射数组的数组元素的下标是:以所述键值对的键名作为关键字,遍历所述键名映射数组内每一数组元素内的取值,确定所述取值与所述键名的键名相同的数组元素,并获取该数据元素的下标;所述将所述字段信息替换为所述数组元素的下标是:在获取数据元素的下标之后,使所述键值对的键值与获取的数据元素的下标建立映射关系,将所述键值对的键值替换为获取的数据元素的下标。
例如:键值对为:japan:0,则遍历所述键名映射数组,确定所述键名映射数组内取值为japan的数组元素,并获取所述数组元素的下标0,使键名japan与下标0建立映射关系,将所述键值对的键值japan替换为获取的数据元素的下标0。
可以理解的,在将所述键值对的键值替换为获取的数据元素的下标之后,执行步骤S603根据所述字段信息查询相应的数组时,就是以数据元素的下标替换后的所述键值对的键值查询相应的数组。
下面以一个具体的实例对通过键值映射数组进行查询的过程进行说明。
请参考图7,其示出了根据本申请的实施例提供的通过映射数组查询的示意图。
除此之外,由于在bitmap数组内只能存储数字类型(int型等)的键值,所以在执行所述数组查询的方法中,只能查询出数字类型键值,为了使所述键值对的键值为非数字类型时,也能将所述键值对的键值存储到所述数组内,并在执行所述数组查询的方法中,也能从所述数组内查询出非数字类型的键值,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在执行步骤S605从所述数组中获取与所述字段信息相对应的数组元素之后,包括:
若所述数组在构建时,创建了键值映射数组,则根据所述数组元素,获取所述数组元素在所述键值映射数组内的偏移值;
在所述键值映射数组内确定下标与所述偏移值相对应的数组元素,获取键值。
需要说明的是,若所述数组在构建时创建了键值映射数组(所述键值映射数组可以是字符串数组),则说明从所述数组内获取的数组元素,是已映射过的所述键值映射数组的下标(即:需要读取的数组元素在所述键值映射数组中的偏移值),所以将通过所述下标在所述键值映射数组中读取相应的数组元素,获取所述键值对的键值。
例如:键值对为0:japan,则根据所述键值对的键名0查询相应的数组,在所述数组内获取下标为0的数组元素,并读取所述数组元素内的二进制数值0000,将二进制的0000换算为十进制数值0,该十进制数值0就是已映射过的所述键值映射数组的下标0,通过所述下标0在所述键值映射数组中读取下标为0的数组元素,从中获取所述键值对的键值japan。
在上述的实施例中,提供了一种数组查询的方法,与上述数组查询的方法相对应的,本申请还提供了一种数组查询的装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述数组查询的装置实施例如下:
请参考图8,其示出了根据本申请的实施例提供的数组查询的装置的示意图。
所述数组查询的装置,包括:字段获取单元801、数组查询单元803以及元素获取单元805;
所述字段获取单元801,用于获取待查询的字段信息;
所述数组查询单元803,用于根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;
所述元素获取单元805,用于从所述数组中获取与所述字段信息相对应的数组元素。
可选的,所述字段获取单元801,具体用于获取待查询的键值对的键名;
所述数组查询单元803,具体用于根据所述键值对的键名查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;
所述元素获取单元805,具体用于从所述数组中获取与所述键值对的键名相对应的数组元素。
可选的,所述数组查询单元803,包括:偏移值获取子单元以及数组元素确定单元;
所述偏移值获取子单元,用于根据键值对的键名,获取所述键名在所述数组内的偏移值;
所述数组元素确定单元,用于确定所述数组内下标与所述偏移值相对应的数组元素。
可选的,所述数组查询的装置,包括:键名映射数组获取单元;
所述键名映射数组获取单元,用于若所述待查询的字段信息的类型为文本型时,则获取所述数组在构建时创建的键名映射数组。
可选的,所述数组查询的装置,还包括:键名映射数组查询单元、键名数组下标获取单元以及下标替换单元;
所述键名映射数组查询单元,用于在所述根据所述字段信息查询相应的数组之前,根据所述键值对的键名查询键名映射数组;
所述键名数组下标获取单元,用于获取存储所述键名的键名映射数组的数组元素的下标;
所述下标替换单元,用于将所述字段信息替换为所述数组元素的下标。
可选的,所述数组查询的装置,还包括:键值数组偏移值获取单元以及键值数组键值获取单元;
所述键值数组偏移值获取单元,用于在所述从所述数组中获取与所述字段信息相对应的数组元素之后,若所述数组在构建时,创建了键值映射数组,则根据所述数组元素,获取所述数组元素在所述键值映射数组内的偏移值;
所述键值数组键值获取单元,用于在所述键值映射数组内确定下标与所述偏移值相对应的数组元素,获取键值。
可选的,所述数组查询单元803,具体用于根据所述字段信息查询相应的bitmap数组;所述bitmap数组将预设的比特位数作为数组元素的容量;
所述元素获取单元805,用于从所述bitmap数组中获取与所述字段信息相对应的数组元素。
在上述的实施例中,提供了一种数组构建的方法、一种数组构建的装置、一种电子设备、一种数组查询的方法以及一种数组查询的装置,此外,本申请还提供了另一种电子设备;所述电子设备实施例如下:
请参考图9,其示出了根据本申请的实施例提供的电子设备的示意图。
所述电子设备,包括:显示器901;处理器903;存储器905;
所述存储器905,用于存储数组查询程序,所述程序在被所述处理器读取执行时,执行如下操作:获取待查询的字段信息;根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;从所述数组中获取与所述字段信息相对应的数组元素。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (21)
1.一种数组构建的方法,其特征在于,包括:
根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;
将所述比特位数作为数组元素的容量建立数组;
将各字段的取值存储到所述数组的数组元素内。
2.根据权利要求1所述的数组构建的方法,其特征在于,所述字段,包括:键值对。
3.根据权利要求2所述的数组构建的方法,其特征在于,所述根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数,包括:
根据待存储的各键值对的键值,确定存储最大键值占用的比特位数;或者
根据待存储的各键值对预设的键值容量,确定所述键值容量占用的比特位数。
4.根据权利要求3所述的数组构建的方法,其特征在于,所述将所述比特位数作为数组元素的容量建立数组时,包括:
按照所述数组元素在所述数组内的偏移位置,为所述数组元素设置下标。
5.根据权利要求4所述的数组构建的方法,其特征在于,所述将各字段的取值存储到所述数组的数组元素内,包括:
将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内。
6.根据权利要求2所述的数组构建的方法,其特征在于,若所述键值对的键值类型为文本型时,则为所述键值创建键值映射数组;所述键值映射数组用于存储各键值对的键值。
7.根据权利要求6所述的数组构建的方法,其特征在于,通过键值映射数组实现数组的构建,需要采取以下步骤:
将各键值对的键值,与存储所述键值的键值映射数组的数组元素的下标,建立映射关系;
在所述根据待存储的各字段的取值的步骤中,所述待存储的各键值对的键值为:存储所述键值的键值映射数组的数组元素的下标。
8.根据权利要求2所述的数组构建的方法,其特征在于,若所述键值对的键名类型为文本型时,则为所述键名创建键名映射数组;所述键名映射数组用于存储各键值对的键名。
9.根据权利要求8所述的数组构建的方法,其特征在于,通过键名映射数组实现数组的构建,需要采取以下步骤:
将各键值对的键名,与存储所述键名的键名映射数组的数组元素的下标,建立映射关系;
在所述将各字段的取值存储到所述数组的数组元素内的步骤中,包括:将各键值对的键值存储到所述数组中下标与各键值对的键名相对应的数组元素内;所述各键值对的键名为:存储所述键名的键名映射数组的数组元素的下标。
10.根据权利要求1-10任意一项所述的数组构建的方法,其特征在于,所述数组为bitmap数组。
11.一种数组构建的装置,其特征在于,包括:
比特位确定单元,用于根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;
数组建立单元,用于将所述比特位数作为数组元素的容量建立数组;
字段存储单元,用于将各字段的取值存储到所述数组的数组元素内。
12.一种电子设备,其特征在于,所述电子设备,包括:
显示器;
处理器;
存储器,用于存储数组构建程序,所述程序在被所述处理器读取执行时,执行如下操作:根据待存储的各字段的取值,确定能存储各字段的取值所需的比特位数;将所述比特位数作为数组元素的容量建立数组;将各字段的取值存储到所述数组的数组元素内。
13.一种数组查询的方法,其特征在于,包括:
获取待查询的字段信息;
根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;
从所述数组中获取与所述字段信息相对应的数组元素。
14.根据权利要求13所述的数组查询的方法,其特征在于,所述字段信息,包括:键值对的键名。
15.根据权利要求14所述的数组查询的方法,其特征在于,所述根据所述字段信息查询相应的数组,包括:
根据键值对的键名,获取所述键名在所述数组内的偏移值;
确定所述数组内下标与所述偏移值相对应的数组元素。
16.根据权利要求14所述的数组查询的方法,其特征在于,若所述待查询的字段信息的类型为文本型时,则获取所述数组在构建时创建的键名映射数组。
17.根据权利要求16所述的数组查询的方法,其特征在于,在所述根据所述字段信息查询相应的数组的步骤之前,包括:
根据所述键值对的键名查询键名映射数组;
获取存储所述键名的键名映射数组的数组元素的下标;
将所述字段信息替换为所述数组元素的下标。
18.根据权利要求13所述的数组查询的方法,其特征在于,在所述从所述数组中获取与所述字段信息相对应的数组元素的步骤之后,包括:
若所述数组在构建时,创建了键值映射数组,则根据所述数组元素,获取所述数组元素在所述键值映射数组内的偏移值;
在所述键值映射数组内确定下标与所述偏移值相对应的数组元素,获取键值。
19.根据权利要求13-18任意一项所述的数组查询的方法,其特征在于,所述数组为bitmap数组。
20.一种数组查询的装置,其特征在于,包括:
字段获取单元,用于获取待查询的字段信息;
数组查询单元,用于根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;
元素获取单元,用于从所述数组中获取与所述字段信息相对应的数组元素。
21.一种电子设备,其特征在于,所述电子设备,包括:
显示器;
处理器;
存储器,用于存储数组查询程序,所述程序在被所述处理器读取执行时,执行如下操作:获取待查询的字段信息;根据所述字段信息查询相应的数组;所述数组将预设的比特位数作为数组元素的容量;从所述数组中获取与所述字段信息相对应的数组元素。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611187039.4A CN108205577B (zh) | 2016-12-20 | 2016-12-20 | 一种数组构建、数组查询的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611187039.4A CN108205577B (zh) | 2016-12-20 | 2016-12-20 | 一种数组构建、数组查询的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108205577A true CN108205577A (zh) | 2018-06-26 |
CN108205577B CN108205577B (zh) | 2022-06-03 |
Family
ID=62604139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611187039.4A Active CN108205577B (zh) | 2016-12-20 | 2016-12-20 | 一种数组构建、数组查询的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108205577B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109036277A (zh) * | 2018-09-27 | 2018-12-18 | 京东方科技集团股份有限公司 | 补偿方法及补偿装置、显示装置、显示方法及存储介质 |
CN109150962A (zh) * | 2018-07-03 | 2019-01-04 | 北京东方网信科技股份有限公司 | 一种通过关键字快速识别http请求头的方法 |
CN109634955A (zh) * | 2018-11-15 | 2019-04-16 | 金蝶软件(中国)有限公司 | 数据存储方法、数据检索方法和装置 |
CN110209348A (zh) * | 2019-04-17 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN110597644A (zh) * | 2019-09-10 | 2019-12-20 | 深圳市元征科技股份有限公司 | 数据流传输方法、传输装置、电子设备及存储介质 |
CN110727675A (zh) * | 2018-07-17 | 2020-01-24 | 阿里巴巴集团控股有限公司 | 一种链表的处理方法及装置 |
CN110928483A (zh) * | 2018-09-19 | 2020-03-27 | 华为技术有限公司 | 数据存储、数据获取方法及设备 |
CN111680112A (zh) * | 2020-08-14 | 2020-09-18 | 支付宝(杭州)信息技术有限公司 | 一种数据分析方法及装置 |
CN111930313A (zh) * | 2020-08-12 | 2020-11-13 | 中国银行股份有限公司 | 主机中数据关联访问的方法和装置 |
CN112650887A (zh) * | 2020-12-22 | 2021-04-13 | 广州锦行网络科技有限公司 | 一种图数据库时间属性的快速查询方法 |
CN112860371A (zh) * | 2019-11-28 | 2021-05-28 | 北京京东振世信息技术有限公司 | 一种Queue容器的实现方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130275364A1 (en) * | 2012-04-17 | 2013-10-17 | Renmin University Of China | Concurrent OLAP-Oriented Database Query Processing Method |
CN103714134A (zh) * | 2013-12-18 | 2014-04-09 | 中国科学院计算技术研究所 | 一种网络流量数据索引方法及系统 |
US20150220684A1 (en) * | 2014-02-06 | 2015-08-06 | Reference Genomics, Inc. | System and method for characterizing biological sequence data through a probabilistic data structure |
CN105930366A (zh) * | 2016-04-13 | 2016-09-07 | 郑州悉知信息科技股份有限公司 | 一种统计方法及装置 |
CN105956085A (zh) * | 2016-04-29 | 2016-09-21 | 合网络技术(北京)有限公司 | 一种倒排索引的构建方法和装置、检索方法和装置 |
CN106202548A (zh) * | 2016-07-25 | 2016-12-07 | 网易(杭州)网络有限公司 | 数据存储方法、查找方法及装置 |
-
2016
- 2016-12-20 CN CN201611187039.4A patent/CN108205577B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130275364A1 (en) * | 2012-04-17 | 2013-10-17 | Renmin University Of China | Concurrent OLAP-Oriented Database Query Processing Method |
CN103714134A (zh) * | 2013-12-18 | 2014-04-09 | 中国科学院计算技术研究所 | 一种网络流量数据索引方法及系统 |
US20150220684A1 (en) * | 2014-02-06 | 2015-08-06 | Reference Genomics, Inc. | System and method for characterizing biological sequence data through a probabilistic data structure |
CN105930366A (zh) * | 2016-04-13 | 2016-09-07 | 郑州悉知信息科技股份有限公司 | 一种统计方法及装置 |
CN105956085A (zh) * | 2016-04-29 | 2016-09-21 | 合网络技术(北京)有限公司 | 一种倒排索引的构建方法和装置、检索方法和装置 |
CN106202548A (zh) * | 2016-07-25 | 2016-12-07 | 网易(杭州)网络有限公司 | 数据存储方法、查找方法及装置 |
Non-Patent Citations (1)
Title |
---|
石峰 等: ""从ELF文件结构看静态数组的构建"", 《电脑知识与技术》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150962A (zh) * | 2018-07-03 | 2019-01-04 | 北京东方网信科技股份有限公司 | 一种通过关键字快速识别http请求头的方法 |
CN109150962B (zh) * | 2018-07-03 | 2021-03-02 | 北京东方网信科技股份有限公司 | 一种通过关键字快速识别http请求头的方法 |
CN110727675A (zh) * | 2018-07-17 | 2020-01-24 | 阿里巴巴集团控股有限公司 | 一种链表的处理方法及装置 |
CN110727675B (zh) * | 2018-07-17 | 2023-06-27 | 阿里巴巴集团控股有限公司 | 一种链表的处理方法及装置 |
CN110928483A (zh) * | 2018-09-19 | 2020-03-27 | 华为技术有限公司 | 数据存储、数据获取方法及设备 |
CN110928483B (zh) * | 2018-09-19 | 2021-04-09 | 华为技术有限公司 | 数据存储、数据获取方法及设备 |
CN109036277A (zh) * | 2018-09-27 | 2018-12-18 | 京东方科技集团股份有限公司 | 补偿方法及补偿装置、显示装置、显示方法及存储介质 |
CN109634955A (zh) * | 2018-11-15 | 2019-04-16 | 金蝶软件(中国)有限公司 | 数据存储方法、数据检索方法和装置 |
CN110209348A (zh) * | 2019-04-17 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN110209348B (zh) * | 2019-04-17 | 2021-08-17 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN110597644A (zh) * | 2019-09-10 | 2019-12-20 | 深圳市元征科技股份有限公司 | 数据流传输方法、传输装置、电子设备及存储介质 |
CN112860371A (zh) * | 2019-11-28 | 2021-05-28 | 北京京东振世信息技术有限公司 | 一种Queue容器的实现方法和装置 |
CN111930313A (zh) * | 2020-08-12 | 2020-11-13 | 中国银行股份有限公司 | 主机中数据关联访问的方法和装置 |
CN111930313B (zh) * | 2020-08-12 | 2023-12-22 | 中国银行股份有限公司 | 主机中数据关联访问的方法和装置 |
CN111680112A (zh) * | 2020-08-14 | 2020-09-18 | 支付宝(杭州)信息技术有限公司 | 一种数据分析方法及装置 |
CN112650887A (zh) * | 2020-12-22 | 2021-04-13 | 广州锦行网络科技有限公司 | 一种图数据库时间属性的快速查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108205577B (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108205577A (zh) | 一种数组构建、数组查询的方法、装置及电子设备 | |
CN104881481B (zh) | 一种存取海量时间序列数据的方法及装置 | |
CN108846133B (zh) | 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
CN109558525B (zh) | 一种测试数据集的生成方法、装置、设备和存储介质 | |
WO2023131218A1 (zh) | 图数据的存储 | |
CN104021123A (zh) | 用于数据迁移的方法和系统 | |
CN107423037B (zh) | 应用程序接口定位方法及设备 | |
CN111416880A (zh) | Ip地址的寻址方法及装置,计算机存储介质及电子设备 | |
CN103077208A (zh) | 统一资源定位符匹配处理方法及装置 | |
JP2019520627A (ja) | データベース中にグラフ情報を記憶するためのb木使用 | |
Araujo et al. | Comparative performance analysis of NoSQL Cassandra and MongoDB databases | |
CN105912696A (zh) | 一种基于对数归并的dns索引创建方法及查询方法 | |
CN104636368A (zh) | 数据检索方法、装置及服务器 | |
CN110020001A (zh) | 字符串数据的存储、查询方法以及相应的设备 | |
TWI738726B (zh) | 遠端命令的處理方法和裝置 | |
CN104516740B (zh) | 一种函数调用方法、装置及移动终端 | |
CN111427845A (zh) | 一种交互式建模分析算子数据交换方法 | |
US10146791B2 (en) | Open file rebalance | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN105302912B (zh) | 一种数据存储方法及设备 | |
CN110825747B (zh) | 一种信息存取方法、装置和介质 | |
CN112835896B (zh) | 一种实时数据库数据热点均衡方法、装置、设备及介质 | |
CN104090942A (zh) | 应用于网络处理器中的Trie搜索方法及装置 | |
CN114866627A (zh) | 报文核对方法、装置、处理器及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |