数据写入方法、数据压缩方法及数据解压方法技术

技术编号:34967056 阅读:20 留言:0更新日期:2022-09-17 12:48
本发明专利技术涉及计算机技术领域,公开了一种数据写入方法、数据压缩方法及数据解压方法,数据写入方法包括:在线程写入目标文件前,获取目标文件的文件锁;如果线程获取文件锁失败,则申请第一缓存页,将第一数据写入第一缓存页中;将第一缓存页存储在目标文件对应的第一数据结构中,判断线程中待写入目标文件的全部数据是否均完成写入;如果未完成写入,则重复执行从申请第一缓存页至判断线程中待写入目标文件的全部数据是否均完成写入的步骤;如果已完成写入,将全部第一缓存页存储至目标文件对应的第二数据结构中。通过本发明专利技术的技术方案,可大幅度缩短数据写入文件的处理时间。可大幅度缩短数据写入文件的处理时间。可大幅度缩短数据写入文件的处理时间。

【技术实现步骤摘要】
数据写入方法、数据压缩方法及数据解压方法


[0001]本专利技术涉及计算机
,尤其涉及一种数据写入方法和装置、数据压缩方法、数据解压方法、计算设备及可读存储介质。

技术介绍

[0002]在各操作系统中,利用数据压缩工具,将初始数据压缩后生成的数据包称为压缩包,体积可以压缩至原本的几分之一甚至更小。压缩通常是一种通过特定算法减小文件大小的机制,通过该机制可以减小文件的字节总数,减少文件的磁盘占用空间,使文件即使通过较慢的网络连接也可以实现更快的传输。
[0003]现有的压缩方式是将原始文件按数据的顺序进行压缩,生成一个或多个子压缩包,然后采用单线程将多个子压缩包合并为一个整体的压缩包。现有的解压方式是将一个压缩包解压为多个子数据包,然后采用单线程按顺序将多个子数据包合并为原始文件。然而,采用单线程进行合并的过程是将子压缩包/子数据包串联起来,当处理大文件或者数量较多的文件时这一过程尤为耗时。在上述方案的基础上即使通过多线程进行压缩/解压,即在压缩的时候通过多个线程将原始文件拆分为N份数据,然后顺序合并成一个压缩包,解压的时候通过多线程将压缩包还原成N份数据,然后顺序还原成原始文件,通过多线程运行压缩/解压算法,可以减少压缩/解压算法所耗时间,但在最后的合并和还原的过程仍然以单一线程串联的方式执行,没有实现完全的多线程化,存在了性能损失。
[0004]为此,本专利技术提供一种数据写入方案,以解决现有技术中存在的问题。

技术实现思路

[0005]为此,本专利技术提供一种数据写入方法、装置、数据压缩方法、数据解压方法、计算设备及可读存储介质,以解决或至少缓解上面存在的问题。
[0006]根据本专利技术的第一个方面,提供了一种数据写入方法,方法包括:在线程写入目标文件前,获取目标文件的文件锁;如果线程获取文件锁失败,则:申请第一缓存页,将第一数据写入第一缓存页中;将第一缓存页存储在目标文件对应的第一数据结构中,并判断线程中待写入目标文件的全部数据是否均完成写入;如果未完成写入,则重复执行从申请第一缓存页至判断线程中待写入目标文件的全部数据是否均完成写入的步骤;如果已完成写入,则将全部第一缓存页存储至目标文件对应的第二数据结构中。
[0007]可选地,在根据本专利技术的数据写入方法中,还包括:如果线程获取文件锁成功,则获取可写入的缓存页,将第一数据写入可写入的缓存页中;如果获取可写入的缓存页失败,则申请第二缓存页,将第一数据写入第二缓存页中,并将第二缓存页存储至目标文件对应的第二数据结构中;判断线程中待写入目标文件的全部数据是否均完成写入;如果未完成写入,则重复执行获取可写入的缓存页的步骤。
[0008]可选地,在根据本专利技术的数据写入方法中,还包括:在将第一缓存页或第二缓存页存储至目标文件对应的第二数据结构中时,如果目标文件对应的第二数据结构中已存在缓
存页,则将已存在的缓存页与第一缓存页或第二缓存页进行合并,并去除重复的数据。
[0009]可选地,在根据本专利技术的数据写入方法中,第一数据结构包括链表,第二数据结构包括基数树。
[0010]根据本专利技术的第二个方面,提供了一种数据压缩方法,方法包括:当对第一待处理数据进行压缩处理时,通过多个线程将第一待处理数据压缩为多个压缩数据包;多个线程中的每个线程执行如上所述的方法,将多个压缩数据包中的每个压缩数据包写入目标文件对应的第二数据结构中,生成第一待处理数据的压缩文件。
[0011]根据本专利技术的第三个方面,提供了一种数据解压方法,方法包括:当对第二待处理数据进行解压处理时,通过多个线程将第二待处理数据解压为多个解压数据包;多个线程中的每个线程执行如上所述的方法,将多个解压数据包中的每个解压数据包写入目标文件对应的第二数据结构中,生成第二待处理数据的解压数据。
[0012]根据本专利技术的第四个方面,提供了一种数据写入装置,包括:文件锁获取单元,在线程写入目标文件前,获取目标文件的文件锁;数据写入单元,适于当线程获取文件锁失败时,申请第一缓存页,将第一数据写入第一缓存页中,将第一缓存页存储在目标文件对应的第一数据结构中,并判断线程中待写入目标文件的全部数据是否均完成写入,如果未完成写入,则重复执行从申请第一缓存页至判断线程中待写入目标文件的全部数据是否均完成写入的步骤;缓存页存储单元,适于当线程中待写入目标文件已完成写入时,将全部第一缓存页存储至目标文件对应的第二数据结构中。
[0013]可选地,在根据本专利技术的数据写入装置中,数据写入单元还适于当线程获取文件锁成功时,获取可写入的缓存页,将第一数据写入可写入的缓存页中;在获取可写入的缓存页失败时,则申请第二缓存页,将第一数据写入第二缓存页中,并将第二缓存页存储至目标文件对应的第二数据结构中;判断线程中待写入目标文件的全部数据是否均完成写入;如果未完成写入,则重复执行获取可写入的缓存页的步骤。
[0014]根据本专利技术的第五个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,程序指令包括用于执行如上所述的方法的指令。
[0015]根据本专利技术的第六个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的方法。
[0016]根据本专利技术的技术方案,通过在线程写入目标文件前,获取目标文件的文件锁,如果线程获取文件锁失败,则申请第一缓存页,将第一数据写入到第一缓存页中,并将第一缓存页存储在目标文件对应的第一数据结构中,重复这一过程,使该线程待写入目标文件的全部数据均完成写入,最后将全部的第一缓存页存储至目标文件对应的第二数据结构中,避免了因获取文件锁失败所耗费的等待时间,实现通过多线程并行将数据写入到目标文件对应的第二数据结构中,无需等待文件锁,大幅度缩短数据写入文件的处理时间。
[0017]进一步地,当对第一待处理数据进行压缩处理以及对第二待处理数据进行解压处理时,在多个线程中,将多个压缩数据包中的每个压缩数据包写入目标文件对应的第二数据结构中,通过多线程压缩/解压数据,大幅度缩短了数据压缩/解压所花费的时间,提升了数据压缩/解压的效率。
[0018]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,
而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0019]为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0020]图1示出了计算设备100的物理组件(即,硬件)的框图;图2示出了根据本专利技术一个实施例的数据写入方法200的流程图;图3本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据写入方法,所述方法包括:在线程写入目标文件前,获取所述目标文件的文件锁;如果所述线程获取所述文件锁失败,则:申请第一缓存页,将第一数据写入所述第一缓存页中;将所述第一缓存页存储在所述目标文件对应的第一数据结构中,并判断所述线程中待写入所述目标文件的全部数据是否均完成写入;如果未完成写入,则重复执行从所述申请第一缓存页至判断所述线程中待写入所述目标文件的全部数据是否均完成写入的步骤;如果已完成写入,则将全部所述第一缓存页存储至所述目标文件对应的第二数据结构中。2.根据权利要求1所述的方法,还包括:如果所述线程获取所述文件锁成功,则获取可写入的缓存页,将所述第一数据写入所述可写入的缓存页中;如果获取可写入的缓存页失败,则申请第二缓存页,将所述第一数据写入所述第二缓存页中,并将所述第二缓存页存储至所述目标文件对应的第二数据结构中;判断所述线程中待写入所述目标文件的全部数据是否均完成写入;如果未完成写入,则重复执行所述获取可写入的缓存页的步骤。3.根据权利要求2所述的方法,还包括:在将第一缓存页或第二缓存页存储至所述目标文件对应的第二数据结构中时,如果所述目标文件对应的第二数据结构中已存在缓存页,则将已存在的缓存页与第一缓存页或第二缓存页进行合并,并去除重复的数据。4.根据权利要求1至3中任一项所述的方法,其中,所述第一数据结构包括链表,所述第二数据结构包括基数树。5.一种数据压缩方法,所述方法包括:当对第一待处理数据进行压缩处理时,通过多个线程将所述第一待处理数据压缩为多个压缩数据包;所述多个线程中的每个线程执行权利要求1至4中任一项所述的方法,将所述多个压缩数据包中的每个压缩数据包写入目标文件对应的第二数据结构中,生成第一待处理数据的压缩文件。6.一种数据解压方法,所述方法包括:当对第二待处理数据...

【专利技术属性】
技术研发人员:周鹏余昇锦胡翔陈毅翀
申请(专利权)人:统信软件技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1