1.本技术涉及计算机
技术领域:
:,特别是涉及一种函数校验方法、计算机设备及存储装置。
背景技术:
::2.在很多的函数应用场景中,用户为了满足更多特定的业务需要,通常可以按照系统规定实现自定义函数,以利用自定义函数完成特定的业务需要所需的功能。其中,在定义函数的过程中,需要验证自定义函数的函数逻辑的正确性,目前,大多数对自定义函数的校验方法复杂,步骤繁琐,不容易准确的判断函数的逻辑正确性。技术实现要素:3.本技术主要解决的技术问题是提供一种函数校验方法、计算机设备及存储装置,能够简化函数校验步骤,更准确地校验函数逻辑的正确性。4.为了解决上述问题,本技术第一方面提供了一种函数校验方法,该方法包括:利用源端表生成预设数据结构类型的第一数据,其中,预设数据结构类型是对源端表的数据结构字段进行解析得到的;将第一数据输入待校验函数进行函数逻辑处理,以得到第二数据;利用第一目的端表输出第二数据,其中,第二数据用于校验待校验函数。上述方案,能够简化函数校验步骤,更准确地校验函数逻辑的正确性。5.为了解决上述问题,本技术第二方面提供了一种计算机设备,该计算机设备包括相互耦接的存储器和处理器,存储器中存储有程序数据,处理器用于执行程序数据以实现上述函数校验方法中的任一步骤。6.为了解决上述问题,本技术第三方面提供了一种存储装置,该存储装置存储有能够被处理器运行的程序数据,程序数据用于实现上述函数校验方法中的任一步骤。7.上述方案,利用源端表生成预设数据结构类型的第一数据,且预设数据结构类型是对源端表的数据结构字段进行解析得到的;将第一数据输入待校验函数进行函数逻辑处理,以得到第二数据;利用第一目的端表输出第二数据,以基于第二数据校验待校验函数,能够简化函数校验步骤,更准确地校验函数逻辑的正确性。附图说明8.为了更清楚地说明本技术中的技术方案,下面将对实施例描述中所需要的附图作简单的介绍,显而易见地,下面描述的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:9.图1是本技术函数校验方法第一实施例的流程示意图;10.图2是本技术图1中步骤s11一实施例的流程示意图;11.图3是本技术图1中步骤s12一实施例的流程示意图;12.图4是本技术图1中步骤s13一实施例的流程示意图;13.图5是本技术函数校验方法第二实施例的流程示意图;14.图6是本技术图5中步骤s24一实施例的流程示意图;15.图7是本技术函数校验装置第一实施例的流程示意图;16.图8是本技术函数校验装置第二实施例的流程示意图;17.图9是本技术电子设备一实施例的结构示意图;18.图10是本技术存储装置一实施例的结构示意图。具体实施方式19.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。20.本技术中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。21.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。22.在一些函数应用场景中,例如使用sql(structuredquerylanguage,结构化查询语言)开发flink的应用程序时,需要使用到各种各样的函数,flink中内置提供的函数无法满足特定业务的要求。此时,可以使用flink自定义函数的功能,按照flink的规则去实现自定义函数,来完成特定的业务上所需的功能。23.其中,flink也即是apacheflink,是由apache软件基金会开发的开源流处理框架,其核心是用java和scala编写的分布式流数据流引擎。flink以数据并行和流水线方式执行任意流数据程序,flink的流水线运行时系统可以执行批处理和流处理程序。此外,flink的运行时本身也支持迭代算法的执行。24.在flink自定义函数过程中,会验证函数逻辑的正确性,以使得函数满足要求。通常,需要通过整个flinksql应用程序对函数的校验,来判断函数逻辑是否符合预期、是否正确,由于逻辑较多,不容易判断函数的逻辑是否正确,且步骤繁琐,需要较大的计算量。25.另外,对自定义函数的校验需要映射到一个具体可访问的数据源,例如kafka、hive等。同时为了验证函数的逻辑正确性需要构造一定量的数据,使得校验所需的校验框架复杂,步骤繁琐。26.为了解决上述技术问题,本技术提供以下实施例,下面对各实施例进行具体说明。27.请参阅图1,图1是本技术函数校验方法第一实施例的流程示意图。该方法可以包括以下步骤:28.s11:利用源端表生成预设数据结构类型的第一数据。29.在对待校验函数进行校验时,可以创建源端表,可以利用源端表生成预设数据结构类型的第一数据。在源端表的数据结构字段中可以包括至少一种数据结构类型的数据参数,例如可以包括整数类型、字符串类型、小数类型等。其中,预设数据结构类型是对源端表的数据结构字段进行解析得到的,使得源端表生成第一数据是符合源端表中配置的数据结构字段对应的数据类型。例如对源端表的数据结构字段解析得到包括整数类型、字符串类型、小数类型的数据参数时,可以利用源端表生成整数类型、字符串类型、小数类型的第一数据。源端表中的数据参数可以根据具体应用场景进行配置,本技术对此不做限制。30.s12:将第一数据输入待校验函数进行函数逻辑处理,以得到第二数据。31.待校验函数中包括函数参数,预设数据结构类型为待校验函数的函数参数所需的数据结构类型。32.将第一数据输入待校验函数进行函数逻辑处理,以得到经过待校验的函数逻辑处理的结果,得到第二数据。例如待校验函数的作用是用于计算字符串的长度,字符串类型的第一数据为“12345”,将第一数据输入待校验函数,通过待校验函数对第一数据进行函数逻辑处理,计算第一数据字符串的长度,得到处理结果第二数据为长度5。33.s13:利用第一目的端表输出第二数据,其中,第二数据用于校验待校验函数。34.第一目的端表的作用是输出数据,可以利用第一目的端表输出第二数据,第二数据可以用于校验待校验函数的函数逻辑的正确性。例如待校验函数的作用是用于计算字符串的长度,字符串类型的第一数据为“12345”,经过待校验函数进行函数逻辑处理后得到第二数据为长度5,第二数据用于校验待校验函数,通过第二数据可以校验待校验函数的函数逻辑是正确的;若经过待校验函数进行函数逻辑处理后得到第二数据为长度4,通过第二数据可以校验待校验函数的函数逻辑是不正确的。35.可以将第二数据输出至日志文件中,使得可以在日志文件中查看第二数据,以利用第二数据对待校验函数进行校验。36.在本实施例中,通过源端表生成预设数据结构类型的第一数据,将第一数据输入待校验函数进行函数逻辑处理以得到第二数据,利用第一目的端表输出第二数据,从而利用第二数据校验待校验函数,因通过源端表生成预设数据结构类型的第一数据,能够减少为构造一定量的数据或获取具体真实的数据源的步骤,能够简化校验的逻辑,简化函数校验步骤,更准确地校验函数逻辑的正确性,并且减小对待校验函数的进行校验的计算量。37.具体地,请参阅图2,上述步骤s11可以包括以下步骤:38.s111:解析源端表的数据结构字段,得到预设数据结构类型。39.在对待校验函数进行校验之前,可以先创建源端表,对源端表进行配置。可以解析源端表的数据结构字段,得到预设数据结构类型。例如,可以通过以下方式创建源端表:40.‑‑ddl创建source41.createtablesource(42.astring,43.bbigint44.)with(45.'connector'='customread'46.);47.其中,source表示源端表的名称,connector表示连接器,customread表示数据生成器,数据生成器可用于生成数据。48.以上述示例中的源端表为例,解析源端表的数据结构字段,得到预设数据结构类型为字符串类型string和整数类型bigint。49.s112:对预设数据结构类型匹配对应的生成数据方法,并利用生成数据方法生成符合预设数据结构类型的第一数据。50.解析得到预设数据结构类型之后,可以对预设数据结构类型匹配对应的生成数据的方法,并利用生成数据方法生成符合预设数据结构类型的第一数据,若预设数据结构类型中包括多种数据结构类型,则可以为每一种数据结构类型匹配对应各自的生成数据的方法,以利用各自的生成数据的方法生成符合各数据结构类型的第一数据。其中,第一数据可以包括多个符合预设数据结构类型的数据。51.可选地,源端表中可以包括预设数据结构类型的随机生成工具,可以对预设数据结构类型匹配对应的随机生成工具,并利用随机生成工具随机生成符合预设数据结构类型的第一数据。例如可以为整数类型的匹配对应整数随机生成工具,利用整数随机生成工具生成整数类型的第一数据;例如为字符串类型匹配对应字符串随机生成工具,利用字符串随机生成工具生成字符串类型的第一数据。52.以上述示例中的源端表为例,可以通过连接器connector连接的数据生成器customread来生成符合预设数据结构类型的第一数据。在数据生成器customread中,可以包括实现dynamictablesourcefactory接口,另外,还可以包括以下实现主要方法:factoryidentifier、requiredoptions、optionaloptions、createdynamictablesource。其中,factoryidentifier方法用于确定自定义连接器connector的连接器标识,例如为“customread”。requiredoptions方法用于表示自定义连接器connector的必要参数,在一些实施例中,非必要是可以为空。optionaloptions方法用于表示自定义连接器connector的可选参数,例如data‑per‑second每秒生成多少数据、number‑of‑data总共生成多少数据等。createdynamictablesource方法用于获取可以读取数据的具体实现类对象,例如在kafkaconnector中为一个读取kafka数据的对象,例如customtablesource方法,customtablesource方法用于自动生成数据的对象,提供自动生成数据的方法,也即是可以提供预设数据结构类型对应匹配的生成数据方法。53.例如可以对字符串类型string和整数类型bigint匹配对应的生成数据方法,例如对于字段a的数据类型为string,字段b的数据类型为bigint,由于在flink中有flink自己的类型系统,对于sql(structuredquerylanguage,结构化查询语言)中的datatype类型需要调用getlogicaltype方法获取实际的逻辑类型,生成对应实际的逻辑类型的数据。对于字段a,其逻辑类型为string,例如可以匹配以下数据生成方法:54.randomstringutils.randomalphanumeric();55.匹配上述方法之后,可以利用该方法循环生成符合string类型的数据,以得到string类型的第一数据。56.对于字段b,其逻辑类型为bigint,例如可以匹配以下数据生成方法:57.randomrandom=newrandom();58.random.nextint();59.匹配上述方法之后,可以利用该方法循环生成符合bigint类型的数据,以得到bigint类型的第一数据。本技术对数据结构类型对应匹配的生成数据方法可以根据具体应用场景等进行选择不同的生成数据方法,本技术对此不做限制。60.本实施例中,通过解析源端表的数据结构字段,得到预设数据结构类型,对预设数据结构类型匹配对应的生成数据方法,并利用生成数据方法生成符合预设数据结构类型的第一数据,可以利用源端表自动生成符合预设数据结构类型的第一数据,使得对待校验函数的验证不需要从真实的外部数据源读取数据。61.在一些实施例中,请参阅图3,上述步骤s12可以包括以下步骤:62.s121:将第一数据作为待校验函数的函数参数输入待校验函数。63.在对待校验函数进行校验之前,可以先定义声明待校验函数,例如利用采用如下方式声明待校验函数:64.‑‑声名函数65.createfunctioncustomfunctionas'xx.xx.xx';66.其中,customfunction表示待校验函数的名称,xx.xx.xx表示java语言中一个具体的类。对待校验函数的声明可以根据具体需要进行设置,本技术对此不做限制。67.其中,预设数据结构类型为待校验函数的函数参数所需的数据结构类型。可以将源端表生成的第一数据作为待校验函数的函数参数输入待校验函数,例如待校验函数为customfunction(stringx),可以将字符串类型的第一数据作为函数参数stringx输入待校验函数。68.s122:利用待校验函数对函数参数进行函数逻辑处理,得到第二数据。69.利用待校验函数对输入的第一数据进行函数逻辑处理,以得到处理结果作为第二数据。例如待校验函数customfunction的作用是计算字符串的长度,输入的第一数据为“hallo”,待校验函数对第一数据进行函数逻辑处理后,可以得到第二数据长度为5。70.在一些实施例中,请参阅图4,上述步骤s13可以包括以下步骤:71.s131:将第一目的端表作为目标目的表、第二数据作为目标数据。72.在对待校验函数进行校验之前,可以先创建第一目的端表,对第一目的端表进行配置。例如,可以通过以下方式创建第一目的端表:73.‑ddl创建sink174.createtablesink1(75.astring,ss76.bbigint77.)with(78.'connector'='customprint'79.);80.其中,sink1表示第一目的端表的名称,connector表示连接器,customprint表示数据输出器,数据输出器可用于输出数据。81.以上述示例中的源端表为例,可以将第一目的端表作为目标目的表、第二数据作为目标数据,将第二数据输出到第一目的端表,例如可以通过以下应用函数逻辑将第二数据输出到第一目的端表:82.‑‑dml应用函数逻辑将数据输出到sink183.insertintosink1(a,b)selecta,customfunction(ss)fromsource;84.其中,sink1(a,b)表示第一目的端表,a,customfunction(ss)表示经过待校验函数对第一数据进行函数逻辑处理的第二数据,source表示源端表。85.s132:利用目标目的端表对目标数据进行预设处理,得到经处理后的目标数据。86.在目标目的端表中,例如第一目的端表中的数据输出器customprint的实现方式可以与源端表中的数据生成器customread相似,数据输出器customprint可以通过dynamictablesinkfactory接口实现,其实现主要方法可以包括:factoryidentifier、requiredoptions、optionaloptions、createdynamictablesink。其中,factoryidentifier方法用于确定自定义连接器connector的连接器标识,例如“customprint”。requiredoptions方法可以用于表示自定义connector的必要参数,在一些实施例中,非必要时也可以为空。optionaloptions方法可以用于表示自定义连接器connector的可选参数,例如print‑error,打印到.error日志文件,或者print‑out,打印到.out日志文件。createdynamictablesink方法用于获取一个可以输出数据的具体实现类对象,例如在kafkaconnector中为一个将数据写入到kafka的对象,例如customtablesink方法。其中,customtablesink方法可以用于将目标数据进行输出,例如输出到日志文件中。87.目标数据为第二数据,且第二数据包括至少一列子数据,对目标数据进行预设处理,包括:按照预设顺序读取目标数据中的每列子数据,并对每列子数据进行预设处理。其中,预设顺序可以为按照偏移量顺序。预设处理可以包括转换为字符串格式。如以上述第一目的端表为例,customtablesink方法接收到的数据类型为形参rowdata,可以表示一行数据对象,例如可以通过rowdata["列名"]的方式,访问数据。例如示例中第一目的端表sink1中接收的第二数据的rowdata类型可以包括有两列子数据(a,customfunction(ss)),其中,customfunction(ss)表示待校验函数的函数逻辑处理结果,则可以按照偏移量顺序读取其目标数据,如偏移量为0读取字段a,偏移量为1时读取字段customfunction(ss)。并将读取的每列子数据都转换为字符串格式。[0088]s133:利用目标目的端表的输出功能输出经处理后的目标数据。[0089]其中,可以利用目标目的端表的输出功能输出经处理后的目标数据,也即是输出第二数据,其中,第二数据输出可以至日志文件中。例如可以利用目的端表中封装的输出功能system.out或system.err对第二数据进行输出。也即是,可以通过system.out或system.err将第二数据输出到.out或.error日志文件中。[0090]本技术中,利用自定义的连接器实现源端表和目的端表,源端表及目的端表中均不依赖于flink提供的组件的连接器,也即是不依赖例如kafka、hive、hbase等连接器,也即是不依赖具体的实例组件,而是通过自定义连接器就可以实现对外部组件数据的获取,简化了对待校验函数的校验流程。另外,本技术中对待校验函数的校验不涉及真实的数据源,重点关注待校验函数的函数逻辑,使得在sql中可以简化校验的逻辑,输出函数逻辑处理结果更清晰,从而可以更准确的判断待校验函数的函数逻辑正确性。[0091]请参阅图5,图5是本技术函数校验方法第二实施例的流程示意图。该方法可以包括以下步骤:[0092]s21:利用源端表生成预设数据结构类型的第一数据。[0093]s22:将第一数据输入待校验函数进行函数逻辑处理,以得到第二数据。[0094]s23:利用第一目的端表输出第二数据,其中,第二数据用于校验待校验函数。[0095]该实施例中,步骤s21至步骤s23的具体实施方式可参考上述实施例中步骤s11至步骤s13的实施过程,在此不再赘述。[0096]在上述步骤s21之后,本技术的函数校验方法还可以包括以下步骤:[0097]s24:利用第二目的端表输出第一数据;其中,输出的第一数据和第二数据用于配合以校验待校验函数的函数逻辑是否正确。[0098]可以利用第二目的端表输出第一数据,输出的第一数据和第一目的端表输出的第二数据可以用于配合以校验待校验函数的函数逻辑是否正确。其中,可以将第一数据和第二数据输出至日志文件中,使得后续可以在日志文件中查看第一数据和第二数据再次校验待校验函数的函数逻辑的正确性。[0099]例如待校验函数的函数逻辑作用为计算字符串的长度,第一数据包括“hallo”,第二数据包括长度5,则通过第一数据和第二数据,则可以判断待校验函数的函数逻辑是正确的;若第一数据包括“hallo”,第二数据包括长度4,则通过第一数据和第二数据,则可以判断待校验函数的函数逻辑是不正确的。[0100]在一些实施例中,可以将第一数据和第二数据输出至日志文件中,则后续用户等可以在日志文件中查看第一数据和第二数据,利用第一数据和第二数据对待校验函数进行校验。例如用户可以按照待校验函数的函数逻辑的原理作用对第一数据进行处理,以得到验证数据。将验证数据与第二数据进行比较,判断验证数据与第二数据是否一致;若一致,则待校验函数的函数逻辑正确;若不一致,则待校验函数的函数逻辑不正确。[0101]区别于上述实施例,本实施例中,利用第一目的端表输出第二数据,利用第二目的端表输出第一数据,使得可以通过将第一数据和第二数据配合校验待校验函数的函数逻辑的正确性,能够简化函数校验步骤,更准确地校验函数逻辑的正确性。另外,将第一数据和第二数据输出至日志文件中,使得用户可以在日志文件中查看第一数据和第二数据,利用第一数据和第二数据对待校验函数进行校验。[0102]请参阅图6,步骤s24中,利用第二目的端表输出第一数据可以包括以下步骤:[0103]s241:将第二目的端表作为目标目的表、第一数据作为目标数据。[0104]在对待校验函数进行校验之前,可以先创建第二目的端表,对第一目的端表进行配置。例如,可以通过以下方式创建第一目的端表:[0105]‑‑ddl创建sink2[0106]createtablesink2([0107]astring,[0108]bbigint[0109])with([0110]'connector'='customprint'[0111]);[0112]其中,sink2表示第一目的端表的名称,connector表示连接器,customprint表示数据输出器,数据输出器可用于输出数据。[0113]以上述示例中的源端表为例,可以将第二目的端表作为目标目的表、第一数据作为目标数据,例如可以通过以下方式将第一数据输出到第二目的端表:[0114]‑‑dml源端表中生成的数据输出到sink2[0115]insertintosink2(a,b)selecta,bfromsource;[0116]其中,sink2(a,b)表示第二目的端表,a,b表示源端表生成的第一数据,source表示源端表。[0117]s242:利用目标目的端表对目标数据进行预设处理,得到经处理后的目标数据。[0118]目标数据为第一数据,且第一数据包括至少一列子数据,对目标数据进行预设处理,包括:按照预设顺序读取目标数据中的每列子数据,并对每列子数据进行预设处理。其中,预设处理包括转换为字符串格式。[0119]s243:利用目标目的端表的输出功能输出经处理后的目标数据。[0120]该实施例中,步骤s241至步骤s243的具体实施方式可参考上述实施例中步骤s131至步骤s133的实施过程,在此不再赘述。[0121]对于上述实施例,本技术提供一种函数校验装置,请参阅图7,图7是本技术函数校验装置第一实施例的结构示意图。该函数校验装置300包括:源端表模块31、处理模块32和第一目的端表模块33。[0122]源端表模块31用于利用源端表生成预设数据结构类型的第一数据。具体地,源端表模块31用于解析源端表的数据结构字段,得到预设数据结构类型;对预设数据结构类型匹配对应的生成数据方法,并利用生成数据方法生成符合预设数据结构类型的第一数据。[0123]可选地,源端表中包括预设数据结构类型的随机生成工具;对预设数据结构类型匹配对应的生成数据方法,并利用生成数据方法生成符合预设数据结构类型的第一数据,可以包括:对预设数据结构类型匹配对应的随机生成工具,并利用随机生成工具随机生成符合预设数据结构类型的第一数据。[0124]处理模块32用于将第一数据输入待校验函数进行函数逻辑处理,以得到第二数据。具体地,处理模块32用于将第一数据作为待校验函数的函数参数输入待校验函数;利用待校验函数对函数参数进行函数逻辑处理,得到第二数据。[0125]可选地,预设数据结构类型为待校验函数的函数参数所需的数据结构类型。[0126]第一目的端表模块33用于利用第一目的端表输出第二数据,其中,第二数据用于校验待校验函数。[0127]可选地,第一目的端表模块33利用第一目的端表输出第二数据,包括:将第一目的端表作为目标目的表、第二数据作为目标数据;利用目标目的端表对目标数据进行预设处理,得到经处理后的目标数据;利用目标目的端表的输出功能输出经处理后的目标数据。其中,第二数据输出至日志文件中。[0128]其中,目标数据为第二数据,且第二数据包括至少一列子数据。[0129]可选地,对目标数据进行预设处理,包括:按照预设顺序读取目标数据中的每列子数据,并对每列子数据进行预设处理;其中,预设处理包括转换为字符串格式。[0130]在一些实施例中,请参阅图8,图8是本技术函数校验装置第二实施例的结构示意图。该实施例中,函数校验装置300还可以包括第二目的端表模块34。第二目的端表模块34用于利用第二目的端表输出第一数据;其中,输出的第一数据和第二数据用于配合以校验待校验函数的函数逻辑是否正确。[0131]可选地,第二目的端表模块34用于利用第二目的端表输出第一数据,包括:将第二目的端表作为目标目的表、第一数据作为目标数据;利用所述目标目的端表对目标数据进行预设处理,得到经处理后的目标数据;利用目标目的端表的输出功能输出经处理后的目标数据。其中,第一数据输出至日志文件中。[0132]其中,目标数据为第二数据,且第二数据包括至少一列子数据。[0133]可选地,对目标数据进行预设处理,包括:按照预设顺序读取目标数据中的每列子数据,并对每列子数据进行预设处理;其中,预设处理包括转换为字符串格式。[0134]该实施例的具体实施方式可参考上述实施例的实施过程,在此不再赘述。[0135]对于上述实施例,本技术提供一种计算机设备,请参阅图9,图9是本技术计算机设备一实施例的结构示意图。该计算机设备500包括存储器501和处理器502,其中,存储器501和处理器502相互耦接,存储器501中存储有程序数据,处理器502用于执行程序数据以实现上述任一实施例中的步骤。[0136]在本实施例中,处理器502还可以称为cpu(centralprocessingunit,中央处理单元)。处理器502可能是一种集成电路芯片,具有信号的处理能力。处理器502还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器502也可以是任何常规的处理器等。[0137]该实施例的具体实施方式可参考上述实施例的实施过程,在此不再赘述。[0138]对于上述实施例的方法,其可以采用计算机程序的形式实现,因而本技术提出一种存储装置,请参阅图10,图10是本技术存储装置一实施例的结构示意图。该存储装置600中存储有能够被处理器运行的程序数据601,程序数据可被处理器执行以实现上述任一实施例中的步骤。[0139]该实施例的具体实施方式可参考上述实施例的实施过程,在此不再赘述。[0140]本实施例存储装置600可以是u盘、移动硬盘、只读存储器(rom,read‑onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等可以存储程序数据的介质,或者也可以为存储有该程序数据的服务器,该服务器可将存储的程序数据发送给其他设备运行,或者也可以自运行该存储的程序数据。[0141]在本技术所提供的几个实施例中,应该理解的,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。[0142]作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。[0143]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0144]集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储装置中,该存储装置是一种计算机可读取存储介质。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施方式方法的全部或部分步骤。[0145]显然,本领域的技术人员应该明白,上述的本技术的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术不限制于任何特定的硬件和软件结合。[0146]以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域:
:,均同理包括在本技术的专利保护范围内。当前第1页12当前第1页12
转载请注明原文地址:https://win.8miu.com/read-50262.html