在线内存信息上报方法、装置、设备及存储介质与流程

文档序号:32667223发布日期:2022-12-24 01:19阅读:26来源:国知局
在线内存信息上报方法、装置、设备及存储介质与流程

1.本发明涉及内存管理技术领域,尤其涉及一种在线内存信息上报方法、装置、设备及存储介质。


背景技术:

2.随着智能终端搭载的上应用程序的增多,应用程序占用内存的增大,在线上环境下,内存占用较大的应用没有数据支撑,在无法量化内存使用的情况下,无法进行合理的内存规划,容易因为内存堆积、内存泄露等问题出现应用闪退、卡死、断联的现象,影响用户体验,为了解决该问题,需要获取应用程序的内存信息进行管理及问题定位。
3.现有的ios系统的内存信息管理方法中采用的内存快照(memory graph)方法,仅适用于开发环境,无法在生产环境使用,适用范围相对较小,线上用户在出现内存溢出(out of memory,oom)等偶发性问题时无法获取应用的内存信息,目标应用在线内存调试时缺乏数据支持,在线调试时复现oom问题时的内存情况难度较大,复现时间和人力成本高。


技术实现要素:

4.本发明提供了一种在线内存信息上报方法、装置、设备及存储介质,用于在生产环境中出现oom问题时,获取目标应用的内存信息并确定多个内存节点间的引用关系,在线写入内存快照文件并上报,提高了内存快照方法的适用范围,为目标应用的在线内存调试提供了数据支持,降低了在线调试时的内存情况复现难度,降低了复现时间和人力成本。
5.本发明第一方面提供了一种在线内存信息上报方法,包括:监测目标应用是否发生内存溢出错误;若是,则采集目标应用的多个线程和多个虚拟机区域,每个虚拟机区域对应一个线程;根据预设函数遍历多个虚拟机区域,得到多个内存节点和对应的内存节点信息;对多个内存节点和内存节点信息进行分析,得到内存快照文件;当目标应用满足预设条件时,将内存快照文件上报至服务器。
6.在一种可行的实施方式中,采集目标应用的多个线程和多个虚拟机区域,包括:获取目标应用的多个线程,多个线程包括采集线程和非采集线程;将目标应用中的非采集线程挂起,并调用采集线程对目标应用的多个线程进行信息采集,得到多个虚拟机区域。
7.在一种可行的实施方式中,根据预设函数遍历多个虚拟机区域,得到多个内存节点和对应的内存节点信息,包括:根据预设函数遍历多个虚拟机区域,得到多个动态内存分配区域;根据多个动态内存分配区域,确定每个动态内存分配区域管理的内存节点,得到多个内存节点;解析多个内存节点,得到每个内存节点对应的内存节点信息。
8.在一种可行的实施方式中,对多个内存节点和内存节点信息进行分析,得到内存快照文件,包括:根据多个内存节点和内存节点信息,得到多个内存节点信息,内存节点信息包括指针和内存大小;遍历多个内存节点信息,根据每个内存节点的内存节点信息,得到多个内存对象和内存对象的类型;根据多个内存节点信息、多个内存对象和内存对象的类型,生成内存快照文件。
9.在一种可行的实施方式中,根据多个内存节点信息、多个内存对象和内存对象的类型,生成内存快照文件,包括:遍历多个内存节点信息,将每个内存节点的指针与多个内存对象进行匹配,得到内存对象间的引用关系;将内存对象间的引用关系、多个内存对象和内存大小,写入内存快照文件。
10.在一种可行的实施方式中,在对多个内存节点和内存节点信息进行分析,得到内存快照文件之后,还包括:判断目标应用是否处于在线环境;若否,则将内存快照文件进行压缩,得到内存快照压缩文件,并删除内存快照文件;若是,则在目标应用关闭时,将内存快照文件进行压缩,得到内存快照压缩文件,并删除内存快照文件;判断目标应用是否满足上报条件,若是,则将内存快照压缩文件上报至服务器。
11.在一种可行的实施方式中,在将内存快照压缩文件上报至服务器之后,还包括:判断内存快照压缩文件上报是否成功,或上报次数是否大于预设次数;若是,则删除内存快照压缩文件;若否,则当目标应用满足上报条件时,上报内存快照压缩文件。
12.本发明第二方面提供了一种在线内存信息上报装置,包括:监测模块,用于监测目标应用是否发生内存溢出错误;获取模块,用于若是,则采集目标应用的多个线程和多个虚拟机区域,每个虚拟机区域对应一个线程;第一处理模块,用于根据预设函数遍历多个虚拟机区域,得到多个内存节点和对应的内存节点信息;分析模块,用于对多个内存节点和内存节点信息进行分析,得到内存快照文件;上报模块,用于当目标应用满足预设条件时,将内存快照文件上报至服务器。
13.在一种可行的实施方式中,获取模块具体用于:获取目标应用的多个线程,多个线程包括采集线程和非采集线程;将目标应用中的非采集线程挂起,并调用采集线程对目标应用的多个线程进行信息采集,得到多个虚拟机区域。
14.在一种可行的实施方式中,第一处理模块具体用于:根据预设函数遍历多个虚拟机区域,得到多个动态内存分配区域;根据多个动态内存分配区域,确定每个动态内存分配区域管理的内存节点,得到多个内存节点;解析多个内存节点,得到每个内存节点对应的内存节点信息。
15.在一种可行的实施方式中,分析模块具体包括:解析单元,用于根据多个内存节点和内存节点信息,得到多个内存节点信息,内存节点信息包括指针和内存大小;确定单元,用于遍历多个内存节点信息,根据每个内存节点的内存节点信息,得到多个内存对象和内存对象的类型;生成单元,用于根据多个内存节点信息、多个内存对象和内存对象的类型,生成内存快照文件。
16.在一种可行的实施方式中,生成单元具体用于遍历多个内存节点信息,将每个内存节点的指针与多个内存对象进行匹配,得到内存对象间的引用关系;将内存对象间的引用关系、多个内存对象和内存大小,写入内存快照文件。
17.在一种可行的实施方式中,一种在线内存信息上报装置,还包括:判断模块,用于判断目标应用是否处于在线环境;若否,则将内存快照文件进行压缩,得到内存快照压缩文件,并删除内存快照文件;若是,则在目标应用关闭时,将内存快照文件进行压缩,得到内存快照压缩文件,并删除内存快照文件;判断目标应用是否满足上报条件,若是,则将内存快照压缩文件上报至服务器。
18.在一种可行的实施方式中,一种在线内存信息上报装置,还包括:第二处理模块,
用于判断内存快照压缩文件上报是否成功,或上报次数是否大于预设次数;若是,则删除内存快照压缩文件;若否,则当目标应用满足上报条件时,上报内存快照压缩文件。
19.本发明第三方面提供了一种在线内存信息上报设备,包括:存储器和至少一个处理器,存储器中存储有指令;至少一个处理器调用存储器中的指令,以使得在线内存信息上报设备执行上述的在线内存信息上报方法。
20.本发明的第四方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的在线内存信息上报方法。
21.本发明提供的技术方案中,监测目标应用是否发生内存溢出错误;若是,则采集目标应用的多个线程和多个虚拟机区域,每个虚拟机区域对应一个线程;根据预设函数遍历多个虚拟机区域,得到多个内存节点和对应的内存节点信息;对多个内存节点和内存节点信息进行分析,得到内存快照文件;当目标应用满足预设条件时,将内存快照文件上报至服务器。本发明实施例中,在线生成内存快照文件并上报,快速分析、定位、统计由于内存堆积、内存泄露等导致的内存溢出问题,能识别实际的内存使用场景,提高内存问题排查的准确性,提高内存问题排查方法的适用范围。
附图说明
22.图1为本发明实施例中在线内存信息上报方法的一个实施例示意图;
23.图2为本发明实施例中在线内存信息上报方法的另一个实施例示意图;
24.图3为本发明实施例中在线内存信息上报装置的一个实施例示意图;
25.图4为本发明实施例中在线内存信息上报装置的另一个实施例示意图;
26.图5为本发明实施例中在线内存信息上报设备的一个实施例示意图。
具体实施方式
27.本发明提供了一种在线内存信息上报方法、装置、设备及存储介质,用于在线生成内存快照文件并上报,快速分析、定位、统计由于内存堆积、内存泄露等导致的内存溢出问题,能识别实际的内存使用场景,提高内存问题排查的准确性,提高内存问题排查方法的适用范围。
28.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中在线内存信息上报方法的一个实施例包括:
30.101、监测目标应用是否发生内存溢出错误。
31.可以理解的是,本发明的执行主体可以为在线内存信息上报装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以终端为执行主体为例进行说明。
32.终端通过在目标应用中设置监控函数,获取目标应用的内存操作信息,操作信息包括申请内存、分配内存、释放内存,目标应用根据多个线程的运行需求进行通过动态内存分配(memory allocation,malloc)为目标应用的多个线程分配动态内存分配区域(memory allocation zone,malloc_zone),以使应用完成多种功能,当应用发生异常时,一般为一个或部分线程出现异常,将发生异常的线程视为目标线程或者根据实际业务场景确定目标线程,在目标线程的分配内存小于申请内存时,则判断发生内存溢出错误。
33.102、若是,则采集目标应用的多个线程和多个虚拟机区域,每个虚拟机区域对应一个线程。
34.终端在目标应用出现内存溢出错误时,获取并挂起目标应用中的多个线程,通过采集线程对目标应用的多个线程进行采集,得到多个虚拟机区域,每个虚拟机区域对应一个线程。
35.本技术中的虚拟机区域(virtual machine region,vm region)包含一段连续的虚拟内存页,vm region包含已经被映射到物理内存的虚拟内存页列表,所有内存页所占区域的大小、内存页在硬盘和物理内存中交换问题、内存区域的属性等信息,通过vm region的定位可以确定发生内存溢出的线程。
36.103、根据预设函数遍历多个虚拟机区域,得到多个内存节点和对应的内存节点信息。
37.终端通过根据预设函数遍历目标应用多个vm region,得到目标应用的在发生oom错误时多个内存节点和对应的内存节点信息。通过对多个内存节点之间的引用关系、内存大小分析可以准确定位oom问题。
38.一般情况下,每个vm region作为一个单独的内存节点存在,内存节点分为栈区、堆区、全局区、文字常量区、程序代码区,堆区是目标应用多个线程共享的内存区域,ios系统中采用的结构体为libmalloc,通过分析该堆区中所有动态内存分配区域的内存节点引用关系、内存关小可以定位生产环境下的oom问题。
39.在一种可行的实施方式中,终端通过预设的函数获取libmalloc内部所有的内存分区zone,遍历每个zone中管理的内存节点,每个zone中包含多个内存节点,通过vm_region_submap_info_64结构体得到堆内存管理的所有内存节点信息,内存节点信息包括指针和内存大小,本技术中指针指的是内存地址,通过脏内存dirty和交换内存swapped内存页数表示该vm region的真实物理内存使用内存大小。
40.104、对多个内存节点和内存节点信息进行分析,得到内存快照文件。
41.终端选定目标线程对应的内存节点作为目标内存节点,对多个内存节点和内存节点信息进行分析,确定目标内存节点引用的关联节点、关联节点的对象类型、对象数目、内存大小,写入内存快照文件。
42.105、当目标应用满足预设条件时,将内存快照文件上报至服务器。
43.终端将挂起的非采集线程恢复,判断目标应用是否满足预设条件,当目标应用满足预设条件时,将内存快照文件上报至服务器。预设条件包括目标应用是否处于在线环境,且目标应用是否满足上报条件,其中,上报条件包括内存快照文件是否上报成功和内存快照文件上报次数是否达到阈值。
44.在一种可行的实施方式中,当目标应用处于后台运行环境时,此时进行内存快照
文件上报对用户使用影响较小,在满足上报条件时,终端将内存快照文件转换目标格式和/或目标大小的上报文件,上报至服务器;当目标应用处于前端运行环境时,为避免上报消耗的流量和占用内存影响用户使用,在用户退出目标应用时,再将内存快照文件进行处理和上报。
45.服务器获取终端上传的内存快照文件后,进行在线内存快照分析,复原目标应用出现oom错误的内存情况,在线内存快照分析包括泄露分析、支配树生成、类簇生成、参照图生成,根据分析结果进行针对性调试。
46.本发明实施例中,在生产环境中出现oom问题时,获取目标应用的内存信息,在线写入内存快照文件并上报,提高内存快照方法的适用范围,为目标应用的在线内存调试提供数据支持,降低在线调试时的内存情况复现难度,降低复现时间和人力成本。
47.请参阅图2,本发明实施例中在线内存信息上报方法的另一个实施例包括:
48.201、监测目标应用是否发生内存溢出错误。
49.目标应用通过多线程执行用户的不同任务时,由于线程间的内存调用,或目标应用于其他应用的内存调用、目标应用与终端的适配性等问题,容易导致内存溢出,而出现卡顿或者闪退等异常现象,根据业务场景将目标应用的多个线程分为主线程和子线程,将发生异常的主线程确定为目标线程。
50.终端在目标应用启动、退出或者相应系统事件时发生卡顿,判定卡顿时间是否超过预设时间阈值,若是,则根据目标应用多个线程的调用栈生成日志,并判断目标线程在预设时间周期内是否进入下一个活跃状态,若是,则排除卡死崩溃并删除日志,若否,则判定卡死崩溃并调取系统日志,判断是否存在删除sigkill信号,若是,则判定系统出现oom错误。
51.在一种可行的实施方式中,判断目标线程在预设时间周期内是否进入下一个活跃状态,包括:在预设时间周期内,根据配置参数抓取目标线程的调用栈,得到目标线程随着时间变化的函数调用栈,若预设的周期内的函数调用栈不变,则判定目标线程未进入下一个活跃状态,配置参数包括抓取等待时间间隔和抓取次数,可以根据实际情况设置。
52.202、若是,则采集目标应用的多个线程和多个虚拟机区域,每个虚拟机区域对应一个线程。
53.终端获取目标应用的多个线程,多个线程包括采集线程和非采集线程;将目标应用中的非采集线程挂起,并调用采集线程对目标应用的多个线程进行信息采集,得到多个虚拟机区域。
54.本技术中根据线程用途,将目标应用的多个线程分为采集线程和非采集线程,采集线程用于采集目标应用的多个线程的内存操作信息,非采集线程为目标应用的多个线程中发挥其他功能的剩余线程,为非采集线程继续运作导致内存变化,从而导致采集线程采集困难,在出现oom错误时,先将目标应用内的非采集线程挂起,再启动采集线程进行采集操作。
55.203、根据预设函数遍历多个虚拟机区域,得到多个内存节点和对应的内存节点信息。
56.在一种可行的实施方式中,根据预设函数遍历多个虚拟机区域,得到多个动态内存分配区域;根据多个动态内存分配区域,确定每个动态内存分配区域管理的内存节点,得
到多个内存节点;解析多个内存节点,得到每个内存节点对应的内存节点信息。
57.204、对多个内存节点和内存节点信息进行分析,得到内存快照文件。
58.终端根据多个内存节点和内存节点信息,得到多个内存节点信息,内存节点信息包括指针和内存大小;遍历多个内存节点信息,根据每个内存节点的内存节点信息,得到多个内存对象和内存对象的类型;根据多个内存节点信息、多个内存对象和内存对象的类型,生成内存快照文件。
59.本技术中,每个内存节点包含一个内存对象和一个指向下一个内存对象的指针,内存节点的类型即内存对象的类型,内存对象的类型规定了内存对象可以执行的操作和具备的属性,内存对象的类型根据不同的语言接口分为oc/swift对象、c++对象和buffer等。将类型相同的内存对象确定为一类,每个类中包含多个类型相同的内存对象,每个内存对象对应一个类的实例,类为一种数据类型,包括objective-c、swift、c++和buffer等。
60.在一种可行的实施方式中,根据多个内存节点信息、多个内存对象和内存对象的类型,生成内存快照文件,包括:遍历多个内存节点信息,将每个内存节点的指针与多个内存对象进行匹配,得到内存对象间的引用关系;将内存对象间的引用关系、多个内存对象和内存大小,写入内存快照文件。
61.在目标线程对应的虚拟机区域中,确定目标内存节点,若目标内存节点与其他内存节点间存在引用关系,将存在引用关系的其他内存节点确定为关联内存节点,解析目标内存节点信息,得到指针,指针中存储指向关联内存节点中对象的指针值,通过分析多个内存节点,可以构建对象间的引用关系,即内存节点的引用关系,分析其引用关系可实现内存问题的定位。
62.205、当目标应用满足预设条件时,将内存快照文件上报至服务器。
63.终端在得到内存快照文件后,将挂起的非采集线程恢复,判断目标应用是否满足预设条件,若是,则将内存快照文件上报至服务器,若否,则将内存快照文件缓存,择时上报。
64.在一种可行的实施方式中,在对多个内存节点和内存节点信息进行分析,得到内存快照文件之后,还包括:判断目标应用是否处于在线环境;若否,则将内存快照文件进行压缩,得到内存快照压缩文件,并删除内存快照文件;若是,则在目标应用关闭时,将内存快照文件进行压缩,得到内存快照压缩文件,并删除内存快照文件;判断目标应用是否满足上报条件,若是,则将内存快照压缩文件上报至服务器。
65.在一种可行的实施方式中,在将内存快照压缩文件上报至服务器之后,还包括:判断内存快照压缩文件上报是否成功,或上报次数是否大于预设次数;若是,则删除内存快照压缩文件;若否,则当目标应用满足上报条件时,上报内存快照压缩文件。
66.本发明实施例中,在生产环境中出现oom问题时,获取目标应用的内存信息,在线写入内存快照文件并上报,提高内存快照方法的适用范围,为目标应用的在线内存调试提供了数据支持,降低在线调试时的内存情况复现难度,降低复现时间和人力成本。
67.上面对本发明实施例中在线内存信息上报方法进行了描述,下面对本发明实施例中在线内存信息上报装置进行描述,请参阅图3,本发明实施例中在线内存信息上报装置一个实施例包括:
68.监测模块301,用于监测目标应用是否发生内存溢出错误;
69.获取模块302,用于若是,则采集目标应用的多个线程和多个虚拟机区域,每个虚拟机区域对应一个线程;
70.第一处理模块303,用于根据预设函数遍历多个虚拟机区域,得到多个内存节点和对应的内存节点信息;
71.分析模块304,用于对多个内存节点和内存节点信息进行分析,得到内存快照文件;
72.上报模块305,用于当目标应用满足预设条件时,将内存快照文件上报至服务器。
73.本发明实施例中,在生产环境中出现oom问题时,获取目标应用的内存信息,在线写入内存快照文件并上报,提高内存快照方法的适用范围,为目标应用的在线内存调试提供了数据支持,降低在线调试时的内存情况复现难度,降低复现时间和人力成本。
74.请参阅图4,本发明实施例中在线内存信息上报装置的另一个实施例包括:
75.监测模块301,用于监测目标应用是否发生内存溢出错误;
76.获取模块302,用于若是,则采集目标应用的多个线程和多个虚拟机区域,每个虚拟机区域对应一个线程;
77.第一处理模块303,用于根据预设函数遍历多个虚拟机区域,得到多个内存节点和对应的内存节点信息;
78.分析模块304,用于对多个内存节点和内存节点信息进行分析,得到内存快照文件;
79.上报模块305,用于当目标应用满足预设条件时,将内存快照文件上报至服务器。
80.可选的,获取模块302具体用于:获取目标应用的多个线程,多个线程包括采集线程和非采集线程;将目标应用中的非采集线程挂起,并调用采集线程对目标应用的多个线程进行信息采集,得到多个虚拟机区域。
81.可选的,第一处理模块303具体用于:根据预设函数遍历多个虚拟机区域,得到多个动态内存分配区域;根据多个动态内存分配区域,确定每个动态内存分配区域管理的内存节点,得到多个内存节点;解析多个内存节点,得到每个内存节点对应的内存节点信息。
82.可选的,分析模块304具体包括:
83.解析单元3041,用于根据多个内存节点和内存节点信息,得到多个内存节点信息,内存节点信息包括指针和内存大小;
84.确定单元3042,用于遍历多个内存节点信息,根据每个内存节点的内存节点信息,得到多个内存对象和内存对象的类型;
85.生成单元3043,用于根据多个内存节点信息、多个内存对象和内存对象的类型,生成内存快照文件。
86.可选的,生成单元3043具体用于遍历多个内存节点信息,将每个内存节点的指针与多个内存对象进行匹配,得到内存对象间的引用关系;将内存对象间的引用关系、多个内存对象和内存大小,写入内存快照文件。
87.可选的,一种在线内存信息上报装置,还包括:
88.判断模块306,用于判断目标应用是否处于在线环境;若否,则将内存快照文件进行压缩,得到内存快照压缩文件,并删除内存快照文件;若是,则在目标应用关闭时,将内存快照文件进行压缩,得到内存快照压缩文件,并删除内存快照文件;判断目标应用是否满足
上报条件,若是,则将内存快照压缩文件上报至服务器。
89.可选的,一种在线内存信息上报装置,还包括:
90.第二处理模块307,用于判断内存快照压缩文件上报是否成功,或上报次数是否大于预设次数;若是,则删除内存快照压缩文件;若否,则当目标应用满足上报条件时,上报内存快照压缩文件。
91.本发明实施例中,在生产环境中出现oom问题时,获取目标应用的内存信息,在线写入内存快照文件并上报,提高内存快照方法的适用范围,为目标应用的在线内存调试提供了数据支持,降低在线调试时的内存情况复现难度,降低复现时间和人力成本。
92.上面图3和图4从模块化功能实体的角度对本发明实施例中的在线内存信息上报装置进行详细描述,下面从硬件处理的角度对本发明实施例中在线内存信息上报设备进行详细描述。
93.图5是本发明实施例提供的一种在线内存信息上报设备的结构示意图,该在线内存信息上报设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对在线内存信息上报设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在在线内存信息上报设备500上执行存储介质530中的一系列指令操作。
94.在线内存信息上报设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如windows serve,mac os x,unix,linux,freebsd等等。本领域技术人员可以理解,图5示出的在线内存信息上报设备结构并不构成对在线内存信息上报设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
95.本发明还提供一种在线内存信息上报设备,计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的在线内存信息上报方法的步骤。
96.本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行在线内存信息上报方法的步骤。
97.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
98.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机
存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
99.以上,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1