一种数据存储方法和装置以及存储介质与流程

文档序号:15700900发布日期:2018-10-19 19:49阅读:162来源:国知局
本发明涉及计算机
技术领域
:,尤其涉及一种数据存储方法和装置以及存储介质。
背景技术
::在游戏应用程序中,处理不同区域信息时,需要使用一个32位的存储空间来标识某一个位置点的信息。然后把所有位置点的信息组成一张关于地形区域信息的二维地图矩阵,这样就可以满足通过位置快速查询区域信息的需求。在游戏应用程序中,往往采用1024*1024甚至更大的地图,例如在手游中,采用每0.5米一个区域信息的位置点,这样一个1024*1024的地图往往需要4兆的内存空间来存放地图信息。现有技术中,位置点的信息直接存储为一个二维矩阵。而直接使用二维矩阵存储的方式有如下缺点:需要申请整块的内存用于存放二维矩阵,特别是对比较大的地图,需要很大块的内存,例如采用每0.5米一个区域信息的位置点,当地图越大的时候,区域信息的位置点就越多。因此,现有技术提供的信息存储方式增大了对存储空间的占用,存在存储资源使用率低的问题。技术实现要素:本发明实施例提供了一种数据存储方法和装置以及存储介质,用于压缩原始矩阵,提高存储资源使用率。为解决上述技术问题,本发明实施例提供以下技术方案:第一方面,本发明实施例提供一种数据存储方法,包括:按照矩阵切分原则将原始矩阵切分为至少两个子矩阵,在切分前所述原始矩阵中元素的取值表示调色板数据,在切分后所述子矩阵中元素的取值表示所述调色板数据;为所述至少两个子矩阵中的不同子矩阵分别配置子矩阵索引;按照所述子矩阵在所述原始矩阵中的位置坐标以及所述子矩阵索引生成主矩阵,所述主矩阵中的元素与所述子矩阵在所述原始矩阵中的位置坐标一一对应,所述主矩阵中元素的取值表示相应的位置坐标对应的子矩阵索引;将所述主矩阵以及所述至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中。第二方面,本发明实施例还提供一种数据存储装置,包括:矩阵切分模块,用于按照矩阵切分原则将原始矩阵切分为至少两个子矩阵,在切分前所述原始矩阵中元素的取值表示调色板数据,在切分后所述子矩阵中元素的取值表示所述调色板数据;索引配置模块,用于为所述至少两个子矩阵中的不同子矩阵分别配置子矩阵索引;主矩阵生成模块,用于按照所述子矩阵在所述原始矩阵中的位置坐标以及所述子矩阵索引生成主矩阵,所述主矩阵中的元素与所述子矩阵在所述原始矩阵中的位置坐标一一对应,所述主矩阵中元素的取值表示相应的位置坐标对应的子矩阵索引;存储模块,用于将所述主矩阵以及所述至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中。在第二方面中,数据存储装置的组成模块还可以执行前述第一方面以及各种可能的实现方式中所描述的步骤,详见前述对第一方面以及各种可能的实现方式中的说明。第三方面,本发明实施例提供一种数据存储装置,该数据存储装置包括:处理器、存储器;存储器用于存储指令;处理器用于执行存储器中的指令,使得数据存储装置执行如前述第一方面中任一项的方法。第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。从以上技术方案可以看出,本发明实施例具有以下优点:在本发明实施例中,首先按照矩阵切分原则将原始矩阵切分为至少两个子矩阵,在切分前原始矩阵中元素的取值表示调色板数据,在切分后子矩阵中元素的取值表示调色板数据;为至少两个子矩阵中的不同子矩阵分别配置子矩阵索引;按照子矩阵在原始矩阵中的位置坐标以及子矩阵索引生成主矩阵,主矩阵中的元素与子矩阵在原始矩阵中的位置坐标一一对应,主矩阵中元素的取值表示相应的位置坐标对应的子矩阵索引;将主矩阵以及至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中。本发明实施例中可以对原始矩阵切分为至少两个子矩阵,并且不同子矩阵配置了子矩阵索引,在生成的主矩阵中包括有子矩阵索引,在数据存储时只需要存储主矩阵以及切分后的不同子矩阵,而对于切分后相同的子矩阵无需重复存储,因此对于原始矩阵进行压缩才会存储到压缩矩阵库中,减少对存储空间的占用,提高存储资源使用率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。图1为本发明一个实施例提供的一种数据存储方法的流程方框示意图;图2为本发明实施例中原始矩阵压缩为主矩阵和子矩阵的示意图;图3为本发明另一个实施例提供的一种数据存储方法的流程方框示意图;图4-a为发明实施例提供的调色板数据与位置点的区域信息之间的对应关系示意图;图4-b为本发明实施例中原始矩阵的压缩过程示意图;图5为本发明实施例中矩阵的查询流程示意图;图6-a为本发明实施例提供的一种数据存储装置的组成结构示意图;图6-b为本发明实施例提供的另一种数据存储装置的组成结构示意图;图6-c为本发明实施例提供的另一种数据存储装置的组成结构示意图;图6-d为本发明实施例提供的另一种数据存储装置的组成结构示意图;图6-e为本发明实施例提供的索引配置模块的组成结构示意图;图7为本发明实施例提供的数据存储方法应用于终端的组成结构示意图;图8为本发明实施例提供的数据存储方法应用于服务器的组成结构示意图。具体实施方式本发明实施例提供了一种数据存储方法和装置以及存储介质,用于压缩原始矩阵,提高存储资源使用率。为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。以下分别进行详细说明。本发明数据存储方法的一个实施例,具体可以应用于对矩阵的压缩存储中,可以有效地解决二维矩阵存储方式所需要的存储空间过大的问题,同时本发明实施例提供的数据存储方法对高频度的查询没有额外性能上的开销。例如,在游戏应用程序中,现有技术中二维矩阵直接存储的区域信息文件大小是4669字节(kb),而按照本发明实施例提供的矩阵压缩方式存储后的区域信息文件大小为129kb,因此极大减少了对存储空间的占用。请参阅图1所示,本发明一个实施例提供的数据存储方法,可以包括如下步骤:101、按照矩阵切分原则将原始矩阵切分为至少两个子矩阵,在切分前原始矩阵中元素的取值表示调色板数据,在切分后子矩阵中元素的取值表示调色板数据。在本发明实施例,首先获取到待存储的原始矩阵,原始矩阵中存储有数据,采用便携式网络图像格式(portablenetworkgraphics,png)的算法建立调色板机制,该原始矩阵中的元素的取值表示调色板数据。原始矩阵中可以包括多个元素,每个元素的取值表示调色板数据。本发明实施例中原始矩阵(matrix)是一个按照长方阵列排列的复数或实数。本发明实施例中待存储的原始矩阵可以是有限元素矩阵,即类稀疏矩阵,指的是在矩阵中,把所有矩阵元素做统计,会发现元素的个数是有限的。如图2所示,本发明实施例中原始矩阵压缩为主矩阵和子矩阵的示意图。举例说明,原始矩阵中可以包括8个元素,分别为:元素1、元素2、元素3、元素4、元素5、元素6、元素7和元素8。元素1、元素3、元素5、元素7的取值均为0x00,元素2、元素4、元素6、元素8的取值均为0x01,其中,0x00和0x01表示两种不同的调色板数据。本发明实施例获取到原始矩阵之后,按照矩阵切分原则将原始矩阵切分为至少两个子矩阵,其中,矩阵切分原则可以包括切分的矩阵粒度大小,例如可以将一个原始矩阵切分为四个子矩阵或者六个子矩阵。矩阵切分原则也可以包括子矩阵的块大小,例如子矩阵的块大小为8个元素,则原始矩阵中每8个元素可以被切分到一个子矩阵中。举例说明如下,原始矩阵可以为一个int数组,即占用4个字节(byte),子矩阵可以为1个字节。可以理解的是,在切分前原始矩阵中元素的取值表示调色板数据,在切分后,该原始矩阵中的调色板数据即为子矩阵中元素的取值。在本发明的一些实施例中,步骤101按照矩阵切分原则将原始矩阵切分为至少两个子矩阵之前,本发明实施例提供的方法还包括:获取应用程序的数据包;将数据包切分为多个子数据包,从子数据包中获取到原始矩阵。其中,本发明实施例中矩阵压缩的方法可以与数据包的分块技术相结合,例如应用程序的数据包可以包括地图数据,则本发明实施例提供的矩阵压缩的方法可以与地图分块技术相结合。本发明实施例中首先将数据包切分为多个子数据包,从子数据包中获取到原始矩阵,再对于每个原始矩阵触发执行步骤101以及后续步骤。举例说明本发明实施例中可以将压缩区域信息与地图分块技术相结合,这样就可以实现对超大世界无缝地图的区域信息支持。102、为至少两个子矩阵中的不同子矩阵分别配置子矩阵索引。在本发明实施例中,将原始矩阵切分为至少两个子矩阵中,若原始矩阵为标准的稀疏矩阵,那么切分后的至少两个子矩阵中会存在相同的子矩阵,此时只需要为切分后的每个不同子矩阵配置一个子矩阵索引。其中,子矩阵索引是子矩阵的标识,通过该子矩阵索引就可以获取到子矩阵中各个元素所取值表示的调色板数据。在本发明的一些实施例中,步骤102为至少两个子矩阵中的不同子矩阵分别配置子矩阵索引,包括:从至少两个子矩阵中查找是否存在相同的子矩阵,相同的子矩阵包括:多个子矩阵中相同位置坐标的元素取值表示的调色板数据都相同;对于查找到相同的子矩阵,为相同的子矩阵分别配置相同的子矩阵索引,以及对于查找到的不同子矩阵,为不同子矩阵分别配置不同的子矩阵索引。其中,如图2所示,将原始矩阵切分为8个子矩阵之后,可以得到8个子矩阵为:0x00、0x01、0x00、0x01、0x00、0x01、0x00、0x01,则在这8个子矩阵中,只有两种不同的子矩阵:0x00、0x01,其余6个子矩阵与前两个子矩阵都相同,则可以为0x00生成子矩阵索引1,为0x01生成子矩阵索引2。需要说明的是,相同的子矩阵包括:多个子矩阵中相同位置坐标的元素取值表示的调色板数据都相同,即在切分后的至少两个子矩阵中,若调色板数据完全相同,则可以确定两个子矩阵或者更多的子矩阵为相同的子矩阵。本发明实施例相同的子矩阵使用的是同一个子矩阵索引。103、按照子矩阵在原始矩阵中的位置坐标以及子矩阵索引生成主矩阵,主矩阵中的元素与子矩阵在原始矩阵中的位置坐标一一对应,主矩阵中元素的取值表示相应的位置坐标对应的子矩阵索引。在本发明实施例中,对于不同子矩阵都配置子矩阵索引之后,再根据子矩阵在原始矩阵中的位置坐标以及子矩阵索引生成主矩阵,其中,主矩阵可用于存储子矩阵索引,而主矩阵中的元素与子矩阵在原始矩阵中的位置坐标一一对应,即主矩阵与原始矩阵的区别在于,主矩阵存储了子矩阵索引,而不再存储调色板数据。主矩阵和原始矩阵具有相同的元素个数。如图2所示,生成的主矩阵也有8个元素,因此主矩阵和原始矩阵具有相同的元素个数,主矩阵与原始矩阵的区别在于,主矩阵存储了子矩阵索引一、子矩阵索引二、子矩阵索引一、子矩阵索引二、子矩阵索引一、子矩阵索引二、子矩阵索引一、子矩阵索引二。104、将主矩阵以及至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中。在本发明实施例中,通过步骤103生成了不同子矩阵分别对应的子矩阵索引之后,在数据存储时只需要存储主矩阵以及切分后的不同子矩阵,而对于切分后相同的子矩阵无需重复存储,因此对于原始矩阵进行压缩才会存储到压缩矩阵库中。本发明实施例中,压缩矩阵库中以主矩阵索引的方式存储主矩阵以及从原始矩阵中切分出的不重复的子矩阵,而对于重复的子矩阵不需要存储。减少对存储空间的占用,提高存储资源使用率。本发明实施例提供的压缩矩阵库用于存储原始矩阵中的调色板数据,但是相比于直接存储原始矩阵,本发明实施例中会大大减少对存储空间的占用,尤其适用于原始矩阵为稀疏矩阵的情况。通过以上实施例对本发明实施例的描述可知,首先按照矩阵切分原则将原始矩阵切分为至少两个子矩阵,在切分前原始矩阵中元素的取值表示调色板数据,在切分后子矩阵中元素的取值表示调色板数据;为至少两个子矩阵中的不同子矩阵分别配置子矩阵索引;按照子矩阵在原始矩阵中的位置坐标以及子矩阵索引生成主矩阵,主矩阵中的元素与子矩阵在原始矩阵中的位置坐标一一对应,主矩阵中元素的取值表示相应的位置坐标对应的子矩阵索引;将主矩阵以及至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中。本发明实施例中可以对原始矩阵切分为至少两个子矩阵,并且不同子矩阵配置了子矩阵索引,在生成的主矩阵中包括有子矩阵索引,在数据存储时只需要存储主矩阵以及切分后的不同子矩阵,而对于切分后相同的子矩阵无需重复存储,因此对于原始矩阵进行压缩才会存储到压缩矩阵库中,减少对存储空间的占用,提高存储资源使用率。请参考图3,其示出了本发明另一个实施例提供的数据存储方法的流程图,如图3所示,在本发明的一些实施例中,步骤104将主矩阵以及至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中之后,本发明实施例提供的方法还包括:301、获取待查询坐标。在本发明实施例中可以基于压缩矩阵库实现坐标查询,首先获取到待查询坐标,该待查询坐标可以表示为(x,z)。例如待查询坐标可以是游戏场景中某个游戏角色的坐标,或者游戏场景中的道具的坐标。在本发明的一些实施例中,步骤301获取待查询坐标,包括:获取终端的坐标读取指令;从坐标读取指令中获取到待查询坐标。其中,用户可以操作终端,通过该终端发送坐标读取指令,通过解析该坐标读取指令中获取到待查询坐标,例如用户需要获取游戏场景中某个位置点的区域信息,此时可以下发查询某个游戏角色的坐标。302、根据待查询坐标获取到待查询坐标对应于压缩矩阵库中的第一目标索引,通过第一目标索引确定出目标主矩阵。在本发明实施例中,第一目标索引和待查询坐标之间可以满足预设的对应关系,例如,待查询坐标可以表示为(x,z),第一目标索引为(i,j),则两者满足如下关系:游戏中采用i=x/0.5,j=y/0.5。303、根据第一目标索引和子矩阵的分块大小获取待查询坐标对应于目标主矩阵中的第二目标索引和对应于目标子矩阵中的第三目标索引。其中,子矩阵的分块大小可以通过矩阵切分原则来确定。例如第一目标索引为(i,j),待查询坐标对应于目标主矩阵中的第二目标索引为(mi,mj),对应于目标子矩阵中的第三目标索引为(si,sj),则满足如下关系:mi=i/分块长方形的长度,mj=j/分块长方形的高度,si=i%分块长方形的长度,sj=j%分块长方形的高度,/表示相除,%表示取余。304、根据第二目标索引从目标主矩阵中查找到目标位置坐标。在获取到第二目标索引之后,通过该第二目标索引从目标主矩阵中查找到目标位置坐标,在目标主矩阵中包括有多个元素,通过第二目标索引的取值,从而确定出目标位置坐标。305、根据目标位置坐标从压缩矩阵库中查找到目标子矩阵。其中,从目标主矩阵中查找到目标位置坐标之后,再使用目标位置坐标读取出目标子矩阵,由于在压缩矩阵库中存储的子矩阵都是不相同的子矩阵,而不存在重复的子矩阵,因此具有很高的子矩阵查询效率。306、根据第三目标索引从目标子矩阵中查找到目标调色板数据。其中,基于前述步骤计算出的第三目标索引来查询目标子矩阵,可以确定出该第三目标索引所指示的目标调色板数据。在本发明的一些实施例中,调色板数据与位置点的区域信息之间存在一一对应关系。例如对于每种调色板数据都唯一的对应一种位置点的区域信息,通过这种一一对应关系可以查找到位置点的区域信息。进一步的,在本发明的一些实施例中,步骤306根据第三目标索引从目标子矩阵中查找到目标调色板数据之后,本发明实施例提供的方法还包括:根据调色板数据与位置点的区域信息之间存在的一一对应关系,获取与目标调色板数据对应的目标位置点信息。其中,本发明实施例中采用调色板机制,预先存储有调色板数据与位置点的区域信息之间存在的一一对应关系,在获取到目标调色板数据之后,再通过上述对应关系获取与目标调色板数据对应的目标位置点信息,该目标位置信息可以用于在终端上的显示,从而用户可以看到所查询的坐标对应的位置点信息。为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。本发明实施例中对原始矩阵进行压缩,以优化原始矩阵占用的存储空间。举例说明,原始矩阵可以存储地形信息,而是在游戏场景中,一个地图区域信息的种类(如喝酒区、安全区、游泳区等等)不会超过5种,而且在一些小的区域上来看,很多块的信息都是一样的。因此优化的第一步可以按照png的算法,建立调色板机制,把int数据修改为byte数组,使用byte来代替int。第二步:因为许多块的信息是一样,其中信息一样是说两个地图区域的所有像素点的索引值都相同,因此可以把大的原始切分成小块的子矩阵,找出不同的子矩阵进行存储,然后建立以子矩阵为索引的二维矩阵。这样在查询的时候,通过二次矩阵查找和一次数组查找,就可以有效的压缩矩阵的大小。矩阵大小可以压缩到大约原来的1/20,效率方面,多了一次二维矩阵查找和数组查找,对性能影响可以忽略。本方案采用的矩阵压缩方法,可以有效地解决二维矩阵存储方式所需要的内存过大的问题,同时,对高频度的查询没有额外性能上的开销。在手游的场景中,以最常用的王城为例,二维矩阵存储的区域信息文件大小是4669kb,而本发明实施例采用的矩阵压缩方式存储的区域信息文件大小为129kb,占用的存储空间相比于直接存储二维矩阵要小很多。如图4-a所示,首先建立调色版本机制,建立一个调色板,主要目的是把int使用byte来保存。这个基础是建立在元素有限,例如位置点信息为0x00000000对应的调色板数据为0x00。接下来建立存储的压缩矩阵。压缩矩阵的流程如下,如图4-b所示,原始矩阵为12行4列,其中,每个元素为0x00、0x01、0x02、0x03、0x04中的某一个,原始矩阵分成主矩阵和子矩阵两个矩阵来存储数据。主矩阵中存储子矩阵索引。子矩阵储存原始矩阵的调色板数据。如图4-b所示:原始矩阵是图中的上半部分,下半部分是压缩后的数据存储的方式。其中,原始矩阵切分后的子矩阵只有两种,分别为子矩阵1和子矩阵2,最后需要存储主矩阵和两个子矩阵,而不需要在存储原始矩阵,因此对存储空间的占用要少于直接存储原始矩阵的方式。如图5所示,接下来对本发明实施例中矩阵的查询流程进行举例说明:s01、输入游戏角色的坐标x,z。s02、通过x,z计算出在原始矩阵的坐标i,j。例如,i=x/0.5,j=y/0.5,/表示相除。s03、通过块的大小计算出主矩阵索引和子矩阵索引。例如目标主矩阵的坐标为(i,j),待查询坐标对应于目标主矩阵中的主矩阵索引为(mi,mj),对应于目标子矩阵中的子矩阵索引为(si,sj),则满足如下关系:mi=i/分块长方形的长度,mj=j/分块长方形的高度,si=i%分块长方形的长度,sj=j%分块长方形的高度,%表示取余。s04、通过mi,mj在主矩阵中找出子矩阵坐标。s05、通过si,sj在子矩阵中找出调色板数据。s06、通过调色板数据在调色板中找出输出的int。s07、将找到的int输出。其中,主矩阵主要存储子矩阵索引,子矩阵主要存储调色板数据。调色板用于存储位置信息的数据,即存储int的数据的数组。本专利采用了主矩阵套子矩阵的方式,mi和mj是外层的主矩阵,查到的结果是指向内层的子矩阵索引,si和sj用于对内层的子矩阵进行查找索引。在数据存储方面,本发明实施例针对原有的数据进行压缩,因此不需要修改流程,只需要在原来的数据基础增加压缩后保存的方法即可。同时针对已经存在数据,直接读入,压缩,然后保存。在查找方面,可以按照图5所示的方式进行矩阵查找。本发明实施例在查找效率没有明显影响的情况下,减少了区域信息的内存占用,比例在1/20以上。同时减少安装包装的大小大约2m多,在使用unity3d的bundle压缩的情况下是60m多,优化后只有不到2.5m。可以极大的提高加载的效率。解决了区域信息存储的问题,高效的压缩方式的实现方式,而对效率没有影响。可灵活接入到各游戏项目中,帮助其他项目优化内存和安装包的大小。压缩区域信息与地图分块技术相结合,这样就可以支持超大世界无缝地图的区域信息支持。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参阅图6-a所示,本发明实施例提供的一种数据存储装置600,可以包括:矩阵切分模块601、索引配置模块602、主矩阵生成模块603、存储模块604,其中,矩阵切分模块601,用于按照矩阵切分原则将原始矩阵切分为至少两个子矩阵,在切分前所述原始矩阵中元素的取值表示调色板数据,在切分后所述子矩阵中元素的取值表示所述调色板数据;索引配置模块602,用于为所述至少两个子矩阵中的不同子矩阵分别配置子矩阵索引;主矩阵生成模块603,用于按照所述子矩阵在所述原始矩阵中的位置坐标以及所述子矩阵索引生成主矩阵,所述主矩阵中的元素与所述子矩阵在所述原始矩阵中的位置坐标一一对应,所述主矩阵中元素的取值表示相应的位置坐标对应的子矩阵索引;存储模块604,用于将所述主矩阵以及所述至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中。在本发明的一些实施例中,请参阅图6-b所示,相比于图6-a所示,所述数据存储装置600,还包括:矩阵获取模块605,用于所述矩阵切分模块601按照矩阵切分原则将原始矩阵切分为至少两个子矩阵之前,获取应用程序的数据包;将所述数据包切分为多个子数据包,从所述子数据包中获取到所述原始矩阵。在本发明的一些实施例中,请参阅图6-c所示,相比于图6-a所示,所述数据存储装置600,还包括:坐标获取模块606,用于所述存储模块604将所述主矩阵以及所述至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中之后,获取待查询坐标;主矩阵确定模块607,用于根据所述待查询坐标获取到所述待查询坐标对应于所述压缩矩阵库中的第一目标索引,通过所述第一目标索引确定出目标主矩阵;索引获取模块608,用于根据所述第一目标索引和子矩阵的分块大小获取所述待查询坐标对应于所述目标主矩阵中的第二目标索引和对应于目标子矩阵中的第三目标索引;坐标查找模块609,用于根据所述第二目标索引从所述目标主矩阵中查找到所述目标位置坐标;子矩阵查找模块610,用于根据所述目标位置坐标从所述压缩矩阵库中查找到所述目标子矩阵;数据查找模块611,用于根据所述第三目标索引从所述目标子矩阵中查找到目标调色板数据。在本发明的一些实施例中,所述调色板数据与位置点的区域信息之间存在一一对应关系。在本发明的一些实施例中,请参阅图6-d所示,相比于图6-c所示,所述数据存储装置600,还包括:信息获取模块612,用于所述数据查找模块611根据所述第三目标索引从所述目标子矩阵中查找到目标调色板数据之后,根据所述调色板数据与位置点的区域信息之间存在的一一对应关系,获取与所述目标调色板数据对应的目标位置点信息。在本发明的一些实施例中,所述坐标获取模块606,具体用于获取终端的坐标读取指令;从所述坐标读取指令中获取到所述待查询坐标。在本发明的一些实施例中,请参阅图6-e所示,所述索引配置模块602,包括:子矩阵查找单元6021,用于从所述至少两个子矩阵中查找是否存在相同的子矩阵,所述相同的子矩阵包括:多个子矩阵中相同位置坐标的元素取值表示的调色板数据都相同;索引配置单元6022,用于对于查找到相同的子矩阵,为所述相同的子矩阵分别配置相同的子矩阵索引,以及对于查找到的不同子矩阵,为所述不同子矩阵分别配置不同的子矩阵索引。通过以上对本发明实施例的描述可知,首先按照矩阵切分原则将原始矩阵切分为至少两个子矩阵,在切分前原始矩阵中元素的取值表示调色板数据,在切分后子矩阵中元素的取值表示调色板数据;为至少两个子矩阵中的不同子矩阵分别配置子矩阵索引;按照子矩阵在原始矩阵中的位置坐标以及子矩阵索引生成主矩阵,主矩阵中的元素与子矩阵在原始矩阵中的位置坐标一一对应,主矩阵中元素的取值表示相应的位置坐标对应的子矩阵索引;将主矩阵以及至少两个子矩阵中的不同子矩阵存储到压缩矩阵库中。本发明实施例中可以对原始矩阵切分为至少两个子矩阵,并且不同子矩阵配置了子矩阵索引,在生成的主矩阵中包括有子矩阵索引,在数据存储时只需要存储主矩阵以及切分后的不同子矩阵,而对于切分后相同的子矩阵无需重复存储,因此对于原始矩阵进行压缩才会存储到压缩矩阵库中,减少对存储空间的占用,提高存储资源使用率。本发明实施例还提供了另一种终端,如图7所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、pos(pointofsales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:图7示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图7,手机包括:射频(radiofrequency,rf)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(wirelessfidelity,wifi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。下面结合图7对手机的各个构成部件进行具体的介绍:rf电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,rf电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,lna)、双工器等。此外,rf电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystemofmobilecommunication,gsm)、通用分组无线服务(generalpacketradioservice,gprs)、码分多址(codedivisionmultipleaccess,cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、长期演进(longtermevolution,lte)、电子邮件、短消息服务(shortmessagingservice,sms)等。存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图7中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经rf电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。wifi属于短距离无线传输技术,手机通过wifi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了wifi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。处理器1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1080可包括一个或多个处理单元;优选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。手机还包括给各个部件供电的电源1090(比如电池),优选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。在本发明实施例中,该终端所包括的处理器1080还具有控制执行以上由终端执行的数据存储方法流程。图8是本发明实施例提供的一种服务器结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器1100上执行存储介质1130中的一系列指令操作。服务器1100还可以包括一个或一个以上电源1126,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。上述实施例中由服务器所执行的数据存储方法的步骤可以基于该图所示的服务器结构。另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1