区块链网络系统以及相应的节点设备发现方法
技术领域
本发明涉及区块链技术,并且更具体地涉及一种区块链网络系统以及相应的节点设备发现方法。
背景技术
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
传统的区块链网络系统通常是基于互联网(例如,因特网)的点对点(简称P2P)网络系统。P2P是指位于同一区块链网络系统中的每台计算机都彼此对等,各个节点设备共同提供网络服务,不存在任何“特殊的”节点设备。也就是说,每个节点设备以“扁平(flat)”的拓扑结构相互连通。在这种传统的区块链网络系统中,无法实现对交易或消息的点对点传输,而需要以全网广播的形式将消息或交易扩散到整个网络(即,区块链网络系统中的所有节点设备),因此网络之间通讯消息量是n2数量级。因此,尤其在这种传统的区块链网络系统中部署有大量的节点设备的情况下,网络通信压力将变得非常大。然而,在实际使用中,交易通常只发生在实际参与该交易的节点之间,各个节点只保存和自己相关的账本数据。另外,由于这种传统的区块链网络系统中的所有节点直接都需要建立点对点的连接,因此这种传统的区块链网络系统通常对节点规模的扩展支持度也并不好。
因此,有必要提供一种新型的区块链网络系统,使得能够实现在各区块链节点设备之间进行交易或消息的点对点传送,并且能够实现对期望节点设备的正确发现,而且能够有效地维护网络连接。
发明内容
针对以上技术问题以及其他潜在的技术问题,本发明的实施例提供了一种区块链网络系统以及相应的节点设备发现方法。
本发明的第一方面提供了一种区块链网络系统,包括:多个节点设备,每一节点设备至少与相应的一个或多个必要连接节点设备连接,其中,每一节点设备的相应的一个或多个必要连接节点设备是所述多个节点设备中必须与该节点设备进行连接的一个或多个节点设备,并且其中,每一节点设备都包括存储设备,每一存储设备中都存储有与相应节点设备相关联的节点连接表和分布式散列表,其中每一节点连接表用于存储所述多个节点设备中已经与相关联的节点设备建立了连接的一个或多个节点设备的连接信息,并且每一分布式散列表用于存储所述多个节点设备中有助于相关联的节点设备发现期望连接的节点设备的至少一个节点设备的标识和地址。
在一种实现中,每一节点设备的相应的一个或多个必要连接节点设备是在针对该节点设备的配置文件中指定的。
在一种实现中,每一节点连接表所存储的已经与相关联的节点设备建立了连接的一个或多个节点设备的连接信息至少包括:该一个或多个节点设备中的每一者的标识、该一个或多个节点设备中的每一者最后一次被相关联的节点设备访问的时间戳、以及该一个或多个节点设备中的每一者被相关联的节点设备访问的访问次数。
在一种实现中,每一节点连接表都包括必要连接部分和可替换连接部分,所述必要连接部分用于存储相关联的节点设备的相应的一个或多个必要连接节点的连接信息,并且所述可替换连接部分用于存储该一个或多个节点设备中能够与相关联的节点设备断开连接并被其他节点设备替换掉的可替换连接节点设备的连接信息,所述可替换连接部分中能够存储的可替换连接节点设备的最大数目是预先设置的。
在一种实现中,所述可替换连接部分初始为空,并且所述可替换部分能动态更新,而所述必要连接部分是固定不变的。
在一种实现中,每一分布式散列表初始包括从所述区块链网络中存在的节点设备中随机选出的至少一个节点设备的标识和地址,并且该分布式散列表能动态更新。
在另一实现中,每一分布式散列表初始包括相关联的节点设备的相应的一个或多个必要连接节点设备,并且该分布式散列表能动态更新。
本发明的第二方面提供了一种基于本发明的第一方面所述的区块链网络系统的节点设备发现方法,包括:在所述区块链网络系统中的第一节点设备处,响应于接收到与所述区块链网络系统中的第二节点设备进行交易的交易请求,基于与所述第一节点设备相关联的第一节点连接表来判断所述第一节点设备是否已经与所述第二节点设备建立连接;以及在所述第一节点设备尚未与所述第二节点设备建立连接的情况下,借助与所述第一节点设备相关联的第一分布式散列表来查找所述第二节点设备的地址。
在一种实现中,还包括:在所述第一节点设备已经与所述第二节点设备建立连接的情况下,对所述第二节点设备发起交易;以及在所述第一节点连接表中更新所述第二节点设备的连接信息。
在一种实现中,借助与所述第一节点设备相关联的第一分布式散列表来查找所述第二节点设备的地址包括,在预定的时间段内:从所述第一分布式散列表中查找所述第二节点设备的地址;在未从所述第一分布式散列表中查找到所述第二节点设备的地址的情况下,从所述第一分布式散列表中选择一个或多个第三节点设备,其中,相比于所述第一节点设备的标识,所述一个或多个第三节点设备的标识与所述第二节点设备的标识的距离更近;请求所述一个或多个第三节点设备中的每一第三节点设备查找所述第二节点设备的地址。
在另一实现中,借助与所述第一节点设备相关联的第一分布式散列表来查找所述第二节点设备的地址进一步包括:在从所述一个或多个第三节点设备处接收到一个或多个非空数据集的情况下,判断所述一个或多个非空数据集中是否包括含所述第二节点设备的地址的数据集,其中所述一个或多个非空数据集是基于与所述一个或多个第三节点设备相关联的一个或多个第三分布式散列表来获得的;在所述一个或多个非空数据集中不包括含所述第二节点设备的地址的数据集的情况下,利用所述一个或多个非空数据集来更新所述第一分布式散列表,其中所述一个或多个非空数据集中的每一者都包括由发送该数据集的相应的第三节点设备从相关联的第三分布式散列表中选择的一个或多个第四节点设备的标识和地址,其中,相比于该相应的第三节点设备的标识,所述一个或多个第四节点设备的标识与所述第二节点设备的标识的距离更近;请求所述一个或多个第四节点设备中的每一第四节点设备查找所述第二节点设备的地址。
在一种实现中,借助与所述第一节点设备相关联的第一分布式散列表来查找所述第二节点设备的地址进一步包括:在从所述第一分布式散列表中查找到所述第二节点设备的地址的情况下,利用所述第二节点设备的地址与所述第二节点设备建立连接;以及更新所述第一节点连接表,以包括所述第二节点设备的连接信息。
在一种实现中,借助与所述第一节点设备相关联的第一分布式散列表来查找所述第二节点设备的地址进一步包括:在所述一个或多个非空数据集中包括含所述第二节点设备的地址的数据集的情况下,利用该数据集中的所述第二节点设备的地址与所述第二节点设备建立连接;以及更新所述第一节点连接表,以包括所述第二节点设备的连接信息。
在一种实现中,更新所述第一节点连接表包括:将所述第二节点设备的连接信息添加到所述第一节点连接表的第一可替换部分中;以及在未将所述第二节点设备的连接信息成功添加到所述第一节点连接表的第一可替换部分中的情况下,进一步执行以下操作:在所述第一可替换部分中选择要被替换掉的节点设备;将所述第一节点设备与所述要被替换掉的节点设备的连接断开;以及用所述第二节点设备的连接信息替换所述第一可替换部分中所述要被替换掉的节点设备的连接信息。
在一种实现中,在所述第一可替换部分中选择要被替换掉的节点设备包括:从所述第一可替换部分中查找时间戳最小的节点设备;在查找到一个时间戳最小的节点设备的情况下,将该时间戳最小的节点设备选为要被替换掉的节点设备;在查找到两个或更多个时间戳最小的节点设备的情况下,从该两个或更多个时间戳最小的节点设备中查找访问次数最少的节点设备;在查找到一个访问次数最少的节点设备的情况下,将该访问次数最少的节点设备选为要被替换掉的节点设备;在查找到两个或更多个访问次数最少的节点设备的情况下,从所述第一可替换部分中随机选择一个区块链节点设备作为要被替换掉的节点设备。
在一种实现中,借助与所述第一节点设备相关联的第一分布式散列表来查找所述第二节点设备的地址还包括:在所述预定的时间段到期,但还未查找到所述第二节点设备的地址的情况下,发送所述交易请求失败的消息。
本发明的第三方面提供了一种节点设备发现装置,包括:处理器;存储器;所述存储器耦合至所述处理器并且存储有指令,当所述指令执行时使得所述处理器执行根据本发明的第二方面所述的节点设备发现方法。
本发明的第四方面提供了一种计算机可读存储介质,所述存储介质包括指令,所述指令在被执行时,使得计算机执行根据本发明的第二方面所述的节点设备发现方法。
附图说明
参考附图示出并阐明本发明的各实施例。这些附图仅用于阐明基本原理,并示出对于理解该基本原理所必要的方面,而不旨在限制本发明所要求保护的范围。在附图中,相同的附图标记表示相似的特征。
图1例示了根据本发明的实施例的示意性区块链网络系统的架构示意图。
图2例示了基于根据本发明的实施例的区块链网络系统的示例节点设备发现方法的流程图。
图3例示了借助与所述第一节点设备相关联的第一分布式散列表来查找所述第二节点设备的地址的示例实现的流程图。
图4例示了用所述第二节点设备的连接信息来更新所述第一节点连接表的示例实现的流程图。
具体实施方式
下面将结合附图更详细地描述本发明的各个示例性实施例。虽然附图中流程图和示意图显示了本发明的一些实施例,然而应当理解的,本发明可以通过各种形式来实现,而且不应被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于说明性作用,并非用于限制本发明的保护范围。
Kademlia(简称为KAD)网络属于一种典型的结构化P2P覆盖网络(Structured P2POverlay Network),其主要的目标是做到不需要服务器和改善可量测性。KAD网络以分布式的应用层全网方式来进行信息的存储和检索是其尝试解决的主要问题。在KAD网络中,所有信息均以的哈希表条目形式加以存储,这些条目被分散地存储在各个节点上,从而以全网方式构成一张巨大的分布式哈希表。因此在KAD网络中,只要知道了信息索引的键(key),就可以通过KAD协议来查询到其所对应的值(value)信息,而不管这个值信息究竟是存储在哪一个节点之上。。KAD节点间使用传输通讯协议UDP进行沟通。此外,在KAD网络中,每一节点都具有一个唯一的节点ID。另外,也会计算不同节点之间的距离,但这个距离不是物理上的距离,而是逻辑上的距离,其是通过对两个节点ID进行异或(符号为^)来计算得到的,例如A和B两个节点之间的距离可通过以下公式来计算:D(A,B)=A.ID^B.ID。异或有一个重要的性质:假设a、b、c为任意三个数,如果a^b=a^c成立,那就一定b=c。因此,如果给定一个结点a和距离L,那就有且仅有一个结点b,会使得D(a,b)=L。通过这种方式,就能有效度量KAD网络中不同节点之间的逻辑距离。在异或距离度量的基础上,KAD可以将整个网络拓扑组织成一个二叉前缀树,每个节点ID会映射到二叉树上的某个叶子。
基于KAD网络的以上特点,本发明的实施例提供了一种基于KAD网络的原理来实现的新型的区块链网络系统,在这种区块链网络系统中,可以实现各节点设备之间的点对点交易,并且这种区块链网络系统便于节点设备对该系统的加入和退出(即这种区块链网络系统的规模能够被方便地调整),另外已加入该区块链网络系统的节点设备可在只知道该区块链网络系统中的一个或多个节点设备的情况下自发进行网络发现,而无需中心化服务的参与。
如图1所示,例示了根据本发明的实施例的示意性区块链网络系统的架构示意图。请注意,该图仅用于说明的目的,并且为了说明简要的目的,并没有在图1中画出各节点设备之间的连接关系。
区块链网络系统100可包括多个节点设备,例如,节点设备101、102、103、104、105、106。节点设备101包括存储设备1011,并且在存储设备1011中存储有节点连接表1012和分布式散列表1013。类似地,节点设备102包括存储设备1021,并且在存储设备1021中存储有节点连接表1022和分布式散列表1023。节点设备103包括存储设备1031,并且在存储设备1031中存储有节点连接表1032和分布式散列表1033。节点设备104包括存储设备1041,并且在存储设备1041中存储有节点连接表1042和分布式散列表1043。节点设备105包括存储设备1051,并且在存储设备1051中存储有节点连接表1052和分布式散列表1053。节点设备106包括存储设备1061,并且在存储设备1061中存储有节点连接表1062和分布式散列表1063。
下面为了说明简要的目的,以节点设备101为例进行更详细的描述,但是实际上该区块链网络系统100中的其他节点设备(例如,节点设备102-106)均具有类似的配置。
在该示例中,节点设备101可与区块链网络系统100中包括的多个节点设备中的一个或多个节点设备连接。例如,当节点设备101刚加入该区块链网络系统101中时,节点设备100仅与其相应的一个或多个必要连接节点设备连接。在一种实现中,这种相应的一个或多个必要连接节点设备是在针对节点设备101的配置文件中指定的。如此后将结合图2-4更详细描述的,当节点设备101需要与其他节点设备进行交易时,节点设备101会在通过网络发现该其他节点设备的地址(例如,网络地址)以后与其建立连接。因此,在本发明的实施例中,节点设备100至少与其相应的一个或多个必要连接节点设备连接。另外,值得一提的是,在本发明的实施例中,节点设备101的相应的一个或多个必要连接节点设备是指包括在区块链网络系统100中的必须与该节点设备进行连接的一个或多个节点设备。也就是说,如果由于某种原因(例如,网络故障),节点设备101的网络连接断开了,则在故障恢复以后,节点设备101会尝试主动修复与该一个或多个必要连接节点设备的连接。
如之前提到的,节点设备101可包括存储设备1011(例如,存储器),存储设备1011中存储有与节点设备101相关联的节点连接表1012和分布式散列表1013。节点连接表1012用于存储已经与节点设备101建立了连接的一个或多个节点设备的连接信息。已经与节点设备101建立了连接的一个或多个节点设备的连接信息至少包括:该一个或多个节点设备中的每一者的标识、该一个或多个节点设备中的每一者最后一次被节点设备101访问的时间戳、以及该一个或多个节点设备中的每一者被节点设备101访问的访问次数。节点连接表1012可包括必要连接部分和可替换连接部分。节点连接表1012的必要连接部分用于存储节点设备101的一个或多个必要连接节点的连接信息。节点连接表1012的可替换连接部分用于存储与节点设备101连接的一个或多个节点设备中能够与节点设备101断开连接并被其他节点设备替换掉的可替换连接节点设备的连接信息,该可替换连接部分中能够存储的可替换连接节点设备的最大数目可预先设置。该可替换连接部分初始(例如,在节点设备101刚加入区块链网络系统100时)为空,并且该可替换部分能动态更新,例如每当可替换部分中包括的节点设备被节点设备101访问时,与该节点设备相对应的时间戳和访问次数就将被更新,另外当节点设备101与未包括在可替换部分中的节点设备建立连接后,该可替换部分也会发生更新(图2-4会对此进行更详细地描述)。该必要连接部分是固定不变的。
分布式散列表(即,DHL)1013用于存储区块链网络系统100中包括的多个节点设备(例如,节点设备102-106)中有助于节点设备101发现期望连接的节点设备的至少一个节点设备的标识和地址。在本发明的实施例中,以上提到的标识和地址可以键值对的形式来存储,即在分布式散列表1013中,标识被存储为索引即键,并且地址被存储为该索引所对应的内容即值。在一种实现中,分布式散列表1013初始包括从所述区块链网络中存在的节点设备中随机选出的至少一个节点设备的标识和地址,并且该分布式散列表能动态更新,例如当节点设备101需要向未包括在分布式散列表1013中的节点设备请求其期望连接的节点设备的地址时,分布式散列表1013就将被更新(图2-4会对此进行更详细地描述)。在另一种实现中,分布式散列表1013初始包括节点设备101的一个或多个必要连接节点设备,并且该分布式散列表能动态更新。
图2例示了基于根据本发明的实施例的区块链网络系统的示例节点设备发现方法200的流程图。在本发明的实施例中,该示例节点设备发现方法在区块链网络系统的第一节点设备处执行。
在步骤201中,接收与该区块链网络系统中的第二节点设备进行交易(例如,转账、付款、兑现等)的交易请求。
在步骤202中,响应于接收到该交易请求,基于与第一节点设备相关联的第一节点连接表来判断第一节点设备是否已经与第二节点设备建立连接。
在步骤203中,在第一节点设备尚未与第二节点设备建立连接的情况下,借助与第一节点设备相关联的第一分布式散列表来查找第二节点设备的地址。
在步骤204中,在第一节点设备已经与第二节点设备建立连接的情况下,第一节点设备对第二节点设备发起相应的交易。
在步骤205中,响应于第一节点设备对第二节点设备发起交易,在第一节点连接表中更新第二节点设备的连接信息,例如在第一节点连接表中更新第二节点设备最后一次被第一节点设备访问的时间戳以及第二节点设备被第一节点设备访问的访问次数等。
图3例示了与步骤203有关的借助与第一节点设备相关联的第一分布式散列表来查找第二节点设备的地址的示例实现300的流程图。在本发明的实施例中,该实现需在预定的时间段内进行,在该预定的时间段到期但还未查找到第二节点设备的地址的情况下,说明该交易请求失败,则第一节点设备将发出(例如,向发送交易请求的设备发送)该交易请求失败的消息(为了清楚起见,该图中未示出)。
在步骤301中,从第一分布式散列表中查找第二节点设备的地址。
在步骤302中,判断是否从第一分布式散列表中查找到第二节点设备的地址。在从第一分布式散列表中查找到第二节点设备的地址的情况下,转至步骤310。
在步骤303中,在未从第一分布式散列表中查找到第二节点设备的地址的情况下,从第一分布式散列表中选择一个或多个第N节点设备。在一种实现中,例如相比于第一节点设备的标识,所选出的该一个或多个第N节点设备的标识与第二节点设备的标识的距离更近。也就是说,所选出的任一第N节点设备的标识与第二节点设备的标识进行异或运算所得的值都小于第一节点设备的标识与第二节点设备的标识进行异或运算所得的值。应领会,在本文中引入N仅仅是为了便于对该实施例进行更清楚的描述的目的,该N仅用于指示用于区分不同节点设备的编号(例如,在本示例中,由于已提到了第一节点设备和第二节点设备,因此这里可将N取为等于3的编号,但是这仅仅是示例,也可以使用其他编号,只要可以对不同的节点设备进行区分就可以了)。
在步骤304中,请求该一个或多个第N节点设备中的每一第N节点设备查找所述第二节点设备的地址。每一第N节点设备在接收到该地址请求以后,都会从相关联的第N分布式散列表中查找第二节点设备的地址。如果该第N节点设备从相关联的第N分布式散列表中查找到了第二节点设备的地址,则会将含该第二节点设备的地址的数据集发送给第一节点设备。如果该第N节点设备没有从相关联的第N分布式散列表中查找到第二节点设备的地址,则会从该相关联的第N分布式散列表中选择一个或多个第N+1节点设备(例如,相比于该相应的第N节点设备的标识,所选出的一个或多个第N+1节点设备的标识与所述第二节点设备的标识的距离更近),并经由数据集将所选的一个或多个第N+1节点设备的标识和地址发送给第一节点设备。但是,如果不存在这样的第N+1节点设备,则返回空数据集。
在步骤305中,判断是否从该一个或多个第N节点设备处接收到一个或多个非空数据集。根据以上在步骤304中的描述可知,该一个或多个非空数据集是基于与该一个或多个第N节点设备相关联的一个或多个第N分布式散列表来获得的。在未从该一个或多个第N节点设备处接收到一个或多个非空数据集的情况下(即,在从该一个或多个第N节点设备处接收到的数据集全部为空数据集的情况下),转至步骤309。
在步骤306中,在从该一个或多个第N节点设备处接收到一个或多个非空数据集的情况下,判断该一个或多个非空数据集中是否包括含第二节点设备的地址的数据集。在一个或多个非空数据集中包括含第二节点设备的地址的数据集的情况下,转至步骤310。
在步骤307中,在该一个或多个非空数据集中不包括含第二节点设备的地址的数据集的情况下,利用该一个或多个非空数据集来更新第一分布式散列表。也就是说,将该一个或多个非空数据集中包括的节点设备的标识和地址添加到第一分布式散列表中。应领会,在这种情况下,该一个或多个非空数据集中的每一者都包括由发送该数据集的相应的第N节点设备从相关联的第N分布式散列表中选择的一个或多个第N+1节点设备的标识和地址。在一种实现中,例如相比于相应的第N节点设备的标识,所选出的一个或多个第N+1节点设备的标识与所述第二节点设备的标识的距离更近。
在步骤308中,将N设为N+1,并回到步骤304。
在步骤309,发出交易请求失败的消息。
在步骤310中,利用查找到的第二节点设备的地址与第二节点设备建立连接,并对第二节点设备发起相应的交易。
在步骤311中,更新所述第一节点连接表,以包括第二节点设备的连接信息。
图4例示了与图3中的步骤311有关的更新第一节点连接表的示例实现400的流程图。
在步骤401中,将第二节点设备的连接信息添加到第一节点连接表的第一可替换部分中。
在步骤402中,判断是否将第二节点设备的连接信息成功添加到第一节点连接表的第一可替换部分中。在将所述第二节点设备的连接信息成功添加到第一节点连接表的第一可替换部分中的情况下,可例如发送该更新成功的消息。
在步骤403中,在未将所述第二节点设备的连接信息成功添加到第一节点连接表的第一可替换部分中的情况下,进一步执行以下操作:在子步骤4031,在第一可替换部分中选择要被替换掉的节点设备。在第一可替换部分中选择要被替换掉的节点设备具体可包括:从第一可替换部分中查找时间戳最小的节点设备;在查找到一个时间戳最小的节点设备的情况下,将该时间戳最小的节点设备选为要被替换掉的节点设备;在查找到两个或更多个时间戳最小的节点设备的情况下,从该两个或更多个时间戳最小的节点设备中查找访问次数最少的节点设备;在查找到一个访问次数最少的节点设备的情况下,将该访问次数最少的节点设备选为要被替换掉的节点设备;在查找到两个或更多个访问次数最少的节点设备的情况下,从第一可替换部分中随机选择一个区块链节点设备作为要被替换掉的节点设备。在子步骤4032,将第一节点设备与要被替换掉的节点设备的连接断开。在子步骤4033,用第二节点设备的连接信息替换第一可替换部分中要被替换掉的节点设备的连接信息。
基于以上描述,本发明至少具有以下优点:实现了规模能够被方便地调整的区块链网络系统;当在区块链网络系统中部署新的节点设备时,仅需为该新的节点设备指定有限数目的必要连接节点设备,并且通过以上例如结合图2-4描述的方法,该新的节点设备可自动地异步发现要连接的后续节点设备;区块链网络系统中的每一节点设备都只需维护有限的连接节点设备(而非区块链网络系统中存在的所有节点设备),从而便于管理和依据部署环境适配网络压力;通过使用实现了替换策略的节点连接表,使得每个节点设备可将与其交易频率较小的节点设备的连接信息替换掉,而改为维护与其交易较频繁的节点设备的连接信息。
图2-4中的方法的流程还代表机器可读指令,该机器可读指令包括由处理器执行的程序。该程序可被实体化在被存储于有形计算机可读介质的软件中,该有形计算机可读介质如CD-ROM、软盘、硬盘、数字通用光盘(DVD)、蓝光光盘或其它形式的存储器。替代的,图1、3中的示例方法中的一些步骤或所有步骤可利用专用集成电路(ASIC)、可编程逻辑器件(PLD)、现场可编程逻辑器件(EPLD)、离散逻辑、硬件、固件等的任意组合被实现。另外,虽然图2-4所示的流程图描述了该数据处理方法,但可对该处理方法中的步骤进行修改、删除或合并。
如上所述,可利用编码指令(如计算机可读指令)来实现图2-4的示例过程,该编程指令存储于有形计算机可读介质上,如硬盘、闪存、只读存储器(ROM)、光盘(CD)、数字通用光盘(DVD)、高速缓存器、随机访问存储器(RAM)和/或任何其他存储介质,在该存储介质上信息可以存储任意时间(例如,长时间,永久地,短暂的情况,临时缓冲,和/或信息的缓存)。如在此所用的,该术语有形计算机可读介质被明确定义为包括任意类型的计算机可读存储的信息。附加地或替代地,可利用编码指令(如计算机可读指令)实现图1、2的示例过程,该编码指令存储于非暂时性计算机可读介质,如硬盘,闪存,只读存储器,光盘,数字通用光盘,高速缓存器,随机访问存储器和/或任何其他存储介质,在该存储介质信息可以存储任意时间(例如,长时间,永久地,短暂的情况,临时缓冲,和/或信息的缓存)。可以理解的,该计算机可读指令还可以存储在网络服务器中、云端平台上,以便于用户使用。
另外,尽管操作以特定顺序被描绘,但这并不应该理解为要求此类操作以示出的特定顺序或以相继顺序完成,或者执行所有图示的操作以获取期望结果。在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为对可以针对特定发明的特定实施例的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可以整合实施在单个实施例中。反之,在单个实施例的上下文中描述的各种特征也可以分离地在多个实施例或在任意合适的子组合中实施。
因此,虽然参照特定的示例来描述了本发明,其中这些特定的示例仅仅旨在是示例性的,而不是对本发明进行限制,但对于本领域普通技术人员来说显而易见的是,在不脱离本发明的精神和保护范围的基础上,可以对所公开的实施例进行改变、增加或者删除。