背景技术
随着网络技术的发展,视频监控技术由于其真实性、可靠性和广泛性等优点,在安防、交通、金融、教育等各行各业中得到了广泛的应用和迅速的发展;而随着平安城市的建设,视频监控技术也成为当今的热门技术。
在视频监控技术中,视频数据除了可以用于实时监控,还可以先存储起来,以供后续的回放。如图1所示,为视频监控系统的工作原理示意图,在图1中,模拟的音视频数据经过编码器的数字编码压缩处理后,可以传送到网络上以供实时浏览,而且能够同时将相同的音视频数据通过网络存储到存储设备中。
具体的,在视频监控技术中,编码器用于将模拟音视频信号转换为数字信号并使用实时音视频压缩算法处理后,将相应音视频数据传输到网络中,而该编码器一般对外提供标准的IP(Internet Protocol,网际互连协议)接口或SCSI(Small Computer System Interface,小型计算机系统接口)接口,而存储设备也具有与编码器相同的接口。
如图2所示的音视频数据传输过程示意图,编码器可以通过在专用网络、ADSL(Asymmetric Digital Subscriber Line,非对称数字用户环路)或卫星链路上将音视频数据通过UDP(User Datagram Protocol,用户数据包协议)/TCP(Transmission Control Protocol,传输控制协议)协议或iSCSI(Internet SmallComputer System Interface,Internet小型计算机系统接口),NFS(网络文件系统,Network File System)协议将音视频数据写入到存储设备中。
在将音视频数据写入到存储设备,即在音视频数据传输的过程中,存在丢失音视频数据的可能。例如,音视频数据从产生到被发送到存储设备,会由于编码器码流的突发情况;中间网络传输情况不好(例如,丢包、时延、乱序、抖动等);以及存储设备的存储数据突发、阵列、磁盘性能下降等原因导致需要存储的音视频数据丢失,从而影响存储设备中音视频数据的完整性。如图3所示的音视频数据流示意图。
在编码器端,需要进行音视频数据采集、音视频数据产生、得到一帧音视频数据等操作,之后编码器将音视频数据通过网络写入到存储设备,而在存储设备端,需要进行接收音视频数据,以及将音视频数据写入到磁盘等操作。
在采用上述方法将音视频数据存储到存储设备时,由于多种原因会导致音视频数据丢失,当存储设备中的音视频数据出现丢失后,则丢失的音视频数据无法恢复。
而为了能够对丢失的音视频数据进行恢复,现有技术中,可以在编码器上接一块存储设备(例如,磁盘,SD卡等),如图4所示的音视频数据传输过程示意图,编码器在通过网络将音视频数据写入到存储设备的过程中,可以写一份相同的音视频数据到本地的存储设备(即上述的磁盘,SD卡等)中。当网络存储设备发生音视频数据丢失时,可以在编码器本地的存储设备中查到丢失的音视频数据,以对网络存储设备中丢失的音视频数据进行恢复。如图5所示的音视频数据流示意图。
在编码器端,需要进行音视频数据采集、音视频数据产生、得到一帧音视频数据,之后编码器将音视频数据通过网络写入到存储设备,并将该音视频数据写入本地的存储设备;而在存储设备端,需要进行接收音视频数据,以及将音视频数据写入到磁盘等操作。
但是,在编码器本地上接一块存储设备(例如,磁盘,SD卡等)时,需要额外的大容量存储资源;而且基于成本的考虑,额外的存储设备容量会小于存储设备给编码器分配的容量,即本地的存储设备录像(即相应的音视频数据)总时间会小于网络存储设备上的录像时间;当在网络存储设备上发现录像不存在后,会大概率的在本地存储中无法找到对应的录像。
发明内容
本发明提供一种数据异常时的恢复方法和设备,以快速检查数据是否丢失,并对数据快速恢复。
为了达到上述目的,本发明提出了一种数据异常时的恢复方法,应用于包括编码器和存储设备的监控系统中,所述编码器中还包括缓冲区,所述方法包括以下步骤:
当需要将数据存储到所述存储设备时,所述编码器根据所述数据生成第一校验码;
将所述数据和所述第一校验码存储到所述存储设备,并将所述数据和所述第一校验码存储到所述缓冲区;
所述存储设备根据所述数据生成第二校验码,并根据所述第一校验码和所述第二校验码判断所述数据是否异常;
如果所述数据异常时,所述存储设备从所述缓冲区重新获取所述数据。
所述编码器根据所述数据生成第一校验码,具体为:
所述编码器根据数据的帧获取每一帧数据对应的第一校验码;
所述编码器将所述数据和所述第一校验码存储到所述存储设备,具体包括:
所述编码器将所述第一校验码添加到对应的每一帧数据中,并将每一帧数据存储到所述存储设备。
在所述缓冲区中缓存数据包括通过单向链表在所述缓冲区中缓存数据,所述单向链表中记录的信息包括数据标识项、数据项和校验码项;
将所述数据和所述第一校验码存储到所述缓冲区,具体包括:
将所述数据的标识信息添加到所述单向链表中的数据标识项,将所述数据添加到所述单向链表中的数据项,并将所述第一校验码添加到所述单向链表中的校验码项。
根据所述第一校验码和所述第二校验码判断所述数据是否异常,具体包括:
所述存储设备判断所述第一校验码和所述第二校验码是否相同,当所述第一校验码和所述第二校验码相同时,所述存储设备判断所述数据没有异常,当所述第一校验码和所述第二校验码不同时,所述存储设备判断所述数据出现异常。
所述存储设备从所述缓冲区重新获取所述数据,具体包括:
所述存储设备向所述编码器发送重传标志、所述数据的标识信息或所述第一校验码;
所述编码器根据所述数据的标识信息或所述第一校验码从所述缓冲区中查找所述数据的标识信息或所述第一校验码对应的数据,并将查找到的所述数据的标识信息或所述第一校验码对应的数据重新发送给所述存储设备。
所述存储设备判断所述数据没有异常,之后还包括:
所述存储设备向所述编码器发送成功标志、所述数据的标识信息或所述第一校验码;
所述编码器根据所述数据的标识信息或所述第一校验码从所述缓冲区中查找所述数据的标识信息或所述第一校验码对应的数据,并将查找到的所述数据的标识信息或所述第一校验码对应的数据删除。
一种数据异常时的恢复设备,应用于包括编码器和存储设备的监控系统中,所述设备作为所述监控系统中的编码器,该设备进一步包括:
生成模块,用于当需要将数据存储到所述存储设备时,根据所述数据生成第一校验码;
缓冲模块,用于存储所述数据和所述第一校验码;
收发模块,与所述生成模块和所述缓冲模块连接,用于将所述数据和所述第一校验码发送到所述存储设备,并将所述数据和所述第一校验码发送到所述缓冲模块,并由所述缓冲模块进行存储;
维护模块,与所述缓冲模块和所述收发模块连接,用于当所述存储设备发现将所述数据存储到所述存储设备出现异常时,从所述缓冲模块中获取所述数据,并将所述数据重新发送给所述存储设备上。
所述生成模块具体用于,根据数据的帧获取每一帧数据对应的第一校验码;
所述收发模块具体用于,将所述第一校验码添加到对应的每一帧数据中,并将每一帧数据存储到所述存储设备。
在所述缓冲模块中缓存数据包括通过单向链表在所述缓冲模块中缓存数据,所述单向链表中记录的信息包括数据标识项、数据项和校验码项;
所述缓冲模块具体用于,将所述数据的标识信息添加到所述单向链表中的数据标识项,将所述数据添加到所述单向链表中的数据项,并将所述第一校验码添加到所述单向链表中的校验码项。
所述收发模块还用于,接收所述存储设备向所述编码器发送的重传标志、所述数据的标识信息或所述第一校验码;或者,接收述存储设备向所述编码器发送的成功标志、所述数据的标识信息或所述第一校验码;
所述维护模块具体用于,当接收到重传标志、所述数据的标识信息或所述第一校验码时,根据所述数据的标识信息或所述第一校验码从所述缓冲模块中查找所述数据的标识信息或所述第一校验码对应的数据,并将查找到的所述数据的标识信息或所述第一校验码对应的数据重新发送给所述存储设备;
当接收到成功标志、所述数据的标识信息或所述第一校验码时,根据所述数据的标识信息或所述第一校验码从所述缓冲模块中查找所述数据的标识信息或所述第一校验码对应的数据,并将查找到的所述数据的标识信息或所述第一校验码对应的数据删除。
一种数据异常时的恢复设备,应用于包括编码器和存储设备的监控系统中,所述编码器中还包括缓冲区,所述缓冲区中存储了数据和对应的校验码,所述设备作为所述监控系统中的存储设备,该设备进一步包括:
收发模块,用于当需要将数据存储到所述存储设备时,接收来自所述编码器的数据和第一校验码;
存储模块,与所述收发模块连接,用于存储所述数据和所述第一校验码;
生成模块,与所述存储模块连接,用于根据所述数据生成第二校验码;
判断模块,与所述存储模块和所述生成模块分别连接,用于根据所述第一校验码和所述第二校验码判断所述数据是否异常;
处理模块,与所述判断模块连接,用于当判断结果为所述数据异常时,从所述缓冲区重新获取所述数据。
所述判断模块具体用于,判断所述第一校验码和所述第二校验码是否相同,当所述第一校验码和所述第二校验码相同时,判断所述数据没有异常,当所述第一校验码和所述第二校验码不同时,判断所述数据出现异常。
所述处理模块具体用于,当所述数据出现异常时,向所述编码器发送重传标志、所述数据的标识信息或所述第一校验码,以从所述缓冲区重新获取所述数据;
当所述数据没有异常时,向所述编码器发送成功标志、所述数据的标识信息或所述第一校验码,以通知所述编码器删除所述缓冲区中的所述数据。
与现有技术相比,本发明具有以下优点:
通过计算数据存储前后的校验和,并将数据存储到缓冲区中,在存储设备中对校验和进行比较,获知数据在存储过程中出现异常时,能够快速对异常的数据进行修复,保证了数据的完整性。
具体实施方式
针对大流量的音视频数据网络存储中,当数据发生丢失时,数据恢复速度慢或者无法恢复的问题,本发明提供一种数据异常时的快速恢复方法,通过将数据存储到编码器本地的缓冲区(例如,硬件介质可以是内存,flash,sd卡,磁盘等),并将数据和对应的第一校验码存储到存储设备上,而当存储设备存储了该数据和对应的第一校验码后,根据该数据重新获取第二校验码,并通过比较第一校验码和第二校验码是否相同来判断该数据是否出现异常,并当该数据出现异常时,能够从编码器本地的缓冲区中重新获取到对应的数据,从而能够快速对异常的数据进行修复,保证了数据的完整性。
基于上述思想,本发明中提供一种数据异常时的恢复方法,应用于包括多个阵列的存储设备中,如图6所示,该方法包括以下步骤:
步骤601,当需要将数据存储到所述存储设备时,所述编码器根据所述数据生成第一校验码。
步骤602,将所述数据和所述第一校验码存储到所述存储设备,并将所述数据和所述第一校验码存储到所述缓冲区。
步骤603,所述存储设备根据所述数据生成第二校验码,并根据所述第一校验码和所述第二校验码判断所述数据是否异常。
步骤604,如果所述数据异常时,所述存储设备从所述缓冲区重新获取所述数据。
为了更加清楚的说明本发明提供的技术方案,以下结合一种具体的应用场景,对本发明提供的技术方案进行详细阐述。本应用场景为针对大流量的音视频数据的网络存储,后续过程中,为了简便说明,将音视频数据简称为数据。如图7所示,为本应用场景的音视频数据流程示意图。
基于上述情况,如图8所示,该数据异常时的恢复方法进一步包括:
步骤801,编码器对数据进行校验,并将计算得到的校验码添加到该数据中。
具体的,编码器需要对数据(即音视频数据)进行采集,并经过压缩后得到每一帧数据,而在对数据进行校验时,是根据数据的帧获取每一帧数据对应的校验码的,并将计算得到的校验码添加到对应的每一帧数据中。
本发明中,当获知每一帧数据后,需要对每一帧数据进行校验码计算,并将该检验码添加到对应的每一帧数据中,如图9所示,为该检验码计算数据流向图。其中,该检验码的计算方法包括但不限于通过采用CRC(CyclicalRedundancy Check,循环冗余码)循环冗余校验法,BCC(Block CheckCharacter,块校验字符)异或校验法,或其他的校验方法(例如奇偶校验法)等,为了方便描述,本发明中CRC循环冗余校验法为例进行说明。
具体的,CRC为校验和的一种,是两个字节数据流采用二进制除法(没有进位,使用XOR异或来代替减法)相除所得到的余数,其中,当得到CRC值(即上述的校验码)之后,需要将该值(校验码)存放到对应的每一帧数据中,例如,将该校验码放到对应的每一帧数据的开头。
步骤802,编码器将处理后的数据通过网络存储到存储设备中,并将该处理后的数据存储到自身的缓冲区中。其中,该处理后的数据即为添加了该校验码的数据。该缓冲区为预先在编码器中开辟的区域,例如,硬件介质可以是内存,flash,sd卡,磁盘等区域。
在编码器的缓冲区中,可以通过单向链表的方式缓存数据,而在实际应用中,也可以通过其他方式缓存数据,本发明中以单向链表的方式为例进行说明。
具体的,在单向链表中记录的信息包括数据的标识信息、数据信息(即每一帧数据)、校验码信息(即根据每一帧数据得到的校验码)、当前数据指向的下一个数据对象(即当前数据之前的一个数据的信息)和当前数据插入单向链表的时间。
需要注意的是,该数据的标识信息可以为每个数据对应的唯一标识,例如,为每个数据分配的序列号,数据1、数据2...依此类推;该数据的标识信息还可以为该数据的校验码信息,此时,由于该单向链表中记录的信息中也需要包含该校验码信息,则不再需要该数据的标识信息(能够使用该校验码信息代替该数据的标识信息),本发明中以这种情况为例进行说明。
具体的,单向链表的结构如下所示:
struct DATA{
int iCRC;
char*data;
struct DATA*next;
time_t datatime;
}
struct HEAD{
struct DATA*next;
}
其中,在单向链表的结构中,DATA结构体为具体的数据结构,iCRC为校验码项,用于存储经过计算的校验码,data为数据项,用于存储每一帧数据,next指向下一个结构对象,datatime为插入链表的时间。可以理解的是,如果需要增加数据标识项时,只需要在单向链表中添加相应的项即可,本发明中不再详加赘述。
当将处理后的数据存储到自身的缓冲区后,需要在缓冲区中维护相应的数据,并对缓冲区中的数据进行管理。即当处理后的数据存储到自身的缓冲区后,需要新建一个DATA结构体对象,将每一帧数据、校验码等信息添加到该DATA结构体对象,并填充CRC,datatime等字段,将该数据插入到链表头,从图7中可以看出,该链表头指向的下一个结构对象为数据1。
需要说明的是,在嵌入式设备(即编码器)的内存中,存储资源往往很匮乏,而为了防止异常情况下链表的无限制增大,需要在编码器中增加最大数据管理机制和最老数据管理机制。当然,在实际应用中,也可以根据实际需要分别使用最大数据管理机制或者最老数据管理机制。
(1)缓冲区最大数据管理。
根据编码器的硬件情况预先设置一个最大缓冲区数据个数的阈值,编码器定时的统计链表数据个数,如果超出该阈值,则从链表末尾开始删除超出个数的数据。
(2)缓冲区最老数据管理
根据实际需要保存录像的时间预设定一个最老时间的阈值,编码器从链表末尾开始读出数据的时间,如果当前时间减去数据时间大于所设定的阈值,则需要将该数据从链表中删除。
步骤803,存储设备将处理后数据存储到磁盘,并读取该处理后的数据中的数据和校验码。其中,该处理后的数据为添加了该校验码的数据。例如,在编码器端,该处理前的数据为数据1(即原始数据),校验码为校验码1,处理后的数据为数据2,则数据2包括数据1与校验码1。需要注意的是,当数据2存储到存储设备时,可能会在存储过程中出现故障,从而导致存储到存储设备的数据发生异常,此时,在读取该处理后的数据中的数据和校验码时,读取到的校验码仍为校验码1,而读取到的数据为数据3。
步骤804,存储设备根据读取到的数据生成校验码。为了与编码器获得的校验码进行区分,则该存储设备获得的校验码为校验码2,即本步骤中需要根据数据3生成校验码2。
需要注意的是,存储设备生成校验码2的方式需要与编码器生成校验码1的方式相同。
步骤805,存储设备根据校验码2和校验码1判断数据是否出现异常。如果出现异常时,转到步骤806,否则,转到步骤807中。
具体的,当校验码2和校验码1相同时,则判断数据没有出现异常,而当校验码2和校验码1不同时,则判断数据出现异常。
可以理解的是,校验码1为根据数据1计算得出的校验码,而校验码2为根据数据3计算得出的校验码,如果二者相同时,则说明数据1和数据3相同,数据没有出现异常;而当二者不同时,则说明数据1和数据3不同,数据出现异常。
步骤806,存储设备向编码器发送重传标志和数据的标识信息,以完成异常数据的快速恢复。当然,在实际应用中,也可以向编码器发送重传标志和该数据对应的校验码,并使用该校验码唯一标识异常数据,本发明中不再详加赘述,以向编码器发送重传标志和数据的标识信息为例进行说明。
具体的,当数据出现异常时,需要对数据进行恢复,此时,存储设备需要向编码器发送重传标志和数据的标识信息,以通知编码器将相应的数据重传给该存储设备。其中,该数据的标识信息用于唯一标识相应的数据,例如,校验码等。
当编码器接收到该重传标志后,确定需要对该数据的标识信息所对应的数据进行重传,此时,该编码器需要根据数据的标识信息从缓冲区中查找数据的标识信息对应的数据,并在查找到数据的标识信息对应的数据时,将数据的标识信息对应的数据重新发送给该存储设备。例如,该数据的标识信息为数据2,编码器根据该数据2从缓冲区中查找单向链表,即从单向链表的链表头开始查找,由于该链表头没有对应该数据2的标识,则需要查找该链表头指向的下一个数据对象(即数据1);而由于该数据1仍然没有该数据2的标识,则需要查找该数据1指向的下一个数据对象(即数据2);此时,由于数据2对应了该数据2的标识,则编码器需要将该数据2的信息重新发送给存储设备,从而完成了异常数据的快速恢复。其中,该数据2仍可以为携带了校验码的数据。可以理解的是,将数据2的信息(即数据2以及对应的校验码)重新发送给存储设备后,该存储设备仍可以根据数据2生成校验码,并根据该生成的校验码以及来自编码器的校验码判断存储设备接收的数据2是否出现异常,如果没有出现异常,转到步骤807中执行后续步骤;而如果出现异常,继续执行步骤806中的操作,依此类推,以最终获取到没有出错的数据,并删除缓存区中对应的数据,该处理不再详加说明。
步骤807,存储设备向编码器发送成功标志和数据的标识信息,以删除缓冲区中对应的数据。
具体的,当数据没有出现异常时,则不需要对数据进行恢复,此时,存储设备需要向编码器发送成功标志和数据的标识信息,以通知编码器将相应的数据从缓冲区中删除。
当编码器接收到该成功标志后,确定需要删除该数据的标识信息所对应的数据,此时,该编码器需要根据数据的标识信息从缓冲区中查找数据的标识信息对应的数据,并在查找到数据的标识信息对应的数据时,将数据的标识信息对应的数据删除。例如,该数据的标识信息为数据2,编码器根据该数据2从缓冲区中查找单向链表,即从单向链表的链表头开始查找,由于该链表头没有对应该数据2的标识,则需要查找该链表头指向的下一个数据对象(即数据1);而由于该数据1仍然没有该数据2的标识,则需要查找该数据1指向的下一个数据对象(即数据2);此时,由于数据2对应了该数据2的标识,则编码器需要将该数据2的信息删除。
其中,本发明中的各个步骤可以根据实际需要进行调整。
基于与上述方法同样的发明构思,本发明还提出了一种数据异常时的恢复设备,应用于包括编码器和存储设备的监控系统中,如图10所示,所述设备作为所述监控系统中的编码器,该设备进一步包括:
生成模块10,用于当需要将数据存储到所述存储设备时,根据所述数据生成第一校验码;其中,在生成第一校验码的过程中,所述生成模块10具体用于,根据数据的帧获取每一帧数据对应的第一校验码。
缓冲模块20,用于存储所述数据和所述第一校验码。
需要说明的是,在所述缓冲模块中缓存数据包括通过单向链表在所述缓冲模块中缓存数据,所述单向链表中记录的信息包括数据标识项、数据项和校验码项;所述缓冲模块20具体用于将所述数据的标识信息添加到所述单向链表中的数据标识项,将所述数据添加到所述单向链表中的数据项,并将所述第一校验码添加到所述单向链表中的校验码项。
收发模块30,与所述生成模块10和所述缓冲模块20连接,用于将所述数据和所述第一校验码发送到所述存储设备,并将所述数据和所述第一校验码发送到所述缓冲模块,并由所述缓冲模块进行存储;在所述数据和所述第一校验码发送到所述存储设备的过程中,所述收发模块30具体用于将所述第一校验码添加到对应的每一帧数据中,并将每一帧数据存储到所述存储设备。
另外,需要说明的是,所述收发模块30还用于接收所述存储设备向所述编码器发送的重传标志、所述数据的标识信息或所述第一校验码;或者,接收述存储设备向所述编码器发送的成功标志、所述数据的标识信息或所述第一校验码。
维护模块40,与所述缓冲模块20和所述收发模块30连接,用于当所述存储设备发现将所述数据存储到所述存储设备出现异常时,从所述缓冲模块中获取所述数据,并将所述数据重新发送给所述存储设备上。
本发明中,所述维护模块40具体用于,当接收到重传标志、所述数据的标识信息或所述第一校验码时,根据所述数据的标识信息或所述第一校验码从所述缓冲模块中查找所述数据的标识信息或所述第一校验码对应的数据,并将查找到的所述数据的标识信息或所述第一校验码对应的数据重新发送给所述存储设备;当接收到成功标志、所述数据的标识信息或所述第一校验码时,根据所述数据的标识信息或所述第一校验码从所述缓冲模块中查找所述数据的标识信息或所述第一校验码对应的数据,并将查找到的所述数据的标识信息或所述第一校验码对应的数据删除。
需要说明的是,在即编码器的内存中,存储资源往往很匮乏,而为了防止异常情况下链表的无限制增大,需要在编码器中增加最大数据管理机制和最老数据管理机制。
基于上述情况,本发明中还包括:
链表管理模块50,与缓冲模块20连接,用于管理缓冲模块20中的单向链表。其中,该单向链表的管理具体为:(1)缓冲区最大数据管理;即根据编码器的硬件情况预先设置一个最大缓冲区数据个数的阈值,编码器定时的统计链表数据个数,如果超出该阈值,则从链表末尾开始删除超出个数的数据。(2)缓冲区最老数据管理;即根据实际需要保存录像的时间预设定一个最老时间的阈值,编码器从链表末尾开始读出数据的时间,如果当前时间减去数据时间大于所设定的阈值,则需要将该数据从链表中删除。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于与上述方法同样的发明构思,本发明还提出了一种数据异常时的恢复设备,应用于包括编码器和存储设备的监控系统中,所述编码器中还包括缓冲区,所述缓冲区中存储了数据和对应的校验码,所述设备作为所述监控系统中的存储设备,如图11所示,该设备进一步包括:
收发模块61,用于当需要将数据存储到所述存储设备时,接收来自所述编码器的数据和第一校验码。
存储模块62,与所述收发模块61连接,用于存储所述数据和所述第一校验码。
生成模块63,与所述存储模块62连接,用于根据所述数据生成第二校验码。
判断模块64,与所述存储模块62和所述生成模块63分别连接,用于根据所述第一校验码和所述第二校验码判断所述数据是否异常。在判断所述数据是否异常的过程中,所述判断模块64具体用于判断所述第一校验码和所述第二校验码是否相同,当所述第一校验码和所述第二校验码相同时,判断所述数据没有异常,当所述第一校验码和所述第二校验码不同时,判断所述数据出现异常。
处理模块65,与所述判断模块64连接,用于当判断结果为所述数据异常时,从所述缓冲区重新获取所述数据。
需要注意的是,所述处理模块65具体用于当所述数据出现异常时,向所述编码器发送重传标志、所述数据的标识信息或所述第一校验码,以从所述缓冲区重新获取所述数据;当所述数据没有异常时,向所述编码器发送成功标志、所述数据的标识信息或所述第一校验码,以通知所述编码器删除所述缓冲区中的所述数据。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。