数据处理方法及装置、数据查询方法及装置
技术领域
本申请涉及计算机软件技术领域,尤其涉及数据处理方法及装置、数据查询方法及装置。
背景技术
随着云计算技术的迅速发展,大量云计算相关的产品也迅速涌现,其中一类是基于平台即服务(Platform as a Service,PaaS)服务模式的产品。比如,PaaS服务模式的客服系统产品(以下简称为:客服系统)。
客服系统可以提供给不同类别的公司使用,比如,证券、保险、票务、互联网等公司,这些公司的客户人员可以使用该客服系统对他们的客户进行热线在线服务,客户人员服务过程中,最基本的需求就是定位服务对象。
在现有技术中,客服系统由统一的平台提供支持,使用客服系统的各公司的客户信息以数据记录的形式被统一存储在平台的数据库中。在服务过程中,客服人员可以通过在客服系统的客户端中键入查询字符串,向服务器发送查询请求,以定位服务对象,服务器根据查询请求,采用结构化查询语言(Structured Query Language,SQL)中的语句在该数据库中查询对应的客户信息记录并返回,从而客户人员能够根据返回结果定位服务对象。
但是,上述现有技术的查询方式速度较慢,而且需等待客服人员将整个查询字符串键入完毕后才能开始查询以及展示查询结果,效率较低。
发明内容
本申请实施例提供数据处理方法及装置、数据查询方法及装置,用以解决如下技术问题:上述现有技术的查询方式速度较慢,而且需等待客服人员将整个查询字符串键入完毕后才能开始查询以及展示查询结果,效率较低。
为解决上述技术问题,本申请实施例是这样实现的:
本申请实施例提供的一种数据处理方法,包括:
服务器从数据库中获取各数据记录,每个数据记录包含多个搜索条件字段的字段值;
将各所述字段值作为前缀串,并根据各所述前缀串生成前缀树;以及,
为所述前缀树的每个特定节点关联并保存所述各数据记录中对应的数据记录,所述特定节点是对应的前缀串为所述字段值的节点,所述对应的数据记录包含至少一个等于所述对应的前缀串的字段值。
本申请实施例提供的一种数据处理装置,所述装置位于服务器,包括:
获取模块,从数据库中获取各数据记录,每个数据记录包含多个搜索条件字段的字段值;
生成模块,将各所述字段值作为前缀串,并根据各所述前缀串生成前缀树;以及,
关联模块,为所述前缀树的每个特定节点关联并保存所述各数据记录中对应的数据记录,所述特定节点是对应的前缀串为所述字段值的节点,所述对应的数据记录包含至少一个等于所述对应的前缀串的字段值。
本申请实施例提供的一种数据查询方法,包括:
服务器接收查询请求,所述查询请求是每当有增量的查询字符输入时被发送至所述服务器的,所述查询请求携带已输入的查询字符串;
根据所述查询字符串,在预先生成的前缀树中搜索目标节点;
返回为所述目标节点预先关联并保存的数据记录。
本申请实施例提供的一种数据查询装置,所述装置位于服务器,包括:
接收模块,接收查询请求,所述查询请求是每当有增量的查询字符输入时被发送至所述服务器的,所述查询请求携带已输入的查询字符串;
搜索模块,根据所述查询字符串,在预先生成的前缀树中搜索目标节点;
返回模块,返回为所述目标节点预先关联并保存的数据记录。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:可以快速获取查询结果,而且无需等待客服人员将完整查询字符串键入,而是可以随着客服人员输入查询字符相应地进行渐进式地查询相应的客户信息,效率较高,因此,可以部分或全部地解决现有技术中的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据处理方法的流程示意图;
图2为本申请实施例提供的一种实际应用场景下,所述前缀树的结构示意图;
图3为本申请实施例提供的一种数据查询方法的流程示意图;
图4为本申请实施例提供的一种实际应用场景下,所述数据查询方法与现有技术分别在集群中实施时的原理对比示意图;
图5a~5c为本申请实施例提供的一种实际应用场景下,所述数据查询方法实施时终端页面的效果示意图;
图6为本申请实施例提供的对应于图1的一种数据处理装置的结构示意图;
图7为本申请实施例提供的对应于图3的一种数据查询装置的结构示意图。
具体实施方式
本申请实施例提供数据处理方法及装置、数据查询方法及装置。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请的方案不仅适用于背景技术的场景,也适用于查询客户信息以外的其他信息(比如,查询指定的业务信息等)的场景。为了便于描述,以下各实施例主要以背景技术的场景为例进行说明。
在本申请实施例中,如背景技术中所述,各数据记录通常统一保存于指定的数据库中,若每次查询时都去数据库中读取则速度较慢,因此,在本申请的方案,服务器可以预先将各数据记录中的多个搜索条件字段的字段值读取出来,用以生成前缀树(前缀树也可以称为:Trie树),该前缀树保存于服务器上,则每次查询时无需再访问数据库,而是可以通过前缀树获得查询结果。
进一步地,该前缀树可以保存于服务器的内存中,如此,可以加快对前缀树的访问速度。
下面结合图1,先对服务器生成前缀树相关的处理过程进行说明。
图1为本申请实施例提供的一种数据处理方法的流程示意图,该流程的执行主体可以是服务器。从设备角度而言,所述服务器具体可以是以下设备:个人计算机、大中型计算机、计算机集群、手机、平板电脑、智能可穿戴设备、车机等。
图1中的流程可以包括以下步骤:
S101:服务器从数据库中获取各数据记录,每个数据记录包含多个搜索条件字段的字段值。
在本申请实施例中,所述数据记录可以是客户信息记录内的至少部分字段及字段值。每条客户信息记录中包含多个字段及对应的字段值,比如,用户标识(ID)字段、姓名字段、公司名字段、联系电话字段、性别字段等。可以预先将至少部分字段指定为搜索条件字段,以便于客服人员后续基于搜索条件字段的字段值的前缀,请求查询对应的数据记录内的客户信息。
S102:将各所述字段值作为前缀串,并根据各所述前缀串生成前缀树。
在本申请实施例中,对于所述前缀树中的节点,某些节点对应的前缀串为所述多个搜索条件字段的字段值中的一个字段值,某些节点对应的前缀串并非所述字段值。为了便于区分,将前一类节点称为“特定节点”。
S103:为所述前缀树的每个特定节点关联并保存所述各数据记录中对应的数据记录,所述特定节点是对应的前缀串为所述字段值的节点,所述对应的数据记录包含至少一个等于所述对应的前缀串的字段值。
在本申请实施例中,根据前面的说明可知,特定节点对应于字段值,而字段值可能属于所述各数据记录中的一条或多条数据记录(不同的搜索条件字段可能有相同的字段值,不同的数据记录的同一搜索条件字段也可能有相同的字段值)。
因此,可以在服务器上预先为特定节点关联并保存所述各数据记录中对应的数据记录(可能有一条或多条)。如此,在查询时可以在搜索到特定节点时直接获取对应的数据记录,而无需访问数据库。
通过图1的方法,基于该方法得到的前缀树查询客户信息时,可以快速获取查询结果,而且无需等待客服人员将完整查询字符串键入,而是可以随着客服人员输入查询字符相应地进行渐进式地查询相应的客户信息,效率较高,因此,可以部分或全部地解决现有技术中的问题。
基于图1的方法,本申请实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
在实际应用中,如前所述,客服系统平台可为多个公司(可以将所述公司称为:客服系统平台的租户;后续简称为:租户)共同使用,而不同租户的客户可能不同。因此,可以基于所属租户这个要素,对各数据记录进行划分,以及在生成前缀树和关联保存数据记录时也相应地进行数据隔离,从而可以使得任一公司的客服人员在查询客户信息的时候,只查询到自己公司的客户信息,有利于更快地定位服务对象。
具体地,所述各数据记录可以划分为多个数据记录集合,每个数据记录集合对应于一个租户,并可以用诸如租户ID(比如,公司名称、公司代号等)等标识作为对应的数据记录集合的集合标识。
进而,对于步骤S103,所述为所述前缀树的每个特定节点关联并保存所述各数据记录中对应的数据记录,具体可以包括:
分别针对所述前缀树的每个特定节点执行:
所述服务器保存所述各数据记录中该特定节点对应的数据记录,并建
立以下两类数据之间的关联关系:所述该特定节点对应的数据记录在所述
多个数据记录集合中所属的数据记录集合的集合标识、保存的所述该特定
节点对应的数据记录。
其中,所述关联关系用于在确定对应的特定节点后,快速获取对应的数据记录。
在实际应用中,所述关联关系的建立有多种具体的实施方式。比如,出于提高查询速度的目的考虑,所述实施方式可以是基于哈希表的方式、基于二叉树的方式等。当租户数量较多时,优选地可以采用基于哈希表的方式,下面进行具体说明。
具体地,所述服务器保存所述各数据记录中该特定节点对应的数据记录,并建立以下两类数据之间的关联关系,可以包括:
所述服务器在该特定节点中保存所述各数据记录中该特定节点对应的数据记录在所述多个数据记录集合中所属的数据记录集合的集合标识;以及,为该特定节点建立对应的哈希表;在该哈希表中保存:该集合标识、所述该特定节点对应的数据记录;
其中,该集合标识作为该哈希表的键(key),所述该特定节点对应的数据记录作为该key的值(value)。
该哈希表可以保存于对应的特定节点内,也可以保存于服务器中所述前缀树之外的存储区域中。后续查询时,可以通过对确定的目标节点中的指定集合标识进行哈希运算即可快速定位到该哈希表中的对应区域,以及获取到该对应区域中保存的数据记录,作为查询结果,查询速度较快。
在实际应用中,由于不同的特定节点对应的一条或多条数据记录可能相同,因此,若针对各特定节点分别保存对的数据记录,则一些数据记录可能要重复保存不止一次,因此,存在冗余,浪费服务器的存储空间。针对该问题,可以对上述方案进行改进。比如,在服务器上可以只保存一份数据记录,并对数据记录建立索引或者引用,进而,在特定节点中无需保存对应的数据记录本身,而是可以只保存对应的数据记录的索引或者引用即可,相应地,在查询时,需要额外地执行索引数据记录或者引用数据记录的动作,才能够获取到对应的数据记录。
以索引为例。所述建立以下两类数据之间的关联关系,具体可以包括:所述服务器为保存的所述该特定节点对应的数据记录建立对应的索引;为该特定节点建立对应的哈希表;在该哈希表中保存:所述该特定节点对应的数据记录在所述多个数据记录集合中所属的数据记录集合的集合标识、该索引;
其中,该集合标识作为该哈希表的key,该索引作为该key的value。
需要说明的是,上述哈希表也可以有多种具体实现方式,比如,hashmap、hashtable等。
在本申请实施例中,服务器预先生成前缀树时,还可以在所述前缀树的每个特定节点中保存结尾标记,所述结尾标记用于表明所述特定节点对应的前缀串为所述字段值。如此,便于后续查询时更快地在前缀树中搜索目标节点,原因在于,目标节点中肯定保存有结尾标记,则对于未保存有结尾标记的节点可以直接放过。
上面对服务器生成前缀树相关的处理过程进行了详细说明。更直观地,本申请实施例还提供了一种实际应用场景下,所述前缀树的结构示意图,如图2所示。
在图2的前缀树中,以根节点下一层最左侧的节点(称为示例节点)为例,展示了节点内包含的内容。假定示例节点是上述的特定节点,假定上述的数据集合标识为租户ID,上述的数据记录为客户信息记录。
特定节点中至少可以包含如下四部分内容:节点字符;结尾标记;对应的数据记录所属的一个或多个租户ID;字节点的引用(或指针)。
特定节点以外的节点(不包括根节点)中至少包含如下两部分内容:节点字符;字节点的引用(或指针)。
上述的“节点对应的前缀串”即为从根节点出发顺序至该节点,沿途经过各节点(包括该节点,但不包括根节点)的节点字符依次连接构成的字符串。比如,示例节点对应的前缀串只包含1个字符为“1”,示例节点下一层最左侧的节点对应的前缀串包含2个字符为“11”,示例节点下一层左起第二个节点对应的前缀串包含2个字符为“12”,等等。
进一步地,节点中的租户的ID所关联的客户信息记录可以保存在该节点内,也可以保存于服务器上的其他位置。比如,示例节点中还可以包含hashmap,该hashmap的key为示例节点中的租户ID,该hashmap的key的value为对应租户ID的客户信息记录。由此可以实现不同租户的客户信息记录的隔离。
基于上述的前缀树,本申请实施例还提供了一种数据查询方法的流程示意图,如图3所示。图3中的流程的执行主体也可以是上述服务器。
图3中的流程可以包括以下步骤:
S301:服务器接收查询请求,所述查询请求是每当有增量的查询字符输入时被发送至所述服务器的,所述查询请求携带已输入的查询字符串。
在本申请实施例中,当客服人员在客服终端上输入查询字符串时,无需等待完整的查询字符串输入完毕,而是可以在查询字符串中包含的输入过程中,实时地获得已输入查询字符串(为完整的查询字符串的前缀部分)对应的查询结果。查询请求可以是每当客服终端检测到指定数量(通常是1个)的增量的查询字符输入时发送的,查询请求的发送过程客户人员可以是无感知的,客户人员无需进行诸如“点击回车键”、“点击查询按钮”等主动操作以对已输入查询字符串进行确认。可以将这种查询方式形象地称为:渐进式搜索条件查询。
S302:根据所述查询字符串,在预先生成的前缀树中搜索目标节点,所述目标节点对应的前缀串以所述查询字符串为前缀。
需要说明的是,步骤S302中所述的前缀树,以及后面段落中提到的前缀树可以是:图1的方法中的前缀树,或者图1的方法所对应的实施例中的前缀树。简明起见,后面不再赘述。
S303:返回为所述目标节点预先关联并保存的数据记录。
通过图3中的方法,可以快速获取查询结果,而且无需等待客服人员将完整查询字符串键入,而是可以随着客服人员输入查询字符相应地进行渐进式地查询相应的客户信息,效率较高,因此,可以部分或全部地解决现有技术中的问题。
基于图3的方法,本申请实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请实施例中,对于步骤S302,所述根据所述查询字符串,在预先生成的前缀树中搜索目标节点,具体可以包括:根据所述查询字符串、各所述集合标识中的指定集合标识,以及所述结尾标记,采用广度优先搜索算法,在预先生成的前缀树中搜索出不多于指定数量的且包含有所述指定集合标识的所述特定节点,作为目标节点,所述目标节点对应的前缀串以所述查询字符串为前缀。
在实际应用中,指定集合标识可以是发送所述查询请求的客户终端对应的租户(公司)ID等。指定集合标识可以携带在查询请求中,若未携带,服务器也可以通过其他方式确定指定集合标识。
当然,若特定节点中不包含结尾标记,仍可以根据节点是否关联保存有数据记录或者是否包含有指定集合标识,来搜索目标节点;另外,采用的算法也可以是广度优先搜索算法以外的算法。
进一步地,对于步骤S303,所述返回为所述目标节点预先关联并保存的目标数据记录,具体可以包括:根据所述关联关系,获取为所述目标节点预先关联并保存的数据记录中对应于所述指定集合标识的数据记录并返回。
例如,如果是采用hashmap的方式关联并保存数据记录的话,可以确定目标节点对应的hashmap,以及对所述指定集合标识进行hash运算以定位到该hashmap的对应区域,进而可以获取该对应区域保存的数据记录,作为查询结果返回。
在实际应用中,数据记录可能发生变化,则服务器生成的前缀树也需要相应变化,以防止返回错误的查询结果。这些变化可以由服务器控制实现。
具体地,所述服务器可以接收针对所述数据库中的所述各数据记录的修改请求;根据所述修改请求,对所述数据库中的所述各数据记录进行相应修改,以及对所述前缀树进行相应更新(树结构可能要更新,节点内容也可能要更新)。另外,若服务器上与前缀树中特定节点对应的数据记录并未保存于前缀树中,则也需要对服务器上保存的这些数据记录进行相应修改。
在本申请实施例中,上述的数据查询方法通常分别应用于集群中的多台服务器上。比如,所述多台服务器以及指定的数据库共同构成客服系统平台。
每台服务器可以在启动时从该数据库中读取数据记录,以生成前缀树,各台服务器分别生成的前缀树通常是相同的,任一台服务器可以发起数据修改动作,并将修改内容同步给其他服务器,以保持集群内数据一致。
具体地,所述根据所述修改请求,对所述数据库中的所述各数据记录进行相应修改,以及对所述前缀树进行相应更新,可以包括:根据所述修改请求,对所述数据库中的所述各数据记录进行相应修改,并将修改内容序列化为更新字符串;将所述更新字符串推送到所述集群的管理设备上,以使所述管理设备根据所述更新字符串,分别指示所述多台服务器对各自的所述前缀树进行相应更新;其中,所述更新字符串包括JSON字符串。
除了JSON字符串以外,更新字符串也可以是诸如XML字符串等。管理设备可以消息形式将更新字符串分别发送给多台服务器以指示修改。
更直观地,本申请实施例还提供了一种实际应用场景下,所述数据查询方法与现有技术分别在集群中实施时的原理对比示意图,如图4所示。
所述数据查询方法包括图4中的“渐进式搜索条件查询”、以及“客户信息增加、更新、删除”这两部分相关的流程;现有技术包括图4中的“非渐进式搜索条件查询”这部分相关的流程。
“渐进式搜索条件查询”相关的流程具体包括:
服务器启动时,自动到数据库中将客户信息表中需要各搜索条件字段的字段值(比如,用户ID、姓名等)查询出来,根据各字段值生成前缀树;
客服人员在前端查询页面的输入栏中每输入一个字符,都会发送携带查询字符串的查询请求至服务器;服务器接收到查询请求后,采用广度优先搜索算法对查询字符串为前缀的前缀串在前缀树中进行搜索,搜索到指定数量(比如前5个等)对应的前缀串是所述字段值且包含对应租户ID的节点,将所述对应租户ID关联的客户信息(也是根据各字段值得到的)返回;
“客户信息增加、更新、删除”相关的流程具体包括:
当终端请求对客户信息进行修改(新增、或更新、或删除等)操作时,接到请求的服务器可以先对数据库中对应内容进行操作,再将修改内容序列化为JSON字符串推送到集群的管理设备(比如,分布式资源管理DRM服务器等)上,这两步可以在同一个事务中进行,以保证数据原子性;DRM服务器进而将该JSON字符串以消息形式分别发送给集群中的各服务器,各服务器根据接收到的消息,按照该JSON字符串中的修改内容,对自身中的前缀树进行相应更新。
上面主要是从服务器角度进行描述的,本申请实施例还提供了一种实际应用场景下,所述数据查询方法实施时终端页面的效果示意图,如图5a~5c所示。
在图5a中,客服人员输入了第一个查询字符“1”,此时的已输入查询字符串为“1”,服务器通过在前缀树上搜索,命中了字段“用户ID”下以“1”为前缀的7个字段值,相应地向终端返回了这些字段值对应的客户信息,终端展示接收到的客户信息。
在图5b中,客服人员在图5a的基础上输入了第二个查询字符“2”,此时的已输入查询字符串为“12”,服务器通过在前缀树上搜索,命中了字段“用户ID”下以“12”为前缀的2个字段值“123”、“121212”,相应地向终端返回了这些字段值对应的客户信息,终端展示接收到的客户信息。
在图5c中,客服人员输入了第一个查询字符“李”,服务器通过在前缀树上搜索,命中了字段“姓名”下以“李”为前缀的1个字段值“李亚科”,相应地向终端返回了该字段值对应的客户信息,终端展示接收到的客户信息。
上面对本申请实施例提供的数据处理方法、数据查询方法进行了说明,基于同样的发明思路,本申请实施例还提供了对应的装置,如图6、图7所示。
图6为本申请实施例提供的对应于图1的一种数据处理装置的结构示意图,该装置可以位于服务器上,包括:
获取模块601,从数据库中获取各数据记录,每个数据记录包含多个搜索条件字段的字段值;
生成模块602,将各所述字段值作为前缀串,并根据各所述前缀串生成前缀树;以及,
关联模块603,为所述前缀树的每个特定节点关联并保存所述各数据记录中对应的数据记录,所述特定节点是对应的前缀串为所述字段值的节点,所述对应的数据记录包含至少一个等于所述对应的前缀串的字段值。
可选地,所述各数据记录划分为多个数据记录集合;
所述关联模块603为所述前缀树的每个特定节点关联并保存所述各数据记录中对应的数据记录,具体包括:
所述关联模块603分别针对所述前缀树的每个特定节点执行:
保存所述各数据记录中该特定节点对应的数据记录,并建立以下两类数据之间的关联关系:所述该特定节点对应的数据记录在所述多个数据记录集合中所属的数据记录集合的集合标识、保存的所述该特定节点对应的数据记录。
可选地,所述关联模块603保存所述各数据记录中该特定节点对应的数据记录,并建立以下两类数据之间的关联关系,具体包括:
所述关联模块603在该特定节点中保存所述各数据记录中该特定节点对应的数据记录在所述多个数据记录集合中所属的数据记录集合的集合标识;以及,
为该特定节点建立对应的哈希表;
在该哈希表中保存:该集合标识、所述该特定节点对应的数据记录;
其中,该集合标识作为该哈希表的键key,所述该特定节点对应的数据记录作为该key的值value。
可选地,所述关联模块603建立以下两类数据之间的关联关系,具体包括:
所述关联模块603为保存的所述该特定节点对应的数据记录建立对应的索引;
为该特定节点建立对应的哈希表;
在该哈希表中保存:所述该特定节点对应的数据记录在所述多个数据记录集合中所属的数据记录集合的集合标识、该索引;
其中,该集合标识作为该哈希表的key,该索引作为该key的value。
可选地,所述生成模块602还在所述前缀树的每个特定节点中保存结尾标记,所述结尾标记用于表明所述特定节点对应的前缀串为所述字段值。
可选地,所述哈希表为hashmap。
图7为本申请实施例提供的对应于图3的一种数据查询装置的结构示意图,该装置可以位于服务器上,包括:
接收模块701,接收查询请求,所述查询请求是每当有增量的查询字符输入时被发送至所述服务器的,所述查询请求携带已输入的查询字符串;
搜索模块702,根据所述查询字符串,在预先生成的前缀树中搜索目标节点,所述目标节点对应的前缀串以所述查询字符串为前缀;
返回模块703,返回为所述目标节点预先关联并保存的数据记录。
可选地,所述搜索模块702根据所述查询字符串,在预先生成的前缀树中搜索目标节点,具体包括:
所述搜索模块702根据所述查询字符串、各所述集合标识中的指定集合标识,以及所述结尾标记,采用广度优先搜索算法,在预先生成的前缀树中搜索出不多于指定数量的且包含有所述指定集合标识的所述特定节点,作为目标节点,所述目标节点对应的前缀串以所述查询字符串为前缀。
可选地,所述返回模块703返回为所述目标节点预先关联并保存的目标数据记录,具体包括:
所述返回模块703根据所述关联关系,获取为所述目标节点预先关联并保存的数据记录中对应于所述指定集合标识的数据记录并返回。
可选地,所述装置还包括:
更新模块704,接收针对所述数据库中的所述各数据记录的修改请求;
根据所述修改请求,对所述数据库中的所述各数据记录进行相应修改,以及对所述前缀树进行相应更新。
可选地,所述装置分别应用于集群中的多台服务器上,所述更新模块704根据所述修改请求,对所述数据库中的所述各数据记录进行相应修改,以及对所述前缀树进行相应更新,具体包括:
所述更新模块704根据所述修改请求,对所述数据库中的所述各数据记录进行相应修改,并将修改内容序列化为更新字符串;
将所述更新字符串推送到所述集群的管理设备上,以使所述管理设备根据所述更新字符串,分别指示所述多台服务器对各自的所述前缀树进行相应更新;
其中,所述更新字符串包括JSON字符串。
可选地,所述数据记录是客户信息记录。
本申请实施例提供的装置、系统与方法是一一对应的,因此,装置、系统也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、系统的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。