具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,对本申请的方案进行说明。
图1为本申请实施例提供的滑动窗口数据确定方法的流程示意图。
图1中的流程的执行主体可以是业务相关的设备,比如,作为该业务的服务器或客户机的设备等。所述设备具体可以是个人计算机、大中型计算机、计算机集群中的设备、手机、平板电脑、智能手表、车载移动台等,本申请对作为所述执行主体的设备并不做限定,本申请对所述业务的类型和内容也不做限定。
通过执行图1中的流程,可以确定滑动窗口在第二时刻时所包含业务数据在一个或多个业务维度的统计值,所述第二时刻可以是当前时刻或者早于当前时刻的任一时刻。需要说明的是,图1中的流程中提到的“统计值”均指业务数据在同一个业务维度的统计值,可以针对业务数据的多个业务维度中的每个业务维度,分别执行图1中的流程,以确定滑动窗口在第二时刻时所包含业务数据在所述每个业务维度的统计值。本申请对所述业务维度的具体内容并不做限定,对于不同的业务,可以有不同的业务维度,
图1中的流程可以包括以下步骤:
S101:获取滑动窗口在第一时刻时所包含业务数据的统计值。
在本申请实施例中,所述第一时刻可以是早于第二时刻的任一时刻。“滑动窗口在第一时刻时”表示的含义可以是:滑动窗口对应的时间区间的终止时刻为第一时刻时。
在本申请实施例中,滑动窗口在第一时刻时所包含业务数据指:对于滑动窗口在第一时刻时对应的时间区间,属于该时间区间的业务数据。
在本申请实施例中,步骤S101中获取的统计值可以是预先保存,以及可以直接拿来(比如,通过查询获取、或者通过被推送获取等)使用的。
具体地,步骤S101中获取的统计值可以也是预先采用图1中的方法确定出来后,再保存的,也即,滑动窗口在第一时刻时所包含业务数据的统计值,与滑动窗口在第二时刻时所包含业务数据的统计值均可以是采用本申请的方案确定出来的,可以根据已预先确定的滑动窗口在早于某一时刻(比如,第二时刻)的一个时刻(比如,第一时刻)时所包含业务数据的统计值,确定滑动窗口在所述某一时刻时所包含业务数据的统计值。需要说明的是,若对于早于某一时刻的任意时刻,均尚未确定滑动窗口在所述任意时刻时所包含业务数据的统计值,则可以采用本申请的方案以外的其他方案,确定滑动窗口在所述某一时刻时所包含业务数据的统计值。
在本申请实施例中,滑动窗口在第一时刻时所包含业务数据的统计值可以是预先保存在执行主体上的,也可以是保存在执行主体可以访问的任一其他设备上的。
S102:获取第一区间内业务数据的第一统计值,所述第一区间为所述第一时刻至第二时刻的时间区间。
在本申请实施例中,所述第一区间内业务数据即为:所述业务在第一时刻至第二时刻的过程中产生的增量数据。
需要说明的是,所述第一统计值中的“第一”与步骤S103中所述第二统计值中的“第二”是为了便于描述所起的名字,并没有实际含义。
若不考虑是否便于描述,则第一区间内业务数据的第一统计值也可以称为:第一区间内业务数据的统计值;第二区间内业务数据的第二统计值也可以称为:第二区间内业务数据的统计值。在基于图1中的方法,确定滑动窗口在第二时刻时所包含业务数据的在某一业务维度的统计值时,步骤S101中所述统计值、步骤S102中所述第一统计值、步骤S103中所述第三统计值这三者均为在所述某一业务维度的统计值,区别在于统计时所基于的业务数据所属的时间区间不同。
在本申请实施例中,所述第一统计值可以是根据预先确定的一个或多个单位时间区间的内业务数据的统计值确定的,或者,所述第一统计值也可以是直接根据第一区间内的业务数据确定的,等等。
S103:获取第二区间内业务数据的第二统计值,所述第二区间的长度不小于所述第一区间的长度,所述第二区间起始于所述滑动窗口在第一时刻时的起始时刻。
在本申请实施例中,所述第二区间可以终止于滑动窗口在第二时刻时的起始时刻,在这种情况下,第二区间的长度等于第一区间的长度,第二区间内业务数据未包含在第二时刻时的滑动窗口中。
在本申请实施例中,所述第二区间也可以终止于滑动窗口在第二时刻时的起始时刻之后的特定时刻,在这种情况下,第二区间的长度大于第一区间的长度,第二区间内业务数据部分未包含或部分包含在第二时刻时的滑动窗口中。后面会结合对特定时刻的解释,对这种情况进行详细说明,这里先不展开。
在本申请实施例中,步骤S101~S103可以同时执行,也可以是基于一定的先后顺序分别执行。在后一种情况下,本申请对步骤S101~S103执行的先后顺序并不做限定,比如,可以按照步骤S101、S102、S103的顺序执行,也可以按照步骤S101、S103、S102的顺序执行,等等,后一个步骤可以在前一个步骤尚未执行完毕时就开始执行。
S104:根据所述滑动窗口在第一时刻时所包含业务数据的统计值、所述第一统计值和所述第二统计值,确定所述滑动窗口在所述第二时刻时所包含业务数据的统计值。
在本申请实施例中,可以确定滑动窗口在第一时刻时所包含业务数据的统计值与第一统计值之和与第二统计值之差,作为所述滑动窗口在所述第二时刻时所包含业务数据的统计值。
需要说明的是,在实际应用中,上一段中的运算顺序也可以进行调整,并不影响最后的运算结果,比如,对于步骤S104,也可以确定滑动窗口在第一时刻时所包含业务数据的统计值与第二统计值之差与第一统计值之和,或者,作为所述滑动窗口在所述第二时刻时所包含业务数据的统计值;或者,也可以确定第一统计值与第二统计值之差与滑动窗口在第一时刻时所包含业务数据之和,作为所述滑动窗口在所述第二时刻时所包含业务数据的统计值。
为了便于理解,结合图2进行说明,图2为本申请实施例提供的滑动窗口数据确定方法的原理示意图。
在图2中,a为滑动窗口在第一时刻时对应的时间区间,b为第一区间,c为第二区间,d为滑动窗口在第二时刻时对应的时间区间。需要说明的是,第二时刻时的滑动窗口本应也位于时间轴上,但是由于会与第一时刻时的滑动窗口部分重叠,不便于观看,因此,在图2中,并未将第二时刻时的滑动窗口画在时间轴上,而是向垂直于时间轴的方向平移了一段距离,画在了时间轴的上方。
可以看到,从时间上来看,d=a+b-c,则这些时间区间对应的统计值之间也具有对应的关系,由于a对应的统计值为滑动窗口在第一时刻时所包含业务数据的统计值,b对应的统计值为第一统计值,c对应的统计值为第二统计值,d对应的统计值为滑动窗口在第二时刻时所包含业务数据的统计值,则滑动窗口在第二时刻时所包含业务数据的统计值等于:滑动窗口在第一时刻时所包含业务数据的统计值与第一统计值之和再减去第二统计值。
在本申请实施例中,在确定滑动窗口在第二时刻时所包含业务数据的统计值后,还可以保存确定的该统计值,以便于后续还可以利用保存的该统计值,确定滑动窗口在晚于第二时刻的时刻时所包含业务数据的统计值。
通过上述方法,第二时刻可以是背景技术中所述的某一时刻,第一时刻可以是早于第二时刻的时刻,第一区间内业务数据即为所述业务从第一时刻至第二时刻产生的增量数据,这种基于增量数据,确定滑动窗口在第二时刻时所包含业务数据的统计值的方式相比于现有技术,所需获取的数据数目较少,可以减少对系统资源的消耗,因此,可以部分或全部地解决现有技术中的问题。后面还会结合实例,对技术效果详细说明,这里先不展开。
基于上述方法,本申请实施例还提供了图1中的方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请实施例中,可以预先在时间轴上划分出预定单位时间区间。比如,将时间轴上的每1分钟分别划分为一个预定单位时间区间,则预先确定各单位时间区间内业务数据的统计值即为:预先确定当前时刻之前的每分钟内业务数据的统计值,以及还可以确定当前时刻所属的一分钟(这一分钟可能尚未全部度过)内业务数据的统计值)内业务数据的统计值。
需要说明的是,“1分钟”是预定单位时间区间的长度示例,预定单位时间区间也可以是其他长度,比如,1秒钟、10秒钟、或半分钟等。
进一步地,由于第一区间、第二区间均是位于时间轴上的时间区间,因此,第一区间、第二区间是包含在由各预定单位时间区间构成的区间内的。在这种情况下,对于步骤S102、S103,获取第一区间内业务数据的第一统计值,以及获取第二区间内业务数据的第二统计值,具体可以包括:根据预先确定的所述各预定单位时间区间内业务数据的统计值,获取所述第一区间内业务数据的第一统计值,以及获取所述第二区间内业务数据的第二统计值。
例如,假定预先确定了预定单位时间区间A内业务数据的统计值为10,预定单位时间区间B内业务数据的统计值为6,且第一区间正好为预定单位时间区间A,第二区间正好为预定单位时间区间B。则可以获取到第一统计值,即为10,以及获取到第二统计值,即为6。
在实际应用中,第一区间、第二区间的长度(通常分别为1个预定单位时间区间的长度)一般小于或者远小于滑动窗口的长度(通常为5个甚至更多个预定单位时间区间的长度之和),在这种情况下,对于业务数据在任一个业务维度的统计值,在确定滑动窗口在第二时刻时所包含业务数据在该业务维度的统计值时,采用现有技术所需获取的数据数目要大于甚至远大于采用本申请的方案所需获取的数据数目。
以第一区间、第二区间分别为1个预定单位时间区间的长度,滑动窗口的长度为5个预定单位时间区间的长度之和为例,采用现有技术所需获取的数据数目为5个(即为滑动窗口对应的5个预定单位时间区间分别对应的统计值),则采用现有技术所需获取的数据数目为3个(即为步骤S101中获取的统计值、第一区间对应的1个预定单位时间区间对应的统计值、第二区间对应的1个预定单位时间区间对应的统计值)。一般地,在获取这些数据时是通过查询获取的,则采用现有技术相应地要发送5个查询请求,而采用本申请的方案相应地只要发送3个查询请求,又由于这些查询请求所请求的数据都是预先保存可以直接获得,由此可见,相比于现有技术,本申请的方案可以降低系统资源的消耗。
在本申请实施例中,滑动窗口可以基于以下两种滑动方式中的任一中方式进行滑动。
第一种滑动方式,滑动窗口可以实时持续进行滑动,则滑动窗口可以保持终止于当前时刻。在这种情况下,“滑动窗口在第一时刻时”表示的含义可以是:滑动窗口对应的时间区间的终止时刻为第一时刻时。优点是减少了对滑动窗口所处位置的限制。
第二种滑动方式,滑动窗口一般可以保持与多个连续的单位时间区间构成的区间对齐。具体地,滑动窗口可以非实时持续进行滑动,而是可以以预定单位时间区间作为周期,定时地进行滑动,滑动窗口每当当前时刻进入下一个预定单位时间区间时,即滑动一个预定单位时间区间,以使得在滑动后,滑动窗口终止于所述下一个预定单位时间区间的终止时刻。在这种情况下,“滑动窗口在第一时刻时”表示的含义可以是:滑动窗口对应的时间区间的终止时刻为第一时刻所属的预定单位时间区间的终止时刻时。优点是可以根据各单位时间区间对应的统计值直接获取到第一统计值和第二统计值,无需进行额外处理,或者需进行的额外处理很少。
在本申请实施例中,为了便于计算,第一时刻可以为各预定单位时间区间中的一个预定单位时间区间的终止时刻,更具体的,第一时刻可以为第二时刻所属的预定单位时间区间的前一个预定单位时间区间的终止时刻。
进一步地,当第一区间的长度为预定单位时间区间的长度的正整数倍时,第二区间的长度可以等于第一区间的长度;当第一区间的长度不为预定单位时间区间的长度的正整数倍时,第二区间的长度可以等于第一区间补齐至预定单位时间区间的长度的最近正整数倍后的长度。对于后一种情况,第二时刻可以是上述的特定时刻,第二时刻具体可以为当前时刻,在晚于当前时刻的时间区间对应的统计值为0,因为该时间区间尚未开始,则。
例如,当第一区间的长度等于预定单位时间区间的长度时(也即,当第一区间的长度等于预定单位时间区间的长度的1倍时),则第二区间的长度也等于预定单位时间区间的长度。如图3所示,图3为本申请实施例提供的滑动窗口数据确定方法的原理的一种详细示意图。
在图3中,将时间轴划分为预定单位时间区间,时间轴上的每一段分别表示一个预定单位时间区间。可以看到,滑动窗口对应的时间区间的长度等于5个预定单位时间区间的长度,第一区间b的长度等于预定单位时间区间的长度,则第二区间c的长度也等于预定单位时间区间的长度。
又例如,当第一区间的长度等于预定单位时间区间的长度的0.5倍时,第二区间的长度可以等于第一区间补齐(是增长而不是缩短)至预定单位时间区间的长度的最近正整数倍后的长度,由于所述最近正整数倍为1倍,因此第二区间的长度可以等于预定单位时间区间的长度,在这种情况下,第二时刻可以是上述的特定时刻,“滑动窗口在第二时刻时”表示的含义可以是:滑动窗口对应的时间区间的终止时刻为第二时刻所属的预定单位时间区间的终止时刻时。如图4所示,图4为本申请实施例提供的滑动窗口数据确定方法的原理的另一种详细示意图。
在图4中,第一区间的长度等于预定单位时间区间的长度的0.5倍,则第二区间的长度等于第一区间补齐至预定单位时间区间的长度的最近正整数倍(也即,1倍)后的长度,则第二区间的长度等于预定单位时间区间的长度。当第二时刻为当前时刻时,从第二时刻至第二时刻时的滑动窗口对应的时间区间的终止时刻的区间对应的统计值为0。
在本申请实施例中,第一时刻也可以不为各预定单位时间区间中的一个预定单位时间区间的终止时刻,而是为各预定单位时间区间中的一个预定单位时间区间除了起始时刻和终止时刻之外的一个时刻。在这种情况下,一般是采用第一种滑动方式,使滑动窗口滑动的,在这种情况下实施本申请的方案时,也可以不对第一区间的长度是否为预定单位时间区间的长度的正整数倍的情况进行区别处理,直接使第二区间的长度等于第一区间的长度即可。
上面对本申请实施例提供的滑动窗口数据确定方法进行了说明。为了帮助理解本申请的方案相比于现有技术的优点,本申请实施例还提供了一个实例用于对本申请的方案以及优点进行详细分析,下面进行说明。
在该实例中,假定统计值对应的业务维度为咨询“转出到账”,统计值为咨询“转出到账”的用户数量,获取数据所采用的方式为查询方式。假定预定单位时间区间的长度为1分钟,第一区间、第二区间的长度分别为1分钟,滑动窗口对应的时间区间的长度为5分钟,则基于滑动窗口可以确定“咨询“转出到账”的5分钟内用户数量统计值”。可以预先确定每分钟内咨询“转出到账”的用户数量统计值(简称为:分钟统计值)
假定第一时刻为10:19,第二时刻为同一天的10:20。则通过执行图1中的流程,可以查询到10:19时确定的“咨询“转出到账”的5分钟内用户数量统计值”(也即,滑动窗口在第一时刻时所包含业务数据的统计值),假定为20个,以及可以查询10:20对应的分钟统计值(也即,第一统计值),假定为10个,以及可以查询到或确定出10:15对应的分钟统计值(也即,第二统计值),假定为6个,进一步地,根据这几个统计值,可以确定出10:20时确定的“咨询“转出到账”的5分钟内用户数量统计值”等于:20+10-6=24个。
图5为本申请实施例提供的在一种实际应用场景(上述实例对应的应用场景)下,滑动窗口数据确定流程示意图。
在图5的流程中,第二时刻为当前时刻,用字段“LM_WCNT”表示滑动窗口在第一时刻时所包含业务数据的统计值,用字段“CM_CNT”表示第一统计值,用字段“LWM_CNT”表示第二统计值。窗口统计结果即为:滑动窗口在第二时刻时所包含业务数据的统计值。
为了便于比较,采用每秒查询率(Queries Per Second,QPS)和每秒事务处理量(Transaction Per Second,TPS)来度量本申请的方案与现有技术对系统资源的消耗。QPS为每秒钟系统能响应的查询数据量,比如,系统每秒能处理100个查询请求,则当前的QPS为100;TPS为每秒钟系统能处理的交易或事务的数量,比如,系统每秒能处理1000个查询请求,则当前的TPS为1000。
当采用现有技术(单位时间区间统计值相加的方式),确定第二时刻(假定为当前时刻)滑动窗口在所述第二时刻时所包含业务数据的统计值时,其中,第一时刻为当前时刻的前一分钟的时刻。假定需要确定统计值的业务维度一共有10万个,滑动窗口为30分钟,预定单位时间区间为1分钟,则每分钟需要查询30*10万=300万条数据,也即,每分钟需要系统处理300万个查询请求,每条数据分别为滑动窗口中的某一分钟内业务数据在某一个维度的统计值。
则QPS为300万/60秒=5万/秒。假定每条数据大小约为0.2KB,则网络开销大概需要0.5GB左右。TPS=10万/60=1666。而且,若滑动窗口变大,则,QPS还会相应地增大。
而当采用诸如上述实例中的滑动窗口数据确定方法,确定第二时刻(假定为当前时刻)滑动窗口在所述第二时刻时所包含业务数据的统计值时,其中,第一时刻为当前时刻的前一分钟的时刻。假定需要确定统计值的业务维度一共有10万个,滑动窗口为30分钟,预定单位时间区间为1分钟,则每分钟需要查询10万(每条数据分别为滑动窗口在第一时刻时所包含业务数据在某一个业务维度的统计值)+10万(每条数据分别为某一个业务维度对应的第一统计值)+10万(每条数据分别为某一个业务维度对应的第二统计值)=30万条数据,也即,每分钟需要系统处理30万个查询请求。
则QPS为30万/60秒=5千/秒。TPS=10万/60=1666。而且,若滑动窗口变大,QPS和TPS均不会增大。
由此可见,本申请的方案相比于现有技术,可以减少需查询的数据数目,进而可以减少对系统资源的消耗。
进一步地,目前,除了背景技术中提到的单位时间区间统计值相加的现有技术以外,还有第二种现有技术,第二种现有技术采用累计值相相减得到差值的方式,确定滑动窗口在第二时刻时所包含业务数据的统计值。本申请的方案相比于第二种现有技术,可以使TPS减半,CPU开销也会减半,从而也实现了减少对系统资源的消耗。下面进行说明。
当采用第二种现有技术时,假定第二时刻为当前时刻,滑动窗口为5分钟,单位时间区间为1分钟。可以预先确定各预定单位时间区间内业务数据的统计值;查询上一分钟时的业务数据的累计值以及当前时刻的分钟统计值至内存中;将上一分钟时的业务数据的累计值加上当前时刻的分钟统计值,得到当前时刻的业务数据的累计值;查询当前时刻推需要窗口计算时间的累计值(也即,5分钟前的业务数据的累计值)至内存中;将当前时刻的业务数据的累计值减去5分钟前的业务数据的累计值,确定出滑动窗口在当前时刻时所包含业务数据的统计值;保存确定出的累计值和统计值。
采用第二种现有技术时,假定需要确定统计值的业务维度一共有10万个,则每分钟需要查询30*10万=300万条数据,也即,每分钟需要系统处理300万个查询请求,每条数据分别为滑动窗口中的某一分钟内业务数据在某一个维度的统计值。则每分钟需要查询10万(每条数据分别为上一分钟时的业务数据在某一个业务维度的累计值)+10万(每条数据分别为某一个业务维度对应的当前时刻的分钟统计值)+10万(每条数据分别为5分钟前的业务数据在某一个业务维度的累计值)=30万条数据,也即,每分钟需要系统处理30万个查询请求。
则QPS为30万/60秒=5千/秒。TPS=10万*2/60=3333。而且,若滑动窗口变大,QPS和TPS均不会增大。
由此可见,相比于第二种现有技术,本申请的方案可以使TPS减半。具体的,本申请的方案要计算的指标有滑动窗口在第一时刻时所包含业务数据的统计值这一种,至于第一统计值和第二统计值一般现成可用,可以不用计算;而第二种现有技术要计算的指标至少有上一分钟时的业务数据的累计值、5分钟前的业务数据的累计值这两种,至于分钟统计值一般现成可用,可以不用计算。因此,本申请的方案在计算过程中减少了一个指标计算(指标减半),则TPS减半,CPU开销也减半,从而也实现了减少对系统资源的消耗。
以上为本申请实施例提供的滑动窗口数据确定方法,基于同样的思路,本申请实施例还提供相应的滑动窗口数据确定装置,如图6所示。
图6为本申请实施例提供的对应于图1的滑动窗口数据确定装置结构示意图,包括:
获取模块601,获取滑动窗口在第一时刻时所包含业务数据的统计值;以及
获取第一区间内业务数据的第一统计值,所述第一区间为所述第一时刻至第二时刻的时间区间;以及
获取第二区间内业务数据的第二统计值,所述第二区间的长度不小于所述第一区间的长度,所述第二区间起始于所述滑动窗口在第一时刻时的起始时刻;
确定模块602,根据所述滑动窗口在第一时刻时所包含业务数据的统计值、所述第一统计值和所述第二统计值,确定所述滑动窗口在所述第二时刻时所包含业务数据的统计值。
可选地,所述第一区间、所述第二区间包含在由各预定单位时间区间构成的区间内,获取模块601,根据预先确定的所述各预定单位时间区间内业务数据的统计值,获取所述第一区间内业务数据的第一统计值,以及获取所述第二区间内业务数据的第二统计值。
可选地,所述第一时刻为所述各预定单位时间区间中的一个预定单位时间区间的终止时刻。
可选地,当所述第一区间的长度为所述预定单位时间区间的长度的正整数倍时,所述第二区间的长度等于所述第一区间的长度;
当所述第一区间的长度不为所述预定单位时间区间的长度的正整数倍时,所述第二区间的长度等于所述第一区间补齐至所述预定单位时间区间的长度的最近正整数倍后的长度。
可选地,所述第二区间的长度等于所述第一区间的长度。
可选地,确定模块602,确定所述滑动窗口在第一时刻时所包含业务数据的统计值与所述第一统计值之和与所述第二统计值之差,作为所述滑动窗口在所述第二时刻时所包含业务数据的统计值。
图6中的装置具体可以位于所述业务相关的设备上。
本申请提供的装置是与本申请提供的方法一一对应的,因此,装置也具有与对应的方法类似的有益技术效果,由于上面已经对各方法的有益技术效果进行了详细说明,因此,这里不再赘述对应的各装置的有益技术效果。
本领域内的技术人员应明白,本发明的实施例提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中预定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中预定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中预定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。