一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

应用启动异常的检测方法、介质、装置和计算设备与流程

2022-02-20 06:43:00 来源:中国专利 TAG:


1.本公开的实施方式涉及异常检测技术领域,更具体地,本公开的实施方式涉及应用启动异常的检测方法、介质、装置和计算设备。


背景技术:

2.本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.随着互联网的发展,各类应用程序(application,app)也应运而生,为了满足使用者的使用需求,app的功能也越来越多,为用户的生活和工作来来了极大的便利,同时也对app的稳定性要求越来越高,当app出现启动异常等程序故障时,会严重影响用户的使用体验。
4.相关技术中,可以在app启动的同时,设置延时任务,从而通过判断延时任务的执行情况来确定app是否出现启动异常。然而,该延时任务的延时时长是通过人工经验设置的,其并不准确,会导致app启动异常的判断结果不准确。


技术实现要素:

5.本公开实施方式提供一种应用启动异常的检测方法、介质、装置和计算设备,用于解决目前的app中启动异常的判断结果不准确的技术问题。
6.在本公开实施方式的第一方面中,提供了一种应用启动异常的检测方法,应用于终端设备,终端设备上安装有目标应用,检测方法包括:响应于用于启动目标应用的触发操作,检测目标应用是否发生异常事件,并确定目标应用的目标非透明页面是否曝光;若检测到目标应用的异常事件,且确定目标非透明页面未曝光,则向服务器发送用于指示异常事件为启动异常的异常信息。
7.在本公开的一个实施例中,检测目标应用是否发生异常事件,包括:响应于用于启动目标应用的触发操作,注册异常接收器并执行目标应用的初始化进程;通过异常接收器接收初始化进程中的异常事件;其中,目标应用的初始化进程包括以下至少一种:功能初始化进程、第三方库的初始化进程或者页面绘制进程。
8.在一种可能的实施方式中,确定目标应用的目标非透明页面是否曝光,包括:确定目标应用的页面绘制进程中,预设页面的曝光通知代码的执行次数;响应于执行次数大于或等于预设次数,且目标应用的目标页面为非透明页面,确定目标应用的目标非透明页面曝光;其中,预设页面中通过面向切面编程aop技术插入了曝光通知代码,若曝光通知代码被执行,则表征对应的预设页面曝光。
9.在一种可能的实施方式中,确定目标应用的目标非透明页面是否曝光,包括:读取native中存储的标志信息;若确定标志信息的值为第一预设值,则确定目标应用的目标非透明页面曝光。
10.在一种可能的实施方式中,通过如下方式设置标志信息的值:确定目标应用的页
面绘制进程中,预设页面的曝光通知代码的执行次数;响应于执行次数等于预设次数,且目标应用的目标页面为非透明页面,将标志信息的值设置为第一预设值;其中,预设页面中通过aop技术插入了曝光通知代码,若曝光通知代码被执行,则表征预设页面曝光。
11.在一种可能的实施方式中,通过如下方式确定目标应用的目标页面为非透明页面:获取目标页面的根视图背景色值;在背景色值大于背景色阈值时,根据目标页面的透明度,确定曝光页面是否为非透明页面。
12.在一种可能的实施方式中,检测到目标应用的异常事件之后,还包括:根据异常事件的异常类型,获取异常事件对应的日志信息和异常原因,日志信息用于指示启动异常的异常位置;根据异常类型、日志信息和异常原因,获得预设格式的异常信息。
13.在一种可能的实施方式中,日志信息包括堆栈日志和/或系统环境快照信息;异常类型包括以下至少一种:未捕获异常uncaught exception、内存溢出异常omm异常、程序无响应anr异常或者native崩溃。
14.在一种可能的实施方式中,该检测方法还包括:若未检测到目标应用的异常事件,且目标应用的目标非透明页面曝光,则向服务器发送用于指示目标应用正常启动的第一指示信息。
15.在一种可能的实施方式中,该检测方法还包括:若检测到目标应用发生异常事件,且确定目标非透明页面曝光,则向服务器发送用于指示异常事件并非启动异常的第二指示信息。
16.在一种可能的实施方式中,第三方库包括第三方软件开发工具包sdk,第三方sdk用于通过aop技术在目标应用的预设页面中插入曝光通知代码。
17.在本公开实施方式的第二方面中,提供了一种应用启动异常的检测方法,应用于服务器,该检测方法包括:接收至少一个终端设备发送的目标应用的多个异常信息,异常信息为各终端设备检测到目标应用发生异常事件,且确定目标应用的目标非透明页面未曝光时发送的,异常信息用于指示目标应用发生了启动异常;根据异常信息,确定目标应用的启动异常率;根据启动异常率,输出警告信息,警告信息用于指示对目标应用进行优化处理。
18.在一种可能的实施方式中,异常信息包括异常类型、日志信息和异常原因,日志信息用于指示异常事件的异常位置;
19.根据异常信息,确定目标应用的启动异常率,包括以下至少一种:确定各异常类型的异常事件对应的启动异常率;确定各异常原因的异常事件对应的启动异常率;确定各异常位置的异常事件对应的启动异常率。
20.在本公开实施方式的第三方面中,提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现第一方面和/或第二方面的检测方法。
21.在本公开实施方式的第四方面中,提供了一种应用启动异常的检测装置,应用于终端设备,终端设备上安装有目标应用,检测装置包括:检测模块,用于响应于用于启动目标应用的触发操作,检测目标应用是否发生异常事件,并确定目标应用的目标非透明页面是否曝光;处理模块,用于在检测到目标应用的异常事件,且确定目标非透明页面未曝光,则向服务器发送用于指示异常事件为启动异常的异常信息。
22.在一种可能的实施方式中,检测模块具体用于:响应于用于启动目标应用的触发
操作,注册异常接收器并执行目标应用的初始化进程;通过异常接收器接收初始化进程中的异常事件;其中,目标应用的初始化进程包括以下至少一种:功能初始化进程、第三方库的初始化进程或者页面绘制进程。
23.在一种可能的实施方式中,检测模块具体用于:确定目标应用的页面绘制进程中,预设页面的曝光通知代码的执行次数;响应于执行次数大于或等于预设次数,且目标应用的目标页面为非透明页面,确定目标应用的目标非透明页面曝光;其中,预设页面中通过面向切面编程aop技术插入了曝光通知代码,若曝光通知代码被执行,则表征对应的预设页面曝光。
24.在一种可能的实施方式中,检测模块具体用于:读取native中存储的标志信息;若确定标志信息的值为第一预设值,则确定目标应用的目标非透明页面曝光。
25.在一种可能的实施方式中,该检测装置还包括:确定模块,用于确定目标应用的页面绘制进程中,预设页面的曝光通知代码的执行次数;响应于执行次数等于预设次数,且目标应用的目标页面为非透明页面,将标志信息的值设置为第一预设值;其中,预设页面中通过aop技术插入了曝光通知代码,若曝光通知代码被执行,则表征预设页面曝光。
26.在一种可能的实施方式中,检测模块具体用于:获取目标页面的根视图背景色值;在背景色值大于背景色阈值时,根据目标页面的透明度,确定曝光页面是否为非透明页面。
27.在一种可能的实施方式中,该检测装置还包括:获取模块,用于根据异常事件的异常类型,获取异常事件对应的日志信息和异常原因,日志信息用于指示启动异常的异常位置;根据异常类型、日志信息和异常原因,获得预设格式的异常信息。
28.在一种可能的实施方式中,日志信息包括堆栈日志和/或系统环境快照信息;异常类型包括以下至少一种:未捕获异常uncaught exception、内存溢出异常omm异常、程序无响应anr异常或者native崩溃。
29.在一种可能的实施方式中,该检测装置还包括:第一发送模块,用于若未检测到目标应用的异常事件,且目标应用的目标非透明页面曝光,则向服务器发送用于指示目标应用正常启动的第一指示信息。
30.在一种可能的实施方式中,该检测装置还包括:第二发送模块,用于若检测到目标应用发生异常事件,且确定目标非透明页面曝光,则向服务器发送用于指示异常事件并非启动异常的第二指示信息。
31.在一种可能的实施方式中,第三方库包括第三方软件开发工具包sdk,第三方sdk用于通过aop技术在目标应用的预设页面中插入曝光通知代码。
32.在本公开实施方式的第五方面中,提供了一种应用启动异常的检测装置,应用于服务器,检测装置包括:接收模块,用于接收至少一个终端设备发送的目标应用的多个异常信息,异常信息为各终端设备检测到目标应用发生异常事件,且确定目标应用的目标非透明页面未曝光时发送的,异常信息用于指示目标应用发生了启动异常;确定模块,用于根据异常信息,确定目标应用的启动异常率;输出模块,用于根据启动异常率,输出警告信息,警告信息用于指示对目标应用进行优化处理。
33.在一种可能的实施方式中,异常信息包括异常类型、日志信息和异常原因,日志信息用于指示异常事件的异常位置;
34.确定模块具体用于执行如下至少一种:确定各异常类型的异常事件对应的启动异
常率;确定各异常原因的异常事件对应的启动异常率;确定各异常位置的异常事件对应的启动异常率。
35.在本公开实施方式的第六方面中,提供了一种计算设备,包括:至少一个处理器和存储器;存储器存储计算机执行指令;至少一个处理器至少存储器存储的计算机执行指令,使得至少一个处理器执行第一方面和/或第二方面提供的检测方法。
36.在本公开实施方式的第七方面中,提供了一种计算机程序产品,该计算机程序产品包括计算机程序;计算机程序被执行时实现第一方面和/或第二方面的检测方法。
37.本公开实施方式提供的应用启动异常的检测方法、介质、装置和计算设备,响应于用于启动目标应用的触发操作,检测目标应用是否发生异常事件,并确定目标应用的目标非透明页面是否曝光;若检测到目标应用的异常事件,且确定目标非透明页面未曝光,则向服务器发送用于指示异常事件为启动异常的异常信息。本公开实施例的方案中,通过检测异常事件和目标非透明页面的是否曝光,来检测启动异常,而无需通过人工经验设置延时任务,可以显著地提升检测启动异常的准确性,进而避免非启动异常被上报,减少人工筛选启动异常的步骤,降低目标应用的维护成本。
附图说明
38.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
39.图1为本公开实施例提供的一种应用场景示意图;
40.图2为本公开实施例提供的检测方法的交互示意图一;
41.图3为本公开实施例提供的检测方法的流程示意图;
42.图4为本公开实施例提供的检测方法的交互示意图二;
43.图5为本公开实施例提供的程序产品示意图;
44.图6为本公开实施例提供的检测装置的结构示意图一;
45.图7为本公开实施例提供的检测装置的结构示意图二;
46.图8为本公开实施例提供的计算设备的结构示意图。
47.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
48.下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
49.本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
50.根据本公开的实施方式,提出了一种应用启动异常的检测方法、介质、装置和计算设备。
51.在本文中,需要理解的是,所涉及的术语含义如下:
52.未捕获异常(uncaught exception):应用所在操作系统平台的编程语言在执行过程中发生了异常,且未被开发者捕获,此时会导致应用崩溃。其中,对于android系统,未捕获异常例如是java/kotlin语言的异常;对于ios系统,未捕获异常例如是objectc/swift语言的异常。
53.内存溢出异常(outofmemory,oom):指应用内存溢出事件,应用进程内无法再分配内存而导致应用崩溃,对于android系统,是虚拟机内存溢出。
54.程序无响应异常(applicationnotrespond,anr):应用无响应事件,对于android和ios系统,都是应用主线程卡死导致用户看到界面冻结,当发生anr时,应用会被系统杀死。
55.native崩溃:native层发生崩溃而被系统杀。对于android系统,native层是c/c 层;对于ios系统,native层是c层。其中,native崩溃与应用未捕获的异常的区别是:应用编程语言层面是应用操作系统平台指定的高级编程语言(如android是java/kotlin语言,ios系统是objectc/swift语言),而native层处于更底层,是直接面向操作系统内核层面的,native层崩溃一般是因操作系统内核里执行发生错误而向应用进程发送操作系统预定义的sig
×××
信号导致。
56.启动异常:应用启动阶段,发生的“未捕获的异常、oom、anr、native崩溃”的以上异常之一导致应用没有完成启动过程就立即闪退的启动失败现象,造成用户无法进入应用。
57.其中,应用启动分为冷启动和热启动,冷启动需要重新创建应用进程,会执行应用进程创建中较多第三方库的初始化逻辑,而热启动是应用从后台回到前台,应用进程不需创建,因此冷启动的时间远大于热启动的时间,生产环境中的启动失败大部分是冷启动异常,本公开的方案可涵盖冷启动和热启动。
58.sdk:可独立完成某种功能的代码模块或库,对于android是jar包和aar包,对于ios是静态库、动态库、pod引用。
59.页面:系统用于表示手机屏幕内用户可见的界面的程序载体,对于android系统,页面是activity类,对于ios系统,页面是uiviewcontroller类。
60.此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
61.发明概述
62.随着互联网的发展,各类应用程序(application,app)也应运而生,为了满足使用者的使用需求,app的功能也越来越多,为用户的生活和工作来来了极大的便利,同时也对app的稳定性要求越来越高,当app出现启动异常等程序故障时,会严重影响用户的使用体验。
63.其中,启动异常是应用启动阶段发生的异常,由于大型应用往往会引入各种第三方库,且启动阶段会包含较多第三方sdk的初始化,而第三方sdk里的代码都是黑盒,很难控制代码质量,是启动异常的主要元凶,除此之外,应用启动过程中的其它子阶段也可能会造成启动异常。
64.启动异常是所有应用异常中最严重的程序故障,用户可能会因无法打开app而直
接卸载该app,从而造成用户流失,因此,如何检测启动异常是如今亟需解决的问题。
65.相关技术中,可以在app启动的同时,设置延时任务,从而通过判断延时任务的执行情况来确定app是否出现启动异常。具体的,在应用启动时,先设定一个启动标记位,并向主线程投递一个复位该启动标记位的延时任务,若应用正常启动,该延时任务将成功复位启动标记位,若应用发生启动异常,该延时任务未得到执行,则标记位未复位,若同一终端设备的同一应用连续多次启动均发生了启动标记位未正确复位的情况,则认为检测到了启动异常,进入安全模式并上报启动异常。然而,本发明人发现,现有方案有以下不足:
66.1、上述方案中,需设定经验的延时任务的延时时长,然而,由于应用主线程的消息循环机制,延时任务真正得到执行的时刻并非准确的延时时长,应用启动时主线程往往会插入大量系统消息或异步消息,延时任务执行的时刻无法预知,甚至可能会因为主线程阻塞而延迟到数倍于延时时长后的时刻才得到执行。若将延时时长设定的太短,可能在应用启动进程初始化完成前就复位了标记位,从而导致监控未覆盖到整个应用启动过程。因此有可能发生如下情况:由于主线程繁忙,当延时任务即将执行前的一刻,可能用户早已完成了应用的启动初始化,并进入了与启动路径无关的较深层级的页面路径,若在这些与启动路径无关的较深层级的页面遇到了异常而退出,也会造成标记位未正确复位,这些实际上是属于非启动异常,也会错误统计为启动异常,这样会造成启动异常情况统计的不准确。
67.2、由于用户在与启动路径无关的较深层级的页面遇到的异常也可能会被监控到,从而被认定为启动异常,因此,需要设定一个经验阈值来对上报进行过滤,即在异常次数达到阈值参数时,进行上报,当经验阈值不准确时,会上报过多的非启动异常。
68.3、当检测到启动异常,一般会将异常日志进行上报,再由开发人员介入,以对日志进行分析、定位,最后下发新版本或热补丁修复。若现有检测方法不准确,用户进入了与启动路径无关的较深层级的页面路径的异常也被上报,这样会干扰开发对启动异常问题的分析,需要额外增加一道由开发人工筛选有效启动异常日志的环节,浪费了人力成本。
69.4、上述异常检测方法,只能笼统地上报发生了一次启动异常,虽然可以依赖于人工后置环节逐个对日志进行排查和分析来推断启动异常的分类,但无法在前置上报阶段(即在目标应用发生崩溃的时刻,故障上报之前)就对启动异常进行分类,分类统计和归因出启动异常率指标也是不准确的,无法作为后续优化效果的宏观衡量标准。
70.另外,当检测到启动异常,为了避免用户无法打开应用,一般的处理方式是不执行应用初始化流程,进入应用安全模式。若现有检测方法不准确,即用户可能偶然进了与启动路径无关的较深层级的页面遇到了异常而退出(如在用户正好多次在启动开屏页点击广告跳转到广告详情页发生了异常,但在开屏点击广告到广告详情页发生的崩溃,并不属于应用正常使用的核心场景路径的崩溃),会错误引导用户到安全模式,而安全模式只是协助用户反馈和故障排查用途。
71.有鉴于此,本公开实施例提供一种应用启动异常的检测方法、介质、装置和计算设备,响应于用于启动目标应用的触发操作,检测目标应用是否发生异常事件,并确定目标应用的目标非透明页面是否曝光;若检测到目标应用的异常事件,且确定目标非透明页面未曝光,则向服务器发送用于指示异常事件为启动异常的异常信息。本方案中,通过检测异常事件和目标非透明页面的是否曝光,来检测启动异常,而无需通过人工经验设置延时任务,可以显著地提升检测启动异常的准确性,进而避免非启动异常被上报,减少了人工筛选启
动异常的步骤,可以降低目标应用的维护成本。
72.其中,方法和装置是基于同一申请构思的,由于方法和装置解决问题的原理相似,因此装置和方法的实施可以相互参见,重复之处不再赘述。
73.在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。
74.应用场景总览
75.首先参考图1,图1为本公开实施例提供的一种应用场景示意图。如图1所示,该应用场景中涉及的设备包括:服务器101和终端设备102。
76.其中,终端设备102上安装有目标应用,在该目标应用的启动过程中,通过终端设备101来检测目标应用启动过程中的启动异常,并将异常信息发送至服务器101,以通过服务器101根据异常信息对该目标应用进行优化处理。
77.其中,服务器101可以为单个服务器,也可以为服务器集群,可以为分布式服务器,也可以为集中式服务器,还可以为云服务器。
78.终端102可以是个人数字处理(personal digital assistant,简称pda)设备、具有无线通信功能的手持设备(例如智能手机、平板电脑)、计算设备(例如个人电脑(personal computer,简称pc))、车载设备、可穿戴设备(例如智能手表、智能手环)、智能家居设备(例如智能显示设备)等。
79.示例性方法
80.下面结合图1所示的应用场景,参考图2~5来描述根据本公开示例性实施方式的用于应用启动异常的检测方法。需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
81.其中,本公开的实施方式适用的执行设备为计算设备,如上述的终端和服务器。
82.图2为本公开实施例提供的检测方法的交互示意图一。应用于终端设备和服务器,其中,终端设备上安装有目标应用,如图2所示,该检测方法可以包括如下步骤:
83.s201、终端设备响应于用于启动目标应用的触发操作,检测目标应用是否发生异常事件,并确定目标应用的目标非透明页面是否曝光。
84.s202、若检测到目标应用的异常事件,且确定目标非透明页面未曝光,则向服务器发送用于指示异常事件为启动异常的异常信息。
85.其中,目标非透明页面为应用启动过程中用户可以看到的第一个页面。
86.在实际应用中,对于android系统和ios系统来说,android系统的页面通常为基于activity的页面,ios系统的页面是基于uiviewcontroller的页面,虽然activity和uiviewcontroller提供了页面的生命周期,但二者也可以是全透明的页面,在某些特定情况下执行一些辅助代码时,其页面对用户并不可见,因此,目标非透明页面为应用启动过程中用户可以看到的第一个页面。应理解,其他系统与之类似,本公开实施例不做一一赘述。
87.需要说明的是,在目标应用的启动过程中,会进行应用进程的创建和初始化,在目标非透明页面被曝光时,则认为是完成了应用启动操作的时刻,也即用户看到的第一个页面曝光时,若还未发生异常事件,则说明目标应用顺利启动;相应的,若用户看到的第一个页面未曝光,且检测到了异常事件,则说明发生了启动异常。另外,在用户看到的第一个页
面曝光之后发生的异常事件,不属于启动异常。
88.本公开实施例中,对于触发操作的类型不做具体限定,示例性的,触发操作可以包括以下几种类型:
89.1)点击终端设备界面中目标应用的图标;
90.2)长按目标应用的图标,通过弹出的快捷菜单来打开目标应用中的工具;
91.3)点击通知栏内该目标应用的推送消息;
92.4)在浏览器内直接打开目标应用对外提供的链接;
93.5)在应用提供授权登录的其他应用中,打开该目标应用;
94.6)通过其它应用唤起目标应用内提供的某种服务等等。
95.本步骤中,终端设备在检测到上述任一种触发操作时,应用开始启动,此时,开始检测启动过程中的异常事件,同时检测用户看到的第一个页面(即目标非透明页面)是否被曝光。
96.一些实施例中,由于上述触发操作的方式不同,其启动目标应用的路径不同,且不同路径对应的目标非透明页面也不同。示例性的,通过点击终端设备界面中目标应用的图标启动目标应用时,目标非透明页面通常为该目标应用的主页;而通过点击通知栏内该目标应用的推送消息启动该目标应用时,目标非透明页面通常为目标应用的消息显示界面。
97.因此,在确定目标非透明页面是否曝光时,可以通过埋点的方式确定目标非透明页面是否曝光,具体的,确定用于启动该目标应用的所有启动路径,根据这些启动路径,确定目标应用启动后用户可能看到所有第一个页面,并对这些页面进行逐一标记埋点。
98.当检测到启动目标应用的触发操作时,即可通过埋点的执行情况,确定当前触发操作的对应路径,再判断该路径对应的目标非透明页面(用户看到的第一个)是否曝光。
99.进一步的,若在启动过程中检测到了异常事件,且用户可以看到的第一个页面未曝光(即目标非透明页面未曝光),则说明该异常事件为启动异常。
100.本方案中,通过对目标应用的所有启动路径进行逐一埋点标记,使得无论通过何种触发操作来启动该目标应用,都可以准确的判断目标应用的目标非透明页面是否被曝光,进而准确的确定该目标应用是否发生启动异常。
101.在一个实施例中,可以将该启动异常的异常信息发送至服务器,以通过服务器对该目标应用进行优化处理。
102.其中,异常信息可以包括以下至少一种:异常类型、日志信息和异常原因等等,其中,日志信息用于指示异常事件的异常位置。
103.优化处理例如是:服务器根据异常信息向开发人员输出警告信息,以提醒开发人员进行优化处理,或者,由服务器根据异常信息对目标应用进行在线优化处理等等。
104.在其他实施例中,服务器在输出警告信息的同时,还可以根据异常信息向开发人员提供相应解决措施,或者,根据异常信息,直接对目标应用相应的应急处理等,至于其他方式,本公开实施例不做一一赘述。
105.接下来结合步骤s203~s204对服务器输出警告信息的方案进行详细说明:
106.s203、服务器根据异常信息,确定目标应用的启动异常率。
107.相应的,服务器接收多个终端设备发送的该目标应用的异常信息,并确定该目标应用的启动异常率。
108.对于启动异常率的类型,本公开实施例也不做限定,例如,启动异常率可以为以下至少一种:
109.1)异常类型对应的启动异常率,即各异常类型对应的启动异常次数与总启动异常次数的比值;
110.其中,总启动异常次数为服务器接收到的该目标应用的所有异常事件的总数量,这些异常事件可以为同一个终端发送的,也可以为多个终端发送的,本实施例不做限定。
111.示例性的,以异常类型包括类型1、类型2和类型3为例,本步骤中,可以分别计算类型1、类型2和类型3的启动异常事件对应的启动异常率。
112.例如,对于类型1,首先,服务器确定接收到的启动异常事件的总数量m,以及异常类型为类型1的启动异常事件的数量m1。
113.进一步的,确定m1与m的比值为类型1的启动异常率;
114.2)异常位置对应的启动异常率,即各个异常位置对应的启动异常次数与总启动异常次数的比值;
115.3)异常原因对应的启动异常率,即各异常原因对应的启动异常次数与总启动异常次数的比;
116.需要说明的是,对于各异常位置、各异常原因对应的启动异常率,其计算方法和原理与异常类型类似,此处不再赘述。
117.4)目标应用的总启动异常率,即该目标应用的总启动异常次数与启动开始次数的比值。
118.其中,启动开始次数可以为用于启动该目标应用的触发操作的总次数,这个总次数可以是对同一个终端上的目标应用的触发操作的次数总和,也可以是对多个终端上的目标应用的触发操作的次数总和,本实施例不做限定。
119.具体的,终端每接收到一次对目标应用的触发操作,即向服务器发送一个指令,使得服务器根据指令对目标应用的启动开始次数进行计数。s204、服务器根据启动异常率,输出警告信息。
120.一些实施例中,在获得启动异常率之后,可以根据上述启动异常率与启动率阈值的大小关系,确定是否进行告警。
121.示例性的,以异常类型对应的启动异常率为例,若某一类型的异常对应的启动异常率大于或等于启动异常率阈值,则输出警告信息,否则,不输出警告信息,并继续统计该类型异常的启动异常率。
122.其中,上述各启动异常对应的启动率阈值可以相同也可以不同,本公开实施例不做具体限定。
123.在实际应用中,由于启动异常可能是某些特定条件和特定设备才出现的,无法在目标应用的测试阶段找到所有漏洞,因此,本方案中,通过各个维度的启动异常率来衡量目标应用的启动异常情况,可以作为衡量后续优化效果的指标,为后续的目标应用优化提供参考。
124.本公开实施方式提供的应用启动异常的检测方法中,响应于用于启动目标应用的触发操作,检测目标应用是否发生异常事件,并确定目标应用的目标非透明页面是否曝光;若检测到目标应用的异常事件,且确定目标非透明页面未曝光,则向服务器发送用于指示
异常事件为启动异常的异常信息。通过检测异常事件和目标非透明页面的是否曝光,来检测启动异常,而无需通过人工经验设置延时任务,可以显著地提升检测启动异常的准确性,进而避免深层级的非启动异常被上报,减少了人工筛选启动异常的步骤,可以降低目标应用的维护成本。
125.另外,当用户进入与启动路径无关的较深层级的页面时,即使出现了异常事件,通过本方案也可以准确的识别该异常事件其是否为启动异常,从而避免将用户错误的引导到安全模式,进一步提升用户体验。
126.图3为本公开实施例提供的检测方法的流程示意图。本实施例将在图2所示实施例的基础上对终端设备执行的方案进行更详细的说明,具体的,本实施例的检测方法包括如下步骤:
127.s301、响应于用于启动目标应用的触发操作,注册异常接收器并执行目标应用的初始化进程。
128.其中目标应用的初始化进程包括以下至少一种:功能初始化进程、第三方库的初始化进程或者页面绘制进程。
129.可选的,在响应于用于启动目标应用的触发操作时,终端设备还可以向服务器上报启动开始事件,以通过上报启动开始事件,来指示服务器当前开始启动该目标应用,使得服务器根据后续的异常信息对目标应用进行优化处理。
130.s302、通过异常接收器接收初始化进程中的异常事件,并确定目标应用的目标非透明页面是否曝光。
131.需要说明的是,除了上述实施例中提供的通过对启动路径进行埋点标记来判断页面是否曝光的方式之外,本公的开实施例中,还可以通过在页面中插入曝光通知代码,以通过曝光通知代码的执行情况来确定页面是否被曝光。
132.具体的,可以在目标应用的预设页面的代码末尾插入曝光通知代码,若曝光通知代码被执行,则表征对应的预设页面曝光,相应的,若曝光通知代码未被执行,则表征该预设页面还未曝光。
133.应理解,在预设页面中插入曝光通知代码的方式,本公开实施例不做具体限定。一方面,可以在目标应用的开发过程中,通过面向切面编程(aspect oriented programming,aop)技术在目标应用的预设页面对应的代码末尾处,插入该曝光通知代码。
134.另一方面,可以在目标应用的初始化进程中,通过第三方库为目标应用的预设页面插入该曝光通知代码。
135.具体的,该目标应用的第三方库中包括:第三方软件开发工具包sdk,在第三方库的初始化过程中,该第三方sdk会通过aop技术在目标应用的预设页面中插入该曝光通知代码。
136.其中,预设页面可以为该目标应用所有的非透明页面,或者,预设页面也可以为该目标应用的所有启动路径对应的目标非透明页面,本公开实施例不做限定。
137.本方案中,通过aop技术在目标应用的预设页面插入曝光通知代码,使得无论通过何种触发操作来启动该目标应用,都可以准确的判断目标应用的目标非透明页面是否被曝光,进而判断是否发生了启动异常。
138.其次,相比于在页面中进行埋点的方式,本实施例的不同之处在于:通过aop技术
在目标应用的预设页面的代码中插入曝光通知代码,再通过曝光通知代码的执行情况确定页面是否被曝光,此过程对目标应用的工程源码无侵入性,其安全性更高。并且,通过本实施例提供的方法,其可以对任意应用的任意页面进行插入,无需确定每个应用对应的启动路径,因此其不受应用的启动路径变更的影响,具有普适性和扩展性,可迅速接入任何应用,进而提升应用的开发效率。
139.另外,通过第三方sdk的方式插入曝光通知代码,在应用的开发过程中,无需对应用逐页插入曝光通知代码,可以显著提升应用开发效率,降低成本。
140.一些实施例中,通过曝光通知代码的执行情况,来确定目标非透明页面是否被曝光时,具体包括如下两种方式:
141.方式一:
142.1)确定目标应用的页面绘制进程中,预设页面的曝光通知代码的执行次数。
143.2)响应于执行次数大于或等于预设次数,且目标应用的目标页面为非透明页面,确定目标应用的目标非透明页面曝光。
144.具体的,在目标应用的启动过程中,目标应用会进行页面绘制进程,即执行页面代码,若页面代码末尾处的曝光通知代码被执行,则说明该页面已绘制成功(即页面被曝光),且目标应用的曝光通知代码被执行次数,即代表目标应用的页面曝光数量。
145.本实施例中,在目标应用的启动过程中,对预设页面的曝光通知代码的执行次数进行计数,即可获得当前曝光的页面数量,若当前的执行次数大于或等于预设次数(例如1次),则说明目标应用当前已经有页面被曝光。
146.进一步的,确定当前曝光的页面是否有非透明页面,若当前曝光的页面中包含非透明页面,则说明目标应用的目标非透明页面一定已经被曝光了,相反的,若当前曝光的页面中没有非透明页面,则说明该目标应用的目标非透明页面还未曝光,则继续对曝光通知代码的执行次数进行计数。
147.示例性的,若当前曝光通知代码的执行次数为2次,第一次执行曝光通知代码时,对应的曝光页面为页面1,第二次执行曝光通知代码时,对应的曝光页面是页面2,若页面1为透明页面,页面2为非透明页面,则说明目标应用的目标非透明页面被曝光(页面2为目标应用的目标非透明页面),相应的,若页面1和页面2均为透明页面,则继续对曝光通知代码的执行次数进行计数。
148.在一些场景中,当所述曝光通知代码的执行次数大于或等于执行次数阈值时,若曝光的页面中仍没有非透明页面,则可能是由于启动异常而无法正常显示目标非透明页面,此时,将曝光通知代码的执行次数置0,以在该目标应用后续的启动操作中,对曝光通知代码进行重新计数。
149.其中,执行次数阈值可以通过如下两种方式确定:
150.(1)确定目标非透明页面曝光的过程中,执行曝光通知代码次数的经验值为执行次数阈值。
151.示例性的,通常情况下,打开一个非透明页面最多需要执行n次曝光通知代码,本方案中,若在执行n次曝光通知代码后,还没有非透明页面曝光,则说明当前可能是出现了启动异常,则重置计数。
152.(2)确定当前启动路径对应的目标非透明页面曝光时,曝光通知代码执行次数为
执行次数阈值。
153.其中,每个启动操作的启动路径不同,对应的目标非透明页面也不同,例如,当前启动路径对应的目标非透明页面为页面a时,在页面a曝光的过程中,需要执行曝光通知代码的页面依次为:页面a1、页面a2

页面as和页面a,其中,页面a1、页面a2、

、页面as为透明页面,页面a为非透明页面,则当前启动路径对应的目标非透明页面(页面a)的曝光通知代码的执行次数为s 1次,则页面a对应的执行次数阈值为s 1。也即,本方案中,若在执行s 1次曝光通知代码后,还没有非透明页面,则说明当前可能是出现了启动异常,则重置计数。
154.在另一些场景中,在曝光通知代码当前的执行次数大于或等于预设次数,且确定该目标应用的目标非透明页面被曝光时,即说明目标应用成功启动,此时将曝光通知代码的执行次数置0,以在该目标应用后续的启动操作中,对曝光通知代码进行重新计数。
155.在一些实施例中,还可以通过设置标志位的方式,确定目标应用的目标非透明页面是否被曝光,接下来对该方式进行详细说明:
156.方式二:
157.1)确定目标应用的页面绘制进程中,预设页面的曝光通知代码的执行次数。
158.2)响应于执行次数等于预设次数,且目标应用的目标页面为非透明页面,将native中存储的标志信息的值设置为第一预设值。
159.其中,预设次数的值可以为1,目标应用的目标页面为当前曝光通知代码对应的页面。
160.具体的,曝光通知代码每执行一次,即判断当前曝光通知代码对应的页面是否为非透明页面,若是,则将native中存储的标志信息的值设置为第一预设值,若否,则按照步骤1)、2)继续执行,直到将native中存储的标志信息的值设置为第一预设值。
161.3)读取native中存储的标志信息。
162.4)若确定标志信息的值为第一预设值,则确定目标应用的目标非透明页面曝光。
163.具体的,在步骤s302中,读取native中存储的标志信息,若标志信息的值为第一预设值,则说明该目标应用当前的目标非透明页面已经曝光;相应的,若标志信息的值为初始值,则说明该目标应用当前的目标非透明页面未曝光。
164.其中,第一预设值例如是1,初始值例如是0。
165.一些实施例中,在确定目标应用的目标非透明页面曝光时,说明该目标应用正常启动,此时将native中存储的标志信息重置为初始值,以在后续的启动过程中,以在该目标应用后续的启动操作中,根据目标非透明页面的额曝光情况,重新设置标志信息。
166.本公开实施例中,通过上述两种确定目标应用的目标非透明页面是否曝光的方式,可以准确的判断目标应用的目标非透明页面否曝光,从而准确的推断出异常事件是否为启动异常,进而进行相应的优化处理,以提升用户体验。
167.s303、若检测到目标应用的异常事件,且确定目标非透明页面曝光,则向服务器发送用于指示异常事件并非启动异常的第一指示信息。
168.应理解的是,由于目标非透明页面已曝光,则说明该目标应用已正常启动,该异常事件可能并不影响该目标应用的一些功能,因此,服务器在接收到该第一指示信息之后,可以在终端的界面中展示该目标非透明页面,以供用户进行操作。
169.一些实施例中,服务器还可以根据该第一指示信息输出警告信息,以提示开发人
员对该目标应用进行相应的优化处理。同时,还可以在终端的界面中显示提示信息,以提示用户目标应用当前出现异常。
170.s304、若检测到目标应用的异常事件,且确定目标非透明页面未曝光,则向服务器发送用于指示异常事件为启动异常的异常信息。
171.应理解,步骤s304的方案与图2所示实施例的方案类似,此处不再赘述。
172.s305、若未检测到目标应用的异常事件,且目标应用的目标非透明页面曝光,则向服务器发送用于指示目标应用正常启动的第二指示信息。
173.相应的,服务器接收到该第二指示信息之后,说明该目标应用已正常启动且无其他异常事件,可以在终端的界面中展示该目标非透明页面。
174.本实施例中,检测到异常事件时,若目标非透明页面曝光,则向服务器发送第一指示信息,若确定目标非透明页面未曝光,则向服务器发送异常信息。通过本方案,可以使得服务器依据不同的异常情况对异常事件进行相应的处理,保障用户的使用体验。另外,通过检测不同类型的异常情况,并在不同异常情况下发送不同的指示信息给服务器,使得服务器在对不同类型的异常事件进行分析时,各类异常事件之间不会互相干扰,可以获得更准确的异常分析结果,此过程也无需额外增加筛选各类异常事件的环节,可以降低人力成本,提升异常问题分析的效率。
175.在一些实施例中,上述两种方式中,可以通过如下步骤确定目标应用的目标页面是否为非透明页面:
176.(1)获取目标页面的根视图背景色值;
177.本实施例中,可以通过页面曝光回调的方式,获取目标页面的根视图背景色值。
178.需要说明的是,不同操作系统中,曝光回调的方式不同,至于各系统进行曝光回调的具体方案,此处不再一一赘述。
179.(2)在背景色值大于背景色阈值时,根据目标页面的透明度,确定曝光页面是否为非透明页面。
180.具体的,若背景色值大于背景色阈值,则判断该目标页面是否开启了透明主题,若目标页面开启了透明主题,则确定该目标页面为透明页面,相应的,若目标页面未开启透明主题,则确定该目标页面为非透明页面。
181.通过本实施例,可以准确的判断目标页面是否为非透明页面,进而准确的确定是否发生的启动异常。
182.图4为本公开实施例提供的检测方法的交互示意图二。本实施例将在图2所示实施例的基础上对终端设备和服务器执行的方案进行更详细的说明,具体的,本实施例的检测方法包括如下步骤:
183.s401、终端设备响应于用于启动目标应用的触发操作,检测目标应用是否发生异常事件,并确定目标应用的目标非透明页面是否曝光。
184.s402、若终端设备检测到目标应用的异常事件,则根据异常事件的异常类型,获取异常事件对应的日志信息和异常原因。
185.其中,异常类型包括以下至少一种:未捕获异常、omm异常、anr异常或者native崩溃;日志信息用于指示启动异常的异常位置,日志信息包括堆栈日志和/或系统环境快照信息。
186.相应的,上述各异常类型对应的异常原因如下:
187.未捕获异常对应的异常原因:编程语言在执行过程中发生了异常,且未被开发者捕获;
188.omm异常的异常原因:堆内存耗尽、内存碎片化且无法连续分配;
189.native崩溃的异常原因:cup指令执行错误,或者产生如下任一种信号:sigabrt、sigbus、sigfpe、sigill、sigsegv、sigstkflt、sigpiped等。
190.s403、终端设备根据异常类型、日志信息和异常原因,获得预设格式的异常信息。
191.其中,异常信息包括如下内容:每个异常事件对应的异常类别、异常原因、异常详细信息、编程语言异常堆栈、native层异常堆栈、内存等系统环境快照信息。
192.可选的,由于不同异常类别的异常事件可能发生在不同的环境,例如:编程语言环境、native层环境、信号处理程序环境等,且不同环境下执行的限制和条件不同,因此,需统一调度到native层环境去进行下一步处理。
193.s404、若终端设备确定目标非透明页面未曝光,则向服务器发送用于指示异常事件为启动异常的异常信息。
194.本实施例中,在目标应用发生异常的时,即对启动异常进行统计分类和归因,并根据异常分类和归因确定异常信息,再向服务器进行上报。相比于由服务器进行排查分析以获取异常信息的方式,通过本方案获得的异常信息更为准确,从而可以得出准确的启动异常率指标,为后续优化效果提供宏观衡量标准,提升用户体验。
195.s405、服务器接收至少一个终端设备发送的目标应用的多个异常信息。需要说明的是,上述步骤s404~s405与图3所示实施例中的方案类似,此处不再赘述。
196.s406、服务器根据异常信息,确定目标应用的启动异常率。
197.其中,根据异常信息,确定目标应用的启动异常率,包括以下至少一种:
198.各异常类型的异常事件对应的启动异常率、各异常原因的异常事件对应的启动异常率、各异常位置的异常事件对应的启动异常率以及目标应用的总启动异常率等等。
199.应理解,上述启动异常率的计算方式与图2所示实施例中的步骤s203中示出,此处不再赘述。
200.一些实施例中,对于总启动异常率,还可以根据如下公式得出上述异常事件对应的总启动异常率:
[0201][0202]
其中,p为总启动异常率,n1为启动完成次数,n2为启动开始次数。
[0203]
需要说明的是,可以根据终端设备发送的用于指示目标应用正常启动的第一指示信息,确定启动完成次数n1,根据终端设备上报的启动开始事件,确定启动开始次数n2。
[0204]
s407、服务器根据启动异常率,输出警告信息。
[0205]
其中,警告信息用于指示对目标应用进行优化处理。
[0206]
需要说明的是,步骤s407与图2所示实施例中的步骤s204类似,此处不再赘述。
[0207]
本实施例中,在出现异常事件的时刻,就通过终端设备对启动异常进行分类,再统一上报给服务器,使得服务器通过对异常类型、异常原因和异常位置等多个维度异常事件进行分类统计和归因,得出启动异常率,此过程不需要人工介入分类,可以得出更准确的结
果,且多维度的数据可以为目标应用的优化过程提供更准确的参考,最终提升目标应用的优化效率和优化效果。
[0208]
示例性介质
[0209]
在介绍了本公开示例性实施方式的方法之后,接下来,参考图5对本公开示例性实施方式的存储介质进行说明。
[0210]
图5为本公开实施例提供的程序产品示意图。参考图5所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品500,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此。
[0211]
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0212]
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质。
[0213]
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备。
[0214]
示例性装置
[0215]
在介绍了本公开示例性实施方式的介质之后,接下来,参考图6、图7对本公开示例性实施方式的装置进行说明。
[0216]
图6为本公开实施例提供的检测装置的结构示意图一。应理解,本公开实施例的检测装置用于终端设备,该终端设备上安装有目标应用,如图6所示,该检测装置600包括:检测模块601和处理模块602;
[0217]
其中,检测模块601,用于响应于用于启动目标应用的触发操作,检测目标应用是否发生异常事件,并确定目标应用的目标非透明页面是否曝光;处理模块602,用于在检测到目标应用的异常事件,且确定目标非透明页面未曝光,则向服务器发送用于指示异常事件为启动异常的异常信息。
[0218]
在一种可能的实施方式中,检测模块601具体用于:响应于用于启动目标应用的触发操作,注册异常接收器并执行目标应用的初始化进程;通过异常接收器接收初始化进程中的异常事件;其中,目标应用的初始化进程包括以下至少一种:功能初始化进程、第三方库的初始化进程或者页面绘制进程。
[0219]
在一种可能的实施方式中,检测模块601具体用于:确定目标应用的页面绘制进程
中,预设页面的曝光通知代码的执行次数;响应于执行次数大于或等于预设次数,且目标应用的目标页面为非透明页面,确定目标应用的目标非透明页面曝光;其中,预设页面中通过面向切面编程aop技术插入了曝光通知代码,若曝光通知代码被执行,则表征对应的预设页面曝光。
[0220]
在一种可能的实施方式中,检测模块601具体用于:读取native中存储的标志信息;若确定标志信息的值为第一预设值,则确定目标应用的目标非透明页面曝光。
[0221]
在一种可能的实施方式中,该检测装置600还包括:确定模块603,用于确定目标应用的页面绘制进程中,预设页面的曝光通知代码的执行次数;响应于执行次数等于预设次数,且目标应用的目标页面为非透明页面,将标志信息的值设置为第一预设值;其中,预设页面中通过aop技术插入了曝光通知代码,若曝光通知代码被执行,则表征预设页面曝光。
[0222]
在一种可能的实施方式中,检测模块601具体用于:获取目标页面的根视图背景色值;在背景色值大于背景色阈值时,根据目标页面的透明度,确定曝光页面是否为非透明页面。
[0223]
在一种可能的实施方式中,该检测装置600还包括:获取模块604,用于根据异常事件的异常类型,获取异常事件对应的日志信息和异常原因,日志信息用于指示启动异常的异常位置;根据异常类型、日志信息和异常原因,获得预设格式的异常信息。
[0224]
在一种可能的实施方式中,日志信息包括堆栈日志和/或系统环境快照信息;异常类型包括以下至少一种:未捕获异常uncaught exception、内存溢出异常omm异常、程序无响应anr异常或者native崩溃。
[0225]
在一种可能的实施方式中,该检测装置600还包括:第一发送模块605,用于若未检测到目标应用的异常事件,且目标应用的目标非透明页面曝光,则向服务器发送用于指示目标应用正常启动的第一指示信息。
[0226]
在一种可能的实施方式中,该检测装置600还包括:第二发送模块606,用于若检测到目标应用发生异常事件,且确定目标非透明页面曝光,则向服务器发送用于指示异常事件并非启动异常的第二指示信息。
[0227]
在一种可能的实施方式中,第三方库包括第三方软件开发工具包sdk,第三方sdk用于通过aop技术在目标应用的预设页面中插入曝光通知代码。
[0228]
本公开实施例提供的上述检测装置,可以实现前述终端设备对应的检测方法实施例中的各个过程,并达到相同的功能和效果,此处不做赘述。
[0229]
图7为本公开实施例提供的检测装置的结构示意图二。应理解,本公开实施例的检测装置用于服务器,如图7所示,该检测装置700包括:接收模块701、确定模块702和输出模块703;
[0230]
其中,接收模块701,用于接收至少一个终端设备发送的目标应用的多个异常信息,异常信息为各终端设备检测到目标应用发生异常事件,且确定目标应用的目标非透明页面未曝光时发送的,异常信息用于指示目标应用发生了启动异常;确定模块702,用于根据异常信息,确定目标应用的启动异常率;输出模块703,用于根据启动异常率,输出警告信息,警告信息用于指示对目标应用进行优化处理。
[0231]
在一种可能的实施方式中,异常信息包括异常类型、日志信息和异常原因,日志信息用于指示异常事件的异常位置;确定模块702具体用于执行如下至少一种:确定各异常类
型的异常事件对应的启动异常率;确定各异常原因的异常事件对应的启动异常率;确定各异常位置的异常事件对应的启动异常率。
[0232]
本公开实施例提供的上述检测装置,可以实现前述服务器对应的检测方法实施例中的各个过程,并达到相同的功能和效果,此处不做赘述。
[0233]
示例性计算设备
[0234]
在介绍了本公开示例性实施方式的方法、介质和装置之后,接下来,参考图8对本公开示例性实施方式的计算设备进行说明。应理解,图8显示的计算设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0235]
图8为本公开实施例提供的计算设备的结构示意图。如图8所示,计算设备800以通用计算设备的形式表现。计算设备800的组件可以包括但不限于:上述至少一个处理单元801、上述至少一个存储单元802,连接不同系统组件(包括处理单元801和存储单元802)的总线803。
[0236]
总线803包括数据总线、控制总线和地址总线。
[0237]
存储单元802可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)812和/或高速缓存存储器822,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(rom)832。
[0238]
存储单元802还可以包括具有一组(至少一个)程序模块842的程序/实用工具852,这样的程序模块842包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0239]
计算设备800也可以与一个或多个外部设备804(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口805进行。并且,计算设备800还可以通过网络适配器806与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图8所示,网络适配器806通过总线803与计算设备800的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0240]
应当注意,尽管在上文详细描述中提及了定时更新装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
[0241]
此外,尽管在附图中以特定顺序描述了本公开的方法,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0242]
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献