一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

模块化开发部署系统、部署方法、电子设备及存储介质与流程

2022-09-15 03:27:04 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,具体而言,涉及一种模块化开发部署系统、部署方法、电子设备及存储介质。


背景技术:

2.目前,对于web应用的部署,业界有weblogic、was等方案,但是比较重量级,部署困难,耗时长,控制不精细,这些方案因为所有代码在一起,当出现生产问题时,bug修复可能会影响到其它正常的功能模块,同时上线前也要求全量回归测试,增加了测试工作量,此外,上述方案还会极度依赖系统容器的能力,比如依赖jndi,这样一来,在应用移植过程中会出现移植兼容问题,比如移植到其他容器不能启动。


技术实现要素:

3.本技术实施例的目的在于提供一种模块化开发部署系统、部署方法、电子设备及存储介质,至少用以在web应用部署过程中,降低一个模块的改动对其他模块产生影响,从而降低测试工作量。
4.为此,本技术实施例一公开一种模块化开发部署系统所述系统包括:第一子系统、第二子系统、第三子系统;
5.所述第一子系统包括第一模块,所述第一模块用于为所述第二子系统中的应用返回执行第一预设步骤的执行结果;
6.所述第二子系统包括用于加载应用的第一类加载器,其中,所述第一类加载器基于隔离机制加载所述应用;所述第三子系统包括用于在所述第一类加载器加载所述应用后,加载所述应用的功能组件的第二类加载器,其中,所述第二类加载器基于隔离机制加载多个所述功能组件。
7.在本技术第一方面中,第一类加载器基于隔离机制加载所述应用是指每个应用都有一个独立的第一类加载器,即系统会为每个应用创建一个第一类加载器的实例,从而加载该应用的class文件,例如,为应用a创建第一类加载器a、应用b创建第一类加载器b、应用c创建第一类加载器c,这样一来,每个应用有自身的数据环境,彼此的影响降低,例如,当应用a改动不会通过应用c影响到应用b,从而当应用a改动时,可不对应用b或同时不对应用c和应用b进行测试,即应用a改动时,可不进行全量回归测试,从而降低了在一个应用改动后的测试工作量。
8.在本技术第一方面中,作为一种可选的实施方式,所述第一模块包括生命周期模块、监控模块、协议支持模块、应用组件管理模块和隔离调度模块;
9.所述生命周期模块,用于管理所述应用的生命周期;
10.所述监控模块,用于对所述应用的运行结果进行监控并可视化展示;
11.所述协议支持模块,用于基于预设通信协议处理所述第二子系统的所述应用发起的通信请求;
12.所述应用组件管理模块,用于对所述第二子系统的所述应用进行管理;
13.所述隔离调度模块,用于基于预设隔离策略确定需要隔离调度的应用或功能组件。
14.在本技术第一方面中,作为一种可选的实施方式,所述第一子系统还包括模块部署接口、资源接口和配置接口;
15.所述模块部署接口,用于接收针对所述应用的功能组件的部署指令,并基于所述部署指令部署所述应用的功能组件;
16.所述资源接口,用于接收针对所述应用的资源设置指令并基于所述资源设置指令设置所述应用的资源;
17.所述配置接口,用于接收针对所述应用的配置指令并基于配置指令对应用或应用的功能组件的运行参数进行配。
18.在本技术第一方面中,作为一种可选的实施方式,所述第二子系统还包括第一spring容器,所述第一spring容器用于对所述应用的对象进行管理。
19.在本技术第一方面中,作为一种可选的实施方式,所述第二子系统还包括第一公共bean模块、统一异常处理模块、统一过滤的模块和组件插件模块;
20.所述公共bean模块用于第二预设步骤并得到第二执行结果,并为所述应用提供所述第二执行结果;
21.所述统一异常处理模块用于对捕获所述应用在运行过程中所产生的异常数据并基于异常数据进行异常处理;
22.所述统一过滤模块用于筛选所述应用在运行过程中所产生的日志信息;
23.所述公共插件模块用于执行第三预设步骤得到第三执行结果,并为所述应用提供所述第三执行结果。
24.在本技术第一方面中,作为一种可选的实施方式,所述第三子系统包括第二spring容器、组件插件和协议接口;
25.所述第二spring容器用于响应针对所述应用的功能组件的对象进行管理;
26.所述组件插件用于响应针对所述应用的功能组件的插件调用指令;
27.所述协议接口用于响应针对所述应用的所述功能组件的通信请求,以基于预设通信协议解析所述通信请求。
28.本技术第二方面公开一种应用于本技术第一方面系统的模块化开发部署系统,所述方法包括:
29.当接收到针对应用的功能组件的部署指令时,基于所述部署指令调用模块部署接口;
30.基于所述模块部署接口完成对待部署功能组件的部署。
31.在本技术的方法中,第一类加载器基于隔离机制加载所述应用是指每个应用都有一个独立的第一类加载器,即系统会为每个应用创建一个第一类加载器的实例,从而加载该应用的class文件,例如,为应用a创建第一类加载器a、应用b创建第一类加载器b、应用c创建第一类加载器c,这样一来,每个应用有自身的数据环境,彼此的影响降低,例如,当应用a改动不会通过应用c影响到应用b,从而当应用a改动时,可不对应用b或同时不对应用c和应用b进行测试,即应用a改动时,可不进行全量回归测试,从而降低了在一个应用改动后
的测试工作量。
32.在本技术第二方面中,作为一种可选的实施方式,在基于所述模块部署接口完成对所述功能组件的部之后,所述方法还包括:
33.获取针对所述待部署功能组件的测试指令;
34.基于所述测试指令对所述待部署功能组件进行测试,并得到测试结果。
35.本技术第三方面公开一种电子设备,所述电子设备应用于本技术第一方面的模块化开发部署系统,所述电子设备包括:
36.存储有可执行程序代码的存储器;
37.与所述存储器耦合的处理器;
38.所述处理器调用所述存储器中存储的所述可执行程序代码,执行本技术第二方面的模块部署方法。
39.在本技术的电子设备中,第一类加载器基于隔离机制加载所述应用是指每个应用都有一个独立的第一类加载器,即系统会为每个应用创建一个第一类加载器的实例,从而加载该应用的class文件,例如,为应用a创建第一类加载器a、应用b创建第一类加载器b、应用c创建第一类加载器c,这样一来,每个应用有自身的数据环境,彼此的影响降低,例如,当应用a改动不会通过应用c影响到应用b,从而当应用a改动时,可不对应用b或同时不对应用c和应用b进行测试,即应用a改动时,可不进行全量回归测试,从而降低了在一个应用改动后的测试工作量。
40.本技术第四方面公开一种存储介质,所述存储介质应用于本技术第一方面的模块化开发部署系统,所述存储介质存储有计算机指令,所述计算机指令被调用时,用于执行本技术第二方面的模块部署方法。
41.在本技术的存储介质中,第一类加载器基于隔离机制加载所述应用是指每个应用都有一个独立的第一类加载器,即系统会为每个应用创建一个第一类加载器的实例,从而加载该应用的class文件,例如,为应用a创建第一类加载器a、应用b创建第一类加载器b、应用c创建第一类加载器c,这样一来,每个应用有自身的数据环境,彼此的影响降低,例如,当应用a改动不会通过应用c影响到应用b,从而当应用a改动时,可不对应用b或同时不对应用c和应用b进行测试,即应用a改动时,可不进行全量回归测试,从而降低了在一个应用改动后的测试工作量。
附图说明
42.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
43.图1是本技术实施例公开的一种模块化开发部署系统的架构示意图;
44.图2是本技术实施例公开的一种模块部署方法的流程示意图;
45.图3是本技术实施例公开的一种电子设备的结构示意图。
具体实施方式
46.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
47.实施例一
48.请参阅图1,图1是本技术实施例公开的一种模块化开发部署系统的架构示意图。如图1所示,本技术实施例的系统包括:第一子系统、第二子系统、第三子系统,其中,第一子系统包括第一模块,第一模块用于为第二子系统中的应用返回执行第一预设步骤的执行结果;第二子系统包括用于加载应用的第一类加载器,其中,第一类加载器基于隔离机制加载应用;第三子系统包括用于在第一类加载器加载应用后,加载应用的功能组件,其中,第二类加载器基于隔离机制加载多个功能组件。
49.在本技术实施例中,第一类加载器为图1中的应用calassdloader,而第二类加载器为图1中的模块-组件classloader。
50.在本技术实施例中,第一模块是指图1中的root。进一步地,如图1所示,第一模块包括生命周期模块、监控模块、协议支持模块、应用组件管理模块、隔离调度模块,其中,生命周期模块用于应用的生命周期进行管理,例如,管理应用如何销毁,以清理内存数据。监控模块可以是对每个应用的运行结果进行监控并可视化展示,例如,于天气预报的应用而言,监控模块能够基于该应用获取的天气数据进行实时监测,并以可视化界面展示天气的实时变化。协议支持模块用于基于预设通信协议处理第二子系统的应用发起的通信请求,即用于获取多种数据协议的处理程序,以使得应用在接收到不同平台以不同数据协议发送的数据时,能够适配这种数据协议的差异,例如,适配dubbo等rpc协议,适配mq的调度,适配springcloud的调度,甚至适配service mesh。应用组件管理模块用于对应用组件的管理,例如,通过应用管理组件能够对为一个应用添加一个组件或删除一个组件。隔离调度模块用于以预设隔离策略确定需要隔离调度的应用或功能组件,例如将应用a和应用b设置为隔离加载,即基础层以隔离的方式调度应用a和应用b。
51.在本技术实施例中,第一预设步骤是指实现生命周期管理、监控管理、协议支持、应用组件管理、隔离调度这一功能的步骤,第一预设定步骤的执行结果是指实现生命周期管理、监控管理、协议支持、应用组件管理、隔离调度这一功能的结果,例如,当生命周期模块实时检测第二子系统的应是否没有用户在使用,或者应用长时间处于后台休眠状态,如果是,则关闭该应用并通知第二子系统,使得第二子系统不再加载应用的实例。在一些场景中,生命周期模块会将当前应用处于生命周期中的何种状态作为执行结果传递给第二子系统,例如,当应用处于前台活跃状态时,告知第二子系统这一消息。
52.需要说明的是,在本技术实施例中,关于一个应用的生命周期包括何种状态,请参阅现有技术,本技术实施例对此不作赘述。
53.在本技术实施例中,第一类加载器是指java的类加载器classloader,类加载器classloader是用来加载class文件到java虚拟机中的一种加载器,相应地,第二类加载器是指java的类加载器classloader,类加载器classloader是用来加载class文件到java虚拟机中的一种加载器。
54.在本技术实施例中,第一类加载器用于在应用被触发启动时,加载应用的class文件,并使得应用的class文件被jvm执行,从而实现应用的功能,例如,当一个天气类应用被触发启动时,第一类加载器加载该应用的class文件并在jvm中执行,从而实现天气数据的
执行。相应地,第二类加载器用于在应用的功能组件被触发启动时,加载应用中的功能组件的class文件,并使得应用的class文件被jvm执行,从而实现功能组件的功能。
55.在本技术实施例中,第二类加载器可以为第一类加载器的子类,即,第二类加载器继承了第一类加载器的属性、方法,其中,关于类的继承的相关说明,请参阅现有技术。
56.在本技术实施例中,class文件是指java class文件,另一方面,class文件是使用高级语言写的程序被编译后所产生的二进制文件,该二进制文件可运行于jvm中。
57.在本技术实施例中,第一类加载器基于隔离机制加载应用是指每个应用都有一个独立的第一类加载器,即系统会为每个应用创建一个第一类加载器的实例,从而加载该应用的class文件,例如,为应用a创建第一类加载器a、应用b创建第一类加载器b、应用c创建第一类加载器c,这样一来,每个应用有自身的数据环境,彼此的影响降低,例如,当应用a改动不会通过应用c影响到应用b,从而当应用a改动时,可不对应用b或同时不对应用c和应用b进行测试,即应用a改动时,可不进行全量回归测试,从而降低了在一个应用改动后的测试工作量。
58.相比而言,现有技术将应用a、应用b和应用c的代码耦合在一起,进而形成一个整体应用(应用s),此时,应用s被触发启动时,系统会创造一个第一类加载器的实例,用于加载应用s的class文件,即构成应用s的应用a、应用b、应用c被同一个类加载器加载,而系统不会针对应用a、应用b、应用c创建类加载器a、类加载器b、类加载器c,分别用于加载应用a的class文件、应用b的class文件、应用c的class文件,进而当应用a、应用b、应用c当中的其中一个应用被改动时,则应用a、应用b、应用c构成的整体的应用s也需要重新发布并测试,这样一来,应用a的改动会影响到应用b、应用c,即应用a的改动会导致应用b、应用c也需要重新发布和测试,进而增加了测试量。
59.在本技术实施例中,如图1所示,第二子系统还包括第一spring容器、公共bean模块、统一异常处理模块、统一过滤的模块和组件插件模块,第一spring容器用于对应用的对象进行管理,公共bean模块用于执行第二预设步骤得到第二执行结果,并为应用提供第二执行结果,统一异常处理模块用于对捕获应用在运行过程中所产生的异常数据并基于异常数据进行异常处理,统一过滤模块用于筛选应用在运行过程中所产生的日志信息,公共插件模块用于执行第三预设步骤得到第三执行结果,并为应用提供第三执行结果。
60.进一步地,本技术实施例的第一类加载器在加载一个应用,除了加载应用的class文件,还会加载应用class文件运行所依赖的环境,即加载第一spring容器,例如,对于一个基于spring框架实现的web应用,其class文件的运行需要依赖spring容器,因此第一类加载器也会加载一个spring容器,从而使得该应用的class能够基于spring框架限定的运行方式运行。
61.在本技术实施例中,通过加载class文件运行所依赖的环境,能够避免基于设备默认的环境执行应用的class文件,从而提高程序的可移植性。作为一个示例性,现有技术中,当应用s的运行依赖spring框架的jndi能力时,会出现当一个应用s运行在设备a中,可以正常运行,而当将应用s从设备a移植到设备b时,应用s无法正常运行,具体原因为设备a所提供的环境与设备b提供的环境不一样,例如,设备a提供的环境能够支持jndi能力,而设备b不支持jndi能力。相比而言,本技术实施例,能够在加载应用的class文件,创建一个与class文件适配的容器,使得应用的class文件能够被正常运行,而不是采用设备默认的系
统环,从而避免应用的class文件与系统环境不适配这一问题,进而能够提高可移植性,例如,当应用部署在设备a中,会一个与class文件适配的容器,当应用部署在设备b中,也会创建一个与class文件适配的容器,从依赖系统自身提供的容器。
62.在一些场景中,第一类加载器还会加载用于支撑应用运行的公共bean模块、统一异常模块、统一过滤模块、公共插件模块,其中,公共bean模块是指javabean,javabean是一种软件组件模型,就跟activex控件一样,它们提供已知的功能,可以轻松重用并集成到应用程序中的java类。任何可以用java代码创造的对象都可以利用javabean进行封装。通过合理的组织具有不同功能的javabean,可以快速的生成一个全新的应用程序,如果将这个应用程序比作一辆汽车,那么这些javabean就好比组成这辆汽车的不同零件。对软件开发人员来说,javabean带来的最大的优点是充分提高了代码的可重用性,并且对软件的可维护性和易维护性起到了积极作用。统一异常是指能够被应用下的多个功能组件的调用的异常监控组件,该异常监控组件能够捕获功能组件的执行过程上产生的异常信息并将异常信息上报或执行相应的异常处理。统一过是指能够被应用下的多个功能组件的调用的信息过滤组件,例如,信息过滤组件能够实现从众多的运行日志信息中筛选出技术人员需要关注的信息。公共插件是能够被应用下的多个功能组件的调用的插件,其中,该插件可以是获取世界时间等。
63.在本可选的实施方式,由于公共bean模块、统一异常模块、统一过滤模块、公共插件模块一般情况下与业务功能不相干,因此应用的改动基本不会涉及该部分的功能代码的改动,因此将公共bean模块、统一异常模块、统一过滤模块、公共插件模块独立出,能够避免当应用改动对公共bean模块、统一异常模块、统一过滤模块、公共插件模块的影响,并降低应用改动后代码测试量。
64.在本技术实施例中,第一子系统还包括模块部署接口(如图1所示的模块部署api),其中,模块部署接口是指用于对应用的功能组件进行部署的应用程序接口(application programming interface,api),即模块部署接口用于接收针对应用的功能组件的部署指令,并基于部署指令部署应用的功能组件,例如通过该应用程序接口,能够获取增加或删除应用的功能组件相应的部署参数,并通过该应用程序接口调用应用组件管理模块,以一个应用添加一个组件或删除一个组件。
65.在本技术实施例中,第一子系统还包括资源接口(如图1所示的资源api),其中,资源接口是指用于对应用或应用的功能组件的资源进行配置的应用程序接口,即接收针对应用的资源设置指令并记忆资源设置指令设置应用的资源,例如,通过该应用程序接口,可设置应用所引用的图片资源,或设置应用的功能组件所引用的图片资源。
66.在本技术实施例中,第一子系统还包括配置接口(如图1所示的配置api),其中,配置接口是指用于对应用或应用的功能组件的运行参数进行配置的应用程序接口,即用于接收针对应用的配置指令并基于配置指令对应用或应用的功能组件的运行参数进行配置,例如,对应用的依赖包进行配置或对应用的环境参数进行设置。
67.在一些场景中,一个应用由多个功能组件组成,且针对应用进行改动时,只需要对其中一个功能组件进行改动,例如应用a由功能组件a1、功能组件a2、功能组件a3、功能组件a4组成,针对应用a进行改动时,只需要改动功能组件a1,此时,为了降低功能组件a1的改动对功能组件a2、功能组件a3、功能组件a4的影响,因此,本技术实施例设置有第二类加载器,
其中,针对同一应用的不同功能组件,系统能够为每个功能组件创建独立的第二类加载器,例如,为功能组件a1创建一个第二类加载器的实例,为功能组件a2创建一个第二类加载器的实例,为功能组件a3创建一个第二类加载器的实例,为功能组件a4创建一个第二类加载器的实例,这样一来,功能组件a1、功能组件a2、功能组件a3、功能组件a4均运行在第二类加载器构建的独立环境中,也即功能组件a1、功能组件a2、功能组件a3、功能组件a4为独立加载,而不是被同一个第二类加载器统一加载,从而避免当其中一个功能改动时,由于该改动的功能组件与其他功能组件一起加载,进而需要对整体的功能组件重新发布并对整体的功能组件进行测试,例如,当功能组件a1改动时,只需要重新发布功能组件a1并对重新发布后的功能组件a1,而不需要重新发布功能组件a1和功能组件a2、功能组件a3、功能组件a4,进而由于功能组件a2、功能组件a3、功能组件a4没有重新发布,因此可不对功能组件a2、功能组件a3、功能组件a4进行测试,而只需要功能组件a1进行测试,从而降低了测量。
68.在本技术实施例中,第三子系统包括第二spring容器、组件插件和协议接口;第二spring容器用于响应针对应用的功能组件的对象进行管,即用于响应针对应用的功能组件的创建、装配或销毁指令;组件插件用于响应针对应用的功能组件的插件调用指令,进而基于调用指令为应用的功能组件提供插件;协议接口用于响应针对应用的功能组件的通信请求,以基于预设通信协议解析通信请求。
69.在一些场景中,第二类加载器在加载一个功能组件,除了加载功能组件的class文件,还会加载功能组件class文件运行所依赖的环境,即加载第二spring容器,例如,对于一个基于spring框架实现的功能组件,其class文件的运行需要依赖spring容器,因此第二类加载器也会加载一个spring容器,从而使得该功能组件的class能够基于spring框架限定的运行方式运行。
70.在本技术实施例中,通过加载功能组件的class文件运行所依赖的环境,能够避免基于设备默认的环境执行应用的class文件,从而提高程序的可移植性。作为一个示例性,现有技术中,当功能组件的运行依赖spring框架的jndi能力时,会出现当一个功能组件运行在设备a中,可以正常运行,而当将功能组件从设备a移植到设备b时,功能组件无法正常运行,具体原因为设备a所提供的环境与设备b提供的环境不一样,例如,设备a提供的环境能够支持jndi能力,而设备b不支持jndi能力。相比而言,本技术实施例,能够在加载功能组件的class文件,创建一个与class文件适配的容器,使得应用的class文件能够被正常运行,而不是采用设备默认的系统环境,从而避免应用的class文件与系统环境不适配这一问题,进而能够提高可移植性,例如,当功能组件部署在设备a中,会一个与class文件适配的容器,当功能组件部署在设备b中,也会创建一个与class文件适配的容器,从依赖系统自身提供的容器(环境)。
71.在一些场景中,第二类加载器还会加载用于支撑功能组件运行的组件插件和协议接口,其中,组件插件实现的插件功能以调用的形式被功能组件调用,这样一来,当功能组件有改动而需要重新发布时,由于组件插件不与功能组件耦合在一起,因此仅需要对功能组件进行重新部署和测试,而不需要对组件插件进行重新发布和不需要对组件插件进行测试,从而避免功能组件的改动对组件插件的影响和降低代码测试量。另一方面,协议接口用于以预设的协议编码或解码格式对数据进行处理,例如,当功能组件接收到服务器发送的数据时,可调用https协议接口对该数据进行解析,由于功能组件的改动一般情况下是不涉
及对数据通信协议的改动,也就是说数据通信协议一般情况是按照固定的处理步骤对数据进行,进而不需要改动,因此将协议接口独立与功能组件,能够在当功能组件有改动而需要重新发布时,因此仅需要对功能组件进行重新部署和测试,而不需要对协议接口进行重新发布和不需要对协议接口进行测试,从而避免功能组件的改动对协议接口的影响和降低代码测试量。
72.实施例二
73.请参阅图2,图2是本技术实施例公开的一种模块部署方法的流程示意图,如图2所示,本技术实施例的方法包括以下步骤:
74.101、当接收到针对应用的功能组件的部署指令时,基于部署指令调用模块部署接口;
75.102、基于模块部署接口完成对功能组件的部署。
76.在本技术实施例中,可选地,在基于模块部署接口完成对功能组件的部署之后,方法还包括:
77.获取针对待部署功能组件的测试指令;
78.基于测试指令对待部署功能组件进行测试,并得到测试结果。
79.实施例三
80.请参阅图3,图3是本技术实施例公开的一种电子设备的结构示意图,如图3所示,本技术实施例的电子设备包括:
81.存储有可执行程序代码的存储器201;
82.与存储器201耦合的处理器202;
83.处理器302调用存储器301中存储的可执行程序代码,执行如权本技术实施例的模块部署方法。
84.本技术实施例的电子设备通过执行模块部署方法,能够业务功能逻辑隔离,每个业务逻辑的改动互不影响,改动一个业务逻辑,因为有2层隔离机制,不会影响到其它业务逻辑,bug修复和功能增加非常方便可靠,而且不需全量回归测试,极大节省测试工作量,发布仅需发布修改的模块即可。因为所有的能力不依赖容器本身,只要是标准的web容器即可移植并正常启动,无兼容性的影响。
85.实施例四
86.本技术实施例公开一种存储介质,存储介质存储有计算机指令,计算机指令被调用时,用于执行本技术实施例的模块部署方法。
87.本技术实施例的存储介质通过执行模块部署方法,能够业务功能逻辑隔离,每个业务逻辑的改动互不影响,改动一个业务逻辑,因为有2层隔离机制,不会影响到其它业务逻辑,bug修复和功能增加非常方便可靠,而且不需全量回归测试,极大节省测试工作量,发布仅需发布修改的模块即可。因为所有的能力不依赖容器本身,只要是标准的web容器即可移植并正常启动,无兼容性的影响。
88.在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间
的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
89.另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
90.再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
91.需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
92.在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
93.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献