数据存储方法及装置的制造方法

文档序号:10624502阅读:921来源:国知局
数据存储方法及装置的制造方法
【专利摘要】本发明公开了一种数据存储方法及装置,属于数据处理技术领域。所述方法包括:创建待加入内存缓存中的数据单元,内存缓存中的数据单元以双向链表的方式进行存储;判断双向链表中的数据单元的个数是否达到预设数量;若双向链表中的数据单元的个数达到预设数量,将双向链表中最后一个数据单元删除,最后一个数据单元为最近被访问次数最少的数据单元;将创建的数据单元存储至双向链表最前面的位置。在双向链表中的数据单元的个数达到预设数量时,通过将双向链表中最后一个数据单元删除,即删除最近使用次数最少的数据单元,以为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
【专利说明】
数据存储方法及装置
技术领域
[0001] 本发明设及数据处理技术领域,特别设及一种数据存储方法及装置。
【背景技术】
[0002] 随着科技的快速发展,使用终端处理数据的用户越来越多。终端在对数据处理前, 通常需要在内存缓存中对数据进行存储。例如,终端在接收到服务器发送的网络数据时,通 常会将接收到的网络数据在内存缓存中进行存储,W便于后续快速读取网络数据。由于内 存缓存的大小有限,内存缓存中数据存储的方式影响着内存缓存的利用率,而内存缓存的 利用率影响着读写数据的性能。因此,如何对数据进行存储是提高读写数据性能的关键。
[0003] 相关技术中提供了一种数据存储方法,在该方法中,创建待加入内存缓存中的数 据单元,数据单元中包括待处理的信息,如文本或图片信息等。若内存缓存被占满,则随机 删除内存缓存中已保存的数据单元W释放存储空间,从而在留出存储空间后,在内存缓存 中保存新创建的数据单元。
[0004] 在实现本发明的过程中,发明人发现上述方法至少存在W下问题:
[0005] 由于当内存缓存被占满时,会随机删除数据单元,从而使得内存缓存中可能会被 多次访问的数据单元被删除后,需重新创建该数据单元并保存。因此,内存缓存的利用率较 低。

【发明内容】

[0006] 为了解决相关技术的问题,本发明实施例提供了一种数据存储方法及装置,所述 技术方案如下:
[0007] -方面,提供了一种数据存储方法,所述方法包括:
[0008] 创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元W双向链表的方 式进行存储;
[0009] 判断所述双向链表中的数据单元的个数是否达到预设数量;
[0010] 若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个 数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
[0011] 将创建的数据单元存储至所述双向链表最前面的位置。
[0012] 另一方面,提供了一种数据存储装置,所述装置包括:
[0013] 创建模块,用于创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元 W双向链表的方式进行存储;
[0014] 第一判断模块,用于判断所述双向链表中的数据单元的个数是否达到预设数量;
[0015] 第一删除模块,用于当所述双向链表中的数据单元的个数达到预设数量时,将所 述双向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数 据单元;
[0016] 存储模块,用于将创建的数据单元存储至所述双向链表最前面的位置。
[0017] 本发明实施例提供的技术方案带来的有益效果是:
[0018] 通过判断双向链表中的数据单元的个数是否达到预设数量,并在双向链表中的数 据单元的个数达到预设数量时,将双向链表中最后一个数据单元删除,即删除最近使用次 数最少的数据单元,从而将创建的数据单元存储至双向链表最前面的位置,为可能被访问 多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
【附图说明】
[0019] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根据运些附图获得其他 的附图。
[0020] 图1是本发明一实施例示出的一种数据存储方法流程图;
[0021] 图2是本发明另一实施例示出的一种数据存储方法流程图;
[0022] 图3是本发明另一实施例示出的一种数据单元的结构示意图;
[0023] 图4是本发明另一实施例不出的一种双向链表的结构不意图;
[0024] 图5是本发明另一实施例示出的一种数据存储装置的结构示意图;
[00巧]图6是本发明另一实施例示出的一种数据存储装置的结构示意图;
[00%]图7是本发明另一实施例示出的一种数据存储装置的结构示意图;
[0027] 图8是本发明另一实施例示出的一种数据存储装置的结构示意图;
[0028] 图9是本发明另一实施例示出的一种数据存储装置的结构示意图;
[0029] 图10是本发明另一实施例示出的一种数据存储装置的结构示意图;
[0030] 图11是本发明另一实施例示出的一种终端的结构示意图。
【具体实施方式】
[0031] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0032] 由于相关技术中在存储数据时,若内存缓存被占满,会随机删除内存缓存中已保 存的数据单元W释放存储空间,从而在留出存储空间后,在内存缓存中保存新创建的数据 单元,从而使得内存缓存中可能会被多次访问的数据单元被删除后,需重新创建该数据单 元并保存。因此,内存缓存的利用率较低。
[0033] 为了预防上述情况,提高内存缓存的利用率,本发明实施例提供了一种数据存储 方法,参见图1,本实施例提供的方法流程包括:
[0034] 101、创建待加入内存缓存中的数据单元,内存缓存中的数据单元W双向链表的方 式进行存储。
[0035] 102、判断双向链表中的数据单元的个数是否达到预设数量。
[0036] 103、若双向链表中的数据单元的个数达到预设数量,将双向链表中最后一个数据 单元删除,最后一个数据单元为最近被访问次数最少的数据单元。
[0037] 104、将创建的数据单元存储至双向链表最前面的位置。
[0038] 本发明实施例提供的方法,通过判断双向链表中的数据单元的个数是否达到预设 数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单 元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最 前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
[0039] 作为一种可选实施例,将创建的数据单元存储至双向链表最前面的位置之前,还 包括: W40] 判断创建的数据单元占用的存储空间是否大于第一预设阔值;
[0041] 若创建的数据单元占用的存储空间不大于第一预设阔值,则执行将创建的数据单 元存储至双向链表最前面的位置的步骤。
[0042] 作为一种可选实施例,该方法还包括:
[0043] 每隔预设周期检测双向链表占用的存储空间;
[0044] 若双向链表占用的存储空间大于第二预设阔值,按照从后往前的顺序,对双向链 表中的数据单元进行删除,直到双向链表占用的存储空间不大于第Ξ预设阔值,第Ξ预设 阔值小于第二预设阔值。
[0045] 作为一种可选实施例,将创建的数据单元存储至双向链表最前面的位置之后,还 包括:
[0046] 根据创建的数据单元,生成创建的数据单元的序列号;
[0047] 根据创建的数据单元在内存缓存中的存储地址,定义对应的引用;
[0048] 建立创建的数据单元的序列号及引用之间的映射关系,得到索引信息; W例将索引信息保存至索引信息表中。
[0050] 作为一种可选实施例,该方法还包括:
[0051] 获取数据访问请求,数据访问请求中至少包含序列号; 阳0巧根据数据访问请求中的序列号,在索引信息表中进行查询,得到对应的引用;
[005引根据查询到的引用,访问双向链表中对应的数据单元。
[0054] 作为一种可选实施例,该方法还包括: 阳化5] 当检测到双向链表中的任一数据单元被访问时,将任一数据单元移动至双向链表 最前面的位置。
[0056] 上述所有可选技术方案,可W采用任意结合形成本发明的可选实施例,在此不再 --寶述。
[0057] 本发明实施例提供了一种数据存储方法,参见图2,本实施例提供的方法流程包 括:
[005引 201、创建待加入内存缓存中的数据单元,内存缓存中的数据单元W双向链表的方 式进行存储。
[0059] 由于内存缓存中的数据单元W双向链表的方式进行存储,因此,在创建待加入内 存缓存中的数据单元时,可按照双向链表中节点的结构,创建数据单元,本实施例对此不作 具体限定。
[0060] 双向链表中的节点可包括但不限于由网络数据、前向数据引用及后向数据引用组 成,本实施例对此不作具体限定。其中,双向链表中每个节点为一个数据单元。数据单元中 的前向数据引用用于指向双向链表中该数据单元的前一个数据单元,数据单元中的后向数 据引用用于指向双向链表中该数据单元的后一个数据单元,网络数据可W为从网络服务器 中获取的文本信息或图片链接等,本实施例不对网络数据的内容作具体限定。
[0061] 需要说明的是,本步骤201中的数据引用记录的是数据单元在内存缓存中的存储 地址,用于指向数据单元。在创建的数据单元中的前向数据引用,所记录的是双向链表中该 创建的数据单元的前一个数据单元在内存缓存中的存储地址。在创建的数据单元中的后向 数据引用,所记录的是双向链表中该创建的数据单元的后一个数据单元在内存缓存中的存 储地址。
[0062] 例如,数据单元可W为如图3所示的结构,数据单元构成的双向链表可为如图4所 示的结构。
[0063] 202、判断双向链表中的数据单元的个数是否达到预设数量。
[0064] 在判断双向链表中的数据单元的个数是否达到预设数量之前,可预先设置用于统 计双向链表中的数据单元个数的变量,将该变量初始值设置为0。当检测到数据单元加入双 向链表时,将该变量的值加1。本实施例不对判断双向链表中的数据单元的个数是否达到预 设数量的方式作具体限定,包括但不限于:将该变量与预设数量比较;若该变量的值不小 于预设数量,则确定双向链表中数据单元的个数达到了预设数量;反之,则确定双向链表中 数据单元的个数未达到预设数量。其中,预设数量对应的数值可根据需求进行设置,本实施 例对此不作具体限定。 W65] 由于内存缓存中的存储空间通常有限,而数据单元占用的存储空间通常维持在一 个固定范围之内。当占用存储空间较大的数据单元存储至内存缓存中时,内存缓存中相对 留给其它数据单元的存储空间也就变少了,而占用存储空间较大的数据单元被访问的次数 通常较少,进而导致内存缓存中存储空间的利用率较低。因此,为了提高内存缓存中存储空 间的利用率,在将创建的数据单元添加至双向链表最前面的位置之前,还可W判断创建的 数据单元占用的存储空间是否大于第一预设阔值。若创建的数据单元占用的存储空间不大 于第一预设阔值,则执行将创建的数据单元添加至双向链表最前面的位置的步骤。其中,第 一预设阔值可根据需求进行设置,本实施例对此不作具体限定。根据经验,可将第一预设阔 值设置为64邸化iloB5rte,千字节)。
[0066] 203、若双向链表中的数据单元的个数达到预设数量,将双向链表中最后一个数据 单元删除,最后一个数据单元为最近使用次数最少的数据单元。
[0067] 由于双向链表中数据单元的前向数据引用指向该数据单元的前一个数据单元,后 向数据引用指向该数据单元的后一个数据单元,而双向链表中的第一个数据单元由于前面 没有其它的数据单元,第一个数据单元中的前向数据引用为空,不指向任何数据单元。同 理,双向链表中的最后一个数据单元由于后续没有其它的数据单元,则最后一个数据单元 中的后向数据引用为空,不指向任何数据单元。因此,为了便于对双向链表进行操作,可在 双向链表中创建一个表头及表尾,本实施例对此不作具体限定。其中,表头及表尾可与数据 单元具有相同的数据结构,添加表头及表尾的双向链表可如图4所示。
[0068] W上述内容为基础,本实施例不对将双向链表中最后一个数据单元删除的方式作 具体限定,包括但不限于:将表尾的前向数据引用指向双向链表中最后一个数据单元的前 一个数据单元,将双向链表中最后一个数据单元的前一个数据单元的后向数据引用指向表 尾;释放最后一个数据单元的存储空间。
[0069] 需要说明的是,由于后续需对双向链表中的数据单元进行访问,而在一次访问过 程中,本次被访问的数据单元有很大概率在后续访问过程中,继续被访问。因此,当检测 到双向链表中的任一数据单元被访问时,可将该任一数据单元移动至双向链表最前面的位 置,本实施例对此不作具体限定。通过上述对数据单元在双向链表中的位置调动过程,最 近被访问次数较少的数据单元会处于双向链表中靠后的位置,最近被访问次数较多的数据 单元会处于双向链表中靠前的位。即被访问概率低的数据单元会处于双向链表中靠后的位 置,被访问概率高的数据单元会处于双向链表中靠前的位置,从而通过数据单元在双向链 表中的位置,能够有效区分哪些数据单元是访问概率高的数据单元,哪些数据单元是访问 概率低的数据单元。其中,双向链表中的最后一个数据单元为最近被访问次数最少的数据 单元,也为被访问概率最低的数据单元。
[0070] 通过上述删除过程,能够避免被访问概率高的数据单元被删除,从而重新创建该 数据单元并保存的过程。在提高内存缓存利用率的同时,还提高了访问双向链表中数据单 元的速度。 阳071] 204、将创建的数据单元添加至双向链表最前面的位置。
[0072] W上述步骤203中的内容为基础,本实施例不对将创建的数据单元添加至双向链 表最前面的位置的方式作具体限定,包括但不限于:将当前双向链表中的表头后面的数据 单元的前向数据引用指向创建的数据单元,将创建的数据单元的后向数据引用指向当前双 向链表中的表头后面的数据单元,将表头的后向数据引用指向创建的数据单元,将创建的 数据单元的前向数据引用指向表头。
[0073] 另外,由于上述步骤201至204是在双向链表中的数据单元的个数达到预设数量 的条件下,在双向链表添加数据单元的过程。而在实际操作过程中,在双向链表中添加数据 单元时,双向链表中的数据单元的个数可能还没有达到预设数量。此时,可直接将创建的数 据单元存储至双向链表最前面的位置,本实施例对此不作具体限定。其中,存储方式可参考 本步骤204中的过程,此处不再寶述。
[0074] 需要说明的是,由于内存缓存中的存储空间有限,当内存缓存中存储的数据占用 的存储空间达到一定值时,可能会影响内存缓存的性能。因此,为了避免内存缓存被占用太 多,可每隔预设周期检测双向链表占用的存储空间,若双向链表占用的存储空间大于第二 预设阔值,按照从后往前的顺序,对双向链表中的数据单元进行删除,直到双向链表占用的 存储空间不大于第Ξ预设阔值,本实施例对此不作具体限定。其中,第Ξ预设阔值小于第二 预设阔值,预设周期可根据需求进行设定,本实施例对此不作具体限定。例如,可将预设周 期设置为10秒。
[0075] 例如,W双向链表中存储了 10个数据单元,W从后往前的顺序,第一个数据单元 至第十个数据单元占用的存储空间分别为60邸、62邸、63邸、6化B、55邸、58邸、59邸、54邸、 57邸、60邸为例。根据每个数据单元占用的存储空间,可得到双向链表占用的总存储空间为 589邸。
[0076] 若第二预设阔值为650邸,由于双向链表占用的存储空间不大于第二预设阔值,因 此,可不用对双向链表中的数据单元进行删除。
[0077] 若第二预设阔值为512邸,由于双向链表占用的存储空间大于第二预设阔值,因 此,可对双向链表中的数据单元进行删除。根据上述步骤203可知,被访问概率低的数据单 元位于双向链表中靠后的位置。因此,在删除数据单元时,可按照从后往前的顺序,对数据 单元进行删除。在本例中,可先删除占用存储空间为60邸的最后一个数据单元。在删除最 后一个数据单元后,双向链表占用的存储空间为巧89-60) = 529邸。
[007引若第Ξ预设阔值为128邸,由于删除数据单元后,双向链表占用的存储空间还是大 于128KB。因此,可继续按照从后往前的顺序,对数据单元进行删除,直到删除至第二个数据 单元。由于删除至第二个数据单元时,双向链表占用的存储空间为122邸,小于第Ξ预设阔 值128KB,从而可停止对数据单元进行删除,并继续执行存储或访问数据单元等步骤。
[0079] 需要的说明的是,除了上述步骤201至204中的数据存储过程之外,由于实际操作 中,可能还需要对内存缓存中的数据进行访问。为了便于对内存缓存中的数据进行访问,在 将创建的数据单元添加至双向链表最前面的位置之后,还可执行如下步骤。
[0080] 205、根据创建的数据单元,生成创建的数据单元的序列号。
[0081] 本实施例不对根据创建的数据单元,生成创建的数据单元的序列号的方式作具体 限定,包括但不限于:按照MD5 (Message Digest Algorithm,消息摘要算法第五版)对创建 的数据单元对应的数据进行计算,得到创建的数据单元的序列号。
[0082] 206、根据创建的数据单元在内存缓存中的存储地址,定义对应的引用。
[0083] 由于后续需访问内存缓存中的数据单元,而通过数据单元在内存缓存中的存储地 址,就可W对数据单元进行访问。因此,可根据创建的数据单元在内存缓存中的存储地址, 定义对应的引用,通过引用将数据单元在内存缓存中的存储地址记录下来。当然,还可W通 过指针记录数据单元在内存缓存中的存储地址,本实施例对此不作具体限定。
[0084] 需要说明的是,本步骤206中定义的引用记录的是创建的数据单元在内存缓存中 的存储地址,用于指向创建的数据单元。而在创建的数据单元中的前向数据引用,所记录 的是创建的数据单元在双向链表中的前一个数据单元,在内存缓存中的存储地址。在创建 的数据单元中的后向数据引用,所记录的是创建的数据单元在双向链表中的后一个数据单 元,在内存缓存中的存储地址。
[00化]207、建立创建的数据单元的序列号及引用之间的映射关系,得到索引信息。
[0086] 通过上述步骤206及步骤207,在得到创建的数据单元的序列号及引用后,可W表 项的形式建立序列号及引用之间的映射关系,得到索引信息。例如,得到索引信息可如下表 1所示:
[0087] 表 1
[0088]
[0089] 其中,左边为创建的单元的序列号,右边为创建的数据单元的引用。
[0090] 208、将索引信息保存至索引信息表中。
[0091] 通过上述步骤207,在得到创建的数据单元对应的索引信息后,可将索引信息保存 至索引信息表。其中,索引信息表可如下表2所示:
[0092] 表 2
[0093]

[0094] W上述内容为基础,本实施例还提供了一种数据访问方法,包括但不限于:获取数 据访问请求,数据访问请求中至少包含序列号;根据数据访问请求中的序列号,在索引信息 表中进行查询,得到对应的引用;根据查询到的引用,访问双向链表中对应的数据单元。 阳0巧]例如,若数据访问请求中的序列号为65flclfe6f417ec4,通过查询表2,可得到对 应的引用为化inter_l。由于引用记录了数据单元在内存缓存中的存储地址,因此,根据引 用化inter_l,即可对内存缓存中对应的数据单元进行访问。
[0096] 需要说明的是,当检测到双向链表中的任一数据单元被访问时,由于本次被访问 的数据单元是最近被访问的数据单元。因此,可将任一数据单元移动至双向链表最前面的 位置,本实施例对此不作具体限定。在本次访问过程结束后,可将引用化inter_l对应的数 据单元移动至双向链表最前面的位置。
[0097] 本发明实施例提供的方法,通过判断双向链表中的数据单元的个数是否达到预设 数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单 元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最 前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
[0098] 本发明实施例提供了一种数据存储装置,该装置用于执行上述实施例提供的数据 存储方法。参见图5,该装置包括:
[0099] 创建模块501,用于创建待加入内存缓存中的数据单元,内存缓存中的数据单元W 双向链表的方式进行存储;
[0100] 第一判断模块502,用于判断双向链表中的数据单元的个数是否达到预设数量; 阳101] 第一删除模块503,用于当双向链表中的数据单元的个数达到预设数量时,将双向 链表中最后一个数据单元删除,最后一个数据单元为最近被访问次数最少的数据单元; 阳102] 存储模块504,用于将创建的数据单元存储至双向链表最前面的位置。 阳103] 作为一种可选实施例,参见图6,该装置还包括:
[0104] 第二判断模块505,用于判断创建的数据单元占用的存储空间是否大于第一预设 阔值;
[0105] 添加模块504,用于当创建的数据单元占用的存储空间不大于第一预设阔值时,贝U 执行将创建的数据单元存储至双向链表最前面的位置的步骤。 阳106] 作为一种可选实施例,参见图7,该装置还包括:
[0107] 检测模块506,用于每隔预设周期检测双向链表占用的存储空间;
[0108] 第二删除模块507,用于当双向链表占用的存储空间大于第二预设阔值时,按照从 后往前的顺序,对双向链表中的数据单元进行删除,直到双向链表占用的存储空间不大于 第Ξ预设阔值,第Ξ预设阔值小于第二预设阔值。
[0109] 作为一种可选实施例,参见图8,该装置还包括:
[0110] 生成模块508,用于根据创建的数据单元,生成创建的数据单元的序列号; 阳111] 定义模块509,用于根据创建的数据单元在内存缓存中的存储地址,定义对应的引 用;
[0112] 建立模块510,用于建立创建的数据单元的序列号及引用之间的映射关系,得到索 引?胃息;
[0113] 保存模块511,用于将索引信息保存至索引信息表中。
[0114] 作为一种可选实施例,参见图9,该装置还包括:
[0115] 获取模块512,用于获取数据访问请求,数据访问请求中至少包含序列号;
[0116] 查询模块513,用于根据数据访问请求中的序列号,在索引信息表中进行查询,得 到对应的引用;
[0117] 访问模块514,用于根据查询到的引用,访问双向链表中对应的数据单元。
[0118] 作为一种可选实施例,参见图10,该装置还包括:
[0119] 移动模块515,用于当检测到双向链表中的任一数据单元被访问时,将任一数据单 元移动至双向链表最前面的位置。
[0120] 本发明实施例提供的装置,通过判断双向链表中的数据单元的个数是否达到预设 数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单 元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最 前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。 阳121] 本实施例提供了一种终端,该终端可W用于执行上述各个实施例中提供的数据存 储方法。参见图11,该终端1100包括:
[0122] 终端1100可W包括RF(Radio化equen巧,射频)电路110、包括有一个或一个W上 计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、 WiFi (Wireless Fidelity,无线保真)模块170、包括有一个或者一个W上处理核屯、的处理 器180、W及电源190等部件。本领域技术人员可W理解,图11中示出的终端结构并不构成 对终端的限定,可W包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布 置。其中:
[0123] RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站 的下行信息接收后,交由一个或者一个W上处理器180处理;另外,将设及上行的数据发 送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个 振荡器、用户身份模块(SIM)卡、收发信机、禪合器、LNA化OW Noise Amplifier,低噪声放 大器)、双工器等。此外,RF电路110还可W通过无线通信与网络和其他设备通信。所述 无线通信可W使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组 无线服务)、CDMA (Code Division Multiple Access,码分多址)、WCDMA (Wideband Code Division Multiple Access,宽带码分多址)、LTE(X〇ng Term Evolution,长期演进)、电 子邮件、SMS (化ort Messaging Service,短消息服务)等。
[0124] 存储器120可用于存储软件程序W及模块,处理器180通过运行存储在存储器120 的软件程序W及模块,从而执行各种功能应用W及数据处理。存储器120可主要包括存储 程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序 (比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1100的使用所创 建的数据(比如音频数据、电话本等)等。此外,存储器120可W包括高速随机存取存储器, 还可W包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存 储器件。相应地,存储器120还可W包括存储器控制器,W提供处理器180和输入单元130 对存储器120的访问。
[01巧]输入单元130可用于接收输入的数字或字符信息,W及产生与用户设置W及功能 控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触 敏表面131 W及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集 用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏 表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。 可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检 测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从 触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理 器180发来的命令并加 W执行。此外,可W采用电阻式、电容式、红外线W及表面声波等多 种类型实现触敏表面131。除了触敏表面131,输入单元130还可W包括其他输入设备132。 具体地,其他输入设备132可W包括但不限于物理键盘、功能键(比如音量控制按键、开关 按键等)、轨迹球、鼠标、操作杆等中的一种或多种。 阳126] 显示单元140可用于显示由用户输入的信息或提供给用户的信息W及终端1100 的各种图形用户接口,运些图形用户接口可W由图形、文本、图标、视频和其任意组合来构 成。显示单元140可包括显示面板141,可选的,可W采用LCD化iquid化ystal Display, 液晶显示器)、〇LED (化ganic Li曲t-Emitting Diode,有机发光二极管)等形式来配置显 示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上 或附近的触摸操作后,传送给处理器180 W确定触摸事件的类型,随后处理器180根据触摸 事件的类型在显示面板141上提供相应的视觉输出。虽然在图11中,触敏表面131与显示 面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可W将触 敏表面131与显示面板141集成而实现输入和输出功能。 阳127] 终端1100还可包括至少一种传感器150,比如光传感器、运动传感器W及其他传 感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环 境光线的明暗来调节显示面板141的亮度,接近传感器可在终端1100移动到耳边时,关闭 显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上 (一般为Ξ轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的 应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲 击)等;至于终端1100还可配置的巧螺仪、气压计、湿度计、溫度计、红外线传感器等其他传 感器,在此不再寶述。 阳12引音频电路160、扬声器161,传声器162可提供用户与终端1100之间的音频接口。 音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转 换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路 160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110 W发送给 比如另一终端,或者将音频数据输出至存储器120 W便进一步处理。音频电路160还可能 包括耳塞插孔,W提供外设耳机与终端1100的通信。
[0129] WiFi属于短距离无线传输技术,终端1100通过WiFi模块170可W帮助用户收发 电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图11 示出了 WiFi模块170,但是可W理解的是,其并不属于终端1100的必须构成,完全可W根据 需要在不改变发明的本质的范围内而省略。 阳130] 处理器180是终端1100的控制中心利用各种接口和线路连接整个手机的各个部 分,通过运行或执行存储在存储器120内的软件程序和/或模块,W及调用存储在存储器 120内的数据,执行终端1100的各种功能和处理数据,从而对手机进行整体监控。可选的, 处理器180可包括一个或多个处理核屯、;优选的,处理器180可集成应用处理器和调制解调 处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主 要处理无线通信。可W理解的是,上述调制解调处理器也可W不集成到处理器180中。 阳131] 终端1100还包括给各个部件供电的电源190(比如电池),优选的,电源可W通过 电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、W及功 耗管理等功能。电源190还可W包括一个或一个W上的直流或交流电源、再充电系统、电源 故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。 阳132] 尽管未示出,终端1100还可W包括摄像头、蓝牙模块等,在此不再寶述。具体在本 实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,W及一个或者一个W上 的程序,其中一个或者一个W上程序存储于存储器中,且经配置W由一个或者一个W上处 理器执行。所述一个或者一个W上程序包含用于执行W下操作的指令:
[0133] 创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元W双向链表的方 式进行存储;
[0134] 判断所述双向链表中的数据单元的个数是否达到预设数量;
[0135] 若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个 数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元; 阳136] 将所述创建的数据单元存储至所述双向链表最前面的位置。
[0137] 假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供 的第二种可能的实施方式中,终端的存储器中,还包含用于执行W下操作的指令:
[0138] 判断所述创建的数据单元占用的存储空间是否大于第一预设阔值;
[0139] 若所述创建的数据单元占用的存储空间不大于第一预设阔值,则执行将所述创建 的数据单元存储至所述双向链表最前面的位置的步骤。
[0140] 在第一种可能的实施方式作为基础而提供的第Ξ种可能的实施方式中,终端的存 储器中,还包含用于执行W下操作的指令: 阳141] 每隔预设周期检测所述双向链表占用的存储空间;
[0142] 若所述双向链表占用的存储空间大于第二预设阔值,按照从后往前的顺序,对所 述双向链表中的数据单元进行删除,直到所述双向链表占用的存储空间不大于第Ξ预设阔 值,所述第Ξ预设阔值小于所述第二预设阔值。 阳143] 在第一种可能的实施方式作为基础而提供的第四种可能的实施方式中,终端的存 储器中,还包含用于执行W下操作的指令:
[0144] 根据所述创建的数据单元,生成所述创建的数据单元的序列号;
[0145] 根据所述创建的数据单元在所述内存缓存中的存储地址,定义对应的引用; 阳146] 建立所述创建的数据单元的序列号及引用之间的映射关系,得到索引信息; 阳147] 将所述索引信息保存至索引信息表中。
[0148] 在第四种可能的实施方式作为基础而提供的第五种可能的实施方式中,终端的存 储器中,还包含用于执行W下操作的指令:
[0149] 获取数据访问请求,所述数据访问请求中至少包含序列号;
[0150] 根据所述数据访问请求中的序列号,在所述索引信息表中进行查询,得到对应的 引用; 阳151] 根据查询到的引用,访问所述双向链表中对应的数据单元。
[0152] 在第一种可能的实施方式或第五种可能的实施方式作为基础而提供的第六种可 能的实施方式中,终端的存储器中,还包含用于执行W下操作的指令:
[0153] 当检测到所述双向链表中的任一数据单元被访问时,将所述任一数据单元移动至 所述双向链表最前面的位置。
[0154] 本发明实施例提供的终端,通过判断双向链表中的数据单元的个数是否达到预设 数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一个数据单 元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双向链表最 前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用率较高。
[0155] 本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可W是 上述实施例中的存储器中所包含的计算机可读存储介质;也可W是单独存在,未装配入终 端中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个W上程序,该一 个或者一个W上程序被一个或者一个W上的处理器用来执行实现数据存储方法,该方法包 括:
[0156] 创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元W双向链表的方 式进行存储; 阳157] 判断所述双向链表中的数据单元的个数是否达到预设数量;
[0158] 若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个 数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元;
[0159] 将所述创建的数据单元存储至所述双向链表最前面的位置。
[0160] 假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供 的第二种可能的实施方式中,所述将所述创建的数据单元存储至所述双向链表最前面的位 置之前,还包括: 阳161] 判断所述创建的数据单元占用的存储空间是否大于第一预设阔值; 阳162] 若所述创建的数据单元占用的存储空间不大于第一预设阔值,则执行将所述创建 的数据单元存储至所述双向链表最前面的位置的步骤。
[0163] 在第一种可能的实施方式作为基础而提供的第Ξ种可能的实施方式中,所述方法 还包括:
[0164] 每隔预设周期检测所述双向链表占用的存储空间;
[01化]若所述双向链表占用的存储空间大于第二预设阔值,按照从后往前的顺序,对所 述双向链表中的数据单元进行删除,直到所述双向链表占用的存储空间不大于第Ξ预设阔 值,所述第Ξ预设阔值小于所述第二预设阔值。
[0166] 在第一种可能的实施方式作为基础而提供的第四种可能的实施方式中,所述将所 述创建的数据单元存储至所述双向链表最前面的位置之后,还包括:
[0167] 根据所述创建的数据单元,生成所述创建的数据单元的序列号;
[0168] 根据所述创建的数据单元在所述内存缓存中的存储地址,定义对应的引用;
[0169] 建立所述创建的数据单元的序列号及引用之间的映射关系,得到索引信息; 阳170] 将所述索引信息保存至索引信息表中。 阳171] 在第四种可能的实施方式作为基础而提供的第五种可能的实施方式中,所述方法 还包括: 阳172] 获取数据访问请求,所述数据访问请求中至少包含序列号; 阳173] 根据所述数据访问请求中的序列号,在所述索引信息表中进行查询,得到对应的 引用;
[0174] 根据查询到的引用,访问所述双向链表中对应的数据单元。
[01巧]在第一种可能的实施方式或第五种可能的实施方式作为基础而提供的第六种可 能的实施方式中,当检测到所述双向链表中的任一数据单元被访问时,将所述任一数据单 元移动至所述双向链表最前面的位置。
[0176] 本发明实施例提供的计算机可读存储介质,通过判断双向链表中的数据单元的个 数是否达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中 最后一个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存 储至双向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存 的利用率较高。
[0177] 本发明实施例提供了一种图形用户接口,所述图形用户接口用在终端上,所述终 端包括触摸屏显示器、存储器和用于执行一个或者一个W上的程序的一个或者一个W上的 处理器;所述图形用户接口包括:
[0178] 创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元W双向链表的方 式进行存储;
[0179] 判断所述双向链表中的数据单元的个数是否达到预设数量;
[0180] 若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个 数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元; 阳181] 将所述创建的数据单元存储至所述双向链表最前面的位置。
[0182] 本发明实施例提供的图形用户接口,通过判断双向链表中的数据单元的个数是否 达到预设数量,并在双向链表中的数据单元的个数达到预设数量时,将双向链表中最后一 个数据单元删除,即删除最近使用次数最少的数据单元,从而将创建的数据单元存储至双 向链表最前面的位置,为可能被访问多次的数据单元留下存储空间。因此,内存缓存的利用 率较高。 阳183] 需要说明的是:上述实施例提供的数据存储装置在存储数据时,仅W上述各功能 模块的划分进行举例说明,实际应用中,可W根据需要而将上述功能分配由不同的功能模 块完成,即将装置的内部结构划分成不同的功能模块,W完成W上描述的全部或者部分功 能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实 现过程详见方法实施例,运里不再寶述。
[0184] 本领域普通技术人员可W理解实现上述实施例的全部或部分步骤可W通过硬件 来完成,也可W通过程序来指令相关的硬件完成,所述的程序可W存储于一种计算机可读 存储介质中,上述提到的存储介质可W是只读存储器,磁盘或光盘等。
[0185] W上所述仅为本发明的较佳实施例,并不用W限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1. 一种数据存储方法,其特征在于,所述方法包括: 创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双向链表的方式进 行存储; 判断所述双向链表中的数据单元的个数是否达到预设数量; 若所述双向链表中的数据单元的个数达到预设数量,将所述双向链表中最后一个数据 单元删除,所述最后一个数据单元为最近被访问次数最少的数据单元; 将创建的数据单元存储至所述双向链表最前面的位置。2. 根据权利要求1所述的方法,其特征在于,所述将创建的数据单元存储至所述双向 链表最前面的位置之前,还包括: 判断所述创建的数据单元占用的存储空间是否大于第一预设阈值; 若所述创建的数据单元占用的存储空间不大于第一预设阈值,则执行将所述创建的数 据单元存储至所述双向链表最前面的位置的步骤。3. 根据权利要求1所述的方法,其特征在于,所述方法还包括: 每隔预设周期检测所述双向链表占用的存储空间; 若所述双向链表占用的存储空间大于第二预设阈值,按照从后往前的顺序,对所述双 向链表中的数据单元进行删除,直到所述双向链表占用的存储空间不大于第三预设阈值, 所述第三预设阈值小于所述第二预设阈值。4. 根据权利要求1所述的方法,其特征在于,所述将创建的数据单元存储至所述双向 链表最前面的位置之后,还包括: 根据所述创建的数据单元,生成所述创建的数据单元的序列号; 根据所述创建的数据单元在所述内存缓存中的存储地址,定义对应的引用; 建立所述创建的数据单元的序列号及引用之间的映射关系,得到索引信息; 将所述索引信息保存至索引信息表中。5. 根据权利要求4所述的方法,其特征在于,所述方法还包括: 获取数据访问请求,所述数据访问请求中至少包含序列号; 根据所述数据访问请求中的序列号,在所述索引信息表中进行查询,得到对应的引 用; 根据查询到的引用,访问所述双向链表中对应的数据单元。6. 根据权利要求1至5中任一权利要求所述的方法,其特征在于,所述方法还包括: 当检测到所述双向链表中的任一数据单元被访问时,将所述任一数据单元移动至所述 双向链表最前面的位置。7. -种数据存储装置,其特征在于,所述装置包括: 创建模块,用于创建待加入内存缓存中的数据单元,所述内存缓存中的数据单元以双 向链表的方式进行存储; 第一判断模块,用于判断所述双向链表中的数据单元的个数是否达到预设数量; 第一删除模块,用于当所述双向链表中的数据单元的个数达到预设数量时,将所述双 向链表中最后一个数据单元删除,所述最后一个数据单元为最近被访问次数最少的数据单 元; 存储模块,用于将创建的数据单元存储至所述双向链表最前面的位置。8. 根据权利要求7所述的装置,其特征在于,所述装置还包括: 第二判断模块,用于判断所述创建的数据单元占用的存储空间是否大于第一预设阈 值; 所述添加模块,用于当所述创建的数据单元占用的存储空间不大于第一预设阈值时, 则执行将所述创建的数据单元存储至所述双向链表最前面的位置的步骤。9. 根据权利要求7所述的装置,其特征在于,所述装置还包括: 检测模块,用于每隔预设周期检测所述双向链表占用的存储空间; 第二删除模块,用于当所述双向链表占用的存储空间大于第二预设阈值时,按照从后 往前的顺序,对所述双向链表中的数据单元进行删除,直到所述双向链表占用的存储空间 不大于第三预设阈值,所述第三预设阈值小于所述第二预设阈值。10. 根据权利要求7所述的装置,其特征在于,所述装置还包括: 生成模块,用于根据所述创建的数据单元,生成所述创建的数据单元的序列号; 定义模块,用于根据所述创建的数据单元在所述内存缓存中的存储地址,定义对应的 引用; 建立模块,用于建立所述创建的数据单元的序列号及引用之间的映射关系,得到索引 信息; 保存模块,用于将所述索引信息保存至索引信息表中。11. 根据权利要求10所述的装置,其特征在于,所述装置还包括: 获取模块,用于获取数据访问请求,所述数据访问请求中至少包含序列号; 查询模块,用于根据所述数据访问请求中的序列号,在所述索引信息表中进行查询,得 到对应的引用; 访问模块,用于根据查询到的引用,访问所述双向链表中对应的数据单元。12. 根据权利要求7至11中任一权利要求所述的装置,其特征在于,所述装置还包括: 移动模块,用于当检测到所述双向链表中的任一数据单元被访问时,将所述任一数据 单元移动至所述双向链表最前面的位置。
【文档编号】G06F3/06GK105988715SQ201510060667
【公开日】2016年10月5日
【申请日】2015年2月5日
【发明人】王刚
【申请人】深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1