掌桥专利:专业的专利平台
掌桥专利
首页

日志处理方法及设备

文献发布时间:2023-06-19 16:11:11



技术领域

本申请实施例涉及通信技术领域,尤其涉及一种日志处理方法及设备。

背景技术

日志系统作为操作系统运维调试环节中重要的支撑,用于收集操作系统各模块运行过程中需要记录的运行数据,可以帮助开发人员迅速定位故障问题。

以安卓(Android)系统为例,安卓系统中的各模块只需调用相应的接口就可以实现将日志记录到缓存当中,当客户端发生异常或需要关键事件日志时,可以从缓存中筛选出相关的日志文件用于分析定位。

由于操作系统在运行过程中产生的日志数据的数量极大,导致从缓存中筛选关键事件日志的过程需要占用大量的系统接口和处理器资源,降低了操作系统性能。

发明内容

本申请实施例提供的日志处理方法及设备,可以解决现有技术中筛选关键事件日志的过程需要占用大量系统接口和处理器资源,降低了操作系统性能的技术问题。

第一方面,本申请实施例提供一种日志处理方法,该方法包括:

解析已采集的日志数据对应的日志标识,根据所述日志标识确定所述日志数据是否属于关键事件日志;

当所述日志数据属于关键事件日志时,将所述日志数据保存至目标缓存,所述目标缓存只用于存储关键事件日志;

若所述关键事件日志对应的logcat进程存在客户端监听,则将所述目标缓存中的日志数据发送至所述关键事件日志对应的logcat进程。

在一种可能的设计方式中,所述解析已采集的日志数据对应的日志标识之前,还包括:

采集日志数据,并根据采集到的日志数据的类型,在采集到的日志数据中添加日志标识。

在一种可能的设计方式中,所述根据采集到的日志数据的类型,在采集到的日志数据中添加日志标识,包括:

当采集到的日志数据的类型为第一预设类型时,在所述采集到的日志数据中添加关键事件日志标识;其中,所述第一预设类型的日志数据为关键事件日志数据。

在一种可能的设计方式中,当所述日志数据属于关键事件日志时,将所述日志数据保存至目标缓存,包括:

当所述日志数据属于关键事件日志时,唤醒预设的关键事件日志reader线程,所述关键事件日志reader线程用于读取已采集的所述日志数据,并将所述日志数据保存至所述目标缓存;

所述若所述关键事件日志对应的logcat进程存在客户端监听,则将所述目标缓存中的日志数据发送至所述关键事件日志对应的logcat进程,包括:

若所述关键事件日志对应的logcat进程存在客户端监听,则利用所述关键事件日志reader线程将所述目标缓存中的日志数据发送至所述关键事件日志对应的logcat进程。

在一种可能的设计方式中,所述唤醒预设的关键事件日志reader线程之后,还包括:

当所述关键事件日志reader线程读取完所述目标缓存中的日志数据时,控制所述关键事件日志reader线程进入休眠状态,并在休眠时长满足预设时长后销毁所述关键事件日志reader线程。

在一种可能的设计方式中,所述将所述目标缓存中的日志数据发送至所述关键事件日志对应的logcat进程之后,还包括:

所述关键事件日志对应的logcat进程将接收到的日志数据保存至关键事件日志专用的日志文件中,所述日志文件位于存储器中。

在一种可能的设计方式中,所述关键事件日志对应的logcat进程在日志开关处于关闭状态与开启状态时,均保持启动状态。

第二方面,本申请实施例提供一种日志处理装置,该装置包括:

检测模块,用于解析已采集的日志数据对应的日志标识,根据所述日志标识确定所述日志数据是否属于关键事件日志;

存储模块,用于当所述日志数据属于关键事件日志时,将所述日志数据保存至目标缓存,所述目标缓存只用于存储关键事件日志;

读取模块,用于若所述关键事件日志对应的logcat进程存在客户端监听,则将所述目标缓存中的日志数据发送至所述关键事件日志对应的logcat进程。

第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器和存储器;

所述存储器存储计算机执行指令;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面提供的日志处理方法。

第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面提供的日志处理方法。

第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如第一方面提供的日志处理方法。

本申请实施例所提供的日志处理方法及设备,通过解析日志数据中的日志标识,确定该日志数据是否属于关键事件日志,若属于,则将该日志数据存储至专用的缓存中,当存在客户端监听该关键事件日志时,即可从该专用的缓存中读取关键事件日志数据并发送至该客户端,不用从所有采集到的日志数据中去查询关键事件日志,因此并不需要占用大量系统接口和处理器资源,降低了对操作系统性能的影响。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对本申请实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例中提供的一种日志系统的架构示意图;

图2为本申请实施例中提供的一种日志处理方法的流程示意图一;

图3为本申请实施例中提供的一种日志处理方法的流程示意图二;

图4为本申请实施例中提供的一种日志处理方法的流程示意图三;

图5为本申请实施例中提供的一种日志处理方法的流程示意图四;

图6为本申请实施例中提供的一种日志处理装置的模块示意图;

图7为本申请实施例中提供的一种电子设备的硬件结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请以下实施例中以安卓(Android)系统为例进行说明,可以理解的是,本申请实施例中所提供的技术方案也可以应用于其它操作系统,本申请中不进行限定。

在安卓(Android)操作系统中,日志系统用于收集操作系统各模块运行过程中需要记录的关键信息,从而帮助开发人员迅速定位故障问题。其中,上述各模块只需调用相应的接口并传入需要记录的运行日志就可以实现将日志数据写入到缓存当中。同时,安卓系统中运行着多个logcat进程,可以将缓存中的日志按类型实时保存到相应的日志文件中。当客户端发生异常或需要关键信息时,便可以导出日志文件用于分析定位。

另外,上述日志系统还支持实时调试,可以通过安卓调试桥(Android DebugBridge,简称ADB)工具将缓存中的日志信息显示出来。

其中,安卓操作系统自带的日志系统通常是将日志信息分为几类,包括主要日志(main log)、内核驱动层日志(kernal log)、无线通信日志(radio log)等,这些日志分别保存了Android系统中不同层的日志数据。例如,kernal log用于保存内核驱动底层(即Linux内核层)的日志数据,一旦系统上电,kernal log便开始记录;main log用于保存安卓系统上层应用层(即应用程序层及应用程序框架层)的日志数据,当系统时钟开启时,mainlog才开始记录。

系统各模块通过调用不同的日志接口可以将日志数据封装成为包含对应日志标识(log_id)的日志,并发送到日志守护进程logd。其中,logd进程用于将操作系统运行期间产生的日志数据存储至缓存中,并判断是否有对应log_id的logcat进程,如果有,则筛选出该类型的日志,并发送到该logcat进程。

参照图1,图1为本申请实施例中提供的一种日志系统的架构示意图,其中,liblog用于提供日志读写(Logger_list_read、Log_write)、过滤等接口,供logcat、JAVA、Native等程序使用;LogListener线程用于监听logdw线程上是否有日志数据(log)写入logd进程;logd进程用来将接收到的日志写入LogBuffer或读取LogBuffer中的日志;LogBuffer用于存储log;LogReader线程用于负责读取缓存中的log,当有logcat进程存在注册客户端监听时,将读取的log通过logdr线程发送给该logcat进程。

其中,log的保存流程包括:创建LogBuffer对象;创建LogListener线程并开始监听;通过liblog把log写入到logdw;当LogListener监听到有log写入时,logd会将写入的log保存至LogBuffer中。

log的获取过程则主要通过logcat进程来实现。

示例性的,Android日志通常分为如下7个等级:V,详细(最低优先级)(Verbose:2);D、调试(Debug:3);I,信息(Info:4);W,警告(Warning:5);E,错误(Error:6);F,严重错误(Fatal:7);S,静默(最高优先级,绝不会输出任何内容)(Silent)。当需要获取日志等级为Info以上的日志时,可以通过指令“adb logcat*:I”,从缓存中保存的所有日志中获取到类型为Info、Error、Fatal、Silent的日志。

在软件开发项目中,通常会有一些关键事件日志需要实时的记录,便于外场问题快速界定。由于操作系统运行过程中产生的日志信息量极大,在开启日志开关后,从缓存中查询获取关键事件日志的过程难免会占用大量接口和处理器资源,对操作系统性能影响较大。

为了解决上述技术问题,本申请实施例提供了一种日志处理方法,将关键事件日志存储至专用的缓存中,当存在客户端监听该关键事件日志时,即可从该专用的缓存中读取该关键事件日志并发送至上述客户端,不用从所有采集到的日志数据中进行查询,因此可以不需要占用大量系统接口和处理器资源,降低了对操作系统性能的影响。

参照图2,图2为本申请实施例提供的日志处理方法的流程示意图一,在一种可行的实施方式中,上述日志处理方法包括:

S201、解析已采集的日志数据对应的日志标识,并根据所述日志标识确定所述日志数据是否属于关键事件日志。

在一种可行的实施方式中,可以预先在关键事件日志数据中添加特殊的日志标识,在logd进程接收到日志数据后,对该日志数据的日志标识(log_id)进行解析,并通过判断该日志数据的日志标识是否与预先添加的特殊日志标识相同,来确定该日志数据是否属于关键事件日志。

例如,当上述日志数据的日志标识为预先添加的特殊日志标识时,即可确定该日志数据属于关键事件日志。

S202、当所述日志数据属于关键事件日志时,将所述日志数据保存至目标缓存,所述目标缓存只用于存储关键事件日志。

在一种可行的实施方式中,可以预先创建一个相对独立的缓存,该缓存只用于存储关键事件日志,当确定上述日志数据属于关键事件日志时,即可将上述日志数据保存至该缓存中。

S203、若上述关键事件日志对应的logcat进程存在客户端监听,则将目标缓存中的日志数据发送至上述关键事件日志对应的logcat进程。

在一种可行的实施方式中,logd进程在将上述日志数据保存至目标缓存之后,会自动唤醒日志读取线程,该日志读取线程被唤醒后,便会逐条读取目标缓存中的日志数据,此时如果上述关键事件日志对应的logcat进程存在客户端监听,则将读取到的日志数据发送至该logcat进程。

其中,logcat进程在接收到日志数据后,便会将接收到的日志数据发送至监听客户端。

即在本申请实施例中,当有日志读取进程读取上述目标缓存中的日志数据时,若该日志读取进程读取的日志数据存在注册监听客户端,则将该日志读取进程读取到的日志数据发送至上述客户端。

其中,上述客户端可以是浏览器、即时通讯程序等。

本申请实施例所提供的日志处理方法,通过解析日志数据中的日志标识,确定该日志数据是否属于关键事件日志,若属于,则将该日志数据存储至专用的缓存中,当存在客户端监听该关键事件日志时,即可从该专用的缓存中读取日志数据并发送至该客户端,不用从所有采集到的日志数据中进行查询获取,因此并不需要占用大量系统接口和处理器资源,降低了对操作系统性能的影响。

基于上述实施例中所描述的内容,参照图3,图3为本申请实施例提供的日志处理方法的流程示意图二,在一种可行的实施方式中,上述日志处理方法包括:

S301、采集日志数据,并根据采集到的日志数据的类型,在采集到的日志数据中添加日志标识。

本实施例中,首先对原有日志系统的日志数据类型进行扩展,新增tdlog类型,该类型专门用于存储关键时间日志数据,并新增日志软件开发工具包(SoftwareDevelopment Kit,简称SDK)和环境搭建(Native Development Kit,简称NKD),用于在各模块采集到的日志数据中添加日志标识(log_id),并通过socket发送至logd进程。

其中,利用操作系统中的各模块采集操作系统中产生的日志数据,然后确定采集到的日志数据的类型,并根据确定出的日志数据类型添加日志标识(log_id)。

在一些实施例中,当采集到的日志数据的类型为第一预设类型时,在采集到的日志数据中添加关键事件日志标识;其中,上述第一预设类型的日志数据为关键事件日志数据。

例如,若采集到的日志数据的类型为关键事件日志(tdlog)类型,则在采集到的日志数据中添加关键事件日志标识;若采集到的日志数据的类型为非tdlog类型,则在采集到的日志数据中添加其它日志标识。

在一种可行的实施方式中,可以在操作系统中默认启动tdlog类型的日志数据对应的logcat进程,并保持该日志采集进程logcat在日志开关处于关闭状态与开启状态时,均保持启动状态,用于采集操作系统中产生的tdlog类型的日志数据,实现对关键事件日志的实时记录。

可以理解的是,通过保持上述logcat进程处于启动状态,可以使关键事件日志的采集不用不依赖于系统日志开关,即不会出现由于没有开启系统日志开关导致关键事件日志漏记的现象。且由于关键事件日志数据在操作系统中产生的数量一般较少,因此大多数情况下,上述logcat进程会处于挂起状态,进程开销极低,不会对处理器的性能产生影响。

S302、解析已采集的日志数据对应的日志标识,根据所述日志标识确定所述日志数据是否属于关键事件日志。

在一种可行的实施方式中,在logd进程接收到日志数据后,对该日志数据的日志标识(log_id)进行解析,并确定解析出的日志标识是否为关键事件日志标识;当解析出的日志标识为关键事件日志标识时,确定该日志数据属于关键事件日志。

S303、当上述日志数据属于关键事件日志时,唤醒预设的关键事件日志reader线程,该关键事件日志reader线程用于读取已采集的的日志数据,并将读取的日志数据保存至目标缓存,该目标缓存只用于存储关键事件日志。

在一种可行的实施方式中,预先新增的一个关键事件日志读取线程(tdlog.reader线程),专门用于处理tdlog类型的日志,即专门用于处理关键事件日志。

当确定上述日志数据属于关键事件日志时,即可唤醒上述tdlog.reader线程,将上述日志数据保存至关键事件日志专用的目标缓存(tdLog Buffe)中;当确定上述日志数据不属于关键事件日志时,即可将上述日志数据保存至其它日志缓存(Log Buffe)中。

其中,在唤醒上述tdlog.reader线程前,若该tdlog.reader线程未启动,则重新启动该tdlog.reader线程。

S304、若关键事件日志对应的logcat进程存在客户端监听,则利用关键事件日志reader线程将目标缓存中的日志数据发送至关键事件日志对应的logcat进程。

在一种可行的实施方式中,当上述tdlog.reader线程被唤醒后,便逐条读取tdLogBuffe中的日志数据,如果上述关键事件日志对应的logcat进程存在注册监听客户端,则将读取到的日志数据推送至该logcat进程,并接着处理下一条日志数据,直到tdLog Buffe中的日志数据全部处理完为止后,tdlog.reader线程进入休眠状态。

其中,如果在采集日志数据之前,关键事件日志对应的logcat进程已存在客户端提前监听,则在采集到关键事件日志数据时,利用tdlog.reader线程发送至上述logcat进程;如果在采集日志数据之后,若关键事件日志对应的logcat进程后监听,则会在接收到logcat监听的线程时,利用tdlog.reader线程将目标缓存的日志数据发送至该logcat进程。

可选的,在一些实施例中,tdlog.reader线程在休眠一段时间后,可以自行销毁,以释放线程资源。

可以理解的是,传统logd进程的处理流程中,针对缓存Log Buffer中的每一条日志数据都会触发一次筛选,确定该日志数据是否属于tdlog类型的关键事件日志,但是由于tdlog类型的关键事件日志在所有日志数据中所占的比例较小,main类型的日志数据占绝大多数,因此,从缓存Log Buffer中查找tdlog类型的关键事件日志的过程需要占用大量的处理器资源。

在本申请实施例中,通过将tdlog类型的关键事件日志单独存储在tdLog Buffe中,当tdlog.reader线程从tdLog Buffe中读取日志数据时,若存在客户端监听上述tdlog类型的logcat进程,则tdlog.reader线程会将读取的日志数据发送至该logcat进程,不需要从所有采集到的日志数据中进行筛选,因此占用的处理器资源较小。

基于上述实施例中所描述的内容,参照图4,图4为本申请实施例提供的日志处理方法的流程示意图三,在一种可行的实施方式中,上述日志处理方法包括:

S401、采集日志数据,并根据采集到的日志数据的类型,在采集到的日志数据中添加日志标识。

S402、解析已采集的日志数据对应的日志标识,根据所述日志标识确定所述日志数据是否属于关键事件日志。

S403、当上述日志数据属于关键事件日志时,唤醒预设的关键事件日志reader线程,该关键事件日志reader线程用于读取已采集的的日志数据,并将读取的日志数据保存至目标缓存,该目标缓存只用于存储关键事件日志。

S404、若关键事件日志对应的logcat进程存在客户端监听,则利用关键事件日志reader线程将目标缓存中的日志数据发送至关键事件日志对应的logcat进程。

S405、关键事件日志对应的logcat进程将接收到将读取的日志数据保存至关键事件日志专用的日志文件中。

上述步骤S401至步骤S404描述的内容与上述实施例中步骤S301至步骤S304描述的内容一致,具体可以参照上述实施例中的描述,本申请实施例中不再赘述。

可以理解的是,在现有技术中,操作系统各模块的海量日志数据都是保存在几个公共的日志文件中,受日志文件存储空间大小的限制,当关键事件日志记录在日志文件后,很容易被操作系统的海量日志数据覆盖掉。

在本申请实施例中,关键事件日志对应的logcat进程在接收到tdLog Buffe中的关键事件日志数据后,会将接收到的关键事件日志数据保存于专门的日志文件中,该日志文件仅用于保存类型为tdLog的关键事件日志数据,由此不仅可以存储更多的关键事件日志数据,还可以保证存储的关键事件日志数据不会在短时间内被其它日志数据覆盖掉,增加关键事件日志数据的存储时长。

为了更好的理解本申请,参照图5,图5为本申请实施例提供的日志处理方法的流程示意图四,在一种可行的实施方式中,上述日志处理方法包括:

S501、采集日志数据,并根据采集到的日志数据的类型,在采集到的日志数据中添加日志标识。

S502、logd进程解析已采集的日志数据对应的日志标识。

S503、logd进程确定上述日志数据是否属于关键事件日志,若否,则执行S404,若是,则执行S505-S507。

S504、将上述日志数据保存至Log Buffe。

S505、唤醒tdlog.reader线程,将上述日志数据保存至tdLog Buffe。其中,tdLogBuffe只用于存储关键事件日志。

S506、tdlog.reader线程依次读取tdLog Buffe中的日志数据,若关键事件日志对应的logcat进程存在客户端监听,则将当前读取到的日志数据发送至该logcat进程。

S507、关键事件日志对应的logcat进程将接收到的日志数据保存至关键事件日志专用的日志文件中。

本申请实施例提供的日志处理方法,通过将关键事件日志保存在专门的缓存中,当日志读取线程从该缓存中读取日志数据时,若该日志读取线程读取的日志数据存在客户端监听,则将读取到的日志数据发送至该客户端,不需要从所有的日志数据中进行筛选查询,从而可以降低日志查询过程中的系统开销;另外,将上述缓存中的关键事件日志保存在专门的日志文件中,还可以保证关键事件日志在短时间内不容易被操作系统的海量日志信息覆盖掉。

基于上述实施例中所描述的内容,本申请实施例中还提供一种日志处理装置,参照图6,图6为本申请实施例中提供的一种日志处理装置的程序模块示意图,该日志处理装置60包括:

检测模块601,用于解析已采集的日志数据对应的日志标识,并根据该日志标识确定所述日志数据是否属于关键事件日志。

存储模块602,用于当所述日志数据属于关键事件日志时,将所述日志数据保存至目标缓存,该目标缓存只用于存储关键事件日志。

读取模块603,用于若所述关键事件日志对应的logcat进程存在客户端监听,则将所述目标缓存中的日志数据发送至所述关键事件日志对应的logcat进程。

本申请实施例所提供的日志处理装置,通过解析日志数据中的日志标识,确定该日志数据是否属于关键事件日志,若属于,则将该日志数据存储至专用的缓存中,当存在客户端监听该关键事件日志时,即可从该专用的缓存中读取日志数据并发送至该客户端,不用从所有采集到的日志数据中进行查询,因此并不需要占用大量系统接口和处理器资源,降低了对操作系统性能的影响。

在一种可行的实施方式中,日志处理装置60还包括:

采集模块,用于采集日志数据,并根据采集到的日志数据的类型,在采集到的日志数据中添加日志标识。

在一种可行的实施方式中,上述采集模块用于:

当采集到的日志数据的类型为第一预设类型时,在所述采集到的日志数据中添加关键事件日志标识;其中,所述第一预设类型的日志数据为关键事件日志数据。

在一种可行的实施方式中,存储模块602还用于:

当所述日志数据属于关键事件日志时,唤醒预设的关键事件日志reader线程,所述关键事件日志reader线程用于读取已采集的日志数据,并将读取的日志数据保存至上述目标缓存。

读取模块603具体用于:

若所述关键事件日志对应的logcat进程存在客户端监听,则利用所述关键事件日志reader线程将所述目标缓存中的日志数据发送至所述关键事件日志对应的logcat进程。

在一种可行的实施方式中,读取模块603具体还用于:

当所述关键事件日志reader线程读取完所述目标缓存中的日志数据时,控制所述关键事件日志reader线程进入休眠状态,并在休眠时长满足预设时长后销毁所述关键事件日志reader线程。

需要说明的是,本申请实施例中检测模块601、存储模块602及读取模块603具体执行的内容可以参阅图2至图5所示实施例中相关内容,此处不做赘述。

进一步的,基于上述实施例中所描述的内容,本申请实施例中还提供了一种电子设备,该电子设备包括至少一个处理器和存储器;其中,存储器存储计算机执行指令;上述至少一个处理器执行存储器存储的计算机执行指令,以实现如上述实施例中描述的日志处理方法中的各个步骤。

为了更好的理解本申请实施例,参照图7,图7为本申请实施例提供的一种电子设备的硬件结构示意图。

如图7所示,本实施例的电子设备70包括:处理器701以及存储器702;其中:

存储器702,用于存储计算机执行指令;

处理器701,用于执行存储器存储的计算机执行指令,以实现上述实施例中描述的日志处理方法中的各个步骤,本实施例此处不再赘述。

可选地,存储器702既可以是独立的,也可以跟处理器701集成在一起。

当存储器702独立设置时,该设备还包括总线703,用于连接所述存储器702和处理器701。

进一步的,基于上述实施例中所描述的内容,本申请实施例中还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,以实现如上述实施例中描述的日志处理方法中的各个步骤。

进一步的,基于上述实施例中所描述的内容,本申请实施例中还提供了一种计算机程序产品,该计算机程序产品中包括计算机程序,该计算机程序被处理器执行时,可以实现如上述实施例中描述的日志处理方法中的各个步骤。

需要说明的是,在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。

应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。

总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。

上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。

一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

技术分类

06120114732945