压力检测方法、装置与电子设备与流程

文档序号:25741901发布日期:2021-07-06 18:52阅读:112来源:国知局
压力检测方法、装置与电子设备与流程

本公开涉及信息技术领域,具体而言,涉及一种压力检测方法、装置与电子设备。



背景技术:

压力测试是为了增强业务系统可靠性而设置的一种测试流程。通过使用与实际场景对应的压测流量输入业务链路,获取链路中各功能模块在压力测试过程中产生的数据和结果,可以对业务系统可能存在的短板和故障进行分析和修改。为了避免压测流量对业务系统的数据积累和机器学习产生不可逆影响,通常对压测数据设置专门的压测标识,例如在流量头部(header)写入全局唯一的压测标识,并设置各功能模块在检测到该压测标识时将与压测流量相关的处理结果存储到专门的“影子表”,以对压测数据进行隔离。

图1是相关技术中业务链路处理压测流量的过程示意图。参考图1,由于各功能模块会对输入的压测流量进行不同的处理,并输出不同的处理结果到下游功能模块,在此过程中可能引起最初设置的压测标识改变或丢失。为了保障下游功能模块准确识别压测标识,相关技术通常需要手动修改各功能模块的代码,使各功能模块对输出的压测流量处理数据添加压测标识,以实现压测标识在全链路的透传。

但是,由于链路关系的复杂性,一次压力测试涉及的链路可能非常复杂,任何一个环节只要出现问题,比如某个中间件版本不达标、无法对输出的压测流量处理数据添加压测标识,压测标识就不会再往下透传。而且,对每个功能模块均进行代码修改的工作量十分庞大,人力和时间成本极高。相关技术仅能够在发生压测标识丢失时提供位置分析以便测试人员修改功能模块代码,避免该模块下次丢失压测标识,但是不能保证压测标识全链路不丢失。因此,需要一种能够保障压测标识在全链路中有效透传的方法。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开的目的在于提供一种压力检测方法、装置与电子设备,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的压力检测过程中压测标识丢失问题。

根据本公开实施例的第一方面,提供一种压力检测方法,包括:响应流量传递请求,确定与所述流量传递请求对应的第一线程的上下文中是否设置有预设压测标识;在所述第一线程的上下文中包括所述预设压测标识时,在启用的第二线程的上下文中写入所述预设压测标识,所述第二线程用于处理所述流量传递请求,其中,所述第一线程和所述第二线程至少包括用于服务间通讯的通讯中间件线程、服务内部的中间件的线程和服务内部独立于中间件的线程。

在本公开的一种示例性实施例中,所述在启用的第二线程的上下文中写入所述预设压测标识包括:根据所述流量传递请求新建所述第二线程;在所述第二线程的上下文中写入所述预设压测标识。

在本公开的一种示例性实施例中,所述在启用的第二线程的上下文中写入所述预设压测标识包括:响应来自线程池的线程分配消息,将线程池分配的线程设置为所述第二线程;在所述第二线程以及所述第二线程对应的子线程的上下文中均写入所述预设压测标识。

在本公开的一种示例性实施例中,还包括:在所述第一线程的上下文中包括所述预设压测标识时,根据所述流量传递请求确定染色标识值;根据所述染色标识值更新所述第二线程所属的功能模块的染色标识位,所述功能模块至少包括服务或中间件。

在本公开的一种示例性实施例中,所述根据所述流量传递请求确定染色标识值包括:在所述第一线程的上下文中包括所述预设压测标识时,根据所述流量传递请求确定目标流量的流量类型,根据所述目标流量的流量类型生成所述染色标识值;或者,在所述第一线程的上下文中包括所述预设压测标识时,根据所述预设压测标识生成所述染色标识值。

在本公开的一种示例性实施例中,在进行压力检测之前,还包括:响应压力检测请求,获取压测流量;根据所述压测流量的流量种类生成所述预设压测标识;生成用于获取并处理所述压测流量第一线程,在所述第一线程的上下文中写入所述预设压测标识。

在本公开的一种示例性实施例中,所述压力检测方法通过字节码增强技术实现。

根据本公开实施例的第二方面,提供一种压力检测装置,包括:压测标识检测模块,设置为响应流量传递请求,确定与所述流量传递请求对应的第一线程的上下文中是否设置有预设压测标识;压测标识传递模块,设置为在所述第一线程的上下文中包括所述预设压测标识时,在启用的第二线程的上下文中写入所述预设压测标识,所述第二线程用于处理所述流量传递请求,其中,所述第一线程和所述第二线程至少包括用于服务间通讯的通讯中间件线程、服务内部的中间件的线程和服务内部独立于中间件的线程。

根据本公开的第三方面,提供一种电子设备,包括:存储器;以及耦合到所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上述任意一项所述的方法。

根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项所述的压力检测方法。

本公开实施例通过在线程的上下文中设置预设压测标识,并且在减测到第一线程的上下文中存在预设压测标识时在启用的第二线程的上下文中写入该预设压测标识,能够通过线程上下文实现压测标识的全链路透传,进而避免相关技术中通过在压测流量中写入压测标识导致的压测标识丢失问题;此外,通过仅监控线程间数据传递,无需手动修改每个业务的代码以使每个功能模块改变输出数据,可以克服相关技术中手动修改业务代码导致的效率低下问题,同时避免业务代码出现问题导致的压测标识丢失问题,实现高效且可靠的压测标识全链路透传。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是相关技术中业务链路处理压测流量的过程示意图。

图2是本公开示例性实施例中压力检测方法的流程图。

图3是本公开实施例的功能与业务链路的作用关系示意图。

图4是本公开一个实施例中预设压测标识的初始化过程示意图。

图5是本公开一个实施例中对功能模块进行染色的流程图。

图6是本公开一个实施例中一种压力检测装置的方框图。

图7是本公开示例性实施例中一种压力检测装置的方框图。

图8是本公开示例性实施例中一种电子设备的方框图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

下面结合附图对本公开示例实施方式进行详细说明。

图2是本公开示例性实施例中压力检测方法的流程图。

参考图2,压力检测方法200可以包括:

步骤s1,响应流量传递请求,确定与所述流量传递请求对应的第一线程的上下文中是否设置有预设压测标识;

步骤s2,在所述第一线程的上下文中包括所述预设压测标识时,在启用的第二线程的上下文中写入所述预设压测标识,所述第二线程用于处理所述流量传递请求,其中,所述第一线程和所述第二线程至少包括用于服务间通讯的通讯中间件线程、服务内部的中间件的线程和服务内部独立于中间件的线程。

本公开实施例通过在线程的上下文中设置预设压测标识,并且在减测到第一线程的上下文中存在预设压测标识时在启用的第二线程的上下文中写入该预设压测标识,能够通过线程上下文实现压测标识的全链路透传,进而避免相关技术中通过在压测流量中写入压测标识导致的压测标识丢失问题;此外,通过仅监控线程间数据传递,无需手动修改每个业务的代码以使每个功能模块改变输出数据,因此,可以克服相关技术中手动修改业务代码导致的效率低下问题,同时避免业务代码出现问题导致的压测标识丢失问题,实现高效且可靠的压测标识全链路透传。

下面,对压力检测方法100的各步骤进行详细说明。

在步骤s1,响应流量传递请求,确定与所述流量传递请求对应的第一线程的上下文中是否设置有预设压测标识。

本公开实施例可以基于线程间信息识别,应用于整个业务链条的压力测试,即,本公开实施例中的线程既包括服务间流量传递线程,也包括服务内流量传递线程,其中,一个服务例如可以为运行在一个jvm(javavirtualmachine,java虚拟机)内的程序,不同的服务运行在不同的jvm中。当流量跨服务或者说跨jvm传递时,需要通过通讯功能的中间件实现。此外,一个服务内部也可以涉及多个中间件和多个线程,这些线程既可以为新建线程,也可以为线程池分配的线程。本公开实施例中的第一线程可以指上述全部功能模块(服务、中间件)中的任意形式的线程。

当业务链路通过java代码实现时,可以通过字节码增强技术来实现本公开实施例提供的方法,以在不修改业务代码的前提下,监控全链路的流量传递过程,实现全链路的压测标识透传。字节码增强技术是指在java字节码生成之后,在运行期对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。java字节码增强技术可以增强原有的代码或者修改底层的代码,以在不修改原有代码的基础上提供一些现有代码没有的功能。

图3是本公开实施例的功能与业务链路的作用关系示意图。

参考图3,当本公开实施例的方法通过图3所示的监控程序3实现时,监控全链路的线程。在图3中,压测流量由线程0引入服务a,服务a包括顺次传递的线程1~线程3,并通过中间件1将压测流量引入服务器b,服务器b包括顺次传递的线程4~线程6,服务器b对其他功能模块输出压测流量。可以理解的是,图3所示的服务、中间件和线程的关系仅为示例,在本公开的其他实施例中,服务a或服务b内部均可以存在一或多个中间件、一或多个线程,例如,线程2和线程3例如可以为一个中间件的线程。中间件的种类例如可以包括api(applicationprogramminginterface,应用程序接口)或其他类型。图3所示各功能模块仅为说明原理,于此不在一一列举功能模块的具体结构。

在压测流量进入服务a时,预设压测标识存在于线程0的上下文中,线程0例如可以属于其他服务、中间件或者其他功能模块。与相关技术中仅将压测标识写入压测流量的流量头(header)中不同,本公开实施例为了保障压测标识不会由于某个功能模块的代码出现故障而丢失,在启动压力检测任务时即生成预设压测标识并将预设压测标识写入线程的上下文中。

图4是本公开一个实施例中预设压测标识的初始化过程示意图。

参考图4,在一个实施例中,预设压测标识的初始化过程400可以包括:

步骤s41,响应压力检测请求,获取压测流量;

步骤s42,根据所述压测流量的流量种类生成所述预设压测标识;

步骤s43,生成用于获取并处理所述压测流量第一线程,在所述第一线程的上下文中写入所述预设压测标识。

在图4所示实施例中,除了将预设压测标识写入第一线程的上下文中,还可以按照通常方法将压测标识写入压测流量的流量头中,以实现压测标识透传的双重保障。该预设压测标识可以由图3中的监控程序3生成并记录,以在后续监控过程中及时发现预设压测标识并进行压测标识透传。在一些实施例中,预设压测标识也可以由其他程序生成并输入监控程序3,由监控程序3将该预设压测标识写入第一线程的上下文中。

在一些实施例中,流量传递请求的形式例如可以为参数传递请求或者中间件调用请求,或者其他功能的数据传递请求,本公开对此不作特殊限制。当压测流量在服务内(jvm内)传递时,服务a涉及的各线程和中间件对压测流量进行处理,在此过程中,如果之前对各线程或中间件进行过修改,各线程或各中间件可能对流量头携带有压测标识的流量的输出数据进行隔离处理,并在输出给下一功能模块的流量头中写入该压测标识。但是如果没有对各线程或中间件进行修改,仅通过本公开实施例的方法也能够使每个线程或中间件识别出压测流量。

如图3所示,线程0的上下文中携带有该预设压测标识,监控程序3监控各服务中的各线程和中间件。如果监控程序3发现执行流量传递请求的线程的上下文中携带有预设压测标识,执行步骤s2的动作;否则,监控程序3不执行动作,继续监控线程。

在步骤s2,在所述第一线程的上下文中包括所述预设压测标识时,在启用的第二线程的上下文中写入所述预设压测标识,所述第二线程用于处理所述流量传递请求,其中,所述第一线程和所述第二线程至少包括用于服务间通讯的通讯中间件线程、服务内部的中间件的线程和服务内部独立于中间件的线程。

在本公开实施例中,启用第二线程处理压测流量时,可以通过新建线程或直接使用线程池分配的线程实现。

在一个实施例中,可以根据所述流量传递请求新建所述第二线程,并在所述第二线程的上下文中写入所述预设压测标识。在另一个实施例中,可以响应来自线程池的线程分配消息,将线程池分配的线程设置为所述第二线程,然后在所述第二线程以及所述第二线程对应的子线程的上下文中均写入所述预设压测标识。

线程池中通常维护多个线程以及任务队列,线程池按照任务队列中的任务排序,分配空闲线程处理队列中的任务。当使用线程池分配的线程处理具有预设压测标识的第一线程传递的压测流量时,监控程序3可以在该分配的线程的上下文中写入该预设压测标识,以防止压测流量被线程池分配的多个线程处理的过程中,压测流量的流量头中的压测标识丢失,而导致压测标识透传失败。此外,通过仅对承接压测流量的线程的上下文写入预设压测标识,可以避免线程池中的多个线程对压测流量的处理逻辑混乱。

当第二线程从属于中间件(例如api)时,第二线程的种类例如为sdk线程。对第二线程的上下文写入预设压测标识同样是由图3所示的监控程序3执行。通过将预设压测标识在线程间传递,可以仅仅在各功能模块的运行过程中监控、修改线程的上下文即可实现压测标识的全链路透传,无需在功能模块运行前修改各线程或中间件的代码使其对压测标识进行透传,可以提高压测效率,同时也避免了各线程或中间件的代码发生故障导致的压测标识透传失败。

一般情况下,第二线程对压测流量进行处理并输出到下一个线程或中间件,此时无需对流量数据输出逻辑进行修改。当第二线程为数据库连接池中间件的线程,即其功能为将待传递的流量数据路由到数据库的时候,可以设置该线程在判断自身的上下文中携带预设压测标识时,自动将当前的流量数据(压测流量对应的数据)指定到与压测数据对应的“影子数据库”。

在本公开的另一个实施例中,监控程序3除了可以实现预设压测标识的全链路透传,还可以对处理压测流量的功能模块染色。

图5是本公开一个实施例中对功能模块进行染色的流程图。

参考图5,对处理压测流量的功能模块染色的过程可以包括:

步骤s51,在所述第一线程的上下文中包括所述预设压测标识时,根据所述流量传递请求确定染色标识值;

步骤s52,根据所述染色标识值更新所述第二线程所属的功能模块的染色标识位,所述功能模块至少包括服务或中间件。

其中,步骤s51的实现既可以为在所述第一线程的上下文中包括所述预设压测标识时,根据所述流量传递请求确定目标流量的流量类型,根据所述目标流量的流量类型生成所述染色标识值。也可以为在所述第一线程的上下文中包括所述预设压测标识时,根据所述预设压测标识生成所述染色标识值。染色标识值(也可以被称为traceid)的确定方法可以有多种,本公开于此不再一一赘述。

在步骤s52,当第二线程属于中间件时,无论该中间件位于服务内部或服务间,均可以对该中间件的染色标识位写入该染色标识值。当第二线程直接从属于服务时,可以对该服务的染色标识位写入该染色标识值。对功能模块进行染色后,可以通过对染色的功能模块的追踪,排查压力检测过程中出现问题的环节,提高压力检测的效率。

监控程序3的各功能可以通过逻辑模块来描述。

图6是本公开一个实施例中一种压力检测装置的方框图。

参考图6,压力检测装置600可以包括:

打标组件61,用于对一次压力检测生成全局唯一的预设压测标识,例如以下代码中的isforcebot:

增强组件62,利用字节码增强技术,增强常用的中间件client(客户端)或者api,如增强redisclient、mq(messagequeue)client、线程池等。当发现任意一个中间件或api的线程上下文中带有预设压测标识时,就对后续启用的中间件或api的线程的上下文都设置该预设压测标识,以防压测标识丢失。当业务代码中使用的中间件发现自身线程的上下文中存在增强组件增强的压测标识时,根据预先设置的压测场景需要处理后续流程。字节码增强功能可以通过在各中间件中预留api实现。

以数据库为例,如果增强组件62已经对某个线程的上下文增强压测标识forcebotutils.setforcebot(true),染色组件63会把这个压测标识透传下去,当需要把压测数据路由到指定数据库时候,数据库连接池中间件自动判断需要路由到哪个指定数据源,无需修改业务代码,判断数据源代码如下:

染色组件63,提供全局唯一的染色标识值(traceid),染色(标记)一次压力监测调用的拓扑链路的各功能模块。处理过压测流量的功能模块在整个链路的生命周期内都会有染色标识。

由此,压力检测装置600可以无需修改各功能模块的业务代码,实现预设压测标识在全链路中透传,防止压测标识丢失,使每个功能模块均能检测并正确处理压测流量。

对应于上述方法实施例,本公开还提供一种压力检测装置,可以用于执行上述方法实施例。

图7本公开示例性实施例中一种压力检测装置的方框图。

参考图7,压力检测装置700可以包括:

压测标识检测模块71,设置为响应流量传递请求,确定与所述流量传递请求对应的第一线程的上下文中是否设置有预设压测标识;

压测标识传递模块72,设置为在所述第一线程的上下文中包括所述预设压测标识时,在启用的第二线程的上下文中写入所述预设压测标识,所述第二线程用于处理所述流量传递请求,其中,所述第一线程和所述第二线程至少包括用于服务间通讯的通讯中间件线程、服务内部的中间件的线程和服务内部独立于中间件的线程。

在本公开的一种示例性实施例中,压测标识传递模块72设置为:根据所述流量传递请求新建所述第二线程;在所述第二线程的上下文中写入所述预设压测标识。

在本公开的一种示例性实施例中,压测标识传递模块72设置为:响应来自线程池的线程分配消息,将线程池分配的线程设置为所述第二线程;在所述第二线程以及所述第二线程对应的子线程的上下文中均写入所述预设压测标识。

在本公开的一种示例性实施例中,还包括染色模块73,设置为:在所述第一线程的上下文中包括所述预设压测标识时,根据所述流量传递请求确定染色标识值;根据所述染色标识值更新所述第二线程所属的功能模块的染色标识位,所述功能模块至少包括服务或中间件。

在本公开的一种示例性实施例中,染色模块73设置为:在所述第一线程的上下文中包括所述预设压测标识时,根据所述流量传递请求确定目标流量的流量类型,根据所述目标流量的流量类型生成所述染色标识值;或者,在所述第一线程的上下文中包括所述预设压测标识时,根据所述预设压测标识生成所述染色标识值。

在本公开的一种示例性实施例中,在进行压力检测之前,还包括压测标识生成模块74,设置为:响应压力检测请求,获取压测流量;根据所述压测流量的流量种类生成所述预设压测标识;生成用于获取并处理所述压测流量第一线程,在所述第一线程的上下文中写入所述预设压测标识。

在本公开的一种示例性实施例中,压力检测装置700通过字节码增强技术实现。

由于装置700的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图8来描述根据本发明的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如本公开实施例所示的方法。

存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(rom)8203。

存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备800也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。

在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。

根据本发明的实施方式的用于实现上述方法的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1