一种内存优化方法、装置、设备及介质与流程

文档序号:32215971发布日期:2022-11-16 07:33阅读:39来源:国知局
一种内存优化方法、装置、设备及介质与流程

1.本技术涉及计算机技术领域,特别是涉及一种内存优化方法、装置、设备及介质。


背景技术:

2.tomcat是一种轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用。在一个tomcat实例中可以部署多个服务,一个tomcat实例就是一个进程,多个服务共享该进程的内存空间,用于节省服务器总的内存空间。比如tomcat实例总共分配2g的堆内存空间,那么所有服务总共只能使用2g的空间。然而,当某一个服务的内存使用超过限制,整个tomcat服务都会出现oom(out of memory error,内存溢出)的内存异常,导致所有服务都不可用。
3.申请内容
4.鉴于以上所述现有技术的缺点,本技术的目的在于提供一种内存优化方法、装置、设备及介质,可以提高内存的有效利用率。
5.第一方面,本技术实施例提供了一种内存优化方法,该方法包括:
6.获取内存中的至少一个服务,将各服务的空闲状态时长与预设空闲状态时长进行比较,确定目标服务;
7.对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中;
8.若接收到针对目标服务的操作请求信息,则将暂存至预设存储器中目标服务加载到内存中,并执行目标服务。
9.于本技术的一实施例中,获取第一服务最后一次进入空闲状态的时刻,第一服务为至少一个服务中的任意一个服务;将当前时刻与第一服务最后一次进入空闲状态的时刻进行差值运算,得到第一服务的空闲状态时长;若第一服务的空闲状态时长大于或等于预设空闲状态时长,则确定第一服务为目标服务。
10.于本技术的一实施例中,对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中之后,获取目标服务的请求日志;若请求日志指示目标服务在预设时间段内运行,并且目标服务在预设时间段运行的次数达到预设阈值,则在接收操作请求信息之前的第一时长内将目标服务加载到内存中;在预设时间段内执行目标服务。
11.于本技术的一实施例中,在预设时间段内执行目标服务之后,在预设时间段结束之后的第二时长内对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中。
12.于本技术的一实施例中,目标服务为定时服务,目标服务在定时时刻开始执行;
13.于本技术的一实施例中,对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中之后,获取定时时刻;在定时时刻之前将目标服务加载到内存中。
14.于本技术的一实施例中,目标服务包括预设标识,预设标识用于指示目标服务具备暂存功能,预设标识是在目标服务没有后台守护线程的情况下对目标服务标记的。
15.于本技术的一实施例中,定时服务在运行时存在后台守护线程;
16.于本技术的一实施例中,在定时时刻之前将目标服务加载到内存中之后,检测目标服务是否存在后台守护线程;若否,则在将目标服务进行序列化,暂存至预设存储器中。
17.第二方面,本技术实施例提供了一种内存优化装置,包括:
18.获取单元,用于获取内存中的至少一个服务,将各服务的空闲状态时长与预设空闲状态时长进行比较,确定目标服务;
19.处理单元,用于对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中;
20.若收发单元接收到针对目标服务的操作请求信息,则存储单元用于将暂存至预设存储器中目标服务加载到内存中,并执行目标服务。
21.第三方面,本技术实施例提供了一种内存优化设备,包括处理器、存储器和通信接口,处理器、存储器和通信接口相互连接,其中,存储器用于存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用程序指令,执行如第一方面描述的内存优化方法。
22.第四方面,本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时使处理器执行如第一方面描述的内存优化方法。
23.本技术实施例中,服务器可以获取内存中的至少一个服务,将各服务的空闲状态时长与预设空闲状态时长进行比较,确定目标服务;对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中;若接收到针对目标服务的操作请求信息,则将暂存至预设存储器中目标服务加载到内存中,并执行目标服务。通过该方法,可以提高内存的有效利用率,也可以增强内存的鲁棒性,保障所有服务进程的正常运行。
附图说明
24.图1显示为本技术实施例提供的一种tomcat的顶层架构示意图;
25.图2显示为本技术实施例提供的一种内存优化方法的流程示意图;
26.图3显示为本技术实施例提供的一种servicea和serviceb活跃时间的示意图;
27.图4显示为本技术实施例提供的一种服务中可暂存的组件示意图;
28.图5显示为本技术实施例提供的一种内存优化装置的框图;
29.图6显示为本技术实施例提供的一种内存优化设备的实体结构简化示意图。
具体实施方式
30.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本技术的其他优点与功效。本技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
31.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本技术的基本构想,遂图式中仅显示与本技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
32.首先对本技术实施例设计的专业术语及领域知识进行描述:
33.一个tomcat实例可以部署多个服务,每个服务在tomcat实例中又分别是一个service实例,所以服务之间按service的维度隔离,tomcat架构中几个核心组件简介:
34.server:表示一个tomcat实例,也就是一个进程。
35.service:表示一个服务,是对外提供服务的,一个service可以有多个connector(连接器)和一个container(容器)。
36.connector:用于接收网络请求的组件,每个connector对应一个端口,所以一个服务可以同时在多个端口上提供服务,并且不同端口可以支持不同的网络协议。
37.container:用于封装业务代码的组件,connector接收请求之后就交给container组件处理,container中就是相关业务代码的封装,根据请求执行相关业务逻辑。
38.其他组件:jasper,naming,session等,每个service都会有一套这些组件。
39.jvm(java virtual machine,java虚拟机)是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
40.daemon(守护线程)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护线程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。
41.请参阅图1,图1为本技术实施例提供的一种tomcat的顶层架构示意图。如图1所示,该顶层架构包括server,即tomcat实例,该server中包括多个service。其中,一个service中可以包括多个connector、一个container、jasper、naming、session、logging、jmx和其他部分。本技术实施例中,一个tomcat实例可以部署30余个service,service可以包括用户管理,设备管理,字典服务等。
42.为了可以提高内存的有效利用率,本技术实施例提供了一种内存优化方法、装置、设备及介质,下面进一步对本技术实施例提供的一种内存优化方法进行详细介绍。
43.请参阅图2,图2为本技术实施例提供的一种内存优化方法的流程示意图,该方法可以应用于图1所示的实施环境,并由该实施环境中的tomcat服务器具体执行。应理解的是,该方法也可以适用于其它的示例性实施环境,并由其它实施环境中的设备具体执行,本实施例不对该方法所适用的实施环境进行限制。
44.其中,该内存优化方法可以包括如下步骤s210~s240,具体为:
45.s210、获取内存中的至少一个服务,将各服务的空闲状态时长与预设空闲状态时长进行比较,确定目标服务。
46.具体地,服务器可以获取第一服务最后一次进入空闲状态的时刻,其中,该第一服务为至少一个服务中的任意一个服务,空闲状态指的是服务处于未执行的状态。进而,可以将当前时刻与第一服务最后一次进入空闲状态的时刻进行差值运算,得到第一服务的空闲状态时长。其中,该最后一次进入空闲状态的时刻可以是根据第一服务最后一次接收到操作请求信息的时刻确定的,即第一服务最后一次接收到操作请求信息的时刻加上第一服务执行的时长就可以得到第一服务最后一次进入空闲状态的时刻。若第一服务的空闲状态时长大于或等于预设空闲状态时长,则说明该第一服务已经长时间未被执行,可以确定第一服务为目标服务。
47.于本技术的一实施例中,可以扩展tomcat的server.xml配置文件中的service标
签,增加配置项unusedtime,即预设空闲状态时长。该unusedtime可以指示该某个服务达到多长时间没有接收到任何操作请求信息就可以进行序列化处理。该unusedtime可以是本领域技术人员配置的,例如6小时、24小时等,若不配置,则可以默认设置为24小时。
48.于本技术的一实施例中,假设第一服务的名称为servicea,该servicea的空闲状态时长达到unusedtime=2天时,则可以确定该第一服务为目标服务,那么对应的代码可以为:
49.《service name=”servicea”unusedtime=”2d”》。
50.于本技术的一实施例中,可以在tomcat中增加一个后台任务进程,该进程周期性地执行,例如可以是一小时执行一次,可以用于检测各个服务的处于空闲状态的时长是否达到配置的unsedtime。若达到了,则可以对该服务进行序列化处理。
51.s220、对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中。
52.于本技术的一实施例中,序列化处理的方式可以是通过jdk自带的原生序列化方式,也可以使用google提供的protobuf方式,本技术实施例不作限定。另外,该预设存储器可以是磁盘。
53.于本技术的一实施例中,当达到暂存时间条件时,将如图4中的container,japser等组件(灰色部分组件)暂存到磁盘中,connector组件保持在内存中,当connector接收到请求时,将这些组件再从磁盘中加载回内存。这些组件的class信息存储在元空间中,而class对应的实例信息存储在堆内存中,因此暂存后,可以释放这两部分内存空间。
54.于本技术的一实施例中,服务器可以获取目标服务的请求日志;若请求日志指示目标服务在预设时间段内运行,并且目标服务在预设时间段运行的次数达到预设阈值,则在接收操作请求信息之前的第一时长内将目标服务加载到内存中。其中,预设时间段、预设阈值和第一时长可以是本领域技术人员设置的。预设时间段可以是每天的一段时间,例如可以是每天的11:00-15:00,预设阈值也可以30天。第一时长是指提前多久将磁盘中的目标服务加载到内存中,该第一时长可以是1小时、半小时等,本技术实施例不作限定。
55.这样,就可以将目标服务占用的内存释放出来,以使其他的服务可以分配到对应的内存空间,进而得到执行。可以避免不使用的服务占内存空间。这些释放的内存空间可以供其他服务使用,这样其他服务的内存可用空间就提高了,服务的运行速度也会相应改善。这些被持久化到磁盘的内存数据重新加载回内存就可以直接使用,无需重新执行jvm类加载过程,所以在时间上比重新启动一个服务会快很多。
56.也就是说,服务器可以检测出某个服务每天、每周和每个月的活跃时间段,当每次检测的时间窗口包含不活跃服务的时间段时,则将这些服务直接序列化处理暂存到预设存储器中当每次检测的时间窗口包括服务活跃时间时,将该服务提前加载回内存中,让该服务处于就绪状态,用户使用时不会有任何感知。进一步地,在预设时间段内执行目标服务。
57.示例性的,如图3所示为本技术实施例提供的一种servicea和serviceb活跃时间的示意图。servicea和serviceb两个服务的不同的活跃时间。通过分析请求日志发现,servicea和serviceb最近一个月的活跃时间分别是11:00

15:00和12:00

18:00,则可以在10:00将servicea从磁盘(即预设存储器)加载到内存中,在11:00将将serviceb从磁盘(即预设存储器)加载到内存中;在16:00将servicea从内存暂存到磁盘中;在19:00将serviceb
从内存暂存到磁盘中。
58.示例性的,作为定时服务的目标服务可以是servicea,在实际应用中,若将servicea定时在每天凌晨1点执行,则可以有如下的配置:
59.《service name=”servicea”》
60.《!
‑‑
表示每天凌晨1点会执行定时服务
‑‑

61.《scheduletasktime time=”0 0 1**?”》
62.《/service》
63.于本技术的一实施例中,目标服务可以是定时服务,即目标服务在定时时刻开始执行。该定时时刻可以保存在tomcat实例中。服务器对目标服务进行序列化处理,使目标服务所对应的信息暂存至预设存储器中之后,可以获取该定时时刻,并在定时时刻之前将目标服务加载到内存中。这样可以保证目标服务正常运行。
64.于本技术的一实施例中,目标服务可以包括预设标识,该预设标识用于指示目标服务具备暂存功能,该预设标识是在目标服务没有后台守护线程(即后台daemon线程)的情况下对目标服务标记的。其中,该预设标识可以是“可暂存”的标记,此时的目标服务可以是定时服务,也可以是上述在预设时间段运行,且在预设时间段的运行次数超过预设阈值的目标服务。具体的,可以扩展server.xml中的service配置,增加scheduletasktime配置标签,可以用于标记该服务是否包含执行定时服务的后台daemon线程。tomcat启动服务时,会记录每个服务是否包含定时服务,以及定时服务的执行时间,对没有后台daemon线程的服务打上“可暂存”的标记,当达到暂存时间条件时,直接将服务暂存到磁盘。
65.s230、若接收到针对目标服务的操作请求信息,则将暂存至预设存储器中目标服务加载到内存中,并执行目标服务。
66.根据tomcat架构可以知道,一个服务包括多个connector,一个container和一套其他的tomcat组件,而服务的业务代码主要封装在各自的container中,connector用于接收用户操作请求。所以在持久化service的内存对象时,需要保留connector组件,当目标服务被暂存到磁盘后,如果connector组件接收到对该目标服务的操作请求信息后,可以将目标服务从磁盘加载回内存,然后继续执行相关业务逻辑。
67.于本技术的一实施例中,将暂存至预设存储器中目标服务加载到内存中可以是通过反序列化磁盘中的目标服务来实现的,可以使目标服务达到可用状态。
68.示例性的,servicea在每天凌晨1点和凌晨5点定时执行,且servicea的空闲状态时长达到一小时,则可以对servicea进行序列化处理,并将servicea对应的信息保存至磁盘中。假设第一时长为那么可以在0点和4点将servicea从磁盘中加载到内存中。具体的配置可以如下:
69.《service name=”servicea”unusedtime=”1h”》
70.《!
‑‑
表示每天凌晨1点和5点会执行定时服务
‑‑

71.《scheduletasktime time=”0 0 1**?”》
72.《scheduletasktime time=”0 0 5**?”》
73.《/service》
74.于本技术的一实施例中,定时服务在运行时存在后台守护线程。当目标服务为定时服务时,在定时时刻之前将目标服务加载到内存中之后,还可以检测目标服务是否存在
后台守护线程。若否,则在将目标服务进行序列化,暂存至预设存储器中。
75.通过本技术实施例,可以达到以下的有益效果:
76.1、优化整个tomcat内存使用率。当tomcat中部署了30个service时,如果有其中20个service是不常用的服务,那就可以暂存20个服务到磁盘中。暂存后能节省的内存空间估算如下:
77.service额外需要的堆内存=部署service后的总堆内存-tomcat原始堆内存;
78.service额外需要的元空间=部署service后的总元空间-tomcat原始元空间内存;
79.(serviceheap

tomcatheap)*n+(servicemeta

tomcatmeta)*n;
80.其中,serviceheap:表示部署service后,总共占用的堆内存总量;
81.servicemeta:表示部署service后,总共占用的元空间内存总量;
82.tomcatheap:表示纯净tomcat启动后,占用的堆内存数量;
83.tomcatmeta:表示纯净tomcat启动后,占用的元空间内存数量;
84.n:表示可暂存到磁盘的服务数量。
85.按照前面叙述的service及tomcat内存空间占用情况,暂存后能节省的内存空间大约为:30个服务运行的基本内存空间大约为3000m左右,暂存20个之后大约可以节省2000m的内存空间。
86.2、暂存不活跃服务后,其他活跃服务可使用的内存空间也就增大了,间接提高了其他常用服务的运行效率。
87.3、分析tomcat请求日志,可以得出用户使用不同服务的时间段,在这些时间段之前提前恢复好已暂存的服务,对于用户来说不会有任何感知,对于提高用户体验满意度有很大帮助。
88.请参阅图5,图5是本技术实施例提供的一种内存优化装置的框图。该装置可以包括获取单元510、处理单元520、收发单元530和存储单元540。该装置可以应用于图1所示的实施环境。该装置也可以适用于其它的示例性实施环境,并具体配置在其它设备中,本实施例不对该装置所适用的实施环境进行限制。
89.如图5所示,该示例性的内存优化装置包括:
90.获取单元510,用于获取内存中的至少一个服务,将各服务的空闲状态时长与预设空闲状态时长进行比较,确定目标服务;
91.处理单元520,用于对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中;
92.若收发单元530接收到针对目标服务的操作请求信息,则存储单元540用于将暂存至预设存储器中目标服务加载到内存中,并执行目标服务。
93.于本技术的一实施例中,获取单元510,还用于获取第一服务最后一次进入空闲状态的时刻,第一服务为至少一个服务中的任意一个服务;处理单元520,还用于将当前时刻与第一服务最后一次进入空闲状态的时刻进行差值运算,得到第一服务的空闲状态时长;若第一服务的空闲状态时长大于或等于预设空闲状态时长,则确定第一服务为目标服务。
94.于本技术的一实施例中,处理单元520,还用于对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中之后,获取目标服务的请求日志;若请求日志
指示目标服务在预设时间段内运行,并且目标服务在预设时间段运行的次数达到预设阈值,则在接收操作请求信息之前的第一时长内将目标服务加载到内存中;在预设时间段内执行目标服务。
95.于本技术的一实施例中,处理单元520,还用于在预设时间段内执行目标服务之后,在预设时间段结束之后的第二时长内对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中。
96.于本技术的一实施例中,目标服务为定时服务,目标服务在定时时刻开始执行;
97.于本技术的一实施例中,处理单元520,还用于对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中之后,获取定时时刻;在定时时刻之前将目标服务加载到内存中。
98.于本技术的一实施例中,目标服务包括预设标识,预设标识用于指示目标服务具备暂存功能,预设标识是在目标服务没有后台守护线程的情况下对目标服务标记的。
99.于本技术的一实施例中,定时服务在运行时存在后台守护线程;
100.于本技术的一实施例中,处理单元520,还用于在定时时刻之前将目标服务加载到内存中之后,检测目标服务是否存在后台守护线程;存储单元540,还用于若否,则在将目标服务进行序列化,暂存至预设存储器中。
101.请参见图6,图6为本技术实施例提供的一种内存优化设备的实体结构简化示意图,该装置包括处理器610、存储器620以及通信接口630,该处理器610、存储器620以及通信接口630通过一条或多条通信总线连接。
102.处理器610被配置为支持通信装置执行图1中方法相应的功能。该处理器610可以是中央处理器(central processing unit,cpu),网络处理器(network processor,np),硬件芯片或者其任意组合。
103.存储器620用于存储程序代码等。存储器620可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram);存储器620也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);存储器620还可以包括上述种类的存储器的组合。
104.通信接口630用于收发数据、信息或消息等,也可以描述为收发器、收发电路等。
105.在本技术实施例中,该处理器610可以调用存储器620中存储的程序代码以执行以下操作:
106.处理器610可以调用存储器620中存储的程序代码获取内存中的至少一个服务,将各服务的空闲状态时长与预设空闲状态时长进行比较,确定目标服务;
107.对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中;
108.若调用通信接口630接收到针对目标服务的操作请求信息,则将暂存至预设存储器中目标服务加载到内存中,并执行目标服务。
109.于本技术的一实施例中,处理器610可以调用存储器620中存储的程序代码获取第一服务最后一次进入空闲状态的时刻,第一服务为至少一个服务中的任意一个服务;将当前时刻与第一服务最后一次进入空闲状态的时刻进行差值运算,得到第一服务的空闲状态时长;若第一服务的空闲状态时长大于或等于预设空闲状态时长,则确定第一服务为目标
服务。
110.于本技术的一实施例中,处理器610可以调用存储器620中存储的程序代码对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中之后,获取目标服务的请求日志;若请求日志指示目标服务在预设时间段内运行,并且目标服务在预设时间段运行的次数达到预设阈值,则在接收操作请求信息之前的第一时长内将目标服务加载到内存中;在预设时间段内执行目标服务。
111.于本技术的一实施例中,处理器610可以调用存储器620中存储的程序代码在预设时间段内执行目标服务之后,在预设时间段结束之后的第二时长内对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中。
112.于本技术的一实施例中,目标服务为定时服务,目标服务在定时时刻开始执行;
113.于本技术的一实施例中,处理器610可以调用存储器620中存储的程序代码对目标服务进行序列化处理,以使目标服务所对应的信息暂存至预设存储器中之后,获取定时时刻;在定时时刻之前将目标服务加载到内存中。
114.于本技术的一实施例中,目标服务包括预设标识,预设标识用于指示目标服务具备暂存功能,预设标识是在目标服务没有后台守护线程的情况下对目标服务标记的。
115.于本技术的一实施例中,定时服务在运行时存在后台守护线程;
116.于本技术的一实施例中,处理器610可以调用存储器620中存储的程序代码在定时时刻之前将目标服务加载到内存中之后,检测目标服务是否存在后台守护线程;若否,则在将目标服务进行序列化,暂存至预设存储器中。
117.本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,
118.计算机程序用于使计算机执行如上述实施例中的任一项的方法。
119.本技术实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本技术实施例的实施例一所包含步骤的指令(instructions)。
120.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
121.上述计算机可读介质可以是电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
122.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
123.附图中的流程图和框图,图示了按照本公开各种实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
124.上述实施例仅例示性说明本技术的原理及其功效,而非用于限制本技术。任何熟悉此技术的人士皆可在不违背本技术的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本技术所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本技术的权利要求所涵盖。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1