数据的改写方法及装置与流程

文档序号:11590577阅读:292来源:国知局
本公开涉及计算机
技术领域
,尤其涉及一种数据的改写方法及装置。
背景技术
:分布式文件系统进行改写操作的过程中,若系统调用i/o(input/output,输入/输出)接口后,收到硬盘返回的写完成信息前发生异常导致掉电,则系统无法收到硬盘返回的写完成信息,从而系统无法得知数据是否完成改写操作,导致硬盘上的数据不可靠。其中,改写可以指将本次写入的数据替换硬盘中的原有数据的操作,即将新数据替换旧数据。在分布式文件系统中,可以通过日志系统进行掉电保护,即在硬盘进行改写操作之前,先将数据写入日志系统,在数据成功写入日志系统后,再将数据写入硬盘。若系统在将数据写入硬盘的过程中发生异常导致掉电,则系统等待上电后,可以读取日志系统中的数据并将该数据再次写入硬盘。图1示出相关技术中改写操作的应用场景的示意图。如图1所示,存储系统在接收到来自客户端的写请求后,先将数据写入日志系统。其中,日志系统可以通过在硬盘的分区上创建xfs(本地文件系统的一种),然后在本地文件系统中创建一个文件,将客户端发送的数据写入文件。数据在日志系统中写完成后,通知存储系统日志系统写完成。存储系统获取数据在硬盘上的lba(logicalblockaddress,逻辑区块地址),并向该lba写入数据。日志系统解决了由于数据写入过程中系统掉电引起的数据破坏的问题,但是同时引入了两次写入数据的问题。如图1所示,在第一次写操作中,将数据写入日志系统。在第二次写操作中,将数据写入硬盘。一份数据需要在存储系统的硬盘进行两次写操作。在存储系统中,硬盘处理i/o接口的速度和cpu(centralprocessingunit,中央处理器)处理i/o接口的速度相比慢很多,此外,硬盘处理i/o接口的速度和内存处理i/o接口的速度相比也慢很多,而两次写入数据的问题将导致硬盘需要处理的i/o接口次数翻倍,进而导致存储系统处理业务的iops(input/outputoperationspersecond,每秒进行读写操作的次数)和带宽都降低,导致存储系统的性能降低。技术实现要素:有鉴于此,本公开提出了一种数据的改写方法及装置,能够防止系统掉电时破坏旧数据,避免采用日志系统进行掉电保护引起的两次写入数据引起的iops和带宽降低,存储系统的性能降低的问题。根据本公开的第一方面,提供了一种数据的改写方法,包括:在接收到客户端的改写请求的情况下,获取硬盘当前的磁头位置,所述改写请求包括待写入数据和所述待写入数据的大小;根据所述当前的磁头位置和所述待写入数据的大小,确定第一逻辑区块地址,所述第一逻辑区块地址对应的逻辑区块为空闲的逻辑区块;将所述待写入数据写入所述第一逻辑区块地址对应的逻辑区块;在元数据中记录所述第一逻辑区块地址;获取所述改写请求对应的第二逻辑区块地址,所述第二逻辑区块地址对应的逻辑区块存储所述待写入数据对应的旧数据;将所述第二逻辑区块地址加入回收列表。在一种可能的实现方式中,所述第一逻辑区块地址对应的逻辑区块为存储空间大于或等于所述待写入数据的大小的逻辑区块中距离所述当前的磁头位置最近的逻辑区块。在一种可能的实现方式中,获取硬盘当前的磁头位置,包括:获取记录的提交i/o接口中的偏移地址。在一种可能的实现方式中,确定第一逻辑区块地址之前,所述方法还包括:在所述待写入数据的大小不为第一数值的整数倍的情况下,将所述待写入数据的大小调整为所述第一数值的整数倍。根据本公开的第二方面,提供了一种数据的改写装置,包括:第一获取模块,用于在接收到客户端的改写请求的情况下,获取硬盘当前的磁头位置,所述改写请求包括待写入数据和所述待写入数据的大小;确定模块,用于根据所述当前的磁头位置和所述待写入数据的大小,确定第一逻辑区块地址,所述第一逻辑区块地址对应的逻辑区块为空闲的逻辑区块;写入模块,用于将所述待写入数据写入所述第一逻辑区块地址对应的逻辑区块;记录模块,用于在元数据中记录所述第一逻辑区块地址;第二获取模块,用于获取所述改写请求对应的第二逻辑区块地址,所述第二逻辑区块地址对应的逻辑区块存储所述待写入数据对应的旧数据;加入模块,用于将所述第二逻辑区块地址加入回收列表。在一种可能的实现方式中,所述第一逻辑区块地址对应的逻辑区块为存储空间大于或等于所述待写入数据的大小的逻辑区块中距离所述当前的磁头位置最近的逻辑区块。在一种可能的实现方式中,所述第一获取模块包括:磁头位置获取子模块,用于获取记录的提交i/o接口中的偏移地址。在一种可能的实现方式中,所述装置还包括:调整模块,用于在所述待写入数据的大小不为第一数值的整数倍的情况下,将所述待写入数据的大小调整为所述第一数值的整数倍。根据本公开的第三方面,提供了一种数据的改写装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:在接收到客户端的改写请求的情况下,获取硬盘当前的磁头位置,所述改写请求包括待写入数据和所述待写入数据的大小;根据所述当前的磁头位置和所述待写入数据的大小,确定第一逻辑区块地址,所述第一逻辑区块地址对应的逻辑区块为空闲的逻辑区块;将所述待写入数据写入所述第一逻辑区块地址对应的逻辑区块;在元数据中记录所述第一逻辑区块地址;获取所述改写请求对应的第二逻辑区块地址,所述第二逻辑区块地址对应的逻辑区块存储所述待写入数据对应的旧数据;将所述第二逻辑区块地址加入回收列表。根据本公开的第四方面,提供了一种非易失性计算机可读存储介质,当所述存储介质中的指令由终端和/或服务器的处理器执行时,使得终端和/或服务器能够执行上述方法。本公开的数据的改写方法及装置,改变了相关技术中使用先写入日志系统,然后再写入存储系统的方法,而在接收到客户端的改写请求的情况下,获取硬盘当前的磁头位置,根据当前的磁头位置和待写入数据的大小,确定第一逻辑区块地址,将待写入数据写入第一逻辑区块地址对应的逻辑区块,在元数据中记录第一逻辑区块地址,并获取改写请求对应的第二逻辑区块地址,将第二逻辑区块地址加入回收列表,由此能够防止系统掉电时破坏旧数据,并避免采用日志系统进行掉电保护引起的两次写入数据,从而提高iops和带宽,提高存储系统的性能。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出相关技术中改写操作的应用场景的示意图。图2示出根据本公开一实施例的数据的改写方法的流程图。图3示出根据本公开一实施例的调用提交i/o接口的示意图。图4示出根据本公开一实施例的元数据的结构示意图。图5a示出相关技术中改写操作的处理流程的示意图。图5b示出根据本公开一实施例的改写操作的处理流程的示意图。图5c示出根据本公开一实施例的改写操作的处理流程的另一示意图。图5d示出根据本公开一实施例的改写操作的处理流程的另一示意图。图6示出根据本公开一实施例的数据的改写方法的一示例性的流程图。图7示出根据本公开一实施例的调整待写入数据的大小时逻辑区块的结构示意图。图8是根据一示例性实施例示出的一种数据的改写装置的框图。图9是根据一示例性实施例示出的一种数据的改写装置的一示例性的框图。图10是根据一示例性实施例示出的一种用于数据的改写的装置900的框图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。实施例1图2示出根据本公开一实施例的数据的改写方法的流程图。该数据的改写方法可以应用于nas(networkattachedstorage,网络附属存储)中。如图2所示,该数据的改写方法,包括以下步骤。在步骤s201中,在接收到客户端的改写请求的情况下,获取硬盘当前的磁头位置,该改写请求包括待写入数据和待写入数据的大小。本实施例的改写可以指将本次写入的数据替换硬盘中的原有的数据的操作,即用新数据替换旧数据。硬盘驱动器可以指计算机中控制硬盘寻址以及存取数据的装置。硬盘可以作为计算机中用于存储数据的存储器。本实施例不限制硬盘的类型,例如硬盘可以为机械硬盘或混合硬盘等。一般而言,硬盘可以密封固定在硬盘驱动器中。本实施例的磁头指的是通过磁性原理读取磁性介质上数据的部件。硬盘在工作时,磁头可以通过感应旋转的盘片上磁场的变化来读取数据,通过改变盘片上的磁场来写入数据。硬盘当前的磁头位置可以指硬盘的磁头当前所处盘片的位置。相关技术中,硬盘当前的磁头位置可以通过逻辑区块地址表示。在获取硬盘当前的磁头位置和待写入数据的大小后,可以寻找适合存储待写入数据的空闲的逻辑区块,并将待写入数据存储至选定的空闲的逻辑区块。在一种可能的实现方式中,获取硬盘当前的磁头位置可以包括:获取记录的提交i/o接口中的偏移地址。图3示出根据本公开一实施例的调用提交i/o接口的示意图。如图3所示,每次提交i/o接口都会调用submit指令,记录提交i/o接口中的偏移地址。通过获取记录的提交i/o接口中的偏移地址,可以确定硬盘当前的磁头位置。在步骤s202中,根据当前的磁头位置和待写入数据的大小,确定第一逻辑区块地址,第一逻辑区块地址对应的逻辑区块为空闲的逻辑区块。在一种可能的实现方式中,第一逻辑区块地址对应的逻辑区块为存储空间大于或等于待写入数据的大小的逻辑区块。在一种可能的实现方式中,第一逻辑区块地址对应的逻辑区块为存储空间大于或等于待写入数据的大小的逻辑区块中距离当前的磁头位置最近的逻辑区块。采用该方法确定第一逻辑区块地址,能够使得磁头的移动范围最小,降低硬盘寻址时间。作为该实现方式的一个示例,可以先确定硬盘中存储空间大于或等于待写入数据的大小的各个空闲的逻辑区块,然后从各个空闲的逻辑区块中选择距离当前磁头位置最近的逻辑区块。在确定用于存储待写入数据的逻辑区块后,可以获取该逻辑区块对应的逻辑区块地址,作为第一逻辑区块地址。其中,硬盘中各个空闲的逻辑区块可以通过逻辑区块地址空间表确定。作为该实现方式的另一个示例,可以按照距离当前的磁头位置由近到远的顺序,依次将各个空闲的逻辑区块的存储空间大小与待写入数据的大小进行比较,选取存储空间大于或等于待写入数据的大小的逻辑区块中距离当前的磁头位置最近的逻辑区块。在确定用于存储待写入数据的逻辑区块后,可以获取该逻辑区块对应的逻辑区块地址,作为第一逻辑区块地址。在步骤s203中,将待写入数据写入第一逻辑区块地址对应的逻辑区块。需要说明的是,本领域技术人员应当能够理解,相关技术中有各种方式可以实现将待写入数据写入第一逻辑区块地址对应的逻辑区块,在此不做限定。例如,可以采用多区段写入的方式将待写入数据写入第一逻辑区块地址对应的逻辑区块。在步骤s204中,在元数据中记录第一逻辑区块地址。元数据(metadata)可以指用于描述数据属性的信息。元数据可以记录所管理的数据在硬盘中的位置,通过元数据可以实现指示存储位置、历史数据、资源查找和文件记录等功能。图4示出根据本公开一实施例的元数据的结构示意图。如图4所示,存储对象的元数据为onode(索引节点)结构,onode结构是常驻内存的数据结构,持久化的时候会以键值对(key-value)的形式存到硬盘上。其中,onode结构中可以分为多个逻辑区块lextent,用一个map来记录。map为一种用于位图映射的数据结构。逻辑区块lextent可以对应到实际物理盘上的区域,即通过offset和length来定位物理盘的位置区域,offset值为逻辑区块地址。作为本实施例的一个示例,采用原子操作的方式在元数据中记录第一逻辑区块地址。例如,在元数据中记录第一逻辑区块地址对应的offset和length。其中,原子操作可以指不会被线程调度机制打断的操作。原子操作一旦开始,则一直运行到结束,中间不会有任何线程切换。在步骤s205中,获取改写请求对应的第二逻辑区块地址,第二逻辑区块地址对应的逻辑区块存储待写入数据对应的旧数据。在步骤s206中,将第二逻辑区块地址加入回收列表。其中,第二逻辑区块地址对应的逻辑区块存储待写入数据对应的旧数据。将第二逻辑区块地址加入回收列表,硬盘能够对回收列表中记录的第二逻辑区块地址对应的逻辑区块进行释放,从而使得第二逻辑区块地址对应的逻辑区块变成空闲的逻辑区块。图5a示出相关技术中改写操作的处理流程的示意图。元数据中记录管理数据在磁盘中位置的信息。相关技术中,先将待写入数据写入日志系统,在数据成功写入日志系统后,再将待写入数据写入硬盘。如图5a所示,在将待写入数据写入硬盘的过程中,通过查询元数据的信息,找到旧数据对应的逻辑区块地址,将待写入数据直接写到逻辑区块地址处。在该过程中,只是查询元数据,而无需修改元数据。若系统在将待写入数据写入硬盘的过程中发生异常导致掉电,旧数据虽然被破坏,但是等待系统上电后则可直接读取日志系统中的数据并将该数据再次写入硬盘。图5b示出根据本公开一实施例的改写操作的处理流程的示意图。图5c示出根据本公开一实施例的改写操作的处理流程的另一示意图。图5d示出根据本公开一实施例的改写操作的处理流程的另一示意图。本实施例的数据的改写方法,可以不采用日志系统,而将待写入数据直接写入硬盘中的空闲的逻辑区块。如图5b至5d所示,超级块1至超级块4指向旧元数据。采用新申请的空闲的逻辑区块来写入待写入数据,并在待写入数据写入成功后,将新申请的逻辑区块地址修改到新元数据中。其中,先修改超级块1和超级块3,在超级块1和超级块3修改成功的情况下,再修改超级块2和超级块4,使得超级块1至超级块4指向新元数据。在超级块1和超级块3修改不成功的情况下,则再通过超级块2和超级块4恢复超级块1和超级块3。若系统在将待写入数据写入硬盘的过程中发生异常导致掉电,由于是将待写入数据直接写入硬盘中的空闲的逻辑区块,因此旧数据不会因为系统掉电而被破坏。表1示出采用日志系统和采用本实施例的数据的改写方法的性能对比测试结果。通过表1的测试结果,可以发现本实施例的数据的改写方法能够提高iops和带宽,提高存储系统的性能。如表1所示,iops表示每秒进行读写i/o接口操作的次数,用于衡量随机访问的性能。bw(bandwidth,频带宽度)表示每秒传输的数据量,用于衡量系统的吞吐能力。resp(时延)表示i/o接口的时延,用于衡量系统的性能。表1块大小iorate(iops)bwresp(时延)日志系统4k(随机写)4369.917.07mb/sec29.3msec本实施例4k(随机写)7407.528.94mb/sec17.275msec日志系统64k(随机写)2105.7131.61mb/sec60.77msec本实施例64k(随机写)6437.9402.2mb/sec19.875msec本实施例的数据的改写方法,改变了相关技术中使用先写入日志系统,然后再写入存储系统的方法,而通过将待写入数据写入空闲的逻辑区块地址对应的逻辑区块,并将硬盘中存储待写入数据对应的旧数据的逻辑区块得到释放变成空闲的逻辑区块。若在将待写入数据写入空闲的逻辑区块地址对应的逻辑区块的过程中发生异常导致掉电,则由于待写入数据对应的旧数据没有被覆盖,由此能够防止系统掉电时破坏旧数据,并避免采用日志系统进行掉电保护引起的两次写入数据,从而提高iops和带宽,提高存储系统的性能。图6示出根据本公开一实施例的数据的改写方法的一示例性的流程图。如图6所示,该数据的改写方法,包括以下步骤。在步骤s601中,在接收到客户端的改写请求的情况下,获取硬盘当前的磁头位置,该改写请求包括待写入数据和待写入数据的大小。对该步骤的描述可以参见步骤s201。在步骤s602中,判断待写入数据的大小是否为第一数值的整数倍,在待写入数据的大小为第一数值的整数倍的情况下,执行步骤s603,在待写入数据的大小不为第一数值的整数倍的情况下,执行步骤s608。其中,第一数值可以为预先设置的数据,例如4kb等,在此不做限定。在步骤s603中,根据当前的磁头位置和待写入数据的大小,确定第一逻辑区块地址,第一逻辑区块地址对应的逻辑区块为空闲的逻辑区块。作为本实施例的一个示例,在待写入数据的大小为第一数值的整数倍的情况下,根据当前的磁头位置和待写入数据的大小,确定第一逻辑区块地址。例如,第一数值为4kb,若待写入数据的大小为12kb,待写入数据的大小为第一数值的3倍,则根据当前的磁头位置和待写入数据的大小12kb,确定第一逻辑区块地址。在步骤s604中,将待写入数据写入第一逻辑区块地址对应的逻辑区块。对该步骤的描述可以参见步骤s203。在步骤s605中,在元数据中记录第一逻辑区块地址。对该步骤的描述可以参见步骤s204。在步骤s606中,获取改写请求对应的第二逻辑区块地址,第二逻辑区块地址对应的逻辑区块存储待写入数据对应的旧数据。对该步骤的描述可以参见步骤s205。在步骤s607中,将第二逻辑区块地址加入回收列表。对该步骤的描述可以参见步骤s206。在步骤s608中,将待写入数据的大小调整为第一数值的整数倍。在步骤s609中,根据当前的磁头位置和该调整后的待写入数据的大小,确定第三逻辑区块地址,第三逻辑区块地址对应的逻辑区块为空闲的逻辑区块。在步骤s610中,将该调整后的待写入数据写入第三逻辑区块地址对应的逻辑区块。作为本实施例的一个示例,在待写入数据的大小不为第一数值的整数倍的情况下,可以将待写入数据的大小调整为第一数值的整数倍,并根据当前的磁头位置和该调整后的待写入数据的大小,确定第三逻辑区块地址。其中,第三逻辑区块地址中的offset为某一个逻辑区块的起始地址。例如,第一数值为4kb,若待写入数据的大小为13kb,待写入数据的大小不为第一数值的整数倍,则将待写入数据的大小调整为第一数值的整数倍,例如16kb。根据当前的磁头位置和待写入数据的大小16kb,确定第三逻辑区块地址,其中,第三逻辑区块地址中的offset为某一个逻辑区块的起始地址。作为本实施例的另一个示例,在待写入数据的大小不为第一数值的整数倍的情况下,可以根据当前的磁头位置和该待写入数据的大小,确定第四逻辑区块地址,并将待写入数据的大小调整为第一数值的整数倍。图7示出根据本公开一实施例的调整待写入数据的大小时逻辑区块的结构示意图。例如,如图7所示,若第四逻辑区块地址中的offset不为某一个逻辑区块的起始地址,且待写入数据的length的结尾不为某一个逻辑区块的结束地址。则可以通过在待写入数据的前面和后面分别填补0,使得调整后的待写入数据的大小变为第一数值的整数倍。在步骤s611中,在元数据中记录第三逻辑区块地址。需要说明的是,本领域技术人员应当能够理解,调整后的待写入数据的大小只要为第一数值的整数倍即可,由此使得硬盘中均按照第一数值的整数倍进行数据的写入或空间的释放,能够有效地避免磁盘碎片。此外,可以将待写入数据调整为大小为第一数值的整数倍且与待写入数据的大小相差最小的数值,从而节省硬盘中的存储空间。在步骤s612中,获取改写请求对应的第二逻辑区块地址,第二逻辑区块地址对应的逻辑区块存储待写入数据对应的旧数据。对该步骤的描述可以参见步骤s205。在步骤s613中,将第二逻辑区块地址加入回收列表。对该步骤的描述可以参见步骤s206。实施例2图8是根据一示例性实施例示出的一种数据的改写装置的框图。如图8所示,该数据的改写装置,包括:第一获取模块11,用于在接收到客户端的改写请求的情况下,获取硬盘当前的磁头位置,所述改写请求包括待写入数据和所述待写入数据的大小;确定模块12,用于根据所述当前的磁头位置和所述待写入数据的大小,确定第一逻辑区块地址,所述第一逻辑区块地址对应的逻辑区块为空闲的逻辑区块;写入模块13,用于将所述待写入数据写入所述第一逻辑区块地址对应的逻辑区块;记录模块14,用于在元数据中记录所述第一逻辑区块地址;第二获取模块15,用于获取所述改写请求对应的第二逻辑区块地址,所述第二逻辑区块地址对应的逻辑区块存储所述待写入数据对应的旧数据;加入模块16,用于将所述第二逻辑区块地址加入回收列表。在一种可能的实现方式中,所述第一逻辑区块地址对应的逻辑区块为存储空间大于或等于所述待写入数据的大小的逻辑区块中距离所述当前的磁头位置最近的逻辑区块。图9是根据一示例性实施例示出的一种数据的改写装置的一示例性的框图。如图9所示:在一种可能的实现方式中,所述第一获取模块11包括:磁头位置获取子模块111,用于获取记录的提交i/o接口中的偏移地址。在一种可能的实现方式中,所述装置还包括:调整模块17,用于在所述待写入数据的大小不为第一数值的整数倍的情况下,将所述待写入数据的大小调整为所述第一数值的整数倍。本实施例的数据的改写装置,改变了相关技术中使用先写入日志系统,然后再写入存储系统的方法,而通过将待写入数据写入空闲的逻辑区块地址对应的逻辑区块,避免对硬盘中的原有数据的破坏,由此避免采用日志系统进行掉电保护引起的两次写入数据,从而提高iops和带宽,提高存储系统的性能。实施例3图10是根据一示例性实施例示出的一种用于数据的改写的装置900的框图。参照图10,装置900可以包括以下一个或多个组件:处理组件901,存储器902,电源组件903,以及输入/输出(i/o)的接口904。处理组件901通常控制装置900的整体操作。处理组件901可以包括一个或多个处理器9011来执行指令,以完成上述的方法的全部或部分步骤。存储器902被配置为存储各种类型的数据以支持在装置900的操作。存储器902可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。电源组件903为装置900的各种组件提供电力。电源组件903可以包括电源管理系统,一个或多个电源,及其他与为装置900生成、管理和分配电力相关联的组件。i/o接口904为处理组件901和外围接口模块之间提供接口。在示例性实施例中,装置900可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器902,上述指令可由装置900的处理器9011执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
的其它普通技术人员能理解本文披露的各实施例。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1