拉取IDL文件的方法、装置、计算机设备和存储介质
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种拉取IDL文件的方法、装置、计算机设备和存储介质。
背景技术
git是一个开源的分布式版本控制系统,可以高效地处理项目的版本管理。git支持分支管理,可以方便地进行多人协作开发。为了方便管理项目代码,一般会把项目代码托管到git远程服务器上,开发人员在本地开发完应用程序的代码后,推送到远程服务器,其他人可以从远程服务器拉取开发人员开发的代码。git提供了本地命令行工具,使用git命令行工具可以很方便地和git远程服务器进行交互。
应用程序一般分为客户端和服务端,服务端一般会包含多个子服务。客户端与服务端之间的交互,以及服务端多个子服务之间的交互,一般通过API(ApplicationProgramming Interface,应用程序接口)进行。进行API开发和调用时,API的提供方和使用方需要一起明确API的调用方式、请求参数类型和返回参数类型等API信息。API信息一般使用IDL(Interface description language,接口描述语言)来定义,并形成IDL文件。有了IDL文件,不仅沟通方便,还可以借助相关工具来生成接口代码。IDL文件一般使用一个仓库进行集中管理,并托管到git远程服务器中。
目前,使用IDL文件来生成接口代码时,需要手动从git远程服务器中拉取git仓库到本地,由于拉取的git仓库包含了很多当前业务不需要的IDL文件,不方便查找需要的IDL文件,降低了IDL文件的拉取效率。
发明内容
有鉴于此,本公开实施例至少提供一种拉取IDL文件的方法、装置、计算机设备和存储介质,用以实现按需拉取IDL文件,提升IDL文件拉取效率。
第一方面,本公开实施例提供了一种拉取IDL文件的方法,包括:
获取接口描述语言IDL文件拉取信息,所述IDL文件拉取信息至少包括分布式版本控制系统git仓库标识、入口IDL文件正则表达式和输出文件夹路径;
至少根据所述git仓库标识和临时文件夹路径生成命令字符串,其中,临时文件夹为预先创建的;
根据生成的命令字符串,调用git命令拉取git仓库到临时文件夹中;
递归解析所述入口IDL文件正则表达式得到需要的IDL文件路径;
根据需要的IDL文件路径和所述输出文件夹路径,从所述临时文件夹拷贝需要的IDL文件。
在一种可能的实施方式中,IDL文件拉取信息中还包括:git仓库分支标识;
至少根据所述git仓库标识和临时文件夹路径生成命令字符串,包括:
根据所述git仓库标识、git仓库分支标识和临时文件夹路径生成命令字符串;以及
调用git命令拉取git仓库到创建的临时文件夹之后,还包括:
根据所述git仓库分支标识切换到相应的git分支。
在一种可能的实施方式中,递归解析所述入口IDL文件正则表达式得到需要的IDL文件路径,包括:
解析入口IDL文件正则表达式得到至少一个入口IDL文件路径;
对于任一入口IDL文件路径,读取所述入口IDL文件路径对应的IDL文件内容;
使用抽象语法树AST解析器解析所述IDL文件内容得到所述IDL文件内容对应的AST;
分析所述每一IDL文件内容对应的AST得到依赖IDL文件路径;
合并入口IDL文件路径和依赖IDL文件路径,得到需要的IDL文件路径。
在一种可能的实施方式中,根据需要的IDL文件路径和所述输出文件夹路径,从所述临时文件夹拷贝需要的IDL文件,包括:
对比需要的IDL文件路径与临时文件夹路径得到相对IDL文件路径;
拼接输出文件夹路径和相对IDL文件路径得到目标IDL文件路径;
根据需要的IDL文件路径和目标IDL文件路径,从所述临时文件夹拷贝需要的IDL文件。
在一种可能的实施方式中,在拷贝需要的IDL文件之后,所述方法还包括:
调用文件夹删除函数删除所述临时文件夹。
在一种可能的实施方式中,获取IDL文件拉取信息,包括:
调用自动化程序从配置文件中读取IDL文件拉取信息。
第二方面,本公开实施例还提供一种拉取IDL文件的装置,包括:
获取模块,用于获取接口描述语言IDL文件拉取信息,所述IDL文件拉取信息至少包括分布式版本控制系统git仓库标识、入口IDL文件正则表达式和输出文件夹路径;
生成模块,用于至少根据所述git仓库标识和临时文件夹路径生成命令字符串,其中,临时文件夹为预先创建的;
拉取模块,用于根据所述生成模块生成的命令字符串,调用git命令拉取git仓库到临时文件夹中;
解析模块,用于递归解析所述入口IDL文件正则表达式得到需要的IDL文件路径;
拷贝模块,用于根据需要的IDL文件路径和输出文件夹路径,从所述临时文件夹拷贝需要的IDL文件。
在一种可能的实施方式中,所述IDL文件拉取信息中还包括git仓库分支标识;
所述装置,还包括切换模块,其中:
所述生成模块,用于根据所述git仓库标识、git仓库分支标识和临时文件夹路径生成命令字符串;
所述切换模块,用于在所述拉取模块调用git命令拉取git仓库到创建的临时文件夹之后,根据所述git仓库分支标识名称切换到相应的git分支。
在一种可能的实施方式中,所述解析模块,具体用于解析入口IDL文件正则表达式得到至少一个入口IDL文件路径;对于任一入口IDL文件路径,读取所述入口IDL文件路径对应的IDL文件内容;使用抽象语法树AST解析器解析所述IDL文件内容得到所述IDL文件内容对应的AST;分析所述IDL文件内容对应的AST得到依赖IDL文件路径;合并入口IDL文件路径和依赖IDL文件路径,得到需要的IDL文件路径。
在一种可能的实施方式中,所述拷贝模块,具体用于对比需要的IDL文件路径与临时文件夹路径得到相对IDL文件路径;拼接输出文件夹路径和相对IDL文件路径得到目标IDL文件路径;根据需要的IDL文件路径和目标IDL文件路径,从所述临时文件夹拷贝需要的IDL文件。
在一种可能的实施方式中,所述装置还包括:
删除模块,用于在所述拷贝模块拷贝需要的IDL文件之后,调用文件夹删除函数删除所述临时文件夹。
在一种可能的实施方式中,所述获取模块,具体用于调用自动化程序从配置文件中读取IDL文件拉取信息。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述拉取IDL文件的装置、计算机设备及计算机可读存储介质的效果描述参见上述拉取IDL文件方法的说明,这里不再赘述。
本公开实施例提供的拉取IDL文件的方法、装置、计算机设备和存储介质,根据IDL文件拉取信息中携带的git仓库标识和临时文件夹路径生成命令字符串,通过调用该命令字符串拉取git仓库到临时文件夹中,进一步地,通过解析IDL文件拉取信息中携带的入口IDL文件正则表达式获得需要的IDL路径,根据需要的IDL文件路径和输出文件夹路径拷贝需要的IDL文件,与现有技术中的手动拉取全部的IDL文件路径相比,能够减少查找需要的IDL文件的时间,提高了IDL文件拉取效率。
进一步,本公开实施例提供的拉取IDL文件的方法,还可以通过在IDL文件拉取信息中携带git仓库分支标识,这样,在拉取git仓库到临时文件夹中之后,根据git仓库分支标识切换到相应的git仓库分支,避免了手动切换操作繁琐,进一步提高了IDL文件拉取效率。
进一步,本公开实施例提供的拉取IDL文件的方法,在拷贝需要的IDL文件之后,还可以删除临时文件夹,这样,能够节省空间,减少存储资源开销。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的拉取IDL文件方法的流程图;
图2示出了根据本公开实施例的递归解析入口IDL文件正则表达式得到需要的IDL文件路径的流程图;
图3示出了本公开实施例所提供的拉取IDL文件装置的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,在使用IDL文件来生成接口代码时,需要手动从git远程服务器中拉取git仓库到本地,由于拉取的git仓库包含了很多当前业务不需要的IDL文件,不方便查找需要的IDL文件,从而降低了IDL文件的拉取效率。
基于上述研究,本公开提供了一种拉取IDL文件的方法,用以从git远程服务器拉取需要的IDL文件到指定文件夹,实现按需拉取,有效提升IDL文件拉取效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种拉取IDL文件的方法进行详细介绍,本公开实施例所提供的拉取IDL文件方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该拉取IDL文件方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为终端设备为例对本公开实施例提供的拉取IDL文件的方法加以说明。
实施例一
参见图1所示,为本公开实施例一提供的拉取IDL文件方法的流程图,所述方法包括步骤S101~S104,其中:
S101:获取IDL文件拉取信息。
在本步骤中,用户可以根据当前业务需要的IDL文件,按照预先设定的格式把IDL文件拉取信息写在配置文件中,其中IDL文件拉取信息可以至少包括git仓库标识、入口IDL文件正则表达式和输出文件夹等。
git仓库托管在git远程服务器上时,可以用git仓库地址进行唯一标识,因此,上述的git仓库标识可以为git仓库地址,即,根据git仓库地址就可以在git远程服务器上找到对应的代码仓库。
应当理解,git仓库标识也可以为其他能够唯一标识git文件仓库的信息,本公开实施例对此不进行限定。
具体实施时,步骤S101中,可以通过运行自动化程序从配置文件中读取用户配置的IDL文件拉取信息。
S102:至少根据git仓库标识和临时文件夹路径生成命令字符串。
在本步骤中,可以调用文件夹创建函数创建临时文件夹,根据临时文件夹路径和git仓库标识生成命令字符串。
具体实施时,可以根据临时文件夹路径和git仓库标识拼接git克隆命令字符串。
S103:根据生成的命令字符串,调用git命令拉取git仓库到临时文件夹中。
具体实施时,可以使用git克隆命令从git远程服务器拉取git仓库。由于git克隆命令属于shell命令,需要用shell程序执行,不能直接被自动化程序调用,而shelljs是一个JavaScript版本的shell程序。因此,自动化程序可以通过shelljs来调用git克隆命令。
调用git克隆命令前,需要拼接出完整的命令字符串,比如“git clone git@github.com:lancewuz/fetch-idl.git/var/folders/mj/6w2p8n_j64j0f3vjtm2xzgnm0000gn/T/git-fetch-idl-3693-26434790--depth=1--quiet”。
上述命令字符串中,“fetch-idl.git”为git仓库地址,“var/folders/mj/6w2p8n_j64j0f3vjtm2xzgnm0000gn/T/git-fetch-idl-3693-26434790”为创建的临时文件夹路径。另外,在调用git克隆命令时,还可以通过depth参数指定克隆深度,深度越小,数据越少,拉取时间越短,最小值为1,1表示只克隆最近一次commit。
本步骤中,使用shelljs执行git克隆命令字符串,拉取git仓库到临时文件夹。
S104:递归解析入口IDL文件正则表达式得到需要的IDL文件路径。
IDL文件一般分为入口IDL文件和普遍IDL文件两种类型。入口IDL文件指包含service(服务)类型的IDL文件,普通IDL文件指只包含数据类型的IDL文件。一个入口IDL文件会引用和依赖若干个普遍IDL文件,一个普遍IDL文件也可能引用和依赖其他的普遍IDL文件。一个业务工程可能使用多个入口IDL文件。
正则表达式,可以用来匹配一系列符合要求的字符串。因此,具体实施时,可以采用IDL文件正则表达式来定义当前业务工程需要使用的多个入口IDL文件路径之间的引用和依赖关系。其中,glob表达式是一种简化的正则表达式,其一般用来匹配文件路径,使用glob表达式可以避免对文件路径进行穷举。以下以glob表达式为例对本公开的实施过程进行说明。本公开实施例中,把匹配入口IDL文件路径的glob表达式称为入口IDL文件glob表达式。
具体实施时,步骤S104中可以按照图2所示的流程递归解析入口IDL文件正则表达式得到需要的IDL文件路径:
S201:解析入口IDL文件正则表达式得到至少一个入口IDL文件路径。
以IDL文件正则表达式为入口IDL文件glob表达式为例,首先,使用glob工具库获得与入口IDL文件glob表达式匹配的若干个入口IDL文件路径。
S202:对于任一入口IDL文件路径,读取该入口IDL文件路径对应的IDL文件内容。
S203:使用AST解析器解析读取的IDL文件内容得到该IDL文件内容对应的AST。
S204:分析IDL文件内容对应的AST得到依赖的IDL文件路径。
具体实施时,为了得到需要的IDL文件路径,需要分析入口IDL文件之间的依赖关系。本步骤中,根据步骤S202中读取的IDL文件内容,使用AST(Abstract Syntax Code,抽象语法树)解析器解析读取的IDL文件内容得到IDL文件的AST,通过分析AST得到依赖的IDL文件路径。通过递归执行步骤S202和步骤S204可以得到所有依赖的IDL文件路径。
S205:合并入口IDL文件路径和依赖IDL文件路径,得到需要的IDL文件路径。
最后,合并入口IDL文件路径和依赖IDL文件路径,得到需要的IDL文件路径。
至此,通过上述步骤S201~步骤S205得到了需要的IDL文件路径。
S105:根据需要的IDL文件路径和输出文件夹路径,从临时文件夹拷贝需要的IDL文件。
在拷贝IDL文件时,需要保持IDL文件之间的相对路径不变,即保持需要的IDL文件的存储结构不变。为了解决这个问题,根据本公开实施例,拷贝IDL文件前,要先得到所有的目标IDL文件路径。具体实施时,首先对比需要的IDL文件路径与临时文件夹路径得到相对IDL文件路径,然后,拼接输出文件夹路径和相对IDL文件路径得到目标IDL文件路径,最后,根据需要的IDL文件路径和目标IDL文件路径,调用文件拷贝函数从临时文件夹拷贝文件内容。
至此,完成了拷贝需要的IDL文件的流程。
具体实施时,为了节省空间,在拷贝了需要的IDL文件之后,还可以调用文件夹删除函数删除创建的临时文件夹。
实施例二
具体实施时,由于git仓库中托管有不同版本的IDL文件,因此,git仓库中包含众多的git仓库分支,当前业务工程需要的IDL文件通常仅仅为其中的某一git仓库分支。为了进一步提高IDL文件拉取效率,本公开实施例中,在IDL文件拉取信息中还可以包括git仓库分支标识,根据git仓库分支标识,在拉取git仓库到临时文件夹中之后,可以根据git仓库分支标识切换到相应的git仓库分支。其中,git仓库分支标识可以为git仓库分支名称。
如果IDL文件拉取信息中包括git仓库分支标识,则在步骤S102中,可以根据git仓库标识、临时文件夹路径和git仓库分支标识生成命令字符串。在调用git克隆命令前,拼接出的完整的命令字符串如下:‘git clone git@github.com:lancewuz/fetch-idl.git、/var/folders/mj/6w2p8n_j64j0f3vjtm2xzgnm0000gn/T/git-fetch-idl-3693-26434790--depth=1--quiet--branch feat-test’。
其中,“fetch-idl.git”为git仓库地址,“var/folders/mj/6w2p8n_j64j0f3vjtm2xzgnm0000gn/T/git-fetch-idl-3693-26434790”为创建的临时文件夹路径,“feat-test”为指定的git仓库分支名称。调用git克隆命令时,可以通过branch参数指定拉取git仓库后需要切换到的git仓库分支。
根据本公开实施例提供的拉取IDL文件的方法,可以从git远程服务器拉取需要的IDL文件到指定文件夹,实现按需拉取和自动分析依赖,有效提升了IDL文件拉取效率。另外,还可以自动切换到指定的git仓库分支,避免了手动切换的繁琐操作,进一步提升了IDL文件拉取效率。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与拉取IDL文件方法对应的拉取IDL文件的装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述拉取IDL文件方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
实施例三
参照图3所示,为本公开实施例三提供的一种拉取IDL文件的示意图,所述装置包括:获取模块301、生成模块302、拉取模块303、解析模块304、拷贝模块305;其中,
获取模块301,用于读取用户指定的接口描述语言IDL文件拉取信息,所述IDL文件拉取信息至少包括分布式版本控制系统git仓库标识、入口IDL文件正则表达式和输出文件夹路径;
生成模块302,用于至少根据所述git仓库标识和临时文件夹路径生成命令字符串,其中,临时文件夹为预先创建的,git仓库标识可以是git仓库地址。
拉取模块303,用于根据所述生成模块生成的命令字符串,调用git命令拉取git仓库到临时文件夹中;
解析模块304,用于递归解析所述入口IDL文件正则表达式得到需要的IDL文件路径;
拷贝模块305,用于根据需要的IDL文件路径和输出文件夹路径,从临时文件夹拷贝需要的IDL文件。
本公开实施例通过提出一种按需拉取IDL文件的方法,能一键完成从git远程服务器拉取指定的IDL文件到指定文件夹,支持分支切换,按需拉取,和自动分析依赖,提升IDL文件拉取效率。
一种可能的实施方式中,在一种可能的实施方式中,所述IDL文件拉取信息中还包括git仓库分支标识;
所述装置,还包括切换模块,其中:
所述生成模块,用于根据所述git仓库标识、git仓库分支标识和临时文件夹路径生成命令字符串;
所述切换模块,用于在所述拉取模块调用git命令拉取git仓库到创建的临时文件夹之后,根据所述git仓库分支标识名称切换到相应的git分支。
在一种可能的实施方式中,所述解析模块,具体用于解析入口IDL文件正则表达式得到至少一个入口IDL文件路径;对于任一入口IDL文件路径,读取所述入口IDL文件路径对应的IDL文件内容;使用AST解析器解析所述IDL文件内容得到所述IDL文件内容对应的AST;分析所述IDL文件内容对应的AST得到依赖IDL文件路径;合并入口IDL文件路径和依赖IDL文件路径,得到需要的IDL文件路径。
在一种可能的实施方式中,所述拷贝模块,具体用于对比需要的IDL文件路径与临时文件夹路径得到相对IDL文件路径;拼接输出文件夹路径和相对IDL文件路径得到目标IDL文件路径;根据需要的IDL文件路径和目标IDL文件路径,拷贝需要的IDL文件。
在一种可能的实施方式中,所述装置还包括:
删除模块,用于在所述拷贝模块拷贝需要的IDL文件之后,调用文件夹删除函数删除所述临时文件夹。
在一种可能的实施方式中,所述获取模块,具体用于调用自动化程序从配置文件中读取IDL文件拉取信息。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
实例四
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的拉取IDL文件方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的拉取IDL文件方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的拉取IDL文件方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。