用于优化可下载内容传输的系统和方法与流程

文档序号:17501941发布日期:2019-04-23 23:46阅读:225来源:国知局
用于优化可下载内容传输的系统和方法与流程

本公开一般地涉及可下载内容传送,特别地,涉及用于优化可下载内容传输的系统和方法。



背景技术:

近年来,计算设备已经发展作为信息、娱乐和通信的主要源的普遍呼吁。产生、改变并完善集成了这些设备的终端用户产品,诸如电视机、DVD播放器、游戏控制台、计算机等等,以便于消费者访问所有大小和类型的数字内容。这样的数字内容通常在物理介质(诸如CD、DVD和蓝光盘(BD))上分发,但是被限定为其包含在上的物理介质的存储器大小。进一步,物理介质要求消费者或者对实体的(brick-and-mortar)存储位置进行访问以获取内容,或者具有物理地交付给他们的介质。在任何一种情况下,都要求介质的实际物理占有,延迟了数字内容的访问和享受。此外,物理介质易受损坏,诸如擦伤、破裂和一般磨损,以及制作差异和缺陷。这些问题可能导致加载延迟、错误,或者甚至可能导致数字内容无法访问。

因此,内容开发商和制造商已经开始通过互联网发布数字内容,这解决了上述与物理介质相关联的许多上述问题。例如,不要求消费者从商店或者其他源获得物理介质的占有,而是可以在自己家中舒服地下载内容。这允许消费者可以通过单击按钮获得多种数字内容,诸如图片、音乐、游戏、电视节目、电影、应用、升级、附加特性等。然而,通过可用带宽、消费者互联网速度和执行内容的终端用户产品的存储器大小,可以限制可下载内容的大小。而且,许多类型的内容的执行要求在执行之前完全下载,又延迟了消费者对期望内容的访问和享受。



技术实现要素:

因此,对于在互联网上传输数字内容的新颖和改进的系统和方法存在持续和正在进行的需求,该需求是减小带宽使用、对消费者互联网速度不敏感、不受终端用户产品存储器大小的限制、以及提供对内容的更快访问。本发明的实施例通过提供允许在完整下载之前就开始内容的执行的用于优化可下载内容传输的系统和方法,满足了这些需求和其他。本文描述的实施例是动态的,因此扩展其应用到静态和交互内容。进一步,可以在用户设备操作系统上用补丁或驱动实施一个或多个公开的实施例,使得不必对内容的源代码进行重大修改。公开的实施例还可以独立于执行内容和/或对执行内容不可见地运行。这使得显示内容时用户观察到的错误数量最少。

根据本发明的一个实施例,描述了一种用于优化可下载内容传输的方法。该方法包括接收对于可下载内容的多个部分的第一部分的第一本地请求,将第一本地请求翻译为对于可下载内容的第一部分的第一远程请求,发送第一远程请求,接收可下载内容的第一部分,存储可下载内容的第一部分,以及执行可下载内容的第一部分。根据另一个实施例,描述了一种具有包含在其上用于执行该方法动作的计算机可执行指令的计算机可读介质。

根据本发明的一个实施例,本文还描述了实现该方法的系统。例如,描述了一种用于优化可下载内容传输的系统。该系统包括处理器和存储器。处理器可操作用于接收对于可下载内容的多个部分的第一部分的第一本地请求,将第一本地请求翻译为对于可下载内容的第一部分的第一远程请求,通过网络发送第一远程请求,通过网络接收可下载内容的第一部分,并执行可下载内容的第一部分。存储器可操作用于存储可下载内容的多个部分的至少一部分。

还在一个实施例中描述了使用模块优化可下载内容传输的系统。该系统包括一个翻译模块,可操作用于对于多个可下载内容部分的第一部分的第一本地请求翻译为对于可下载内容的第一部分的第一远程请求;一个通信模块,可操作用于接收第一本地请求,发送第一远程请求并接收可下载内容的第一部分;一个执行模块,可操作用于执行可下载内容的第一部分;和一个存储模块,可操作用于存储多个可下载内容部分的至少一部分。

附图说明

图1是图示根据本发明的实施例,用于优化可下载内容传输的方法的流程图。

图2是图示根据本发明的另一个实施例,用于优化可下载内容传输的方法的流程图。

图3是图示根据本发明的实施例,用于执行可下载内容的方法的流程图。

图4是图示根据本发明的实施例,用于建立可下载内容请求元数据的方法的流程图。

图5是图示根据本发明的进一步的实施例,用于优化可下载内容传输的方法的流程图。

图6是图示实现本文所述方法的实施例的系统的示意图。

图7是具有使机器执行本文所述任意一种或多种方法的指令集的机器的图形表示。

具体实施方式

描述了一种用于优化可下载内容传输的系统和方法。在以下的描述中,为了说明的目的,为了提供对示例性实施方式的透彻了解提出了大量的具体细节。然而,没有这些特定细节或者以等效的布置实现本发明的实施例对本领域技术人员是显而易见的。在某些情况下,为了避免对实施例的不必要的模糊,公知的结构和设备以框图形式示出。

现在参考附图,其中遍及几个视图中相同的参考标号指示相同或相应的部分,图1是图示根据本发明实施例,用于优化可下载内容传输的方法的流程图。在该实施例中,内容在其下载完成之前就开始执行,该内容的随后部分“按需(on demand)”被请求,当需要它们时。因此,用户在开始执行之前不必等待全部要下载的潜在的大量内容,并可以尽可能快的开始享受内容。而且,消除了潜在的不相关数据的存储。

在处理块110,接收对可下载内容的一部分的本地请求。该本地请求可以关于与可下载内容的期望部分相关联的数据集以标准文件操作的形式到来,并可以例如,从应用发送到操作系统,例如,如本文进一步讨论的。可下载内容可以是,例如,视频内容、音频内容、游戏内容、和/或静态可视内容,包括游戏、电影、软件、TV节目、新闻、音乐视频、谈话节目、预告片、广告、音乐、书籍、有声读物、杂志、报纸、目录、墙纸、主题曲、“附加”内容、或任何其他类型的可分割成可执行内容的更小部分的内容。可以设想这种内容可以是用户生成的或者开发者生成的、免费的或付费的、完整的或试验的、和/或出售或出租的。此外,本文所用的术语“部分”可以对应于可下载内容的任何部分,所述可下载内容可分割为任何相关或任意组的单个或多个比特或字节的数据。例如,内容的“部分”可以对应于层次、章、情景、幕、角色、背景、结构、动作、歌曲、标题、持续时间、大小、文件、其部分或其组合。然而,在另一个实施例中,内容的“部分”可以指没有其他显然的共性、为了传输的高效性的目的而分组在一起的数据。

在判断块115,确定可下载内容的请求部分是否存储在本地。例如,处理器可以对于可下载内容的请求部分询问本地存储器。如果可下载内容的请求部分确实存储在本地,那么在处理块140对其进行执行。如果可下载内容的请求部分没有存储在本地,在处理块120,诸如通过处理器将本地请求翻译为远程请求。在处理块125,发送该远程请求。例如,该远程请求可以从本地设备的处理器发送到服务器。例如,接着该服务器可以执行相对于图5本文进一步描述的处理。

返回图1,在处理块130接收可下载内容的请求部分。在处理块130,将可下载内容的请求部分存储在本地。可下载内容的请求部分的本地存储保证了在再次请求可下载内容的那些部分的情况下,其不会必须被重新下载。内容的部分可以被多次请求,例如,如果贯穿多个等级使用游戏中相同的背景或角色。

在处理块140,执行可下载内容的请求部分。同时,针对另一个接收到的对可下载内容的一部分的本地请求,该方法可以在处理块110重复,同时可下载内容的之前请求部分正在被执行。换句话说,该方法的动作可以异步执行,即,允许在先处理完成之前继续进行其他的处理。

如图1所示,在处理块135存储了可下载内容的第一部分之后,可以接收对可下载内容的一部分的另一个本地请求。尽管图示为在该位置发生,然而,对可下载内容的各部分的随后本地请求可以在接收了最初的本地请求后的过程中的任意点发生。然而,如果随后请求的部分在紧接着前一请求部分的执行完成时不可用于执行,就生成一个错误消息,实现延迟以允许随后请求的部分完成下载,如相对于图3本文进一步详细的描述。如本文所用的,术语“随后的”仅指请求接收、发送和/或预测的顺序,并不一定反应内容的特定部分就时间、执行顺序、在代码中的位置等而言是在内容的在先请求部分“之后”。进一步,可以设想内容的相同部分可以被请求多次,从而构造多于一个的内容的之前、当前和/或随后请求的部分。

方法可以继续直到请求设备和可下载内容的主机之间的连接终止;直到可下载内容已经全部执行;或者直到可下载内容的所有部分已经存储。例如,游戏的各部分可以继续被请求和执行直到用户退出游戏、关闭游戏控制台,或者完成游戏的所有等级,或者直到游戏已经完全下载。因此,在用户玩游戏仅很短的时间量并且确定他或她不喜欢该游戏的情况下,那么仅有游戏的少量下载到游戏控制台中。这最小化了用户在等待不喜欢的游戏下载中损失的时间、在不喜欢的游戏上损失的带宽和/或数据限额的量、以及不喜欢的游戏在游戏控制台上占用的存储器的数量。

类似的,当游戏的所有等级已经完成,而且用户不想再玩这个游戏时,仅在玩游戏期间用户需要的游戏的部分已经被下载到游戏控制台中。这最小化了等待不必要的文件或特征下载中用户损失的时间、在下载不必要的文件或特征上损失的带宽和/或数据限额的量、以及被不必要的文件或特征占用的存储器的数量。

图2是图示根据本发明的另一个实施例的用于优化可下载内容传输的方法的流程图。根据该实施例,当可下载内容的各部分需要用于执行时,基于哪一部分将需要用于执行的预测,或两者,可下载内容的各部分“按需”被请求。对于可下载内容的各部分的请求在本地预测,并且在接收到对可下载内容的预测部分的本地请求之前(或者完全没有接收到对那些部分的本地请求)获得那些部分。

在处理块210,接收对于可下载内容的最初部分的最初本地请求。在判断块215,确定可下载内容的最初部分是否存储在本地。如果可下载内容的最初部分确实存储在本地,那么在处理块237存储最初的本地请求,并且在处理块240执行可下载内容的最初部分。然而,如果可下载内容的最初部分没有存储在本地,在处理块220将最初本地请求翻译为对于可下载内容的最初部分的远程请求。在处理块225,发送该远程请求,并且在处理块230,接收可下载内容的最初部分。在处理块235,存储可下载内容的最初部分,并且在处理块237,存储最初的本地请求。在处理块240执行可下载内容的最初部分。

如使用的词语“最初”指对应于内容的特定运行中的第一个请求的内容的部分,不一定指该部分是就时间、执行顺序、代码中的位置等而言的内容的第一部分。从而,例如,游戏的“最初”部分可以是等级7,视频的“最初”部分可以是视频的中途,书籍的“最初”部分可以是第8章,等等。然而,在另一个实施例中,内容的“最初”部分可以对应于可下载内容的最小工作集数据,或者可以真正对应于想要相对于整个内容首先执行的可下载内容的部分。关于后者,最初部分可以是,例如,游戏的等级1、视频的前10秒、书籍的第1章,等等。在任何一种情况下,根据实施例至少要求在可下载内容开始执行之前本地存储可下载内容的最初部分。通过要求内容的最初部分在开始执行之前下载,可以通过最小化执行中的延迟或中断来提高用户体验。因此,例如,首次开始游戏的用户可以要求在玩之前下载游戏的等级1,或者在等级4离开后重新回到游戏的用户可以要求在玩之前下载游戏的等级5。

如图2所示,可以在处理块250预测对可下载内容的部分的随后的请求。在该实施例中,随后的请求可以在本地预测,诸如通过执行可下载内容的设备。例如,可以使用可下载内容的之前请求的部分(例如,可下载内容的最初部分)、之前的本地请求(例如,存储的最初本地请求)、可下载内容元数据(例如,标题、大小、类型、出版商)、请求设备元数据(例如,类型、操作系统、存储空间、连接类型)、用于当前用户和其他用户的用户元数据(例如,人口统计学信息、内容访问历史)、和可下载内容请求元数据(例如,进行的本地请求的连续日志)进行这种预测。可选地,预测的请求可以被存储为预测请求元数据。

可下载内容请求元数据不限制为在正在执行的特定内容中进行的请求的日志,也可以包括在其他之前执行的内容中的进行的请求的日志。例如,基于动作游戏以类似顺序执行类似功能的假设,可以使用另一个动作游戏的请求元数据来预测特定动作游戏的随后请求。不仅可以根据请求内容的类型进行这种假设,还可以根据其平台、出版商、作者、发布日期或任何其他可用的内容元数据进行这种假设。

在判断块215,确定可下载内容的预测部分是否存储在本地。如果可下载内容的预测部分确实存储在本地,那么在处理块265继续该方法,如本文进一步描述的。然而,如果可下载内容的预测部分没有存储在本地,在处理块255生成对可下载内容的预测部分的远程请求。在处理块257,发送该远程请求,并且在处理块260,接收可下载内容的预测部分。在处理块263,存储可下载内容的预测部分,并且在处理块265继续该方法。可下载内容的预测部分的本地存储保证了在请求(例如,如果预测正确)或再次预测那些部分的情况下,其将不会必需被重新下载。块250到263可以独立于制定本地请求的应用或模块完成。

在处理块265,接收对于可下载内容的部分的随后的本地请求。在判断块270,诸如通过访问预测请求的元数据,确定随后的本地请求是否与预测请求匹配,即,请求是否是对于可下载内容的同一部分。可以更新预测请求元数据以反应预测是否准确,并且可以使用预测请求元数据改善随后的预测。

如果随后的本地请求与预测请求匹配,那么在处理块273存储随后的本地请求,并且在处理块275执行可下载内容的预测部分。如果随后的本地请求与预测请求不匹配,那么在判断块280确定可下载内容的请求部分是否存储在本地。如果可下载内容的请求部分确实存储在本地,那么在处理块293存储随后的本地请求,并且在处理块295执行可下载内容的请求部分。如果可下载内容的请求部分没有存储在本地,那么在处理块283将随后本地请求翻译为远程请求,并且在处理块285发送该远程请求。在处理块287,接收可下载内容的请求部分,并且在处理块290进行存储。在处理块293存储随后的本地请求,在处理块295执行可下载内容的请求部分。

对于任意数量的可下载内容的部分可以重复块250到295。为了使随后的预测(对于请求的内容和对于将来请求的内容二者)更准确,在块237、273和293存储的本地请求,例如,可以用于建立并扩展可下载内容请求元数据。该方法可以继续直到请求设备和可下载内容的主机之间的连接终止;直到可下载内容已经全部执行;或者直到可下载内容的所有部分已经存储。

尽管示意为仅在接收了随后的本地请求并执行了内容的请求部分之后重新发生,但是预想到可以预测随后的请求,在接收与之前预测相关联的本地请求之前下载内容的预测部分。例如,在210接收了第一本地请求并在240执行了内容的第一部分之后,在250第一预测可以由第二本地请求将针对什么构成,并且在260和263可以分别下载并存储内容的预测部分。当在240正在执行内容的第一部分的同时,并且在265接收了第二本地请求之前,第二预测可以由第三本地请求将针对什么构成,并可以下载和存储内容的预测部分。

在执行方法的同时预测和相关的下载可以不间断地继续,或者可以在方法内的任意点暂停或停止。例如,当接收到下一个本地请求时预测可以暂停,在该点可以改进过去或未来的预测。另外,当已经进行了特定数量的预测请求(或者已经下载了特定数量的内容的预测部分),超过了当前正在执行的请求或内容的部分时,预测可以暂停。例如,如果根据第一本地请求当前正在执行游戏的等级1且还没有接收随后的本地请求,那么预测可以限制为下两个请求。从而,可以分别预测对于等级2和3的第二和第三请求,下载游戏的它们各自的部分。然而,直到接收真正的第二本地请求才预测第四请求。因为当接收第二本地请求时可以更新可下载内容请求元数据,所以这样的实施例使得将未来的预测改进得更加准确,同时将仅下载有限数量的内容的预测部分。进一步,专用于内容的预测部分(可能是或者不是执行真正需要的)的存储器数量是有限的。因此,如果用户在接收到第二本地请求之前关闭游戏并且不再玩该游戏,不必要数据仅占用了有限数量的存储器。

当在处理块265接收到第二本地请求时,对于第一预测方法可以进行到判断块270。换句话说,在270可以比较第二本地请求和第一预测,并且方法可以如所示进行。进一步,当在处理块273或293存储第二本地请求时,可以更新可下载内容请求元数据,并可以改进随后的预测。例如,可以基于第二本地请求的内容和更新的请求元数据重新定义第二预测(以及其他任何在接收第二本地请求之前进行的预测),并且新的预测可以继续建立。

例如,图3是图示用于执行如图1或2所描述的接收的可下载内容的方法的流程图。内容的执行例如可以包括输出内容,诸如通过显示内容,其可能受一个或多个用户输入的影响。根据图3所示的实施例,执行可下载内容的第一部分,并当完整执行第一部分时,执行第二部分,等等。然而,如果当完整执行紧接地前一请求部分时随后请求的部分不可用于执行,则生成错误消息,并且执行延迟以允许随后请求的部分完成下载。在图3的处理块310,执行可下载内容的最初部分。仅为了解释的目的,为可下载内容的这个部分分配值n=1。当开始执行可下载内容的最初部分时,将n设置为n=n+1或者n=2。如此处所用,n的不同值仅指内容的特定部分被请求、发送和/或预测的顺序,并不一定反应内容的特定部分关于时间、执行顺序、在代码中的位置等在内容的之前请求部分“之后”。进一步,可以预想n的不止一个值可以指可下载内容的同一部分,例如,在不止一次请求可下载内容的部分的情况下。

在判断块320,确定可下载内容的第n部分是否可用于执行。可以在执行内容的在先部分(例如,n-1部分)之后的任意点进行该确定。例如,可以在在执行内容的最初部分时立即查询第二部分的可用性;在最初部分执行期间的特定间隔;在最初部分执行期间的随机时间;或者就在最初部分执行完成之前。当至少存储了可下载内容的数据的最小数量以支持执行的时,可下载内容的部分可用于执行。例如,如果该部分被完全下载并存储,或者如果存在开始执行的最小工作数量的部分数据,那么该部分可以用于执行。

如果可下载内容的第n部分可用于执行,那么可以在处理块330执行,并且n被设置为n=n+1,以及方法返回到判断块320。例如,如果可下载内容的第二部分可用于执行,那么可以其在处理块330执行,并且n被设置为n=n+1或n=3。接着将可以在判断块320确定可下载内容的第三部分是否可用于执行,对于每一个可下载内容的第n部分诸如此类。

如果可下载内容的第n部分不可用于执行,那么在处理块340暂停可下载内容的执行,并且在处理块350生成延迟消息。这防止了异常超时和其他异常情况的发生。进一步,n的值保持不变。从而,方法在判断块320继续确定可下载内容的第n部分是否可用于执行。当可下载内容的第n部分可用于执行时,在处理块330执行其,并且n被设置为n=n+1。该方法返回到判断块320并可以对每一个可下载内容的第n部分重复,直到请求设备和可下载内容的主机之间的连接终止,或者直到可下载内容已经完全执行。

可下载内容的任意部分的执行可以在任意时间暂停以允许第n部分下载进行和完成。然而,在本实施例中,如果可下载内容的第n部分在完全执行内容的在先部分(即,n-1部分)时不可用于执行,暂停可下载内容的执行。例如,如果可下载内容的第二部分不可用于执行,那么在处理块340暂停可下载内容的整体执行(即,在最初部分完成执行和第二部分开始执行之间进行延迟),并且在处理块350生成延迟消息。n的值保持为n=2。从而,方法继续返回到判断块320以确定可下载内容的第二部分是否可用于执行。当可下载内容的第二部分变得可用于执行时,在处理块330执行其,并且在本示例中n被设置为n=n+1或n=3。接着在判断块320确定可下载内容的第三部分是否可用于执行,等等。对每一个可下载内容的本地请求部分重复该方法,或者直到请求设备和可下载内容的主机之间的连接终止。

图4是图示根据本发明实施例的用于建立并扩展可下载内容请求元数据的方法的流程图。在本实施例中,诸如,通过托管可下载内容的服务器或第三方,远程建立可下载内容请求元数据。在处理块410,接收对于可下载内容的部分的远程请求。在处理块420,发送可下载内容的请求部分。在处理块430,远程请求存储在可下载内容请求元数据文件中。在根据接收顺序按顺序存储远程请求该方法的情况下,对于每一个接收到的对于可下载内容的部分的远程请求重复。可下载内容请求元数据可以与多种其他信息相关联地存储,诸如可下载内容元数据(例如,标题、大小、类型、出版商)、请求设备元数据(例如,类型、操作系统、存储空间、连接的类型)和用于当前用户和其他用户二者的用户元数据(例如,人口统计信息、内容访问历史)。

如果还没有存储,可以用来自多个源的信息请求、获得并扩展可下载内容元数据、请求设备元数据、用户元数据和/或可下载内容请求元数据,所述源包括请求设备;出版商、制造商和/或经销商数据库;第三方网站;和/或第三方用户设备。方法可以继续直到请求设备和可下载内容的主机之间的连接终止,或者至到可下载内容的所有部分已经被请求和/或发送。

图5是图示根据本发明实施例的使用预测优化可下载内容传输的方法的流程图。在本实施例中,关于托管可下载内容的服务器方面图示本方法。然而,可以设想关于图5描述的远程预测可以以同步或异步方式,与关于图2描述的本地预测合并、互换、或者同时或并发进行。进一步,可以设想图5的实施例可以以同步或异步方式,与关于图4描述的实施例合并、互换、或者同时或并发执行。当异步执行时,图4和5图示的方法可以接收并执行请求,以及建立可下载内容请求元数据,同时预测未来的请求。

在图5的处理块510,接收对于可下载内容的最初部分的最初远程请求。为了解释的目的,为可下载内容的这个部分分配值n=1。在处理块520,发送响应于该最初远程请求的可下载内容的最初部分。当开始发送可下载内容的最初部分时,将n设置为n=n+1或者n=2。在处理块530,预测对于可下载内容的部分的第n个远程请求。例如,以使用可下载内容的在先请求的部分(例如,可下载内容的最初部分)、在先远程请求(例如,在图4的430存储的远程请求)、可下载内容元数据(例如,标题、大小、类型、出版商)、请求设备元数据(例如,类型、操作系统、存储空间、连接的类型)、用于当前用户和其他用户二者的用户元数据(例如,人口统计信息、内容访问历史)、可下载内容请求元数据(例如,如图4所示创建和建立的)和预测的请求元数据,来进行这样的预测。

为了表示预测,可以关于请求用户、请求设备和/或特定的请求的可下载内容该数据进行分析。可替代地或附加地,可以跨越多个请求用户、请求设备和/或请求的可下载内容聚集并分析该数据。在后一种实施例中,可以对来自同一可下载内容的多个运行的可下载内容请求元数据进行分析,以识别可下载内容的执行中的可选分支,并且各种分析可以合并成一个分支可下载内容请求元数据文件。

例如,可下载内容请求元数据文件可以具有预测如果请求几何模型数据,则相关联的纹理(texture)将也被请求的分支。因此,如果接收了对于等级1几何模型数据的本地请求,则可以预测将请求等级1纹理。类似地,如果接收了对于等级2几何模型数据的本地请求,则可以预测将请求等级2纹理,等等。

在另一个例子中,可以通过分析在游戏X中与多个用户设备相关联的多个请求元数据文件中所创建的文件访问模式,来预测在游戏X中用户设备A的随后请求。这样的预测基于执行游戏X的多个用户设备以类似顺序请求游戏X数据(即,同一游戏的用户以类似的顺序采取类似的动作)的假设。在另一个示例中,可以通过分析在益智游戏Y中用户设备C的创建的文件访问模式,来在预测益智游戏Y中用户设备B的随后请求,其中用户设备B和用户设备C被视为在类似的益智游戏Z中具有相同的游戏玩法行为(即,类似的文件访问模式)。这种预测基于这样的假设,因为用户设备B和用户设备C以类似的顺序请求游戏Z数据,他们也将类似的顺序请求类似的游戏Y数据(即,在一个益智游戏中具有类似游戏玩法行为的两个用户在类似的益智游戏中也将具有类似的游戏玩法行为)。

因为请求、元数据和预测可能是动态的,本文描述的方法适用于与这样的可下载内容一起使用,该可下载内容没有以相同或类似的顺序跨越每个运行执行相同或类似的操作,诸如根据用户输入执行的交互式内容。因此,例如,本文描述的系统和方法可以与高级、先进的视频游戏和虚拟现实环境合作实行。

在可选的判断块540,确定可下载内容的预测部分是否已经存储在请求设备。这种确定可以通过分析与特定请求可下载内容和特定请求设备相关联的可下载内容请求元数据作出,以确定预测部分是否先前已经请求并传输。可替换地,可以向请求设备发送查询以检查用于预测部分的本地存储器,并且可以接收响应。如果可下载内容的预测部分已经存储在请求设备上,那么n被设置为n=n+1,并且在处理块530进行另一个预测。如果可下载内容的预测部分还没有存储在请求设备上,那么在处理块550将其发送;n被设置为n=n+1;并且在处理块530进行另一个预测。例如,方法可以继续直到或者请求设备或者服务器终止连接,或者直到可下载内容的所有部分已经被发送。

在其中省略了可选判断块540的实施例中,方法从处理块530直接进行到处理块550,在处理块530中预测对于可下载内容的部分的第n个远程请求,在处理块550中将可下载内容的预测部分发送或“推送”到请求设备。然后请求设备可以关于内容的预测部分采取所需的任意动作。例如,如果预测部分已经存储在请求设备上,那么请求设备可以请求终止其传输,或者可替换地,重写之前存储的部分。如果预测部分还没有存储在请求设备上,那么请求设备可以简单地存储预测的部分并等待对于内容的那部分的本地请求。

图6图示了实现本文描述的一个或多个方法的动作的系统。服务器610通过网络640连接到用户设备650。服务器610包括处理器620和存储器630,它们彼此相互通信。服务器610通常是计算机系统,可能是HTTP(超文本传送协议)服务器,诸如Apache服务器。然而可以设想,服务器610可以是托管可下载内容或其部分的单个或多个模块或设备。进一步,服务器610可以是专用服务器、共享服务器或其组合。例如,服务器610可以是与可下载内容或其部分的开发商、出版商或经销商相关联的服务器、或者第三方服务器,诸如在对等(P2P)网络中的对等设备。此外,服务器610可以包括提供可下载内容的虚拟市场或基于在线购物的服务。在本实施例中,除了本文描述的那些动作外,服务器610(单独或与其他设备组合)可以处理并执行各种商业交易,诸如计费。

用户设备650包括应用660、操作系统670、处理器680和存储器690,它们彼此通信。用户设备650可以是大型机、小型机、个人计算机、便携式电脑、个人数字助理(PDA)、蜂窝电话、电视、CD播放器、DVD播放器、BD播放器、游戏控制台、平板电脑、电子阅读器之类。服务器610和用户设备650的特征在于它们能够连接到网络640。网络640可以是有线的或者无线的,可以包括局域网(LAN)、广域网(WAN)、电话网络(诸如公共交换电话网(PSTN))、射频网络、蜂窝或移动电话网(诸如GSM、GPRS、CDMA、EV-CO、EDGE、3GSM、DECT、IS-136/TDA、iDEN之类)、内联网、互联网或其组合。存储器630和存储器690可以是任何类型的存储介质,可以是易失性或非易失性存储器,例如包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、zip驱动及其组合。存储器630和存储器690可以是永久或临时存储、或二者;可以是内部的、外部的、或两者。

在其中使用了对等网络的实施例中,服务器610可以是用户设备650从其取回可下载内容的请求或预测的部分的第三方用户设备。当使用了这样的对等网络时,从托管内容的其他服务器(诸如出版商的服务器)减小了带宽使用和相关成本。例如,通过用户设备650可以从第三方用户设备获得内容的所有请求和预测部分,总体来说消除了用户设备650从其他服务器的带宽使用。在另一个例子中,可以结合应用出版商的服务器使用第三方用户设备以提供内容,减少用户设备650从其他服务器的带宽使用。进一步,用户设备650可以与任意数量的第三方用户设备合作,以每一个从服务器610请求可下载内容的不同部分,然后按需在他们自身中分享。在本实施例中,用户设备650和第三方用户设备都作为主机,运行服务器和客户端程序二者以向彼此提供内容的请求部分。

在使用中,应用660使用标准文件操作向操作系统670发起调用以加载并访问存储在存储器690中的数据。应用660可以是在用户设备650的用户和可下载内容之间提供接口的任意软件和/或硬件。例如,标准文件操作包括“打开”(即,指定哪个文件将被访问)、“查找”(即,指定到文件中的哪个位置读取数据)、“读取”(即,请求数据将从文件读取并拷贝到应用660)、和“关闭”(即,请求文件现在将被关闭)。为了最优地“按需”下载数据,通过修补现有代码或替换驱动器,操作系统670将标准文件操作翻译为执行本文描述的附加操作的新的版本。因此,应用660可以在可下载内容已经被完全下载之前开始可下载内容的执行。进一步,通过以新的操作替换标准文件操作,本文描述的方法可以用各种各样的新的现有应用来实施。例如,公开的实施例可以用较旧或模拟游戏实施,因为游戏代码不需要重大修改(或根本修改)就允许游戏内容的流化。

在一个实施例中,应用660中的每个文件映射为生成的地址空间中的唯一位置。例如,如果应用660具有两个文件:(1)10kB的FILE1.DAT,和(2)20kB的FILE2.DAT,它们的数据可以被重新映射到唯一的位置,诸如,例如,分别为0-9999和10000-29999。在本例中,应用660将以下本地请求传递到操作系统670:(A)对于FILE2.DAT的“打开”请求,(B)去位置20的“查找”请求,以及(C)40字节的“读取”请求。

在一个实施例中,操作系统670指示处理器680使用如从应用660接收到的本地请求来确定内容的请求部分是否存储在存储器690中。如果内容的请求部分存储在存储器690中,那么读取并将其拷贝到应用660。如果内容的请求部分没有存储在存储器690中,操作系统670将来自应用660的本地请求翻译为以对服务器610可读形式的对内容的所需部分的远程请求。在本例中,操作系统670将对来自FILE2.DAT的、在位置20的、长度为40字节的数据的本地请求翻译为对相应于位置10020到10039的可下载内容的部分的远程请求,并且用户设备650将远程请求发送到服务器610。服务器610的处理器620从存储器630取回可下载内容的请求部分,并将其返回到用户设备650。用户设备650将可下载内容的请求部分存储到存储器690,并作为对其本地请求的响应将可下载内容的请求部分拷贝到应用660。接着可下载内容的请求部分可用于由应用660来执行。

在其中本地请求的格式与处理器680和/或存储器690所使用的格式不相符的另一个实施例中,操作系统670立即将来自应用660的本地请求翻译为对处理器680和/或存储器690可读格式的对内容的所需部分的请求。从而,在上述实施例中,操作系统670将对来自FILE2.DAT的、在位置20的、长度为40字节的数据的本地请求翻译为对相应于位置10020到10039的内容的部分的本地请求,然后指示处理器680使用如从应用660接收到的本地请求来确定内容的请求部分是否存储在存储器690中。如果内容的请求部分存储在存储器690中,那么读取并将其拷贝到应用660。如果内容的请求部分没有存储在存储器690中,操作系统670将对相应于位置10020到10039的内容的部分的本地请求翻译为对相应于位置10020到10039的内容的部分的远程请求,并且用户设备650将远程请求发送到服务器610。服务器610的处理器620从存储器630取回可下载内容的请求部分,并将其返回到用户设备650。用户设备650将可下载内容的请求部分存储在存储器690中,并作为对其本地请求的响应将可下载内容的请求部分拷贝到应用660。接着可下载内容的请求部分可用于由应用660来执行。

现在转到本文描述的特定方法的实施,特别地关于图1,用户设备650的用户使用应用660选择服务器610上可用的可下载内容。在一个实施例中,应用660的原始代码已经响应于对全部可下载内容的用户请求被修改,以仅请求可下载内容的最初部分(例如,其最小工作文件)。在本实施例中,应用660将相应于所选内容最初部分的本地请求发送到操作系统670。操作系统670将该请求传递到处理器680,处理器680在存储器690中查询内容的最初部分。

在其中应用660的原始代码还没有以该方式被修改的另一个实施例中,应用660响应于对于整个可下载内容(即,可下载内容的所有部分)的用户请求请求整个可下载内容。在本实施例中,应用660将相应于整个可下载内容的本地请求发送到操作系统670。操作系统670将对于整个可下载内容的请求翻译为仅对可下载内容的最初部分的请求(例如,其最小工作文件),并将这个请求传递到处理器680。

在这些实施例的任意一个中,如果所选内容的最初部分在存储器690中,那么结合操作系统670和处理器680通过应用660执行所选内容的最初部分。如果所选内容的最初部分不在存储器690中,那么操作系统670将本地请求翻译成对于内容最初部分的远程请求,并通过网络640将其发送到服务器610。例如,从用户设备650发送信号,该信号具有目的地址(例如,代表服务器610的地址)、请求(例如,对内容的最初部分的请求)、和返回地址(例如,代表发起远程请求的用户设备650的地址)。处理器620在存储器630中查询内容的最初部分,并将其发送到用户设备650。用户设备650将内容的最初部分存储在存储器690中,并且结合操作系统670和处理器680通过应用660执行内容的最初部分。类似地处理应用660生成的对可下载内容的部分的随后的本地请求。

在又一个实施例中,其中应用660的原始代码和操作系统670都没有响应于对整个可下载内容的用户请求,被修改为仅请求可下载内容的最初部分,应用660和操作系统670分别本地和远程请求整个可下载内容,并且服务器610翻译请求。确切地说,应用660将相应于整个可下载内容的本地请求发送给操作系统670。操作系统670将该请求传递到处理器680,处理器680在存储器690中查询整个可下载内容。如果整个可下载内容在存储器690中,那么结合操作系统670和处理器680通过应用660执行整个可下载内容。如果整个内容不在存储器690中,那么操作系统670将本地请求翻译成对于整个内容的远程请求,并通过网络640将其发送到服务器610。服务器610将对于整个内容的请求翻译为对内容的最初部分的请求(例如,其最小工作文件),并将内容的最初部分发送到用户设备650。用户设备650将内容的最初部分存储在存储器690中,并且结合操作系统670和处理器680通过应用660执行内容的最初部分。应用660生成的对可下载内容的部分的随后的本地请求由操作系统670根据之前描述的实施例进行本地翻译。

在实施图1图示的方法中,可以接收随后的请求,并取回它们的可下载内容的相关联部分,同时正在执行可下载内容的之前请求的部分。换句话说,本文描述的方法的动作可以异步执行,即,允许在先处理完成之前继续其他处理。这允许用户,例如,在整个游戏下载完成之前开始玩游戏。

在实施图2图示的方法中,例如,服务器610、网络640和用户设备650执行与以上关于图1的实施描述的类似的功能。此外,从应用660接收到的本地请求按照它们作为可下载内容请求元数据被接收的顺序依次存储在存储器690中。处理器680访问这个可下载内容请求元数据,并且通过分析请求元数据中的文件访问模式预测对于可下载内容的部分的随后请求。例如,处理器680可以进一步使用可下载内容的之前请求的部分(例如,可下载内容的最初部分)、之前的本地请求(例如,存储的最初本地请求)、可下载内容的元数据(例如,标题、大小、类型、出版商)、请求设备元数据(例如,类型、操作系统、存储空间、连接类型)、和用于当前用户和其他用户二者的用户元数据(例如,人口统计信息、内容访问历史)作出预测。

处理器680查询存储器690以确定内容的预测部分是否存储在本地。如果内容的预测部分存储在存储器690中,处理器680预测对于可下载内容的另一个部分的另一个随后请求,等等。如果可下载内容的预测部分没有存储在存储器690中,那么操作系统670生成对于内容的预测部分的远程请求,并通过网络640将其发送到服务器610。服务器610如上述关于图1的实施描述的那样执行远程请求,并将其本地存储在存储器690中。

在一个实施例中,预测请求存储在存储器690中作为预测请求元数据。因此,当在操作系统670从应用660实际接收到随后的本地请求时,处理器680从存储器690请求依次对应的预测请求,并比较预测和随后的本地请求。如果随后的本地请求是对于与预测相同的可下载内容的部分,那么存储在存储器690中的内容的预测部分由应用660结合操作系统670和处理器680执行。如果随后的本地请求是对于与预测不同的可下载内容的部分,那么处理器680查询存储器690以确定内容的请求部分是否存储在本地。在任何一种情况下,预测请求元数据可以更新以反映预测是否准确,并可用于改进未来的预测。接着如上述关于图1的实施那样继续图2的实施。

在另一个实施例中,预测请求不需要存储在存储器690中。因此,当在操作系统670从应用660实际接收到随后的本地请求时,处理器680简单地查询存储器690以确定内容的请求部分是否存储在本地。换句话说,处理器680不关心内容的请求部分在存储器690中如何变为可用。接着如上述关于图1的实施那样继续图2的实施。

在实施图3图示的方法中,应用660结合操作系统670和处理器680执行可下载内容的最初部分。处理器680查询存储器690以确定可下载内容的下一部分是否可用于执行(即,至少关于下一部分的数据的最小工作量是否存储在存储器690中)。如果内容的下一部分可用于执行,那么当完成最初部分的执行时内容的下一部分提供给应用660并由其执行。

如果内容的下一部分在完成最初部分的执行时不可用于执行,那么操作系统670通过应用660挂起可下载内容的执行。换句话说,在内容的最初和随后部分的执行之间引入延迟。处理器680从存储器690取回存储的延迟消息,执行延迟消息直到内容的下一部分可用于执行时并将延迟消息返回到应用660。由于内容部分的下载在与可下载内容的执行相分离的过程中执行(还由于暂停了通过应用660的可下载内容的执行直到响应于其本地请求的内容的下一部分可用),避免了异常超时和其他异常情况的发生。换句话说,应用660仍然不知道内容的下一部分不可用,也不知道其过程被挂起直到内容的部分变为可用。为了最小化应用660被挂起的时间量,制定预测以请求可能将由应用660以它们将被请求的顺序相同的顺序请求的内容的部分,如关于图2和5进一步描述。

在实施图4图示的方法中,如此创建并维护可下载内容请求元数据,服务器610通过网络640从用户设备650接收对于可下载内容的部分的请求。处理器620从存储器630取回内容的请求部分,并通过网络640将其发送到用户设备650。处理器620以它们在存储器630中被接收的顺序依次存储对于可下载内容的部分的请求。这个文件请求的顺序列表构成了由服务器610使用的可下载内容请求元数据以预测对内容的部分的随后请求,如本文关于图5所示方法的实施的进一步描述。

可以设想本文用于预测的各种类型的数据(例如,可下载内容元数据、可下载内容请求元数据、请求设备元数据、用户元数据)可以在服务器610和用户设备650之间共享,以改进服务器610和用户设备650二者的预测。例如,用户设备650可以与服务器610分开创建、维护并分享可下载内容请求元数据,以提供在内容的特定运行中作出的更准确的请求的顺序列表。因此,可用于服务器610的可下载内容请求元数据不限制为那些远程进行的请求,可以进一步包括本地进行的对于本地可用的内容的部分的请求。

在实施图5图示的方法中,服务器610接收对于内容的部分的最初请求,将内容的部分发送到用户设备650,如上所述。在本实施例中,处理器620访问存储器630中的可下载内容请求元数据,并预测对于可下载内容的部分的随后请求,如上述关于图5进一步描述的。可选地,处理器620确定内容的预测部分是否存储在用户设备650中。在一个实施例中,处理器620通过在存储器630中的文件请求记录中查找指示内容的预测部分之前被用户设备650请求过,和/或发送到用户650的信息来进行这个确定。如果内容的预测部分之前没有被用户设备650请求过,和/或发送到用户650,那么将内容的预测部分从服务器610发送或“推送”到存储器690上。如果内容的预测部分之前确实被用户设备650请求过,和/或发送到用户650,那么处理器620预测对于可下载内容的部分的随后请求。

在另一个实施例中,处理器620通过网络640向用户设备650发送关于内容预测部分是否存储在存储器690的查询。处理器680查询存储器690以确定内容的预测部分是否本地存储。然后处理器680通过网络640向服务器610发送肯定或否定响应。如果内容的预测部分没有存储在用户设备650中,那么将内容的预测部分从服务器610发送或“推送”到存储器690上。如果内容的预测部分确实存储在用户设备650中,那么处理器620预测对于可下载内容的部分的随后请求。

在实施例中,其中处理器620不确定内容的预测部分是否存储在用户设备650中,服务器610进行发送或“推送”内容的预测部分到用户设备650的存储器690上。用户设备650的处理器680可以确定内容的推送部分是否已经存储在存储器690中,在这种情况下它可以向服务器610提交请求以终止该部分的传输。可替换地,处理器680可以简单地允许内容的推送部分重写存储器690中之前存储的部分。如果内容的推送部分还没有存储在存储器690中,可以将它存储在其中来响应对于内容的该部分的本地请求。

在上述任一实施例中,服务器610和/或用户设备650可以发起存储器690内可下载内容的部分的删除。因此,如果存储器690满了且可下载内容的更多部分需要继续其执行,可以采用缓冲算法决定丢弃哪些部分以为新的部分让出空间。例如,如果用户处于24GB游戏中总共30级的15级,且游戏控制台仅有12GB的存储器,那么游戏最近最少被访问的部分(例如,相应于等级1的部分)可以被清除以释放存储空间用于继续执行游戏所需的内容的请求或预测部分(例如,与即将到来的等级16相关联的部分)。

因此,通过发起与所述实施例呼应的缓存算法,具有超过用户设备650的存储空间的大小的可下载内容不仅能够被执行,还可以以对用户用最小延迟来执行。例如,由于本地存储限制、过度下载时间和大量带宽使用,之前限制为由物理介质发布的内容(例如,传统的在蓝光盘上发布的内容),根据公开的系统和方法可以由服务器610发送并由用户设备650执行。

在用户设备650是通过蜂窝网络640从服务器610请求可下载内容的移动设备的实施例中,上述系统和方法也是有用的。通常,由于蜂窝网络的传输速度慢、与蜂窝网络相关联的高数据传输成本、以及由于期望的小尺寸导致的在移动设备上非常有限的可用存储空间,这样的移动设备已经有限地访问可下载内容。然而,通过在这种情况下实施所公开的系统和方法,减小了由于传输速度慢导致的延迟,因为内容不需要其所有数据就能开始执行,而在特定时间只需内容的部分就能继续执行。因为仅内容的必要部分被下载,引起的数据传输成本也是有限的,消除了与不必要部分相关联的传输成本。进一步,当结合上述缓冲算法实施时,可下载内容不受限于移动设备的存储规模。

本文所描述的系统和方法可以进一步实施为优化“试验”或“示范”内容。这些“示范”允许用户在购买或下载全部内容之前在固定或不限的时间段免费尝试内容的至少部分。传统上,通过允许用户下载整个内容但限制内容特定部分的执行来提供这种示范。例如,当购买解锁内容之前封锁的部分的激活密钥时,可以访问并执行整个内容。该系统具有各种缺点,诸如,要求用户在仅允许他或她访问整个内容的有限部分之前下载整个内容。从而下载并存储了比在试验中将使用的更多的数据,超过必要地延迟了用户享受试验。而且,尝试示范并决定他或她不对全部内容感兴趣的用户将不使用额外下载的内容。此外,一旦被下载,封锁内容的部分可能被黑客侵入,而不用购买激活密钥。

其他示范是仅包含与试验相关联的数据的可下载内容的删截版本。尽管这些删节版本消除了黑客访问全部内容的可能,但是它们需要开发商创建与全部内容分离的删截版本。进一步,这些类型的示范仍然需要与试验相关联的所有文件的全部下载,而不是仅那些在特定运行中需要的特定示范文件。如果用户决定购买整个内容,他或她可能需要不管之前的下载重新下载试验内容的部分,并可能丢失与试验内容相关联的任意保存的进程和数据。进一步,还需要用户在执行之前在购买时下载整个内容。

然而,通过应用本文所述实施例,不需要内容的分离、删截版本以向用户提供内容的示范。例如,服务器610可以具有存储在存储器630中的内容的单个版本,并可以访问同一版本以向请求设备提供内容的试验和整个部分。进一步,示范可以开始执行,而不用等待示范或整个内容全部下载。

在一个实施例中,服务器610将发送到用户设备650的内容的部分(远程请求或预测)限制为仅是那些识别为试验内容的内容部分。进一步对于上述示例,如果FILE1.DAT仅是与试验和整个内容二者相关联的文件,那么服务器610可以响应仅对于相应于位置0-9999的内容的部分的远程请求。如果请求了位置0-9999之外的内容的部分,那么服务器610可以进一步发送错误消息(例如,指示请求的内容在试验之外,或者试验结束)给用户设备650。服务器610可以确定是否应该使用包含在存储器630中的可下载内容元数据和/或可下载内容请求元数据为用户设备650给出试验或全部访问。

在另一个实施例中,用户设备650本身限制从服务器610远程请求的内容的部分(本地请求或预测)。如果FILE1.DAT仅是与试验和整个内容二者相关联的文件,那么处理器680可以响应来自应用660仅对于相应于位置0-9999的内容的部分的本地请求。如果请求了位置0-9999之外的内容的部分,那么处理器680可以生成错误消息(例如,指示请求的内容在试验之外,或者试验结束)并提供给应用660。处理器680可以确定是否应该使用包含在存储器690中的可下载内容元数据和/或可下载内容请求元数据为应用660给出试验或全部访问。可以向这样的元数据提供数字版权管理(DRM)保护之类以防止用户将内容的标识篡改为试验或全部。可以设想本实施例可以与上述实施例结合以提供双向保护,防止黑客攻击和窃取未经授权的内容。

在与上述任一实施例的结合中(或在单独的实施例中),服务器610和/或用户设备650可以用于对示范的执行进行限时。例如,服务器610和/或用户设备650可以确定从接收对于内容的最初请求起是否已经过去了超过创建的时间量。如果服务器610和/或用户设备650接收了该时间量之外的请求,可以生成指示试验已经结束的错误消息。因此,根据这些实施例,仅将用户设备650执行试验(或其部分)需要的数据下载到存储器690。

尽管关于图1-5示图示的方法进行了描述,但是可以理解本文描述的任意方法可以类似地执行。进一步,尽管以具体设备进行了描述,但是可以理解,可以采用多种类似的设备或模块执行本文描述的过程。这些及其他实施例的功能可以描述为有形介质上记录的计算机可执行指令的模块。模块可以以各种方式跨各种设备分开。

图7示出了计算机系统700的示例性形式的机器的图形表示,在该计算机系统中可以执行用于使机器执行任意一个或多个本文讨论的方法的指令集。在可替换实施例中,机器运行为单独的设备或可以连接(或连网)到其他机器。在连网的部署中,机器可以在服务器-客户端网络环境中的服务器或客户端机器的能力下操作为主机,或者在对等(或分布式)网络环境中操作为对等机。机器可以是个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络家电、网络路由器、交换机或网桥、游戏控制台、电视、CD播放器、DVD播放器、BD播放器、电子阅读器、或能够执行指定机器将采取的行动的指令集(顺序的或其他的)的任何机器。进一步,尽管仅示出了单个机器,但是术语“机器”还应当被用来包括单独或联合地执行一个(或多个)指令集以执行本文讨论的任意一个或多个方法。

根据某些实施例,计算机系统700包括处理器750(例如,中央处理单元(CPU)、图形处理单元(GPU)或两者)、主存储器760(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM),诸如同步DRAM(SDRAM)或存储器总线DRAM(RDRAM)等)和/或静态存储器770(例如,闪存、静态随机存取存储器(SRAM)等),它们彼此之间通过总线795通信。

根据某些实施例,计算机系统700可以进一步包括视频显示单元710(例如,液晶显示器(LCD)、发光二极管显示器(LED)、电致放光显示器(ELD)、等离子体显示器(PDP)、有机发光二极管显示器(OLED)、表面传导电子发射显示器(SED)、纳米晶体显示器、3D显示器、或阴极射线管(CRT))。根据某些实施例,计算机系统700还可以包括字母数字输入设备715(例如,键盘)、光标控制设备720(例如,鼠标或控制器)、磁盘驱动单元730、信号生成设备740(例如,扬声器)、和/或网络接口设备780。

磁盘驱动单元730包括计算机可读介质734,其上存储有实现任意一个或多个本文描述的方法或功能的一个或多个指令集(例如,软件736)。软件736还可以在其由计算机系统700、主存储器760和处理器750执行期间,完全或至少部分地驻留在主存储器760中和/或在处理器750中。处理器750和主存储器760还可以构成分别具有指令754和764的计算机可读介质。软件736进一步可以经由网络接口设备780通过网络790发送或接收。

尽管在示例性实施例中计算机可读介质734显示为单个的介质,但是术语“计算机可读介质”应当用来包括存储一个或多个指令集的单个介质或多个介质(例如,中央的或分布的数据库、和/或相关的缓存和服务器)。术语“计算机可读介质”还应当用来包括能够存储、编码或承载由机器执行的指令集、并使机器执行公开的实施例的任意一个或多个方法的任意介质。因此,术语“计算机可读介质”应当用来包括但不限于固态存储器、以及光和磁媒质。

应当理解,本文描述的过程和技术本质上不涉及任何特定装置,并且可以以组件的任意适当组合实施。进一步,可以根据本文描述的教导使用各种类型的通用设备。构造执行本文描述的方法的专门装置也可以证明是有利的。本领域技术人员将认识硬件、软件和固件的许多不同组合可以适用于实践所公开的实施例。

已经关于特定示例描述了本发明的实施例,其意图在所有方面是示意性而非限制性的。进一步,尽管结合多个示例和实施描述了实施例,但是应当理解保持在发明实施例的范围内的同时,可以对示例进行各种修改和等价安排。

根据对说明书的考虑和本文所公开实施例的实践,本发明的其他实施例对本领域技术人员将是显然的。所描述实施例的各种方面和/或组件可以单独使用或任意结合使用。仅意图将说明书和示例考虑为示例性的,公开的真实范围和精神通过权利要求书指示。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1