CN109408491B - 一种数组规整方法、装置、终端及可读介质 - Google Patents

一种数组规整方法、装置、终端及可读介质 Download PDF

Info

Publication number
CN109408491B
CN109408491B CN201811151587.0A CN201811151587A CN109408491B CN 109408491 B CN109408491 B CN 109408491B CN 201811151587 A CN201811151587 A CN 201811151587A CN 109408491 B CN109408491 B CN 109408491B
Authority
CN
China
Prior art keywords
array
data information
migration
linked list
memory
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.)
Active
Application number
CN201811151587.0A
Other languages
English (en)
Other versions
CN109408491A (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.)
Beijing Kaijun Culture Media Co.,Ltd.
Original Assignee
Wuhan Douyu Network Technology 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201811151587.0A priority Critical patent/CN109408491B/zh
Publication of CN109408491A publication Critical patent/CN109408491A/zh
Application granted granted Critical
Publication of CN109408491B publication Critical patent/CN109408491B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种数组规整方法、装置、终端及可读介质,其中该方法包括:根据接收的规整指令确定剩余内存,根据剩余内存以及目标数组的数组长度确定迁移数组的数组长度,并定义迁移数组;轮询扫描目标数组,并将扫描获取的非空数据信息存储至迁移数组中;根据扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中;当扫描结束时,将获取到的链表对象中的数据信息存储至临时数组中;当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中。本发明实施例提供的一种数组规整方法、装置、终端及可读介质,实现了数组规整,减少了数组规整耗时,提高了数组规整效率。

Description

一种数组规整方法、装置、终端及可读介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种数组规整方法、装置、终端及可读介质。
背景技术
当Android终端中数组内数据为有序数据时,常需要将数组进行规整化处理,以方便对有序数据进行读取等操作。其中,规整化处理可以理解为将有序数据按数组的索引序号为0、1、2...n的顺序依次存储至数组,保证有序数据间没有空数据,且放置在数组前端,空余位置位于数组后端的处理操作。目前,常用的数组规整方法为,对数组内数据进行一一迁移。这种大批量数据一一迁移的操作耗时较长,速度较慢,从而导致数组规整效率较低。
发明内容
有鉴于此,本发明实施例提供了一种数组规整方法、装置、终端及可读介质,减少了数组规整耗时,提高了数组规整效率。
第一方面,本发明实施例提供了一种数组规整方法,包括:
接收规整指令,根据所述规整指令确定剩余内存,根据所述剩余内存以及目标数组的数组长度确定迁移数组的数组长度,根据迁移数组的数组长度定义迁移数组;
对目标数组的起始位置至终止位置依次进行扫描,获取扫描位置的数据信息,当判断所述数据信息不为空时,将所述数据信息存储至迁移数组中;
根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,并将目标数组内已完成扫描的扫描位置的数据信息清除;
当目标数组扫描结束时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,其中所述临时数组的数组长度与所述目标数组的数组长度相同;
当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中,并在数据信息回传结束时将临时数组的数据信息清空。
可选的,所述根据所述规整指令确定剩余内存,包括:
根据所述规整指令获取ActivityManager对象,调用ActivityManager对象的内存信息对象获取方法获取内存信息对象;
调用内存信息对象的可用内存获取方法获取可用内存,调用内存信息对象的总内存获取方法获取总内存,根据可用内存以及总内存确定剩余内存。
可选的,所述根据所述剩余内存以及目标数组的数组长度确定迁移数组的数组长度,包括:
当剩余内存大于等于内存阈值时,将目标数组的数组长度作为迁移数组的数组长度;
当剩余内存小于内存阈值时,将所述剩余内存的预设比例的内存空间作为迁移数组的数组长度。
可选的,所述对目标数组的起始位置至终止位置依次进行扫描,包括:
对目标数组的索引序号为0的位置至索引序号为目标数组长度减1的位置依次进行扫描。
可选的,所述根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,包括:
当迁移数组存储满时,获取迁移数组内数据信息,调用链表对象的添加方法将迁移数组内数据信息添加至链表对象中;
当迁移数组未存储满,目标数组扫描结束时,获取迁移数组内数据信息,调用链表对象的添加方法将迁移数组内数据信息添加至链表对象中。
可选的,所述依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,包括:
调用链表对象的获取方法依次获取链表对象中的数据信息;
调用数组存储方法将获取到的链表对象中的数据信息存储至临时数组中。
可选的,在所述接收规整指令之后,包括:
调用链表定义方法定义链表对象;
判断剩余内存是否满足定义临时数组需求,并在剩余内存满足定义临时数组需求时,调用数组定义方法定义临时数组;
相应的,当目标数组扫描结束时,若临时数组已定义,则依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中;
当目标数组扫描结束时,若临时数组未定义,则当临时数组成功定义时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中。
第二方面,本发明实施例提供了一种数组规整装置,包括:
迁移数组定义模块,用于接收规整指令,根据所述规整指令确定剩余内存,根据所述剩余内存以及目标数组的数组长度确定迁移数组的数组长度,根据迁移数组的数组长度定义迁移数组;
数据存储至迁移数组模块,用于对目标数组的起始位置至终止位置依次进行扫描,获取扫描位置的数据信息,当判断所述数据信息不为空时,将所述数据信息存储至迁移数组中;
数据迁移至链表对象模块,用于根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,并将目标数组内已完成扫描的扫描位置的数据信息清除;
数据存储至临时数组模块,用于当目标数组扫描结束时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,其中所述临时数组的数组长度与所述目标数组的数组长度相同;
数据回传模块,用于当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中,并在数据信息回传结束时将临时数组的数据信息清空。
第三方面,本发明实施例提供了一种终端,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的数组规整方法。
第四方面,本发明实施例提供了一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的数组规整方法。
本发明实施例提供的一种数组规整方法、装置、终端及可读介质,根据接收的规整指令确定剩余内存,根据剩余内存以及目标数组的数组长度确定迁移数组的数组长度,并定义迁移数组;轮询扫描目标数组,并将扫描获取的非空数据信息存储至迁移数组中;根据扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,并清除目标数组内完成扫描的数据信息;当扫描结束时,将获取到的链表对象中的数据信息存储至临时数组中;当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中。从而实现了数组规整,减少了数组规整耗时,提高了数组规整效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种数组规整方法流程图;
图2是本发明实施例二提供的一种数组规整装置结构示意图;
图3是本发明实施例三提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1是本发明实施例一提供的一种数组规整方法流程图,本实施例可适用于数组规整的情况,该方法可以由终端实现,具体可通过终端中的软件和/或硬件来实施。参见图1,该数组规整方法包括如下步骤:
S110、接收规整指令,根据规整指令确定剩余内存,根据剩余内存以及目标数组的数组长度确定迁移数组的数组长度,根据迁移数组的数组长度定义迁移数组。
其中,规整指令可以是用户通过按压终端物理按键或终端屏幕上虚拟按键所生成的指令。其中,规整指令还可以是底层程序自动检测到触发条件后生成的,例如可以是在检测到目标数组内存储的有序数据之间存在空数据时,触发生成规整指令,还可以是在检测到目标数组内存储有有序数据,但目标数组的起始位置为空时,触发生成规整指令。
根据规整指令获取系统的剩余内存,根据剩余内存的大小以及目标数组的数组长度确定迁移数组的数组长度,从而可以实现根据接收规整指令时的实际情况确定迁移数组的数组长度。其中,根据剩余内存的大小以及目标数组的数组长度确定迁移数组的数组长度,可以是当剩余内存较大时,直接根据目标数组的数组长度定义迁移数组的数组长度,迁移数组可以一次存储完全部目标数组的非空数据信息,从而可以一次将目标数组内的非空数据信息迁移至链表对象中去;也可以是当剩余内存较小时,根据剩余内存确定迁移数组长度,此时迁移数组的数组长度可能小于目标数组的数组长度,迁移数组不能一次存储完全部目标数组的非空数据信息,需要在存储满时就将数据信息迁移至链表对象中,因此迁移数组需要经过至少两次迁移操作以完成数据信息全部迁移至链表对象。
可选的,根据规整指令确定剩余内存,包括:
根据规整指令获取ActivityManager对象,调用ActivityManager对象的内存信息对象获取方法获取内存信息对象;调用内存信息对象的可用内存获取方法获取可用内存,调用内存信息对象的总内存获取方法获取总内存,根据可用内存以及总内存确定剩余内存。
其中,可以通过Android系统中的getSystemService(ACTIVITY_SERVICE);方法可以获取一个ActivityManager类型的ActivityManager对象,例如可以标记为mActivityManager。其中,ActivityManager对象的内存信息对象获取方法,具体可以是mActivityManager.MemoryInfo();其中MemoryInfo即为系统的内存信息对象。其中,可用内存获取方法具体可以是memInfo.availMem;其中,总内存获取方法具体可以是memInfo.totalMem。其中,将总内存减去可用内存即可确定到剩余内存。
可选的,根据剩余内存以及目标数组的数组长度确定迁移数组的数组长度,包括:
当剩余内存大于等于内存阈值时,将目标数组的数组长度作为迁移数组的数组长度;当剩余内存小于内存阈值时,将剩余内存的预设比例的内存空间作为迁移数组的数组长度。
其中,内存阈值可以为研发人员根据实际需求设置的固定数值,例如可以是10M、12M或34M等,在此对内存阈值数值不作具体限定;内存阈值还可以是根据目标数组的数组长度不同而变化的数值,具体可以是内存阈值与目标数组的数组长度呈正相关,例如可以是目标数组的数组长度,或者可以是2倍目标数组的数组长度,在此对正相关系数不作具体限定。
其中,当剩余内存大于等于内存阈值时,可以认为剩余内存较大,直接将目标数组的数组长度作为迁移数组的数组长度,迁移数组可以一次存储完全部目标数组的非空数据信息,从而可以一次将目标数组内的非空数据信息迁移至链表对象中去;当剩余内存小于内存阈值时,可以认为剩余内存较小,将剩余内存预设比例作为迁移数组的数组长度,若迁移数组的数组长度小于目标数组的数组长度,则迁移数组不能一次存储完全部目标数组的非空数据信息,需要在存储满时就将数据信息迁移至链表对象中,因此迁移数组需要经过至少两次迁移操作以完成数据信息全部迁移至链表对象。
其中,预设比例可以为小于等于0.5大于0的数值,例如可以是0.34或0.49等。迁移数组的数组长度小于等于剩余内存的0.5,可以保证开辟迁移数组后剩余的内存空间可以作为链表对象的内存,且迁移数组的数据可以完全迁移至链表对象中去。
根据剩余内存的大小以及目标数组的数组长度确定迁移数组的数组长度可将目标数组内非空的数据信息经过一次或多次迁移至链表对象中,不仅解决了数组规整过程中因系统内存过小产生的无法将目标数组非空数据信息添加至链表对象的问题,还解决了数据一一迁移的耗时问题,提高了规整过程中数据读写效率,从而提高了数组规整效率。
S120、对目标数组的起始位置至终止位置依次进行扫描,获取扫描位置的数据信息,当判断数据信息不为空时,将数据信息存储至迁移数组中。
其中,对目标数组的起始位置至终止位置依次进行扫描,可以理解为对目标数组进行轮询扫描。在轮询的循环结构体中,每次循环皆可获取到一个扫描位置的数据信息。当判断数据信息不为空时,可以将该数据信息作为有效数据信息,并将该数据信息存储至迁移数组中。当目标数组轮询扫描结束,则可以将目标数组中所有有效数据存储至迁移数组中去,从而实现了目标数组中有效数据信息间空数据的清理,从而完成了数组规整的初步清理空数据工作。
可选的,对目标数组的起始位置至终止位置依次进行扫描,包括:
对目标数组的索引序号为0的位置至索引序号为目标数组长度减1的位置依次进行扫描。
其中,目标数组第1、2、3...n个位置的索引序号分别为0、1、2...n-1,因此从目标数组的起始位置至终止位置的索引序号依次是0、1、2...byte1.length()-1;其中,byte1为目标数组的名称,可以表示目标数组,且目标数组的名称不限于byte1;其中,通过byte1.length方法可以确定目标数组的长度。
其中,在对目标数组的索引序号index1=0的位置至索引序号index1=byte1.legth()-1的位置进行扫描过程中,可以通过调用byte1[index1]的方法获取到索引序号对应位置的数据信息,也就是扫描位置的数据信息,其中index1可以表示目标数组的索引序号。在获取到数据信息后,可以通过调用byte1[index1]==null||byte1[index1]==”的方法判断数据信息是否为空,当数据信息为空时返回值为true,当数据信息不为空时返回值为false。当判断数据是不为空时,则可以将数据信息存储至迁移数组中去。
S130、根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,并将目标数组内已完成扫描的扫描位置的数据信息清除。
其中,目标数组的扫描进度以及迁移数组的存储状态,可能会出现三种情况:第一,迁移数组内数据信息已存储满,但目标数组还未扫描结束;第二,迁移数组内数据信息在恰好存储满时,目标数组也刚好扫描结束;第三,目标数组扫描结束了,但是迁移数组还未存储满。其中,当迁移数组还没存储满,目标数组还未扫描结束时,则继续将目标数组进行扫描,将扫描获取的非空数据信息存储至迁移数组中,直至出现上述的三种情况。
可选的,根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,包括:
当迁移数组存储满时,获取迁移数组内数据信息,调用链表对象的添加方法将迁移数组内数据信息添加至链表对象中;当迁移数组未存储满,目标数组扫描结束时,获取迁移数组内数据信息,调用链表对象的添加方法将迁移数组内数据信息添加至链表对象中。
其中,当迁移数组存储满时,无论目标数组是否扫描结束,都需要将迁移数组内数据信息添加至链表对象中去,以进行下一轮的迁移数组存储或结束迁移数组存储;其中,当迁移数组还未存储满,但目标数组已经扫描完毕时,则目标数组内所有非空数据信息都已经存储至迁移数组,此时迁移数组将不能达到存储满的状态了,需要将未存储满的迁移数组内的数据信息迁移至链表对象中去。
其中,链表对象的添加方法,具体可以是:
linkList.add(byte2[index2]);
其中,linkList为链表对象的名称,可以表示链表对象,且链表对象的名称不限于linkList;其中,byte2为迁移数组的名称,可以表示迁移数组,且迁移数组的名称不限于byte2;其中,index2可以表示迁移数组的索引序号。通过调用byte2[index2]的方法获取到索引序号对应位置的数据信息;其中,通过add方法可以将byte2[index2]添加至linkList中去。通过add方法将数据信息添加至链表对象,在插入的时候可以不用指令链表对象的插入位置,添加时可以保证每次数据信息都存储在链表对象前一个存储单元的指针所指向的存储单元中,使数据信息添加速度快,添加效率高,从而提高了数组规整效率。
其中,在将迁移数组内全部数据信息迁移至链表对象时,可以将目标数组内已完成扫描的扫描位置的数据信息清除,实现了目标数组的边扫描边清空,从而节省了系统的内存资源,避免了内存资源的浪费。
S140、当目标数组扫描结束时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,其中临时数组的数组长度与目标数组的数组长度相同。
其中,目标数组扫描结束,可以理解为目标数组全部非空数据信息已通过迁移数组全部迁移至链表对象中去了。其中,在系统内存不充裕的情况下,可以在目标数组被全部清空后再定义临时数组,并定义临时数组长度等于目标数组长度,以便于将临时数组向目标数组回传数据信息。
可选的,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,包括:
调用链表对象的获取方法依次获取链表对象中的数据信息;调用数组存储方法将获取到的链表对象中的数据信息存储至临时数组中。
其中,具体可以通过调用linkedList.get(index)方法来获取链表对象中的数据信息;其中,index可以表示链表对象的索引序号,通过调用get的方法可以获取到索引序号对应位置的数据信息。在获取到链表对象索引序号对应位置的数据信息后,可以将数据信息赋值给一数值变量,并将该数值变量赋值给临时数组,以实现将链表对象中的数据信息存储至临时数组中。示例性的,在可以将linkedList.get(index)赋值给变量item,并通过调用byte3[index3]=item的方法将数值变量存储至临时数组的索引序号为index3的位置处,从而实现将链表对象中的数据信息存储至临时数组中。
通过将获取的链表对象中的数据信息赋值给变量,并将变量的数值添加至临时数组相应索引序号中的位置,从而实现了通过一次轮询完成数据的读取和添加操作,提高了数据处理效率。
S150、当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中,并在数据信息回传结束时将临时数组的数据信息清空。
其中,当链表对象中全部数据存储至临时数组时,可以通过调用byte1=byte3方法将临时数组的数据信息回传至目标数组,可以理解为将临时数组完全复制给目标数组,从而完成数据间的数据信息的回传,由于数组完全复制操作耗时短,效率高,因此可以快速将规整好的临时数组重新回传给目标数组,提高了数组规整效率。其中,在目标数组的数据信息回传完毕后清空临时数组,可以实现系统内存资源的有效使用。
可选的,在接收规整指令之后,包括:
调用链表定义方法定义链表对象;判断剩余内存是否满足定义临时数组需求,并在剩余内存满足定义临时数组需求时,调用数组定义方法定义临时数组;
相应的,当目标数组扫描结束时,若临时数组已定义,则依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中;
当目标数组扫描结束时,若临时数组未定义,则当临时数组成功定义时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中。
其中,具体可以调用LinkedList linkList=new LinkedList()方法定义链表对象;其中,linkList为链表对象的名称,可以表示链表对象,且链表对象的名称不限于linkList;其中,可以通过new方法新建一个LinkedList类型的链表对象。
其中,剩余内存满足定义临时数组需求,可以理解为剩余内存中存在大于等于临时数组的数组长度的连续内存空间。其中,当开辟数组内存空间时,需要在剩余内存空间中搜寻所定义数组的数组长度的连续存储单元,只有在剩余内存中存在大于等于数组的数组长度的连续内存空间时,才能进行数组内存空间的开辟,从而实现数组的定义。
其中,可以通过调用private byte3[1024*1024*5]={}方法定义临时数组;其中,1024*1024*5表示临时数组byte3的大小为5M,该临时数组的长度等于目标数组的长度,可根据目标数组的长度进行更改,并不限于5M。
其中,可以在目标数组扫描结束后定义临时数组,还可以在接收到规整指令后就开始定义临时数组,当剩余内存中存在大于等于临时数组的数组长度的连续内存空间时,就调用数组定义方法定义临时数组。当目标数组扫描结束,即目标数组全部非空数据信息已通过迁移数组全部迁移至链表对象中去时,若临时数组已经定义完毕,即完成了内存空间的开辟,则直接可以进入将链表内数据信息存储至临时数组的步骤,从而节省了定义临时数组的时间,进一步提高数组规整效率;若临时数组还没有完成定义,即还没有完成内存空间的开辟,则只能等待剩余内存满足定义临时数组需求时,调用数组定义方法定义临时数组。
本实施例提供的一种数组规整方法,根据接收的规整指令确定剩余内存,根据剩余内存以及目标数组的数组长度确定迁移数组的数组长度,并定义迁移数组;轮询扫描目标数组,并将扫描获取的非空数据信息存储至迁移数组中;根据扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,并清除目标数组内完成扫描的数据信息;当扫描结束时,将获取到的链表对象中的数据信息存储至临时数组中;当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中。从而实现了数组规整,减少了数组规整耗时,提高了数组规整效率。
实施例二
图2是本发明实施例二提供的一种数组规整装置结构示意图,本实施例可适用于数组规整的情况。
参见图2,本实施例中数组规整装置,包括:
迁移数组定义模块210,用于接收规整指令,根据规整指令确定剩余内存,根据剩余内存以及目标数组的数组长度确定迁移数组的数组长度,根据迁移数组的数组长度定义迁移数组;
数据存储至迁移数组模块220,用于对目标数组的起始位置至终止位置依次进行扫描,获取扫描位置的数据信息,当判断数据信息不为空时,将数据信息存储至迁移数组中;
数据迁移至链表对象模块230,用于根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,并将目标数组内已完成扫描的扫描位置的数据信息清除;
数据存储至临时数组模块240,用于当目标数组扫描结束时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,其中临时数组的数组长度与目标数组的数组长度相同;
数据回传模块250,用于当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中,并在数据信息回传结束时将临时数组的数据信息清空。
可选的,迁移数组定义模块210,包括:
剩余内存确定子模块,用于根据规整指令获取ActivityManager对象,调用ActivityManager对象的内存信息对象获取方法获取内存信息对象;调用内存信息对象的可用内存获取方法获取可用内存,调用内存信息对象的总内存获取方法获取总内存,根据可用内存以及总内存确定剩余内存。
可选的,迁移数组定义模块210,还包括:
数组长度确定子模块,用于当剩余内存大于等于内存阈值时,将目标数组的数组长度作为迁移数组的数组长度;当剩余内存小于内存阈值时,将剩余内存的预设比例的内存空间作为迁移数组的数组长度。
可选的,数据存储至迁移数组模块220,包括:
扫描子模块,用于对目标数组的索引序号为0的位置至索引序号为目标数组长度减1的位置依次进行扫描。
可选的,数据迁移至链表对象模块230,包括:
数据迁移至链表对象子模块,用于当迁移数组存储满时,获取迁移数组内数据信息,调用链表对象的添加方法将迁移数组内数据信息添加至链表对象中;当迁移数组未存储满,目标数组扫描结束时,获取迁移数组内数据信息,调用链表对象的添加方法将迁移数组内数据信息添加至链表对象中。
可选的,数据存储至临时数组模块240,包括:
数据信息获取子模块,用于调用链表对象的获取方法依次获取链表对象中的数据信息;
数据存储至临时数组子模块,用于调用数组存储方法将获取到的链表对象中的数据信息存储至临时数组中。
可选的,数组规整装置,还包括:
链表定义模块,用于在接收规整指令之后,调用链表定义方法定义链表对象;
临时数组定义模块,用于在接收规整指令之后,判断剩余内存是否满足定义临时数组需求,并在剩余内存满足定义临时数组需求时,调用数组定义方法定义临时数组;
相应的,数据存储至临时数组模块240,具体用于:
当目标数组扫描结束时,若临时数组已定义,则依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中;
当目标数组扫描结束时,若临时数组未定义,则当临时数组成功定义时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中。
本实施例提供的数组规整装置,与实施例一提出的数组规整方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。
实施例三
本实施例提供了一种终端,可以用于数组规整的情况。图3是本发明实施例三提供的一种终端的结构示意图。参见图3,该终端包括:
一个或多个处理器310;
存储器320,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器310执行,使得所述一个或多个处理器310实现如实施例一提出的数组规整方法。
图3中以一个处理器310为例;处理器310和存储器320可以通过总线或其他方式连接,图3中以通过总线连接为例。
存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数组规整方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的数组规整方法。
存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本实施例提出的终端与实施例一提出的数组规整方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。
实施例四
本实施例提供一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如实施例一提出的数组规整方法。
本实施例提出的可读介质与实施例一提出的数组规整方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (8)

1.一种数组规整方法,其特征在于,包括:
接收规整指令,根据所述规整指令确定剩余内存,根据所述剩余内存以及目标数组的数组长度确定迁移数组的数组长度,根据迁移数组的数组长度定义迁移数组;
对目标数组的起始位置至终止位置依次进行扫描,获取扫描位置的数据信息,当判断所述数据信息不为空时,将所述数据信息存储至迁移数组中;
根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,并将目标数组内已完成扫描的扫描位置的数据信息清除;
当目标数组扫描结束时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,其中所述临时数组的数组长度与所述目标数组的数组长度相同;
当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中,并在数据信息回传结束时将临时数组的数据信息清空;
其中,所述根据所述剩余内存以及目标数组的数组长度确定迁移数组的数组长度,包括:
当剩余内存大于等于内存阈值时,将目标数组的数组长度作为迁移数组的数组长度;
当剩余内存小于内存阈值时,将所述剩余内存的预设比例的内存空间作为迁移数组的数组长度;
其中,所述内存阈值与所述目标数组的数组长度呈正相关;其中,所述预设比例为小于等于0.5,大于0的数值;
其中,在所述接收规整指令之后,包括:
调用链表定义方法定义链表对象;其中,当剩余内存小于内存阈值时,将定义迁移数组后剩余的内存空间作为所述链表对象的内存;
判断剩余内存是否满足定义临时数组需求,并在剩余内存满足定义临时数组需求时,调用数组定义方法定义临时数组;
相应的,当目标数组扫描结束时,若临时数组已定义,则依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中;
当目标数组扫描结束时,若临时数组未定义,则当临时数组成功定义时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述规整指令确定剩余内存,包括:
根据所述规整指令获取ActivityManager对象,调用ActivityManager对象的内存信息对象获取方法获取内存信息对象;
调用内存信息对象的可用内存获取方法获取可用内存,调用内存信息对象的总内存获取方法获取总内存,根据可用内存以及总内存确定剩余内存。
3.根据权利要求1所述的方法,其特征在于,所述对目标数组的起始位置至终止位置依次进行扫描,包括:
对目标数组的索引序号为0的位置至索引序号为目标数组长度减1的位置依次进行扫描。
4.根据权利要求1所述的方法,其特征在于,所述根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,包括:
当迁移数组存储满时,获取迁移数组内数据信息,调用链表对象的添加方法将迁移数组内数据信息添加至链表对象中;
当迁移数组未存储满,目标数组扫描结束时,获取迁移数组内数据信息,调用链表对象的添加方法将迁移数组内数据信息添加至链表对象中。
5.根据权利要求1所述的方法,其特征在于,所述依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,包括:
调用链表对象的获取方法依次获取链表对象中的数据信息;
调用数组存储方法将获取到的链表对象中的数据信息存储至临时数组中。
6.一种数组规整装置,其特征在于,包括:
迁移数组定义模块,用于接收规整指令,根据所述规整指令确定剩余内存,根据所述剩余内存以及目标数组的数组长度确定迁移数组的数组长度,根据迁移数组的数组长度定义迁移数组;
数据存储至迁移数组模块,用于对目标数组的起始位置至终止位置依次进行扫描,获取扫描位置的数据信息,当判断所述数据信息不为空时,将所述数据信息存储至迁移数组中;
数据迁移至链表对象模块,用于根据目标数组的扫描进度以及迁移数组的存储状态,将迁移数组内数据信息迁移至链表对象中,并将目标数组内已完成扫描的扫描位置的数据信息清除;
数据存储至临时数组模块,用于当目标数组扫描结束时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中,其中所述临时数组的数组长度与所述目标数组的数组长度相同;
数据回传模块,用于当链表对象中全部数据信息存储至临时数组中时,将临时数组的数据信息回传至目标组数中,并在数据信息回传结束时将临时数组的数据信息清空;
其中,迁移数组定义模块,还包括:
数组长度确定子模块,用于当剩余内存大于等于内存阈值时,将目标数组的数组长度作为迁移数组的数组长度;当剩余内存小于内存阈值时,将剩余内存的预设比例的内存空间作为迁移数组的数组长度;其中,所述内存阈值与所述目标数组的数组长度呈正相关;其中,所述预设比例为小于等于0.5大于0的数值;
其中,数组规整装置,还包括:
链表定义模块,用于在接收规整指令之后,调用链表定义方法定义链表对象;其中,当剩余内存小于内存阈值时,将定义迁移数组后剩余的内存空间作为所述链表对象的内存;
临时数组定义模块,用于在接收规整指令之后,判断剩余内存是否满足定义临时数组需求,并在剩余内存满足定义临时数组需求时,调用数组定义方法定义临时数组;
相应的,数据存储至临时数组模块,具体用于:
当目标数组扫描结束时,若临时数组已定义,则依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中;
当目标数组扫描结束时,若临时数组未定义,则当临时数组成功定义时,依次获取链表对象中的数据信息,并将获取到的链表对象中的数据信息存储至临时数组中。
7.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的数组规整方法。
8.一种可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的数组规整方法。
CN201811151587.0A 2018-09-29 2018-09-29 一种数组规整方法、装置、终端及可读介质 Active CN109408491B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811151587.0A CN109408491B (zh) 2018-09-29 2018-09-29 一种数组规整方法、装置、终端及可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811151587.0A CN109408491B (zh) 2018-09-29 2018-09-29 一种数组规整方法、装置、终端及可读介质

Publications (2)

Publication Number Publication Date
CN109408491A CN109408491A (zh) 2019-03-01
CN109408491B true CN109408491B (zh) 2021-02-02

Family

ID=65466600

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811151587.0A Active CN109408491B (zh) 2018-09-29 2018-09-29 一种数组规整方法、装置、终端及可读介质

Country Status (1)

Country Link
CN (1) CN109408491B (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251848B (zh) * 2008-04-14 2010-06-09 中山大学 一种电子词典的快速单词查询系统
US8307258B2 (en) * 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
CN107315752B (zh) * 2016-04-27 2020-07-31 北京京东尚科信息技术有限公司 数据结转方法及系统

Also Published As

Publication number Publication date
CN109408491A (zh) 2019-03-01

Similar Documents

Publication Publication Date Title
CN108776897B (zh) 数据处理方法、装置、服务器及计算机可读存储介质
CN110427256B (zh) 基于优先级的作业调度优化方法、设备、存储介质及装置
CN106302632B (zh) 一种基础镜像的下载方法以及管理节点
CN106302780B (zh) 集群设备批量传输数据的方法、装置及系统、服务器
CN111190727B (zh) 内存的异步析构方法、装置、计算机设备及存储介质
CN107589990B (zh) 一种基于线程池的数据通讯的方法及系统
CN112104406B (zh) 自适应的自主任务规划方法和系统
CN105760458A (zh) 一种图片处理方法及电子设备
CN112000285A (zh) 强一致存储系统、数据强一致存储方法、服务器及介质
CN109408491B (zh) 一种数组规整方法、装置、终端及可读介质
CN109510850A (zh) 浏览请求的处理方法、装置及系统
EP3945420A1 (en) Method and apparatus for data processing, server and storage medium
CN108268497A (zh) 关系型数据库的数据同步方法及装置
CN112148668B (zh) 基于片上缓存的数据保存方法及装置、存储介质
CN112559116B (zh) 内存迁移方法、装置及计算设备
CN109344091B (zh) 一种缓冲数组规整方法、装置、终端及可读介质
CN110874189A (zh) 存储系统和存储控制方法
CN109388629B (zh) 一种数组规整方法、装置、终端及可读介质
CN114912587A (zh) 神经网络分布式训练系统、方法、装置、计算单元及介质
CN112165486B (zh) 网络地址集合拆分方法及装置
CN110673942B (zh) 一种云平台的异步进程结束方法、装置及云平台服务器
CN109948098B (zh) 数据过滤方法、缓存信息的记录方法及装置
CN114788294A (zh) 内容推送方法、装置、服务器及存储介质
CN112732819A (zh) 基于etl的数据处理方法、装置、设备和存储介质
CN112100446A (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
TR01 Transfer of patent right

Effective date of registration: 20240625

Address after: 101399 Donghai Hong Village, Nanfaxin Town, Shunyi District, Beijing (No. 322, H Zone, Shouqiang Yihongsheng Building Materials Market)

Patentee after: Beijing Kaijun Culture Media Co.,Ltd.

Country or region after: China

Address before: 11 / F, building B1, phase 4.1, software industry, No.1, Software Park East Road, Wuhan East Lake Development Zone, Wuhan City, Hubei Province, 430070

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China