CN114296774A - 一种应用程序的存储方法、调用方法、装置及存储介质 - Google Patents
一种应用程序的存储方法、调用方法、装置及存储介质 Download PDFInfo
- Publication number
- CN114296774A CN114296774A CN202111521618.9A CN202111521618A CN114296774A CN 114296774 A CN114296774 A CN 114296774A CN 202111521618 A CN202111521618 A CN 202111521618A CN 114296774 A CN114296774 A CN 114296774A
- Authority
- CN
- China
- Prior art keywords
- program
- application
- application programs
- application program
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供了一种应用程序的存储方法、调用方法、装置及存储介质。包括:从具有相同配置信息的待存储应用程序中,选择出多个应用程序;创建与多个应用程序具有相同语言环境的程序存储区域;根据每一应用程序所需的存储空间,确定多个应用程序所需的总存储空间;根据总存储空间与程序存储区域对应的可用存储空间,从多个应用程序中确定出目标应用程序;根据目标应用程序所需的存储空间,将目标应用程序存储到程序存储区域中与该存储空间对应的存储位置。这样,本申请采用将多个应用程序存储至一个程序存储区域一起运行的方式,使得程序存储区域中多个应用程序通过一个端口运行并提供服务,从而可以减少内存资源和端口的占用以及节省运维开销。
Description
技术领域
本申请涉及计算机技术领域,尤其是涉及一种应用程序的存储方法、调用方法、装置及存储介质。
背景技术
Java是一门面向对象编程语言,Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
但是,现有使用Java进行编程时,Java程序的打包运行方式为一个Java应用程序打包成一独立运行的程序包。而这种打包方式,通常存在以下缺点:其一、后续运行多个Java应用程序时,每个应用程序对应的独立运行的程序包都会占用内存,增加内存的资源占用;其二,运维监控体系需要针对每个独立运行的程序包监控运维,增加运维开销;其三,每个Java应用程序必须单独使用一个端口,增加端口消耗。
发明内容
有鉴于此,本申请的目的在于提供一种应用程序的存储方法、调用方法、装置及存储介质,采用将多个应用程序存储至一个程序存储区域一起运行的方式,使得程序存储区域中多个应用程序通过一个端口运行并提供服务,从而可以减少内存资源和端口的占用以及节省运维开销。
本申请实施例提供了一种应用程序的存储方法,所述存储方法包括:
从具有相同配置信息的待存储应用程序中,选择出多个应用程序;
使用用于开发所述多个应用程序的程序开发工具,创建与所述多个应用程序具有相同语言环境的程序存储区域;
根据每一应用程序所需的存储空间,确定所述多个应用程序所需的总存储空间;
根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序;
根据所述目标应用程序所需的存储空间,将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置。
可选的,所述配置信息包括开发环境、运行环境以及文件格式;所述从具有相同配置信息的待存储应用程序中,选择出多个应用程序,包括以下方式之一:
从所述待存储应用程序中选择出,所述开发环境或所述运行环境或所述文件格式相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述运行环境都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述文件格式都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述运行环境和所述文件格式都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述运行环境和所述文件格式都相同的所述多个应用程序。
可选的,所述根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序,包括:
当所述总存储空间小于所述可用存储空间,将所述多个应用程序作为所述目标应用程序;
当所述总存储空间大于所述可用存储空间时,从所述多个应用程序中选出至少一个中间应用程序,当所述至少一个中间应用程序所占存储空间之和小于所述可用存储空间时,将所述至少一个中间应用程序作为所述目标应用程序。
可选的,所述从所述多个应用程序中选出至少一个中间应用程序,包括:
按照所述多个应用程序的执行顺序对每一应用程序进行排序,将处于排序范围内的应用程序作为中间应用程序。
本申请实施例还提供了一种应用程序的调用方法,所述调用方法还包括:
对接收到的调用应用程序的指令进行解析,得到用于指示存储待调用应用程序的存储地址、所述待调用应用程序的标识信息;
根据所述存储地址,确定所述待调用应用程序所在的目标程序存储区域;
根据所述标识信息,从所述目标程序存储区域中查找出所述待调用应用程序;
通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序。
可选的,所述通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序,包括:
当与所述目标程序存储区域对应的端口为空闲时,将所述端口作为所述目标端口;或者,
当与所述目标程序存储区域对应的端口为忙碌时,从其他处于空闲状态的端口中,选择运行环境与所述目标程序存储区域的开发环境相匹配的端口作为所述目标端口。
本申请实施例还提供了一种应用程序的存储装置,所述存储装置包括:
选择模块,用于从具有相同配置信息的待存储应用程序中,选择出多个应用程序;
创建模块,用于使用用于开发所述多个应用程序的程序开发工具,创建与所述多个应用程序具有相同语言环境的程序存储区域;
第一确定模块,用于根据每一应用程序所需的存储空间,确定所述多个应用程序所需的总存储空间;
第二确定模块,用于根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序;
存储模块,用于根据所述目标应用程序所需的存储空间,将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置。
可选的,所述配置信息包括开发环境、运行环境以及文件格式;所述选择模块在用于从具有相同配置信息的待存储应用程序中,选择出多个应用程序时,包括以下方式之一:
从所述待存储应用程序中选择出,所述开发环境或所述运行环境或所述文件格式相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述运行环境都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述文件格式都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述运行环境和所述文件格式都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述运行环境和所述文件格式都相同的所述多个应用程序。
可选的,所述第二确定模块在用于根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序时,所述第二确定模块用于:
当所述总存储空间小于所述可用存储空间,将所述多个应用程序作为所述目标应用程序;
当所述总存储空间大于所述可用存储空间时,从所述多个应用程序中选出至少一个中间应用程序,当所述至少一个中间应用程序所占存储空间之和小于所述可用存储空间时,将所述至少一个中间应用程序作为所述目标应用程序。
可选的,所述第二确定模块在用于从所述多个应用程序中选出至少一个中间应用程序时,所述第二确定模块用于:
按照所述多个应用程序的执行顺序对每一应用程序进行排序,将处于排序范围内的应用程序作为中间应用程序。
本申请实施例还提供了一种应用程序的调用装置,所述调用装置包括:
解析模块,用于对接收到的调用应用程序的指令进行解析,得到用于指示存储待调用应用程序的存储地址、所述待调用应用程序的标识信息;
第三确定模块,用于根据所述存储地址,确定所述待调用应用程序所在的目标程序存储区域;
查找模块,用于根据所述标识信息,从所述目标程序存储区域中查找出所述待调用应用程序;
调用模块,用于通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序。
可选的,所述调用模块在用于通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序时,所述调用模块用于:
当与所述目标程序存储区域对应的端口为空闲时,将所述端口作为所述目标端口;或者,
当与所述目标程序存储区域对应的端口为忙碌时,从其他处于空闲状态的端口中,选择运行环境与所述目标程序存储区域的开发环境相匹配的端口作为所述目标端口。
本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的方法的步骤。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的方法的步骤。
本申请实施例提供的一种应用程序的存储方法、调用方法、装置及存储介质,从具有相同配置信息的待存储应用程序中,选择出多个应用程序;使用用于开发所述多个应用程序的程序开发工具,创建与所述多个应用程序具有相同语言环境的程序存储区域;根据每一应用程序所需的存储空间,确定所述多个应用程序所需的总存储空间;根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序;根据所述目标应用程序所需的存储空间,将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置。
这样,本申请通过采用将多个应用程序存储至一个程序存储区域一起运行的方式,使得程序存储区域中多个应用程序通过一个端口运行并提供服务,从而可以减少内存资源和端口的占用以及节省运维开销。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例所提供的一种应用程序的存储方法的流程图;
图2为本申请实施例所提供的一种应用程序的调用方法的流程图;
图3为本申请实施例所提供的一种应用程序的存储装置的结构示意图;
图4为本申请实施例所提供的一种应用程序的调用装置的结构示意图;
图5为本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
现有使用Java进行编程时,Java程序的打包运行方式为一个Java应用程序打包成一独立运行的程序包。而这种打包方式,通常存在以下缺点:其一、后续运行多个Java应用程序时,每个应用程序对应的独立运行的程序包都会占用内存,增加内存的资源占用;其二,运维监控体系需要针对每个独立运行的程序包监控运维,增加运维开销;其三,每个Java应用程序必须单独使用一个端口,增加端口消耗。
基于此,本申请实施例提供了一种应用程序的存储方法,以减少内存资源和端口的占用以及节省运维开销。
请参阅图1,图1为本申请实施例所提供的一种应用程序的存储方法的流程图。如图1中所示,本申请实施例提供的应用程序的存储方法,包括:
S101、从具有相同配置信息的待存储应用程序中,选择出多个应用程序。
在一种可能的实施方式中,所述配置信息包括开发环境、运行环境以及文件格式;所述从具有相同配置信息的待存储应用程序中,选择出多个应用程序,包括以下方式之一:从所述待存储应用程序中选择出,所述开发环境或所述运行环境或所述文件格式相同的所述多个应用程序;从所述待存储应用程序中选择出,所述开发环境和所述运行环境都相同的所述多个应用程序;从所述待存储应用程序中选择出,所述开发环境和所述文件格式都相同的所述多个应用程序;从所述待存储应用程序中选择出,所述运行环境和所述文件格式都相同的所述多个应用程序;从所述待存储应用程序中选择出,所述开发环境和所述运行环境和所述文件格式都相同的所述多个应用程序。
这里,所述开发环境是指软件开发环境(Software Development Environment,SDE),软件开发环境是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件。所述运行环境为软件运行环境,狭义上讲是软件运行所需要的硬件支持,广义上也可以说是一个软件运行所要求的各种条件,包括软件环境和硬件环境。所述文件格式是指电脑为了存储信息而使用的对信息的特殊编码方式,是用于识别内部储存的资料。
这里,选择出的多个应用程序为至少两个应用程序,所述待存储应用程序可以为待存储应用程序的程序包或包体,选择出多个应用程序也可以为应用程序的程序包或包体。
在另一种可能的实施方式中,在选择出多个应用程序之前,所述存储方法还包括:接收程序存储指令,所述存储指令为用于确定待存储在一起的多个应用程序的指令,所述存储指令中包括应用程序的配置信息。其中,所述存储指令可以为程序开发人员发送的,具体可以为程序开发人员通过程序开发工具,输入代表将多个应用程序存储到一个存储区域中的编程语言,基于所述编程语言,执行终端接收到程序开发人员发送的存储指令,从而根据所述存储指令的指示从多个待存储应用程序中确定出需进行存储的多个应用程序。所述执行终端为可安装程序开发工具且可进行程序编写和运行的设备。
示例的,当使用的程序开发工具为Java开发工具时,可在Java开发工具中添加以下内容作为输入的存储指令,从而基于所述存储指令从待存储应用程序中确定出多个应用程序。
这里,在Java开发工具的程序编写界面中输入“dependencey”,并带有要存储的应用程序的程序名称或程序包名称。dependencey字样用于告诉程序开发工具所选择的应用程序,这样就可以选择出多个应用程序。
此外,所述相同配置信息还可以包含相同注解,所述注解为代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理,示例的,所述注解可以为@component。
在另一种可能的实施方式中,通过以下步骤创建应用程序,包括:响应于开发人员基于业务需求在程序开发工具上创建应用程序的操作,将创建完成的应用程序打包存储,生成候选程序;响应于接收到的程序运行指令,运行所述候选;当所述候选程序成功运行后,将所述候选程序确定为可被选择的应用程序。
这里,可被选择的应用程序为编写完成且能成功运行、并执行预设功能的程序。
S102、使用用于开发所述多个应用程序的程序开发工具,创建与所述多个应用程序具有相同语言环境的程序存储区域。
这里,创建的程序存储区域可以为一个程序包,所述程序存储区域的创建过程包括:根据所述程序开发工具创建程序存储区域规定的创建流程,响应于用户按照所述创建流程的要求进行的操作,创建与所述多个应用程序具有相同语言环境的所述程序存储区域。所述用户可以为程序开发人员也可以为运维人员等其他工作人员。
这里,所述程序存储区域将被用于存储选择出多个应用程序;所述程序开发工具为程序开发人员进行程序编写,生成应用程序即程序存储区域的工具。其中,当使用的编程语言为Java时,所述程序开发工具可以包括eclipse(Java集成开发环境)和IntelliJ IDEA(Java集成开发环境)等。当使用的编程语言为C语言时,所述程序开发工具可以包括VisualStudio Code等。
其中,创建的程序存储区域可以为不包含应用程序仅包含基本信息文件的程序存储区域,所述基本信息文件包括启动类文件以及配置文件等。所述程序存储区域的基本信息文件可为在通过所述程序开发工具创建程序存储区域时自动添加的。所述配置文件中可以记录有所述程序存储区域对应的预定端口信息。
示例的,可通过在程序开发工具中添加以下内容,完成在程序存储区域中添加配置文件,以及在所述配置文件中添加预定端口信息的操作。例如,通过程序开发工具,在程序存储区域中添加resources文件夹。通过程序开发工具,在resources文件夹中添加一个配置文件[application.properties],完成在程序存储区域中添加配置文件的操作。在配置文件[application.properties]中,输入“server.port=8082”,完成在所述配置文件中添加预定端口信息的操作。8082为预先分配给程序存储区域的预定端口的端口号。
S103、根据每一应用程序所需的存储空间,确定所述多个应用程序所需的总存储空间。
这里,选定出多个应用程序后,识别每个应用程序所需的存储空间,识别完成后,将每个应用程序所需的存储空间相加,确定出所述多个应用程序所需的总存储空间。
S104、根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序。
这里,可通过预先设置的方式确定程序存储区域对应的可用存储空间。也可以将程序存储区域所位于的磁盘等存储介质剩余的存储空间确定为程序存储区域对应的可用存储空间。
在一种可能的实施方式中,所述根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序,包括:当所述总存储空间小于所述可用存储空间,将所述多个应用程序作为所述目标应用程序;当所述总存储空间大于所述可用存储空间时,从所述多个应用程序中选出至少一个中间应用程序,当所述至少一个中间应用程序所占存储空间之和小于所述可用存储空间时,将所述至少一个中间应用程序作为所述目标应用程序。
在另一种可能的实施方式中,所述从所述多个应用程序中选出至少一个中间应用程序,包括:按照所述多个应用程序的执行顺序对每一应用程序进行排序,将处于排序范围内的应用程序作为中间应用程序。
这里,所述执行顺序可以为应用程序的优先级,可通过工作人员预先设置或根据使用频率(运行频率)设置等方式,确定每个应用程序的优先级。其中,当基于使用频率(运行频率)的方式确定应用程序的优先级时,可以按使用频率由高到低的顺序确定每个应用程序的优先级。
这里,可通过预先设置的方式确定排序范围,或者通过多个应用程序所需的总存储空间和可用存储空间的对应关系动态确定排序范围。
示例的,假设当通过预先设置的方式确定排序范围时,假设预先设定的排序范围为零至三,所述从所述多个应用程序中选出至少一个中间应用程序为:当所述多个应用程序的数量大于3时,将执行顺序靠前的前3个应用程序确定为中间程序;当所述多个应用程序的数量不大于3时,将全部多个应用程序确定为中间程序,而此时中间程序所需的总存储空间大于所述可用存储空间,故将执行顺序靠前的前2个应用程序确定为中间程序。
这里,当通过预先设置的方式确定排序范围以及通过排序范围确定出中间程序后,还需确定中间程序所需的总存储空间是否超过所述可用存储空间。当超过时,按执行顺序由低到高的顺序,将执行顺序靠后的中间程序依次删除,直至剩余的至少一个中间程序所需的总存储空间不超过所述可用存储空间,将剩余中间程序确定为目标应用程序。其中,因为实际工作需要,所创建的程序存储区域一定能存储至少一个应用程序。
假设当通过多个应用程序所需的总存储空间和可用存储空间的对应关系确定排序范围时,可以为将执行顺序靠前的应用程序所需的存储空间逐个相加,确定出多个总存储空间,从多个总存储空间中选出最大的存储空间(且该总存储空间小于可用存储空间)作为目标存储空间,并确定该目标存储空间是由几个应用程序所需的存储空间相加得到的,然后将该数量确定为排序范围。
S105、根据所述目标应用程序所需的存储空间,将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置。
这里,所述存储位置可以为程序存储区域中的指定存储应用程序的文件夹,也可以为预先划分好的子存储区域。
在一种可能的实施方式中,在将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置之后,所述存储方法还包括:响应于接收到的程序添加指令,获取至少一个待添加的应用程序,将所述至少一个待添加的应用程序存储至所述程序存储区域中对应的存储位置。
这里,接收到的程序添加指令可以为程序开发人员发送的,具体可以为程序开发人员通过程序开发工具,输入代表将至少一个新的应用程序添加到已经进行至少一次整合操作的程序存储区域中的编程语言,基于所述编程语言,执行终端接收程序添加指令。
然后,接收到程序添加指令后,因为程序添加指令中包括了用户所指示的需要进行添加处理的至少一个应用程序。根据所述程序添加指令的指示,从存储有待添加的应用程序的设备中查找并获取所述程序添加指令所指示的至少一个待添加的应用程序。
最后,基于程序添加指令查找并获取到至少一个应用程序后,将获取到至少一个新的应用程序存储至已包含多个应用程序的程序存储区域中,存储完成并完成添加操作,得到一个包括至少三个应用程序的目标程序存储区域。
请参阅图2,图2为本申请实施例所提供的一种应用程序的调用方法的流程图。如图2中所示,本申请实施例提供的应用程序的调用方法,包括:
S201、对接收到的调用应用程序的指令进行解析,得到用于指示存储待调用应用程序的存储地址、所述待调用应用程序的标识信息。
这里,所述存储待调用应用程序的存储地址为程序存储区域对应的存储地址或存储路径;所述待调用应用程序的标识信息包括所要调用的程序包或程序名称等。
S202、根据所述存储地址,确定所述待调用应用程序所在的目标程序存储区域。
这里,将所述调用应用程序的指令的解析结果中的指示存储所述待调用应用程序的存储地址确定为所述待调用应用程序所在的目标程序存储区域。
S203、根据所述标识信息,从所述目标程序存储区域中查找出所述待调用应用程序。
这里,可使用目标程序存储区域中的启动类的组件扫描,扫描所述目标程序存储区域中,当扫描到具有所述标识信息的应用程序时,则查找到了所述待调用应用程序。
其中,所述启动类中添加的组件扫描可以为在创建目标程序存储区域初添加的,也可以为在目标程序存储区域存储至多个应用程序后启动待调用应用程序前添加的。
示例的,当所述目标程序存储区域为通过eclipse(Java集成开发环境)创建完成,所述目标程序存储区域中的启动类中添加的组件扫描可以为@ComponentScan(basePackages={"com.test.*"}),用于对存储到目标程序存储区域中的应用程序进行扫描查找,查找到待调用应用程序,并对该调用应用程序进行启动操作。例如,在所述程序开发工具中输入以下内容,完成组件扫描的添加:
@SpringBootApplication
@ComponentScan(basePackages={“com.test.*”})
S204、通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序。
在一种可能的实施方式中,所述通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序,包括:当与所述目标程序存储区域对应的端口为空闲时,将所述端口作为所述目标端口;或者当与所述目标程序存储区域对应的端口为忙碌时,从其他处于空闲状态的端口中,选择运行环境与所述目标程序存储区域的开发环境相匹配的端口作为所述目标端口。
这里,所述目标程序存储区域对应的目标端口可以为动态配置,以保证待调用应用程序运行或提供对外服务时,可以有可使用的空闲端口。
这里,可通过以下方式确定空闲状态的端口:根据待调用应用程序的应用类型和/或所提供服务类型和/或所使用通讯协议和/或所使用编程语言等信息,确定所述应用程序所能使用的所有端口信息,并从所有端口信息中,确定出所能使用的至少一个空闲端口信息。其中,确定的端口可包括4系端口、8系端口等多种类型端口。
这样,在确定出空闲端口后,可以选择运行环境与所述目标程序存储区域的开发环境相匹配的任一端口作为所述目标端口。
示例的,可通过以下方式调用目标程序存储区域中程序调用指令所指示的待调用应用程序。在浏览器端分别输入http://localhost:8082/ProjectA与http://localhost:8082/ProjectB。这里,“http://localhost”为目标程序存储区域对应的存储地址,“8082”为所述目标程序存储区域中所包括的运行程序在启动时将在预定运行环境下通过的目标端口,“ProjectA或ProjectB”为程序调用指令所指示的待调用的应用程序的标识信息。
此外,当没有扫描到程序调用指令所指示的待调用的应用程序时,可以向用户端反馈一个调用失败信息,以供用户重新输入程序调用指令。
故本申请中的调用方式可以为通过目标程序存储区域的存储地址+目标程序存储区域对应的调用端口+待调用的应用程序的程序名称进行程序调用。
需要说明的是,现有程序调用方式为待调用的应用程序的存储地址+待调用的应用程序对应的调用端口+待调用的应用程序的程序名称进行程序的调用。但这种调用方式存在以下技术问题:每个独立运行的包都会占用内存,内存消耗大;每个应用程序均需要占用一个独立的端口,造成端口使用紧张;运维监控体系需要针对每个运行的程序包做监控运维,运维开销大。而本申请实现了将多个程序包存储到一起运行的方式,打包成整体后只会占用一个包的内存,节省资源使用;多个应用程序可共用一个端口号,不会存在端口紧张的问题;并且使用一个程序包运行部署后,可以只操作一个程序包,降低运维监控的难度。
本申请实施例提供的一种应用程序的存储方法。从具有相同配置信息的待存储应用程序中,选择出多个应用程序;使用用于开发所述多个应用程序的程序开发工具,创建与所述多个应用程序具有相同语言环境的程序存储区域;根据每一应用程序所需的存储空间,确定所述多个应用程序所需的总存储空间;根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序;根据所述目标应用程序所需的存储空间,将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置。
这样,本申请通过采用将多个应用程序存储至一个程序存储区域一起运行的方式,使得程序存储区域中多个应用程序通过一个端口运行并提供服务,从而可以减少内存资源和端口的占用以及节省运维开销。
请参阅图3,图3为本申请实施例所提供的一种应用程序的存储装置的结构示意图。如图3中所示,所述存储装置300包括:
选择模块310,用于从具有相同配置信息的待存储应用程序中,选择出多个应用程序;
创建模块320,用于使用用于开发所述多个应用程序的程序开发工具,创建与所述多个应用程序具有相同语言环境的程序存储区域;
第一确定模块330,用于根据每一应用程序所需的存储空间,确定所述多个应用程序所需的总存储空间;
第二确定模块340,用于根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序;
存储模块350,用于根据所述目标应用程序所需的存储空间,将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置。
可选的,所述配置信息包括开发环境、运行环境以及文件格式;所述选择模块310在用于从具有相同配置信息的待存储应用程序中,选择出多个应用程序时,包括以下方式之一:
从所述待存储应用程序中选择出,所述开发环境或所述运行环境或所述文件格式相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述运行环境都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述文件格式都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述运行环境和所述文件格式都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述运行环境和所述文件格式都相同的所述多个应用程序。
可选的,所述第二确定模块340在用于根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序时,所述第二确定模块340用于:
当所述总存储空间小于所述可用存储空间,将所述多个应用程序作为所述目标应用程序;
当所述总存储空间大于所述可用存储空间时,从所述多个应用程序中选出至少一个中间应用程序,当所述至少一个中间应用程序所占存储空间之和小于所述可用存储空间时,将所述至少一个中间应用程序作为所述目标应用程序。
可选的,所述第二确定模块340在用于从所述多个应用程序中选出至少一个中间应用程序时,所述第二确定模块340用于:
按照所述多个应用程序的执行顺序对每一应用程序进行排序,将处于排序范围内的应用程序作为中间应用程序。
请参阅图4,图4为本申请实施例所提供的一种应用程序的调用装置的结构示意图。如图4中所示,所述调用装置400包括:
解析模块410,用于对接收到的调用应用程序的指令进行解析,得到用于指示存储待调用应用程序的存储地址、所述待调用应用程序的标识信息;
第三确定模块420,用于根据所述存储地址,确定所述待调用应用程序所在的目标程序存储区域;
查找模块430,用于根据所述标识信息,从所述目标程序存储区域中查找出所述待调用应用程序;
调用模块440,用于通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序。
可选的,所述调用模块440在用于通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序时,所述调用模块440用于:
当与所述目标程序存储区域对应的端口为空闲时,将所述端口作为所述目标端口;或者,
当与所述目标程序存储区域对应的端口为忙碌时,从其他处于空闲状态的端口中,选择运行环境与所述目标程序存储区域的开发环境相匹配的端口作为所述目标端口。
请参阅图5,图5为本申请实施例所提供的一种电子设备的结构示意图。如图5中所示,所述电子设备500包括处理器510、存储器520和总线530。
所述存储器520存储有所述处理器510可执行的机器可读指令,当电子设备500运行时,所述处理器510与所述存储器520之间通过总线530通信,所述机器可读指令被所述处理器510执行时,可以执行如上述图1-图2所示方法实施例中的方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1至图2所示方法实施例中的方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种应用程序的存储方法,其特征在于,所述存储方法包括:
从具有相同配置信息的待存储应用程序中,选择出多个应用程序;
使用用于开发所述多个应用程序的程序开发工具,创建与所述多个应用程序具有相同语言环境的程序存储区域;
根据每一应用程序所需的存储空间,确定所述多个应用程序所需的总存储空间;
根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序;
根据所述目标应用程序所需的存储空间,将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置。
2.根据权利要求1所述的方法,其特征在于,所述配置信息包括开发环境、运行环境以及文件格式;所述从具有相同配置信息的待存储应用程序中,选择出多个应用程序,包括以下方式之一:
从所述待存储应用程序中选择出,所述开发环境或所述运行环境或所述文件格式相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述运行环境都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述文件格式都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述运行环境和所述文件格式都相同的所述多个应用程序;
从所述待存储应用程序中选择出,所述开发环境和所述运行环境和所述文件格式都相同的所述多个应用程序。
3.根据权利要求1所述的方法,其特征在于,所述根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序,包括:
当所述总存储空间小于所述可用存储空间,将所述多个应用程序作为所述目标应用程序;
当所述总存储空间大于所述可用存储空间时,从所述多个应用程序中选出至少一个中间应用程序,当所述至少一个中间应用程序所占存储空间之和小于所述可用存储空间时,将所述至少一个中间应用程序作为所述目标应用程序。
4.根据权利要求3所述的存储方法,其特征在于,所述从所述多个应用程序中选出至少一个中间应用程序,包括:
按照所述多个应用程序的执行顺序对每一应用程序进行排序,将处于排序范围内的应用程序作为中间应用程序。
5.一种应用程序的调用方法,其特征在于,所述调用方法包括:
对接收到的调用应用程序的指令进行解析,得到用于指示存储待调用应用程序的存储地址、所述待调用应用程序的标识信息;
根据所述存储地址,确定所述待调用应用程序所在的目标程序存储区域;
根据所述标识信息,从所述目标程序存储区域中查找出所述待调用应用程序;
通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序。
6.根据权利要求5所述的方法,其特征在于,所述通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序,包括:
当与所述目标程序存储区域对应的端口为空闲时,将所述端口作为所述目标端口;或者,
当与所述目标程序存储区域对应的端口为忙碌时,从其他处于空闲状态的端口中,选择运行环境与所述目标程序存储区域的开发环境相匹配的端口作为所述目标端口。
7.一种应用程序的存储装置,其特征在于,所述存储装置包括:
选择模块,用于从具有相同配置信息的待存储应用程序中,选择出多个应用程序;
创建模块,用于使用用于开发所述多个应用程序的程序开发工具,创建与所述多个应用程序具有相同语言环境的程序存储区域;
第一确定模块,用于根据每一应用程序所需的存储空间,确定所述多个应用程序所需的总存储空间;
第二确定模块,用于根据所述总存储空间与所述程序存储区域对应的可用存储空间,从所述多个应用程序中确定出目标应用程序;
存储模块,用于根据所述目标应用程序所需的存储空间,将所述目标应用程序存储到所述程序存储区域中与该存储空间对应的存储位置。
8.一种应用程序的调用装置,其特征在于,所述调用装置包括:
解析模块,用于对接收到的调用应用程序的指令进行解析,得到用于指示存储待调用应用程序的存储地址、所述待调用应用程序的标识信息;
第三确定模块,用于根据所述存储地址,确定所述待调用应用程序所在的目标程序存储区域;
查找模块,用于根据所述标识信息,从所述目标程序存储区域中查找出所述待调用应用程序;
调用模块,用于通过与所述目标程序存储区域对应的目标端口调用所述待调用应用程序。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至4和/或5至6任一所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至4和/或5至6任一所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111521618.9A CN114296774A (zh) | 2021-12-13 | 2021-12-13 | 一种应用程序的存储方法、调用方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111521618.9A CN114296774A (zh) | 2021-12-13 | 2021-12-13 | 一种应用程序的存储方法、调用方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114296774A true CN114296774A (zh) | 2022-04-08 |
Family
ID=80967529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111521618.9A Pending CN114296774A (zh) | 2021-12-13 | 2021-12-13 | 一种应用程序的存储方法、调用方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114296774A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860204A (zh) * | 2022-04-27 | 2022-08-05 | 恒宝股份有限公司 | 程序处理、运行方法、装置、终端、智能卡及存储介质 |
-
2021
- 2021-12-13 CN CN202111521618.9A patent/CN114296774A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860204A (zh) * | 2022-04-27 | 2022-08-05 | 恒宝股份有限公司 | 程序处理、运行方法、装置、终端、智能卡及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976761B (zh) | 软件开发工具包的生成方法、装置及终端设备 | |
CN110231994B (zh) | 内存分析方法、装置和计算机可读存储介质 | |
CN114546738B (zh) | 服务器通用测试方法、系统、终端及存储介质 | |
CN107015904B (zh) | 堆栈的保护方法及装置 | |
CN107748689B (zh) | 一种网页展示方法和装置 | |
CN111736913B (zh) | 类加载方法和装置 | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN114296774A (zh) | 一种应用程序的存储方法、调用方法、装置及存储介质 | |
CN113760266B (zh) | 一种功能模块文件的创建方法、创建装置和电子设备 | |
CN108228842B (zh) | Docker镜像库文件存储方法、终端、设备以及存储介质 | |
US20130152049A1 (en) | Warning of register and storage area assignment errors | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
US20030088865A1 (en) | Apparatus and method for incrementally performing remote loading | |
CN111488144A (zh) | 一种数据处理方法以及设备 | |
CN111240987A (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN111352631A (zh) | 一种接口兼容性检测方法及装置 | |
CN111158777A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN113805861B (zh) | 基于机器学习的代码生成方法、代码编辑系统及存储介质 | |
CN114860204A (zh) | 程序处理、运行方法、装置、终端、智能卡及存储介质 | |
CN115048082A (zh) | 微前端系统构建方法、装置、服务器及可读存储介质 | |
CN108874468B (zh) | 应用程序的加载方法、装置、计算机设备及存储介质 | |
CN114721781A (zh) | 一种微服务部署方法、装置、计算机设备及存储介质 | |
CN115705294A (zh) | 用于获取函数调用信息的方法、装置、电子设备和介质 | |
CN112181853A (zh) | 程序调试方法、装置及系统 | |
CN113076084A (zh) | 资源文件处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |