CN105988715A - 数据存储方法及装置 - Google Patents

数据存储方法及装置 Download PDF

Info

Publication number
CN105988715A
CN105988715A CN201510060667.5A CN201510060667A CN105988715A CN 105988715 A CN105988715 A CN 105988715A CN 201510060667 A CN201510060667 A CN 201510060667A CN 105988715 A CN105988715 A CN 105988715A
Authority
CN
China
Prior art keywords
data cell
linked list
doubly linked
data
establishment
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.)
Pending
Application number
CN201510060667.5A
Other languages
English (en)
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.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Shenzhen Tencent Computer Systems 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 Shenzhen Tencent Computer Systems Co Ltd filed Critical Shenzhen Tencent Computer Systems Co Ltd
Priority to CN201510060667.5A priority Critical patent/CN105988715A/zh
Publication of CN105988715A publication Critical patent/CN105988715A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种数据存储方法及装置,属于数据处理技术领域。所述方法包括:创建待加入内存缓存中的数据单元,内存缓存中的数据单元以双向链表的方式进行存储;判断双向链表中的数据单元的个数是否达到预设数量;若双向链表中的数据单元的个数达到预设数量,将双向链表中最后一个数据单元删除,最后一个数据单元为最近被访问次数最少的数据单元;将创建的数据单元存储至双向链表最前面的位置。在双向链表中的数据单元的个数达到预设数量时,通过将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,以为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。

Description

数据存储方法及装置
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据存储方法及装置。
背景技术
随着科技的快速发展,使用终端处理数据的用户越来越多。终端在对数据处理前,通常需要在内存缓存中对数据进行存储。例如,终端在接收到服务器发送的网络数据时,通常会将接收到的网络数据在内存缓存中进行存储,以便于后续快速读取网络数据。由于内存缓存的大小有限,内存缓存中数据存储的方式影响着内存缓存的利用率,而内存缓存的利用率影响着读写数据的性能。因此,如何对数据进行存储是提高读写数据性能的关键。
相关技术中提供了一种数据存储方法,在该方法中,创建待加入内存缓存中的数据单元,数据单元中包括待处理的信息,如文本或图片信息等。若内存缓存被占满,则随机删除内存缓存中已保存的数据单元以释放存储空间,从而在留出存储空间后,在内存缓存中保存新创建的数据单元。
在实现本发明的过程中,发明人发现上述方法至少存在以下问题:
由于当内存缓存被占满时,会随机删除数据单元,从而使得内存缓存中可能会被多次访问的数据单元被删除后,需重新创建该数据单元并保存。因此,内存缓存的利用率较低。
发明内容
为了解决相关技术的问题,本发明实施例提供了一种数据存储方法及装置,所述技术方案如下:
一方面,提供了一种数据存储方法,所述方法包括:
创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双向链表的方式进行存储;
判断所述双向链表中的数据单元的个数是否达到预设数量;
若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
将创建的数据单元存储至所述双向链表最前面的位置。
另一方面,提供了一种数据存储装置,所述装置包括:
创建模块,用于创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双向链表的方式进行存储;
第一判断模块,用于判断所述双向链表中的数据单元的个数是否达到预设数量;
第一删除模块,用于当所述双向链表中的数据单元的个数达到预设数量时,将所述双向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
存储模块,用于将创建的数据单元存储至所述双向链表最前面的位置。
本发明实施例提供的技术方案带来的有益效果是:
通过判断双向链表中的数据单元的个数是否达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例示出的一种数据存储方法流程图;
图2是本发明另一实施例示出的一种数据存储方法流程图;
图3是本发明另一实施例示出的一种数据单元的结构示意图;
图4是本发明另一实施例示出的一种双向链表的结构示意图;
图5是本发明另一实施例示出的一种数据存储装置的结构示意图;
图6是本发明另一实施例示出的一种数据存储装置的结构示意图;
图7是本发明另一实施例示出的一种数据存储装置的结构示意图;
图8是本发明另一实施例示出的一种数据存储装置的结构示意图;
图9是本发明另一实施例示出的一种数据存储装置的结构示意图;
图10是本发明另一实施例示出的一种数据存储装置的结构示意图;
图11是本发明另一实施例示出的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
由于相关技术中在存储数据时,若内存缓存被占满,会随机删除内存缓存中已保存的数据单元以释放存储空间,从而在留出存储空间后,在内存缓存中保存新创建的数据单元,从而使得内存缓存中可能会被多次访问的数据单元被删除后,需重新创建该数据单元并保存。因此,内存缓存的利用率较低。
为了预防上述情况,提高内存缓存的利用率,本发明实施例提供了一种数据存储方法,参见图1,本实施例提供的方法流程包括:
101、创建待加入内存缓存中的数据单元,内存缓存中的数据单元以双向链表的方式进行存储。
102、判断双向链表中的数据单元的个数是否达到预设数量。
103、若双向链表中的数据单元的个数达到预设数量,将双向链表中最后一个数据单元删除,最后一个数据单元为最近被访问次数最少的数据单元。
104、将创建的数据单元存储至双向链表最前面的位置。
本发明实施例提供的方法,通过判断双向链表中的数据单元的个数是否达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
作为一种可选实施例,将创建的数据单元存储至双向链表最前面的位置之前,还包括:
判断创建的数据单元占用的存储空间是否大于第一预设阈值;
若创建的数据单元占用的存储空间不大于第一预设阈值,则执行将创建的数据单元存储至双向链表最前面的位置的步骤。
作为一种可选实施例,该方法还包括:
每隔预设周期检测双向链表占用的存储空间;
若双向链表占用的存储空间大于第二预设阈值,按照从后往前的顺序,对双向链表中的数据单元进行删除,直到双向链表占用的存储空间不大于第三预设阈值,第三预设阈值小于第二预设阈值。
作为一种可选实施例,将创建的数据单元存储至双向链表最前面的位置之后,还包括:
根据创建的数据单元,生成创建的数据单元的序列号;
根据创建的数据单元在内存缓存中的存储地址,定义对应的引用;
建立创建的数据单元的序列号及引用之间的映射关系,得到索引信息;
将索引信息保存至索引信息表中。
作为一种可选实施例,该方法还包括:
获取数据访问请求,数据访问请求中至少包含序列号;
根据数据访问请求中的序列号,在索引信息表中进行查询,得到对应的引用;
根据查询到的引用,访问双向链表中对应的数据单元。
作为一种可选实施例,该方法还包括:
当检测到双向链表中的任一数据单元被访问时,将任一数据单元移动至双向链表最前面的位置。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
本发明实施例提供了一种数据存储方法,参见图2,本实施例提供的方法流程包括:
201、创建待加入内存缓存中的数据单元,内存缓存中的数据单元以双向链表的方式进行存储。
由于内存缓存中的数据单元以双向链表的方式进行存储,因此,在创建待加入内存缓存中的数据单元时,可按照双向链表中节点的结构,创建数据单元,本实施例对此不作具体限定。
双向链表中的节点可包括但不限于由网络数据、前向数据引用及后向数据引用组成,本实施例对此不作具体限定。其中,双向链表中每个节点为一个数据单元。数据单元中的前向数据引用用于指向双向链表中该数据单元的前一个数据单元,数据单元中的后向数据引用用于指向双向链表中该数据单元的后一个数据单元,网络数据可以为从网络服务器中获取的文本信息或图片链接等,本实施例不对网络数据的内容作具体限定。
需要说明的是,本步骤201中的数据引用记录的是数据单元在内存缓存中的存储地址,用于指向数据单元。在创建的数据单元中的前向数据引用,所记录的是双向链表中该创建的数据单元的前一个数据单元在内存缓存中的存储地址。在创建的数据单元中的后向数据引用,所记录的是双向链表中该创建的数据单元的后一个数据单元在内存缓存中的存储地址。
例如,数据单元可以为如图3所示的结构,数据单元构成的双向链表可为如图4所示的结构。
202、判断双向链表中的数据单元的个数是否达到预设数量。
在判断双向链表中的数据单元的个数是否达到预设数量之前,可预先设置用于统计双向链表中的数据单元个数的变量,将该变量初始值设置为0。当检测到数据单元加入双向链表时,将该变量的值加1。本实施例不对判断双向链表中的数据单元的个数是否达到预设数量的方式作具体限定,包括但不限于:将该变量与预设数量比较;若该变量的值不小于预设数量,则确定双向链表中数据单元的个数达到了预设数量;反之,则确定双向链表中数据单元的个数未达到预设数量。其中,预设数量对应的数值可根据需求进行设置,本实施例对此不作具体限定。
由于内存缓存中的存储空间通常有限,而数据单元占用的存储空间通常维持在一个固定范围之内。当占用存储空间较大的数据单元存储至内存缓存中时,内存缓存中相对留给其它数据单元的存储空间也就变少了,而占用存储空间较大的数据单元被访问的次数通常较少,进而导致内存缓存中存储空间的利用率较低。因此,为了提高内存缓存中存储空间的利用率,在将创建的数据单元添加至双向链表最前面的位置之前,还可以判断创建的数据单元占用的存储空间是否大于第一预设阈值。若创建的数据单元占用的存储空间不大于第一预设阈值,则执行将创建的数据单元添加至双向链表最前面的位置的步骤。其中,第一预设阈值可根据需求进行设置,本实施例对此不作具体限定。根据经验,可将第一预设阈值设置为64KB(KiloByte,千字节)。
203、若双向链表中的数据单元的个数达到预设数量,将双向链表中最后一个数据单元删除,最后一个数据单元为最近使用次数最少的数据单元。
由于双向链表中数据单元的前向数据引用指向该数据单元的前一个数据单元,后向数据引用指向该数据单元的后一个数据单元,而双向链表中的第一个数据单元由于前面没有其它的数据单元,第一个数据单元中的前向数据引用为空,不指向任何数据单元。同理,双向链表中的最后一个数据单元由于后续没有其它的数据单元,则最后一个数据单元中的后向数据引用为空,不指向任何数据单元。因此,为了便于对双向链表进行操作,可在双向链表中创建一个表头及表尾,本实施例对此不作具体限定。其中,表头及表尾可与数据单元具有相同的数据结构,添加表头及表尾的双向链表可如图4所示。
以上述内容为基础,本实施例不对将双向链表中最后一个数据单元删除的方式作具体限定,包括但不限于:将表尾的前向数据引用指向双向链表中最后一个数据单元的前一个数据单元,将双向链表中最后一个数据单元的前一个数据单元的后向数据引用指向表尾;释放最后一个数据单元的存储空间。
需要说明的是,由于后续需对双向链表中的数据单元进行访问,而在一次访问过程中,本次被访问的数据单元有很大概率在后续访问过程中,继续被访问。因此,当检测到双向链表中的任一数据单元被访问时,可将该任一数据单元移动至双向链表最前面的位置,本实施例对此不作具体限定。通过上述对数据单元在双向链表中的位置调动过程,最近被访问次数较少的数据单元会处于双向链表中靠后的位置,最近被访问次数较多的数据单元会处于双向链表中靠前的位。即被访问概率低的数据单元会处于双向链表中靠后的位置,被访问概率高的数据单元会处于双向链表中靠前的位置,从而通过数据单元在双向链表中的位置,能够有效区分哪些数据单元是访问概率高的数据单元,哪些数据单元是访问概率低的数据单元。其中,双向链表中的最后一个数据单元为最近被访问次数最少的数据单元,也为被访问概率最低的数据单元。
通过上述删除过程,能够避免被访问概率高的数据单元被删除,从而重新创建该数据单元并保存的过程。在提高内存缓存利用率的同时,还提高了访问双向链表中数据单元的速度。
204、将创建的数据单元添加至双向链表最前面的位置。
以上述步骤203中的内容为基础,本实施例不对将创建的数据单元添加至双向链表最前面的位置的方式作具体限定,包括但不限于:将当前双向链表中的表头后面的数据单元的前向数据引用指向创建的数据单元,将创建的数据单元的后向数据引用指向当前双向链表中的表头后面的数据单元,将表头的后向数据引用指向创建的数据单元,将创建的数据单元的前向数据引用指向表头。
另外,由于上述步骤201至204是在双向链表中的数据单元的个数达到预设数量的条件下,在双向链表添加数据单元的过程。而在实际操作过程中,在双向链表中添加数据单元时,双向链表中的数据单元的个数可能还没有达到预设数量。此时,可直接将创建的数据单元存储至双向链表最前面的位置,本实施例对此不作具体限定。其中,存储方式可参考本步骤204中的过程,此处不再赘述。
需要说明的是,由于内存缓存中的存储空间有限,当内存缓存中存储的数据占用的存储空间达到一定值时,可能会影响内存缓存的性能。因此,为了避免内存缓存被占用太多,可每隔预设周期检测双向链表占用的存储空间,若双向链表占用的存储空间大于第二预设阈值,按照从后往前的顺序,对双向链表中的数据单元进行删除,直到双向链表占用的存储空间不大于第三预设阈值,本实施例对此不作具体限定。其中,第三预设阈值小于第二预设阈值,预设周期可根据需求进行设定,本实施例对此不作具体限定。例如,可将预设周期设置为10秒。
例如,以双向链表中存储了10个数据单元,以从后往前的顺序,第一个数据单元至第十个数据单元占用的存储空间分别为60KB、62KB、63KB、61KB、55KB、58KB、59KB、54KB、57KB、60KB为例。根据每个数据单元占用的存储空间,可得到双向链表占用的总存储空间为589KB。
若第二预设阈值为650KB,由于双向链表占用的存储空间不大于第二预设阈值,因此,可不用对双向链表中的数据单元进行删除。
若第二预设阈值为512KB,由于双向链表占用的存储空间大于第二预设阈值,因此,可对双向链表中的数据单元进行删除。根据上述步骤203可知,被访问概率低的数据单元位于双向链表中靠后的位置。因此,在删除数据单元时,可按照从后往前的顺序,对数据单元进行删除。在本例中,可先删除占用存储空间为60KB的最后一个数据单元。在删除最后一个数据单元后,双向链表占用的存储空间为(589-60)=529KB。
若第三预设阈值为128KB,由于删除数据单元后,双向链表占用的存储空间还是大于128KB。因此,可继续按照从后往前的顺序,对数据单元进行删除,直到删除至第二个数据单元。由于删除至第二个数据单元时,双向链表占用的存储空间为122KB,小于第三预设阈值128KB,从而可停止对数据单元进行删除,并继续执行存储或访问数据单元等步骤。
需要的说明的是,除了上述步骤201至204中的数据存储过程之外,由于实际操作中,可能还需要对内存缓存中的数据进行访问。为了便于对内存缓存中的数据进行访问,在将创建的数据单元添加至双向链表最前面的位置之后,还可执行如下步骤。
205、根据创建的数据单元,生成创建的数据单元的序列号。
本实施例不对根据创建的数据单元,生成创建的数据单元的序列号的方式作具体限定,包括但不限于:按照MD5(Message Digest Algorithm,消息摘要算法第五版)对创建的数据单元对应的数据进行计算,得到创建的数据单元的序列号。
206、根据创建的数据单元在内存缓存中的存储地址,定义对应的引用。
由于后续需访问内存缓存中的数据单元,而通过数据单元在内存缓存中的存储地址,就可以对数据单元进行访问。因此,可根据创建的数据单元在内存缓存中的存储地址,定义对应的引用,通过引用将数据单元在内存缓存中的存储地址记录下来。当然,还可以通过指针记录数据单元在内存缓存中的存储地址,本实施例对此不作具体限定。
需要说明的是,本步骤206中定义的引用记录的是创建的数据单元在内存缓存中的存储地址,用于指向创建的数据单元。而在创建的数据单元中的前向数据引用,所记录的是创建的数据单元在双向链表中的前一个数据单元,在内存缓存中的存储地址。在创建的数据单元中的后向数据引用,所记录的是创建的数据单元在双向链表中的后一个数据单元,在内存缓存中的存储地址。
207、建立创建的数据单元的序列号及引用之间的映射关系,得到索引信息。
通过上述步骤206及步骤207,在得到创建的数据单元的序列号及引用后,可以表项的形式建立序列号及引用之间的映射关系,得到索引信息。例如,得到索引信息可如下表1所示:
表1
65f1c1fe6f417ec4 Pointer_1
其中,左边为创建的单元的序列号,右边为创建的数据单元的引用。
208、将索引信息保存至索引信息表中。
通过上述步骤207,在得到创建的数据单元对应的索引信息后,可将索引信息保存至索引信息表。其中,索引信息表可如下表2所示:
表2
序列号 引用
65f1c1fe6f417ec4 Pointer_1
55f1c1fe6f417ec4 Pointer_2
…… ……
以上述内容为基础,本实施例还提供了一种数据访问方法,包括但不限于:获取数据访问请求,数据访问请求中至少包含序列号;根据数据访问请求中的序列号,在索引信息表中进行查询,得到对应的引用;根据查询到的引用,访问双向链表中对应的数据单元。
例如,若数据访问请求中的序列号为65f1c1fe6f417ec4,通过查询表2,可得到对应的引用为Pointer_1。由于引用记录了数据单元在内存缓存中的存储地址,因此,根据引用Pointer_1,即可对内存缓存中对应的数据单元进行访问。
需要说明的是,当检测到双向链表中的任一数据单元被访问时,由于本次被访问的数据单元是最近被访问的数据单元。因此,可将任一数据单元移动至双向链表最前面的位置,本实施例对此不作具体限定。在本次访问过程结束后,可将引用Pointer_1对应的数据单元移动至双向链表最前面的位置。
本发明实施例提供的方法,通过判断双向链表中的数据单元的个数是否达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
本发明实施例提供了一种数据存储装置,该装置用于执行上述实施例提供的数据存储方法。参见图5,该装置包括:
创建模块501,用于创建待加入内存缓存中的数据单元,内存缓存中的数据单元以双向链表的方式进行存储;
第一判断模块502,用于判断双向链表中的数据单元的个数是否达到预设数量;
第一删除模块503,用于当双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,最后一个数据单元为最近被访问次数最少的数据单元;
存储模块504,用于将创建的数据单元存储至双向链表最前面的位置。
作为一种可选实施例,参见图6,该装置还包括:
第二判断模块505,用于判断创建的数据单元占用的存储空间是否大于第一预设阈值;
添加模块504,用于当创建的数据单元占用的存储空间不大于第一预设阈值时,则执行将创建的数据单元存储至双向链表最前面的位置的步骤。
作为一种可选实施例,参见图7,该装置还包括:
检测模块506,用于每隔预设周期检测双向链表占用的存储空间;
第二删除模块507,用于当双向链表占用的存储空间大于第二预设阈值时,按照从后往前的顺序,对双向链表中的数据单元进行删除,直到双向链表占用的存储空间不大于第三预设阈值,第三预设阈值小于第二预设阈值。
作为一种可选实施例,参见图8,该装置还包括:
生成模块508,用于根据创建的数据单元,生成创建的数据单元的序列号;
定义模块509,用于根据创建的数据单元在内存缓存中的存储地址,定义对应的引用;
建立模块510,用于建立创建的数据单元的序列号及引用之间的映射关系,得到索引信息;
保存模块511,用于将索引信息保存至索引信息表中。
作为一种可选实施例,参见图9,该装置还包括:
获取模块512,用于获取数据访问请求,数据访问请求中至少包含序列号;
查询模块513,用于根据数据访问请求中的序列号,在索引信息表中进行查询,得到对应的引用;
访问模块514,用于根据查询到的引用,访问双向链表中对应的数据单元。
作为一种可选实施例,参见图10,该装置还包括:
移动模块515,用于当检测到双向链表中的任一数据单元被访问时,将任一数据单元移动至双向链表最前面的位置。
本发明实施例提供的装置,通过判断双向链表中的数据单元的个数是否达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
本实施例提供了一种终端,该终端可以用于执行上述各个实施例中提供的数据存储方法。参见图11,该终端1100包括:
终端1100可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(Wireless Fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图11中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband CodeDivision Multiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1100的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端1100的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图11中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
终端1100还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端1100移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端1100还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端1100之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端1100的通信。
WiFi属于短距离无线传输技术,终端1100通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图11示出了WiFi模块170,但是可以理解的是,其并不属于终端1100的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端1100的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端1100的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端1100还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端1100还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。所述一个或者一个以上程序包含用于执行以下操作的指令:
创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双向链表的方式进行存储;
判断所述双向链表中的数据单元的个数是否达到预设数量;
若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
将所述创建的数据单元存储至所述双向链表最前面的位置。
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:
判断所述创建的数据单元占用的存储空间是否大于第一预设阈值;
若所述创建的数据单元占用的存储空间不大于第一预设阈值,则执行将所述创建的数据单元存储至所述双向链表最前面的位置的步骤。
在第一种可能的实施方式作为基础而提供的第三种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:
每隔预设周期检测所述双向链表占用的存储空间;
若所述双向链表占用的存储空间大于第二预设阈值,按照从后往前的顺序,对所述双向链表中的数据单元进行删除,直到所述双向链表占用的存储空间不大于第三预设阈值,所述第三预设阈值小于所述第二预设阈值。
在第一种可能的实施方式作为基础而提供的第四种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:
根据所述创建的数据单元,生成所述创建的数据单元的序列号;
根据所述创建的数据单元在所述内存缓存中的存储地址,定义对应的引用;
建立所述创建的数据单元的序列号及引用之间的映射关系,得到索引信息;
将所述索引信息保存至索引信息表中。
在第四种可能的实施方式作为基础而提供的第五种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:
获取数据访问请求,所述数据访问请求中至少包含序列号;
根据所述数据访问请求中的序列号,在所述索引信息表中进行查询,得到对应的引用;
根据查询到的引用,访问所述双向链表中对应的数据单元。
在第一种可能的实施方式或第五种可能的实施方式作为基础而提供的第六种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:
当检测到所述双向链表中的任一数据单元被访问时,将所述任一数据单元移动至所述双向链表最前面的位置。
本发明实施例提供的终端,通过判断双向链表中的数据单元的个数是否达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个以上程序,该一个或者一个以上程序被一个或者一个以上的处理器用来执行实现数据存储方法,该方法包括:
创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双向链表的方式进行存储;
判断所述双向链表中的数据单元的个数是否达到预设数量;
若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
将所述创建的数据单元存储至所述双向链表最前面的位置。
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,所述将所述创建的数据单元存储至所述双向链表最前面的位置之前,还包括:
判断所述创建的数据单元占用的存储空间是否大于第一预设阈值;
若所述创建的数据单元占用的存储空间不大于第一预设阈值,则执行将所述创建的数据单元存储至所述双向链表最前面的位置的步骤。
在第一种可能的实施方式作为基础而提供的第三种可能的实施方式中,所述方法还包括:
每隔预设周期检测所述双向链表占用的存储空间;
若所述双向链表占用的存储空间大于第二预设阈值,按照从后往前的顺序,对所述双向链表中的数据单元进行删除,直到所述双向链表占用的存储空间不大于第三预设阈值,所述第三预设阈值小于所述第二预设阈值。
在第一种可能的实施方式作为基础而提供的第四种可能的实施方式中,所述将所述创建的数据单元存储至所述双向链表最前面的位置之后,还包括:
根据所述创建的数据单元,生成所述创建的数据单元的序列号;
根据所述创建的数据单元在所述内存缓存中的存储地址,定义对应的引用;
建立所述创建的数据单元的序列号及引用之间的映射关系,得到索引信息;
将所述索引信息保存至索引信息表中。
在第四种可能的实施方式作为基础而提供的第五种可能的实施方式中,所述方法还包括:
获取数据访问请求,所述数据访问请求中至少包含序列号;
根据所述数据访问请求中的序列号,在所述索引信息表中进行查询,得到对应的引用;
根据查询到的引用,访问所述双向链表中对应的数据单元。
在第一种可能的实施方式或第五种可能的实施方式作为基础而提供的第六种可能的实施方式中,当检测到所述双向链表中的任一数据单元被访问时,将所述任一数据单元移动至所述双向链表最前面的位置。
本发明实施例提供的计算机可读存储介质,通过判断双向链表中的数据单元的个数是否达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
本发明实施例提供了一种图形用户接口,所述图形用户接口用在终端上,所述终端包括触摸屏显示器、存储器和用于执行一个或者一个以上的程序的一个或者一个以上的处理器;所述图形用户接口包括:
创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双向链表的方式进行存储;
判断所述双向链表中的数据单元的个数是否达到预设数量;
若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
将所述创建的数据单元存储至所述双向链表最前面的位置。
本发明实施例提供的图形用户接口,通过判断双向链表中的数据单元的个数是否达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
需要说明的是:上述实施例提供的数据存储装置在存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种数据存储方法,其特征在于,所述方法包括:
创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双向链表的方式进行存储;
判断所述双向链表中的数据单元的个数是否达到预设数量;
若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
将创建的数据单元存储至所述双向链表最前面的位置。
2.根据权利要求1所述的方法,其特征在于,所述将创建的数据单元存储至所述双向链表最前面的位置之前,还包括:
判断所述创建的数据单元占用的存储空间是否大于第一预设阈值;
若所述创建的数据单元占用的存储空间不大于第一预设阈值,则执行将所述创建的数据单元存储至所述双向链表最前面的位置的步骤。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
每隔预设周期检测所述双向链表占用的存储空间;
若所述双向链表占用的存储空间大于第二预设阈值,按照从后往前的顺序,对所述双向链表中的数据单元进行删除,直到所述双向链表占用的存储空间不大于第三预设阈值,所述第三预设阈值小于所述第二预设阈值。
4.根据权利要求1所述的方法,其特征在于,所述将创建的数据单元存储至所述双向链表最前面的位置之后,还包括:
根据所述创建的数据单元,生成所述创建的数据单元的序列号;
根据所述创建的数据单元在所述内存缓存中的存储地址,定义对应的引用;
建立所述创建的数据单元的序列号及引用之间的映射关系,得到索引信息;
将所述索引信息保存至索引信息表中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取数据访问请求,所述数据访问请求中至少包含序列号;
根据所述数据访问请求中的序列号,在所述索引信息表中进行查询,得到对应的引用;
根据查询到的引用,访问所述双向链表中对应的数据单元。
6.根据权利要求1至5中任一权利要求所述的方法,其特征在于,所述方法还包括:
当检测到所述双向链表中的任一数据单元被访问时,将所述任一数据单元移动至所述双向链表最前面的位置。
7.一种数据存储装置,其特征在于,所述装置包括:
创建模块,用于创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双向链表的方式进行存储;
第一判断模块,用于判断所述双向链表中的数据单元的个数是否达到预设数量;
第一删除模块,用于当所述双向链表中的数据单元的个数达到预设数量时,将所述双向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
存储模块,用于将创建的数据单元存储至所述双向链表最前面的位置。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于判断所述创建的数据单元占用的存储空间是否大于第一预设阈值;
所述添加模块,用于当所述创建的数据单元占用的存储空间不大于第一预设阈值时,则执行将所述创建的数据单元存储至所述双向链表最前面的位置的步骤。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
检测模块,用于每隔预设周期检测所述双向链表占用的存储空间;
第二删除模块,用于当所述双向链表占用的存储空间大于第二预设阈值时,按照从后往前的顺序,对所述双向链表中的数据单元进行删除,直到所述双向链表占用的存储空间不大于第三预设阈值,所述第三预设阈值小于所述第二预设阈值。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
生成模块,用于根据所述创建的数据单元,生成所述创建的数据单元的序列号;
定义模块,用于根据所述创建的数据单元在所述内存缓存中的存储地址,定义对应的引用;
建立模块,用于建立所述创建的数据单元的序列号及引用之间的映射关系,得到索引信息;
保存模块,用于将所述索引信息保存至索引信息表中。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
获取模块,用于获取数据访问请求,所述数据访问请求中至少包含序列号;
查询模块,用于根据所述数据访问请求中的序列号,在所述索引信息表中进行查询,得到对应的引用;
访问模块,用于根据查询到的引用,访问所述双向链表中对应的数据单元。
12.根据权利要求7至11中任一权利要求所述的装置,其特征在于,所述装置还包括:
移动模块,用于当检测到所述双向链表中的任一数据单元被访问时,将所述任一数据单元移动至所述双向链表最前面的位置。
CN201510060667.5A 2015-02-05 2015-02-05 数据存储方法及装置 Pending CN105988715A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510060667.5A CN105988715A (zh) 2015-02-05 2015-02-05 数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510060667.5A CN105988715A (zh) 2015-02-05 2015-02-05 数据存储方法及装置

Publications (1)

Publication Number Publication Date
CN105988715A true CN105988715A (zh) 2016-10-05

Family

ID=57037273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510060667.5A Pending CN105988715A (zh) 2015-02-05 2015-02-05 数据存储方法及装置

Country Status (1)

Country Link
CN (1) CN105988715A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106991060A (zh) * 2017-02-27 2017-07-28 华为技术有限公司 一种读cache的淘汰优化方法及装置
CN107135427A (zh) * 2017-03-28 2017-09-05 武汉斗鱼网络科技有限公司 一种显示弹幕信息的方法和系统
CN107577711A (zh) * 2017-08-01 2018-01-12 北京奇艺世纪科技有限公司 一种图片缓存的方法和装置
CN108762916A (zh) * 2018-05-03 2018-11-06 北京五八信息技术有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN111736753A (zh) * 2019-03-25 2020-10-02 贵州白山云科技股份有限公司 一种持久缓存方法、装置和计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101131673A (zh) * 2006-08-22 2008-02-27 中兴通讯股份有限公司 一种通用缓存的方法
CN101692252A (zh) * 2009-08-31 2010-04-07 上海宝信软件股份有限公司 文件空闲块的分配和回收方法
CN102117278A (zh) * 2009-12-31 2011-07-06 联想(北京)有限公司 链表的创建方法及系统、数据的查找方法及系统
CN103136205A (zh) * 2011-11-23 2013-06-05 上海博泰悦臻网络技术服务有限公司 Web图片服务系统及方法
CN104092670A (zh) * 2014-06-25 2014-10-08 北京蓝汛通信技术有限责任公司 网络缓存服务器处理文件的方法及处理缓存文件的设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101131673A (zh) * 2006-08-22 2008-02-27 中兴通讯股份有限公司 一种通用缓存的方法
CN101692252A (zh) * 2009-08-31 2010-04-07 上海宝信软件股份有限公司 文件空闲块的分配和回收方法
CN102117278A (zh) * 2009-12-31 2011-07-06 联想(北京)有限公司 链表的创建方法及系统、数据的查找方法及系统
CN103136205A (zh) * 2011-11-23 2013-06-05 上海博泰悦臻网络技术服务有限公司 Web图片服务系统及方法
CN104092670A (zh) * 2014-06-25 2014-10-08 北京蓝汛通信技术有限责任公司 网络缓存服务器处理文件的方法及处理缓存文件的设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张元等: "《操作系统原理及应用》", 31 July 2013 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106991060A (zh) * 2017-02-27 2017-07-28 华为技术有限公司 一种读cache的淘汰优化方法及装置
CN106991060B (zh) * 2017-02-27 2020-04-14 华为技术有限公司 一种读cache的淘汰优化方法及装置
CN107135427A (zh) * 2017-03-28 2017-09-05 武汉斗鱼网络科技有限公司 一种显示弹幕信息的方法和系统
CN107577711A (zh) * 2017-08-01 2018-01-12 北京奇艺世纪科技有限公司 一种图片缓存的方法和装置
CN108762916A (zh) * 2018-05-03 2018-11-06 北京五八信息技术有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN108762916B (zh) * 2018-05-03 2022-12-13 北京五八信息技术有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN111736753A (zh) * 2019-03-25 2020-10-02 贵州白山云科技股份有限公司 一种持久缓存方法、装置和计算机设备
CN111736758A (zh) * 2019-03-25 2020-10-02 贵州白山云科技股份有限公司 一种持久缓存的设置方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
CN103279288B (zh) 数据传输方法、装置和终端设备
CN104618217B (zh) 分享资源的方法、终端、服务器及系统
CN103389863B (zh) 一种显示控制方法和装置
CN104518953A (zh) 删除消息的方法、即时通信终端及系统
CN103473092B (zh) 一种下载应用的处理方法、装置及终端设备
CN105490919A (zh) 消息撤回方法和装置
CN104699973A (zh) 一种问卷逻辑控制方法,及装置
CN103327189A (zh) 一种上传照片、浏览照片以及删除照片的方法及装置
CN105988715A (zh) 数据存储方法及装置
CN105363201A (zh) 提示信息的显示方法及装置
CN103475914A (zh) 视频播放方法、装置、终端设备和服务器
CN105022616A (zh) 一种生成网页页面的方法及装置
CN103455603A (zh) 网页内容缓存、网页加载方法、装置及终端设备
CN104301315A (zh) 一种限制信息访问的方法和装置
CN106203228A (zh) 二维码信息传输方法、装置以及设备
CN104216915A (zh) 网页处理方法、装置和终端设备
CN104104711A (zh) 阅读历史处理方法和装置
CN104516624A (zh) 一种输入账户信息的方法及装置
CN104216651A (zh) 显示社交信息的方法和装置
CN105227598A (zh) 一种基于云存储的资源分享方法、装置和系统
CN103561155B (zh) 发送短信的方法、装置及终端
CN105430035A (zh) 一种上传网络数据的方法和装置
CN104426926A (zh) 定时发布数据的处理方法及装置
CN105577712B (zh) 一种文件上传方法、装置和系统
CN104424203A (zh) 移动设备中的照片分享状态查看方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20161005