软件集成与部署的方法、装置、服务器及存储介质与流程

文档序号:17535189发布日期:2019-04-29 13:54阅读:292来源:国知局
软件集成与部署的方法、装置、服务器及存储介质与流程

本申请涉及计算机技术领域,尤其一种软件持续集成与部署的方法、装置、服务器及存储介质。



背景技术:

敏捷软件开发(agilesoftwaredevelopment)是近年来逐渐引起广泛关注并普及的软件开发方法。该方法是为了应对快速变化的需求而提出的,相对于非敏捷开发,该方法更强调程序员团队与业务专家之间的紧密协作、面对面沟通、频繁交付新的软件版本等等。

在敏捷开发模式下,代码提交频繁,需求迭代紧凑。但是,在实际开发中,开发人员不得不花费额外的时间用于耗时耗力的代码编译、测试、部署工作上。

由开发人员人工对新提交的代码与源代码集成与部署,需要花费开发人员大量时间,降低了工作效率,增加了人力成本,而且,人工操作还可能产生额外的错误。因此,业界亟需提供一种软件集成与部署的方法,以提升开发人员的工作效率,并且提升集成与部署的可靠性。



技术实现要素:

有鉴于此,本申请提供了一种软件集成与部署的方法,其利用持续集成模块对软件开发不同阶段的代码自动编译与部署,无需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可能性。对应地,本申请还提供了对应的装置、服务器以及计算机存储介质。

本申请第一方面提供了一种软件集成与部署的方法,所述方法包括:

接收终端向所述代码仓库推入的分支代码;

调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人员进行功能验收;

其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述目标模式是指分支代码在当前阶段的部署模式。

可选的,所述分支代码包括开发人员在所述开发阶段开发的特征前缀分支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述预览阶段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对应的代码;

其中,所述发生变更的版本标签对应的代码是开发人员将在预览阶段测试通过的发布前缀分支合并到开发环境最新分支和生产环境最新分支,并根据分支名称变更版本标签,然后同步至代码仓库的代码。

可选的,所述分支代码为所述特征前缀分支或者所述发布前缀分支时,所述目标模式为调试模式;所述分支代码为所述发生变更的版本标签对应的代码时,所述目标模式为生产模式。

可选的,所述方法还包括:

在所述预览阶段,接入真实数据源以实现所述分支代码的部署。

可选的,所述方法还包括:

若验收人员验收不通过,则返回提示信息以提示修改分支代码。

可选的,所述方法还包括:

在上线发布阶段,响应于开发人员触发的启动上线操作,通过持续集成模块将已编译的代码同步至生成环境中。

可选的,所述方法还包括:

响应于开发人员触发的启动的指定历史版本上线操作,通过持续集成模块编译所述指定历史版本对应的代码,将编译后的代码同步至生产环境中,以实现回滚操作。

本申请第二方面提供了一种软件集成与部署的装置,所述装置维护有代码仓库,所述装置包括:

接收单元,用于接收终端向所述代码仓库推入的分支代码;

处理单元,用于调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人员进行功能验收;

其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述目标模式是指分支代码在当前阶段的部署模式。

可选的,所述分支代码包括开发人员在所述开发阶段开发的特征前缀分支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述预览阶段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对应的代码;

其中,所述发生变更的版本标签对应的代码是开发人员将在预览阶段测试通过的发布前缀分支合并到开发环境最新分支和生产环境最新分支,并根据分支名称变更版本标签,然后同步至代码仓库的代码。

可选的,所述分支代码为所述特征前缀分支或者所述发布前缀分支时,所述目标模式为调试模式;所述分支代码为所述发生变更的版本标签对应的代码时,所述目标模式为生产模式。

可选的,所述装置还包括:

接入单元,用于在所述预览阶段,接入真实数据源以实现所述分支代码的部署。

可选的,所述装置还包括:

返回单元,用于若验收人员验收不通过,则返回提示信息以提示修改分支代码。

可选的,所述装置还包括:

第一同步单元,用于在上线发布阶段,响应于开发人员触发的启动上线操作,通过持续集成模块将已编译的代码同步至生成环境中。

可选的,所述装置还包括:

响应于开发人员触发的启动的指定历史版本上线操作,通过持续集成模块编译所述指定历史版本对应的代码,将编译后的代码同步至生产环境中,以实现回滚操作。

本申请第三方面提供了一种服务器,所述服务器包括处理器以及存储器:

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行本申请第一方面所述的软件集成与部署的方法。

本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行本申请第一方面所述的软件集成与部署的方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请实施例中提供了一种软件集成与部署的方法,在软件开发的任一阶段,接收到终端向代码仓库推入的分支代码时,可以调用持续集成模块为分支代码创建对应的站点空间,编译该分支代码,并以当前阶段对应的目标模式将编译后的代码部署至相应的站点空间,从而实现了软件集成与部署。一方面,利用持续集成模块对软件开发不同阶段的代码自动编译与部署,无需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可能性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离能够避免同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上线流程,能够较好地支持敏捷开发。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例中一种软件集成与部署方法的流程图;

图2为本申请实施例中一种软件开发方法的流程图;

图3为本申请实施例中一种软件集成与部署装置的结构示意图;

图4为本申请实施例中一种服务器的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了使得本申请的技术方案更加清楚、易于理解,首先对本申请涉及的一些技术名词进行解释。

代码仓库是软件代码的存储机构,常用于代码管理和代码变动跟踪。代码仓库,如git,提供有分支(branch)功能,通过利用branch能够有效地隔离不同开发人员提交的代码。其中,通过定义不同的分支名称与前缀,能防止开发时互相交叉造成代码混乱与混淆。代码仓库还提供有标签(tag)功能,tag能够在特定位置标注相应版本号与修改信息,方便代码定位与回滚操作。

软件集成是指在软件开发过程中将软件的各部分代码合并,或者将更新代码和原有代码合并,并进行编译的过程。

软件部署是指将软件项目本身,包括配置文件、用户手册、帮助文档等进行收集、打包、安装、配置、发布的过程。

部署环境是指在软件开发的不同阶段对软件项目进行部署的环境。部署环境一般包括开发环境、测试环境以及生产环境。其中,开发环境是指专用于开发的服务器,为了开发调试方便,一般打开全部错误报告和测试工具,属于最基础的环境;测试环境是开发环境到生产环境的过渡环境,一般位于私有服务器或者局域网服务器上,主要用于测试是否存在臭虫bug;生产环境是指正式提供对外服务的服务器,在该服务器上一般会关掉错误报告,打开错误日志。

针对现有技术中由开发人员人工对新提交的代码与源代码集成与部署所导致的工作效率降低、人力成本增加以及产生额外错误的技术问题,本申请提供了一种软件基础与部署的方法,该方法是基于持续集成模块实现的,具体地,在软件开发的任一阶段,接收到终端向代码仓库推入的分支代码时,可以调用持续集成模块为分支代码创建对应的站点空间,编译该分支代码,并以当前阶段对应的目标模式将编译后的代码部署至相应的站点空间,从而实现了软件集成与部署。

一方面,利用持续集成模块对软件开发不同阶段的代码自动编译与部署,无需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可能性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离能够避免同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上线流程,能够较好地支持敏捷开发。

可以理解,本申请提供的软件集成与部署的方法应用于服务器。在本实施例中,服务器是提供软件自动集成与部署服务的计算设备,需要说明的是,服务器可以是独立的,也可以多个服务器形成的服务器集群,可以根据实际业务需求而设置。上述软件基础与部署的方法以应用程序的形式存储于服务器中,服务器通过执行应用程序,实现本申请提供的上述方法。

接下来,将结合附图对本申请实施例提供的软件集成与部署的方法进行介绍。

参见图1所示的软件集成与部署的方法流程图,该方法应用于服务器,服务器中维护有代码仓库,该方法包括:

s101:接收终端向所述代码仓库推入的分支代码。

软件开发一般是由团队协作开发完成,开发团队的开发人员开发各自负责的功能模块,通过利用代码仓库提供的分支功能可以实现代码隔离,避免代码混乱或混淆。在具体实现时,开发人员可以通过终端创建分支,并通过终端向代码仓库推入分支代码。

软件开发过程包括开发阶段、预览阶段以及上线发布阶段。分支代码可以是上述任一阶段的代码,具体可以为开发人员在所述开发阶段开发的特征前缀分支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述预览阶段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对应的代码;

在开发阶段,开发人员可以通过终端创建特征前缀分支,其中,特征前缀分支是指feature前缀命名的分支,例如feature/payment等,在开发完成后,开发人员可以通过其终端将该分支推入代码仓库中。

在该阶段,需求提出者会进行相关功能验收,并签发修改意见,开发人员可以基于该修改意见修改feature分支,然后再提交至代码仓库,直至无需再修改。然后,开发人员可以通过终端将feature分支合并到开发环境最新分支,即develop分支,形成新的develop分支,然后提交到代码仓库。

在预览阶段,开发人员可以通过终端创建发布前缀分支,其中,发布前缀分支是指以release前缀命名的分支。具体地,发布前缀分支一般以release/x.x.x格式命名,release为前缀,x.x.x为版本号,该分支表征即将发布x.x.x版本软件。例如,release/1.0.0表示即将发布1.0.0版本。开发人员创建分支,并修改代码完成后,将该分支推入代码仓库。

需要说明的是,发布前缀分支是开发人员在预览阶段基于开发阶段最终提交的开发环境最新分支创建的。具体地,基于开发阶段最终提交的develop分支,可以派生出新的分支,该分支可以命名为以release为前缀的分支,形成发布前缀分支。

在该阶段,测试人员可以进行相关功能验收,撰写测试文档,签发修改意见。开发人员可以根据反馈的修改意见修改该分支对应的代码,然后再将分支代码推入代码仓库,直至测试完全通过。测试完全通过后,通过终端将该发布前缀分支同时合并到开发环境最新分支和生产环境最新分支,然后根据分支名称添加版本标签tag,并将上述变更同步到代码仓库。

在上线发布阶段,代码仓库接收到版本标签变更提交时,与版本标签tag对应的代码也会从终端同步提交到代码仓库。

s102:调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人员进行功能验收。

在实际应用中,一般可以通过代码仓库管理工具实现对代码仓库的管理。代码仓库管理工具提供与用于持续集成(continuousintegration,ci)的功能模块,即持续集成模块。以代码仓库git为例,与该代码仓库对应的仓库管理工具包括gitlab。gitlab是一个基于ruby和golang语言开发的git仓库管理工具,gitlab中提供有ci程序也即ci模块,通过调用ci模块,能够实现自动集成。

在本实施例中,服务器调用ci模块为分支代码创建对应的站点空间,编译分支代码,并以目标模式将分支代码部署至该站点空间,以使得验收人员进行功能验收。其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述目标模式是指分支代码在当前阶段的部署模式。

具体地,在开发阶段,若当前域名为example.com,则服务器在接收到终端向代码仓库推入的feature-payment分支后,调用ci模块创建对应的站点空间feature-payment.example.com,并自动编译分支代码,以调试模式将编译后的代码部署到上述站点空间。

在预览阶段,若当前域名为example.com,则服务器在接收到终端向代码仓库推入的release分支后,调用ci模块创建对应的站点空间alpha.example.com,并自动编译分支代码,以调试模式将编译后的代码部署到上述站点空间。

需要说明的是,所述分支代码为所述特征前缀分支或者所述发布前缀分支时,所述目标模式为调试模式,也即在开发阶段或预览阶段,服务器以调试模式部署分支代码;所述分支代码为所述发生变更的版本标签对应的代码时,所述目标模式为生产模式,也即在上线发布阶段,服务器以生产模式部署分支代码。

还需要说明的是,在预览阶段,服务器还接入真实数据源以实现分支代码的部署,如此,软件项目所需读取和写入的数据均为真实数据,采用真实数据对即将上线的版本进行测试,可以提前检查出问题,有利于提高软件可用性与质量。

在该实施例中,服务器在将软件代码部署到相应的环境中后,验收人员可以对相关功能进行验收,其中,验收人员可以包括需求提出者、测试人员,在有些情况下,验收人员还可以包括用户。在实际应用时,若验收人员验收不通过,服务器还可以返回提示信息以提示修改分支代码。

在一些可能的实现方式中,在上线发布阶段,服务器还可以响应于开发人员触发的启动上线操作,通过持续集成模块将已编译的代码同步至生成环境中,从而完成软件上线。当然,服务器还可以同ci模块自动发送上线邮件至对应邮箱中,以通知上线信息,上线信息具体可以包括上线变更内容与上线时间。

由于ci模式采用按版本发布的方式,因此,在发布出错时,服务器还可以基于版本号回滚到历史版本,如上一版本。在具体实现时,服务器响应于开发人员触发的启动的指定历史版本上线操作,通过持续集成模块编译所述指定历史版本对应的代码,将编译后的代码同步至生产环境中,以实现回滚操作。

由上可知,本申请实施例中提供了一种软件集成与部署的方法,在软件开发的任一阶段,接收到终端向代码仓库推入的分支代码时,可以调用持续集成模块为分支代码创建对应的站点空间,编译该分支代码,并以当前阶段对应的目标模式将编译后的代码部署至相应的站点空间,从而实现了软件集成与部署。一方面,利用持续集成模块对软件开发不同阶段的代码自动编译与部署,无需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可能性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离能够避免同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上线流程,能够较好地支持敏捷开发。

在实际应用中,当软件存在漏洞或安全问题时,除了在已有代码基础上进行二次开发外,还可以利用热修复(hotfix)程序解决该漏洞或安全问题,基于此,hotfix程序也称为修补程序。在进行软件开发时,开发人员可以根据实际需求选择基于已有代码进行二次开发或者基于hotfix对软件进行修补,实现软件版本升级。

为了使得本申请的技术方案更加清楚、易于理解,下面将结合附图对本实施例的软件开发方法进行介绍。

参见图2所示的软件开发方法的流程图,开发人员可以初始化master分支,此时软件版本号为v0.1,其中,master分支派生出develop分支,以便继续进行软件开发。在该示例中,由于软件存在漏洞,开发人员利用hotfix程序修补该软件,实现软件升级,其版本号变更为0.2。此外,开发团队中的不同开发人员根据业务需求分别开发不同功能,针对每个功能分布创建一个feature分支,在开发过程中,开发人员可以将代码提交至代码仓库gitlab托管。由于业务需求是可变的,因此,在开发过程中,针对一些功能的feature分支能够保留并合并到develop分支,而针对另一些功能的feature分支会被丢弃。

以上为开发阶段的具体实现,接着,开发人员将会对软件进行测试。具体地,开发人员基于develop分支创建release分支并修改代码,与开发阶段类似,开发人员可以将release分支代码提交至gitlab保存,代码修改完成后即形成预览版软件,也即release版软件。测试人员可以基于release版软件进行测试,然后反馈修改意见给开发人员,开发人员基于修改意见进行修改,再提交代码以便测试人员测试,直至测试完全通过。

接着,开发人员即可根据测试完全通过的软件进行上线发布。具体地,开发人员变更软件tag,如变更为v1.0,并向gitlab提交该变更,gitlab收到tag变更提交,ci模块自动为该tag对应代码编译、部署,并且部署代码均为生产模式。大概修改数据库、初始化数据等准备工作完成后,由开发人员启动上线操作,ci模块将已编译好的代码同步到生产环境中,从而完成上线。

以上为本申请实施例提供的软件集成与部署的方法,基于此,本申请实施例还提供了对应的装置,下面将从功能模块化的角度对本申请实施例提供的软件集成与部署的装置进行介绍。

参见图3所示的软件集成与部署的装置的结构示意图,所述装置300维护有代码仓库,所述装置300包括:

接收单元310,用于接收终端向所述代码仓库推入的分支代码;

处理单元320,用于调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人员进行功能验收;

其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述目标模式是指分支代码在当前阶段的部署模式。

可选的,所述分支代码包括开发人员在所述开发阶段开发的特征前缀分支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述预览阶段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对应的代码;

其中,所述发生变更的版本标签对应的代码是开发人员将在预览阶段测试通过的发布前缀分支合并到开发环境最新分支和生产环境最新分支,并根据分支名称变更版本标签,然后同步至代码仓库的代码。

可选的,所述分支代码为所述特征前缀分支或者所述发布前缀分支时,所述目标模式为调试模式;所述分支代码为所述发生变更的版本标签对应的代码时,所述目标模式为生产模式。

可选的,所述装置300还包括:

接入单元,用于在所述预览阶段,接入真实数据源以实现所述分支代码的部署。

可选的,所述装置300还包括:

返回单元,用于若验收人员验收不通过,则返回提示信息以提示修改分支代码。

可选的,所述装置300还包括:

第一同步单元,用于在上线发布阶段,响应于开发人员触发的启动上线操作,通过持续集成模块将已编译的代码同步至生成环境中。

可选的,所述装置300还包括:

第二同步单元,响应于开发人员触发的启动的指定历史版本上线操作,通过持续集成模块编译所述指定历史版本对应的代码,将编译后的代码同步至生产环境中,以实现回滚操作。

本申请实施例中提供了一种软件集成与部署的装置,在软件开发的任一阶段,接收到终端向代码仓库推入的分支代码时,可以调用持续集成模块为分支代码创建对应的站点空间,编译该分支代码,并以当前阶段对应的目标模式将编译后的代码部署至相应的站点空间,从而实现了软件集成与部署。一方面,利用持续集成模块对软件开发不同阶段的代码自动编译与部署,无需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可能性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离能够避免同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上线流程,能够较好地支持敏捷开发。

本申请实施例还提供了一种用于软件集成与部署的服务器,下面将从硬件实体化的角度,对本申请实施例提供的服务器进行示例性说明。

图4是本申请实施例提供的一种服务器的结构示意图,该服务器400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器422可以设置为与存储介质430通信,在服务器400上执行存储介质430中的一系列指令操作。

服务器400还可以包括一个或一个以上电源426,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以上操作系统441,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述实施例中由服务器所执行的步骤可以基于该图4所示的服务器结构。

其中,cpu422用于执行如下步骤:

接收终端向所述代码仓库推入的分支代码;

调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人员进行功能验收;

其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述目标模式是指分支代码在当前阶段的部署模式。

可选的,cpu422还用于执行本申实施例中软件集成与部署的方法的任意一种实现方式的步骤。

本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该程序代码用于执行前述各个实施例所述的一种软件集成与部署的方法中的任意一种实施方式。

本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例所述的一种软件集成与部署的方法中的任意一种实施方式。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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