一种软件项目页面的配置方法转让专利

申请号 : CN202311621937.6

文献号 : CN117311799B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐海平刘飞周森鹏田进段猛李小整

申请人 : 钱塘科技创新中心浙江国锐数字科技有限公司

摘要 :

本申请提供一种软件项目页面的配置方法,通过调取并扫描抽象类,获取所述抽象类的子类;读取所述子类的字段属性标注的注解,配置对应的配置项参数;根据所述配置项参数,生成软件项目页面的配置文件;渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面。本申请提供的软件项目页面的配置方法,简化了软件项目页面配置步骤和参数定义设置,能够动态地更改系统中的属性,实现系统配置页面零代码,提高用户体验。

权利要求 :

1.一种软件项目页面的配置方法,其特征在于,包括:

调取并扫描抽象类,获取所述抽象类的子类;

读取所述子类的字段属性标注的注解,配置对应的配置项参数;

根据所述配置项参数,生成软件项目页面的配置文件;

渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面;

所述读取所述子类的字段属性标注的注解的过程中,使用反射读取的方式读取子类的字段属性标注的注解;

通过反射获取注解时,返回Java 运行时生成的动态代理对象SProxy1;

通过代理对象调用自定义注解的方法,以调用AnnotationlnvocationHandler 的invoke 方法,从memberValues中获取对应的值,其中memberValues 的来源为Java 常量池。

2.根据权利要求1所述的一种软件项目页面的配置方法,其特征在于,所述调取并扫描抽象类,获取所述抽象类的子类的步骤之前包括:定义组件注解,所述组件注解与软件项目面的项目组件对应配置;

基于所述组件注解,定义抽象类,所述抽象类与存储系统配置属性的类对应配置。

3.根据权利要求2所述的一种软件项目页面的配置方法,其特征在于,所述定义组件注解的过程中,所述组件注解与软件项目面的项目组件一一对应配置。

4.根据权利要求2所述的一种软件项目页面的配置方法,其特征在于,所述定义组件注解的过程中,将所述软件项目页面的项目组件的属性抽象为注解的属性。

5.根据权利要求1所述的一种软件项目页面的配置方法,其特征在于,所述调取并扫描抽象类,获取所述抽象类的子类的过程中,按照预设路径扫描所述抽象类。

6.根据权利要求5所述的一种软件项目页面的配置方法,其特征在于,所述按照预设路径扫描所述抽象类的步骤之前,通过配置文件中的预设配置项设置所述预设路径。

7.根据权利要求1所述的一种软件项目页面的配置方法,其特征在于,所述注解包括注解类型和注解属性;所述读取所述子类的字段属性标注的注解,配置对应的配置项参数的过程中,根据所述注解类型和所述注解属性,分别对应配置所述配置项参数。

8.根据权利要求1‑7任一项所述的一种软件项目页面的配置方法,其特征在于,所述渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面的步骤包括:响应于接收到对需要渲染页面的配置文件的请求,根据注解的描述生成配置文件,所述配置文件用于指示所述配置页面的组件类型、组件的位置布局、组件的显示尺寸。

9.根据权利要求1‑7任一项所述的一种软件项目页面的配置方法,其特征在于,所述渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面的步骤之后包括:响应于所述配置项参数的更改,更新所述配置项参数并存储。

说明书 :

一种软件项目页面的配置方法

技术领域

[0001] 本申请涉及软件编程技术领域,具体涉及一种软件项目页面的配置方法。

背景技术

[0002] 随着互联网大数据时代的来临,业务需求的变化越来越快,应用系统的规模及复杂度也在不断地增长,用户对获取便捷、优质、多元化的服务需求日趋上升。相应地,编程人员在工作过程中经常会涉及到各种各样不同的软件项目页面的配置任务。
[0003] 申请人在构思和实现本申请的过程中,至少发现以下问题:现在的一些软件项目页面配置步骤繁琐,参数定义设置复杂,使用户无法动态地更改系统中的属性,不能做到系统配置页面零代码的需求,用户体验比较差。

发明内容

[0004] 为了缓解以上问题,本申请提供一种软件项目页面的配置方法,包括:
[0005] 调取并扫描抽象类,获取所述抽象类的子类;
[0006] 读取所述子类的字段属性标注的注解,配置对应的配置项参数;
[0007] 根据所述配置项参数,生成软件项目页面的配置文件;
[0008] 渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面。
[0009] 可选地,所述调取并扫描抽象类,获取所述抽象类的子类的步骤之前包括:
[0010] 定义组件注解,所述组件注解与软件项目面的项目组件对应配置;
[0011] 基于所述组件注解,定义抽象类,所述抽象类与存储系统配置属性的类对应配置。
[0012] 可选地,所述定义组件注解的过程中,所述组件注解与软件项目面的项目组件一一对应配置。
[0013] 可选地,所述定义组件注解的过程中,将所述软件项目页面的项目组件的属性抽象为注解的属性。
[0014] 可选地,所述调取并扫描抽象类,获取所述抽象类的子类的过程中,按照预设路径扫描所述抽象类。
[0015] 可选地,所述按照预设路径扫描所述抽象类的步骤之前,通过配置文件中的预设配置项设置所述预设路径。
[0016] 可选地,所述读取所述子类的字段属性标注的注解的过程中,使用反射读取的方式读取子类的字段属性标注的注解。
[0017] 可选地,所述注解包括注解类型和注解属性;所述读取所述子类的字段属性标注的注解,配置对应的配置项参数的过程中,根据所述注解类型和所述注解属性,分别对应配置所述配置项参数。
[0018] 可选地,所述渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面的步骤包括:
[0019] 响应于接收到对需要渲染页面的配置文件的请求,根据注解的描述生成配置文件,所述配置文件用于指示所述配置页面的组件类型、组件的位置布局、组件的显示尺寸。
[0020] 可选地,所述渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面的步骤之后包括:
[0021] 响应于所述配置项参数的更改,更新所述配置项参数并存储。
[0022] 如上所述,本申请提供的软件项目页面的配置方法,通过调取并扫描抽象类,获取所述抽象类的子类;读取所述子类的字段属性标注的注解,配置对应的配置项参数;根据所述配置项参数,生成软件项目页面的配置文件;渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面;简化了软件项目页面配置步骤和参数定义设置,提高用户体验。

附图说明

[0023] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0024] 图1为本申请一实施例的软件项目页面的配置方法流程图。
[0025] 图2为本申请一实施例的java生成配置文件的流程示意图。
[0026] 图3为本申请一实施例的配置页面渲染流程示意图。
[0027] 图4为本申请一实施例的智能终端实现软件项目页面配置过程示意图。
[0028] 本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

[0029] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0030] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素,此外,本申请不同实施例中具有同样命名的部件、特征、要素可能具有相同含义,也可能具有不同含义,其具体含义需以其在该具体实施例中的解释或者进一步结合该具体实施例中上下文进行确定。
[0031] 需要说明的是,在本文中,采用了诸如S10、S20等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会先执行S20后执行S10等,但这些均应在本申请的保护范围之内。
[0032] 应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0033] 以下结合各个附图对本申请提出的内容进行详细的说明。
[0034] 第一实施例
[0035] 本申请提供一种软件项目页面的配置方法,图1为本申请一实施例的软件项目页面的配置方法流程图。
[0036] 如图1所示,在一实施例中,软件项目页面的配置方法包括:
[0037] S10:调取并扫描抽象类,获取所述抽象类的子类。
[0038] 面向对象是现代软件设计模式的基础,合理利用面向对象的软件开发模式,不仅可以增强代码的可扩展性和复用性,同时也能够提高开发效率并降低维护成本。示例性地,在面向对象的软件开发中,类存在继承关系。在集成关系种,一个类A若继承另一个类B,我们则称A是B的子类。继承就是子类继承父类的特征和行为,使得子类具有父类相同的行为和数据结构。继承可以是单继承或者多重继承的方式。可选地,在Java语言的软件开发种,当一个类没有显式使用集成的两个关键字(extends\implements),则可以默认为继承的Obiect类。
[0039] S20:读取所述子类的字段属性标注的注解,配置对应的配置项参数。
[0040] 示例性地,注解(Annotation),可以为放在Java源码的类、方法、字段、参数前的一种特殊“注释”,是一种标记、标签。注解的内容往往会被编译器直接忽略,能够被编译器打包进入class文件,并执行相应的处理。可选地,对于各相关模块的代码块,通过注解或标注的方式,可以将每个功能方法单独封装成函数组件。
[0041] 示例性地,在页面展示中可以用到很多组件,例如假设使用AntD开发的前端项目,会用到一些输入组件例如AInput(用于简单输入)、AButton(用于绘制一个按钮)。而在设计注解中对其每个组件可以进行对应的注解。
[0042] S30:根据所述配置项参数,生成软件项目页面的配置文件。
[0043] 在Java开发过程中,经常需要使用配置文件来保存一些配置信息,比如数据库连接信息、日志配置等。
[0044] 图2为本申请一实施例的java生成配置文件的流程示意图。
[0045] 请参考图2,示例性地,可以先创建一个Properties(属性)对象,用于保存配置项。Properties类是Java中用于操作配置文件的类,它继承自Hashtable类,可以将键值对保存到文件中。其次,可以使用setProperty(配置属性)方法可以给配置文件添加配置项,其中可以使用第一个参数对应配置项的键,使用第二个参数对应配置项的值。最后,可以使用store(存储)方法可以将配置项写入文件中,其中可以使用输出流(比如是文件输出流或者其他输出流)和字符串,用于指定配置文件的注释信息。
[0046] S40:渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面。
[0047] 可选地,渲染线程收到 配置文件后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务,开启渲染流程。
[0048] 图3为本申请一实施例的配置页面渲染流程示意图。
[0049] 如图3所示,以HTML页面渲染为例,示例性地,整个渲染流程分为多个子阶段,分别是:HTML 解析、样式计算、布局、分层、绘制、分块、光栅化、合成画面。每个阶段都有明确的输入输出,上一个阶段的输出会成为下一个阶段的输入,从而形成了整个渲染流程,实现了最终页面的显示。
[0050] 本实施例的软件项目页面的配置方法,通过调取并扫描抽象类,获取所述抽象类的子类;读取所述子类的字段属性标注的注解,配置对应的配置项参数;根据所述配置项参数,生成软件项目页面的配置文件;渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面;简化了软件项目页面配置步骤和参数定义设置,能够动态地更改系统中的属性,提高用户体验。
[0051] 可选地,所述调取并扫描抽象类,获取所述抽象类的子类的步骤之前包括:
[0052] 定义组件注解,所述组件注解与软件项目面的项目组件对应配置;
[0053] 基于所述组件注解,定义抽象类,所述抽象类与存储系统配置属性的类对应配置。
[0054] 示例性地,用户可以创建动态配置项,并且继承AbstractConfigItem抽象类。其中AbstractConfigItem抽象类为配置项的抽象类,本实施例以此为例进行说明,在其他实施例中,这里继承的抽象类也可以是其他抽象类,本申请对此不做限定。在项目运行时,根据创建的配置项类上的注解,使用指定的组件接受配置项内容,最终生成配置页面。注解提供了一种安全的类似注释的机制,用来将任何的信息或元数据 (metadata) 与程序元素(类、方法成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用,注解像一种修饰符一样,应用于包、类型、构告方法、方法、成员变量、参数及本地变量的声明语句中。
[0055] 示例性地,java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。可选地,注解可以用于生成文档、跟踪代码的依赖性以及在编译过程种进行格式检查等作用。
[0056] 示例性地,@Component是一个通用的注解,用于对应标记一个类为Spring中的组件。被标记为@Component的类会被自动扫描并加入到Spring的容器中,可以通过容器来获取该组件的实例。Component有三个衍生注解:@Controller、@Service和@Repository,它们分别用于标记控制器、业务层和数据访问层组件。这些注解的作用和@Component一样,可以更好地区分组件的类型。
[0057] 示例性地,普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。可选地,拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。可选地,抽象方法可以为public或者protected,缺省情况下默认为public。可选地,抽象类有子类,使用extends继承,一个子类可以继承一个抽象类。该子类可以覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类)。
[0058] 示例性地,接口就是一个特殊的抽象类。接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
[0059] 可选地,所述定义组件注解的过程中,所述组件注解与软件项目面的项目组件一一对应配置。
[0060] 示例性地,页面展示中可以用到很多组件,例如假设使用AntD开发的前端项目,会用到一些输入组件例如AInput(用于简单输入)、AButton(用于绘制一个按钮)。而在设计注解中可以对其每个组件有一一对应的注解;并且配置也可以一一对应,例如AButton组件有size属性可以控制其大小,则在注解中也可以有size属性。
[0061] 可选地,所述定义组件注解的过程中,将所述软件项目页面的项目组件的属性抽象为注解的属性。
[0062] 示例性地,将前端组件抽象为系统中注解后,为了对前端组件的具体样式做配置,也可以抽象其属性,例如AButton组件有size属性可以控制其大小,则在注解中也对应具有size属性。例如:输入主键(input 其属性有 可输入长度 ‑ length  , 是否加密 ‑password)可以定义注解为 (@Input(length,password))。
[0063] 可选地,所述调取并扫描抽象类,获取所述抽象类的子类的过程中,按照预设路径扫描所述抽象类。
[0064] 可选地,在项目结构的设置中,可以根据扫描某一文件路径地址下的所有代码,预设路径进行扫描任务可以避免进行全项目扫描进而降低性能指标。扫描代码中,可以监测代码中是否有用到设计的组件注解。示例性地,定义用于存储系统配置属性的类的抽象类(AbstractConfigItem),系统启动时扫描指定路径下 AbstractConfigItem 抽象类的子类。使用反射读取子类的各个字段属性标注的注解,根据注解生成配置项页面配置文件。
[0065] 可选地,所述按照预设路径扫描所述抽象类的步骤之前,通过配置文件中的预设配置项设置所述预设路径。
[0066] 示例性地,预设的扫描路径属于静态的配置,在具体开发工作开始前就可以指定,可以由具体的开发人员指定,也可以通过配置文件中的配置项‘tip.ui.base‑package’来指定。
[0067] 可选地,所述读取所述子类的字段属性标注的注解的过程中,使用反射读取的方式读取子类的字段属性标注的注解。
[0068] 示例性地 ,注解本质是一个继承了Annotation 的特殊接口,其具体实现类是Java 运行时生成的动态代理类。而我们通过反射获取注解时,返回的是Java 运行时生成的动态代理对象SProxy1。通过代理对象调用自定义注解(接口)的方法,会最终调用AnnotationlnvocationHandler 的invoke 方法。该方法会从memberValues 这个Map 中季出对应的值。而memberValues 的来源是Java 常量池。可选地,Java通过类的全限定名(也就是包名+文件名)可以读取到类的定义,并且可以读取到具体对象实例上的注解及其配置的属性。
[0069] 可选地,所述注解包括注解类型和注解属性。所述读取所述子类的字段属性标注的注解,配置对应的配置项参数的过程中,根据所述注解类型和所述注解属性,分别对应配置所述配置项参数。
[0070] 示例性地,注解类型指的是一个个不同的注解,如前文所述,软件项目前端有许多组件(AInput、AButton等等),对应的后端也可以有对应数量的注解。软件项目后端的AInput注解的属性可以与前端AInput组件属性一致。软件项目前端会通过组件属性来决定如何显示组件,例如size属性决定组件的大小。
[0071] 可选地,所述渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面的步骤包括:
[0072] 响应于接收到对需要渲染页面的配置文件的请求,根据注解的描述生成配置文件,所述配置文件用于指示所述配置页面的组件类型、组件的位置布局、组件的显示尺寸。
[0073] 示例性地,软件项目前端可以请求需要渲染页面的配置文件,软件项目的管理后端则会根据注解的描述生成配置文件发给前端。配置文件内容将描述页面存在的组件类型、名称,以及组件的位置布局、组件的大小等信息。
[0074] 可选地,所述渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面的步骤之后包括:
[0075] 响应于所述配置项参数的更改,更新所述配置项参数并存储。
[0076] 如上所述,本申请提供的软件项目页面的配置方法,通过调取并扫描抽象类,获取所述抽象类的子类;读取所述子类的字段属性标注的注解,配置对应的配置项参数;根据所述配置项参数,生成软件项目页面的配置文件;渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面;简化了软件项目页面配置步骤和参数定义设置,能够动态地更改系统中的属性,实现系统配置页面零代码,提高用户体验。
[0077] 示例性地,用户可以在系统运行时进行配置项配置,持久化保存配置项内容。例如:微信小程序的相关资质,可能会需要的属性是小程序的appId、小程序的密钥appScret,它们分别是通过普通输入组件及密码输入组件来接收数据,则都使用注解@AInput来标注,并且appScret的@AInput需要配置为密码的样式‑‑@AInput(password=true)。配置完成后,系统运行,具体使用的用户则可以在配置微信小程序资质的页面看到渲染的2个AInput组件,并且在其上填写小程序的appId、小程序的密钥appScret。之后用户点击保存,系统则会将配置持久化地保存在数据库中。将配置项内容在本次运行过程中进行缓存,能够优化系统读取配置项的效率。
[0078] 第二实施例
[0079] 本申请还提供一种智能终端,所述智能终端包括处理器和存储器;
[0080] 所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如上述的软件项目页面的配置方法的步骤。
[0081] 图4为本申请一实施例的智能终端实现软件项目页面配置过程示意图。
[0082] 如图4所示,在一实施例中,智能终端通过以下流程实现软件项目页面的配置方法的步骤:
[0083] 1. 定义配置系统属性时与用户界面组件一一对应的注解,将用户界面的组件的属性抽象为注解的属性。例如输入主键(input,其属性有:可输入长度 ‑ length  , 是否加密 ‑ password)可以定义注解为 (@Input(length,password))。
[0084] 2. 定义用于存储系统配置属性的类的抽象类(AbstractConfigItem),系统启动时扫描指定路径下 AbstractConfigItem 抽象类的子类。使用反射读取子类的各个字段属性标注的注解,根据注解生成配置项页面配置文件。
[0085] 3. 客户端读取配置项页面配置文件,将其渲染为系统属性配置页面。
[0086] 本实施例提出了一种根据业务代码配置项,配合注解快速生成管理系统用户界面的方案,能够根据软件代码中注解类型,以及注解上的属性,自动生成管理系统属性配置页面。根据系统业务需求,用户可以实现动态地更改系统中的属性,实现系统配置页面零代码的需求。
[0087] 第三实施例
[0088] 本申请还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的软件项目页面的配置方法的步骤。
[0089] 如上所述,本申请提供的软件项目页面的配置方法,通过调取并扫描抽象类,获取所述抽象类的子类;读取所述子类的字段属性标注的注解,配置对应的配置项参数;根据所述配置项参数,生成软件项目页面的配置文件;渲染所述配置文件至所述软件项目页面的配置页面,生成所述软件项目页面;简化了软件项目页面配置步骤和参数定义设置,能够动态地更改系统中的属性,提高用户体验。
[0090] 在本申请提供的智能终端和存储介质的实施例中,可以包含任一上述交互方法实施例的全部技术特征,说明书拓展和解释内容与上述方法的各实施例基本相同,在此不再做赘述。
[0091] 本申请实施例还提供一种计算机程序产品,计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如上各种可能的实施方式中的方法。
[0092] 本申请实施例还提供一种芯片,包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得安装有芯片的设备执行如上各种可能的实施方式中的方法。
[0093] 可以理解,上述场景仅是作为示例,并不构成对于本申请实施例提供的技术方案的应用场景的限定,本申请的技术方案还可应用于其他场景。例如,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
[0094] 上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0095] 本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0096] 本申请实施例设备中的单元可以根据实际需要进行合并、划分和删减。
[0097] 在本申请中,对于相同或相似的术语概念、技术方案和/或应用场景描述,一般只在第一次出现时进行详细描述,后面再重复出现时,为了简洁,一般未再重复阐述,在理解本申请技术方案等内容时,对于在后未详细描述的相同或相似的术语概念、技术方案和/或应用场景描述等,可以参考其之前的相关详细描述。
[0098] 在本申请中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0099] 本申请技术方案的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本申请记载的范围。
[0100] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本申请每个实施例的方法。
[0101] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络,或者其他可编程装置。计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD),或者半导体介质(例如固态存储盘Solid State Disk (SSD))等。
[0102] 以上仅为本申请的优选实施例, 并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。