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

一种软件加载的方法和装置及设备与流程

2022-06-05 19:24:11 来源:中国专利 TAG:


1.本发明涉及通信技术领域,尤其涉及一种软件加载的方法和装置及设备。


背景技术:

2.随着无线通信技术的发展与普及,在越来越多的软件投入使用,而软件会每隔一段时间进行软件版本的升级,以修复现有版本的缺陷、升级软件的功能。一般软件升级/安装的过程是:设备接收软件包,将接收到的软件包中的数据解压,写入软件安装的存储区。在上述过程中,需要一块临时资源来存储软件包。如果软件包超过了临时资源的限制,例如,软件包过大或临时资源过小,会导致升级/安装过程无法进行,尤其是在资源有限的嵌入式设备上,上述升级/安装的局限性就变得更加突出。
3.面对上述问题,现有的技术方案存在两种解决方案,第一种为当升级镜像文件的大小超过olt(optical line terminal,光线路终端)的最大可分配内存的大小时,网管服务器与olt协商确定olt每次下载的镜像分片的大小,镜像分片由网管服务器对升级镜像文件进行分割后得到,且每个镜像分片的大小均不超过最大可分配内存的大小;网管服务器每次向olt下发一个镜像分片,olt将收到的镜像分片存入预先分配的下载空间后下发给onu(optical network unit,光网络单元),然后清空下载空间,直到所有镜像分片下发完毕。但是上述方案存在一定的问题,如果分片之间存在依赖性,例如升级过程的一些解压等后处理操作,上述方案无法处理这种依赖性,导致升级/安装失败。
4.第二种解决方案为按照临时资源的长度将源版本文件和目标版本文件分别划分为多个分块;将所述源版本文件的分块和所述目标版本文件的分块进行对比,获得所述源版本文件的分块和所述目标版本文件的分块之间的差分信息和复制依赖关系;根据所述差分信息和复制依赖关系生成差分升级包。但是上述制作差分升级包的过程,对原版本文件存在依赖,在没有原版本文件的情况,比如安装新软件时,无法解决上述问题;此外,在部分场景下,生成的差分升级包依然超过了临时资源的限制,升级的操作也无法完成。


技术实现要素:

5.本发明提供一种软件加载的方法和装置及设备,解决在加载软件时,当临时资源小于升级包的大小,如何使用较小的临时资源,加载软件的问题。
6.第一方面,本发明提供一种软件加载的方法,应用于服务端,该方法包括:
7.响应于客户端发送的软件加载请求,扫描待加载的软件,确定映射所述待加载的软件中实体文件绝对路径的第一软件结构表;
8.在所述第一软件结构表中的绝对路径下增加对应的实体文件名称,得到第二软件结构表;
9.以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件;
10.对重组后的实体文件进行压缩,得到流式压缩包,并将所述流式压缩包发送到客
户端。
11.可选地,得到流式压缩包之后,还包括:
12.在所述流式压缩包的头部添加所述待加载的软件的元数据,所述元数据包括所述待加载的软件的原始大小、签名信息、安装类型、版本中的至少一项。
13.可选地,以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,包括执行如下至少一个步骤:
14.根据所述第二软件结构表,确定所述待加载的软件中的目录结构信息并删除;
15.根据所述第二软件结构表,确定所述待加载的软件中的非实体文件类型的文件并删除;
16.以所述第二软件结构表为索引,确定所述待加载的软件中实体文件位置,并提取对应的实体文件。
17.可选地,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件,包括:
18.将查找到的待加载的软件中的实体文件进行队列排序,将所述第二软件结构表添加到队尾进行重组,所述实体文件包括文件描述信息和压缩数据块。
19.可选地,所述文件描述信息包括:所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
20.可选地,扫描待加载的软件,获得如下信息中的至少一项:配置文件、脚本文件、目录结构、所述实体文件间的依赖关系。
21.第二方面,本发明提供一种软件加载的方法,应用于客户端,该方法包括:
22.向服务端发送软件加载请求;
23.分块接收所述服务端发送的流式压缩包,并写入数据接收窗口;
24.对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件;
25.根据所述重组后的实体文件的第二软件结构表,将所述存储器中的所述重组后的实体文件的结构恢复为所述待加载的软件的结构。
26.可选地,对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件,包括:
27.根据所述重组后的实体文件的文件描述信息,将所述解压缩后的流式压缩包的分块重组,在所述存储器中得到重组后的实体文件。
28.可选地,所述重组后的实体文件的文件描述信息包括:
29.所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
30.第三方面,本发明提供一种软件加载的设备,应用于服务端,包括存储器和处理器,其中:
31.所述存储器用于存储计算机程序;
32.所述处理器用于读取所述存储器中的程序并执行如下步骤:
33.响应于客户端发送的软件加载请求,扫描待加载的软件,确定映射所述待加载的软件中实体文件绝对路径的第一软件结构表;
34.在所述第一软件结构表中的绝对路径下增加对应的实体文件名称,得到第二软件结构表;
35.以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件;
36.对重组后的实体文件进行压缩,得到流式压缩包,并将所述流式压缩包发送到客户端。
37.可选地,得到流式压缩包之后,所述处理器还用于:
38.在所述流式压缩包的头部添加所述待加载的软件的元数据,所述元数据包括所述待加载的软件的原始大小、签名信息、安装类型、版本中的至少一项。
39.可选地,所述处理器以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,包括执行如下至少一个步骤:
40.根据所述第二软件结构表,确定所述待加载的软件中的目录结构信息并删除;
41.根据所述第二软件结构表,确定所述待加载的软件中的非实体文件类型的文件并删除;
42.以所述第二软件结构表为索引,确定所述待加载的软件中实体文件位置,并提取对应的实体文件。
43.可选地,所述处理器查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件,包括:
44.将查找到的待加载的软件中的实体文件进行队列排序,将所述第二软件结构表添加到队尾进行重组,所述实体文件包括文件描述信息和压缩数据块。
45.可选地,所述文件描述信息包括:所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
46.可选地,所述处理器扫描待加载的软件,获得如下信息中的至少一项:配置文件、脚本文件、目录结构、所述实体文件间的依赖关系。
47.第四方面,本发明提供一种软件加载的设备,应用于客户端,包括存储器和处理器,其中:
48.所述存储器用于存储计算机程序;
49.所述处理器用于读取所述存储器中的程序并执行如下步骤:
50.向服务端发送软件加载请求;
51.分块接收所述服务端发送的流式压缩包,并写入数据接收窗口;
52.对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件;
53.根据所述重组后的实体文件的第二软件结构表,将所述存储器中的所述重组后的实体文件的结构恢复为所述待加载的软件的结构。
54.可选地,所述处理器对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件,包括:
55.根据所述重组后的实体文件的文件描述信息,将所述解压缩后的流式压缩包的分块重组,在所述存储器中得到重组后的实体文件。
56.可选地,所述重组后的实体文件的文件描述信息包括:
57.所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
58.第五方面,本发明提供一种软件加载的装置,应用于服务端,包括:
59.第一结构表生成单元,用于响应于客户端发送的软件加载请求,扫描待加载的软件,确定映射所述待加载的软件中实体文件绝对路径的第一软件结构表;
60.第二结构表生成单元,用于在所述第一软件结构表中的绝对路径下增加对应的实体文件名称,得到第二软件结构表;
61.结构重组单元,用于以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件;
62.压缩包生成单元,用于对重组后的实体文件进行压缩,得到流式压缩包,并将所述流式压缩包发送到客户端。
63.可选地,得到流式压缩包之后,所述压缩包生成单元还用于:
64.在所述流式压缩包的头部添加所述待加载的软件的元数据,所述元数据包括所述待加载的软件的原始大小、签名信息、安装类型、版本中的至少一项。
65.可选地,所述结构重组单元以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,包括执行如下至少一个步骤:
66.根据所述第二软件结构表,确定所述待加载的软件中的目录结构信息并删除;
67.根据所述第二软件结构表,确定所述待加载的软件中的非实体文件类型的文件并删除;
68.以所述第二软件结构表为索引,确定所述待加载的软件中实体文件位置,并提取对应的实体文件。
69.可选地,所述结构重组单元查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件,包括:
70.将查找到的待加载的软件中的实体文件进行队列排序,将所述第二软件结构表添加到队尾进行重组,所述实体文件包括文件描述信息和压缩数据块。
71.可选地,所述文件描述信息包括:所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
72.可选地,所述第一结构表生成单元扫描待加载的软件,获得如下信息中的至少一项:配置文件、脚本文件、目录结构、所述实体文件间的依赖关系。
73.第六方面,本发明提供一种软件加载的装置,应用于客户端,包括:
74.请求发送单元,用于向服务端发送软件加载请求;
75.数据接收单元,用于分块接收所述服务端发送的流式压缩包,并写入数据接收窗口;
76.解压缩单元,用于对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件;
77.结构恢复单元,用于根据所述重组后的实体文件的第二软件结构表,将所述存储器中的所述重组后的实体文件的结构恢复为所述待加载的软件的结构。
78.可选地,所述解压缩单元对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件,包括:
79.根据所述重组后的实体文件的文件描述信息,将所述解压缩后的流式压缩包的分块重组,在所述存储器中得到重组后的实体文件。
80.可选地,所述重组后的实体文件的文件描述信息包括:
81.所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
82.第七方面,本发明提供一种计算机程序介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面提供的应用于服务端的一种软件加载的方法的步骤。
83.第八方面,本发明提供一种计算机程序介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第二方面提供的应用于客户端的一种软件加载的方法的步骤。
84.本发明提供的一种软件加载的方法和装置及设备,具有以下有益效果:
85.在加载软件时,当临时资源小于升级包的大小,只需要使用较小的临时资源,分块接收升级包,消除各块之间的依赖性,流式分块解压,实现边接收边加载,提高加载效率。
附图说明
86.图1为一般的软件加载的过程示意图;
87.图2为现有技术中分片加载的方案的示意图;
88.图3为现有技术中使用差分升级包升级的方案的示意图;
89.图4为本发明实施例提供的一种软件加载的方法的应用场景的示意图。
90.图5为本发明实施例提供的一种服务端软件加载的方法的流程图;
91.图6为本发明实施例提供的一种流式压缩包制作的流程图;
92.图7为本发明实施例提供的一种第一软件结构表生成过程的示意图;
93.图8为本发明实施例提供的一种压缩文件流的结构示意图;
94.图9为本发明实施例提供的一种结构重组的过程示意图;
95.图10为本发明实施例提供的一种生成流式压缩包的过程示意图;
96.图11为本发明实施例提供的一种为流式压缩包填充元数据的过程示意图;
97.图12为本发明实施例提供的一种客户端软件加载的方法的流程图;
98.图13为本发明实施例提供的一种描述头中包含的信息的示意图;
99.图14为本发明实施例提供的一种恢复软件原始结构的过程示意图;
100.图15为本发明实施例提供的一种客户端软件加载的过程示意图;
101.图16为本发明实施例提供的一种流式分块解压处理流程图;
102.图17为本发明实施例提供的一种服务端软件加载的设备示意图;
103.图18为本发明实施例提供的一种客户端软件加载的设备示意图;
104.图19为本发明实施例提供的一种服务端软件加载的装置示意图;
105.图20为本发明实施例提供的一种客户端软件加载的装置示意图。
具体实施方式
106.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,并不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本技术保护的范围。
107.需要说明的是,以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
108.以下,对本公开实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
109.(1)本公开实施例中术语“加载”,包括升级及安装两种情况,其中,安装为从0到1的过程,升级为从1到n的更新操作。
110.(2)本公开实施例中术语“流式压缩包”,为一种固定的压缩形式,可以支持一边加载一边解压缩,不必等到全部压缩包都下载完成后再进行解压缩的操作。
111.(3)本公开实施例中术语“光线路终端”,指(optical line terminal,olt)。它实现的功能是:与前端(汇聚层)交换机用网线相连,转化成光信号,用单根光纤与用户端的分光器互联;实现对用户端设备onu的控制、管理、测距等功能;提供光接入网的网络侧接口,与一个或多个光分配网相连。
112.(4)本公开实施例中术语“光网络单元”,指光网络单元(optical network unit,onu)与光网络终端(optical network terminal,ont)的统称。其中,onu是光纤接入的终端设备,它向用户提供多个业务接口,ont直接位于用户端,将onu和ont统一称为onu。
113.(5)本公开实施例中术语“存储器flash”,指固态存储器与动画编辑器,在本发明实施例中执行存储器的功能。
114.(6)本公开实施例中术语“临时资源”,指由一个进程产生,被另一个进程使用,短时间后便无用的资源,故也称为消耗性资源,如硬件中断、信号、消息、缓冲区内的消息等。在本发明实施例中特指一块被临时用于接收流式压缩包的分片的资源。
115.为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
116.如图1所示,为一般的软件加载的过程示意图。
117.设备接收软件包,利用临时资源存储软件包,将接收到的软件包中的数据解压,写入软件安装的存储区。在上述过程中,需要一块临时资源来存储软件包。如果软件包超过了临时资源的限制,例如,软件包过大或临时资源过小,会导致升级/安装过程无法进行,尤其是在资源有限的嵌入式设备上,上述升级/安装的局限性就变得更加突出。
118.面对上述问题,现有的技术方案存在两种解决方案,第一种为分片升级的方法。当升级镜像文件的大小超过olt(optical line terminal,光线路终端)的最大可分配内存的大小时,网管服务器与olt协商确定olt每次下载的镜像分片的大小,镜像分片由网管服务器对升级镜像文件进行分割后得到,且每个镜像分片的大小均不超过最大可分配内存的大小;网管服务器每次向olt下发一个镜像分片,olt将收到的镜像分片存入预先分配的下载空间后下发给onu(optical network unit,光网络单元),然后清空下载空间,直到所有镜像分片下发完毕。
119.如图2所示,为现有技术中分片加载的方案的示意图,其中,升级镜像文件被分割为镜像分片s1、s2、s3、s4、
……
、sn。被升级段向升级镜像文件发送分片请求,如图2所示,被
升级段向升级镜像文件的镜像分片s1发送分片请求;升级镜像文件接收到分片请求后下发分片数据至升级内存,如图2所示,升级镜像文件分别下发镜像分片s1,镜像分片s2
……
镜像分片sn;升级内存将接收到的分片数据存入存储器flash后清空升级内存,如图2所示,升级内存将接收到的镜像分片s1的数据存入存储器flash后清空升级内存,再接收镜像分片s2的数据存入存储器flash后清空升级内存;重复上述操作,直到所有镜像分片下发完毕。
120.但是上述方案存在一定的问题,网管服务器对升级包分片时,是根据被升级端请求的大小进行分片,如果存在两片存在关联性或依赖性,例如,升级过程的一些解压等后处理操作,被升级端由于接收完单片后就删除了,导致无法处理这种依赖性,导致升级/安装失败。比如,在图2中,当s2和sn存在依赖时,该升级过程无法进行下去,因为当被升级端接受到sn时,s2片已经被删除了,而且没有记录依赖恢复信息,导致无法处理sn。
121.第二种解决方案为使用差分升级包升级。
122.如图3所示,为现有技术中使用差分升级包升级的方案的示意图,按照临时资源的长度将源版本文件和目标版本文件分别划分为多个分块;将所述源版本文件的分块和所述目标版本文件的分块进行对比,获得所述源版本文件的分块和所述目标版本文件的分块之间的差分信息和复制依赖关系;根据所述差分信息和复制依赖关系生成差分升级包。
123.但是上述制作差分升级包的过程,需要依赖比对旧升级包,生成差异项,制作出差异项的升级包;而且使用上述差分升级包升级的方案,无法做从0-1的安装操作,只能做从1-n更新操作。另外,上述差分升级包升级的方案仍然具有升级局限性,无法从根源上解决资源紧张时的升级策略问题:虽然上述方案使用差分法,尽量减少了升级包的大小,但是仍然存在部分场景下,差分升级包过大的情况,在这种场景下,当升级资源紧张时,升级操作可能无法完成。
124.基于上述问题,本公开实施例提供一种软件加载的方法和装置及设备,可以实现在加载软件时,当临时资源小于升级包的大小,只需要使用较小的临时资源,分块接收升级包,消除各块之间的依赖性,流式分块解压,实现边接收边加载,提高了加载效率。下面给出本公开实施例提供的一种软件加载的方法和装置及设备的实施方式。
125.下面结合说明书附图对本技术各个实施例进行详细描述。需要说明的是,本技术实施例的展示顺序仅代表实施例的先后顺序,并不代表实施例所提供的技术方案的优劣。
126.实施例1
127.如图4所示,为本发明实施例提供的一种软件加载的方法的应用场景的示意图。
128.所述应用场景包括两个实体,客户端401和服务端402。客户端401向服务端402发送软件加载请求,服务端402接收到客户端401发送的软件加载请求后生成流式压缩包,并向客户端401发送所述流式压缩包,客户端401接收到所述流式压缩包后进行加载操作。
129.如图5所示,为本发明实施例提供的一种服务端软件加载的方法的流程图,包括:
130.步骤s501,响应于客户端发送的软件加载请求,扫描待加载的软件,确定映射所述待加载的软件中实体文件绝对路径的第一软件结构表;
131.作为一种可选的实施方式,扫描待加载的软件,获得软件结构信息,该软件结构信息包括如下信息中的至少一项:配置文件、脚本文件、目录结构、所述实体文件间的依赖关系。根据上述软件结构信息,确定映射所述待加载的软件中实体文件绝对路径的第一软件结构表。
132.步骤s502,在所述第一软件结构表中的绝对路径下增加对应的实体文件名称,得到第二软件结构表;
133.步骤s503,以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件;
134.作为一种可选的实施方式,以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,包括执行如下至少一个步骤:
135.根据所述第二软件结构表,确定所述待加载的软件中的目录结构信息并删除;
136.根据所述第二软件结构表,确定所述待加载的软件中的非实体文件类型的文件并删除;
137.以所述第二软件结构表为索引,确定所述待加载的软件中实体文件位置,并提取对应的实体文件。
138.作为一种可选的实施方式,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件包括:
139.将查找到的待加载的软件中的实体文件进行队列排序,将所述第二软件结构表添加到队尾进行重组,所述实体文件包括文件描述信息和压缩数据块。
140.作为一种可选的实施方式,所述文件描述信息包括:所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
141.步骤s504,对重组后的实体文件进行压缩,得到流式压缩包,并将所述流式压缩包发送到客户端。
142.作为一种可选的实施方式,得到流式压缩包之后,还包括:
143.在所述流式压缩包的头部添加所述待加载的软件的元数据,所述元数据包括所述待加载的软件的原始大小、签名信息、安装类型、版本中的至少一项。
144.如图6所示,为本发明实施例提供的一种流式压缩包制作的流程图,包括:
145.步骤s601,响应于客户端发送的软件加载请求,扫描待加载的软件,确定映射所述待加载的软件中实体文件绝对路径的第一软件结构表;
146.如图7所示,为本发明实施例提供的一种第一软件结构表生成过程的示意图。
147.需要说明的是,上述操作为预处理操作,预检、扫描待加载的软件,并记录上述待加载的软件的结构信息,用于软件结构的恢复;
148.作为一种可选的实施方式,待加载的软件的结构,即程序的运行时环境,包含程序的配置文件、脚本文件、目录结构、所述实体文件间的依赖关系等信息。
149.需要说明的是,上述待加载的软件的结构信息需要预先在本地组织好。
150.作为一种可选的实施方式,在上述预处理过程中,扫描用户预先在本地组织好的结构信息,并生成第一软件结构表。
151.步骤s602,在所述第一软件结构表中的绝对路径下增加对应的实体文件名称,得到第二软件结构表;
152.步骤s603,以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件;
153.需要说明的是,所述第二软件结构表,可以映射所述待加载的软件中实体文件依
赖关系,描述软件重组前和重组后的软件结构。依靠结构表,可以在客户端进行软件加载时,还原出待加载的软件的原始结构。
154.上述结构重组将复杂的软件结构,重组为简单的软件结构,主要是解决压缩块之间的依赖的问题。
155.例如,如果没有对软件结构进行重组,直接进行压缩操作,当软件程序结构较为复杂时,例如当软件中存在目录时,在压缩文件流中,文件块会对目录块产生依赖,必须先解析目录块,才能解析文件块。
156.如图8所示,为本发明实施例提供的一种压缩文件流的结构示意图,在如图8所示的压缩文件流中,文件块2与目录块4存在依赖关系,对文件块2的处理依赖于目录块4的文件信息,但是在目录块4还未接收过来的情况下,文件块2也无法处理。
157.作为一种可选的实施方式,以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,包括执行如下至少一个步骤:
158.(1)根据所述第二软件结构表,确定所述待加载的软件中的目录结构信息并删除;
159.(2)根据所述第二软件结构表,确定所述待加载的软件中的非实体文件类型的文件并删除;
160.(3)以所述第二软件结构表为索引,确定所述待加载的软件中实体文件位置,并提取对应的实体文件。
161.上述执行步骤包含两种实施方式,通过下述两种实施方式都可以获得待加载的软件中的实体文件。
162.实施方式1:通过删除待加载的软件中的相关信息,获得待加载的软件中的实体文件。
163.(1)根据所述第二软件结构表,确定所述待加载的软件中的目录结构信息并删除;
164.(2)根据所述第二软件结构表,确定所述待加载的软件中的非实体文件类型的文件并删除;
165.所述非实体文件类型的文件可以为软件中的特殊文件,如符号链接等。
166.实施方式2:以所述第二软件结构表为索引,提取对应的实体文件。
167.以所述第二软件结构表为索引,确定所述待加载的软件中实体文件位置,并提取对应的实体文件。
168.作为一种可选的实施方式,如图9所示,为本发明实施例提供的一种结构重组的过程示意图。
169.软件的原始结构中存在多级目录和多实体文件以及一些非实体文件类型的文件,如,软件的下级目录为配置、脚本、运行文件以及可执行文件,配置的下级目录为配置1和配置2。以软件结构表为索引,查找所述待加载的软件中的实体文件,所述实体文件包括配置1、配置2、脚本1、库文件1以及可执行文件,进行重组,得到重组后的软件结构,为单目录多实体文件的结构,软件的下级目录为配置1_摘要、配置2_摘要、脚本1_摘要、库文件1_摘要、可执行文件_摘要以及结构表2_摘要,并生成软件结构包。
170.按照上述方式对软件进行重组后,保证软件的软件结构是简单的单目录多实体文件的结构。
171.作为一种可选的实施方式,按照上述方式进行结构重组,生成一个临时的中间产
物软件结构包,保证压缩流中的压缩块没有跨块依赖,可独立进行处理解析。
172.步骤s604,对重组后的实体文件进行压缩,得到流式压缩包。
173.需要说明的是,上述压缩操作,采用标准的zip压缩格式,将软件结构包压缩为流式压缩包。
174.作为一种可选的实施方式,如图10所示,为本发明实施例提供的一种生成流式压缩包的过程示意图。
175.软件结构包进行无目录压缩得到流式压缩包,需要说明的是,所述式压缩包由顺序排列的实体文件构成,队尾为中心目录与目录结束标识。
176.需要说明的是,所述实体文件包括顺序排列的文件描述信息localfileheader(或者叫做zipfileblockheader)和压缩数据块(filedata)。
177.作为一种可选的实施方式,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件,包括:
178.将查找到的待加载的软件中的实体文件进行队列排序,将所述第二软件结构表添加到队尾进行重组,所述实体文件包括文件描述信息和压缩数据块。
179.作为一种可选的实施方式,所述文件描述信息还包括:所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
180.步骤s605,在所述流式压缩包的头部添加所述待加载的软件的元数据。
181.作为一种可选的实施方式,所述元数据包括所述待加载的软件的原始大小、签名信息、安装类型、版本中的至少一项。
182.如图11所示,为本发明实施例提供的一种为流式压缩包填充元数据的过程示意图。
183.所述流式压缩包和元数据经过后处理,所述元数据被添加到所述流式压缩包的头部,成为所述流式压缩包的描述头。
184.需要说明的是,上述压缩包头部package header,是作为软件完整压缩包的描述头存在,其作用是描述整个软件的一些基本信息,如版本,类型,签名校验等,和压缩过程的分块头并不一样,并不会对分块解压造成影响。
185.如图12所示,为本发明实施例提供的一种客户端软件加载的方法的流程图,包括:
186.步骤s1201,向服务端发送软件加载请求;
187.作为一种可选的实施方式,客户端可以向服务端发送软件加载请求;也可以响应于进行软件加载的指令,直接接收服务端发送的流式压缩包。
188.步骤1202,分块接收所述服务端发送的流式压缩包,并写入数据接收窗口;
189.步骤s1203,对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件;
190.步骤s1204,根据所述重组后的实体文件的第二软件结构表,将所述存储器中的所述重组后的实体文件的结构恢复为所述待加载的软件的结构。
191.本发明实施例所提供的上述服务端进行软件加载的方法,与本发明上述实施例1中的服务端属于同一发明构思,应用到上述实施例提供的进行软件加载的各种实施方式中,可以应用到本实施例中进行软件加载的方法,在这里不再重述。
192.本发明实施例所提供的上述客户端进行软件加载的方法,与本发明上述实施例1中的客户端属于同一发明构思,应用到上述实施例提供的进行软件加载的各种实施方式中,可以应用到本实施例中进行软件加载的方法,在这里不再重述。
193.作为一种可选的实施方式,对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件,包括:
194.根据所述重组后的实体文件的文件描述信息,将所述解压缩后的流式压缩包的分块重组,在所述存储器中得到重组后的实体文件。
195.作为一种可选的实施方式,所述重组后的实体文件的文件描述信息包括:
196.所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
197.作为一种可选的实施方式,如图13所示,为本发明实施例提供的一种描述头中包含的信息的示意图。
198.由于所述流式压缩包是格式固定的流式数据,而且所述流式压缩包中有充足的描述头描述实际的有效数据。
199.需要说明的是,上述描述头为文件描述信息localfileheader(或者叫做zipfileblockheader)。
200.上述描述头描述了跟在上述描述头后面的压缩数据块的信息,包含所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称等信息。上述信息足够决定上述描述头后面的压缩数据块的处理策略。
201.因此在软件加载的过程中,不需要开辟一块巨大的资源(即内存)来接收完整的流式压缩包,只需要一小块资源作为接收窗口,进行分块接收,按照文件描述信息的描述,分块解压,写入空闲的备用存储器flash即可。
202.作为一种可选的实施方式,当流式压缩包中的所有数据都写入备用存储器flash后,数据恢复还原reduce模块读取软件原始结构信息,并恢复软件的原始结构信息。
203.如图14所示,为本发明实施例提供的一种恢复软件原始结构的过程示意图。
204.所述数据恢复还原reduce模块读取重组后的软件结构,根据所述重组后的实体文件的第二软件结构表,将所述存储器中的所述重组后的实体文件的结构恢复为所述待加载的软件的结构。
205.至此,一个完整的软件加载的操作就完成了,在这个过程中,客户端只是开辟了一块很小的窗口区,比如32kb,作为接收解析缓冲区来完成边接收边加载的动作。
206.作为一种可选的实施方式,如图15所示,为本发明实施例提供的一种客户端软件加载的过程示意图。
207.带有描述头的流式压缩包,不断的被写入客户端的数据接收窗口(windows),当上述数据接收窗口写满时,对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并执行写入存储器flash的动作。
208.重复上述步骤,上述数据接收窗口继续接收数据,直至所述带有描述头的流式压缩包被接收完成,在所述存储器中得到重组后的实体文件。
209.作为一种可选的实施方式,如图16所示,为本发明实施例提供的一种流式分块解
压处理流程图。
210.步骤s1601,接收数据到数据接收窗口;
211.步骤s1602,判断所述接收的数据中是否含有文件描述信息,若是,执行步骤s1603,若否,执行步骤s1601;
212.步骤s1603,解析文件描述信息;
213.步骤s1604,将分片数据写入存储器;
214.步骤s1605,判断本实体文件是否接收完整,若是,执行步骤s1606,若否,执行步骤s1601;
215.步骤s1606,判断全部实体文件接收完整,若是,操作结束,若否,执行步骤s1601。
216.所述带有描述头的流式压缩包被接收完成后,此时存储器flash上的数据还是被重组过的结构,客户端的数据恢复还原模块(reduce),基于原始信息,执行恢复结构的动作,将所述存储器中的所述重组后的实体文件的结构恢复为所述待加载的软件的结构。
217.实施例2
218.本发明实施例提供一种软件加载的设备1700,应用于服务端,包括存储器1701和处理器1702,如图17所示,其中:
219.所述存储器用于存储计算机程序;
220.所述处理器用于读取所述存储器中的程序并执行如下步骤:
221.响应于客户端发送的软件加载请求,扫描待加载的软件,确定映射所述待加载的软件中实体文件绝对路径的第一软件结构表;
222.在所述第一软件结构表中的绝对路径下增加对应的实体文件名称,得到第二软件结构表;
223.以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件;
224.对重组后的实体文件进行压缩,得到流式压缩包,并将所述流式压缩包发送到客户端。
225.可选地,得到流式压缩包之后,所述处理器还用于:
226.在所述流式压缩包的头部添加所述待加载的软件的元数据,所述元数据包括所述待加载的软件的原始大小、签名信息、安装类型、版本中的至少一项。
227.可选地,所述处理器以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,包括执行如下至少一个步骤:
228.根据所述第二软件结构表,确定所述待加载的软件中的目录结构信息并删除;
229.根据所述第二软件结构表,确定所述待加载的软件中的非实体文件类型的文件并删除;
230.以所述第二软件结构表为索引,确定所述待加载的软件中实体文件位置,并提取对应的实体文件。
231.可选地,所述处理器查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件,包括:
232.将查找到的待加载的软件中的实体文件进行队列排序,将所述第二软件结构表添加到队尾进行重组,所述实体文件包括文件描述信息和压缩数据块。
233.可选地,所述文件描述信息包括:所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
234.可选地,所述处理器扫描待加载的软件,获得如下信息中的至少一项:配置文件、脚本文件、目录结构、所述实体文件间的依赖关系。
235.本发明实施例提供一种软件加载的设备1800,应用于客户端,包括存储器1801和处理器1802,如图18所示,其中:
236.所述存储器用于存储计算机程序;
237.所述处理器用于读取所述存储器中的程序并执行如下步骤:
238.向服务端发送软件加载请求;
239.分块接收所述服务端发送的流式压缩包,并写入数据接收窗口;
240.对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件;
241.根据所述重组后的实体文件的第二软件结构表,将所述存储器中的所述重组后的实体文件的结构恢复为所述待加载的软件的结构。
242.可选地,所述处理器对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件,包括:
243.根据所述重组后的实体文件的文件描述信息,将所述解压缩后的流式压缩包的分块重组,在所述存储器中得到重组后的实体文件。
244.可选地,所述重组后的实体文件的文件描述信息包括:
245.所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
246.本发明实施例所提供的上述服务端进行软件加载的设备,与本发明上述实施例1中的服务端属于同一发明构思,应用到上述实施例提供的进行软件加载的各种实施方式中,可以应用到本实施例中进行软件加载的方法,在这里不再重述。
247.本发明实施例所提供的上述客户端进行软件加载的设备,与本发明上述实施例1中的客户端属于同一发明构思,应用到上述实施例提供的进行软件加载的各种实施方式中,可以应用到本实施例中进行软件加载的方法,在这里不再重述。
248.本发明实施例提供一种软件加载的装置,应用于服务端,如图19所示,包括:
249.第一结构表生成单元1901,用于响应于客户端发送的软件加载请求,扫描待加载的软件,确定映射所述待加载的软件中实体文件绝对路径的第一软件结构表;
250.第二结构表生成单元1902,用于在所述第一软件结构表中的绝对路径下增加对应的实体文件名称,得到第二软件结构表;
251.结构重组单元1903,用于以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件;
252.压缩包生成单元1904,用于对重组后的实体文件进行压缩,得到流式压缩包,并将所述流式压缩包发送到客户端。
253.可选地,得到流式压缩包之后,所述压缩包生成单元还用于:
254.在所述流式压缩包的头部添加所述待加载的软件的元数据,所述元数据包括所述
待加载的软件的原始大小、签名信息、安装类型、版本中的至少一项。
255.可选地,所述结构重组单元以所述第二软件结构表为索引,查找所述待加载的软件中的实体文件,包括执行如下至少一个步骤:
256.根据所述第二软件结构表,确定所述待加载的软件中的目录结构信息并删除;
257.根据所述第二软件结构表,确定所述待加载的软件中的非实体文件类型的文件并删除;
258.以所述第二软件结构表为索引,确定所述待加载的软件中实体文件位置,并提取对应的实体文件。
259.可选地,所述结构重组单元查找所述待加载的软件中的实体文件,进行重组,并将所述第二软件结构表添加在实体文件得到重组后的实体文件,包括:
260.将查找到的待加载的软件中的实体文件进行队列排序,将所述第二软件结构表添加到队尾进行重组,所述实体文件包括文件描述信息和压缩数据块。
261.可选地,所述文件描述信息包括:所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
262.可选地,所述第一结构表生成单元扫描待加载的软件,获得如下信息中的至少一项:配置文件、脚本文件、目录结构、所述实体文件间的依赖关系。
263.本发明实施例提供一种软件加载的装置,应用于客户端,如图20所示,包括:
264.请求发送单元2001,用于向服务端发送软件加载请求;
265.数据接收单元2002,用于分块接收所述服务端发送的流式压缩包,并写入数据接收窗口;
266.解压缩单元2003,用于对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件;
267.结构恢复单元2004,用于根据所述重组后的实体文件的第二软件结构表,将所述存储器中的所述重组后的实体文件的结构恢复为所述待加载的软件的结构。
268.可选地,所述解压缩单元对所述数据接收窗口写入的流式压缩包的分块进行解压缩,并写入存储器,在所述存储器中得到重组后的实体文件,包括:
269.根据所述重组后的实体文件的文件描述信息,将所述解压缩后的流式压缩包的分块重组,在所述存储器中得到重组后的实体文件。
270.可选地,所述重组后的实体文件的文件描述信息包括:
271.所述实体文件的压缩数据块的大小、所述实体文件的压缩数据块解压缩后的大小、所述实体文件的压缩数据块的所属文件名称。
272.本发明实施例所提供的上述服务端进行软件加载的装置,与本发明上述实施例1中的服务端属于同一发明构思,应用到上述实施例提供的进行软件加载的各种实施方式中,可以应用到本实施例中进行软件加载的方法,在这里不再重述。
273.本发明实施例所提供的上述客户端进行软件加载的装置,与本发明上述实施例1中的客户端属于同一发明构思,应用到上述实施例提供的进行软件加载的各种实施方式中,可以应用到本实施例中进行软件加载的方法,在这里不再重述。
274.本发明实施例提供一种计算机程序介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例1中提供的应用于服务端的一种软件加载的方法的步骤。
275.本发明实施例提供一种计算机程序介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例1中提供的应用于客户端的一种软件加载的方法的步骤。
276.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
277.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
278.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
279.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
280.所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
281.以上对本技术所提供的技术方案进行了详细介绍,本技术中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
282.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
283.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或
方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
284.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
285.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
286.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

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

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

相关文献