一种设备数据顺序读取方法、设备及介质
文献发布时间:2024-04-18 19:58:26
技术领域
本申请涉及物联网技术领域,尤其涉及一种设备数据顺序读取方法、设备及介质。
背景技术
在物联网应用的很多场景下,将有大量的前端感知设备,这些设备感知的数据上传到后台服务器上,后台服务器需要实时对数据进行处理,以及时做出判断进行响应。有些场景下,后台服务器在处理前端设备上传上来的数据时,需要对同一设备的数据保证按顺序依次处理,否则会导致错误。比如,有几千台车辆上报位置数据,后台服务需要根据车辆的实时位置计算出车辆行驶距离,此时,对于同一台车辆来说,对其位置数据的处理必须按顺序依次进行,如果顺序乱了,计算出的行驶距离就会有误。同时,由于有几千台车辆在同时上传数据,后台服务需要启动多个数据处理模块并行处理,才能够及时处理上传的数据。如果有两个数据处理模块在同时处理同一辆车的两条数据,由于数据处理模块的处理速度存在不确定性,就有可能先读到数据的处理模块还没有处理完,而后读到数据的模块已经处理完,从而引发计算错误。
目前在对同一设备的数据保证按顺序依次处理时,通常对前端设备绑定固定的数据处理模块来进行处理,每个设备的数据只在一个数据处理模块上处理,每个数据处理模块处理数据是顺序进行的,不会把设备数据的顺序弄乱。
但是,如果前端设备增加,后台服务需要再增加对应的数据处理模块,这时,都需要调整设备跟数据处理模块的绑定关系,不能自动适应,调整非常麻烦,导致灵活性差,并且在前端设备的数量较大时,过多数据处理模块,也将导致服务性能压力大,从而最终导致设备数据顺序读取效率低。
发明内容
本申请实施例提供一种设备数据顺序读取方法、设备及介质,用于解决设备数据顺序读取效率低的问题。
本申请实施例采用下述技术方案:
一方面,本申请实施例提供了一种设备数据顺序读取方法,该方法包括:数据读取控制模块接收数据处理模块的调用请求与所述数据处理模块的ID;每个数据处理模块对应不同的ID;对数据读取控制模块自身进行加锁处理,根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据;所述动态队列管理模块包括正在处理数据的数据处理模块与相应设备之间的对应关系,以及通过从设备数据池读取数据,临时缓存所述数据的队列;其中,不同设备对应不同的队列;判断所述第一数据是否读取成功,若是,则将所述第一数据返回所述数据处理模块;若否,则从设备数据池中读取待处理的一条第二数据;所述第二数据为任意一个设备的数据;将所述第二数据缓存到所述动态队列管理模块,判断所述第二数据是否缓存成功;若否,则确定其他数据处理模块均不在处理所述第二数据所对应设备的数据,将所述第二数据返回所述数据处理模块,并对所述数据读取控制模块自身进行解锁处理;若是,则确定存在其他数据处理模块正在处理所述第二数据所对应设备的数据,重新从所述设备数据池中读取待处理的一条第二数据,直至所述第二数据缓存不成功。
一个示例中,所述根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据之前,所述方法还包括:确定每个数据处理模块的关联项;所述关联项包括数据处理模块的ID、设备的数据key值、队列、队列数据最后一次被读取的时间;根据所述每个数据处理模块的关联项,构建动态列表;根据所述每个数据处理模块在处理一条设备数据时,所需要的最长时间,构建超时器;构建取数据接口与缓存数据接口,所述取数据接口用于从所述动态队列管理模块读取设备数据,所述缓存数据接口用于将所述设备数据池中的设备数据缓存至所述动态队列管理模块;根据所述动态列表、所述超时器、所述取数据接口、所述缓存数据接口,构建所述动态队列管理模块。
一个示例中,所述根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据,具体包括:所述动态队列管理模块,通过所述取数据接口接收所述所述数据处理模块的ID;根据所述数据处理模块的ID,判断是否匹配到所述数据处理模块的关联项;若是,若在所述数据处理模块的关联项中,确定队列的设备数据不为空,则从所述队列中取出时间最早的一条设备数据,将所述时间最早的一条设备数据确定为所述待处理的一条第一数据,向所述数据读取控制模块返回所述待处理的一条第一数据,并将队列数据最后一次被读取的时间设置为当前时间。
一个示例中,所述方法还包括:若在所述数据处理模块的关联项中,确定队列的设备数据为空,则将所述关联项从所述动态列表进行删除;从所述动态列表的其他所有关联项中,确定当前时间与所述其他所有关联项中队列数据最后一次被读取的时间之前的时间间隔;判断是否具有时间间隔超过超时器中最长时间的超时关联项;若否,则向所述数据读取控制模块返回空数据。
一个示例中,所述方法还包括:若具有时间间隔超过超时器中最长时间的超时关联项,则判断所述超时关联项中队列的设备数据是否为空;若是,则将所述超时关联项从所述动态列表进行删除;若否,则将任意一个超时关联项中数据处理模块的ID,替换为所述数据处理模块的ID;从所述任意一个超时关联项的队列中取出时间最早的一条设备数据,将所述时间最早的一条设备数据确定为所述待处理的一条第一数据,向所述数据读取控制模块返回所述待处理的一条第一数据,并将队列数据最后一次被读取的时间设置为当前时间。
一个示例中,所述方法还包括:若未匹配到所述数据处理模块的关联项,则判断是否具有时间间隔超过超时器中最长时间的超时关联项;若否,则向所述数据读取控制模块返回空数据。
一个示例中,所述将所述第二数据缓存到所述动态队列管理模块,具体包括:所述动态队列管理模块,通过所述缓存数据接口,接收所述数据处理模块的ID与所述第二数据;通过调用数据key值生成模块,计算所述第二数据的key值;同一个设备的数据key值必须相同;从所述动态列表中,检索包含所述key值的关联项;若具有包含所述key值的关联项,则将所述第二数据存放至所述包含所述key值的关联项中队列的尾部;向所述数据读取控制模块返回空数据,以向所述数据读取控制模块表示缓存成功。
一个示例中,所述方法还包括:若不具有包含所述key值的关联项,则在所述动态列表中,新增一个关联项;在新增关联项中,将数据处理模块的ID设置为所述数据处理模块的ID;将设备的数据key值设置为待处理设备的数据key值;将队列设置为一个新的空队列;将队列数据最后一次被读取的时间设置为当前时间;向所述数据读取控制模块返回所述第二数据,以向所述数据读取控制模块表示未缓存成功。
另一方面,本申请实施例提供了一种设备数据顺序读取设备,应用于数据读取控制模块,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:接收数据处理模块的调用请求与所述数据处理模块的ID;每个数据处理模块对应不同的ID;对数据读取控制模块自身进行加锁处理,根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据;所述动态队列管理模块包括正在处理数据的数据处理模块与相应设备之间的对应关系,以及通过从设备数据池读取数据,临时缓存所述数据的队列;其中,不同设备对应不同的队列;判断所述第一数据是否读取成功,若是,则将所述第一数据返回所述数据处理模块;若否,则从设备数据池中读取待处理的一条第二数据;所述第二数据为任意一个设备的数据;将所述第二数据缓存到所述动态队列管理模块,判断所述第二数据是否缓存成功;若否,则确定其他数据处理模块均不在处理所述第二数据所对应设备的数据,将所述第二数据返回所述数据处理模块,并对所述数据读取控制模块自身进行解锁处理;若是,则确定存在其他数据处理模块正在处理所述第二数据所对应设备的数据,重新从所述设备数据池中读取待处理的一条第二数据,直至所述第二数据缓存不成功。
另一方面,本申请实施例提供了一种设备数据顺序读取非易失性计算机存储介质,存储有计算机可执行指令,应用于数据读取控制模块,所述计算机可执行指令设置为:接收数据处理模块的调用请求与所述数据处理模块的ID;每个数据处理模块对应不同的ID;对数据读取控制模块自身进行加锁处理,根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据;所述动态队列管理模块包括正在处理数据的数据处理模块与相应设备之间的对应关系,以及通过从设备数据池读取数据,临时缓存所述数据的队列;其中,不同设备对应不同的队列;判断所述第一数据是否读取成功,若是,则将所述第一数据返回所述数据处理模块;若否,则从设备数据池中读取待处理的一条第二数据;所述第二数据为任意一个设备的数据;将所述第二数据缓存到所述动态队列管理模块,判断所述第二数据是否缓存成功;若否,则确定其他数据处理模块均不在处理所述第二数据所对应设备的数据,将所述第二数据返回所述数据处理模块,并对所述数据读取控制模块自身进行解锁处理;若是,则确定存在其他数据处理模块正在处理所述第二数据所对应设备的数据,重新从所述设备数据池中读取待处理的一条第二数据,直至所述第二数据缓存不成功。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
预先设置数据处理模块的ID,临时缓存设备数据的队列,从而通过动态队列管理模块,保证同一设备的数据不会被并行处理,尤其在大量设备对应少量数据处理模块时,在保证高并发效率和高灵活性的前提下,实现了对同一设备的数据按顺序依次处理,从而既保证了数据处理的顺序性,又保证了后台服务处理的性能,还保证了系统扩容的灵活性。
附图说明
为了更清楚地说明本申请的技术方案,下面将结合附图来对本申请的部分实施例进行详细说明,附图中:
图1为本申请实施例提供的一种设备数据顺序读取系统的框架示意图;
图2为本申请实施例提供的一种设备数据顺序读取方法的流程示意图;
图3为本申请实施例提供的从动态队列管理模块读取待处理的一条第一数据的流程示意图;
图4为本申请实施例提供的从将第二数据缓存到动态队列管理模块的流程示意图;
图5为本申请实施例提供的一种设备数据顺序读取设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本申请的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面参照附图来对本申请的一些实施例进行详细说明。
图1为本申请实施例提供的一种设备数据顺序读取系统的框架示意图。
在图1中,顺序读取系统包括数据读取控制模块、动态队列管理模块、设备数据池、数据key值生成模块,若干数据处理模块。
其中,数据处理模块,用于处理设备上传的数据。数据读取控制模块用于向数据处理模块提供可处理的数据,相当于一个总控模块,协调动态队列管理模块、设备数据池、数据key值生成模块之间的协作。动态队列管理模块,用于存放正在处理数据的数据处理模块与相应设备之间的对应关系,以及通过从设备数据池读取设备的数据,临时缓存所述数据的队列。其中,不同设备对应不同的队列。设备数据池,用于缓存设备上传上来的数据。数据key键生成模块,用于为同一设备的数据生成相同的key值,比如,设备的ID、MAC地址等。通过计算设备数据的Key值来区分不同设备的数据。
需要说明的是,设备数据池可以是任意一种能够保存大量设备数据的装置,比如,消息中间件、数据库等。
也就是说,动态队列管理模块维护着数据处理模块与相应设备之前的对应关系,并临时缓存着已经从设备数据池读取出来,但还未交给数据处理模块处理的数据。一般来说,前端的设备可能有成千上万,后台运行的数据处理模块可能只有几个或几十个。且只有正在处理数据的数据处理模块才会在动态队列管理模块中有上述对应关系(所以叫动态队列管理),某个数据处理模块一旦空闲下来,即,没在处理数据,动态队列管理模块中就不会有该某个数据处理模块的信息。
在构建动态队列管理模块时,需要确定每个数据处理模块的关联项,即,定义关联项,关联项包括数据处理模块的ID、设备的数据key值、队列、队列数据最后一次被读取的时间。根据每个数据处理模块的关联项,构建动态列表。也就是说,在动态队列管理模块中,则每个数据处理模块是指正在处理数据的数据处理模块,在缓存第二数据时动态添加关联项的内容。
需要说明的是,关联项是动态存在的,在动态列表中,每个数据处理模块的ID需要对应一个关联项,即每个数据处理模块的ID需要对应一个待处理设备的队列数据。
此外,根据每个数据处理模块在处理待处理设备的一条设备数据时,所需要的最长时间,构建超时器。
此外,构建取数据接口与缓存数据接口,所述取数据接口用于从动态队列管理模块读取设备数据,缓存数据接口用于将设备数据池中的设备数据缓存至所述动态队列管理模块。
最后,根据动态列表、所述超时器、取数据接口、缓存数据接口,构建动态队列管理模块。
具体地,在顺序读取过程中,数据读取控制模块接收数据处理模块的调用请求与数据处理模块的ID。其中,每个数据处理模块对应不同的ID。
对数据读取控制模块自身进行加锁处理,根据数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据。
可以理解的是,对自身加锁是为了在同一时间只响应一个数据处理模块的读取操作。从而有效避免同时进行两个读取操作会导致混乱的情况。
判断第一数据是否读取成功,若是,则将第一数据返回数据处理模块。
若否,则从设备数据池中读取待处理的一条第二数据。需要说明的是,第二数据为任意一个设备的数据。
将第二数据缓存到动态队列管理模块,判断第二数据是否缓存成功,若是,则确定存在其他数据处理模块处理第二数据所对应设备的数据,向数据处理模块返回空数据。需要说明的是,其他数据处理模块,是指当前正在调用数据读取控制模块的数据处理模块之外的其他数据处理模块。也就是说,即使存在一个其他数据处理模块处理第二数据所对应设备的数据,就会向数据处理模块返回空数据。
若否,则确定其他数据处理模块均不在处理第二数据所对应设备的数据,将第二数据返回数据处理模块,并对数据读取控制模块自身进行解锁处理。
本申请实施例具体如何对设备数据进行顺序读取,接下来通过图2进行详细描述。
图2为本申请实施例提供的一种设备数据顺序读取方法的流程示意图。该流程中的某些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。
图2中的流程包括以下步骤:
S201:数据读取控制模块接收数据处理模块的调用请求与所述数据处理模块的ID。
也就是说,数据处理模块调用数据读取控制模块时,提供该数据处理模块的ID,其中,每个数据处理模块对应不同的ID,即,不同的数据处理模块的ID不能相同。
S202:对数据读取控制模块自身进行加锁处理,根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据。
即,从动态队列管理模块中读取应该由该数据处理模块处理的一条时间最早的设备数据。
S203:判断所述第一数据是否读取成功。
读取成功,则执行步骤S204,读取失败,则执行步骤S205-S208。
S204:若是,则将所述第一数据返回所述数据处理模块。
S205:若否,则从设备数据池中读取待处理的一条第二数据。
其中,调用数据获取模块从设备数据池中读取待处理的一条时间最早的第二数据,使得数据获取模块用来从设备数据池中读取设备数据。
需要说明的是,数据获取模块可以根据实际采用设备数据池类型进行相应实现,对设备数据池的选型没有限制。
S206:将所述第二数据缓存到所述动态队列管理模块,判断所述第二数据是否缓存成功。
其中,若是,则确定存在其他数据处理模块正在处理所述第二数据所对应设备的数据,重新执行S205。
S207:若否,则确定其他数据处理模块均不在处理所述第二数据所对应设备的数据,将所述第二数据返回所述数据处理模块,并对所述数据读取控制模块自身进行解锁处理。
可以理解的是,通过S207,保证了不会有两个数据处理模块同时处理同一设备的数据,从而保证了对于同一设备的数据,处理的顺序性。
需要说明的是,虽然本申请实施例是参照图2来对步骤S201至步骤S207依次进行介绍说明的,但这并不代表步骤S201至步骤S207须按照严格的先后顺序执行。本申请实施例之所以按照图2中所示的顺序对步骤S201至步骤S207依次进行介绍说明,是为了方便本领域技术人员理解本申请实施例的技术方案。换句话说,在本申请实施例中,步骤S201至步骤S207之间的先后顺序可以根据实际需要进行适当调整。
通过图2的方法,因为数据读取过程相对简单,读取时间要比数据处理的时间短得多,从而读取时的加锁控制不会造成性能问题,所有数据处理模块相互之间不会相互等待,并发能力强,处理效率高,前端设备跟数据处理模块之间不需要唯一的对应关系,数量可以随意调整。
进一步地,预先设置数据处理模块的ID,临时缓存每个设备数据的队列,从而通过动态队列管理模块,保证同一设备的数据不会被并行处理,尤其在大量设备对应少量数据处理模块时,在保证高并发效率和高灵活性的前提下,实现了对同一设备数据的按顺序依次处理,从而既保证了数据处理的顺序性,又保证了后台服务处理的性能,还保证了系统扩容的灵活性。
基于图2的方法,本申请实施例还提供了该方法的一些具体实施方案和扩展方案,下面继续进行说明。
图3为本申请实施例提供的从动态队列管理模块读取待处理的一条第一数据的流程示意图。
其中,动态队列管理模块的取数据接口,接收数据处理模块的ID作为入参,返回应该由该数据处理模块处理的设备数据为出参,若没有合适的数据,则返回空数据。此外,如果某个数据处理模块超时了,则认为它不存在了,为它缓存的设备数据将由其他数据处理模块进行处理。
图3中的流程可以包括以下步骤:
S301:动态队列管理模块,通过所述取数据接口接收所述所述数据处理模块的ID。
S302:根据所述数据处理模块的ID,判断是否匹配到所述数据处理模块的关联项。
其中,若未匹配到所述数据处理模块的关联项,则执行步骤S305。
S303:若是,若在所述数据处理模块的关联项中,确定队列的设备数据不为空,则从所述队列中取出时间最早的一条设备数据,将所述时间最早的一条设备数据确定为所述待处理的第一数据,向所述数据读取控制模块返回所述待处理的一条第一数据,并将队列数据最后一次被读取的时间设置为当前时间。
需要说明的是,在队列中,设备数据按照上传的时间顺序依次排序,队列的头部则为时间最早的数据,队列的尾部则为时间最晚的数据。
S304:若在所述数据处理模块的关联项中,确定队列的设备数据为空,则将所述关联项从所述动态列表进行删除。
S305:从所述动态列表的其他所有关联项中,确定当前时间与所述其他所有关联项中队列数据最后一次被读取的时间之前的时间间隔。
需要说明的是,其他所有关联项是指在动态列表中,除了数据处理模块的关联项的剩余关联项。
S306:判断是否具有时间间隔超过超时器中最长时间的超时关联项。
S307:若否,则向所述数据读取控制模块返回空数据。
S308:若具有时间间隔超过超时器中最长时间的超时关联项,则判断所述超时关联项中队列的设备数据是否为空。
S309:若是,则将所述超时关联项从所述动态列表进行删除。
S310:若否,则将任意一个超时关联项中数据处理模块的ID,替换为所述数据处理模块的ID。此时,不为空的超时关联项可能具有多个。
S311:从所述任意一个超时关联项的队列中取出时间最早的一条设备数据,将所述时间最早的一条设备数据确定为所述待处理的第一数据,向所述数据读取控制模块返回所述待处理的一条第一数据,并将队列数据最后一次被读取的时间设置为当前时间。
可见,动态队列管理模块设有一个超时机制,当某个数据处理模块出现问题之后,会将它所负责处理的设备数据换由别的数据处理模块来处理。
图4为本申请实施例提供的从将第二数据缓存到动态队列管理模块的流程示意图。
动态队列管理模块的缓存数据接口,接收数据处理模块的ID和第二数据作为入参,如果缓存成功,则返回空数据,否则返回作为入参的第二数据。
图4中的流程可以包括以下步骤:
S401:所述动态队列管理模块,通过所述缓存数据接口,接收所述数据处理模块的ID与所述第二数据。
S402:通过调用数据key值生成模块,计算所述第二数据的key值。
需要说明的是,数据key值生成模块可以根据实际的设备数据形式及内容实现,对于设备数据的类型没有限制。
S403:从所述动态列表中,检索包含所述key值的关联项。
S404:若具有包含所述key值的关联项,则将所述第二数据存放至所述包含所述key值的关联项中队列的尾部。
需要说明的是,不会出现有多个包含所述key值的关联项。如果有多个,说明有多个数据处理模块都在处理这个key值所对应的设备的数据,这就不能保证处理的顺序了。
S405:向所述数据读取控制模块返回空数据,以向所述数据读取控制模块表示缓存成功。
S406:若不具有包含所述key值的关联项,则在所述动态列表中,新增一个关联项。
S407:在新增关联项中,将数据处理模块的ID设置为所述数据处理模块的ID。
S408:将设备的数据key值设置为待处理设备的数据key值。
S409:将队列设置为一个新的空队列。
S410:将队列数据最后一次被读取的时间设置为当前时间。
S411:向所述数据读取控制模块返回所述第二数据,以向所述数据读取控制模块表示缓存未成功。
基于同样的思路,本申请的一些实施例还提供了上述方法对应的设备和非易失性计算机存储介质。
图5为本申请实施例提供的一种设备数据顺序读取设备的结构示意图,应用于数据读取控制模块,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
接收数据处理模块的调用请求与所述数据处理模块的ID;每个数据处理模块对应不同的ID;
对数据读取控制模块自身进行加锁处理,根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据;所述动态队列管理模块包括正在处理数据的数据处理模块与相应设备之间的对应关系,以及通过从设备数据池读取数据,临时缓存所述数据的队列;其中,不同设备对应不同的队列;
判断所述第一数据是否读取成功,若是,则将所述第一数据返回所述数据处理模块;
若否,则从设备数据池中读取待处理的一条第二数据;所述第二数据为任意一个设备的数据;
将所述第二数据缓存到所述动态队列管理模块,判断所述第二数据是否缓存成功;
若否,则确定其他数据处理模块均不在处理所述第二数据所对应设备的数据,将所述第二数据返回所述数据处理模块,并对所述数据读取控制模块自身进行解锁处理;
若是,则确定存在其他数据处理模块正在处理所述第二数据所对应设备的数据,重新从所述设备数据池中读取待处理的一条第二数据,直至所述第二数据缓存不成功。
本申请的一些实施例提供的一种设备数据顺序读取非易失性计算机存储介质,存储有计算机可执行指令,应用于数据读取控制模块,所述计算机可执行指令设置为:
接收数据处理模块的调用请求与所述数据处理模块的ID;每个数据处理模块对应不同的ID;
对数据读取控制模块自身进行加锁处理,根据所述数据处理模块的ID,从动态队列管理模块中读取待处理的一条第一数据;所述动态队列管理模块包括正在处理数据的数据处理模块与相应设备之间的对应关系,以及通过从设备数据池读取数据,临时缓存所述数据的队列;其中,不同设备对应不同的队列;
判断所述第一数据是否读取成功,若是,则将所述第一数据返回所述数据处理模块;
若否,则从设备数据池中读取待处理的一条第二数据;所述第二数据为任意一个设备的数据;
将所述第二数据缓存到所述动态队列管理模块,判断所述第二数据是否缓存成功;
若否,则确定其他数据处理模块均不在处理所述第二数据所对应设备的数据,将所述第二数据返回所述数据处理模块,并对所述数据读取控制模块自身进行解锁处理;
若是,则确定存在其他数据处理模块正在处理所述第二数据所对应设备的数据,重新从所述设备数据池中读取待处理的一条第二数据,直至所述第二数据缓存不成功。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请技术原理之内所作的任何修改、等同替换、改进等,均应落入本申请的保护范围之内。
- 资源数据读取的方法、装置、电子设备和计算机可读介质
- 大数据文件读取方法、装置、计算机设备及存储介质
- 一种L2P表管理方法、数据读取方法、装置及设备
- 一种事件顺序记录上报方法、装置、设备及可读存储介质
- 一种硬盘数据的读取方法、装置及相关设备
- 数据拷贝系统及方法,数据读取设备,数据写设备及数据记录介质
- 数据拷贝系统及方法,数据读取设备,数据写设备及数据记录介质