一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种处理文件数据的方法、装置、服务器及介质与流程

2022-11-19 08:26:46 来源:中国专利 TAG:


1.本技术涉及服务器领域,特别是涉及一种处理文件数据的方法、装置、服务器及介质。


背景技术:

2.分布式文件系统文件数量庞大,如果访问文件数据每次都从海量文件中查找,则需要较长的时间才能访问到文件数据。而较大的延时对于客户端和服务端是无法接受的。
3.由此可见,如何管理文件数据,进而提高访问文件数据的速度是本领域人员亟需解决的技术问题。


技术实现要素:

4.本技术的目的是提供一种处理文件数据的方法、装置、服务器及介质,用于管理文件数据,进而提高访问文件数据的速度。
5.为解决上述技术问题,本技术提供一种处理文件数据的方法,包括:
6.在lru接口接收到访问目标文件数据的指令的情况下,确定待访问的数据;
7.判断所述待访问的数据是否为高频数据;
8.若是,则根据预先建立的双向链表中的高频数据链表获取所述待访问的数据;
9.若否,则根据所述双向链表中的低频数据链表获取所述待访问的数据;其中,所述双向链表是根据所述数据的访问频率创建的,所述双向链表中至少包含一个所述低频数据链表和一个所述高频数据链表,所述待访问的数据记录所在链表上与所述待访问的数据相邻的数据。
10.优选地,所述方法还包括:
11.在所述lru接口接收到向所述双线链表插入数据的指令的情况下,确定待插入的数据;
12.判断所述待插入的数据是否为所述高频数据;
13.若是,则将所述待插入的数据插入至所述高频数据链表的首部;
14.若否,则将所述待插入的数据插入至所述低频数据链表的首部。
15.优选地,在所述将所述待插入的数据插入至所述高频数据链表的首部之后,所述方法还包括:
16.将所述高频数据链表的尾部数据移动至所述低频数据链表的首部;
17.移除所述低频数据链表的尾部数据;
18.对应地,在所述将所述待插入的数据插入至所述低频数据链表的首部之后,所述方法还包括:
19.移除所述低频数据链表的尾部数据。
20.优选地,在所述将所述待插入的数据插入至所述高频数据链表的首部之后,所述方法还包括:
21.获取当前所述高频数据链表的最大数据容量以及当前所述高频数据链表中存放的数据量;
22.根据所述存放的数据量与所述最大数据容量确定当前高频数据的百分比比例;
23.判断当前所述高频数据的百分比比例是否等于预设比例;
24.若否,则在当前所述高频数据的百分比比例大于所述预设比例的情况下,将当前所述高频数据链表的尾部数据移动至当前低频数据链表的首部;并返回所述判断当前所述高频数据的百分比比例是否等于预设比例的步骤;在当前所述高频数据的百分比比例小于所述预设比例的情况下,将当前所述低频数据链表的首部数据移动至当前所述高频数据链表的尾部,并返回所述判断当前所述高频数据的百分比比例是否等于预设比例的步骤;
25.若是,则结束。
26.优选地,所述方法还包括:
27.在所述lru接口接收到从所述双线链表中移除数据的指令的情况下,确定待移除的数据;
28.判断所述待移除的数据是否为所述高频数据;
29.若是,则从所述高频数据链表中移除所述待移除的数据;
30.若否,则从所述低频数据链表中移除所述待移除的数据。
31.优选地,在所述从所述高频数据链表中移除所述待移除的数据之后,所述方法还包括:
32.获取当前所述高频数据链表的最大数据容量以及当前所述高频数据链表中存放的数据量;
33.根据所述存放的数据量与所述最大数据容量确定当前高频数据的百分比比例;
34.判断当前所述高频数据的百分比比例是否等于预设比例;
35.若否,则在当前所述高频数据的百分比比例大于所述预设比例的情况下,将当前所述高频数据链表的尾部数据移动至当前低频数据链表的首部;并返回所述判断当前所述高频数据的百分比比例是否等于预设比例的步骤;在当前所述高频数据的百分比比例小于所述预设比例的情况下,将当前所述低频数据链表的首部数据移动至当前所述高频数据链表的尾部,并返回所述判断当前所述高频数据的百分比比例是否等于预设比例的步骤;
36.若是,则结束。
37.优选地,在完成处理所述文件数据之后,所述方法还包括:
38.清空所述双向链表中的所有数据。
39.为了解决上述技术问题,本技术还提供一种处理文件数据的装置,包括:
40.确定模块,用于在lru接口接收到访问目标文件数据的指令的情况下,确定待访问的数据;
41.判断模块,用于判断所述待访问的数据是否为高频数据;若是,则触发第一获取模块;若否,则触发第二获取模块;
42.所述第一获取模块,用于根据预先建立的双向链表中的高频数据链表获取所述待访问的数据;
43.所述第二获取模块,用于根据所述双向链表中的低频数据链表获取所述待访问的数据;其中,所述双向链表是根据所述数据的访问频率创建的,所述双向链表中至少包含一
个所述低频数据链表和一个所述高频数据链表,所述待访问的数据记录所在链表上与所述待访问的数据相邻的数据。
44.为了解决上述技术问题,本技术还提供一种服务器,包括:
45.存储器,用于存储计算机程序;
46.处理器,用于执行所述计算机程序时实现上述的处理文件数据的方法的步骤。
47.为了解决上述技术问题,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的处理文件数据的方法的步骤。
48.本技术所提供的处理文件数据的方法,在lru接口接收到访问目标文件数据的指令的情况下,确定待访问的数据;判断待访问的数据是否为高频数据;若是,则根据预先建立的双向链表中的高频数据链表获取待访问的数据;若否,则根据双向链表中的低频数据链表获取待访问的数据;其中,双向链表是根据数据的访问频率创建的,双向链表中至少包含一个低频数据链表和一个高频数据链表,待访问的数据记录所在链表上与待访问的数据相邻的数据。该方法中,由于已经根据数据的访问频率对数据放置在不同的链表上,因此,可以根据待访问数据的访问频率快速地从对应的链表上访问到相应的数据;其次,相比于将高频数据、低频数据放置在一个双向链表上的方式,本技术的方法中,双向链表中至少包含一个低频数据链表和一个高频数据链表,使得能够将低频数据、高频数据单独区分开,方便找到待访问数据在链表上的位置,并且具有更大的存储数据空间;此外,位于链表上的数据记录有所在的链表上与该数据相邻的数据,故而,对于该待访问数据相邻的数据也能够方便、快速地访问到。
49.此外,本技术还提供一种处理文件数据的装置、服务器以及计算机可读存储介质,与上述提到的处理文件数据的方法具有相同或相对应的技术特征,效果同上。
附图说明
50.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
51.图1为本为本技术实施例提供的一种处理文件数据的方法的流程图;
52.图2为本技术的一实施例提供的处理文件数据的装置的结构图;
53.图3为本技术另一实施例提供的服务器的结构图;
54.图4为本技术实施例提供的一种lru的数据结构示意图。
具体实施方式
55.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
56.本技术的核心是提供一种处理文件数据的方法、装置、服务器及介质,用于管理文件数据,进而提高访问文件数据的速度。
57.在计算机体系结构中,硬盘的存储容量很大,访问速度很慢,为了提高程序执行速度,需要把经常使用的那部分内存加载到内存中。内存的访问速度很快,但存储容量有限,另外,分布式文件系统文件数量庞大,如果访问文件数据每次都从海量文件中查找,较大的延时对于客户端和服务端是无法接受的。本技术中使用最近最少使用算法(least recently used,lru)算法管理文件的数据/元数据,将频繁访问的数据/元数据常驻内存,淘汰访问频率较小的数据/元数据,进而提升提高访问文件数据的速度,以及提升服务器的性能。本实施例中,lru算法实现主要包括以下数据结构:
58.1.lru:总体结构,负责提供对外接口,通过操作lrulist进而管理lruobject;
59.2.lrulist:双向链表,根据数据访问频率管理lruobject,分为高频数据链表和低频数据链表;
60.3.lruobject:即单个数据,缓存在lrulist中;
61.4.lru、lrulist、lruobject间建立了关联、依赖关系,通过其中一个数据结构可以高效访问其它数据结构。
62.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。图1为本为本技术实施例提供的一种处理文件数据的方法的流程图,如图1所示,该方法包括:
63.s10:在lru接口接收到访问目标文件数据的指令的情况下,确定待访问的数据。
64.由于lru是负责提供对外接口,因此,当需要访问数据时,首先是lru接口接收访问目标文件数据的指令。包含待访问的数据的文件即为目标文件。
65.s11:判断待访问的数据是否为高频数据;若是,则进入步骤s12;若否,则进入步骤s13;
66.s12:根据预先建立的双向链表中的高频数据链表获取待访问的数据;
67.s13:根据双向链表中的低频数据链表获取待访问的数据;其中,双向链表是根据数据的访问频率创建的,双向链表中至少包含一个低频数据链表和一个高频数据链表,待访问的数据记录所在链表上与待访问的数据相邻的数据。
68.高频数据指的是最近一次访问的数据,低频数据指的是经常不访问的数据。为了能够快速地获取到待访问的数据,本实施例中建立双向链表,双向链表一种数据组织方式,链表中每个数据节点都有前驱和后继两个指针,可以很方便地访问相邻数据节点,因此具有很高的插入、删除效率。目前采用的lru算法中仅采用一个双向链表,按照数据从低到高的访问频率,将高频数据放在双向链表的尾部,将低频数据放在双向链表的首部。本技术实施例中,为了有更大的数据存储空间以及方便快速地获取到待访问的数据,将高频数据建立在高频数据链表上,将低频数据建立在低频数据链表上。实际中,对于高频数据链表、低频数据链表中数据的容量、链表的数量等不作限定,根据实际情况确定。高频数据链表上的数据、低频数据链表上的数据中除了记录每个数据节点,还记录有与该数据节点相邻数据,因此,通过该数据节点访问与该数据节点相邻的数据也具有很高的效率。当确定出待访问的数据为高频数据时,则从高频链表上获取即可;当确定出待访问的数据为低频数据时,则从低频数据链表上获取即可。
69.本实施例所提供的处理文件数据的方法,在lru接口接收到访问目标文件数据的指令的情况下,确定待访问的数据;判断待访问的数据是否为高频数据;若是,则根据预先
建立的双向链表中的高频数据链表获取待访问的数据;若否,则根据双向链表中的低频数据链表获取待访问的数据;其中,双向链表是根据数据的访问频率创建的,双向链表中至少包含一个低频数据链表和一个高频数据链表,待访问的数据记录所在链表上与待访问的数据相邻的数据。该方法中,由于已经根据数据的访问频率对数据放置在不同的链表上,因此,可以根据待访问数据的访问频率快速地从对应的链表上访问到相应的数据;其次,相比于将高频数据、低频数据放置在一个双向链表上的方式,本实施例的方法中,双向链表中至少包含一个低频数据链表和一个高频数据链表,使得能够将低频数据、高频数据单独区分开,方便找到待访问数据在链表上的位置,并且具有更大的存储数据空间;此外,位于链表上的数据记录有所在的链表上与该数据相邻的数据,故而,对于该待访问数据相邻的数据也能够方便、快速地访问到。
70.上述实施例中描述了访问数据的过程,实际中,还存在插入数据的情况,因此,处理文件数据的方法还包括:
71.在lru接口接收到向双线链表插入数据的指令的情况下,确定待插入的数据;
72.判断待插入的数据是否为高频数据;
73.若是,则将待插入的数据插入至高频数据链表的首部;
74.若否,则将待插入的数据插入至低频数据链表的首部。
75.本实施例所提供的方法中,在待插入数据为高频数据的情况下,将待插入的数据插入至高频数据链表的首部;在待插入数据为低频数据的情况下,将待插入数据插入至低频数据链表的首部,一方面,实现了向双向链表中插入数据,另一方面,由于链表中的元素都是在堆空间上分配内存,为避免在内存中频繁移动缓存数据产生性能开销,lrulist中只记录链表中首元素和尾元素的内存地址,因此能够高效地将待插入的数据插入至链表首部,并且在将待插入的数据插入至链表首部之后,能够快速访问到该待插入的数据。
76.在实施中,高频数据链表、低频数据链表通常都有一定的容量限制,因此,实际中,可能会出现高频数据链表中的数据、低频数据链表中的数据超过阈值的情况,因此,优选的实施方式是,在将待插入的数据插入至高频数据链表的首部之后,处理文件数据的方法还包括:
77.将高频数据链表的尾部数据移动至低频数据链表的首部;
78.移除低频数据链表的尾部数据;
79.对应地,在将待插入的数据插入至低频数据链表的首部之后,处理文件数据的方法还包括:
80.移除低频数据链表的尾部数据。
81.本实施例所提供的调整高频数据链表中的数据、低频数据链表中的数据的方式,使得能够尽可能地保持高频数据链表中的数据量、低频链表中的数据量,其次,由于低频数据链表尾部数据为经常不访问的数据,因此通过移除低频数据链表尾部的数据,使得能够提高访问文件数据的速度。
82.在实施中,为了使高频数据链表中的数据量、低频数据链表中的数据量时刻保持平衡,优选的实施方式是,在将待插入的数据插入至高频数据链表的首部之后,处理文件数据的方法还包括:
83.获取当前高频数据链表的最大数据容量以及当前高频数据链表中存放的数据量;
84.根据存放的数据量与最大数据容量确定当前高频数据的百分比比例;
85.判断当前高频数据的百分比比例是否等于预设比例;
86.若否,则在当前高频数据的百分比比例大于预设比例的情况下,将当前高频数据链表的尾部数据移动至当前低频数据链表的首部;并返回判断当前高频数据的百分比比例是否等于预设比例的步骤;在当前高频数据的百分比比例小于预设比例的情况下,将当前低频数据链表的首部数据移动至当前高频数据链表的尾部,并返回判断当前高频数据的百分比比例是否等于预设比例的步骤;
87.若是,则结束。
88.对于预设比例的具体的值不作限定,根据实际情况确定。在高频数据链表中,在当前存放的数据量与最大数据容量确定的百分比比例不等于预设比例的情况下,动态地调整高频数据链表中的数据,使得当前高频数据的百分比比例等于预设比例。本实施例中对高频数据链表设置预设比例使得高频数据链表中的数据量、低频数据链表中的数据量时刻保持平衡,实际中,也可以对低频数据链表设置预设比例来使得高频数据链表中的数据量、低频数据链表中的数据量时刻保持平衡。
89.本实施例所提供的调整高、低数据链表中的数据,使得高、低数据链表中的数据量能够保持动态平衡。
90.上述实施例中对访问数据、插入数据进行了描述,实际中,处理文件数据时可能需要移除某些数据,具体地,处理文件数据的方法还包括:
91.在lru接口接收到从双线链表中移除数据的指令的情况下,确定待移除的数据;
92.判断待移除的数据是否为高频数据;
93.若是,则从高频数据链表中移除待移除的数据;
94.若否,则从低频数据链表中移除待移除的数据。
95.移除数据可以包含从高频数据链表中将数据移动到低频数据链表中,此时对于高频数据链表来说可以认为是移除数据、将低频数据链表移动到高频数据链表中,此时对于低频数据链表来说可以认为是移除数据、从高频数据链表中移除指定数据、从低频数据链表中移除指定数据等。移除数据的场景有很多,如上述实施例中插入数据的同时,由于受到数据链表的最大容量等的影响,需要移除数据,或者需要从高频数据链表、低频数据链表中移除指定的数据。当需要移除数据时,如果待移除的数据为高频数据时,则从高频数据链表中将其移除即可;如果待移除的数据为低频数据时,则从低频数据链表中将其移除即可。
96.本实施例所提供的处理文件数据的方法还包括移除数据,通过移除数据,使得双向链表中的数据能够保持在一定的数据量,并且能够将不经常使用的数据(即低频数据移除),能够提高文件数据的访问效率。
97.上述实施例中将文件中的数据进行移除,在从高频数据链表中移除待移除的数据之后,处理文件数据的方法还包括:
98.获取当前高频数据链表的最大数据容量以及当前高频数据链表中存放的数据量;
99.根据存放的数据量与最大数据容量确定当前高频数据的百分比比例;
100.判断当前高频数据的百分比比例是否等于预设比例;
101.若否,则在当前高频数据的百分比比例大于预设比例的情况下,将当前高频数据链表的尾部数据移动至当前低频数据链表的首部;并返回判断当前高频数据的百分比比例
是否等于预设比例的步骤;在当前高频数据的百分比比例小于预设比例的情况下,将当前低频数据链表的首部数据移动至当前高频数据链表的尾部,并返回判断当前高频数据的百分比比例是否等于预设比例的步骤;
102.若是,则结束。
103.本实施例所提供的在移除数据之后,通过设置预设比例来使得高频数据链表、低频数据链表中的数据保持动态平衡。
104.在完成处理文件数据之后,为了尽可能地防止数据泄露,优选的实施方式是,处理文件数据的方法还包括:
105.清空双向链表中的所有数据。
106.本实施例所提供的在处理完文件数据之后,清空双向链表中的所有数据,使得能够尽可能地防止数据泄露,提高文件数据的安全性。
107.在上述实施例中,对于处理文件数据的方法进行了详细描述,本技术还提供处理文件数据的装置、服务器对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
108.图2为本技术的一实施例提供的处理文件数据的装置的结构图。本实施例基于功能模块的角度,包括:
109.确定模块10,用于在lru接口接收到访问目标文件数据的指令的情况下,确定待访问的数据;
110.判断模块11,用于判断待访问的数据是否为高频数据;若是,则触发第一获取模块12;若否,则触发第二获取模块13;
111.第一获取模块12,用于根据预先建立的双向链表中的高频数据链表获取待访问的数据;
112.第二获取模块13,用于根据双向链表中的低频数据链表获取待访问的数据;其中,双向链表是根据数据的访问频率创建的,双向链表中至少包含一个低频数据链表和一个高频数据链表,待访问的数据记录所在链表上与待访问的数据相邻的数据。
113.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
114.本实施例所提供的处理文件数据的装置,通过确定模块在lru接口接收到访问目标文件数据的指令的情况下,确定待访问的数据;通过判断模块判断待访问的数据是否为高频数据;若是,则触发第一获取模块根据预先建立的双向链表中的高频数据链表获取待访问的数据;若否,则触发第二获取模块根据双向链表中的低频数据链表获取待访问的数据;其中,双向链表是根据数据的访问频率创建的,双向链表中至少包含一个低频数据链表和一个高频数据链表,待访问的数据记录所在链表上与待访问的数据相邻的数据。该装置中,由于已经根据数据的访问频率对数据放置在不同的链表上,因此,可以根据待访问数据的访问频率快速地从对应的链表上访问到相应的数据;其次,相比于将高频数据、低频数据放置在一个双向链表上的方式,本实施例的装置中,双向链表中至少包含一个低频数据链表和一个高频数据链表,使得能够将低频数据、高频数据单独区分开,方便找到待访问数据在链表上的位置,并且具有更大的存储数据空间;此外,位于链表上的数据记录有所在的链表上与该数据相邻的数据,故而,对于该待访问数据相邻的数据也能够方便、快速地访问
到。
115.图3为本技术另一实施例提供的服务器的结构图。本实施例基于硬件角度,如图3所示,服务器包括:
116.存储器20,用于存储计算机程序;
117.处理器21,用于执行计算机程序时实现如上述实施例中所提到的处理文件数据的方法的步骤。
118.本实施例提供的服务器可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
119.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图形处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
120.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的处理文件数据的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于上述所提到的处理文件数据的方法所涉及到的数据等。
121.在一些实施例中,服务器还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
122.本领域技术人员可以理解,图3中示出的结构并不构成对服务器的限定,可以包括比图示更多或更少的组件。
123.本技术实施例提供的服务器,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:处理文件数据的方法,效果同上。
124.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
125.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个
实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
126.本技术提供的计算机可读存储介质包括上述提到的处理文件数据的方法,效果同上。
127.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。图4为本技术实施例提供的一种lru的数据结构示意图。如图4所示,该示意图包括:lru、lrulist、lruobject。
128.1)lru是对外呈现的主体,主要对外提供以下接口:
129.1.访问高频数据,即访问高频数据链表。
130.2.访问低频数据,即访问低频数据链表。
131.3.插入数据到高频链表首部。如果待插入的数据在低频链表,则先从低频链表中移除。
132.4.插入数据到低频链表尾部。如果待插入的数据在高频链表,则先从高频链表中移除。
133.5.自动调整高/低频链表。可以设置高频数据的百分比比例,当高频数据超过比例后,依次将高频链表尾部数据移动到低频链表首部上;当高频数据低于比例后,将低频链表首部数据移动到高频链表尾部上。使高/低频数据链表时刻保持动态平衡。
134.6.移除指定数据,即直接从高/低频数据链表中移除指定数据。
135.7.清空lru缓存数据,即清空高/低频数据链表中所有数据。
136.8.获取即将过期的数据。低频链表尾元素为即将过期的数据。
137.9.淘汰即将过期的数据,即移除低频链表尾元素。
138.2)lrulist是直接管理缓存数据的双向链表,具有以下特点:
139.1.链表中的元素都是在堆空间上分配内存,为避免在内存中频繁移动缓存数据产生性能开销,lrulist中只记录链表中首元素和尾元素的内存地址。
140.2.快速访问链表首元素。
141.3.快速访问链表尾元素。
142.4.高效将元素插入链表首部。
143.5.高效将元素插入链表尾部。
144.6.高效从链表中移除指定元素。
145.7.清空缓存元素。
146.3)lruobject表示一个具体的数据,具有以下特点:
147.1.lrulist记录的是lruobject数据的地址,因此可以利用c 继承、多态的特性,继承lruobject设计满足具体业务需求的数据结构。并缓存在lru中。
148.2.lruobject记录了所在链表上相邻的数据,因此访问相邻数据、在相邻位置插入数据具有很高的效率。
149.3.根据lruobject可以获取其所在的lrulist,进而获取其所在的lru。
150.本实施例中基于双向链表,实现lru特性:缓存近期可能使用的数据,淘汰未来访问概率最低的数据;lru、lrulist、lruobject相互独立、各司其职:lru对外提供功能接口,
lrulist达到缓存、淘汰数据的目的,lruobject承接具体的业务数据。通过该数据结构封装了完整的数据增删改查等操作,满足大部分lru需求场景;内部实现透明化,对外接口一致化,无需关心内部具体实现,与模块耦合度低;可以使用c 的继承、封装、多态特性,适配不同的需求场景,代码复用度高。
151.使用两个双向链表分别缓存高/低频访问数据,达到高效缓存新数据、淘汰旧数据;根据比例常量自动调整高/低频数据链表的数据量,使lru缓存数据时刻达到动态平衡;使用c 继承、封装、多态特性,对于不同的缓存数据,继承相同的基类,使lru支持缓存不同数据类型。实际中,lru可以和hash map组合使用,结合hash map特点,进行分工互补,lru负责缓存、淘汰数据,hash map负责高效访问数据。
152.以上对本技术所提供的一种处理文件数据的方法、装置、服务器及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
153.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献