CN111399830A - 一种应用程序容量监控方法、装置、电子设备及存储介质 - Google Patents

一种应用程序容量监控方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111399830A
CN111399830A CN202010183179.4A CN202010183179A CN111399830A CN 111399830 A CN111399830 A CN 111399830A CN 202010183179 A CN202010183179 A CN 202010183179A CN 111399830 A CN111399830 A CN 111399830A
Authority
CN
China
Prior art keywords
dependency
library
libraries
target
dependency library
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.)
Granted
Application number
CN202010183179.4A
Other languages
English (en)
Other versions
CN111399830B (zh
Inventor
李贺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN202010183179.4A priority Critical patent/CN111399830B/zh
Publication of CN111399830A publication Critical patent/CN111399830A/zh
Application granted granted Critical
Publication of CN111399830B publication Critical patent/CN111399830B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Abstract

本申请提供了一种应用程序容量监控方法、装置、电子设备及存储介质,其中,首先结合目标依赖库所在的依赖树,获取目标依赖库对应的全部下级依赖库,然后,通过对比各个下级依赖库的父依赖库,确定目标依赖库的独有依赖库,以根据目标依赖库和目标依赖库对应的全部独有依赖库来监控引用目标依赖库后应用程序增加的体积。可见,本申请所提供的应用程序容量监控方法可以通过比对各个下级依赖库的父依赖库来准确确定独有依赖库,而无需逐级判断每一下级依赖库是否还存在子依赖库,是否还被其它依赖库所依赖,不受依赖库之间复杂的依赖关系的影响,从而有效提高独有依赖库的确定效率和准确率,进而准确监控应用程序引用目标依赖库之后容量的变化。

Description

一种应用程序容量监控方法、装置、电子设备及存储介质
技术领域
本申请涉及应用程序开发技术领域,尤其涉及一种应用程序容量监控方法、装置电子设备及存储介质。
背景技术
一个操作系统项目中会包含多个依赖库,每个依赖库都包含相应的项目代码,开发人员基于该操作系统项目开发应用程序时,可以直接引用这些依赖库,而无需重新编写项目代码,从而提高开发效率和降低整体项目维护成本。这些依赖库之间存在依赖关系,对于一个目标依赖库来说,它所引用的某一依赖库仅被该目标依赖库所依赖,则称这个依赖库为目标依赖库的独有依赖库。开发人员在开发应用程序时,需要监控应用程序容量的变化,也就是需要计算引用目标依赖库之后应用程序的容量会增加多少,相应的,就是计算该目标依赖库的容量是多少,由于目标依赖库的容量由该目标依赖库及其对应的全部独有依赖库的容量组成,因此,只有准确确定目标依赖库的独有依赖库,才能够准确监控在引用目标依赖库之后应用程序容量的变化。
目标依赖库存在对应的依赖树,依赖树中展示了目标依赖库与项目中其余依赖库的依赖关系,因此,可以通过人工查询依赖树来确定目标依赖库的独有依赖库。但是,通常,依赖树非常复杂,人工查询效率低,而且需要通过对比各个依赖库之间的依赖关系来确定独有依赖库,而这种依赖关系又是比较混乱的,因此,人工判别效率低且准确率较低,这样,会降低确定目标依赖库的独有依赖库的准确率,从而难以准确监控应用程序在引用目标依赖库之后容量的变化。
发明内容
本申请提供了一种独有依赖库确定方法、装置、电子设备及存储介质,通过准确确定目标依赖库的独有依赖库,进而准确监控应用程序引用目标依赖库之后容量的变化。
第一方面,本申请提供了一种应用程序容量监控方法,所述应用程序引用目标依赖库,包括:
根据目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库,所述目标依赖库为开发所述应用程序时所引用的所述应用程序所在项目中的依赖库,所述依赖树用于展示所述目标依赖库与所述项目中其余依赖库之间的依赖关系,所述下级依赖库为在所述依赖树中位于所述目标依赖库下级,且与所述目标依赖库存在依赖关系的依赖库;
逐一判断每一所述下级依赖库是否为所述目标依赖库的独有依赖库,以确定所述目标依赖库的独有依赖库;其中,所述独有依赖库为对应的全部父依赖库均被包含于由所述目标依赖库和所述下级依赖库组成的集合中的所述下级依赖库,所述父依赖库为为具有依赖关系的相邻级别的依赖库中位于上级的依赖库,其中,在每一次判断结束后,如果所述下级依赖库不是独有依赖库,则从所述集合中删除所述下级依赖库;
根据所述目标依赖库以及所述目标依赖库对应的全部所述独有依赖库监控引用所述目标依赖库后所述应用程序增加的容量。
在本发明实施例第一方面一种可能的实现方式中,所述结合目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库包括:
获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
以每一所述依赖库为主依赖库,根据所述主依赖库对应的预设符号和所述预设符号对应的缩进字符量,生成所述主依赖库对应的依赖列表,所述依赖列表由所述主依赖库以及所述主依赖库的父依赖库和子依赖库组成,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
在本发明实施例第一方面一种可能的实现方式中,所述确定所述目标依赖库的独有依赖库包括:
获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
根据每一所述预设符号提取对应的依赖库的名称;
将每一所述依赖库转换为一个节点,在所述节点上标识对应的名称,并将所述依赖库之间的依赖关系转换为单箭头,得到用图例表示的依赖树,其中,所述单箭头由父依赖库指向子依赖库,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
以每一所述依赖库为主依赖库,根据所述主依赖库在所述用图例表示的依赖树中对应的节点和单箭头,生成所述依赖库对应的依赖列表,所述依赖列表由所述主依赖库对应的节点、以及所述主依赖库的父依赖库对应的节点和子依赖库对应的节点组成;
根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
在本发明实施例第一方面一种可能的实现方式中,所述逐一判断每一所述下级依赖库是否为所述目标依赖库的独有依赖库,以确定所述目标依赖库的独有依赖库包括:
汇总所述目标依赖库对应的下级依赖库,生成对应的集合;
从所述列表中逐一删除非独有依赖库,得到独有依赖库,所述非独有依赖库为所对应的父依赖库部分或者全部不属于所述集合。
第二方面,本申请提供了一种独有依赖库确定装置,包括:
下级依赖库获取单元,用于根据目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库,所述目标依赖库为开发所述应用程序时所引用的所述应用程序所在项目中的依赖库,所述依赖树用于展示所述目标依赖库与所述项目中其余依赖库之间的依赖关系,所述下级依赖库为在所述依赖树中位于所述目标依赖库下级,且与所述目标依赖库存在依赖关系的依赖库;
独有依赖库确定单元,用于逐一判断每一所述下级依赖库是否为所述目标依赖库的独有依赖库,以确定所述目标依赖库的独有依赖库;其中,所述独有依赖库为对应的全部父依赖库均被包含于由所述目标依赖库和所述下级依赖库组成的集合中的所述下级依赖库,所述父依赖库为具有依赖关系的相邻级别的依赖库中位于上级的依赖库,其中,在每一次判断结束后,如果所述下级依赖库不是独有依赖库,则从所述集合中删除所述下级依赖库;
容量监控单元,用于根据所述目标依赖库以及所述目标依赖库对应的全部所述独有依赖库监控引用所述目标依赖库后所述应用程序增加的容量。
在本发明实施例第二方面一种可能的实现方式中,所述下级依赖库获取单元包括:
第一获取单元,用于获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
第一生成单元,用于以每一所述依赖库为主依赖库,根据所述主依赖库对应的预设符号和所述预设符号对应的缩进字符量,生成所述主依赖库对应的依赖列表,所述依赖列表由所述主依赖库以及所述主依赖库的父依赖库和子依赖库组成,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
第一确定单元,用于根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
在本发明实施例第二方面一种可能的实现方式中,所述下级依赖库获取单元包括:
第二获取单元,用于获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
名称提取单元,用于根据每一所述预设符号提取对应的依赖库的名称;
转换单元,用于将每一所述依赖库转换为一个节点,在所述节点上标识对应的名称,并将所述依赖库之间的依赖关系转换为单箭头,得到用图例表示的依赖树,其中,所述单箭头由父依赖库指向子依赖库,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
第二生成单元,用于以每一所述依赖库为主依赖库,根据所述主依赖库在所述用图例表示的依赖树中对应的节点和单箭头,生成所述依赖库对应的依赖列表,所述依赖列表由所述主依赖库对应的节点、以及所述主依赖库的父依赖库对应的节点和子依赖库对应的节点组成;
第二确定单元,用于根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
在本发明实施例第二方面一种可能的实现方式中,所述独有依赖库确定单元包括:
汇总单元,用于汇总所述目标依赖库对应的下级依赖库,生成对应的集合;
比对单元,用于从所述集合中逐一删除非独有依赖库,得到独有依赖库,所述非独有依赖库为所对应的父依赖库部分或者全部不属于所述列表。
第三方面,本申请提供了一种电子设备,所述电子设备包括:
处理器,以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行所述的应用程序容量监控方法。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的应用程序容量监控方法。
由以上技术可知,本申请提供了一种应用程序容量监控方法、装置、电子设备及存储介质,其中,首先结合目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库,然后,通过对比各个下级依赖库的父依赖库,确定所述目标依赖库的独有依赖库,以根据所述目标依赖库和所述目标依赖库对应的全部所述独有依赖库来监控引用所述目标依赖库后所述应用程序增加的体积。可见,本申请所提供的应用程序容量监控方法可以通过比对各个下级依赖库的父依赖库来准确确定独有依赖库,而无需逐级判断每一下级依赖库是否还存在子依赖库,是否还被其它依赖库所依赖,不受依赖库之间复杂的依赖关系的影响,从而有效提高独有依赖库的确定效率和准确率,进而准确监控应用程序引用目标依赖库之后容量的变化。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用程序容量监控方法的流程图;
图2为本申请实施例提供的一种依赖树的示意图;
图3提供了一种确定目标依赖库的下级依赖库的方法的流程图;
图4为本申请实施例提供了一种将依赖树转化为用图例表示的依赖树的方法的流程图;
图5为申请实施例提供的一种抽象后的依赖树的示意图;
图6为本申请实施例提供的一种依赖列表的示意图;
图7为本申请实施例提供的一种确定独有依赖库的方法的流程图;
图8为本申请实施例提供的应用程序容量监控装置实施例一的结构示意图;
图9为本申请实施例提供的应用程序容量监控装置实施例二的结构示意图;
图10为本申请实施例提供的应用程序容量监控装置实施例三的结构示意图;
图11为本申请实施例提供的应用程序容量监控装置实施例四的结构示意图;
图12为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一个操作系统项目中会包含多个依赖库,每个依赖库都包含相应的项目代码,开发人员基于该操作系统项目开发应用程序时,可以直接引用这些依赖库,而无需重新编写项目代码,从而提高开发效率和降低整体项目维护成本。这些依赖库之间存在依赖关系,对于一个目标依赖库来说,它所引用的某一依赖库仅被该目标依赖库所依赖,则称这个依赖库为目标依赖库的独有依赖库。开发人员在开发应用程序时,需要监控应用程序容量的变化,也就是需要计算引用目标依赖库之后应用程序的容量会增加多少,相应的,就是计算该目标依赖库的容量是多少,由于目标依赖库的容量由该目标依赖库及其对应的全部独有依赖库的容量组成,因此,只有准确确定目标依赖库的独有依赖库,才能够准确监控在引用目标依赖库之后应用程序容量的变化。
目标依赖库存在对应的依赖树,依赖树中展示了目标依赖库与项目中其余依赖库的依赖关系,因此,可以通过人工查询依赖树来确定目标依赖库的独有依赖库。但是,通常,依赖树非常复杂,人工查询效率低,而且需要通过对比各个依赖库之间的依赖关系来确定独有依赖库,而这种依赖关系又是比较混乱的,因此,人工判别效率低且准确率较低,这样,会降低确定目标依赖库的独有依赖库的准确率,从而难以准确监控应用程序在引用目标依赖库之后容量的变化。
为了解决上述问题,本申请提供了一种应用程序容量监控方法,图1为本申请实施例提供的一种应用程序容量监控方法的流程图,如图1所示,所述方法包括:
S1、根据目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库,所述目标依赖库为开发所述应用程序时所引用的所述应用程序所在项目中的依赖库,所述依赖树用于展示所述目标依赖库与所述项目中其余依赖库之间的依赖关系,所述下级依赖库为在所述依赖树中位于所述目标依赖库下级,且与所述目标依赖库存在依赖关系的依赖库。
在项目中,技术人员通过代码构建各个依赖库之间的依赖关系,进而建立项目的运行框架。图2为本申请实施例提供的一种依赖树的示意图,如图2所示,每一行代码代表项目所引用的一个依赖库,每一行的开头具有不同的缩进字符量,通过这种缩进字符量可以看出来各个依赖库之间的依赖关系,例如依赖库B的缩进字符量小于依赖库A,且依赖库B为依赖库A的下级,因此,可以认为依赖库B为依赖库A的子依赖库,反之,依赖库A为依赖库B的父依赖库。再例如,依赖库G和依赖库H的缩进字符量均小于依赖库B,且依赖库G和依赖库H均为依赖库B的下级依赖库,因此,可以认为依赖库G和依赖库H为依赖库B的子依赖库,反之,依赖库B为依赖库G和依赖库H的父依赖库。进一步区分,可以认为依赖库B与依赖库A具有直接依赖关系,依赖库G和依赖库H与依赖库B具有直接依赖关系,依赖库G和依赖库H与依赖库A具有间接依赖关系,由于依赖库B、依赖库G和依赖库H在层级上均为依赖库A的下级,且依赖库B、依赖库G和依赖库H均与依赖库A具有直接或者间接依赖关系,因此,可以认为依赖库B、依赖库G和依赖库H均为依赖库A的下级依赖库。同理,可以获知其余依赖库的依赖关系,此处不再赘述。
可见,可以通过目标依赖库所在的依赖树确定目标依赖库的依赖关系,进而确定目标依赖树的下级依赖库。具体地,图3提供了一种确定目标依赖库的下级依赖库的方法的流程图,如图3所示,所述方法包括:
S101、获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
S102、以每一所述依赖库为主依赖库,根据所述主依赖库对应的预设符号和所述预设符号对应的缩进字符量,生成所述主依赖库对应的依赖列表,所述依赖列表由所述主依赖库以及所述主依赖库的父依赖库和子依赖库组成,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
S103、根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
可以使用Gradle命令获取目标依赖库所在的依赖树,即由构建项目时所使用的依赖库以及这些依赖库之间的依赖关系组成的代码。使用Gradle命令可以将与依赖树相关的代码全部输出到一个独立的文件中,进而可以在这个文件中进行后续查找独有依赖库的操作,而无需担心项目中其余代码对查找过程的干扰和影响。为了准确计算引用目标依赖库所增加的体积,优选地,在release打包模式,即最终版本的打包模式下获取依赖树。
以图2提供的依赖树为例,可见每一行代码的开头均对应一个符号,在本实施例中将该符号定义为预设符号,在本实施例中预设符号为“+”、“丨”、“\”,具体地,“+”和“\”均标识一个依赖库,其中,“\”标识隶属同一个父依赖库的子依赖库中的最后一个子依赖库,“+”对应其余子依赖库。“丨”表示对齐,用于协助对齐每一级的依赖库。需要注意的是,除本实施例中提供的预设符号以外还可以使用其它符号进行标识。
由上文可知,每一预设符号均具有对应的缩进字符量,如图2所示,“-”可以用来标识缩进字符量,结合“丨”可以准确确定每一预设符号对应的缩进字符量,进而可以通过预设符号以及预设符号对应的缩进字符量的组合来判断各个依赖库之间的依赖关系,具体见上文此处不再赘述。
为了便于后续查找依赖库,可以进一步将依赖树进行梳理,即将依赖树划分为多个依赖列表,具体地,将一个依赖库、该依赖库的父依赖库和子依赖库组成一个依赖列表,这样,就可以快速确定每一依赖库的父依赖库和子依赖库。例如,如图2所示,结合上文判断依赖库依赖关系的方法,可以获得依赖库A1对应的依赖列表,即包括依赖库A1、父依赖库root、子依赖库C和子依赖库D。以此,可以得到依赖树中每一依赖库对应的依赖列表,这样,可以将各个依赖列表相结合,确定任一依赖库对应的下级依赖库。
例如,依赖库C对应的依赖列表包括依赖库C、父依赖库A、父依赖库A1、子依赖库I;依赖库D对应的依赖列表包括依赖库D、父依赖库A1、子依赖库I、子依赖库J;依赖库I对应的依赖列表包括依赖库I和父依赖库C;依赖库J对应的依赖列表包括依赖库J、父依赖库D和父依赖库E。
如果开发应用所引用的依赖库,即目标依赖库为依赖库A1,那么结合依赖库A1、依赖库C、依赖库D、依赖库I和依赖库J对应的依赖列表,就可以快速根据各自对应的父依赖库和子依赖库确定出依赖库A1的下级依赖库为依赖库C、依赖库D、依赖库I和依赖库J。具体地,可以通过判断一个依赖列表中的父依赖库与另一依赖列表中的子依赖库是否存在相同的依赖库,来确定依赖库A1的下级依赖库。
为了更加直观地展示依赖树,可以将代码形式的依赖树转换为图例形式的依赖树,具体地,图4为本申请实施例提供了一种将依赖树转化为用图例表示的依赖树的方法的流程图,如图4所示,所述方法包括:
S111、获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
S112、根据每一所述预设符号提取对应的依赖库的名称;
S113、将每一所述依赖库转换为一个节点,在所述节点上标识对应的名称,并将所述依赖库之间的依赖关系转换为单箭头,得到用图例表示的依赖树,其中,所述单箭头由父依赖库指向子依赖库,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
S114、以每一所述依赖库为主依赖库,根据所述主依赖库在所述用图例表示的依赖树中对应的节点和单箭头,生成所述依赖库对应的依赖列表,所述依赖列表由所述主依赖库对应的节点、以及所述主依赖库的父依赖库对应的节点和子依赖库对应的节点组成;
S115、根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
图5为申请实施例提供的一种抽象后的依赖树的示意图。如图5所示,将原本复杂的代码形式的依赖库抽象为节点,并在节点上标识依赖库的名称,由于依赖关系为单向有序的,因此,相邻两级依赖库之间的依赖关系可以用单箭头来标识,这样就可以将图2所展示的依赖树转化为图4所展示的更加形象的依赖树。
相应的,可以根据图5所示的依赖树中的节点、以及节点之间的箭头指向关系,确定每一节点对应的依赖列表,进一步地,为了更加形象的展示依赖列表,也可以利用图例的形式展示依赖列表。图6为本申请实施例提供的一种依赖列表的示意图,根据图6可以更加快速地确定每个节点的父节点(父依赖库)和子节点(子依赖库),进一步地,可以结合多个依赖列表确定目标节点(目标依赖库)对应的下级节点(下级依赖库)。
S2、逐一判断每一所述下级依赖库是否为所述目标依赖库的独有依赖库,以确定所述目标依赖库的独有依赖库;其中,所述独有依赖库为对应的全部父依赖库均被包含于由所述目标依赖库和所述下级依赖库组成的集合中的所述下级依赖库,所述父依赖库为具有依赖关系的相邻级别的依赖库中位于上级的依赖库,其中,在每一次判断结束后,如果所述下级依赖库不是独有依赖库,则从所述集合中删除所述下级依赖库。
在确定目标依赖库的全部下级依赖库之后,就可以从这些下级依赖库中确定目标依赖库的独有依赖库,判断的规则即为独有依赖库所对应的全部父依赖库必须全部属于由目标依赖库和下级依赖库组成的集合。
根据上文获得的依赖列表,可以快速确定目标依赖库的每一下级依赖库对应的父依赖库,接上例,依赖库C对应父依赖库A和父依赖库A1;依赖库D对应父依赖库A1;依赖库I对应父依赖库C和父依赖库D;依赖库J对应父依赖库D和父依赖库E。此时,可以通过比对各父依赖库与目标依赖库和下级依赖库,可以确定独有依赖库。
具体地,图7为本申请实施例提供的一种确定独有依赖库的方法的流程图,如图7所示,所述方法包括:
S201、汇总所述目标依赖库对应的下级依赖库,生成对应的集合;
S202、从所述集合中逐一删除非独有依赖库,得到独有依赖库,所述非独有依赖库为所对应的父依赖库部分或者全部不属于所述集合。
接上例,首先将目标依赖库(依赖库A1)、以及依赖库A1对应的全部下级依赖库,依赖库C、依赖库D、依赖库I、依赖库J生成一个新的集合,一个新的列表,也可以是同时存入一个新的文件,或者利用特定标识来代表这些目标依赖库和下级依赖库,或者采用其它标识方法,以便于确定独有依赖库,而不受其余依赖库以及依赖关系的影响。
具体地,依赖库C的父依赖库A并不在集合中,因此,C不是独有依赖库,在该判断过程结束之后,需要从集合中删除依赖库C,然后再进行下一下级依赖库的判断,例如进行依赖库D的判断,此时,集合则包括依赖库A1、依赖库D、依赖库I和依赖库J。按照上述方式逐一判断依赖库C、依赖库D、依赖库I和依赖库J,最终可以确定依赖库D为依赖库A1的独有依赖库。可见,本申请所提供的独有依赖库的确定方法,可以通过少量地对比操作,准确判断独有依赖库,而无需对每一级中地每一依赖库进行单独地判断,以防依赖库之间复杂地依赖关系影响独有依赖库地确定准确性。
S3、根据所述目标依赖库以及所述目标依赖库对应的全部所述独有依赖库监控引用所述目标依赖库后所述应用程序增加的容量。
在确定目标依赖库的独有依赖库之后,就可以通过计算目标依赖库与其对应的全部独有依赖库的容量加和,得到引用该目标依赖库之后,应用程序需要对应增加的体积,从而准确监控应用程序容量的变化。
为了进一步提高上述过程的自动化程度,可以为上述过程设计相应的执行脚本,这样可以通过输入目标依赖库的名称,就可以自动比对和确定独有依赖库。其中,可以采用Python脚本、Java脚本、Gradle脚本等进行设计。同时,本申请所提供的方法适用于Android、iOS等操作系统。
图8为本申请实施例提供的应用程序容量监控装置实施例一的结构示意图,所述装置包括:
下级依赖库获取单元1,用于结合目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库,所述目标依赖库为开发应用程序时所引用的所述应用程序所在项目中的依赖库,所述依赖树用于展示所述目标依赖库与所述项目中其余依赖库之间的依赖关系,所述下级依赖库为在所述依赖树中位于所述目标依赖库下级,且与所述目标依赖库存在依赖关系的依赖库;
独有依赖库确定单元2,用于逐一判断每一所述下级依赖库是否为所述目标依赖库的独有依赖库,以确定所述目标依赖库的独有依赖库,并利用所述独有依赖库计算引用所述目标依赖库后在所述应用程序增加的体积,所述独有依赖库对应的全部父依赖库均被包含于由所述目标依赖库和所述下级依赖库组成的集合中,所述父依赖库为与依赖库具有依赖关系的相邻上级依赖库,其中,在每一次判断结束后,如果所述下级依赖库不是独有依赖库,则从所述集合中删除所述下级依赖库。
图9为本申请实施例提供的应用程序容量监控装置实施例二的结构示意图,所述下级依赖库获取单元1包括:
第一获取单元11,用于获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
第一生成单元12,用于以每一所述依赖库为主依赖库,根据所述主依赖库对应的预设符号和所述预设符号对应的缩进字符量,生成所述主依赖库对应的依赖列表,所述依赖列表由所述主依赖库以及所述主依赖库的父依赖库和子依赖库组成,所述子依赖库为与依赖库具有依赖关系的相邻下级依赖库;
第一确定单元13,用于结合各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
图10为本申请实施例提供的应用程序容量监控装置实施例三的结构示意图,所述下级依赖库获取单元1包括:
第二获取单元14,用于获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
名称提取单元15,用于根据每一所述预设符号提取对应的依赖库的名称;
转换单元16,用于将每一所述依赖库转换为一个节点,在所述节点上标识对应的名称,并将所述依赖库之间的依赖关系转换为单箭头,得到用图例表示的依赖树,其中,所述单箭头由父依赖库指向子依赖库,所述子依赖库为与依赖库具有依赖关系的相邻下级依赖库;
第二生成单元17,用于以每一所述依赖库为主依赖库,根据所述主依赖库在所述用图例表示的依赖树中对应的节点和单箭头,生成所述依赖库对应的依赖列表,所述依赖列表由所述主依赖库对应的节点、以及所述主依赖库的父依赖库对应的节点和子依赖库对应的节点组成;
第二确定单元18,用于结合各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
图11为本申请实施例提供的应用程序容量监控装置实施例四的结构示意图,所述独有依赖库确定单元2包括:
汇总单元21,用于汇总所述目标依赖库对应的下级依赖库,生成对应的集合;
比对单元22,用于从所述列表中逐一删除非独有依赖库,得到独有依赖库,所述非独有依赖库为所对应的父依赖库部分或者全部不属于所述列表。
图12为本发明实施例提供的电子设备的硬件结构示意图,该电子设备包括:存储器101和处理器102;
存储器101,用于存储计算机程序;
处理器102,用于执行存储器存储的计算机程序,以实现上述实施例中的应用程序容量监控方法。具体可以参见前述方法实施例中的相关描述。
可选地,存储器101既可以是独立的,也可以跟处理器102集成在一起。
当所述存储器101是独立于处理器102之外的器件时,所述电子设备还可以包括:
总线103,用于连接所述存储器101和处理器102。
本发明实施例提供的电子设备可用于执行上述实施例中任一所示的应用程序容量监控方法,其实现方式和技术效果类似,本发明实施例此处不再赘述。
本发明实施例还提供一种可读存储介质,可读存储介质中存储有计算机程序,当消息发送的装置的至少一个处理器执行该计算机程序时,消息发送的装置执行上述实施例任一所述的应用程序容量监控方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于以计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种应用程序容量监控方法,所述应用程序引用目标依赖库,其特征在于,包括:
根据所述目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库,所述目标依赖库为开发所述应用程序时所引用的所述应用程序所在项目中的依赖库,所述依赖树用于展示所述目标依赖库与所述项目中其余依赖库之间的依赖关系,所述下级依赖库为在所述依赖树中位于所述目标依赖库下级,且与所述目标依赖库存在依赖关系的依赖库;
逐一判断每一所述下级依赖库是否为所述目标依赖库的独有依赖库,以确定所述目标依赖库的独有依赖库;其中,所述独有依赖库为对应的全部父依赖库均被包含于由所述目标依赖库和所述下级依赖库组成的集合中的所述下级依赖库,所述父依赖库为具有依赖关系的相邻级别的依赖库中位于上级的依赖库,其中,在每一次判断结束后,如果所述下级依赖库不是独有依赖库,则从所述集合中删除所述下级依赖库;
根据所述目标依赖库以及所述目标依赖库对应的全部所述独有依赖库监控引用所述目标依赖库后所述应用程序增加的容量。
2.根据权利要求1所述的方法,其特征在于,所述根据目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库包括:
获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
以每一所述依赖库为主依赖库,根据所述主依赖库对应的预设符号和所述预设符号对应的缩进字符量,生成所述主依赖库对应的依赖列表,所述依赖列表由所述主依赖库以及所述主依赖库的父依赖库和子依赖库组成,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
3.根据权利要求1所述的方法,其特征在于,所述根据目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库包括:
获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
根据每一所述预设符号提取对应的依赖库的名称;
将每一所述依赖库转换为一个节点,在所述节点上标识对应的名称,并将所述依赖库之间的依赖关系转换为单箭头,得到用图例表示的依赖树,其中,所述单箭头由父依赖库指向子依赖库,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
以每一所述依赖库为主依赖库,根据所述主依赖库在所述用图例表示的依赖树中对应的节点和单箭头,生成所述依赖库对应的依赖列表,所述依赖列表由所述主依赖库对应的节点、以及所述主依赖库的父依赖库对应的节点和子依赖库对应的节点组成;
根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
4.根据权利要求2或3所述的方法,其特征在于,所述逐一判断每一所述下级依赖库是否为所述目标依赖库的独有依赖库,以确定所述目标依赖库的独有依赖库包括:
汇总所述目标依赖库对应的全部下级依赖库,生成对应的集合;
从所述集合中逐一删除非独有依赖库,得到独有依赖库,所述非独有依赖库为所对应的父依赖库部分或者全部不属于所述集合。
5.一种应用程序容量监控装置,所述应用程序引用目标依赖库,其特征在于,包括:
下级依赖库获取单元,用于根据目标依赖库所在的依赖树,获取所述目标依赖库对应的全部下级依赖库,所述目标依赖库为开发所述应用程序时所引用的所述应用程序所在项目中的依赖库,所述依赖树用于展示所述目标依赖库与所述项目中其余依赖库之间的依赖关系,所述下级依赖库为在所述依赖树中位于所述目标依赖库下级,且与所述目标依赖库存在依赖关系的依赖库;
独有依赖库确定单元,用于逐一判断每一所述下级依赖库是否为所述目标依赖库的独有依赖库,以确定所述目标依赖库的独有依赖库;其中,所述独有依赖库为对应的全部父依赖库均被包含于由所述目标依赖库和所述下级依赖库组成的集合中的所述下级依赖库,所述父依赖库为具有依赖关系的相邻级别的依赖库中位于上级的依赖库,其中,在每一次判断结束后,如果所述下级依赖库不是独有依赖库,则从所述集合中删除所述下级依赖库;
容量监控单元,用于根据所述目标依赖库以及所述目标依赖库对应的全部所述独有依赖库监控引用所述目标依赖库后所述应用程序增加的容量。
6.根据权利要求5所述的装置,其特征在于,所述下级依赖库获取单元包括:
第一获取单元,用于获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
第一生成单元,用于以每一所述依赖库为主依赖库,根据所述主依赖库对应的预设符号和所述预设符号对应的缩进字符量,生成所述主依赖库对应的依赖列表,所述依赖列表由所述主依赖库以及所述主依赖库的父依赖库和子依赖库组成,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
第一确定单元,用于根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
7.根据权利要求5所述的装置,其特征在于,所述下级依赖库获取单元包括:
第二获取单元,用于获取所述依赖树中的每一预设符号和每一所述预设符号对应的缩进字符量,所述预设符号用于标识依赖库,所述预设符号与所述预设符号对应的缩进字符量的组合用于标识各所述依赖库之间的依赖关系;
名称提取单元,用于根据每一所述预设符号提取对应的依赖库的名称;
转换单元,用于将每一所述依赖库转换为一个节点,在所述节点上标识对应的名称,并将所述依赖库之间的依赖关系转换为单箭头,得到用图例表示的依赖树,其中,所述单箭头由父依赖库指向子依赖库,所述子依赖库为具有依赖关系的相邻级别的依赖库中位于下级的依赖库;
第二生成单元,用于以每一所述依赖库为主依赖库,根据所述主依赖库在所述用图例表示的依赖树中对应的节点和单箭头,生成所述依赖库对应的依赖列表,所述依赖列表由所述主依赖库对应的节点、以及所述主依赖库的父依赖库对应的节点和子依赖库对应的节点组成;
第二确定单元,用于根据各所述依赖列表,确定所述目标依赖库对应的全部下级依赖库。
8.根据权利要求6或7所述的装置,其特征在于,所述独有依赖库确定单元包括:
汇总单元,用于汇总所述目标依赖库对应的下级依赖库,生成对应的集合;
比对单元,用于从所述集合中逐一删除非独有依赖库,得到独有依赖库,所述非独有依赖库为所对应的父依赖库部分或者全部不属于所述列表。
9.一种电子设备,其特征在于,所述电子设备包括:
处理器,以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-4任一所述的应用程序容量监控方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4任一所述的应用程序容量监控方法。
CN202010183179.4A 2020-03-16 2020-03-16 一种应用程序容量监控方法、装置、电子设备及存储介质 Active CN111399830B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010183179.4A CN111399830B (zh) 2020-03-16 2020-03-16 一种应用程序容量监控方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010183179.4A CN111399830B (zh) 2020-03-16 2020-03-16 一种应用程序容量监控方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111399830A true CN111399830A (zh) 2020-07-10
CN111399830B CN111399830B (zh) 2023-03-31

Family

ID=71431043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010183179.4A Active CN111399830B (zh) 2020-03-16 2020-03-16 一种应用程序容量监控方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111399830B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543294A (zh) * 2022-12-06 2022-12-30 麒麟软件有限公司 一种Linux系统上动态链接库可视化依赖树的生成方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932309A (zh) * 2018-06-15 2018-12-04 上海陆家嘴国际金融资产交易市场股份有限公司 跨平台数据库管理方法、装置、计算机设备和存储介质
CN110245279A (zh) * 2019-05-06 2019-09-17 阿里巴巴集团控股有限公司 依赖树生成方法、装置、设备及存储介质
US10423459B1 (en) * 2016-09-23 2019-09-24 Amazon Technologies, Inc. Resource manager
CN110543423A (zh) * 2019-09-05 2019-12-06 中国人民解放军国防科技大学 一种软件依赖包能力检测方法、系统及介质
CN110851117A (zh) * 2019-10-15 2020-02-28 福建天晴在线互动科技有限公司 一键导入静态库到项目的方法、存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10423459B1 (en) * 2016-09-23 2019-09-24 Amazon Technologies, Inc. Resource manager
CN108932309A (zh) * 2018-06-15 2018-12-04 上海陆家嘴国际金融资产交易市场股份有限公司 跨平台数据库管理方法、装置、计算机设备和存储介质
CN110245279A (zh) * 2019-05-06 2019-09-17 阿里巴巴集团控股有限公司 依赖树生成方法、装置、设备及存储介质
CN110543423A (zh) * 2019-09-05 2019-12-06 中国人民解放军国防科技大学 一种软件依赖包能力检测方法、系统及介质
CN110851117A (zh) * 2019-10-15 2020-02-28 福建天晴在线互动科技有限公司 一键导入静态库到项目的方法、存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PABLO DÍAZ: "Tracking project and library dependencies with Graph Oriented DBs", 《HTTPS://MEDIUM.COM/BLOGYUXIGLOBAL/TRACKING-PROJECT-AND-LIBRARY-DEPENDENCIES-WITH-GRAPH-ORIENTED-DBS-E55027D33ADF》 *
一尾金鱼: "Maven依赖分析", 《HTTPS://WWW.CNBLOGS.COM/YWJY/P/7892018.HTML》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543294A (zh) * 2022-12-06 2022-12-30 麒麟软件有限公司 一种Linux系统上动态链接库可视化依赖树的生成方法

Also Published As

Publication number Publication date
CN111399830B (zh) 2023-03-31

Similar Documents

Publication Publication Date Title
JP6916403B2 (ja) データへの論理的妥当性検査規則の指定および適用
US8589884B2 (en) Method and system for identifying regression test cases for a software
US9483284B2 (en) Version compatibility determination
US8869111B2 (en) Method and system for generating test cases for a software application
US8826225B2 (en) Model transformation unit
US20140282412A1 (en) System And Method For Automatic Generation Of Software Test
CN112905441A (zh) 测试用例生成方法、测试方法、装置及设备
CN111198852A (zh) 微服务架构下知识图谱驱动的元数据关系推理方法
CN113656407A (zh) 一种数据拓扑生成方法、装置、电子设备及存储介质
CN111399830B (zh) 一种应用程序容量监控方法、装置、电子设备及存储介质
CN111913878A (zh) 基于程序分析结果的字节码插桩方法、装置及存储介质
CN116226786B (zh) 一种用于信息系统数据融合的数据处理方法及装置
JP2016143134A (ja) 関連情報提供方法、関連情報提供装置及び関連情報提供プログラム
CN111488144A (zh) 一种数据处理方法以及设备
CN115525629A (zh) 数据处理方法、装置、存储介质及电子设备
CN114003273A (zh) 一种基于图形数据库的依赖管理方法和装置
CN114296726A (zh) 一种代码生成方法、装置、计算机设备和存储介质
CN109491892B (zh) 一种项目环境的配置方法和装置
CN111736848A (zh) 包冲突定位方法、装置、电子设备及可读存储介质
CN113434119A (zh) 一种基于流程控制的业务处理方法及其装置
CN112416306A (zh) 多应用依赖树生成方法、装置、电子设备及计算机介质
CN111352824A (zh) 测试方法、装置及计算机设备
CN110231938B (zh) 一种基于元模型的uml语法一致性检测方法
CN113722220A (zh) 一种确定测试案例的方法及装置
CN116166162A (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
GR01 Patent grant
GR01 Patent grant