数据存储方法、装置、设备及介质与流程

文档序号:32787930发布日期:2023-01-03 19:57阅读:26来源:国知局
数据存储方法、装置、设备及介质与流程

1.本公开涉及文件管理技术领域,尤其涉及一种数据存储方法、装置、设备及介质。


背景技术:

2.自动驾驶控制器在运行中需要记录数据到文件系统,以记录运行状态和数据,支持自动驾驶的功能开发和数据回溯。
3.在相关技术中,自动驾驶控制器通常通过其内部的多个进程使用同步接口来实现数据的存储。但是,在进程在调用同步接口打开文件时,可能出现接口调用超时的情况,从而影响数据存储的可靠性。


技术实现要素:

4.为了解决上述技术问题,本公开提供了一种数据存储方法、装置、设备及介质。
5.第一方面,本公开提供了一种数据存储方法,包括:
6.调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令,文件打开命令携带有目标文件对应的目标文件名称,文件打开命令用于使第一线程基于已打开文件的文件列表反馈目标文件名称对应的目标文件描述符;
7.调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令,文件写入命令携带有目标文件描述符和待存储的文件数据,文件写入命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并将文件数据写入目标文件名称对应的目标文件。
8.第二方面,本公开提供了另一种数据存储方法,包括:
9.接收目标进程发送的文件打开命令,文件打开命令携带有目标文件对应的目标文件名称;
10.基于已打开文件的文件列表,确定目标文件名称对应的目标文件描述符;
11.向目标进程反馈目标文件描述符,以使目标进程基于目标文件描述符向目标文件写入待存储的文件数据。
12.第三方面,本公开提供了一种数据存储装置,包括:
13.第一调用模块,用于调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令,文件打开命令携带有目标文件对应的目标文件名称,文件打开命令用于使第一线程基于已打开文件的文件列表反馈目标文件名称对应的目标文件描述符;
14.第二调用模块,用于调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令,文件写入命令携带有目标文件描述符和待存储的文件数据,文件写入命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并将文件数据写入目标文件名称对应的目标文件。
15.第四方面,本公开提供了另一种数据存储装置,包括:
16.命令接收模块,用于接收目标进程发送的文件打开命令,文件打开命令携带有目
标文件对应的目标文件名称;
17.第一确定模块,用于基于已打开文件的文件列表,确定目标文件名称对应的目标文件描述符;
18.第一反馈模块,用于向目标进程反馈目标文件描述符,以使目标进程基于目标文件描述符向目标文件写入待存储的文件数据。
19.第五方面,本公开提供了一种数据存储设备,包括:
20.处理器;
21.存储器,用于存储可执行指令;
22.其中,处理器用于从存储器中读取可执行指令,并执行可执行指令以实现第一方面或第二方面的数据存储方法。
23.第六方面,本公开提供了一种计算机可读存储介质,该存储介质存储有计算机程序,当计算机程序被处理器执行时,使得处理器实现第一方面或第二方面的数据存储方法。
24.本公开实施例提供的技术方案与现有技术相比具有如下优点:
25.本公开实施例的数据存储方法、装置、设备及介质,能够调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令,该文件打开命令携带有目标文件对应的目标文件名称,且该文件打开命令可以用于使第一线程基于已打开文件的文件列表反馈目标文件名称对应的目标文件描述符,继续调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令,该文件写入命令携带有目标文件描述符和待存储的文件数据,且该文件写入命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并将文件数据写入目标文件名称对应的目标文件,由此,在调用文件打开接口打开文件时,可以由维护已打开文件的文件列表的第一线程独立地对文件写入命令进行响应和执行,并直接返回目标文件名称对应的目标文件描述符,避免了同步接口的阻塞问题,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
附图说明
26.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
27.图1为本公开实施例提供的一种数据存储方法的流程示意图;
28.图2为本公开实施例提供的另一种数据存储方法的流程示意图;
29.图3为本公开实施例提供的一种数据存储装置的结构示意图;
30.图4为本公开实施例提供的另一种数据存储装置的结构示意图;
31.图5为本公开实施例提供的一种数据存储设备的结构示意图。
具体实施方式
32.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
33.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
34.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
35.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
36.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
37.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
38.为了解决上述问题,本公开实施例提供了一种数据存储方法、装置、设备及介质。下面结合图1对本公开实施例提供的数据存储方法进行详细说明。
39.图1示出了本公开实施例提供的一种数据存储方法的流程示意图。
40.在本公开实施例中,该数据存储方法可以由电子设备的目标进程执行。其中,电子设备可以包括但不限于诸如笔记本电脑、pda(个人数字助理)、pad(平板电脑)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。
41.如图1所示,该数据存储方法可以包括如下步骤。
42.s110、调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令,文件打开命令携带有目标文件对应的目标文件名称,文件打开命令用于使第一线程基于已打开文件的文件列表反馈目标文件名称对应的目标文件描述符。
43.在本公开实施例中,当用户想打开目标文件时,可以通过电子设备进行文件打开操作,电子设备可以响应于该文件打开操作,通过目标进程调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令。
44.可选地,文件打开操作可以为用于打开目标文件的操作。例如,文件打开操作可以为用户通过电子设备进行点击打开控件的操作、输入打开指令的操作等。
45.可选地,文件打开接口可以为用于打开目标文件的接口。
46.可选地,第一线程可以为用于处理各个接口命令的线程。
47.可选地,接口命令可以为调用接口产生的命令。
48.可选地,文件打开命令可以为用于打开目标文件的命令。其中,文件打开命令可以携带有目标文件对应的目标文件名称。
49.可选地,目标文件可以为用户想操作的文件。
50.可选地,目标文件名称可以为目标文件对应的名称。例如,目标文件可以为a文件,对应的目标文件名称可以为“a”、目标文件可以为b文件,对应的目标文件名称可以为“b”,此处不做限定。
51.可选地,文件列表可以为用户存储已打开文件的列表。
52.可选地,目标文件描述符可以为目标文件对应的索引。其中,目标文件描述符可以
与目标文件具有映射关系。例如,电子设备通过目标文件描述符查询到对应的目标文件。
53.具体地,当用户想打开目标文件时,可以通过电子设备进行文件打开操作,电子设备可以响应于该文件打开操作,通过目标进程调用文件打开接口,向第一线程发送文件打开接口对应的文件打开命令,第一线程可以接收到携带有目标文件对应的目标文件名称的文件打开命令,在存储已打开文件的文件列表中,查找该目标文件名称的对应的目标文件,并向电子设备反馈该目标文件名称对应的目标文件描述符。
54.s120、调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令,文件写入命令携带有目标文件描述符和待存储的文件数据,文件写入命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并将文件数据写入目标文件名称对应的目标文件。
55.在本公开实施例中,在接收到第一线程反馈的目标文件描述符之后,当用户想向目标文件写入数据时,可以通过电子设备进行文件写入操作,电子设备可以响应于该文件写入操作,通过目标进程调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令。
56.可选地,文件写入操作可以为用于向目标文件写入数据的操作。例如,文件写入操作可以为用户通过电子设备进行点击写入控件的操作、输入写入指令的操作等。
57.可选地,文件写入接口可以为用于向目标文件写入数据的接口。
58.可选地,第二线程可以为用于处理各个队列命令的线程。
59.可选地,文件写入命令可以为用于向目标文件写入数据的命令。其中,文件写入命令可以携带有目标文件描述符和待存储的文件数据。
60.可选地,待存储的文件数据可以为待写入目标文件的文件数据。
61.具体地,在接收到第一线程反馈的目标文件描述符之后,当用户想向目标文件写入数据时,可以通过电子设备进行文件写入操作,电子设备可以响应于该文件写入操作,通过目标进程调用文件写入接口,向第二线程发送文件写入接口对应的文件写入命令,第二线程可以响应于该携带有目标文件描述符和待存储的文件数据的文件写入命令,在文件列表中查找该目标文件描述符对应的目标文件名称,并根据查找到的目标文件名称确定对应的目标文件,将待存储的文件数据写入该目标文件中。
62.由此,在本公开实施例中,能够调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令,该文件打开命令携带有目标文件对应的目标文件名称,且该文件打开命令可以用于使第一线程基于已打开文件的文件列表反馈目标文件名称对应的目标文件描述符,继续调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令,该文件写入命令携带有目标文件描述符和待存储的文件数据,且该文件写入命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并将文件数据写入目标文件名称对应的目标文件,由此,在调用文件打开接口打开文件时,可以由维护已打开文件的文件列表的第一线程独立地对文件写入命令进行响应和执行,并直接返回目标文件名称对应的目标文件描述符,避免了同步接口的阻塞问题,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
63.可选地,第一线程在已打开文件的文件列表中查找目标文件名称对应的目标文件时,在该目标文件为已打开文件的情况下,目标文件描述符为在文件列表中已存储的文件
描述符。
64.具体地,第一线程在已打开文件的文件列表中查找目标文件名称对应的目标文件时,如果该目标文件为已打开文件,第一线程可以直接获取该目标文件在文件列表中存储的文件描述符,即目标文件描述符,并向电子设备反馈该目标文件描述符。
65.可选地,第一线程在已打开文件的文件列表中查找目标文件名称对应的目标文件时,在目标文件为未打开文件或者未创建文件的情况下,目标文件描述符为在文件列表中为目标文件增加的文件描述符。
66.具体地,第一线程在已打开文件的文件列表中查找目标文件名称对应的目标文件时,如果该目标文件为未打开文件或者未创建文件,则第一线程无法直接获取目标文件的文件描述符,第一线程可以在文件列表中为该目标文件增加对应的文件描述符,即目标文件描述符,并向电子设备反馈该目标文件描述符。
67.由此,在本公开实施例中,不管文件列表中是否存在目标文件,第一线程都可以反馈目标文件描述符,从而实现无阻塞的文件打开操作,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
68.可选地,文件打开命令还用于使第一线程在目标文件为未打开文件时通过第二线程打开目标文件名称对应的目标文件,或者,在目标文件为未创建文件时通过第二线程创建并打开目标文件名称对应的目标文件。
69.在本公开一些实施例中,第一线程在接收到文件打开命令后,在已打开文件的文件列表中查找目标文件名称对应的目标文件时,如果该目标文件为未打开的文件,第一线程可以向第二线程发送文件打开命令,第二线程可以通过接收到的文件打开命令,打开目标文件名称对应的目标文件。
70.在本公开一些实施例中,第一线程在接收到文件打开命令后,在已打开文件的文件列表中查找目标文件名称对应的目标文件时,如果该目标文件为未创建文件,第一线程可以向第二线程发送文件创建命令,第二线程可以通过接收到的文件创建命令,创建并打开目标文件名称对应的目标文件。
71.由此,在本公开实施例中,第一线程可以通过第二线程打开或创建对应的目标文件,从而实现无阻塞的文件打开或创建操作,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
72.可选地,s120可以具体包括:调用文件写入接口,以向第一队列发送文件写入命令,第一队列用于使第二线程获取文件写入命令。
73.在本公开实施例中,电子设备可以通过目标进程调用文件写入接口,向第一队列发送文件写入命令。
74.可选地,第一队列可以为用于顺序存储命令的队列。
75.具体地,电子设备可以通过目标进程调用文件写入接口,向第一队列发送文件写入命令,第一队列可以将接收到的文件写入命令进行存储,第二线程可以顺序获取第一队列中存储的命令,即获取文件写入命令。
76.由此,在本公开实施例中,可以将命令存储在第一队列中,由第二线程进行顺序获取,从而实现无阻塞的命令执行操作,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
77.可选地,在s120之后,该数据存储方法还可以包括:调用文件关闭接口,以向第二线程发送文件关闭接口对应的文件关闭命令,文件关闭命令携带有目标文件描述符,文件关闭命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并关闭目标文件名称对应的目标文件。
78.在本公开实施例中,当用户想关闭目标文件时,可以通过电子设备进行文件关闭操作,电子设备可以响应于该文件关闭操作,通过目标进程调用文件关闭接口,从而向第二线程发送文件关闭接口对应的文件关闭命令。
79.可选地,文件关闭操作可以为用于关闭目标文件的操作。例如,文件关闭操作可以为用户通过电子设备进行点击关闭控件的操作、输入关闭指令的操作等。
80.可选地,文件关闭接口可以为用于关闭目标文件的接口。
81.可选地,文件关闭命令可以为用于关闭目标文件的命令。其中,文件关闭命令可以携带有目标文件描述符。具体地,第二线程在接收到文件关闭命令后,可以根据该文件关闭命令携带的目标文件描述符确定需要关闭的目标文件,从而可以关闭对应的目标文件。
82.具体地,当用户想关闭目标文件时,可以通过电子设备进行文件关闭操作,电子设备可以响应于该文件关闭操作,通过目标进程调用文件关闭接口,从而向第二线程发送文件关闭接口对应的文件关闭命令,第二线程可以接收到该文件关闭命令并获取到该文件关闭命令携带的目标文件描述符,接着基于该目标文件描述符在文件列表中查询,查找到该目标文件描述符对应的目标文件名称,并将该目标文件名称对应的目标文件进行关闭。
83.由此,在本公开实施例中,可以通过调用文件关闭接口,实现对目标文件的关闭,从而实现无阻塞的命令执行操作,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
84.可选地,调用文件关闭接口,以向第二线程发送文件关闭接口对应的文件关闭命令,可以具体包括:调用文件关闭接口,以向第一队列发送文件关闭命令,第一队列用于使第二线程获取文件关闭命令。
85.在本公开实施例中,电子设备可以通过目标进程调用文件关闭接口,从而向第一队列发送文件关闭命令。
86.具体地,电子设备可以通过目标进程调用文件关闭接口,向第一队列发送文件关闭命令,第一队列可以接收到该文件关闭命令,并顺序存储在第一队列中,第二线程可以顺序获取该第一队列中存储的文件关闭命令,从而执行该文件关闭命令。
87.由此,在本公开实施例中,可以将命令存储在第一队列中,由第二线程进行顺序获取,从而实现无阻塞的命令执行操作,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
88.可选地,在s110之前,该数据存储方法还可以包括:确定文件数据的数据大小和文件数据所属的最后更新文件的文件大小;在数据大小与文件大小之和小于或等于目标数据分割阈值的情况下,将最后更新文件的文件名称作为目标文件对应的目标文件名称;在数据大小与文件大小之和大于目标数据分割阈值的情况下,按照预设的文件名称调整规则,对最后更新文件的文件名称进行名称调整,得到目标文件对应的目标文件名称。
89.在本公开实施例中,电子设备在调用文件打开接口之前,还需要确定文件数据的数据大小和文件数据所属的最后更新文件的文件大小。
90.可选地,文件数据的数据大小可以为需要写入目标文件的数据的数据量大小。
91.可选地,最后更新文件可以为更新时间最近的文件。
92.可选地,文件数据所属的最后更新文件可以为目标文件描述符对应的最后更新文件。
93.具体地,电子设备在通过目标进程调用文件打开接口之前,还可以得到需要写入目标文件的文件数据的数据大小和该文件数据所属的最后更新文件的文件大小。
94.在一些实施例中,电子设备在确定数据大小和文件大小之后,在数据大小与文件大小之和小于或等于目标数据分割阈值的情况下,将最后更新文件的文件名称作为目标文件对应的目标文件名称。
95.可选地,目标数据分割阈值可以为文件数据需要进行分割的阈值。例如,目标数据分割阈值可以为100mb、200mb等,此处不做限定。
96.具体地,电子设备在确定数据大小和文件大小之后,将该数据大小和文件大小的和与目标数据分割阈值进行比较,若数据大小和文件大小之和小于或等于目标数据分割阈值,电子设备可以通过目标进程将最后更新文件的文件名称作为目标文件对应的目标文件名称。
97.例如,以目标数据分割阈值为100mb为例,电子设备可以确定文件数据的数据大小为2mb,最后更新文件的文件大小为50mb,即该数据大小和文件大小之和52mb小于目标数据分割阈值100mb,电子设备可以将该最后更新文件的文件名称作为目标文件对应的目标文件名称,即将该最后更新文件作为目标文件。
98.在另一些实施例中,电子设备在确定数据大小和文件大小之后,在数据大小与文件大小之和大于目标数据分割阈值的情况下,按照预设的文件名称调整规则,对最后更新文件的文件名称进行名称调整,得到目标文件对应的目标文件名称。
99.可选地,预设的文件名称调整规则可以为预先定义的用于调整文件名称的规则。
100.例如,只有一个文件(a)时,文件(a)的文件名称可以为demo.log,当该demo.log文件(a)的文件大小大于目标数据分割阈值时,电子设备可以对该文件(a)进行关闭,并将demo.log文件(a)重命名为demo.1.log,得到demo.1.log文件(a),并重新创建一个文件名称为demo.log的文件(b),此处,该demo.log文件(b)为最后更新文件;进一步地,当demo.log文件(b)的文件大小也大于目标数据分割阈值时,电子设备可以将文件名称为demo.1.log的文件(a)重命名为demo.2.log,得到demo.2.log文件(a),将文件名称为demo.log的文件(b)重命名为demo.1.log,得到demo.1.log文件(b),继续创建一个新的demo.log文件(c),此时,demo.log文件(c)为最后更新文件。其中,(a)、(b)、(c)用于区别各个文件,并无实际意义。
101.具体地,电子设备在确定数据大小和文件大小之后,将该数据大小和文件大小的和与目标数据分割阈值进行比较,若数据大小和文件大小之和大于目标数据分割阈值,电子设备可以根据预设的文件名称调整规则,对该最后更新文件的文件名称进行名称调整,从而得到调整后的文件,即得到目标文件对应的目标文件名称。
102.例如,以目标数据分割阈值为100mb为例,电子设备可以确定文件数据的数据大小为10mb,最后更新文件的文件大小为95mb,即该数据大小和文件大小之和105mb大于目标数据分割阈值100mb,此时,若最后更新文件的文件名称为demo.log,电子设备可以根据预设
的文件名称调整规则,对该demo.log文件(a)进行名称调整,得到demo.1.log文件(a),并重新创建一个文件名称为demo.log的文件(b),得到目标文件对应的目标文件名称demo.log,即将该demo.log文件(b)作为目标文件。
103.由此,在本公开实施例中,电子设备可以根据数据大小与文件大小之和对文件进行对应的调整,从而降低磁盘负载,提高了数据存储的可靠性。
104.可选地,该数据存储方法还可以包括:确定存储空间的剩余容量;将剩余容量与存储空间的理论容量的比值作为调整系数;将调整系数与预设数据分割阈值的乘积作为目标数据分割阈值。
105.在本公开实施例中,电子设备可以通过目标进程确定存储空间的剩余容量。
106.可选地,存储空间可以为存储文件的空间。例如,存储空间可以为磁盘空间、硬盘空间等,此处不做限定。
107.具体地,电子设备查询并获取存储空间的剩余存储容量。
108.进一步地,电子设备在获取存储空间的剩余容量之后,可以将剩余容量与存储空间的理论容量的比值作为调整系数。
109.可选地,理论容量可以为预先设定的存储容量。
110.可选地,调整系数可以为用于调整目标数据分割阈值的系数。
111.例如,电子设备可以获取存储空间的剩余容量为5gb,存储空间的理论容量为10gb,并计算剩余容量5gb与理论容量10gb的比值为0.5,电子设备可以将该0.5作为调整系数。
112.进一步地,电子设备在得到调整系数之后,可以通过目标进程将调整系数与预设数据分割阈值的乘积作为目标数据分割阈值。
113.可选地,预设数据分割阈值可以为预先设置的数据分割阈值。例如,预设数据分割阈值可以为200mb、400mb等,此处不做限定。
114.具体地,电子设备可以将调整系数与预设数据分割阈值的乘积作为目标数据分割阈值。例如,调整系数为0.5,预设数据分割阈值为200mb,则调整系数与预设数据分割阈值的乘积为100mb,即目标数据分割阈值为100mb。
115.由此,在本公开实施例中,电子设备可以动态调整目标数据分割阈值,从而能够在不将磁盘空间占满的情况下充分利用磁盘空间,提高了数据存储的可靠性。
116.可选地,在按照预设的文件名称调整规则,对最后更新文件的文件名称进行名称调整,得到目标文件对应的目标文件名称之前,该数据存储方法还可以包括:计算文件数据所属的历史文件与目标文件的文件总数。
117.在本公开实施例中,在对最后更新文件的文件名称进行名称调整之前,电子设备可以计算文件数据所属的历史文件与目标文件的文件总数。
118.可选地,历史文件可以为历史更新的文件。例如,存在demo.log文件和demo.1.log文件时,demo.log文件和demo.1.log文件可以为历史文件;存在demo.log文件、demo.1.log文件和demo.2.log文件时,demo.log文件、demo.1.log文件和demo.2.log文件可以为历史文件。
119.具体地,电子设备可以根据文件的文件名称确定历史文件与目标文件,并计算出对应的文件总数。
120.进一步地,电子设备在计算出历史文件与目标文件的文件总数之后,可以通过目标进程在文件总数小于或等于预设数量上限的情况下,按照预设的文件名称调整规则,对最后更新文件的文件名称进行名称调整,得到目标文件对应的目标文件名称。
121.可选地,预设数量上限可以为预先设置的数量上限。例如,预设数量上限可以为3、4等,此处不做赘述。
122.具体地,电子设备在得到文件总数之后,可以将该文件总数与预设数量上限进行比较,若该文件总数小于或等于预设数量上限,电子设备可以根据预设的文件名称调整规则,对最后更新文件的文件名称进行名称调整,得到目标文件对应的目标文件名称。
123.例如,以预设数量上限为3为例,存在demo.log文件和demo.1.log文件,此时,电子设备可以得到历史文件的文件数量为2,并计算得到历史文件与目标文件的文件总数为3,等于预设数量上限,则电子设备可以根据预设的文件名称调整规则,将demo.log文件调整demo.1.log文件,将demo.1.log文件调整为demo.2.log文件,并创建demo.log文件。
124.由此,在本公开实施例中,可以在文件总数小于或等于预设数量上限的情况下,进行名称调整,保证文件总数不超过预设数量上限,降低磁盘负载。
125.可选地,在计算文件数据所属的历史文件与目标文件的文件总数之后,该数据存储方法还可以包括:在文件总数大于预设数量上限的情况下,删除历史文件中存储时间最长的目标历史文件;按照预设的重命名规则,对剩余的历史文件的文件名称进行重命名;将最后更新文件的文件名称作为目标文件对应的目标文件名称。
126.具体地,电子设备在得到文件总数之后,可以通过目标进程将该文件总数与预设数量上限进行比较,若该文件总数大于预设数量上限,电子设备可以删除历史文件中存储时间最长的目标历史文件。
127.可选地,目标历史文件可以为存储时间最长的历史文件。
128.例如,以预设数量上限为3为例,存在demo.log文件、demo.1.log文件和demo.2.log文件,此时,电子设备可以得到历史文件的文件数量为3,并计算得到历史文件与目标文件的文件总数为4,大于预设数量上限,此时,电子设备可以删除历史文件中存储时间最长的目标历史文件,即删除demo.2.log文件。
129.进一步地,电子设备在删除历史文件中存储时间最长的目标历史文件之后,可以通过目标进程按照预设的重命名规则,对剩余的历史文件的文件名称进行重命名。
130.可选地,预设的重命名规则可以为预先设定的重命名规则。
131.例如,当存在demo.log文件、demo.1.log文件和demo.2.log文件,电子设备可以计算得到历史文件与目标文件的文件总数为4,此时,可以删除历史文件中存储时间最长的目标历史文件,即删除demo.2.log文件,根据预设的重命名规则,对剩余的历史文件的文件名称进行重命名,即将demo.log文件重命名为demo.1.log文件,将demo.1.log文件重命名为demo.2.log文件,并创建demo.log文件。
132.进一步地,电子设备在按照预设的重命名规则,对剩余的历史文件的文件名称进行重命名之后,可以通过目标进程将最后更新文件的文件名称作为目标文件对应的目标文件名称。
133.例如,电子设备可以将创建的demo.log文件作为目标文件,即将文件名称demo.log作为目标文件名称。
134.由此,在本公开实施例中,在文件总数大于预设数量上限的情况下,删除目标历史文件,保证文件总数不超过预设数量上限,降低磁盘负载。
135.在本公开一些实施例中,电子设备在调用各个接口时,需要通过对应的接口调用命令进行调用,下面进行详细说明。
136.在一些实施例中,当调用文件打开接口时,包括:向第二队列发送携带有目标文件名称的打开接口调用命令,第二队列用于使异步命令管理进程获取打开接口调用命令并响应于打开接口调用命令调用文件打开接口。
137.在本公开实施例中,电子设备可以通过目标进程向第二队列发送携带有目标文件名称的打开接口调用命令。
138.可选地,第二队列可以为用于储存接口调用命令的队列。
139.可选地,打开接口调用命令可以为用于调用文件打开接口的命令。
140.可选地,异步命令管理进程可以为用于执行接口调用命令的进程。
141.具体地,电子设备可以向第二队列发送携带有目标文件名称的打开接口调用命令,第二队列可以接收并存储该打开接口调用命令,异步命令管理进程可以获取第二队列中存储的打开接口调用命令,并响应于该打开接口调用命令调用对应的文件打开接口。
142.在另一些实施例中,当调用文件写入接口时,包括:向第二队列发送携带有目标文件描述符的写入接口调用命令,第二队列用于使异步命令管理进程获取写入接口调用命令并响应于写入接口调用命令调用文件写入接口。
143.在本公开实施例中,电子设备可以通过目标进程向第二队列发送携带有目标文件描述符的写入接口调用命令。
144.可选地,写入接口调用命令可以为用于调用文件写入接口的命令。
145.具体地,电子设备可以向第二队列发送携带有目标文件描述符的写入接口调用命令,第二队列可以接收并存储该写入接口调用命令,异步命令管理进程可以获取第二队列中存储的写入接口调用命令,并响应于该写入接口调用命令调用对应的文件写入接口。
146.在又一些实施例中,当调用文件关闭接口时,包括:向第二队列发送携带有目标文件描述符的关闭接口调用命令,第二队列用于使异步命令管理进程获取关闭接口调用命令并响应于关闭接口调用命令调用文件关闭接口。
147.在本公开实施例中,电子设备可以通过目标进程向第二队列发送携带有目标文件描述符的关闭接口调用命令。
148.可选地,关闭接口调用命令可以为用于调用文件关闭接口的命令。
149.具体地,电子设备可以向第二队列发送携带有目标文件描述符的关闭接口调用命令,第二队列可以接收并存储该关闭接口调用命令,异步命令管理进程可以获取第二队列中存储的关闭接口调用命令,并响应于该关闭接口调用命令调用对应的文件关闭接口。
150.由此,在本公开实施例中,在调用接口时,可以将对应的接口调用命令存储在第二队列,由异步命令管理进程异步获取第二队列中存储的各个接口调用命令并调用对应的接口,避免了各接口调用命令的调用冲突,提升接口的调用效率。
151.图2示出了本公开实施例提供的另一种数据存储方法的流程示意图。
152.如图2所示,该数据存储方法可以应用于第一线程,包括如下步骤。
153.s210、接收目标进程发送的文件打开命令,文件打开命令携带有目标文件对应的
目标文件名称。
154.在本公开实施例中,第一线程可以接收目标进程发送的文件打开命令。
155.具体地,电子设备可以通过第一线程接收目标进程发送的文件打开命令,并获取该文件打开命令携带的目标文件对应的目标文件名称。
156.s220、基于已打开文件的文件列表,确定目标文件名称对应的目标文件描述符。
157.在本公开实施例中,在电子设备通过第一线程接收目标进程发送的文件打开命令之后,可以基于已打开文件的文件列表,确定目标文件名称对应的目标文件描述符。
158.具体地,在电子设备通过第一线程接收目标进程发送的文件打开命令之后,第一线程可以在已打开文件的文件列表中,查找该目标文件名称对应的目标文件,并在查找到该目标文件名称对应的目标文件之后,获取该目标文件名称对应的目标文件描述符。
159.s230、向目标进程反馈目标文件描述符,以使目标进程基于目标文件描述符向目标文件写入待存储的文件数据。
160.在本公开实施例中,电子设备通过第一线程得到目标文件描述符之后,可以向目标进程反馈目标文件描述符。
161.具体地,电子设备通过第一线程得到目标文件描述符之后,可以向目标进程反馈该目标文件描述符,目标进程可以根据该目标文件描述符向对应的目标文件写入待存储的文件数据。
162.由此,在本公开实施例中,可以由第一线程直接返回目标文件名称对应的目标文件描述符,避免了同步接口的阻塞问题,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
163.可选地,s220可以具体包括:在文件列表中查询目标文件名称;若查询到目标文件名称,从文件列表中读取目标文件名称对应的目标文件描述符;若未查询到目标文件名称,在文件列表中存储目标文件名称,并将目标文件名称对应的存储单元标识符作为目标文件描述符。
164.在一些实施例中,第一线程在接收到文件打开命令之后,可以在已打开文件的文件列表中查询目标文件名称,若查询到目标文件名称,从文件列表中读取目标文件名称对应的目标文件描述符。
165.具体地,第一线程在接收到文件打开命令之后,可以在已打开文件的文件列表中查询目标文件名称,如果第一线程在文件列表中查询到目标文件名称,则可以直接在文件列表中读取该目标文件名称对应的目标文件描述符,并向目标进程反馈该目标文件描述符。
166.在另一些实施例中,第一线程在接收到文件打开命令之后,可以在已打开文件的文件列表中查询目标文件名称,若未查询到目标文件名称,在文件列表中存储目标文件名称,并将目标文件名称对应的存储单元标识符作为目标文件描述符。
167.可选地,存储单元标识符可以为存储目标文件名称的单元的标识符。例如,存储单元标识符可以为序号、标号等,此处不做限定。
168.具体地,第一线程在接收到文件打开命令之后,可以在已打开文件的文件列表中查询目标文件名称,如果第一线程在文件列表中没有查询到该目标文件名称,则可以在文件列表中存储目标文件名称,并将该文件列表中存储目标文件名称的单元的标识符,即存
储单元标识符作为该目标文件名称对应的目标文件描述符,并向目标进程反馈该目标文件描述符。
169.可选地,在将目标文件名称对应的存储单元标识符作为目标文件描述符之后,该数据存储方法还可以包括:向第二线程发送文件打开命令,文件打开命令包括目标文件名称,文件打开命令用于使第二线程在目标文件为未打开文件时打开目标文件名称对应的目标文件,或者,在目标文件为未创建文件时创建并打开目标文件名称对应的目标文件。
170.在一些实施例中,当第一线程在文件列表中没有查询到该目标文件名称并将该目标文件名称存储在文件列表中后,可以向第二线程发送文件打开命令,第二线程可以接收到文件打开命令后,确定该文件打开命令中目标文件名称对应的目标文件的状态,如果该目标文件为未打开的文件,第二线程可以响应于该文件打开命令,打开目标文件名称对应的目标文件。
171.在另一些实施例中,当第一线程在文件列表中没有查询到该目标文件名称并将该目标文件名称存储在文件列表中后,可以向第二线程发送文件打开命令,第二线程可以接收到文件打开命令后,确定该文件打开命令中目标文件名称对应的目标文件的状态,如果该目标文件为未创建文件,第二线程可以响应于该文件打开命令,创建并打开目标文件名称对应的目标文件。
172.由此,在本公开实施例中,第一线程可以通过第二线程打开或创建对应的目标文件,从而实现无阻塞的文件打开或创建操作,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
173.图3示出了本公开实施例提供的一种数据存储装置的结构示意图。
174.如图3所示,该数据存储装置300可以包括第一调用模块310和第二调用模块320。
175.该第一调用模块310可以用于调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令,文件打开命令携带有目标文件对应的目标文件名称,文件打开命令用于使第一线程基于已打开文件的文件列表反馈目标文件名称对应的目标文件描述符。
176.该第二调用模块320可以用于调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令,文件写入命令携带有目标文件描述符和待存储的文件数据,文件写入命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并将文件数据写入目标文件名称对应的目标文件。
177.由此,在本公开实施例中,能够调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令,该文件打开命令携带有目标文件对应的目标文件名称,且该文件打开命令可以用于使第一线程基于已打开文件的文件列表反馈目标文件名称对应的目标文件描述符,继续调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令,该文件写入命令携带有目标文件描述符和待存储的文件数据,且该文件写入命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并将文件数据写入目标文件名称对应的目标文件,由此,在调用文件打开接口打开文件时,可以由维护已打开文件的文件列表的第一线程独立地对文件写入命令进行响应和执行,并直接返回目标文件名称对应的目标文件描述符,避免了同步接口的阻塞问题,进而避免出现接口调用超时的情况,提高了数据存储的可靠性。
178.在本公开一些实施例中,在目标文件为已打开文件的情况下,目标文件描述符为
在文件列表中已存储的文件描述符;在目标文件为未打开文件或者未创建文件的情况下,目标文件描述符为在文件列表中为目标文件增加的文件描述符。
179.在本公开一些实施例中,文件打开命令还用于使第一线程在目标文件为未打开文件时通过第二线程打开目标文件名称对应的目标文件,或者,在目标文件为未创建文件时通过第二线程创建并打开目标文件名称对应的目标文件。
180.在本公开一些实施例中,该第二调用模块320可以包括第一调用单元。
181.该第一调用单元可以用于调用文件写入接口,以向第一队列发送文件写入命令,第一队列用于使第二线程获取文件写入命令。
182.在本公开一些实施例中,该数据存储装置300还可以包括第三调用模块。
183.该第三调用模块可以用于在调用文件写入接口,以向第二线程发送文件写入接口对应的文件写入命令之后,调用文件关闭接口,以向第二线程发送文件关闭接口对应的文件关闭命令,文件关闭命令携带有目标文件描述符,文件关闭命令用于使第二线程基于目标文件描述符在文件列表中查询目标文件名称并关闭目标文件名称对应的目标文件。
184.在本公开一些实施例中,该第三调用模块可以包括第二调用单元。
185.该第二调用单元可以用于调用文件关闭接口,以向第一队列发送文件关闭命令,第一队列用于使第二线程获取文件关闭命令。
186.在本公开一些实施例中,该数据存储装置300还可以包括第二确定模块、第一处理模块和第二处理模块。
187.该第二确定模块可以用于在调用文件打开接口,以向第一线程发送文件打开接口对应的文件打开命令之前,确定文件数据的数据大小和文件数据所属的最后更新文件的文件大小。
188.该第一处理模块可以用于在数据大小与文件大小之和小于或等于目标数据分割阈值的情况下,将最后更新文件的文件名称作为目标文件对应的目标文件名称。
189.该第二处理模块可以用于在数据大小与文件大小之和大于目标数据分割阈值的情况下,按照预设的文件名称调整规则,对最后更新文件的文件名称进行名称调整,得到目标文件对应的目标文件名称。
190.在本公开一些实施例中,该数据存储装置300还可以包括第三确定模块、第三处理模块和第四处理模块。
191.该第三确定模块可以用于确定存储空间的剩余容量。
192.该第三处理模块可以用于将剩余容量与存储空间的理论容量的比值作为调整系数。
193.该第四处理模块可以用于将调整系数与预设数据分割阈值的乘积作为目标数据分割阈值。
194.在本公开一些实施例中,该数据存储装置300还可以包括总数计算模块。
195.该总数计算模块可以用于在按照预设的文件名称调整规则,对最后更新文件的文件名称进行名称调整,得到目标文件对应的目标文件名称之前,计算文件数据所属的历史文件与目标文件的文件总数。
196.在本公开一些实施例中,该第二处理模块可以具体用于在文件总数小于或等于预设数量上限的情况下,按照预设的文件名称调整规则,对最后更新文件的文件名称进行名
称调整,得到目标文件对应的目标文件名称。
197.在本公开一些实施例中,该数据存储装置300还可以包括文件删除模块、第五处理模块和第六处理模块。
198.该文件删除模块可以用于在计算文件数据所属的历史文件与目标文件的文件总数之后,在文件总数大于预设数量上限的情况下,删除历史文件中存储时间最长的目标历史文件。
199.该第五处理模块可以用于按照预设的重命名规则,对剩余的历史文件的文件名称进行重命名。
200.该第六处理模块可以用于将最后更新文件的文件名称作为目标文件对应的目标文件名称。
201.在本公开一些实施例中,该数据存储装置300还可以包括第一发送模块、第二发送模块和第三发送模块。
202.该第一发送模块可以用于向第二队列发送携带有目标文件名称的打开接口调用命令,第二队列用于使异步命令管理进程获取打开接口调用命令并响应于打开接口调用命令调用文件打开接口。
203.该第二发送模块可以用于向第二队列发送携带有目标文件描述符的写入接口调用命令,第二队列用于使异步命令管理进程获取写入接口调用命令并响应于写入接口调用命令调用文件写入接口。
204.该第三发送模块可以用于向第二队列发送携带有目标文件描述符的关闭接口调用命令,第二队列用于使异步命令管理进程获取关闭接口调用命令并响应于关闭接口调用命令调用文件关闭接口。
205.需要说明的是,图3所示的数据存储装置300可以执行图1所示的方法实施例中的各个步骤,并且实现图1所示的方法实施例中的各个过程和效果,在此不做赘述。
206.图4示出了本公开实施例提供的另一种数据存储装置的结构示意图。
207.如图4所示,该数据存储装置400可以包括命令接收模块410、第一确定模块420和第一反馈模块430。
208.该命令接收模块410可以用于接收目标进程发送的文件打开命令,文件打开命令携带有目标文件对应的目标文件名称。
209.该第一确定模块420可以用于基于已打开文件的文件列表,确定目标文件名称对应的目标文件描述符。
210.该第一反馈模块430可以用于向目标进程反馈目标文件描述符,以使目标进程基于目标文件描述符向目标文件写入待存储的文件数据。
211.在本公开一些实施例中,该第一确定模块420可以包括名称查询单元、第一处理单元和第二处理单元。
212.该名称查询单元可以用于在文件列表中查询目标文件名称。
213.该第一处理单元可以用于若查询到目标文件名称,从文件列表中读取目标文件名称对应的目标文件描述符。
214.该第二处理单元可以用于若未查询到目标文件名称,在文件列表中存储目标文件名称,并将目标文件名称对应的存储单元标识符作为目标文件描述符。
215.在本公开一些实施例中,该第一确定模块420可以包括命令发送单元。
216.该命令发送单元可以用于在将目标文件名称对应的存储单元标识符作为目标文件描述符之后,向第二线程发送文件打开命令,文件打开命令包括目标文件名称,文件打开命令用于使第二线程在目标文件为未打开文件时打开目标文件名称对应的目标文件,或者,在目标文件为未创建文件时创建并打开目标文件名称对应的目标文件。
217.需要说明的是,图4所示的数据存储装置400可以执行图2所示的方法实施例中的各个步骤,并且实现图2所示的方法实施例中的各个过程和效果,在此不做赘述。
218.图5示出了本公开实施例提供的一种数据存储设备的结构示意图。
219.在本公开一些实施例中,图5所示的数据存储设备可以为用户想要进行数据存储的电子设备。具体地,该电子设备可以包括但不限于诸如移动电话、车载设备、整车控制器、平板电脑、可穿戴设备、智能家居设备等移动终端。
220.如图5所示,该数据存储设备可以包括处理器501以及存储有计算机程序指令的存储器502。
221.具体地,上述处理器501可以包括中央处理器(cpu),或者特定集成电路(application specific integrated circuit,asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
222.存储器502可以包括用于信息或指令的大容量存储器。举例来说而非限制,存储器502可以包括硬盘驱动器(hard disk drive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,usb)驱动器或者两个及其以上这些的组合。在合适的情况下,存储器502可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器502可在综合网关设备的内部或外部。在特定实施例中,存储器502是非易失性固态存储器。在特定实施例中,存储器502包括只读存储器(read-only memory,rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmable rom,prom)、可擦除prom(electrical programmable rom,eprom)、电可擦除prom(electrically erasable programmable rom,eeprom)、电可改写rom(electrically alterable rom,earom)或闪存,或者两个或及其以上这些的组合。
223.处理器501通过读取并执行存储器502中存储的计算机程序指令,以执行本公开实施例所提供的数据存储方法的步骤。
224.在一个示例中,该数据存储设备还可包括收发器503和总线504。其中,如图5所示,处理器501、存储器502和收发器503通过总线504连接并完成相互间的通信。
225.总线504包括硬件、软件或两者。举例来说而非限制,总线可包括加速图形端口(accelerated graphics port,agp)或其他图形总线、增强工业标准架构(extended industry standard architecture,eisa)总线、前端总线(front side bus,fsb)、超传输(hyper transport,ht)互连、工业标准架构(industrial standard architecture,isa)总线、无限带宽互连、低引脚数(low pin count,lpc)总线、存储器总线、微信道架构(micro channel architecture,mca)总线、外围控件互连(peripheral component interconnect,pci)总线、pci-express(pci-x)总线、串行高级技术附件(serial advanced technology attachment,sata)总线、视频电子标准协会局部(video electronics standards association local bus,vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。
在合适的情况下,总线504可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
226.本公开实施例还提供了一种计算机可读存储介质,该存储介质可以存储有计算机程序,当计算机程序被处理器执行时,使得处理器实现本公开实施例所提供的数据存储方法。
227.上述的存储介质可以例如包括计算机程序指令的存储器502,上述指令可由数据存储设备的处理器501执行以完成本公开实施例所提供的数据存储方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(random access memory,ram)、光盘只读存储器(compact disc rom,cd-rom)、磁带、软盘和光数据存储设备等。
228.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
229.以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1