面向业务流式数据处理的领域特定语言组件及其运作方法与流程

文档序号:21179050发布日期:2020-06-20 17:40阅读:166来源:国知局
面向业务流式数据处理的领域特定语言组件及其运作方法与流程

本发明涉及一种数据处理技术,具体涉及一种面向金融业务流式数据处理的领域特定语言组件及其运作方法,尤其是应用于以金融期货为主的金融衍生品业务中。



背景技术:

随着大数据时代的飞速发展,业界对数据处理系统的容量要求日益提升。2003年google提出的map/reduce技术,从框架层面解决了平台伸缩困难、海量计算容错困难等问题,通过集中大量的廉价物理机,进行海量的数据处理。彼时的大数据处理依赖于底层hdfs对全量数据的预先处理存储,并且map/reduce框架本身要求数据处理人员有一定的java编码能力,能够熟练的基于其框架规则编码实现数据的处理逻辑。但该框架虽然解决了对大量历史数据的快速分析,却并不能够处理实时的流式数据,进行针对实时的流式数据分析。

随着用户对数据处理性能要求的进一步提升,近年来数据处理平台也日益成熟,以hadoopmap/reduce为基础的生态圈进一步完善。spark的出现标志着以内存为主要计算数据存储介质的计算框架的诞生,目标数据从传统磁盘到物理内存的转化,极大的提升了数据读取的速率,加快了数据处理性能的提升;而spark-sql在此基础上引入了了传统sql语言的支持,使原本对数据分析人员的编码能力的要求大大下降,让普通的数据库管理人员也可以便捷的利用该框架进行海量数据处理。spark-stream在原有的spark框架上进行优化,构建了一套面向实时数据流处理的流式处理框架,该框架可以从kafka、zeromq等消息中间件中直接接收实时消息并进行处理。此外,flink也是一类支持流计算并进一步提高实时数据分析的典型系统。flink作为一个针对流数据和批数据的分布式处理引擎,基本具备了高吞吐、低延迟、高性能的数据处理特点,也支持了时间、会话、计数等相对灵活的各类窗口语义。但在金融服务行业,瞬息万变的行情信息对处理平台的延迟性提出了更高的要求,flink的流处理性能依然面临着巨大的挑战,处理延迟高的问题是其应用于实时金融领域数据分析的最大制约因素。

纵观金融领域的实时数据分析需求,由于市场行情信息的瞬息万变,导致对数据处理系统的延迟要求极高;同时,以监察、风控等业务为例,频繁变动的监控需求也对对系统的二次开发效率提出了很高的挑战。传统的以flink为代表的分布式实时数据处理系统虽然在吞吐量上具有很大优势,但在以微秒为时间量级的金融数据处理行业并没有显著优势。此外,传统基于api接口编程实现的数据处理逻辑在应对频繁变动的监控需求时,其变更维护的成本过高,也不利于适应快速变换的业务需求。



技术实现要素:

以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。

本发明的目的在于解决上述问题,提供了一种面向业务流式数据处理的领域特定语言组件及其运作方法,解决了目前基于流式数据处理的业务规则过于繁琐多变、处理延迟较高的问题。

本发明的技术方案为:本发明揭示了一种面向业务流式数据处理的领域特定语言组件,组件包括外部接口模块、全局事件观察引擎,其中全局事件观察引擎包括编译期模块和执行期模块,其中:

外部接口模块,用于为接入的宿主程序提供外部接口注入的功能;

编译期模块,用于读取用户自定义的符合设定的语法规范的领域特定语言文件,经过词法分析、语法分析和语义规则检查后生成eql/sql的逻辑执行计划或者基于llvm的中间层ir,其中中间层ir的中间结果以树结构维护,遍历中间结果树可生成最终执行期所需的eql/sql物理执行计划和基于llvm的执行期代码段,其中llvm是构架编译器,eql是基于流事件驱动的类sql语句,sql是普通批处理sql语句;

执行期模块,用于针对经过词法分析、语法分析、语义规则检查后生成的eql/sql逻辑执行计划,将逻辑执行计划编译为可执行的二进制机器码,生成针对不同事件流监听及处理的规则句柄,同时将生成的所有规则句柄按照用户指定的先后次序注册至全局事件观察引擎中。

根据本发明的面向业务流式数据处理的领域特定语言组件的一实施例,编译期模块的词法分析和语法分析均是基于antlr的处理,其中antlr是根据输入自动生成语法树并可视化显示的开源语法分析器,编译期模块的词法分析配置为包括语句及表达式、模式管理器、命名空间管理器,编译期模块的语法分析配置为包块类型、类型转换管理器和基于llmv的ffi机制处理模块,编译期模块的语义规则检查包括模式注册、模式检查、类型推导。

根据本发明的面向业务流式数据处理的领域特定语言组件的一实施例,编译期模块进一步配置为针对自定义类c语法及sql语法的解析、语义分析,识别其中涉及的变量、表、流模型结构,并分命名空间进行注册管理,进行相应的模式匹配检查,通过遍历antlr生成的抽象语法树结构,挖掘其中所有的检查规则,生成对应的eql/sql的逻辑执行计划,对所有的检查规则进行描述。

本发明还揭示了一种基于上述的面向业务流式数据处理的领域特定语言组件的运作方法,方法包括:

编译期模块读取基于事件处理的eql语句及基于事件监听的dsl语句,解析语句并将其挂载到事件监听分发引擎上,在执行期当宿主程序通过外部接口模块向全局事件观察引擎内部传入事件时,执行期模块中的事件观察分发引擎捕获事件,并将事件分发给相应的执行模块,以完成整个领域特定语言组件的初始化,其中事件分发到的执行模块包括sql/eql物理执行计划或动态生成的二进制代码段和数据段;

当初始化完成后,全局事件观察引擎上依次挂载用户定义的所有规则检查及处理逻辑的二进制机器码,领域特定语言组件进入事件监听状态,随时准备接收宿主程序传入的实时事件,并对其进行相应的规则处理;

宿主程序通过向领域特定语言组件中注册相应的事件处理句柄,来实时接收由领域特定语言组件产生的指定通知事件,领域特定语言组件与宿主程序之间进行事件的交互及相关消息的通知;

宿主程序根据预先向领域特定语言组件注册的一系列针对指定计算结果进行处理的句柄,接收领域特定语言组件内部对传入事件的最终处理结果,并根据最终处理结果进行相应的后续处理。

根据本发明的面向业务流式数据处理的领域特定语言组件的运作方法的一实施例,领域特定语言组件与宿主程序之间事件的交互以及消息的通知处理进一步包括:

当实时的原始事件流被送入领域特定语言组件后,先根据用户定义的规则对原始事件流进行包括过滤、筛选在内的预处理操作,形成领域特定语言组件内部的一系列特定主题的事件流,然后根据全局事件观察引擎上注册的相关规则句柄,将对应主题的事件流发送至相应的规则句柄进行处理。

根据本发明的面向业务流式数据处理的领域特定语言组件的运作方法的一实施例,事件流发送至相应规则句柄的处理包括:句柄对应的二进制机器码中针对传入事件进行类c风格的分支、循环处理,或者通过相关sql语句进行相应的包括连接、投影、聚集在内的操作,或者通过调用相关内存数据库接口实现基于传入事件的增删改查等数据库操作;其中在事件处理过程中,句柄内部还通过特定指令生成新的中间事件,触发其他句柄的特定处理过程。

本发明对比现有技术有如下的有益效果:本发明的组件可以提供一种全新的易于学习的语言接口,同时结合面向过程性语言的分支循环特性以及类sql语言的灵活多变特性,使其能够快速相应规则的变化,降低二次开发和日常维护成本,再者可以提供完全自研的对该语言的解析编译及机器码翻译流程,基于llvm实现微秒级复杂流数据处理,从而解决金融期货行业对流式数据处理低延迟、高灵活性要求的挑战。

相较于现有技术,本发明具有以下优异的技术效果:

1)轻量级:以动态链接库形式提供,非常轻量,能够非常简单的嵌入c/c++编写的程序中;

2)灵活易用:

(a)提供类c的面向事件处理的dsl,同时支持无缝内嵌基于交易规则自研开发的内存数据库的sql语言,规则开发难度大幅降低,用户学习成本大幅降低;

(b)提供ffi机制(foreignfunctioninterface),可以无缝调用可执行程序(即动态库宿主程序)和外部动态链接库中导入的c函数;

3)高性能:全局事件观察引擎内部包含即时的编译期模块,所有加载到全局事件观察引擎的dsl和sql,在加载完成后都将即时编译成为特定平台下的二进制机器码,相对于脚本语言的解释执行效率,具有非常高的性能提升

4)跨平台:同时支持windows和linux,支持x86、x86-64等体系结构的硬件。

附图说明

在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。

图1a和1b示出了本发明的面向业务流式数据处理的领域特定语言组件的一实施例的整体架构图。

图2示出了本发明的面向业务流式数据处理的领域特定语言组件与应用系统接入的示意图。

图3示出了本发明的面向业务流式数据处理的领域特定语言组件在运行期的示意图。

具体实施方式

以下结合附图和具体实施例对本发明作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本发明的保护范围进行任何限制。

图1a和1b示出了本发明的面向业务流式数据处理的领域特定语言组件的一实施例的整体架构。本发明的业务包括与金融业务类似的所有业务,在本实施例的说明中是以金融业务为例进行说明。

从语言表达层来看,本发明的领域特定语言(dsl,domain-specificlanguage)组件支持类c风格的事件模式定义,支持类c的int(32)、long(64)、float、double、bool、char、struct、string(char*)等基础数据类型;并支持类c风格的变量定义、引用、分支、循环、函数等;支持无缝调用外部c函数(包括c系统函数以及用户通过动态链接库导入的自定义函数库);支持类java风格的包管理机制,从而实现名字空间和便捷的开发隔离性。

在实时流事件处理方面,本发明的领域特定语言组件支持监听器(monitor),每个监听器可允许声明私有的成员函数和成员变量,可通过lambda表达式实现对指定事件流的监听处理;同时内嵌了基于内存数据库的sql类语句,可实现流式数据处理及基于表的批量数据处理的统一;支持消息发送(route),可以通过route机制向其他计算单元发送实时事件消息。

请参见图1a,本实施例的领域特定语言组件包括:外部接口模块和全局事件观察引擎,其中全局事件观察引擎进一步包括编译期模块和执行期模块。

图1b为dsl语言的一具体示例装载至本发明的领域特定语言组件后进行解析及其最终产物的示例。

请同时参见图1a和1b,编译期模块用于读取用户自定义的符合设定的语法规范的dsl文件,经过基于antlr(anothertoolforlanguagerecognition,根据输入自动生成语法树并可视化显示的开源语法分析器)的词法分析(词法分析包括语句及表达式、模式管理器以及命名空间管理器)、语法分析(语法分析包括类型、类型转换管理器和基于llvm的ffi机制处理模块)、以及语义规则检查(包括模式注册、模式检查、类型推导等)后,生成eql(基于流事件驱动的类sql语句)/sql(普通批处理sql语句)的逻辑执行计划,或者基于llvm的中间层ir(intermediaterepresentation,中间语言);中间层ir的中间结果均以树结构维护,遍历中间结果树即可生成最终执行期所需的eql/sql物理执行计划和基于llvm(lowlevelvirtualmachine,构架编译器)的执行期(二进制)代码段,该执行期代码段是执行器二进制机器码的一部分,再加上dsl中c风格的语言经过编译期的处理,生成执行期二进制机器码的另外一部分。

ffi(foreignfunctioninterface,外部功能接口)机制应用于词法分析、语法分析中,可通过词法和语法分析,识别出用户编写dsl中调用的宿主程序接口(或动态库接口)名称,并在执行期模块的最终的执行期代码生成时自动到宿主程序或用户提供的其他动态库中找到接口对应代码,动态加载入基于llvm动态生成的二进制代码段的调用中。

具体而言,编译期模块的语法分析配置为进行如下的处理:实现针对自定义类c语法及sql语法的解析、语义分析,识别其中涉及的变量、表、流模型结构,并分命名空间进行注册管理,进行相应的模式匹配检查,通过遍历antlr生成的抽象语法树(abstractsyntaxtree,ast)结构(即图1b所示的“eql/sql对应的抽象语法树(ast)”和“脚本对应的抽象语法树(ast)”),挖掘其中所有的检查规则,生成对应的逻辑执行计划(即图1b所示的“eql/sql逻辑执行计划”),对所有的检查规则进行描述。

图1b中的基于datamodel(数据模式)的语义分析中的数据模式即为用户定义的数据模式(例如1b示例代码的第01-07行,定义了名为klinedata的结构体,即为一个数据模式),在编译期中维护模式管理器模块,用于解析管理用户定义的所有数据模式,以便在业务dsl(1b示例代码的09-35行)中使用。

对于eql/sql类语句,采用仿数据库概念,在编译期从dsl中的语句经过词法分析、语法分析后,生成对应的逻辑执行计划,并最终生成可在执行期直接调用的物理执行计划。以1b示例图中的第16-20行所示eql语句为例,该语句由depthmarketdata(深度行情数据)模式的数据流触发执行,以instrumentid(合约号)为键值进行分组,计算近1分钟内每个合约上的合约号、总成交量、最大成交价和最小成交价,并将结果作为klinedata1(1分钟k线)模式的数据流输出。该eql语句经过编译期解析后,生成的中间层逻辑执行计划树结构包含了结果输出节点、时间窗口节点、分组聚集节点三类操作算子,每个算子上均记录了该算子所要执行的相应操作,例如在分组聚集节点上,会记录其分组关键值为instrumentid,要对volume(成交量)求和、lastprice(最新成交价)取最大、最小值的信息。有了该中间逻辑执行计划树结构,就可以根据其每个节点描述的信息一一对应在代码生成时产生执行期可被调用的物理执行计划。物理执行计划树中的节点和逻辑执行计划树中一一对应,该节点为基于llvm动态生成的可被直接调用执行的代码。同样以分组聚集节点为例,其生成的物理执行计划树上的节点中,实现了以instrumentid为键值的分组存储,在每个分组中创建包含合约号、总成交量、最大成交价、最小成交价的数据模式,并基于llvm动态实现其相应的计算规则,当执行期对应的depthmarketdata事件流被分发到这个算子时,即可根据事先生成好的代码规则进行相应计算。

以图1b中的代码段为例,在基于antlr进行用户自定义dsl的解析时,会将普通dsl语句与eql/sql语句分开处理(由于最终生成的执行期代码段不同,普通dsl语句最终直接生成二进制代码/函数段,而eql/sql会被解析成为树状执行计划,最终生成可执行的物理执行计划树)。从脚本层解析图1b中的代码段,得到脚本对应的抽象语法树,其中会包含代码段01-35行的所有内容,例如01-07行为事件模式定义节点,其中又包含03行字符串(string)类型变量定义节点、04行长整型(long)类型变量定义节点等等;09-35行为监听器(monitor)节点,其中包含了11-12行的监听器内全局变量定义节点、14-26行的函数定义节点等。在该脚本层抽象语法树中,16-20行中的eql语句为一个简单的eql/sql语句节点,并没有解析其内部的具体操作。该类节点需要应用eql/sql的语法规范再次通过antlr进行解析,将其内部的时间窗口、分组聚集等操作解析形成eql/sql对应的抽象语法树。

执行期模块用于针对经过词法、语法分析、语义规则检查后生成的eql/sql逻辑执行计划,将其编译为可执行的二进制机器码,生成针对不同事件流监听及处理的规则句柄,同时将生成的所有规则句柄按照用户指定的先后次序注册至全局事件观察引擎中。

外部接口模块用于为其接入的宿主程序提供外部接口注入功能。

本实施例的领域特定语言组件的运作方法如下。

首先,编译期模块用于读取基于事件处理的eql语句及基于事件监听的dsl语句,解析语句并将其挂载到事件观察分发引擎(编译期经过解析和动态代码生成后,为eql语句和基于事件监听的dsl语句生成了对应的物理执行计划树或者可执行二进制机器码,两者都是可以在执行期被直接调用执行的二进制代码,将二者直接挂载到执行期的事件观察分发引擎上即可。在执行期当对应事件到来,该引擎会对应调起与该事件相关的物理执行计划树或二进制机器码处理该事件)上,在执行期当宿主程序通过外部接口模块向全局事件观察引擎内部传入事件时,执行期模块中的事件观察分发引擎捕获事件,并将事件分发给相应的执行模块(sql/eql物理执行计划或动态生成的二进制代码段和数据段),以完成整个领域特定语言组件的初始化。即,创建领域特定语言组件示例并进行组件初始化。

然后,当整个领域特定语言组件的初始化完成后,全局事件观察引擎上依次挂载了用户定义的所有规则检查及处理逻辑的二进制机器码,领域特定语言组件进入事件监听状态,随时准备接收宿主程序传入的实时事件,并对其进行相应的规则处理。即,按照自定义语言规范编写相应的规则文件,并加载入领域特定语言组件中。

再者,宿主程序通过向领域特定语言组件中注册相应的事件处理句柄,来实时接收由领域特定语言组件产生的指定通知事件,领域特定语言组件与宿主程序之间进行事件的交互及相关消息的通知。即,注册对特定结果感兴趣的回调句柄。

领域特定语言组件与宿主程序之间事件的交互以及消息的通知处理具体如下。当实时的原始事件流被送入领域特定语言组件后,先根据用户定义的规则对原始事件流进行一层层的过滤、筛选等预处理操作,形成领域特定语言组件内部的一系列特定主题的事件流,然后根据其全局事件观察引擎上注册的相关规则句柄,将对应主题的事件流发送至相应规则句柄进行处理,句柄对应的二进制机器码中可以针对传入事件进行类c风格的分支、循环处理,也可以通过相关sql语句进行相应的连接、投影、聚集等操作,还可以通过调用相关内存数据库接口,实现基于传入事件的增删改查等数据库操作。在事件处理过程中,句柄内部也可以通过特定指令生成新的中间事件,触发其他句柄的特定处理过程。

最终,宿主程序根据预先向领域特定语言组件注册的一系列针对指定计算结果进行处理的句柄,接收领域特定语言组件内部对传入事件的最终处理结果,并根据最终处理结果进行相应的后续处理。即,将相应的规则文件输出结果与回调句柄进行关联注册,向本发明的领域特定语言组件中发送实时事件流,进行计算处理。

图2中的全局事件观察引擎与宿主程序的对接主要包括图示的编号1-5五个部分,引擎提供相应的调用接口供宿主程序进行引擎启动初始化、数据流灌入、处理结果接收等功能。引擎启动初始化模块主要对应于1、2两个处理过程,引擎加载用户定义的数据模式和编写的dsl并进行预编译,执行词法语法分析、语义检查等操作,最终动态生成二进制代码段或物理执行计划树。同时在解析过程中会将所有事件驱动的eql语句或代码段注册到全局事件观察引擎中。在宿主程序正常运行状态下,当宿主程序的数据流捕获模块通过处理过程3将数据流灌入引擎后,会被全局事件观察分发模块直接捕获,进行相应的事件匹配,分发给该事件驱动的eql语句或代码段对应的物理执行计划或二进制函数,直接进行处理,在该处理过程中,引擎可通过ffi机制实时调用宿主程序中的用户定义处理4。当引擎中产生了宿主程序关心的事件,可通过处理过程5触发宿主程序中用户预先定义的事件处理句柄,将引擎中产生的事件抛出,触发宿主程序的句柄执行相应的操作。

图3简化说明了全局事件观察引擎的编译和执行处理,图示的业务规则即为用户预先定义的数据模式和dsl规则文件,将其装载入引擎后即可动态接收输入事件流,按照用户dsl中描述的处理逻辑对输入事件流进行处理后,并产生用户关心的输出结果事件流。

本发明的具体特点在于:

1)本发明全新定义了一套领域特定语言(dsl)规则,并配套实现了完善的解析编译、代码生成机制,采用编译执行(非解释执行),因此,其运行期的执行性能非常高,和c程序相比处于相同数量级;

2)本发明的dsl语言组件支持面向事件流的eql语句;

3)本发明的dsl语言组件支持面向自研交易规则内存数据库的sql语句,可实现基于内存表的查询、插入、更新、删除等操作;

4)本发明的dsl语言组件集成了类c风格的int(32)、long(64)、float、double、bool、char、struct、string(char*)等基础数据类型,并支持c风格的变量定义、引用、分支、循环、函数定义及调用等功能;

5)本发明的dsl语言组件支持通过动态链接库导入用户自定义的c函数;

6)本发明的dsl语言组件支持类java的包管理机制,实现了名字空间和边界的开发隔离性机制;

7)本发明的dsl语言组件支持监听器(monitor),每个监听器具备私有的成员变量,成员函数;

8)本发明的dsl语言组件支持内部消息发送(route),可以通过route机制向其他计算单元发送即时消息;

9)本发明的dsl语言组件支持lambda表达式,轻松实现面向事件流的监听;

10)本发明的dsl语言组件非常轻量,提供共享库,方便地同c/c++宿主程序进行无缝对接。

尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。

本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。

结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如dsp与微处理器的组合、多个微处理器、与dsp核心协作的一个或多个微处理器、或任何其他此类配置。

结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动盘、cd-rom、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在asic中。asic可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。

在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、dsl、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(cd)、激光碟、光碟、数字多用碟(dvd)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。

提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。

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