具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构100的示意图。
如图1所示,系统架构100可以包括终端设备101(终端设备可以为智能手机、平板电脑、便携式计算机、台式计算机、挂号机中的一种或多种)、网络102和服务器103。网络102用以在终端设备101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线通信链路、无线通信链路等等。
应该理解,图1中的终端设备101、网络102、服务器103和电表104的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备101、网络102、服务器103和电表104。比如服务器103可以是多个服务器组成的服务器集群等。
在本申请的一个实施例中,服务器103可以通过无线电载波通信获取电表104中的电表数据。
在本申请的一个实施例中,服务器103通过采集每一电表的电表数据,电表数据包括电表的表号、电表的抄读状态、电表所属的划分区域,再基于电表数据,更新非关系型数据库中分布存储的有关电表抄读的统计数据,非关系型数据库中存储的统计数据是用户经常调用的数据,将数据存储在非关系型数据库中比将数据存储在关系型数据库中,调用速度更快。再基于统计数据,计算电表抄读成功率,使用户更快的得到抄读成功率,同时,用户也能从非关系型数据库中快速的调用需要的数据。
需要说明的是,本申请实施例所提供的电表抄读成功率的获取方法一般由服务器103执行,相应地,电表抄读成功率的获取装置一般设置于服务器103中。但是,在本申请的其它实施例中,终端设备101也可以与服务器103具有相似的功能,从而执行本申请实施例所提供的电表抄读成功率的获取方法。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2示意性示出了根据本申请的一个实施例的电表抄读成功率的获取方法的流程图,该电表抄读成功率的获取方法的执行主体可以是服务器,比如可以是图1中所示的服务器103。
参照图2所示,该电表抄读成功率的获取方法至少包括步骤S210至步骤S240,详细介绍如下:
在步骤S210中,采集每一电表的电表数据,电表数据包括电表的表号、电表的抄读状态、电表所属的划分区域。
在本申请的一个实施例中,电表的表号可以按照电表所属的区域设定。
在本申请的一个实施例中,电表的抄读状态包括抄读成功和抄读失败。
在本申请的一个实施例中,电表所属的划分区域分为多个层级,可以按照省/自治区/直辖市、市/县级市、县/区、街道/乡划分区域的层级,也可以按照不同等级的变电站管辖的范围划分区域的层级,可以获取电表所属的划分区域的多个层级。
在步骤S220中,基于电表数据,更新非关系型数据库中分布存储的有关电表抄读的统计数据。
在本申请的一个实施例中,非关系型数据库为非关系型内存数据库,以内存数据库的方式存储可以使数据存储更加稳定,避免丢失。可以将统计数据以一个或多个非关系型数据表的形式存储在非关系型数据库中。
在本申请的一个实施例中,可以将统计数据以键值对方式存储在非关系型数据表中。
在本申请的一个实施例中,可以基于电表的表号、电表的抄读状态、电表所属的划分区域,更新非关系型数据库中存储的有关各电表采集详情的第一统计数据。
在本申请的一个实施例中,可以将电表的表号、电表的抄读状态、电表所属的划分区域直接存储在非关系型数据库中,再根据电表的表号、电表的抄读状态、电表所属的划分区域更新这些直接存储的数据。
在本申请的一个实施例中,可以将电表的表号、电表的抄读状态、电表所属的划分区域经过计算后存储在非关系型数据库中。
在本申请的一个实施例中,可以将根据电表的表号、电表所属的划分区域得到的第一统计数据以表1的方式存储在非关系型数据库中,如表1所示:
表号 |
所属区域树 |
备注 |
0001 |
A1/B1/C1 |
A1为顶级节点,C1为叶子节点 |
0002 |
A1/B1/C1 |
A1为顶级节点,C1为叶子节点 |
0004 |
A1/B2/C2 |
A1为顶级节点,C2为叶子节点 |
0005 |
A1/B3/C4 |
A1为顶级节点,C4为叶子节点 |
0006 |
A1/B3/C4 |
A1为顶级节点,C5为叶子节点 |
表1
表1示出了电表的表号和电表所属区域树的关系。用户可以通过查询表1直接获取电表所属的区域树。
在本申请的一个实施例中,可以将电表数据中的树形数据转换成平铺型数据得到转换后的电表数据;基于转换后的电表数据,更新非关系型数据库中分布存储的有关电表抄读的统计数据,从而使用户可以直接调用平铺后的统计数据,避免从树形数据中调用数据后再计算得到平铺型数据,可以使用户更快的得到统计数据。
在本申请的一个实施例中,可以将表1中的数据平铺转换后形成表2存储在非关系型数据库中,可以进行flatmap转换,转换结果如表2所示:
表号 |
所属区域 |
0001 |
C1 |
0001 |
B1 |
0001 |
A1 |
0002 |
C1 |
0002 |
B1 |
0002 |
A1 |
0004 |
C2 |
0004 |
B2 |
0004 |
A1 |
0005 |
C4 |
0005 |
B3 |
0005 |
A1 |
0006 |
C4 |
0006 |
B3 |
0006 |
A1 |
表2
用户可以直接调用表2中的数据,直观的得出不同区域层级中电表的数量。
在本申请的一个实施例中,可以计算出不同区域层级中电表的数量与区域形成键值对对应存储。
在本申请的一个实施例中,可以将区域名称命名为X,表2命名为flatMapData,则每个区域电表数量为:
Meter Count for X=f(X)=flatMapData.filter(N=>N==X).Count
例如,查找A1区域中电表的数量的算法为:Meter Count for A1=f(A1)=flatMapData.filter(N=>N==‘A1’).Count,能够得到Meter Count for A1=5。
在本申请的一个实施例中,可以获取电表的使用状态;基于电表的使用状态、电表的表号、电表的抄读状态、电表所属的划分区域,更新第一统计数据。
在该实施例中电表的使用状态可以包括:未安装、已安装未使用、损坏待维修、停止使用等,可以按照电表的使用状态确定需要更新的电表。可以不采集未安装、已安装未使用、损坏待维修、停止使用状态中的一种或几种状态下的电表数据,避免浪费资源。
在本申请的一个实施例中,可以将需要采集的电表的表号和其使用状态对应存储在非关系型数据库中,从而使用户方便的获取哪个电表需要采集。
在本申请的一个实施例中,可以基于电表的表号、电表的抄读状态、电表所属的划分区域,更新非关系型数据库中存储的有关各划分区域采集详情的第二统计数据,第一统计数据与第二统计数据分布存储。分布存储可以使第一统计数据和第二统计数据的调用更加方便。
在本申请的一个实施例中,可以以哈希结构存储第二统计数据。
在本申请的一个实施例中,可以将需要采集的电表的表号和其对应的区域对应存储在非关系型数据库中,从而使用户方便的获取在某个区域需要采集的电表的数量。
在本申请的一个实施例中,可以将在第一冻结时间时不同区域中需要采集的电表的数量存储在非关系型数据库中,如表3:
Key |
Value |
RMC:第一区域:第一冻结时间 |
100000 |
RMC:第二区域:第一冻结时间 |
150000 |
表3
表3的计算算法为:
Key=prefix+Region+freezeDay;
Value=Meter Count
表3中Key列中的RMC(Region Meter Count,区域电表数量)是表3中Key值的索引,通过表3用户可以方便的获取在第一冻结时间时第一区域中需要采集的电表的数量为100000,第一冻结时间时第二区域中需要采集的电表的数量为150000。
在本申请的一个实施例中,可以将需要采集的电表的表号、电表所在的区域、冻结时间对应存储在非关系型数据库中,从而使用户方便的获取在冻结时间时在某个区域具体有哪些电表的数据需要采集,如表4:
表4
表4的计算算法为:
Key=prefix+Transformer Region+FreezeDate;
Hash Field=Meter No;
在表4中Key列存储的是统计的区域,其中索引prefix是SC(Should Collected,应该采集);Hash Field一列中存储的是该区域中电表的表号经过哈希计算得到的哈希值,Hash Value一列中存储的是电表的使用状态,Hash Value值为0,表示不需要采集电表数据;Hash Value值为1,表示需要采集电表数据。表3的时间复杂度为O(1),表示时间复杂度为常量,不会随着电表数量增加而增加。
在本申请的一个实施例中,可以按照电表的表号查找电表的使用状态,如果该表号对应的电表不需要采集,则不采集非关系型数据库中该电表的电表数据;如果该表号对应的电表需要采集,则采集非关系型数据库中该电表的电表数据,避免浪费计算资源,提高电表抄读成功率的计算效率。
在本申请的一个实施例中,第二统计数据可以为基于电表的表号、电表的抄读状态、电表所属的划分区域得到的每个区域中电表的采集详情,如表5所示:
表5
表5的计算算法为:
Key=prefix+Transformer Region+FreezeDate;
Hash Field=Meter No;
表5中的Key列存储的是统计的区域索引prefix为L(Load,采集曲线);Hash Field一列中存储的是该区域中电表的表号,Hash Value一列中存储的是电表的抄读状态,HashValue值为0,抄读不成功;Hash Value值为1,抄读成功。表5的时间复杂度为O(1),表示时间复杂度为常量,不会随着电表数量增加而增加。
在本申请的一个实施例中,可以获取电表的使用状态,基于电表的表号、电表的使用状态确定应采集电表的表号;基于应采集电表的表号、电表所属的划分区域,确定各划分区域应采集电表的数量;基于各划分区域应采集电表的数量和电表的抄读状态更新第二统计数据。只采集应该采集的电表的数据,避免浪费资源,提高电表抄读成功率的计算效率。
在本申请的一个实施例中,可以按照区域将每个区域中的应采集电表的总数量和区域对应存储作为第二统计数据存储在非关系型数据库中,使得用户可以方便的获取某个区域中应采集电表的数量。
在本申请的一个实施例中,可以按照区域将该区域中每个电表的使用状态的详情作为第二统计数据存储在非关系型数据库中,使得在更新该区域的电表时,可以事先比对待更新的电表数据是否应该更新,避免浪费资源,提高电表抄读成功率的计算效率。
继续参照图2,在步骤S230中,基于统计数据,计算电表抄读成功率。
在本申请的一个实施例中,可以基于第一统计数据计算电表抄读成功率,并生成采集成功率详情列表,展示采集成功率详情列表。
在本申请的一个实施例中,采集成功率详情列表中可以展示各个电表的抄读状态,使用户方便的获取某个电表的抄读状态。
在本申请的一个实施例中,采集成功率详情列表中可以展示各个电表所在的区域。
在本申请的一个实施例中,可以基于第二统计数据计算电表抄读成功率,并生成采集成功率统计图,展示采集成功率统计图。
在本申请的一个实施例中,可以采用柱状图、折线图、饼状图等使用户直观的获取某个区域的电表抄读成功率状态,也可以根据集成功率统计图直观的获取每个区域电表抄读成功率的变化情况。
在图2所示的实施例中,通过采集每一电表的电表数据,电表数据包括电表的表号、电表的抄读状态、电表所属的划分区域,再基于电表数据,更新非关系型数据库中分布存储的有关电表抄读的统计数据,非关系型数据库中存储的统计数据是用户经常调用的数据,将数据存储在非关系型数据库中比将数据存储在关系型数据库中,调用速度更快。再从非关系型数据库中调用统计数据,计算电表抄读成功率,使用户更快的得到抄读成功率,同时,用户也能从非关系型数据库中快速的调用需要的数据。
在本申请的一个实施例中,可以获取采集电表数据的冻结时间和采集时间;基于冻结时间、采集时间、电表的表号、电表的抄读状态、电表所属的划分区域,更新非关系型数据库中分布存储的有关各电表时间详情的第四统计数据,第四统计数据用于表示各电表的通信质量。
在本申请的一个实施例中,可以基于第四统计数据生成采集成功率详情列表,并展示采集成功率详情列表,采集成功率详情列表可以展示每个电表在采集时的通信质量。
在本申请的一个实施例中,可以基于第四统计数据生成采集成功率统计图,并展示采集成功率统计图,采集成功率统计图可以展示每个区域内电表采集时的通信质量。
在本申请的一个实施例中,可以将某个电表在采集时的冻结时间和采集时间对应存储,根据冻结时间和采集时间的差值得到该电表在采集时的通信质量,其中,若冻结时间和采集时间的差值越大,则确认通信质量越差;若冻结时间和采集时间的差值越小,则确认通信质量越好。
在本申请的一个实施例中,可以将某个电表在采集时的冻结时间和采集时间对应存储,如表6所示:
表6
表6的计算算法为:
Key=prefix+Meter No+freezeDay
Hash Field=[freezeTime(yyyy-mm-dd hh:mm:ss)-freezeDay(yyyy-mm-dd 00:00:00)]÷1000÷60
Hash Value=[collect Time(yyyy-mm-dd hh:mm:ss)-freezeTime(yyyy-mm-ddhh:mm:ss)]÷1000÷60÷15
在表6中,Key列存储的是某个电表的表号和冻结时间,其中C(Count,数值)是Key列的索引prefix,MeterNo1和MeterNo2是表号,yy/mm/dd(年/月/日)是冻结日期。HashField列存储的是冻结时间,冻结时间默认为每天的零时,Hash Field列数值为1,表示冻结时间相对于零时偏差1分钟,即冻结时间是00:01;Hash Field列数值为2,表示冻结时间相对于零时偏差2分钟,即冻结时间是00:02……。Hash Value列存储的是采集时间与冻结时间的偏差,可以设定一个采集周期是15分钟,Hash Value列数值为10,表示采集时间距离冻结时间10个采集周期,即采集时间距离冻结时间150分钟;Hash Value列数值为15,表示采集时间距离冻结时间15个采集周期,即采集时间距离冻结时间225分钟……
表6的时间复杂度为O(1),表示时间复杂度为常量,不会随着电表数量增加而增加。
在本申请的一个实施例中,可以使用以下算法查询表6中某个电表在冻结日的采集详情:
Key:Prefix+meter No+freezeDay
再根据查询到的值生成采集成功率详情列表。
在本申请的一个实施例中,可以将区域、采集周期和在该区域和采集周期内采集的电表数量对应存储,根据采集周期内采集的电表数量得到该周期的通信质量,其中,若某个采集周期内采集的电表数量越少,则确认通信质量越差;若某个采集周期内采集的电表数量越多,则确认通信质量越好。
在本申请的一个实施例中,可以将某区域内在某个采集周期与该周期内采集的电表对应存储,如表7:
表7
表7的计算算法为:
Key=prefix+MeterNo+freezeDay
Hash Field=[collect Time(yyyy-mm-dd hh:mm:ss)-freezeTime(yyyy-mm-ddhh:mm:ss)]÷1000÷60÷15
Hash Value=Meter Count Number
在表7中,Key列存储的是采集区域是第一区域(Region No1)采集日期(yyyy/mm/dd,年/月/日),MC(Meter Count,电表数量)是表7中Key列的索引。Hash Field列存储的是采集时间是第几个周期,Hash Value列存储的是在该周期内采集的电表数量。例如,HashField值为10,Hash Value值为20,表示在第10个采集周期内,采集了20个电表的抄读状态;Hash Field值为15,Hash Value值为18,表示在第15个采集周期内,采集了18个电表的抄读状态……
表7的时间复杂度为O(1),表示时间复杂度为常量,不会随着电表数量增加而增加。
在本申请的一个实施例中,可以根据表7按照以下算法计算出在第X区域中总共采集了多少个电表的抄读状态:
Key:Prefix+X+freezeTime
再根据f(x)的值生成采集成功率统计图。
在本申请的一个实施例中,可以获取非关系型数据库中存储的统计数据对应的冻结时间;若冻结时间大于第一阈值,则将统计数据存储至备用数据库中,并将统计数据从非关系型数据库中删除,从而使非关系型数据库中存储的电表数据为最新的数据的同时,避免非关系型数据库中存储过多的数据,防止因数据过多导致用户读取速度慢,进一步提高了获取电表抄读成功率的获取效率。
在本申请9的一个实施例中,可以将从非关系型数据库中删除的统计数据转存至关系型数据库中,以供用户查询。
在该实施例中,由于将已经变化不大的历史数据经过内存编排一次性插入关系型数据库,结合关系型数据库的批量操作模式,能使数据库更新频率降低80%以上。
在本申请的一个实施例中,可以将第一阈值设定为两天,两天内的电表数据更新至非关系型数据库中,超过两天的电表数据由非关系型数据库转移至关系型数据库中存储,图3示出了根据本申请的一个实施例的用户查询电表抄读成功率的示意图。
在本申请的一个实施例中,可以将电表抄读成功率存储至非关系型数据库中直接供用户查询。
在本申请的一个实施例中,应用本申请的电表抄读成功率的获取方法可以在2秒内实现抄读成功率的更新。
在本申请的一个实施例中,将本申请的电表抄读成功率的获取方法应用至X86架构服务器(4Core 16GB)中,处理速度至少能达到15000条/秒。
在本申请的一个实施例中,应用本申请的电表抄读成功率的获取方法,可以使Web端实时数据查询内存数据库占90%以上,极大降低了关系型数据库的交互频率,Web端平均响应速度由秒级提高至毫秒级。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的任务处理时间方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的电表抄读成功率的获取方法的实施例。
图4示意性示出了根据本申请的一个实施例的电表抄读成功率的获取装置的框图。
参照图4所示,根据本申请的一个实施例的电表抄读成功率的获取装置400,包括采集模块401、更新模块402和计算模块403。
在本申请的一些实施例中,基于前述方案,采集模块401用于采集每一电表的电表数据,电表数据包括电表的表号、电表的抄读状态、电表所属的划分区域;更新模块402用于基于电表数据,更新非关系型数据库中分布存储的有关电表抄读的统计数据;计算模块403用于基于统计数据,计算电表抄读成功率。
在本申请的一些实施例中,基于前述方案,更新模块402还配置为:基于电表的表号、电表的抄读状态、电表所属的划分区域,更新非关系型数据库中存储的有关各电表采集详情的第一统计数据;计算模块403配置为:基于第一统计数据计算电表抄读成功率,并生成采集成功率详情列表;展示采集成功率详情列表。
在本申请的一些实施例中,基于前述方案,更新模块402还配置为:获取电表的使用状态;基于电表的使用状态、电表的表号、电表的抄读状态、电表所属的划分区域,更新第一统计数据。
在本申请的一些实施例中,基于前述方案,更新模块402还配置为:基于电表的表号、电表的抄读状态、电表所属的划分区域,更新非关系型数据库中存储的有关各划分区域采集详情的第二统计数据,第一统计数据与第二统计数据分布存储;计算模块403配置为:基于第二统计数据计算电表抄读成功率,并生成采集成功率统计图;展示采集成功率统计图。
在本申请的一些实施例中,基于前述方案,更新模块402还配置为:获取电表的使用状态,基于电表的表号、电表的使用状态确定应采集电表的表号;基于应采集电表的表号、电表所属的划分区域,确定各划分区域应采集电表的数量;基于各划分区域应采集电表的数量和电表的抄读状态更新第二统计数据。
在本申请的一些实施例中,基于前述方案,更新模块402还配置为:将电表数据中的树形数据转换成平铺型数据得到转换后的电表数据;基于转换后的电表数据,更新非关系型数据库中分布存储的有关电表抄读的统计数据。
在本申请的一些实施例中,基于前述方案,更新模块402还配置为:获取采集电表数据的冻结时间和采集时间;基于冻结时间、采集时间、电表的表号、电表的抄读状态、电表所属的划分区域,更新非关系型数据库中分布存储的有关各电表时间详情的第四统计数据,第四统计数据用于表示各电表的通信质量。
在本申请的一些实施例中,基于前述方案,电表抄读成功率的获取装置还包括:删除模块,用于获取非关系型数据库中存储的统计数据对应的冻结时间;若冻结时间大于第一阈值,则将统计数据存储至备用数据库中,并将统计数据从非关系型数据库中删除。
在本申请的一些实施例中,基于前述方案,更新模块402还配置为:非关系型数据库为非关系型内存数据库。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图5来描述根据本申请的这种实施方式的电子设备50。图5显示的电子设备50仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,电子设备50以通用计算设备的形式表现。电子设备50的组件可以包括但不限于:上述至少一个处理单元51、上述至少一个存储单元52、连接不同系统组件(包括存储单元52和处理单元51)的总线53、显示单元54。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元51执行,使得所述处理单元51执行本说明书上述“实施例方法”部分中描述的根据本申请各种示例性实施方式的步骤。
存储单元52可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)521和/或高速缓存存储单元522,还可以进一步包括只读存储单元(ROM)523。
存储单元52还可以包括具有一组(至少一个)程序模块525的程序/实用工具524,这样的程序模块525包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线53可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备50也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备50交互的设备通信,和/或与使得该电子设备50能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口55进行。并且,电子设备50还可以通过网络适配器56与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器56通过总线53与电子设备50的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施方式的方法。
根据本申请一个实施例,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本申请的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本申请各种示例性实施方式的步骤。
根据本申请一个实施例,根据本申请的实施方式的用于实现上述方法的程序产品,可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本申请的范围仅由所附的权利要求来限制。