一种GPU加速的DNA序列压缩方法及系统与流程

文档序号:14950950发布日期:2018-07-17 22:32阅读:303来源:国知局
本发明属于基因
技术领域
,尤其涉及一种使用图形处理器gpu加速的基于参考基因组的dna序列压缩方法及系统。
背景技术
:当前,相关工作人员针对dna序列压缩工具进行了一定的研究,也得到了一定的结果。现有的常用的基于参考基因组的压缩工具:lw-fqzip2、quip(-r)、deez和cram。其中:lw-fqzip2,是一个基于参考基因组的dna序列压缩工具,对参考基因组建立稀疏索引,将碱基序列定位至对应的稀疏索引位置上,在参考基因组上匹配,同时考虑插入、删除与错配。使用线程把整体占据时间长的程序分成若干个任务放到后台去处理,实现应用于压缩存储的轻量级dna序列匹配的并行化,有效提高压缩fastq格式的dna数据的效率,并使得程序的运行速度大大加快,匹配速度也相应加快,减少在时间上的消耗,并增强了该方法的可用性。使用游程编码、ppm预测模型和算术编码将匹配后的结果、元数据和质量分数进行压缩。quip(-r)、deez和cram这三个压缩工具都是基于bwa工具的匹配结果(sam/bam)为输入进行压缩。bwa工具,同时考虑插入、删除与错配,并采用了burrows–wheeler变换(bwt,burrows–wheeler_transform)算法,对参考基因组进行了一次有规律的重新排序,目的是为了方便后续进行查找。bwa输出为sam文件,利用samtools工具将sam文件转为bam文件。quip(-r)是一个无损的、基于参考基因组的压缩工具。压缩算法是基于统计的算术编码分别压缩元数据、dna碱基序列和质量分数。deez是通过局部装配基于参考基因组的压缩工具,有着不错的压缩比并且提供随机存取功能,deez使用了独特的压缩方法:使用了增量编码和2阶算术编码。cram无损的基于参考基因的压缩工具,cram将dna序列比对到参考基因上,然后将这个dna序列与参考基因组不同的地方进行编码,使用了霍夫曼编码、golomb编码和二进制编码。虽然现有技术提供多种基于参考基因组的压缩方法,但是都是针对中央处理器cpu进行开发,图形处理器gpu平台上无法实现对dna序列的压缩。技术实现要素:本发明所要解决的技术问题在于提供一种gpu加速的dna序列压缩方法及系统,旨在解决现有技术在图形处理器gpu平台上无法实现对dna序列的压缩的问题。本发明是这样实现的,一种gpu加速的dna序列压缩方法,包括:中央处理器采用模板链算法对元数据进行简化,将简化后的元数据发送给图形处理器;图形处理器利用稀疏索引算法将dna碱基序列与参考基因组进行匹配,得到匹配结果;所述图形处理器采用burrows–wheeler变换算法、move-to-front变换算法和区间编码器对所述匹配结果、所述简化后的元数据和质量分数进行压缩,得到压缩后的dna序列。进一步地,所述中央处理器采用模板链算法对元数据进行简化包括:所述中央处理器选取若干条元数据,根据预置的分隔符将每一条元数据切分成若干模块;将每一条元数据中的相对应的模块逐一比较,若每一条元数据中相对应的模块相同,则将其状态设置为1,若数字递增,则将其状态设置为2,若不同,则将其状态设置为3,得到状态链;遍历每一条元数据,结合所述状态链,找出差异的部分,将第一条元数据作为模板链;将所述模板链、所述状态链和所述差异的部分进行保存,得到简化后的元数据。进一步地,所述分隔符包括逗号、句号、冒号、等号、空格和连接号。进一步地,所述图形处理器利用稀疏索引算法将dna碱基序列与参考基因组进行匹配包括:所述图形处理器查找所述参考基因组中前缀的位置,取k-mer的哈希值构建哈希索引表,所述哈希索引表中包含每一条k-mer的哈希值、出现频率和出现位置;将所述哈希索引表保存至内存中,根据所述哈希索引表将n×n个dna碱基序列异步地传输到一个n×n的匹配矩阵中,在所述匹配矩阵的每个位置保存一个dna碱基序列,所述匹配矩阵中的每个位置表示所述图形处理器的一个计算单元;找到所述dna碱基序列上的两个前缀并计算其k-mer值,在所述哈希索引表上找到与所述两个前缀最接近的位置,并逐一比较,得到匹配结果。进一步地,所述图形处理器采用burrows–wheeler变换算法、move-to-front变换算法和区间编码器对所述匹配结果、所述简化后的元数据和质量分数进行压缩,得到压缩后的dna序列包括:所述图形处理器将所述匹配结果、所述简化后的元数据和所述质量分数分别进行编码,得到编码数据;将所述编码数据分割为n×n份,将分割得到的n×n份数据异步地传输到一个n×n的计算矩阵中,所述计算矩阵的每个位置保存一份数据,所述计算矩阵的每个位置表述所述图形处理器的一个计算单元;所述计算矩阵中的每个位置对各自保存的数据分别进行burrows–wheeler变换算法、move-to-front变换算法和区间编码器的编码,得到压缩后的dna序列。本发明实施例还提供了一种gpu加速的dna序列压缩系统,包括:中央处理器,用于采用模板链算法对元数据进行简化,将简化后的元数据发送给图形处理器;图形处理器,用于利用稀疏索引算法将dna碱基序列与参考基因组进行匹配,得到匹配结果;所述图形处理器还用于采用burrows–wheeler变换算法、move-to-front变换算法和区间编码器对所述匹配结果、所述简化后的元数据和质量分数进行压缩,得到压缩后的dna序列。进一步地,所述中央处理器具体用于:选取若干条元数据,根据预置的分隔符将每一条元数据切分成若干模块;将每一条元数据中的相对应的模块逐一比较,若每一条元数据中相对应的模块相同,则将其状态设置为1,若数字递增,则将其状态设置为2,若不同,则将其状态设置为3,得到状态链;遍历每一条元数据,结合所述状态链,找出差异的部分,将第一条元数据作为模板链;将所述模板链、所述状态链和所述差异的部分进行保存,得到简化后的元数据。进一步地,所述分隔符包括逗号、句号、冒号、等号、空格和连接号。进一步地,所述图形处理器具体用于:查找所述参考基因组中前缀的位置,取k-mer的哈希值构建哈希索引表,所述哈希索引表中包含每一条k-mer的哈希值、出现频率和出现位置;将所述哈希索引表保存至内存中,根据所述哈希索引表将n×n个dna碱基序列异步地传输到一个n×n的匹配矩阵中,在所述匹配矩阵的每个位置保存一个dna碱基序列,所述匹配矩阵中的每个位置表示所述图形处理器的一个计算单元;找到所述dna碱基序列上的两个前缀并计算其k-mer值,在所述哈希索引表上找到与所述两个前缀最接近的位置,并逐一比较,得到匹配结果。进一步地,所述图形处理器还用于:将所述匹配结果、所述简化后的元数据和所述质量分数分别进行编码,得到编码数据;将所述编码数据分割为n×n份,将分割得到的n×n份数据异步地传输到一个n×n的计算矩阵中,所述计算矩阵的每个位置保存一份数据,所述计算矩阵的每个位置表述所述图形处理器的一个计算单元;所述计算矩阵中的每个位置对各自保存的数据分别进行burrows–wheeler变换算法、move-to-front变换算法和区间编码器的编码,得到压缩后的dna序列。本发明与现有技术相比,有益效果在于:本发明实施例通过中央处理器对元数据采用模板链算法进行简化,将简化后的元数据发送给图形处理器,图形处理器利用稀疏索引算法将dna碱基序列与参考基因组进行匹配,得到匹配结果后,图形处理器采用burrows–wheeler变换算法、move-to-front变换算法和区间编码器对所述匹配结果、所述简化后的元数据和质量分数进行压缩,得到压缩后的dna序列。本发明实施例将中央处理器cpu和图形处理器gpu结合异步运行,dna碱基序列的匹配在图形处理器gpu中运行,于此同时简化元数据的工作就在中央处理器cpu中进行,最后将匹配结果、简化后的元数据和质量分数一同在图形处理器gpu中压缩,本发明实施例实现了在图形处理器gpu在进行dna序列的压缩,同时利用图形处理器gpu中的计算单元可以加快dna序列的压缩速度。附图说明图1是本发明实施例提供的一种gpu加速的dna序列压缩方法的流程图;图2是本发明实施例提供的状态链的构建示意图;图3是本发明实施例提供的元数据的简化示意图;图4是本发明实施例提供的哈希索引算法的示意图;图5是本发明实施例提供的图形处理器gpu中burrows–wheeler变换、move-to-front变换和区间编码器的示意图;图6是本发明实施例提供的一种gpu加速的dna序列压缩系统的结构示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例涉及到的是对dna碱基序列在参考基因组上的匹配并剔除冗余,剔除dna元数据冗余部分。在gpu上实现了基于参考基因组的dna碱基序列的匹配、对简化后的元数据编码、匹配结果编码和质量分数编码。在合理的压缩率的情况下,使用gpu加速dna序列的压缩速度。自20世纪末以来,生物测序技术不断的发展,随之产生的各类生物数据,迅速形成了庞大的生物信息数据库。如何有效的分析、管理这些海量的数据,是生物学家和计算机专家们必须着力解决的棘手问题。数据压缩技术是解决这一问题的有效方法。dna序列数据是一类极其重要的生物数据,具有不同于其他待压缩数据的特征,采用现有的各种通用数据压缩算法,通常不能有效的压缩。因此,研究专门针对dna序列数据的压缩算法有着重要意义。dna序列数据的压缩是一项艰巨的任务,很多学者一直致力于这方面的研究,并提出了一些经典算法。这些算法的共同特点是基于近似匹配压缩的思想,搜索并压缩dna序列中大量存在的因少数字符的替换、插入或删除而形成的近似匹配片段。越来越庞大的数据量对cpu的运行速度有着巨大的挑战。近年来,不少学者开始将gpu应用于通用计算,取得了很好的效果。利用gpu做通用计算的主要目的是为了运算的加速,其主要优势有并行性、高密集的运算、只读高速缓存等方面外部存储器带宽为cpu的五倍左右,采用基于gpu计算的框架,所需要的成本和功耗都要低于cpu。推广gpu的并行与计算机处理系统是可行的,而且是势在必行的。由于科技在发展,人类在进步,gpu正是考虑到了现代的计算机中,尤其是家用电脑,三维图形的处理也变得越来越重要,需要一个专门的图形的核心处理器来减轻cpu的负担,它就是负着这个任务,即分担部分cpu的工作,尤其是在三维可视化处理、三维渲染中,gpu更是起着不可替代的作用。到目前为止,gpu有了数年的历史,显然,一代比一代强,性能更强了,可编程结构更完善了,范围也更广泛了。dna序列压缩工具为了两大类:基于参考基因组的压缩工具(reference-based)和文本压缩工具(reference-free)。由于同源物种基因组之间具有高度相似性,当参考基因组与目标基因组之间的相似度很高时,基于参考基因组的压缩策略可以达到极佳的压缩效果。为了达到最佳的压缩效果,通常选用同源物种作为参考基因组。传统的dna序列压缩方法大部分是针对基于参考基因组的高通量dna测序数据的压缩方法。基于参考基因组处理的数据主要为fastq格式或sam和bam格式;以fastq格式为主要处理数据,fastq格式是一种存储生物序列的文本格式,也是dna序列常用的存储格式之一。在fastq格式中,每一个dna测序记录由四行数据组成,第一行从“@”字符开始,然后连接着序列的标识符,第三行从“+”字符开始,连接着相同的序列标识符,第一行和第三行被称为元数据,元数据中有大量相同的地方,因此可以通过记录差异从而剔除元数据的冗余。基于参考基因组和该生物自身具有的生物学特征,对fastq格式中第二行的dna碱基序列数据进行快速匹配,剔除冗余数据,利用得到的匹配结果对dna序列的生物意义进行分析以及可以应用到进一步的压缩工作,从而增加压缩比率,减少存储空间,利用gpu在处理能力和存储器的带宽上相对于cpu的明显优势,将匹配方法和压缩方法移植到gpu计算单元上,从而减少dna序列压缩时间。第四行记录着该生物的每个核苷酸碱基其相应的质量分数。基于上述原因,本发明实施例提供了一种gpu加速的dna序列压缩方法,包括:s101,中央处理器采用模板链算法对元数据进行简化,将简化后的元数据发送给图形处理器;s102,图形处理器利用稀疏索引算法将dna碱基序列与参考基因组进行匹配,得到匹配结果;s103,所述图形处理器采用burrows–wheeler变换算法、move-to-front变换算法和区间编码器rangeencoder对所述匹配结果、所述简化后的元数据和质量分数进行压缩,得到压缩后的dna序列。本发明实施例提供的dna序列压缩系统如图6所示,包括中央处理器cpu(centralprocessingunit)和图形处理器gpu(graphicsprocessingunit),本发明实施例主要使用gpu加速基于参考基因组的dna压缩序列压缩方法,对fastq格式中的碱基序列在gpu中基于参考基因组的并行匹配,于此同时在cpu中使用模板链算法简化元数据,将得出的匹配结果、简化后的元数据和质量分数放到gpu中使用burrows–wheeler变换算法、move-to-front变换(mtft,move-to-fronttransform)算法和区间编码器rangeencode进行编码。在步骤s101中,中央处理器cpu采用模板链算法对元数据进行简化,模板链算法是将元数据中的冗余去除并记录其差异部分,保存一条模板链和状态链以供解压。状态链的构建示意图如图2所示,简化元数据的示意图如图3所示,在本发明实施例中,中央处理器cpu执行模板链算法的步骤包括:a、首先选取n条元数据,根据分隔符将每一条元数据分别分成m个模块,分隔符包括:逗号(,),句号(.),冒号(:),等号(=),空格()和连接号(-)。b、构造状态链:n条元数据中相对应的模块逐一比较,相同则将其状态设置为1,数字递增则将其状态设置为2,不同则将其状态设置为3。c、遍历每一条元数据,结合状态链,找出差异的部分(即状态链的值为3)。将第一条元数据作为模板链以便于解压时的恢复。d、将模板链、状态链以及差异部分保存,完成元数据的简化。中央处理器cpu在构建状态链时,需要将n条元数据中相对应的模块注意比较,例如:第1条元数据:@srr402891.1.1498:7:1:1:2042length=36;第10条元数据:@srr402891.10.1498:7:1:1:380length=36;第19480276条元数据:@srr402891.19480276.1498:7:120:1787:1264length=36;所以该元数据的状态链为(n=3的情况下):1211133311,其中:表1第1条第10条第19480276条状态@srr402891@srr402891@srr40289111101948027621111498498498177711112031117873204238012643lengthlengthlength13636361在步骤s102中,图形处理器gpu使用稀疏索引算法将dna碱基序列与参考基因组进行快速匹配,从而剔除冗余数据,利用得到的匹配结果对dna序列的生物意义进行分析以及可以应用到进一步的压缩工作,从而增加压缩比率,减少存储空间,gpu中能使用大量的计算单元,比起传统的cpu实现的单线程或者多线程的算法,速度提升明显。gpu中实现的稀疏索引算法的示意图如图4所示,步骤包括:a、找到参考基因组中前缀的位置,前缀的位置默认值为“cg”,然后取k-mer的哈希值构建成为哈希索引表h,哈希索引表h中记录每一条k-mer的哈希值、出现频率和出现位置,默认值k=8,包括前缀的k个碱基。b、将哈希索引表h传输到gpu的内存中:将n*n个dna碱基序列reads异步的传输到gpu的一个n*n的矩阵中(矩阵每个位置表示一个计算单元),矩阵每个位置保存一个dna碱基序列reads。c、在gpu的匹配矩阵中,每一条reads都做一次匹配:先找到reads上的两个前缀“cg”并计算其k-mer的值,然后在根据哈希索引表h上找到与这两个最接近的位置,最后再逐一比较。比较过程中会出现插入、删除、错配情况,会记录在匹配信息中;在参考基因组的匹配到的位置记录在匹配位置中;如果找不到前缀“cg”则视为不匹配并记录到不匹配信息中。d、将所有匹配后的信息作为匹配结果从gpu的内存异步的传递回cpu内存中。在步骤s103中,图形处理器gpu将简化后的元数据、匹配后的信息和质量分数进行编码,首先使用burrows–wheeler变换算法编码,将原来的文本转换为一个相似的文本,转换后使得相同的字符位置连续或者相邻。然后使用move-to-front变换算法编码,主要使用的是数据的“空间局部性”,也就是最近出现过的字符很可能在接下来的文本附近再次出现。最后再使用基于统计模型的区间编码器rangeencoder。图形处理器gpu实现的编码示意图如图5所示:图形处理器gpu对步骤s102得到的匹配结果、步骤s101得到的简化后的元数据和质量分数进行编码的步骤包括:a)、将简化后的元数据、匹配结果和质量分数分别进行编码,得到编码数据。b)、将需要编码的数据分割为n*n份,将n*n份数据异步的传输到gpu的一个n*n的计算矩阵中,该计算矩阵的每个位置表示一个计算单元,计算矩阵每个位置保存一份数据。c)、计算矩阵中的每个位置分别经过burrows–wheeler变换、move-to-front变换和区间编码器rangeencoder的编码,得到压缩后的dna序列。d)、将编码后的结果从gpu内存异步的传递回cpu内存中。最后将所有编码的结果打包。在本发明实施例中,burrows–wheeler变换算法主要压缩步骤包括:首先,burrows–wheeler变换算法先对需要转换的文本块,进行循环右移,每次循环一位。可以知道长度为n的文本块,循环n次后重复,这样就得到看n个长度为n的字符串。如表2中的“rotateright”列,其中‘#’作为标识符,不在文本块的字符集中,这样保证n个循环移位后的字符串均布相同。并且定义'#'小于字符集中的任意字符。对循环移位后的n个字符串按照字典序排序。如表2中的“sorted(m)”列。记录下“sorted(m)”列中每个字符串的最后一个字符,组成了“l”列,其中"f"列是“sorted(m)”列中每个字符串的前缀。表2no.rotaterightsorted(m)fl1banana##banana#a2#bananaa#bananan3a#bananana#banan4na#banaanana#bab5ana#banbanana#b#6nana#bana#banana7anana#bnana#bana这样,原来的字符串“banana#”就转换为了“annb#aa”。在某些情况下,使用l列进行压缩会有更好的效果。“l”列就是编码的结果。在本发明实施例中,move-to-front变换算法的主要步骤包括:首先,burrows–wheeler变换算法维护一个文本字符集大小的栈,“recentlyusedsymbols”(最近访问过的字符),其中每个不同的字符在其中占一个位置,位置从0开始编号。扫描需要编码的文本数据,对于每个扫描到的字符,使用该字符在“recentlyusedsymbols”中的index替换,并将该字符提到“recentlyusedsymbols”的栈顶位置(index为0的位置)。下述表3中示出了move-to-front变换算法的编码过程。表3在本发明实施例中,区间编码器rangeencoder算法的主要步骤包括:对于给定的一个范围足够大的整数区间以及符号的概率估计,最初的区间很容易切分成与所表示的符号概率成比例的子区间。将当前区间切分成与下一个待编码符号的概率对应的子区间,通过这种方法就可以对消息中的每个符号进行编码。表4示出了区间编码器rangeencoder区间映射,表5示出了区间编码器rangeencoder的编码过程。以abcdd进行编码为例,其中:表4表5编码数据输入数据映射区间abcdda[0,19999]abcddb[4000,7999]abcddc[5600,6399]abcddd[6080,6399]abcddd[6272,6399]abcdd[6272,6399]取6300可省略为63与现有技术相比,本发明实施例提供的dna序列压缩方法带来的有益效果包括:稀疏索引算法应用在gpu上很好的解决了dna碱基序列匹配的速度问题,于此同时在cpu上使用模板链算法去除元数据中的冗余并记录其差异部分,最后通过gpu上实现burrows–wheeler变换、move-to-front变换和区间编码器rangeencoder进行编码。在gpu上实现dna碱基序列的匹配和数据的编码可以充分的减少在时间上的占用,特别是当需要处理的数据越大时,在时间上所体现的优势将更加明显。经过一些数据的测试,如来自iontorrentproton测序平台的测序数据srr4242238(数据大小28824mb)、和来自illuminahiseq3000测序平台的测序数据srr5569417(数据大小43293mb),对比cpu并行化压缩工具的lw-fqzip2的压缩结果,本发明实施例提供的dna序列压缩方法和系统的压缩比分别为13.58%和4.85%,都要比lw-fqzip2的13.71%和5.15%要好,在时间上所体现出来的优势将更加明显。本发明实施例提供的dna序列压缩方法和系统压缩时间为379秒和640秒,而lw-fqzip2需要2284秒和3135秒。可以看出gpu的加速十分明显。在实际测试中,通过测试来自benchmark上的6组数据发现,本发明实施例提供的dna序列压缩方法和系统的平均压缩比和平均压缩速度都比lw-fqzip2要好。本发明实施例提供的dna序列压缩方法和系统中gpu中计算单元的个数、元数据的简化程度可以实现参数可调化,可自行调整想要的参数,以调整个别参数来获得所需的比对结果或达到最佳的比对效果。本发明实施例提供的dna序列压缩方法和系统使用gpu高度并行化和强大的计算能力提高压缩速度,实现对dna碱基序列的匹配的并行化和数据编码的并行化;使用模板链简化元数据达到去除冗余的效果。在测试了10组数据后,平均压缩比和lw-fqzip2差不多,平均的压缩速度是它的4.6倍,平均解压时间是它的1.5倍。由此可以看出通过gpu加速后,压缩和解压速度有着明显的提升,而压缩和解压的内存消耗大致为3gb,这是可以接受的内存消耗。在本发明实施例中,可以采用其他的并行算法,其实质是分解成若干个尽量相互独立的子问题,然后使用多台计算机同时求解它,从而最终求得原问题的解。其中基于cuda的匹配工具barracuda(基于burrows–wheeler变换,bma的gpu版本)也可达到用gpu加速匹配速度。当数据量庞大到需要惊人的计算量时,可以采用分布式计算,把数据分成多部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。在本发明实施例中,将dna序列进行分解为元数据、dna碱基序列和质量分数。对元数据使用模板链算法,从而减少元数据的冗余。在图形处理器gpu中实现对dna碱基序列基于参考基因组的快速匹配,在每一个gpu的计算单元分别使用稀疏索引算法对dna碱基序列匹配。在图形处理器gpu中实现对简化后的元数据、匹配后的信息和质量分数分别的在gpu中进行burrows–wheeler变换、move-to-front变换和区间编码器rangeencoder的编码。在具体实施过程中,参数设置进行可调化处理,可以自行调整参数来达到最佳的比对结果。在本发明实施例中,匹配方法是基于稀疏哈希索引算法,编码方法是基于burrows–wheeler变换、move-to-front变换和区间编码器rangeencoder的编码,而并行方法是在cuda语言中实现的基于gpu加速的多线程同步处理程序的算法。本发明实施例可以应用在以下领域:dna测序数据fastq格式基于参考基因组fasta格式的匹配,除去dna碱基序列和元数据的冗余数据,得到的匹配结果对数据的生物意义进行分析,后续的编码进而将匹配结果、简化后的元数据和质量分数进行压缩。本发明实施例还提供了一种终端,包括存储器、处理器及存储在存储器上且在处理器上运行的计算机程序,其特征在于,处理器执行计算机程序时,实现如图1所示的使用gpu加速的基于参考基因组的dna序列压缩方法的各个步骤。本发明实施例中还提供一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如图1所示的使用gpu加速的基于参考基因组的dna序列压缩方法的各个步骤。另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1