数据写入方法、计算机设备及存储介质与流程

阅读: 评论:0



1.本技术涉及金融技术领域,具体是涉及一种数据写入方法、计算机设备及存储介质。


背景技术:



2.相关技术中,健康检查的场景中有一个场景是读取应用在cat (central application tracking)监控平台上的heartbeat(心跳)报表数据,并根据数据表现以及规则匹配来进行健康判断和告警动作执行。所以健康检查中心需要一个满足以下需求的队列来存储cat的heartbeat报表数据:根据时间戳排序;可插入任意时间戳的数据;每个时间戳位置仅保留一条数据。
3.但是现有的队列不能同时满足以上要求,因此本技术提出一种新的数据写入方法。


技术实现要素:



4.有鉴于此,本技术提供一种数据写入方法、计算机设备及存储介质,以解决现有技术中的数据队列不能同时满足根据时间戳排序、可插入任意时间戳的数据以及每个时间戳(每分钟)位置仅保留一条数据的问题。
5.为了解决上述技术问题,本技术提供的第一个技术方案为:提供一种数据写入方法,应用于健康检查的场景,包括:将获取到的数据写入数据队列的一写入位置;获取所述写入位置的所述数据的时间戳,作为基准时间戳;基于所述基准时间戳,获取待写入数据的时间戳;根据所述待写入数据的时间戳和所述基准时间戳,获取所述待写入数据在所述数据队列的写入位置;将所述待写入数据写入所述数据队列的所述写入位置中。
6.可选地,所述将获取到的数据写入数据队列的一写入位置之前,包括:获取用户输入的数据获取时长;根据预设的时间步长和队列长度,获取所述用户输入的所述数据获取时长的所述数据。
7.可选地,所述时间步长为1分钟,所述队列长度为10。
8.可选地,所述将所述待写入数据写入所述数据队列的所述写入位置中之后,包括:响应于所述数据的长度超过预设的所述队列长度;以所述数据队列的第一个位置为初始位置,将未超过预设的所述队列长度的所述待写入数据从所述数据之后依次覆盖所述数据队列中的剩余位置中,从所述数据队列的初始位置写入超过预设的所述队列长度的剩余所述待写入数据。
9.可选地,所述以所述数据队列的第一个位置为初始位置,将未超过预设的所述队列长度的所述待写入数据从所述数据之后依次覆盖所述数据队列中的剩余位置中,从所述数据队列的初始位置写入超过预设的所述队列长度的剩余所述待写入数据,包括:获取所述初始位置的所述数据的新时间戳;响应于所述新时间戳大于所述基准时间戳,则将所述新时间戳作为新的基准时间戳;基于所述新的基准时间戳,将所述数据依次覆盖所述数据
队列中的剩余位置中,以形成新的数据队列。
10.可选地,所述根据所述待写入数据的时间戳和所述基准时间戳,获取所述待写入数据在所述数据队列的写入位置,包括:根据所述待写入数据的时间戳和所述基准时间戳,获取所述待写入数据的时间戳和所述基准时间戳的时间间隔;基于所述时间间隔以及所述时间步长获取所述待写入数据相对于初始位置间隔的数量;基于所述间隔的数量获取所述待写入数据在所述数据队列的写入位置。
11.可选地,所述将所述待写入数据写入所述数据队列的所述写入位置中,包括:获取所述数据写入所述数据队列的实际时间戳;根据所述时间步长,将所述实际时间戳矫正至与所述基准时间戳的秒数相一致。
12.可选地,所述将所述待写入数据写入所述数据队列的所述写入位置中之后,包括:确认已写入所述数据队列的所述数据的时间戳;查所述数据的时间戳中不连贯的时间点;根据所述时间戳中不连贯的时间点,确认漏写的所述数据的遗漏位置;将所述漏写的所述数据插入所述数据队列的所述遗漏位置中。
13.可选地,所述漏写的所述数据的识别方法包括:所述数据队列在完成一轮所述数据写入流程后,判断写入所述数据队列中的所述数据的数量是否少于所述数据队列的长度,若少于所述数据队列的长度,则所述数据存在漏写。
14.可选地,所述根据所述时间戳中不连贯的时间点,确认漏写的所述数据的遗漏位置包括:确认写入所述数据队列中的相邻所述数据的时间戳之间的间隔与所述数据队列的预设时间步长不一致;确认不一致的相邻所述数据的时间戳之间的间隔与所述预设时间步长之间的差值;根据所述差值确认所述漏写的所述数据的遗漏位置。
15.可选地,所述将获取到的数据写入数据队列的一写入位置,包括:获取所述数据队列的初始位置;或者获取所述数据队列的数据末端。
16.可选地,所述数据队列为环形队列。
17.为了解决上述技术问题,本技术提供的第二个技术方案为:提供一种计算机设备,包括:处理器和存储器,存储器连接所述处理器,用于存储可在所述处理器上运行的计算机程序;其中,所述处理器执行所述计算机程序时实现上述任一项所述的方法。
18.为了解决上述技术问题,本技术提供的第三个技术方案为:提供一种计算机可读的存储介质,所述计算机可读的存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法。
19.本技术的有益效果:区别于现有技术,本技术的数据写入方法,根据获取到的数据自带的时间戳和基准时间戳,得到待写入数据在数据队列的写入位置,并将待写入数据写入该写入位置中。本技术的数据队列可以预设队列长度,写入数据队列的数据可以根据数据的时间戳进行排序。由于可以计算出每一个待写入数据的写入位置,因此也可以插入任意时间戳的数据。本技术具有节省空间、节省时间、可定制化的技术效果。
附图说明
20.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它
的附图。
21.图1是本技术一实施例提供的数据写入方法的整体流程框图;图2是本技术一实施例提供的步骤s1的子步骤的流程框图;图3是本技术一实施例提供的数据写入数据队列的一写入位置的示意图;图4是本技术一实施例提供的将获取到的数据写入数据队列的一写入位置的步骤之前的流程框图;图5是本技术一实施例提供的步骤s4的子步骤的流程框图;图6是本技术一实施例提供的步骤s5的子步骤的流程框图;图7是本技术一实施例提供的将待写入数据写入数据队列的写入位置中的步骤之后的流程框图;图8是本技术一实施例提供的步骤s7的子步骤的流程框图;图9是本技术一实施例提供的新一轮的数据覆盖前一轮数据之后更新基准时间戳的示意图;图10是本技术另一实施例提供的将待写入数据写入数据队列的写入位置中的步骤之后的流程框图;图11是本技术一实施例提供的步骤s10的子步骤的流程框图;图12是本技术一实施例提供的平台、数据队列和用户之间的交互示意图;图13是本技术一实施例提供的计算机设备的结构示意图;图14是本技术一实施例提供的计算机可读存储介质的结构示意框图。
具体实施方式
22.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
23.本技术中的术语“第一”、“第二”、仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、的特征可以明示或者隐含地包括至少一个该特征。本技术实施例中所有方向性指示(诸如上、下、左、右、前、后
……
)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
24.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
25.若本技术技术方案涉及个人信息,应用本技术技术方案的产品在处理个人信息
前,已明确告知个人信息处理规则,并取得个人自主同意。若本技术技术方案涉及敏感个人信息,应用本技术技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或者请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理个人信息种类等信息。
26.本技术发明人发现:由于heartbeat报表的数据结构为:每分钟产生一条新的监控指标数据,并且检查的规则多为:单位时间内失败/成功次数、连续失败/成功次数,所以健康检查中心需要一个满足以下需求的队列来存储cat的heartbeat报表数据:1.有界;2.根据时间戳排序;3.可插入任意时间戳的数据;4.总是保留最新的数据,淘汰老数据,即时间戳上的fifo(first input first output),即先进先出队列;5.每个时间戳(每分钟)位置仅保留一条数据。
27.现有的java队列大致可分为arrayblockingqueue、linkedblockingqueue、priorityblockingqueue、synchrnousqueue等。arrayblockingqueue和linkedblockingqueue仅满足fifo要求,但是无法按照时间戳进行排序,也无法乱序插入。例如采集的1-10分钟的数据,在采集到第5分钟的时候,发现第2分钟的数据漏采了,再去采集2分钟的数据,将第2分钟的数据往队列里面放的时候就会不到相应的位置。priorityblockingqueue满足按照时间戳排序、乱序插入以及fifo,但是无法保证每个时间戳未知以及仅保留一条数据;synchrnousqueue是为多线程设计的,不存储元素,更无法满足要求。另外,现有的队列长度不满足队列长度10分钟的要求。
28.为了解决上述问题,本技术提供一种数据写入方法、计算机设备及存储介质。
29.请参阅图1至图3,图1是本技术一实施例提供的数据写入方法的整体流程框图,图2是本技术一实施例提供的步骤s1的子步骤的流程框图,图3是本技术一实施例提供的数据写入数据队列的一写入位置的示意图。
30.本技术提供的数据写入方法,可以应用于健康检查的场景,也可以应用到金融科技领域的其他场景。健康检查的场景中有一个场景是读取应用在cat(central application tracking)监控平台上的heartbeat报表数据,并根据数据表现以及规则匹配来进行健康判断和告警动作执行。
31.该数据写入方法包括:s1:将获取到的数据写入数据队列的一写入位置。
32.具体的,将从平台上,例如健康检查的cat监控平台上获取到的数据写入预设的数据队列的其中一个写入位置。写入位置为数据队列中用于数据插入的位置。数据队列可以是预先设置好的,数据队列的长度可以根据具体的数据获取需求进行设置。该写入位置可以是数据队列的初始位置,也可以是已写入数据所在位置的下一个写入位置。
33.进一步的,如图2所示,将获取到的数据写入数据队列的一写入位置的步骤s1,包括:s11:获取数据队列的初始位置;或者
s12:获取数据队列的数据末端。
34.具体的,如图3所示,在本实施例中,默认数据队列的第一个位置为初始位置,同时默认从平台上获取到的第一个数据e写入数据队列的初始位置,其中t是数据e自带的时间戳。因此,可以理解,如果从平台上获取的数据为第一个数据e,则放入数据队列的初始位置,如果从平台上获取到的数据为第一个数据e后面的其他数据,例如第3至5分钟的数据,则在数据队列已写入位置的剩余位置依次写入获取到的数据。
35.请参阅图4,图4是本技术一实施例提供的将获取到的数据写入数据队列的一写入位置的步骤之前的流程框图。
36.在一实施例中,将获取到的数据写入数据队列的一写入位置的步骤s1之前,包括:s01:获取用户输入的数据获取时长。
37.具体的,在获取数据之前,如图12所示,首先需要获取用户输入的数据获取时长,即用户可以在平台或者应用中输入需要获取多长时间的数据,例如,用户输入获取最近一小时的数据,那么从平台的数据采集库中就需要获取最近一小时的数据写入数据队列中。本实施例中获取数据主要是指从平台已经采集的数据库中抓取数据,而不是从平台中直接采集数据。本技术的执行主体是:数据采集系统,需要去获取应用平台的健康数据,本实施例中需要去cat平台获取数据,根据cat平台每1分钟采集一次数据的情况以及用户的需求,即用户输入的数据获取时长,例如连续几次或者连续几分钟采集数据。本技术的数据获取步骤是加到应用平台里面自动采集数据的步骤。
38.s02:根据预设的时间步长和队列长度,获取用户输入的数据获取时长的数据。
39.具体的,时间步长是需要获取的数据之间的时间间隔,其可以根据需要进行灵活设置,例如1分钟、5分钟等。队列长度是一个有界数据队列的整体长度,也可以根据需要进行设置。现有技术中的数据队列的长度基本都在5分钟左右,没有10分钟的队列长度。为了满足本技术健康检查的应用场景需求,在本实施例中,时间步长为1分钟,与cat平台1分钟采集一次数据相对应,采集好的数据也是1分钟一条放在数据队列中,队列长度为10。例如,cat平台检测最近10分钟的数据,那就至少需要保存一个10分钟的队列长度,将10分钟的数据采集之后放在平台数据库里面,之后需要判断10分钟的数据是不是满足要求时,直接从数据库里面提取。用户输入的数据获取长度是10分钟时,直接从cat平台中的数据库里面提取,然后放入数据队列中即可。
40.s2:获取写入位置的数据的时间戳,作为基准时间戳。
41.具体的,由于已写入数据队列中的数据,其均带有相应的时间戳,也就是每一个数据均带有从平台上获取到的对应的时间,即几时几分几秒。那么获取到已经写入数据队列中的数据的时间戳,可以作为后面待写入数据的基准时间戳。例如,获取到初始位置的数据的时间戳为10:30:01,或者获取到数据队列中的第三个位置的时间戳为10:32:01,将其作为后面待写入数据的基准时间戳。
42.为了便于描述以及前后文表述的一致性,本实施例中描述的基准时间戳以初始位置的数据的时间戳为准。可以理解,在其他实施例中,无论获取哪一个已写入位置的数据的时间戳,均可以作为后面待写入数据的基准时间戳,本技术对此不做限制。
43.s3:基于基准时间戳,获取待写入数据的时间戳。
44.具体的,获取到基准时间戳之后,可以根据从平台中获取到的待写入数据的时间
先后顺序,来获取待写入数据的时间戳。例如基准时间戳是10:30:01,一个队列长度为10的数据队列的待写入数据的时间戳为从基准时间戳之后的9分钟的数据,那么待写入数据的时间戳就是:10:31:01,10:32:01,10:33:01,10:34:01,10:35:01,10:36:01,10:37:01,10:38:01,10:39:01。
45.s4:根据待写入数据的时间戳和基准时间戳,获取待写入数据在数据队列的写入位置。
46.具体的,根据基准时间戳和待写入数据的时间戳,可以计算出待写入数据在数据队列中对应的具体写入位置。
47.请参阅图5,图5是本技术一实施例提供的步骤s4的子步骤的流程框图。
48.进一步的,根据待写入数据的时间戳和基准时间戳,获取待写入数据在数据队列的写入位置的步骤s4,具体包括:s41:根据待写入数据的时间戳和基准时间戳,获取待写入数据的时间戳和基准时间戳的时间间隔。
49.具体的,在获取到待写入数据的时间戳之后,根据待写入数据的时间戳与基准时间戳之间的差值,即待写入数据的时间戳和基准时间戳的时间间隔。例如,上述待写入数据的时间戳与基准时间戳之间的差值分别是:1,2,3,4,5,6,7,8,9。
50.s42:基于时间间隔以及时间步长获取待写入数据相对于初始位置间隔的数量。
51.具体的,在待写入数据的时间戳与基准时间戳之间的时间间隔确定的情况下,根据该时间间隔和预设的时间步长,通过将时间间隔除以时间步长(即预设的数据队列中的每个数据的间隔时长),就可以得到待写入数据相对于初始位置间隔的数量。例如,待写入数据的时间戳与基准时间戳之间的时间间隔为5,预设的时间步长为1分钟,那么就可以得到待写入数据相对于初始位置间隔的数量为5。
52.s43:基于间隔的数量获取待写入数据在数据队列的写入位置。
53.具体的,如上,获取到待写入数据相对于初始位置间隔的数量之后,就可以通过初始位置来推算出待写入数据的具体写入位置。例如,待写入数据相对于初始位置间隔的数量为5,亦即从初始位置向后推5个位置,也就是从初始位置起第6个位置就是数据队列中该待写入数据对应的写入位置。
54.本技术给出的实施例进行队列维护操作时,可以进行以下操作:根据用户的需求,用户可能会在页面修改数据获取时长的需求,比如用户今天要看最近5分钟的数据,明天觉得最近5分钟的数据不稳定,又要看最近10分钟的数据,就需要将队列长度从5改到10。具体可以通过updatecapacity进行扩容,将数据队列的容量扩到10。cat平台是1分钟一条数据,其他的系统可能是10分钟一条,可以对应其他系统的数据更新时间步长。或者cat系统更新之后变成了10分钟一条数据,那就要更新数据的时间步长,通过updateinterval将时间步长从1分钟更新到10分钟。另外,本技术的数据队列还可以通过resetqueue重置队列。例如,有些用户修改了规则,比如数据获取的节点临时下线了,关闭了,过几天用户又打开了该节点,那就需要将该节点的数据全部重置,把原来的数据全部删掉。获取到用户发布了新的数据,就要重置队列,不能用老数据进行计算。
55.s5:将待写入数据写入数据队列的写入位置中。
56.具体的,可以理解,获取到待写入数据的写入位置之后,按照待写入数据的时间戳
顺序将数据一一对应写入该写入位置中即可。由此可见,本技术实施例中提供的每个时间戳的写入位置仅保留一条数据,数据和写入位置具有一一对应的关系。
57.请参阅图6,图6是本技术一实施例提供的步骤s5的子步骤的流程框图。
58.在一实施例中,将待写入数据写入数据队列的写入位置中的步骤s5,包括:s51:获取数据写入数据队列的实际时间戳。
59.具体的,虽然本实施例中预设的时间步长是1分钟,但是在实际获取数据的过程中,每一个数据的时间戳不可能是完全对应的。也就是说,虽然是1分钟一个数据,但是每一个数据对应的秒数可能是不一致的。例如,第一个数据的时间戳是10:30:01,第二数据的时间戳可能是10:31:12,秒数是不对应的。也就是数据的实际时间戳与理想的时间戳之间有一些小的误差,但是这个误差在实际数据获取过程中是可以忽略不计的。
60.s52:根据时间步长,将实际时间戳矫正至与基准时间戳的秒数相一致。
61.具体的,如上,当数据的实际时间戳与基准时间戳的秒数不一致时,就需要对实际时间戳进行矫正,以使得其与预设的时间步长相一致。
62.示例性的,cat平台是1分钟一个数据,不关注数据的时间戳具体是多少秒,但是其他的系统可能是流畅的连续数据采集过程,会关注到具体的时间点,可能把某1秒钟获取的数据当成这1分钟的数据。也就是说,如果不是1分钟一个数据,而是连续的数据,只是把那1秒钟的数据当成这1分钟的数据。这种情况下,例如10:54:01获取到的数据当成了初始时间的数据,时间步长又是1分钟,那后面一次获取应该是10:55:01,但是本实施例是把10:55:01-10:56:00之间获取到的任一数据都当成10:55:01的该点的数据,使得每1分钟的时间都是对应的。
63.例如,第一个数据的时间戳是10:51:01,即10:51:01拿到10:51的数据,第二数据的时间戳是10:52:10,10:52:10拿到10:52的数据,数据写入数据队列的时候,保存的10:52的数据就需要跟前面的基准时间戳做一个标准时间步长的时间矫正,使得第一个数据的时间戳和第二数据的时间戳之间的差值正好是时间步长,即本实施例中的1分钟,这样就可以固定时间步长了。这样无论10:52的多少秒获取的数据,都可以根据固定时间步长的时间戳将时间矫正到10:52:01。可以理解,数据队列中任一个数据的时间戳与基准时间戳的秒数不一致,均需要进行矫正。
64.请参阅图7至图9,图7是本技术一实施例提供的将待写入数据写入数据队列的写入位置中的步骤之后的流程框图,图8是本技术一实施例提供的步骤s7的子步骤的流程框图,图9是本技术一实施例提供的新一轮的数据覆盖前一轮数据之后更新基准时间戳的示意图。
65.在一实施例中,将待写入数据写入数据队列的写入位置中的步骤s5之后,包括:s6:响应于数据的长度超过预设的队列长度。
66.具体的,本实施例中的数据队列为环形队列,使得后面写入的数据可以对前一轮的数据进行循环覆盖。如上,本实施例中的队列长度为10,如果在获取的数据超过10,就会进行循环覆盖。
67.s7:以数据队列的第一个位置为初始位置,将未超过预设的队列长度的待写入数据从数据之后依次覆盖数据队列中的剩余位置中,从数据队列的初始位置写入超过预设的队列长度的剩余待写入数据。
68.具体的,在获取的数据没有超过预设队列长度的情况下,待写入数据以初始数据的位置为准,从初始位置按照顺序往后一一对应写入数据队列剩下的位置即可。但是当获取到的数据的数量超多数据队列的长度时,按照环形队列的设置规则,可以从初始位置开始循环覆盖前一轮的数据。即,数据队列的长度是固定的,当数据的数量超过数据队列的长度时,才会发生数据的覆盖,也就是进入新一轮的数据获取流程了。例如,如果只获取了7分钟的数据,那么从初始位置一一写入第一个位置到第七个位置即可。但是获取的数据在10分钟之后的,例如要获取第11分钟的数据时,就要将第1分钟的数据丢弃,因为只有10分钟的队列长度,超过队列长度的数据进来之后前面的数据就会自动抛掉,新进来的数据就会覆盖原来数据。亦即,第11分钟的数据覆盖第1分钟的数据,第12分钟的数据覆盖第2分钟的数据,以此类推,逐个覆盖数据队列中前一轮的所有数据。
69.示例性的,应用场景为cat平台:先设一个初始队列长度为10分钟,然后设一个时间步长,例如1分钟一个数据(也可以对应其他系统设置5分钟一个数据)。有了时间步长和队列长度参数之后,采集第一个数据默认放在队列的第一个位置,根据队列的长度已经算好了每一个数据对应的时间戳是几点几分,例如采集的第一个数据的时间戳是10:49,队列的长度是10分钟,时间步长是1分钟,那第二数据的时间戳就是10:50,第三个数据的时间戳是10:51,时间戳最多到10:58,也就是最后一个数据的时间戳是10:58,总共10分钟的数据写入位置都已经定好了。再继续采集的时候就可以到对应的位置直接把数据插入进去,在采集到10:59的时候队列已经满了,就把10:59的数据直接写入到10:49的位置,由于队列是环状的,到最后一个位置的时候,就直接从初始位置直接重新写入,这样不用重新申请新的使用空间了,固定使用10个数据的写入空间就够了。10:59的数据进来之后,10:49的数据就相应抛掉了,这是一个连贯的操作步骤。
70.进一步的,如图8和图9所示,以数据队列的第一个位置为初始位置,将未超过预设的队列长度的待写入数据从数据之后依次覆盖数据队列中的剩余位置中,从数据队列的初始位置写入超过预设的队列长度的剩余待写入数据的步骤s7,包括:s71:获取初始位置的数据的新时间戳。
71.具体的,当新一轮的第一个数据覆盖初始位置的数据之后,初始位置的数据的时间戳必然也会随着数据的更迭发生变化。例如,前一轮的初始位置的数据的时间戳为10:49:01,那新一轮的第一个数据,即本轮覆盖初始位置的数据的时间戳在不出错的情况下应该为10:59:01,该新时间戳也是由新一轮的数据自带的,可以通过查询数据直接获取到。
72.s72:响应于新时间戳大于基准时间戳,则将新时间戳作为新的基准时间戳。
73.具体的,当获取到初始位置的数据的新时间戳大于原来的基准时间戳时,说明数据队列中的数据已经进入新一轮的获取流程了。那么,此时原来的基准时间戳对于新一轮数据来讲,已经没有参考意义了,因此要将新一轮的初始位置的数据的时间戳更新为新的基准时间戳。例如,新时间戳10:59:01大于基准时间戳10:49:01,说明进入了新一轮的获取流程了,那么新时间戳10:59:01就作为本轮数据获取流程的新的基准时间戳。可以理解,每进入新一轮的数据获取流程,基准时间戳都要根据初始位置的数据的时间戳进行更新,以为初始位置后面的数据提供时间戳和写入位置的参考。
74.s73:基于新的基准时间戳,将数据依次覆盖数据队列中的剩余位置中,以形成新的数据队列。
75.具体的,新的基准时间戳可以作为新一轮数据获取流程的时间戳和数据写入位置的参考,将新的基准时间戳之后的待写入数据按照时间戳顺序一一写入数据队列,覆盖前一轮的数据,就会形成新的数据队列。例如,10:40:01的数据覆盖10:30:01的数据,10:41:01的数据覆盖10:31:01的数据,10:42:01的数据覆盖10:32:01的数据,以此类推,直至覆盖完前一轮的所有数据,就会得到新的数据队列。可以理解,新一轮的10:40-10:49的数据对应的就是前一轮10:30-10:39的位置,新一轮的数据覆盖前一轮的数据的位置之后,就相当于把10:30-10:39这个位置的数据直接清掉,因为这个数据已经过期了,保留10:40-10:49之间的数据,这样就是一个新一轮的数据,亦即本实施例总是能保持最新的10分钟的数据。
76.如图9所示,将新一轮的数据e’放置在位置p
e’,并记录该数据e’的时间戳t
’’
,如果t
’’
>t,则记录t
’’
作为新的基准时间戳,其中rp表示数据e和数据e’之间的相对位置差。
77.请参阅图10至12,图10是本技术另一实施例提供的将待写入数据写入数据队列的写入位置中的步骤之后的流程框图,图11是本技术一实施例提供的步骤s10的子步骤的流程框图,图12是本技术一实施例提供的平台、数据队列和用户之间的交互示意图。
78.在另一实施例中,将待写入数据写入数据队列的写入位置中的步骤s5之后,还可以包括:s8:确认已写入数据队列的数据的时间戳。
79.具体的,按照数据队列每1分钟写入一个数据的原则,已写入数据队列的数据在时间戳上应该是连贯的。此处确认数据队列的数据的时间戳以矫正后的时间戳为准,来确认数据的时间戳是否连贯。即,确认已写入的数据的时间戳在几点几分的“分”是否是连续的。例如,10:30的时间戳后面是否是10:31。
80.s9:查数据的时间戳中不连贯的时间点。
81.具体的,出已写入数据队列的数据的时间戳中不连贯的时间点,例如10:30的时间戳后面的数据不是10:31的时间戳,而是10:32或者10:33,则表明已写入数据队列的数据的时间戳是不连贯的。亦即,已写入数据队列的数据中存在漏写的情况。
82.进一步的,漏写的数据的识别方法包括:s91:数据队列在完成一轮数据写入流程后,判断写入数据队列中的数据的数量是否少于数据队列的长度,若少于数据队列的长度则数据存在漏写。
83.具体的,在完成一轮数据写入流程之后,数据队列会自动判断已写入数据队列中的数据的数量是否与数据队列的长度相一致,此处主要指是否少于数据队列的长度,因为如果多于数据队列的长度,会按照环形队列的写入原则进行循环覆盖,具体请参考前述内容。当判断出已写入数据队列中的数据的数量少于数据队列的长度时,则表明数据存在漏写。
84.s10:根据时间戳中不连贯的时间点,确认漏写的数据的遗漏位置。
85.具体的,确认漏写的数据的遗漏位置与前述确认待写入数据的写入位置的方法类似。即,可以根据数据的时间戳中不连贯的时间点,来确认不连贯的时间戳之间的时间间隔,从该时间间隔来确认遗漏的数据,从而确认漏写的数据的遗漏位置。
86.具体来讲,如图11所示,根据时间戳中不连贯的时间点,确认漏写的数据的遗漏位置的步骤s10,包括:s101:确认写入数据队列中的相邻数据的时间戳之间的间隔与数据队列的预设时
间步长不一致。
87.具体的,按照本实施例的数据队列的写入原则,数据队列中相邻的数据的时间戳之间的间隔应该与预设时间步长均相等,也就是说,在本实施例中,相邻的数据的时间戳之间的间隔应该是1分钟,如果间隔不是1分钟,则表明该数据队列中相邻的数据的时间戳之间的间隔与数据队列的预设时间步长不一致。
88.s102:确认不一致的相邻数据的时间戳之间的间隔与预设时间步长之间的差值。
89.具体的,确认数据队列中相邻的数据的时间戳之间的间隔与数据队列的预设时间步长不一致之后,需要确认不一致的时间间隔与预设时间步长之间的差值具体是多少。例如,某一相邻的数据的时间戳的差值为1,则表明该相邻的数据之间具有一个遗漏数据,如果差值是2,则表明该相邻的数据之间具有两个遗漏数据。例如,10:30:01的时间戳后面的数据的时间戳是10:32:01,则表明该两个相邻的数据之间具有一个遗漏数据。
90.s103:根据差值确认漏写的数据的遗漏位置。
91.具体的,根据相邻数据的时间戳之间的间隔与预设时间步长之间的差值确认遗漏了几个数据之后,还需要对遗漏的数据的位置进行确认,以便后续将遗漏的数据插入该遗漏位置中。例如,判断出10:30:01的时间戳的数据和10:32:01的时间戳的数据之间具有一个遗漏数据之后,即时间戳为10:30:01的数据和时间戳为10:32:01的数据之间的位置即为漏写的数据的遗漏位置。
92.s11:将漏写的数据插入数据队列的遗漏位置中。
93.具体的,如上,通过判断出10:30:01的时间戳的数据和10:32:01的时间戳的数据之间具有一个遗漏数据,则可以判断出遗漏的数据为时间戳为10:31:01的数据,将该漏写的数据从平台中获取到之后,直接插入数据队列中的该遗漏位置即可。
94.可以理解,步骤s9、s10、s11查和插入遗漏数据的步骤是建立在已写入数据队列的数据的时间戳不连贯,即数据队列中已写入的数据存在遗漏的基础之上的,如果已写入数据队列中的数据不存在遗漏,则不需要执行步骤s9、s10、s11。
95.本技术公开的数据写入方法,包括:将获取到的数据写入数据队列的一写入位置;获取写入位置的数据的时间戳,作为基准时间戳;基于基准时间戳,获取待写入数据的时间戳;根据待写入数据的时间戳和基准时间戳,获取待写入数据在数据队列的写入位置;将待写入数据写入数据队列的写入位置中。本技术的数据队列可以预设队列长度,为有界的数据队列;写入数据队列的数据可以根据数据的时间戳进行排序。由于可以计算出每一个待写入数据的写入位置,因此也可以插入任意时间戳的数据。新一轮的数据可以循环覆盖数据队列中全一轮的数据,因此可以总是保留最新的数据。本技术的数据队列还具有节省空间、节省时间的技术效果,初始空间确定好之后,数据写入空间就可以确定下来。可以随意写入任意时间的数据,根据数据几点几分所对应的位置,总能到数据遗漏的位置,并把数据队列更新到最新的时间。获取数据也是相似的,可以获取任意时间戳和任意位置的数据,或者获取最新几分钟的数据,都可以从cat平台的数据库现成地很快获取出来。
96.本技术的固定时间步长的有界队列完美契合了健康检查时对特定类型指标的采集和保存,写入(put)和获取(get)操作的时间复杂度最坏的情况为ο(c),数据队列的空间复杂度为ο(c),其中c是容量,队列的空间复杂度就是查询队列的最多次数,空间复杂度是一个固定值,确定了是10,那就是10,后面的数据会不断地去更新覆盖前面的数据,不需要
申请新的队列空间,所以很省空间。
97.不论写入操作还是获取操作都需要一个相对位置,根据时间戳计算相对位置是多几个还是少几个,之后从初始位置进行加减,所以写入操作、获取操作都是ο(1)操作,也就是一次性就能计算出数据的基准位置,因此不论写入操作还是获取操作都很节省时间。时间复杂度最坏的情况为ο(c),队列的空间复杂度为ο(c),是因为计算出操作位置之后还需要将计算出的位置以及相对位置的数据进行一个清除操作。所以这是最坏的情况,中间数据有遗漏,数据不连贯的时候就需要清除操作。如果数据一直是连贯地采集,是不需要清除操作的。因此可以说,本技术既节省空间,又节省时间。
98.并且,本技术自定义的队列维护操作也可以十分方便地更新、重置队列,在使用上带来了极大的便利。根据用户需求直接可以确定时间步长和队列长度,可以进行定制化。同时,也可以应用到金融科技等任何其他的固定时间步长和固定队列长度的需求系统。
99.请参阅图13,图13是本技术一实施例提供的计算机设备的结构示意图。
100.计算机设备200,具体可以包括处理器210和存储器220。存储器220耦接处理器210。
101.处理器210用于控制计算机设备200的操作,处理器210还可以称为cpu(central processing unit,中央处理单元)。处理器210可能是一种集成电路芯片,具有信号的处理能力。处理器210还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器210也可以是任何常规的处理器等。
102.存储器220用于存储计算机程序,可以是ram,也可以是rom,或者其他类型的存储设备。具体的,存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器中的非暂态的计算机可读存储介质用于存储至少一条程序代码。
103.处理器210用于执行存储器220中存储的计算机程序以实现本技术数据写入方法的实施例描述的数据写入方法。
104.在一些实施方式中,计算机设备200还可以包括:外围设备接口230和至少一个外围设备。处理器210、存储器220和外围设备接口230之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口230相连。具体的,外围设备包括:射频电路240、显示屏250、音频电路260和电源270中的至少一种。
105.外围设备接口230可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器210和存储器220。在一些实施例中,处理器210、存储器220和外围设备接口230被集成在同一芯片或电路板上;在一些其他实施方式中,处理器210、存储器220和外围设备接口230中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
106.射频电路240用于接收和发射rf(radio frequency,射频)信号,也称电磁信号。射频电路240通过电磁信号与通信网络以及其他通信设备进行通信,射频电路240则是计算机设备200的通信电路。射频电路240将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路240包括:天线系统、rf收发器、一个或多个放大器、
调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路240可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wireless fidelity,无线保真)网络。在一些实施例中,射频电路240还可以包括nfc(near field communication,近距离无线通信)有关的电路,本技术对此不加以限定。
107.显示屏250用于显示ui(user interface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏250是触摸显示屏时,显示屏250还具有采集在显示屏250的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器210进行处理。此时,显示屏250还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施方式中,显示屏250可以为一个,设置在计算机设备200的前面板;在另一些实施方式中,显示屏250可以为至少两个,分别设置在计算机设备200的不同表面或呈折叠设计;在另一些实施方式中,显示屏250可以是柔性显示屏,设置在计算机设备200的弯曲表面上或折叠面上。甚至,显示屏250还可以设置成非矩形的不规则图形,也即异形屏。显示屏250可以采用lcd(liquid crystal display,液晶显示屏)、oled(organic light-emitting diode ,有机发光二极管)等材质制备。
108.音频电路260可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器210进行处理,或者输入至射频电路240以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备200的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器210或射频电路240的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路260还可以包括耳机插孔。
109.电源270用于为计算机设备200中的各个组件进行供电。电源270可以是交流电、直流电、一次性电池或可充电电池。当电源270包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
110.关于本技术计算机设备200的实施例中各功能模块或者部件功能和执行过程的详细阐述,可以参照上述本技术数据写入方法实施例中的阐述,在此不再赘述。
111.在本技术所提供的几个实施例中,应该理解到,所揭露的计算机设备200和数据写入方法,可以通过其它的方式实现。例如,以上所描述的计算机设备200的各实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
112.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
113.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
114.请参阅图14,图14是本技术一实施例提供的计算机可读存储介质的结构示意框图。
115.参阅图14,上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读存储介质300中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令/计算机程序用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种介质以及具有上述存储介质的电脑、手机、笔记本电脑、平板电脑、相机等计算机设备。
116.关于计算机可读存储介质300中的程序数据的执行过程的阐述可以参照上述本技术数据写入方法的实施例中阐述,在此不再赘述。
117.以上所述仅为本技术的实施方式,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。

技术特征:


1.一种数据写入方法,应用于健康检查的场景,其特征在于,包括:将获取到的数据写入数据队列的一写入位置;获取所述写入位置的所述数据的时间戳,作为基准时间戳;基于所述基准时间戳,获取待写入数据的时间戳;根据所述待写入数据的时间戳和所述基准时间戳,获取所述待写入数据在所述数据队列的写入位置;将所述待写入数据写入所述数据队列的所述写入位置中。2.根据权利要求1所述的方法,其特征在于,所述将获取到的数据写入数据队列的一写入位置之前,包括:获取用户输入的数据获取时长;根据预设的时间步长和队列长度,获取所述用户输入的所述数据获取时长的所述数据。3.根据权利要求2所述的方法,其特征在于,所述时间步长为1分钟,所述队列长度为10。4.根据权利要求2所述的方法,其特征在于,所述将所述待写入数据写入所述数据队列的所述写入位置中之后,包括:响应于所述数据的长度超过预设的所述队列长度;以所述数据队列的第一个位置为初始位置,将未超过预设的所述队列长度的所述待写入数据从所述数据之后依次覆盖所述数据队列中的剩余位置中,从所述数据队列的初始位置写入超过预设的所述队列长度的剩余所述待写入数据。5.根据权利要求4所述的方法,其特征在于,所述以所述数据队列的第一个位置为初始位置,将未超过预设的所述队列长度的所述待写入数据从所述数据之后依次覆盖所述数据队列中的剩余位置中,从所述数据队列的初始位置写入超过预设的所述队列长度的剩余所述待写入数据,包括:获取所述初始位置的所述数据的新时间戳;响应于所述新时间戳大于所述基准时间戳,则将所述新时间戳作为新的基准时间戳;基于所述新的基准时间戳,将所述数据依次覆盖所述数据队列中的剩余位置中,以形成新的数据队列。6.根据权利要求2所述的方法,其特征在于,所述根据所述待写入数据的时间戳和所述基准时间戳,获取所述待写入数据在所述数据队列的写入位置,包括:根据所述待写入数据的时间戳和所述基准时间戳,获取所述待写入数据的时间戳和所述基准时间戳的时间间隔;基于所述时间间隔以及所述时间步长获取所述待写入数据相对于初始位置间隔的数量;基于所述间隔的数量获取所述待写入数据在所述数据队列的写入位置。7.根据权利要求2所述的方法,其特征在于,所述将所述待写入数据写入所述数据队列的所述写入位置中,包括:获取所述数据写入所述数据队列的实际时间戳;
根据所述时间步长,将所述实际时间戳矫正至与所述基准时间戳的秒数相一致。8.根据权利要求1所述的方法,其特征在于,所述将所述待写入数据写入所述数据队列的所述写入位置中之后,包括:确认已写入所述数据队列的所述数据的时间戳;查所述数据的时间戳中不连贯的时间点;根据所述时间戳中不连贯的时间点,确认漏写的所述数据的遗漏位置;将所述漏写的所述数据插入所述数据队列的所述遗漏位置中。9.根据权利要求8所述的方法,其特征在于,所述漏写的所述数据的识别方法包括:所述数据队列在完成一轮所述数据写入流程后,判断写入所述数据队列中的所述数据的数量是否少于所述数据队列的长度,若少于所述数据队列的长度,则所述数据存在漏写。10.根据权利要求8所述的方法,其特征在于,所述根据所述时间戳中不连贯的时间点,确认漏写的所述数据的遗漏位置包括:确认写入所述数据队列中的相邻所述数据的时间戳之间的间隔与所述数据队列的预设时间步长不一致;确认不一致的相邻所述数据的时间戳之间的间隔与所述预设时间步长之间的差值;根据所述差值确认所述漏写的所述数据的遗漏位置。11.根据权利要求1所述的方法,其特征在于,所述将获取到的数据写入数据队列的一写入位置,包括:获取所述数据队列的初始位置;或者获取所述数据队列的数据末端。12.根据权利要求1至11任一项所述的方法,其特征在于,所述数据队列为环形队列。13.一种计算机设备,其特征在于,包括:处理器;存储器,连接所述处理器,用于存储可在所述处理器上运行的计算机程序;其中,所述处理器执行所述计算机程序时实现权利要求1至12任一项所述的方法。14.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至12任一项所述的方法。

技术总结


本申请公开了一种数据写入方法、计算机设备及存储介质,数据写入方法包括:将获取到的数据写入数据队列的一写入位置;获取写入位置的数据的时间戳,作为基准时间戳;基于基准时间戳,获取待写入数据的时间戳;根据待写入数据的时间戳和基准时间戳,获取待写入数据在数据队列的写入位置;将待写入数据写入数据队列的写入位置中。本申请的数据队列可以预设队列长度,写入数据队列的数据可以根据数据的时间戳进行排序,且可以插入任意时间戳的数据。同时节省空间、节省时间、可定制化。可定制化。可定制化。


技术研发人员:

杨青

受保护的技术使用者:

平安银行股份有限公司

技术研发日:

2022.11.04

技术公布日:

2022/12/6

本文发布于:2022-12-12 23:58:07,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/32066.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   队列   所述   时间
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图