CN113590190A - 依赖树生成方法、装置及设备 - Google Patents
依赖树生成方法、装置及设备 Download PDFInfo
- Publication number
- CN113590190A CN113590190A CN202110739266.8A CN202110739266A CN113590190A CN 113590190 A CN113590190 A CN 113590190A CN 202110739266 A CN202110739266 A CN 202110739266A CN 113590190 A CN113590190 A CN 113590190A
- Authority
- CN
- China
- Prior art keywords
- dependency
- tree
- version
- dependent
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000009434 installation Methods 0.000 claims abstract description 8
- 230000001419 dependent effect Effects 0.000 claims description 52
- 230000015654 memory Effects 0.000 claims description 19
- 238000011161 development Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 7
- 238000005520 cutting process Methods 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 claims description 3
- 230000003993 interaction Effects 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000003860 storage Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本说明书提供一种依赖树生成方法、装置及设备,利用服务端通过直接查询服务端数据库获取目标项目的依赖关系,进而创建出依赖树。将依赖树的创建从客户端转移到服务端,不需要客户端与服务端的多次数据交互,并且不需要安装依赖就可以直接查询到各个依赖之间的依赖关系,实现了依赖树的直接创建,提升了依赖树的创建效率,减少了依赖树的生成时间。
Description
技术领域
本说明书属于计算机技术领域,尤其涉及一种依赖树生成方法、装置及设备。
背景技术
随着计算机互联网技术的发展,越来越多的业务项目在网络上展开,业务项目中通常会包含多个依赖包,如何确定业务项目的依赖包的依赖信息成为了关注的焦点。
一般的,可以通过依赖包管理器对依赖包的依赖信息进行管理,如通过创建出表征各个项目依赖关系的依赖树对依赖信息进行管理。通常,依赖树的创建是在客户端进行,客户端需要从服务端下载依赖包,再递归读取下载依赖的依赖,以此类推,最终生成依赖树。这种方案父子依赖之间只能串行计算,不能并发,可能会影响依赖树的创建效率。
发明内容
本说明书实施例的目的在于提供一种依赖树生成方法、装置及设备,提高了依赖树创建的效率,降低了依赖树创建的时间。
一方面,本说明书实施例提供了一种依赖树生成方法,应用于服务端,所述方法包括:
从服务端数据库中获取目标项目的依赖包文件;
根据所述依赖包文件确定出所述目标项目对应的各个依赖的依赖关系;
从依赖树模板的根节点开始遍历所述依赖树模板中各个树节点,根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,创建出所述目标项目对应的依赖树。
另一方面,本说明书提供了一种依赖树生成装置,应用于服务端,所述装置包括:
数据获取模块,用于从服务端数据库中获取目标项目的依赖包文件;
依赖关系计算模块,用于根据所述依赖包文件确定出所述目标项目对应的各个依赖的依赖关系;
依赖树创建模块,用于从依赖树模板的根节点开始遍历所述依赖树模板中各个树节点,根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,创建出所述目标项目对应的依赖树。
又一方面,本说明书实施例提供了一种依赖树生成设备,包括至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述依赖树生成方法。
本说明书提供的依赖树生成方法、装置及设备,利用服务端通过直接查询服务端数据库获取目标项目的依赖关系,进而创建出依赖树。将依赖树的创建从客户端转移到服务端,不需要客户端与服务端的多次数据交互,并且不需要安装依赖就可以直接查询到各个依赖之间的依赖关系,实现了依赖树的直接创建,提升了依赖树的创建效率,减少了依赖树的生成时间。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的依赖树生成方法实施例的流程示意图;
图2是本说明书又一个实施例中依赖树生成的流程示意图;
图3是本说明书一个实施例中数据裁剪前后的对比示意图;
图4是本说明书提供的依赖树生成装置一个实施例的模块结构示意图;
图5是本说明书一个实施例中依赖树生成服务器的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
现在的前端开发几乎都离不开nodejs的包管理器npm(node pkgmakeinst,前端依赖包管理器),npm通常称可以称为node包管理器,主要功能可以包括管理node包(依赖包),如:安装、卸载、更新、查看、搜索、发布等。通常可以通过依赖树对依赖包之间的依赖关系进行管理,一般的依赖树的生成通常在客户端完成,客户端需要向服务端请求下载依赖包,依赖包下载之后客户端才可以获得该依赖包所依赖的其他依赖,进而生成依赖树。可以看出,客户端需要与服务端进行多次的数据交互,并且需要将依赖包下载之后才能获知依赖关系,各个依赖包之间的依赖关系不能并行。
本说明书实施例,通过服务端查询数据库获取目标项目的父子依赖的关系,然后直接算出依赖树。减少了客户端到服务端的请求耗时,同时不需要等待父依赖下载完全之后,再去解析父依赖然后在下载子依赖,提高了依赖树的创建效率,节省了依赖树的创建时间。
图1是本说明书实施例提供的依赖树生成方法实施例的流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。
本说明书实施例中提供的依赖树生成方法可以应用在服务器等终端设备中,如图1所示,所述方法可以包括如下步骤:
步骤102、从服务端数据库中获取目标项目的依赖包文件。
在具体的实施过程中,目标项目可以包括:保险业务项目、理财业务项目、支付业务项目,也可以包括其他适当的业务项目,如:可以是保险业务项目的应用程序或小程序等,本说明书实施例不作具体限定。目标项目包括多个依赖即依赖包或依赖模块,服务端数据库中可以存储各个项目的依赖包文件,依赖包文件可以理解为package.json文件,package.json文件中可以包含依赖包的包名、版本号以及依赖信息等。
在一些实施例中,所述从服务端数据库中获取目标项目的依赖包文件,包括:
若所述目标项目的安装环境为开发环境,则从所述服务端数据库中获取所述目标项目的运行依赖包文件和/或开发依赖包文件,若所述目标项目的为生产环境,则从所述服务端数据库中获取所述目标项目的运行依赖包文件。
在具体的实施过程中,可以根据目标项目的安装环境,从服务端数据库中获取对应的目标项目的依赖包文件。每个依赖的中与包依赖相关的字段有:dependencies:指定项目运行时所依赖的模块;devDependencies:指定项目开发时所需要的模块;peerDependencies:指定当前模块所在的宿主环境所需要的模块及其版本。当目标项目的安装环境为生产环境时,则可以从package.json文件获取dependencies文件(即运行依赖包文件)和/或devDependencies文件(即开发依赖包文件),若目标项目的为开发环境,则可以从package.json文件获取devDependencies文件,此时不需要获取dependencies文件。基于安装环境获取对应的依赖包文件,以确保依赖树能够准确的创建,为后续依赖的管理提供了数据基础。
步骤104、根据所述依赖包文件确定出所述目标项目对应的各个依赖的依赖关系。
在具体的实施过程中,可以根据依赖包文件获取目标项目对应的各个依赖即依赖包的依赖关系,如:依赖项目由一个依赖包A,可以基于依赖包文件获取该依赖包A的依赖其他依赖包B、C,再获取依赖包B、C的依赖,以此类推,依次获取目标项目的各层依赖关系。
步骤106、从依赖树模板的根节点开始遍历所述依赖树模板中各个树节点,根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,创建出所述目标项目对应的依赖树。
在具体的实施过程中,可以创建依赖树模板,依赖树模板中各个节点可以为空,可以依次遍历依赖树模板的各个树节点,基于获取到的目标项目的各个依赖的依赖关系,将各个依赖添加到依赖树模板中对应的树节点上,创建出目标项目对应的依赖树。如:可以将目标项目的依赖添加到依赖树模板的根节点上,再将目标项目的依赖的依赖添加到根节点下的子节点上,以此类推。
创建出的依赖树可以发送给对应的客户端,或者保存在服务端,具体可以根据实际需要而定,本说明书实施例不做具体限定。
本说明书实施例提供的依赖树生成方法,利用服务端通过直接查询服务端数据库获取目标项目的依赖关系,进而创建出依赖树。将依赖树的创建从客户端转移到服务端,不需要客户端与服务端的多次数据交互,并且不需要安装依赖就可以直接查询到各个依赖之间的依赖关系,实现了依赖树的直接创建,提升了依赖树的创建效率,减少了依赖树的生成时间。
在上述实施例的基础上,本说明书一些实施例中,所述根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,包括:
所述根据各个依赖的依赖关系,获取所述依赖树模板中各个树节点对应的目标依赖版本;
将所述目标依赖版本对应的依赖添加到所述依赖树模板中对应的树节点上。
在具体的实施过程中,图2是本说明书又一个实施例中依赖树生成的流程示意图,如图2所示,针对npm依赖树的生成,需要查询对应每个依赖的版本号,每个依赖可以对应有多个版本,如:若依赖为一个程序包,该程序可能有3个版本,那么这个依赖就可以对应有3个版本号。在遍历依赖树模板中的树节点时,可以依次确定出各个树节点对应的依赖的版本号即目标依赖版本,进而将目标依赖版本的依赖添加到对应的树节点上,选择出合适版本的依赖,以确保依赖树创建的准确性。如图2所示,在确定出树节点对应的目标依赖版本,将该版本的依赖添加到树节点时,若依赖树上已经存在该依赖可以不再继续添加,以避免重复。当然,一个版本号也可能对应有多个依赖,如:版本号为1.0.0的依赖可能会有很多个,具体可以根据实际需要设置,本说明书实施例不做具体限定。对于目标依赖版本的选择可以基于依赖包文件即package.json文件以及实际使用需求而定,本说明书实施例不做具体限定。
本说明书实施例中version即版本号可以遵守semver规范,一般的,版本号可以包括三位,第一位为major:如果有破坏性的更新,比如升级了之后现有的代码不能更新了,会增大major版本,比如说1.0.0升级到2.0.0。第二位为minor:如果有新特性增加,比如说功能的增加,会增大minor版本,比如说1.0.0升级到1.1.0。第三位为patch:如果有bug修复了,会增大patch版本,比如说1.0.0升级到1.0.1。例如:如^1.0.0,会使用major版本为1版本最大的版本;如~1.0.0,会使用major版本为1,minor版本为0,版本最大的版本;如>=1.2.3<2.0.0手动指定范围,从1.2.3到2.0.0中选取最大的版本。关于依赖的版本选择,也可以参考客户端生成依赖树时选择版本的方法,本说明书实施例不做具体限定。
在上述实施例的基础上,本说明书一些实施例中,在所述服务端中设置有缓存,所述缓存中存储有依赖版本列表,所述获取所述依赖树模板中各个树节点对应的目标依赖版本,包括:
从缓存中的依赖版本列表中查询所述依赖树模板中各个树节点对应的目标依赖版本。
在具体的实施过程中,在服务端生成依赖树的过程中,在服务端和服务端数据库之间新增了一层数据缓存,该缓存中可以存储有依赖版本列表,依赖版本列表中可以存储有各个依赖于依赖数据的映射关系以及依赖的其他相关数据等,如:package.json文件等。在查询依赖的版本时,可以从缓存中查询依赖树模板中各个树节点对应的目标依赖版本,以提高依赖版本的查询速度。
此外,本说明书一些实施例中,所述方法还包括:
将各个依赖对应的依赖数据进行裁剪,剪除所述依赖数据中的多余字段,将裁剪后的依赖数据存储在所述依赖版本列表中。
在具体的实施过程中,在保存缓存的过程中,可以对各个依赖对应的依赖数据进行裁剪,裁剪了数据中不需要的字段,只保留必要的字段,以减少缓存的数据量,降低内存空间的占用,提升系统性能。其中,依赖的依赖数据可以理解为与依赖包的相关的数据,如:package.json、name、version、dist-tag等,本说明书实施例不做具体限定。图3是本说明书一个实施例中数据裁剪前后的对比示意图,如图3所示,针对“decentraland-renderer”版本,查询全量数据之后,会剔除description等字段,然后将dist-tag,version,和package.json字段存起来,可以极大减少最终缓存的数据量。
在上述实施例的基础上,本说明书一些实施例中,所述从缓存中查询所述依赖树模板中各个树节点对应的目标依赖版本时,包括:
通过语义化版本计算从所述缓存中查询所述依赖树模板中各个树节点对应的符合版本要求的目标依赖版本。
在具体的实施过程中,针对依赖可用版本的查询,提前进行语义化版本的计算(如:semver),只查询符合语义化版本要求的版本,增加查询的效率,减少数据查询量。其中,semver是一个专门分析Semantic Version(语义化版本)的工具,semver可以作为一个node模块,同时也可以作为一个命令行工具。功能可以包括:比较两个版本号的大小、验证某个版本号是否合法、提取版本号,例如从“=v1.2.1”体取出“1.2.1”,分析版本号是否属于某个范围或符合一系列条件等等。本说明书实施例提供的方案,经验证可以减少约85.6%左右的缓存数据量,以decentraland-renderer为例,优化前数据量为18M,优化后为2.56M。
本说明书实施例提供的依赖树创建方法,将原来客户端依赖树生成,挪到服务端生成,将客户端、服务端、数据库之间大量的数据请求挪到的服务端、缓存和数据库之间,大幅度降低了依赖树的生成时间,经验证能够将依赖树的生成速度提高25%左右。
本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参考方法实施例的部分说明即可。
基于上述所述的依赖树生成方法,本说明书一个或多个实施例还提供一种用于依赖树生成的装置。所述装置可以包括使用了本说明书实施例所述方法的装置(包括分布式系统)、软件(应用)、模块、插件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参考前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
具体地,图4是本说明书提供的依赖树生成装置一个实施例的模块结构示意图,该装置可以应用于服务端,如图4所示,本说明书中提供的依赖树生成装置可以包括:
数据获取模块41,用于从服务端数据库中获取目标项目的依赖包文件;
依赖关系计算模块42,用于根据所述依赖包文件确定出所述目标项目对应的各个依赖的依赖关系;
依赖树创建模块43,用于从依赖树模板的根节点开始遍历所述依赖树模板中各个树节点,根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,创建出所述目标项目对应的依赖树。
本说明书一些实施例中,所述依赖树创建模块具体用于:
所述根据各个依赖的依赖关系,获取所述依赖树模板中各个树节点对应的目标依赖版本;
将所述目标依赖版本对应的依赖添加到所述依赖树模板中对应的树节点上。
本说明书一些实施例中,在所述服务端中设置有缓存,所述缓存中存储有依赖版本列表,所述依赖树创建模块具体用于:
从缓存中的依赖版本列表中查询所述依赖树模板中各个树节点对应的目标依赖版本。
本说明书实施例将原来客户端依赖树生成,挪到服务端生成,将客户端、服务端、数据库之间大量的数据请求挪到的服务端、缓存和数据库之间,大幅度降低了依赖树的生成时间。
需要说明的,上述所述的装置根据对应方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照上述对应的方法实施例的描述,在此不作一一赘述。
本说明书实施例还提供一种依赖树生成设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例的依赖树生成方法,如:
从服务端数据库中获取目标项目的依赖包文件;
根据所述依赖包文件确定出所述目标项目对应的各个依赖的依赖关系;
从依赖树模板的根节点开始遍历所述依赖树模板中各个树节点,根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,创建出所述目标项目对应的依赖树。
本说明书一些实施例中,还提供了一种依赖树生成系统,所述依赖树生成系统包括:服务端、客户端,其中:
所述服务端中存储有计算机指令,所述指令被执行时实现上述实施例中服务端侧执行的方法的步骤,用于创建依赖树。
需要说明的,上述所述的设备或系统根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书提供的依赖树生成装置、设备,也可以应用在多种数据分析处理系统中。所述系统或服务器或终端或设备可以为单独的服务器,也可以包括使用了本说明书的一个或多个所述方法或一个或多个实施例系统或服务器或终端或设备的服务器集群、系统(包括分布式系统)、软件(应用)、实际操作装置、逻辑门电路装置、量子计算机等并结合必要的实施硬件的终端装置。所述核对差异数据的检测系统可以包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个或者多个实施例中所述方法的步骤。
本说明书实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图5是本说明书一个实施例中依赖树生成服务器的硬件结构框图,该计算机终端可以是上述实施例中的依赖树生成服务器或依赖树生成装置。如图5所示服务器10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的非易失性存储器200、以及用于通信功能的传输模块300。本领域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图5中所示更多或者更少的插件,例如还可以包括其他的处理硬件,如数据库或多级缓存、GPU,或者具有与图5所示不同的配置。
非易失性存储器200可用于存储应用软件的软件程序以及模块,如本说明书实施例中的依赖树生成方法对应的程序指令/模块,处理器100通过运行存储在非易失性存储器200内的软件程序以及模块,从而执行各种功能应用以及资源数据更新。非易失性存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,非易失性存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输模块300包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果,如:
从服务端数据库中获取目标项目的依赖包文件;
根据所述依赖包文件确定出所述目标项目对应的各个依赖的依赖关系;
从依赖树模板的根节点开始遍历所述依赖树模板中各个树节点,根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,创建出所述目标项目对应的依赖树。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
本说明书实施例提供的上述依赖树生成方法或装置可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c++语言在PC端实现、linux系统实现,或其他例如使用android、iOS系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。
本说明书实施例并不局限于必须是符合行业通信标准、标准计算机资源数据更新和数据存储规则或本说明书一个或多个实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书实施例的可选实施方案范围之内。
为了描述的方便,描述以上平台、终端时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或插件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
这些计算机程序指令也可装载到计算机或其他可编程资源数据更新设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参考方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (10)
1.一种依赖树生成方法,应用于服务端,所述方法包括:
从服务端数据库中获取目标项目的依赖包文件;
根据所述依赖包文件确定出所述目标项目对应的各个依赖的依赖关系;
从依赖树模板的根节点开始遍历所述依赖树模板中各个树节点,根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,创建出所述目标项目对应的依赖树。
2.如权利要求1所述的方法,所述根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,包括:
所述根据各个依赖的依赖关系,获取所述依赖树模板中各个树节点对应的目标依赖版本;
将所述目标依赖版本对应的依赖添加到所述依赖树模板中对应的树节点上。
3.如权利要求2所述的方法,在所述服务端中设置有缓存,所述缓存中存储有依赖版本列表,所述获取所述依赖树模板中各个树节点对应的目标依赖版本,包括:
从缓存中的依赖版本列表中查询所述依赖树模板中各个树节点对应的目标依赖版本。
4.如权利要求3所述的方法,所述方法还包括:
将各个依赖对应的依赖数据进行裁剪,剪除所述依赖数据中的多余字段,将裁剪后的依赖数据存储在所述依赖版本列表中。
5.如权利要求4所述的方法,所述从缓存中查询所述依赖树模板中各个树节点对应的目标依赖版本时,包括:
通过语义化版本计算从所述缓存中查询所述依赖树模板中各个树节点对应的符合版本要求的目标依赖版本。
6.如权利要求1所述的方法,所述从服务端数据库中获取目标项目的依赖包文件,包括:
若所述目标项目的安装环境为开发环境,则从所述服务端数据库中获取所述目标项目的运行依赖包文件和/或开发依赖包文件,若所述目标项目的为生产环境,则从所述服务端数据库中获取所述目标项目的运行依赖包文件。
7.一种依赖树生成装置,应用于服务端,所述装置包括:
数据获取模块,用于从服务端数据库中获取目标项目的依赖包文件;
依赖关系计算模块,用于根据所述依赖包文件确定出所述目标项目对应的各个依赖的依赖关系;
依赖树创建模块,用于从依赖树模板的根节点开始遍历所述依赖树模板中各个树节点,根据各个依赖的依赖关系,将各个依赖添加到所述依赖树模板中对应的树节点上,创建出所述目标项目对应的依赖树。
8.如权利要求7所述的装置,所述依赖树创建模块具体用于:
所述根据各个依赖的依赖关系,获取所述依赖树模板中各个树节点对应的目标依赖版本;
将所述目标依赖版本对应的依赖添加到所述依赖树模板中对应的树节点上。
9.如权利要求7所述的装置,在所述服务端中设置有缓存,所述缓存中存储有依赖版本列表,所述依赖树创建模块具体用于:
从缓存中的依赖版本列表中查询所述依赖树模板中各个树节点对应的目标依赖版本。
10.一种依赖树生成设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110739266.8A CN113590190A (zh) | 2021-06-30 | 2021-06-30 | 依赖树生成方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110739266.8A CN113590190A (zh) | 2021-06-30 | 2021-06-30 | 依赖树生成方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113590190A true CN113590190A (zh) | 2021-11-02 |
Family
ID=78245356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110739266.8A Pending CN113590190A (zh) | 2021-06-30 | 2021-06-30 | 依赖树生成方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590190A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145631A (zh) * | 2022-08-31 | 2022-10-04 | 云账户技术(天津)有限公司 | 幽灵依赖的处理方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245279A (zh) * | 2019-05-06 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 依赖树生成方法、装置、设备及存储介质 |
CN110989992A (zh) * | 2019-10-30 | 2020-04-10 | 无线生活(北京)信息技术有限公司 | 资源处理方法及装置 |
CN111708564A (zh) * | 2020-08-20 | 2020-09-25 | 上海森亿医疗科技有限公司 | 多模型的管理方法、系统、介质及服务器 |
CN111783103A (zh) * | 2020-07-03 | 2020-10-16 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
-
2021
- 2021-06-30 CN CN202110739266.8A patent/CN113590190A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245279A (zh) * | 2019-05-06 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 依赖树生成方法、装置、设备及存储介质 |
CN110989992A (zh) * | 2019-10-30 | 2020-04-10 | 无线生活(北京)信息技术有限公司 | 资源处理方法及装置 |
CN111783103A (zh) * | 2020-07-03 | 2020-10-16 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
CN111708564A (zh) * | 2020-08-20 | 2020-09-25 | 上海森亿医疗科技有限公司 | 多模型的管理方法、系统、介质及服务器 |
Non-Patent Citations (2)
Title |
---|
(美)马尔奇·哈弗贝克著;卢涛,李颖译: "JavaScript编程精解 原书第3版", 29 February 2020, 机械工业出版社, pages: 279 - 280 * |
邢千里: "GPGPU结构研究与性能分析", 中国优秀硕士学位论文全文数据库 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145631A (zh) * | 2022-08-31 | 2022-10-04 | 云账户技术(天津)有限公司 | 幽灵依赖的处理方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200272613A1 (en) | Database table format conversion based on user data access patterns in a networked computing environment | |
US8904377B2 (en) | Reconfiguration of computer system to allow application installation | |
CN110046133B (zh) | 一种存储文件系统的元数据管理方法、装置及系统 | |
US8812627B2 (en) | System and method for installation and management of cloud-independent multi-tenant applications | |
US8849876B2 (en) | Methods and apparatuses to optimize updates in a file system based on birth time | |
US7958511B1 (en) | Mechanism for estimating the computing resources needed to execute a job | |
US20130198730A1 (en) | Update systems responsive to ongoing processing at a storage system | |
US20140379789A1 (en) | Automated service interface optimization | |
CN110673839B (zh) | 分布式工具配置化构建生成方法及系统 | |
CN107483631B (zh) | 一种控制缓存实现移动互联网络服务访问的方法 | |
US10942970B2 (en) | Reachability graph index for query processing | |
CN109783107B (zh) | 一种可视化的规则生成方法、装置及电子设备 | |
WO2012044214A1 (en) | Method and arrangement for processing data | |
US20150220524A1 (en) | Verifying file versions in a networked computing environment | |
CN111737227A (zh) | 数据修改方法及系统 | |
US11099837B2 (en) | Providing build avoidance without requiring local source code | |
US9646016B2 (en) | Methods circuits apparatuses systems and associated computer executable code for data deduplication | |
CN113590190A (zh) | 依赖树生成方法、装置及设备 | |
US11595493B2 (en) | System and method for namespace masking in an integration flow | |
CN106095511A (zh) | 一种服务器升级方法和装置 | |
CN110096295B (zh) | 基于ReactNative的多模块移动应用的热更新方法及系统 | |
JP2006294019A (ja) | 汎用ソフトウェア要件アナライザ | |
US20220078228A1 (en) | Infrastructure imports for an information technology platform | |
US11409769B2 (en) | Computer-implemented method and system for attribute discovery for operation objects from operation data | |
CN108376104B (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 |