数据处理方法、装置和介质与流程

文档序号:29311905发布日期:2022-03-19 20:22阅读:85来源:国知局
数据处理方法、装置和介质与流程

1.本技术涉及计算机技术领域,尤其涉及数据处理方法、装置和介质。


背景技术:

2.软件测试是软件构建过程中非常重要的一环,通过软件测试可以发现软件隐藏的问题,并衡量软件的质量。在所有的软件测试中,单元测试是一个重要环节。代码覆盖(code coverage)是软件测试中的一种度量,用于描述程式中源代码被测试的比例和程度,其中,源代码被测试的比例称为代码覆盖率。代码覆盖率是单元测试考量的重要指标之一,代码覆盖率高则表示被测代码多,覆盖率低则表示被测代码少。
3.目前比较流行的代码覆盖率统计框架为“jacoco”,其支持全量代码的覆盖率统计。在统计中通过被测系统的监测数据(通过打桩方式在被测系统运行时收集)、被测系统的“class”文件来计算出测试阶段的代码覆盖率数据。该统计框架通常会对全代码或者通过改造对分布式版本控制系统(git)增量代码的测试覆盖率进行统计。
4.但是,在使用上述方法统计代码覆盖率的过程中发现,使用上述方案统计的代码覆盖率不准确。
5.因此,如何提高代码覆盖率的准确性成为亟待解决的技术问题。


技术实现要素:

6.本技术提供数据处理方法、装置和介质,用以提高代码覆盖率的准确性。
7.第一方面,本技术提供一种数据处理方法,该方法包括:获取应用程序的运行数据和n个类文件数据,n为大于1的正整数;从所述n个类文件数据中获取m个类文件数据,所述m个类文件数据包含所述n个类文件中需要参与代码覆盖率统计的类文件数据,m为小于或等于n的正整数;根据所述应用程序的运行数据和所述m个类文件数据,确定所述应用程序的代码覆盖率。
8.该方法中,避免了现有技术需要提供源码等原始数据的方式,仅从预设条件对应用程序的类文件数据进行筛选,得到需要参与代码覆盖率统计的类文件数据,从而提高了代码覆盖率的准确性。
9.结合第一方面,在一种可能的实现方式中,所述从所述n个类文件数据中获取m个类文件数据,包括:根据白名单从所述n个类文件数据中获取p个类文件数据,所述白名单中包括需要参与所述代码覆盖率统计的类文件数据所满足的第一预设子条件,所述p个类文件数据中每个类文件数据满足所述第一预设子条件,p为小于或等于n且大于或等于m的正整数;根据黑名单从所述p个类文件数据中获取所述m个类文件数据,所述黑名单中包括不需要参与所述代码覆盖率统计的类文件数据所满足的第二预设子条件,所述m个类文件数据中每个类文件数据不满足所述第二预设子条件。
10.该实现方式中,从预置的配置信息中提取与代码覆盖率统计的类文件数据所满足的预设条件出发,实现了对类文件数据的筛选,进而为更加准确地确定出代码覆盖率提供
了基础,而配置信息中的黑白名单可自定义,也为不同代码覆盖率统计的实现作出了可调整约束。
11.结合第一方面,在一种可能的实现方式中,所述第一预设子条件包括需要参与所述代码覆盖率统计的类文件数据的标识信息应满足第一正则表达式。
12.该实现方式中,从类文件数据的筛选的预设条件出发,具体解释白名单中的类文件数据的标识信息应满足的正则表达式,为实现更加准确的计算代码覆盖率提供了基础。
13.结合第一方面,在一种可能的实现方式中,所述第二预设子条件包括不需要参与所述代码覆盖率统计的类文件数据的标识信息应满足第二正则表达式。
14.该实现方式中,从类文件数据的筛选的预设条件出发,具体解释黑名单中的类文件数据的标识信息应满足的正则表达式,为实现更加准确的计算代码覆盖率提供了基础。
15.结合第一方面,在一种可能的实现方式中,所述需要参与所述代码覆盖率统计的类文件数据包括业务类文件数据;所述不需要参与所述代码覆盖率统计的类文件数据包括非业务类文件数据。
16.该实现方式中,将类文件数据分为非业务类文件数据和业务类文件数据,为实现更加准确的计算代码覆盖率提供了参考。
17.结合第一方面,在一种可能的实现方式中,所述获取应用程序的n个类文件数据,包括:对所述应用程序进行解压,得到所述n个类文件数据。
18.该实现方式中,通过对应用程序进行解压,得到n个类文件数据,避免了现有技术需要对源码等原始数据进行处理,才可以得到类文件数据的繁琐步骤,提高了代码覆盖率统计的效率。
19.第二方面,本技术提供一种数据处理装置,所述装置包括:获取模块,用于获取应用程序的运行数据和n个类文件数据,n为大于1的正整数;处理模块,用于从所述n个类文件数据中获取m个类文件数据,所述m个类文件数据包含所述n个类文件中需要参与代码覆盖率统计的类文件数据,m为小于或等于n的正整数;确定模块,用于根据所述应用程序的运行数据和所述m个类文件数据,确定所述应用程序的代码覆盖率。
20.结合第二方面,在一种可能的实现方式中,所述处理模块具体用于:根据白名单从所述n个类文件数据中获取p个类文件数据,所述白名单中包括需要参与所述代码覆盖率统计的类文件数据所满足的第一预设子条件,所述p个类文件数据中每个类文件数据满足所述第一预设子条件,p为小于或等于n且大于或等于m的正整数;根据黑名单从所述p个类文件数据中获取所述m个类文件数据,所述黑名单中包括不需要参与所述代码覆盖率统计的类文件数据所满足的第二预设子条件,所述m个类文件数据中每个类文件数据不满足所述第二预设子条件。
21.结合第二方面,在一种可能的实现方式中,所述第一预设子条件包括需要参与所述代码覆盖率统计的类文件数据的标识信息应满足第一正则表达式。
22.结合第二方面,在一种可能的实现方式中,所述第二预设子条件包括不需要参与所述代码覆盖率统计的类文件数据的标识信息应满足第二正则表达式。
23.结合第二方面,在一种可能的实现方式中,所述需要参与所述代码覆盖率统计的类文件数据包括业务类文件数据。
24.结合第二方面,在一种可能的实现方式中,所述不需要参与所述代码覆盖率统计
的类文件数据包括非业务类文件数据。
25.结合第二方面,在一种可能的实现方式中,所述获取模块具体用于:对所述应用程序进行解压,得到所述n个类文件数据。
26.第三方面,本技术提供一种计算机,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面或者其中任意一种可能的实现方式所述的方法。
27.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面或者其中任意一种可能的实现方式所述的方法。
28.第五方面,本技术提供一种计算机程序产品,所述计算机程序产品中包括计算机程序,该计算机程序被处理器执行时实现第一方面或者其中任意一种可能的实现方式所述的方法。
附图说明
29.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
30.图1为本技术一个实施例提供的系统架构示意图;
31.图2为本技术一个实施例提供的数据处理方法流程图;
32.图3为本技术一个实施例提供的代码覆盖率计算的整体流程图;
33.图4为本技术一个实施例提供的数据处理装置的示意性框图;
34.图5为本技术另一个实施例提供的装置示意图。
35.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
36.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
37.随着计算机技术产业的飞速发展,软件测试是软件构建过程中非常重要的一环,通过软件测试可以发现软件隐藏的问题,并衡量软件的质量。在所有的软件测试中,单元测试是一个重要环节,其中,单元测试是针对应用程序中可测试的最小单元的测试,所述最小单元一般指方法、类以及可实现一个功能的代码段。
38.代码覆盖是软件测试中的一种度量,用于描述程式中源代码被测试的比例和程度。其中,源代码被测试的比例称为代码覆盖率。代码覆盖率是单元测试考量的重要指标之一,代码覆盖率高则表示被测代码多,覆盖率低则表示被测代码少。
39.目前比较流行的代码覆盖率统计框架为“jacoco”,“jacoco”是一种通过设置“java agent”生成文件统计覆盖率的方式,支持全量代码的覆盖率统计。在统计中通过被
测系统的运行数据(通过打桩方式在被测系统运行时收集)、被测系统的类文件数据来计算出测试阶段的代码覆盖率数据。具体的算法为:代码覆盖率=被测系统的运行数据/被测系统的类文件数据。
40.该统计框架通常会对全代码或者通过改造对分布式版本控制系统(git)增量代码的测试覆盖率进行统计。
41.然而,在实际使用中,实际代码中有些实体类的“get/set”方法,或者接口定义的方法等是不需要被统计的,否则得到的代码覆盖率不准确。
42.因此,如何提高代码覆盖率的准确性成为亟待解决的技术问题。
43.有鉴于此,本技术提供数据处理方法,旨在解决现有技术的如上技术问题。
44.下面以具体的实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
45.图1为本技术一个实施例提供的系统架构示意图。如图1所示,该系统可以包括:计算机101和数据库102。
46.其中,数据库102可以是计算机101的内部数据存储区,也可以是其他设备或服务器的数据库。
47.在一种可能的实现方式中,用户需要对应用程序进行测试,测试的一种度量手段为代码覆盖率计算,首先需要用户通过操作计算机101,从数据库102中将该应用程序的“jar”包取出。同时,计算机101通过对应用程序添加相关的“jvm”参数的方式,在应用程序运行的过程中,采集覆盖“dump”数据,即运行数据。
48.进一步地,计算机101对“jar”包进行解析,得到多个“class”文件,即多个类文件数据,计算机101中的代码覆盖率统计工具遍历所有的“class”文件和“dump”数据,作比较之后得到代码覆盖率。
49.应理解,本技术实施例中对遍历所有的“class”文件和“dump”数据,作比较之后得到代码覆盖率的详细阐述在下述实施例中给出。
50.图2为本技术一个实施例提供的数据处理方法的流程图。如图2所示,本技术实施例提供的方法包括s201、s202和s203。下面详细说明图1所示的方法中的各个步骤。
51.s201,获取应用程序的运行数据和n个类文件数据,n为大于1的正整数。
52.可选地,应用程序的运行数据也可以叫做被测系统的覆盖“dump”数据,该数据通过在被测系统启动时挂载“agent”来实现覆盖率的收集,即在启动应用服务器软件(weblogic,tomcat,springboot)系统时添加相关的“jvm”参数。其中,挂载“agent”后,“agent”会以二进制的形式收集被测系统的覆盖“dump”数据。
53.可选地,n个类文件数据也可以叫做被测系统的“class”类文件数据,可以通过对运行的应用程序的压缩包“jar”进行解压得到。
54.s202,从n个类文件数据中获取m个类文件数据,m个类文件数据包含n个类文件中需要参与代码覆盖率统计的类文件数据,m为小于或等于n的正整数。
55.需要说明的是,预设的配置信息包括白名单和黑名单,白名单中包括需要参与代码覆盖率统计的类文件数据所满足的第一预设子条件,黑名单中包括不需要参与代码覆盖率统计的类文件数据所满足的第二预设子条件。
56.其中,第一预设子条件包括需要参与代码覆盖率统计的类文件数据的标识信息应满足第一正则表达式,需要参与代码覆盖率统计的类文件数据包括业务类文件数据。
57.第二预设子条件包括不需要参与代码覆盖率统计的类文件数据的标识信息应满足第二正则表达式,不需要参与所述代码覆盖率统计的类文件数据包括非业务类文件数据。
58.例如,在代码中,可以将“classinclude”定义为白名单,“classexclude”定义为黑名单,白名单和黑名单均为正则表达式,多个匹配规则可用“:”分隔。如“classinclude”可配置为“com.abc.jacoco.*”,即白名单配置为任何以“com.abc.jacoco.*”开头的类名;“classexclude”可配置为“.*v[oo]:.*p[oo]”,即黑名单配置为任何以“vo”或“vo”或“po”或“po”结尾的类名。
[0059]
上述配置信息是提前预设好存储在数据库中的,因为一般来说代码覆盖率统计工具可同时支持多个被测系统的统计工作,所以会用数据库分别对各个被测系统建配置信息表。
[0060]
从数据库中获取被测系统的配置信息中的黑名单和白名单的一种可实现方式为:在统计工具中加入读取当前系统配置的方法,例如通过在其“analyzer”方法中添加系统配置(其中包含非业务字段的正则表达式)的成员变量,在初始化时传入,进一步地,在其“analyzeall”方法中读取配置信息,得到黑名单和白名单的配置信息。
[0061]
进一步地,根据白名单从n个类文件数据中获取p个类文件数据,该p个类文件数据中每个类文件数据满足第一预设子条件,p为小于或等于n且大于或等于m的正整数。
[0062]
也就是说,根据白名单中预设的需要参与代码覆盖率统计的类文件数据的标识信息,从n个类文件数据中,筛选出p个需要参与代码覆盖率统计的类文件数据。
[0063]
可选地,若根据白名单匹配结果为空,即没有匹配到与白名单中配置信息符合的类文件数据,则默认n个类文件数据都是需要参与代码覆盖率统计的类文件数据。
[0064]
进一步地,根据黑名单从p个类文件数据中获取m个类文件数据,该m个类文件数据中每个类文件数据不满足第二预设子条件。
[0065]
也就是说,在上述根据白名单匹配得到p个需要参与代码覆盖率统计的类文件数据后,再根据黑名单中预设的不需要参与代码覆盖率统计的类文件数据的标识信息,从p个类文件数据中,筛选出m个需要参与代码覆盖率统计的类文件数据。
[0066]
可选地,本技术对根据黑名单和白名单匹配得到m个需要参与代码覆盖率统计的类文件数据的过程,不限制其先后顺序,即可以先根据白名单进行匹配,再对根据白名单匹配后得到的类文件数据进一步根据黑名单匹配,筛选出m个需要参与代码覆盖率统计的类文件数据;或者,可以先根据黑名单进行匹配,再对根据黑名单匹配后得到的类文件数据进一步根据白名单匹配,筛选出m个需要参与代码覆盖率统计的类文件数据。
[0067]
该步骤中,从预置的配置信息中提取与代码覆盖率统计的类文件数据所满足的预设条件出发,实现了对类文件数据的筛选,进而为更加准确地确定出代码覆盖率提供了基础,而配置信息中的黑白名单可自定义,也为不同代码覆盖率统计的实现作出了可调整约束。
[0068]
s203,根据应用程序的运行数据和m个类文件数据,确定应用程序的代码覆盖率。
[0069]
该步骤中,利用代码覆盖率的算法:代码覆盖率=被测系统的运行数据/被测系统
的类文件数据,取应用程序的运行数据与m个类文件数据的比值,得到应用程序的代码覆盖率。
[0070]
理解性地,因为不同的被测系统实体类有不同的命名规则,常见的类名称如以“po”、“vo”、“entity”等关键字结尾,所以需要读取自定义配置文件来实现差异化处理,即通过配置文件,让代码覆盖率统计框架过滤掉这些非业务方法,使最终的统计数据更能准确的反应测试结果。
[0071]
本技术提供的数据处理方法,是在统计工具“jacoco”遍历“class”类文件数据的过程中插入读取配置文件的步骤,获得预设的黑白名单配置,通过预设的正则表达式对“class”名称进行过滤,剔除掉非业务方法,避免了现有技术需要提供源码等原始数据的方式,提高了代码覆盖率的准确性。
[0072]
作为一种示例,图3为本技术一个实施例提供的代码覆盖率计算的整体流程图,如图3所示,本技术实施例提供的方法包括s301、s302、s303和s304。
[0073]
s301,获取应用程序的运行数据。
[0074]
该步骤中,通过在被测系统启动时添加“agent”路径作为启动参数,“agent”会以二进制的形式采集应用程序的运行数据。
[0075]
s302,解析应用程序,得到多个类文件数据。
[0076]
该步骤中,通过对被测系统运行的“jar”包进行解压,得到多个“class”类文件数据,其中,“jar”包可以是应用程序。
[0077]
s303,根据预设的黑白名单,对多个类文件数据进行筛选,得到至少一个类文件数据。
[0078]
该步骤中,通过读取数据库中存储的被测系统的配置信息,得到预设的黑白名单,依据黑白名单中的配置对多个类文件数据进行筛选,得到至少一个类文件数据。
[0079]
s304,利用运行数据与至少一个类文件数据作比值,得到代码覆盖率。
[0080]
该步骤中,取运行数据与筛选后得到的至少一个类文件数据的比值,作为被测系统的代码覆盖率。
[0081]
该实施例中的方法对代码覆盖率统计框架进行二次开发,读取自定义黑白名单配置,以正则表达式匹配模式对类文件数据进行黑白名单过滤,最终得到被测系统的代码覆盖率,提高了代码覆盖率的准确性。
[0082]
图4示出了本技术实施例提供的数据处理装置400,该装置400包括:获取模块401、处理模块402和确定模块403。
[0083]
其中,获取模块401,用于获取应用程序的运行数据和n个类文件数据,n为大于1的正整数;处理模块402,用于从n个类文件数据中获取m个类文件数据,m个类文件数据包含n个类文件中需要参与代码覆盖率统计的类文件数据,m为小于或等于n的正整数;确定模块403,用于根据应用程序的运行数据和m个类文件数据,确定应用程序的代码覆盖率。
[0084]
作为一种示例,装置400可以用于执行图2所示的方法,例如,获取模块401用于执行s201,处理模块402用于执行s202,确定模块403用于执行s203。
[0085]
在一种可能的实现方式中,处理模块402具体用于:根据白名单从n个类文件数据中获取p个类文件数据,白名单中包括需要参与代码覆盖率统计的类文件数据所满足的第一预设子条件,p个类文件数据中每个类文件数据满足第一预设子条件,p为小于或等于n且
大于或等于m的正整数;根据黑名单从p个类文件数据中获取m个类文件数据,黑名单中包括不需要参与代码覆盖率统计的类文件数据所满足的第二预设子条件,m个类文件数据中每个类文件数据不满足第二预设子条件。
[0086]
在一种可能的实现方式中,第一预设子条件包括需要参与代码覆盖率统计的类文件数据的标识信息应满足第一正则表达式。
[0087]
在一种可能的实现方式中,第二预设子条件包括不需要参与代码覆盖率统计的类文件数据的标识信息应满足第二正则表达式。
[0088]
在一种可能的实现方式中,需要参与代码覆盖率统计的类文件数据包括业务类文件数据。
[0089]
在一种可能的实现方式中,不需要参与代码覆盖率统计的类文件数据包括非业务类文件数据。
[0090]
在一种可能的实现方式中,获取模块401具体用于:对应用程序进行解压,得到n个类文件数据。
[0091]
图5为本技术另一个实施例提供的装置示意图。图5所示的装置可以用于执行前述任意一个实施例所述的方法。
[0092]
如图5所示,本实施例的装置500包括:存储器501、处理器502、通信接口503以及总线504。其中,存储器501、处理器502、通信接口503通过总线504实现彼此之间的通信连接。
[0093]
存储器501可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器501可以存储程序,当存储器501中存储的程序被处理器502执行时,处理器502用于执行上述实施例中的方法的各个步骤。
[0094]
处理器502可以采用通用的cpu,微处理器,应用专用集成电路(application specific integrated circuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例中的各个方法。
[0095]
处理器502还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术实施例的方法的各个步骤可以通过处理器502中的硬件的集成逻辑电路或者软件形式的指令完成。
[0096]
上述处理器502还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、asic、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0097]
结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器501,处理器502读取存储器501中的信息,结合其硬件完成本技术装置包括的单元所需执行的功能。
[0098]
通信接口503可以使用但不限于收发器一类的收发装置,来实现装置500与其他设备或通信网络之间的通信。
[0099]
总线504可以包括在装置500各个部件(例如,存储器501、处理器502、通信接口503)之间传送信息的通路。
[0100]
应理解,本技术实施例所示的装置500可以是计算机。
[0101]
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
[0102]
本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c或a-b-c,其中a,b,c可以是单个,也可以是多个。
[0103]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0104]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0105]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0106]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0107]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0108]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0109]
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
[0110]
以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1