本申请涉及文件处理技术领域,尤其涉及一种文件上传方法及文件查询方法、电子设备、计算机可读存储介质。
背景技术:
分布式文件系统(distributedfilesystem,dfs)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。dfs为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,从而使用户访问分布在网络上的共享文件更加简便。
由于现有的分布式文件系统中,大文件是直接上传至分布式网络中存储,需占据较大存储空间,无法高效地利用服务器的存储资源。
技术实现要素:
本申请实施例的目的是提供一种文件上传方法及文件查询方法、电子设备、计算机可读存储介质,能够将大文件全部压缩后再在分布式网络存储,大大节省了存储空间。
为达到上述目的,本申请实施例的技术方案是这样实现的:
本申请实施例提供的文件上传方法,包括:
接收客户端上传的源文件;
对所述源文件进行加密,得到加密文件;
对所述源文件进行压缩,得到压缩文件;
将所述压缩文件上传至分布式网络,接收所述分布式网络返回的所述压缩文件在所述分布式网络中的文件地址;
将所述加密文件和所述文件地址上传至区块链系统进行保存,其中,所述加密文件和所述文件地址与特定标识绑定。
在一可选实施方式中,所述对所述源文件进行加密,得到加密文件,包括:
对所述源文件进行散列哈希加密,得到所述源文件对应的文件指纹,其中,所述文件指纹是指所述源文件对应的加密文件。
在一可选实施方式中,所述对所述源文件进行压缩,得到压缩文件,包括:
将所述源文件添加到待压缩文件队列,所述待压缩文件队列包括n个待压缩的源文件,n为正整数;
利用m个线程对所述待压缩文件队列中的m个源文件进行并行压缩,得到m个压缩文件;m为小于等于n的正整数;
将所述m个压缩文件分别添加至压缩文件队列。
在一可选实施方式中,所述利用m个线程对所述待压缩文件队列中的m个源文件进行并行压缩,包括:
利用m个线程从所述待压缩文件队列中并行取出m个源文件,并对所述m个源文件进行并行压缩。
在一可选实施方式中,确定线程池中的处于空闲状态的线程的数量为p,p为正整数;
如果p大于等于m,则唤醒所述线程池中的m个处于空闲状态的线程,唤醒后的m个线程用于处理所述m个源文件的压缩任务;
如果p小于m,则等待所述线程池中的处于空闲状态的线程的数量达到m。在一可选实施方式中,所述将所述压缩文件上传至ipfs网络,包括:
利用分布式线程从所述压缩文件队列中串行取出压缩文件,将取出的压缩文件上传至分布式网络。
本申请实施例提供的文件查询方法,包括:
接收客户端发送的特定标识;
从区块链系统中查找与所述特定标识对应的加密文件和文件地址;
根据所述文件地址从分布式网络获取压缩文件;
对所述压缩文件进行解压,得到所述压缩文件对应的源文件;
对所述源文件进行加密,得到参考加密文件;
对比所述参考加密文件和区块链系统中查找到的所述加密文件是否一致,若一致,则确定从分布式网络获取到的压缩文件未被篡改。
在一可选实施方式中,所述对所述源文件进行加密,得到参考加密文件,包括:
对所述源文件进行散列哈希加密,得到所述源文件对应的文件指纹,其中,所述文件指纹是指所述参考加密文件。在一可选实施方式中,所述对所述压缩文件进行解压,得到所述压缩文件对应的源文件,包括:
将所述压缩文件添加到待解压文件队列,所述待解压文件队列包括n个待解压的压缩文件,n为正整数;
利用m个线程对所述待解压文件队列中的m个压缩文件进行并行解压,得到m个源文件;m为小于等于n的正整数;
将所述m个源文件分别添加至解压文件队列。
在一可选实施方式中,所述利用m个线程对所述待解压文件队列中的m个压缩文件进行并行解压,包括:
利用m个线程从所述待解压文件队列中并行取出m个压缩文件,并对所述m个压缩文件进行并行解压。
在一可选实施方式中,所述方法还包括:确定线程池中的处于空闲状态的线程的数量为p,p为正整数;
如果p大于等于m,则唤醒所述线程池中的m个处于空闲状态的线程,唤醒后的m个线程用于处理所述m个源文件的压缩任务;
如果p小于m,则等待所述线程池中的处于空闲状态的线程的数量达到m。
本申请实施例提供的电子设备,包括:
第一接收单元,用于接收客户端上传的源文件;
加密单元,用于对所述源文件进行加密,得到加密文件;
压缩单元,用于对所述源文件进行压缩,得到压缩文件;
第一发送单元,用于将所述压缩文件上传至分布式网络;
第二接收单元,用于接收所述分布式网络返回的所述压缩文件在所述分布式网络中的文件地址;
第二发送单元,用于将所述加密文件和所述文件地址上传至区块链系统进行保存,其中,所述加密文件和所述文件地址与特定标识绑定。
在一可选实施方式中,所述加密单元,具体用于对所述源文件进行散列哈希加密,得到所述源文件对应的文件指纹,其中,所述文件指纹是指所述源文件对应的加密文件。
在一可选实施方式中,所述压缩单元包括:
第一添加子单元,用于将所述源文件添加到待压缩文件队列,所述待压缩文件队列包括n个待压缩的源文件,n为正整数;
任务处理子单元,用于利用m个线程对所述待压缩文件队列中的m个源文件进行并行压缩,得到m个压缩文件;m为小于等于n的正整数;
第二添加子单元,用于将所述m个压缩文件分别添加至压缩文件队列。
在一可选实施方式中,所述任务处理子单元,具体用于利用m个线程从所述待压缩文件队列中并行取出m个源文件,并对所述m个源文件进行并行压缩。
在一可选实施方式中,所述任务处理子单元,还用于确定线程池中的处于空闲状态的线程的数量为p,p为正整数;如果p大于等于m,则唤醒所述线程池中的m个处于空闲状态的线程,唤醒后的m个线程用于处理所述m个源文件的压缩任务;如果p小于m,则等待所述线程池中的处于空闲状态的线程的数量达到m。
在一可选实施方式中,所述第一发送单元,具体用于利用分布式线程从所述压缩文件队列中串行取出压缩文件,将取出的压缩文件上传至分布式网络。
在一可选实施方式中,所述第一发送单元,具体用于利用分布式线程从所述压缩文件队列中串行取出压缩文件,将取出的压缩文件上传至分布式网络。
本申请实施例提供的电子设备,包括:
接收单元,用于接收客户端发送的特定标识;
查找单元,用于从区块链系统中查找与所述特定标识对应的加密文件和文件地址;
获取单元,用于根据所述文件地址从分布式网络获取压缩文件;
解压单元,用于对所述压缩文件进行解压,得到所述压缩文件对应的源文件;
加密单元,用于对所述源文件进行加密,得到参考加密文件;
对比单元,用于对比所述参考加密文件和区块链系统中查找到的所述加密文件是否一致,若一致,则确定从分布式网络获取到的压缩文件未被篡改。
在一可选实施方式中,所述加密单元,具体用于对所述源文件进行散列哈希加密,得到所述源文件对应的文件指纹,其中,所述文件指纹是指所述参考加密文件。
在一可选实施方式中,所述解压单元包括:
第一添加子单元,用于将所述压缩文件添加到待解压文件队列,所述待解压文件队列包括n个待解压的压缩文件,n为正整数;
任务处理子单元,用于利用m个线程对所述待解压文件队列中的m个压缩文件进行并行解压,得到m个源文件;m为小于等于n的正整数;
第二添加子单元,用于将所述m个源文件分别添加至解压文件队列。
在一可选实施方式中,所述任务处理子单元,具体用于利用m个线程从所述待解压文件队列中并行取出m个压缩文件,并对所述m个压缩文件进行并行解压。
在一可选实施方式中,所述任务处理子单元,还用于确定线程池中的处于空闲状态的线程的数量为p,p为正整数;如果p大于等于m,则唤醒所述线程池中的m个处于空闲状态的线程,唤醒后的m个线程用于处理所述m个压缩文件的解压任务;如果p小于m,则等待所述线程池中的处于空闲状态的线程的数量达到m。
本申请实施例提供了一种电子设备,所述电子设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例提供的文件上传方法。
本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时用于实现上述实施例提供的文件上传方法。
本申请实施例的上述技术方案,后台服务器接收到客户端上传的源文件后,对所述源文件进行加密,得到加密文件,以及对所述源文件进行压缩,得到压缩文件。对于压缩文件来说,将所述压缩文件上传至分布式网络,并接收所述分布式网络返回的所述压缩文件在所述分布式网络中的文件地址。对于加密文件来说,将所述加密文件和所述文件地址上传至区块链系统进行保存,其中,所述加密文件和所述文件地址与特定标识绑定。本申请实施例的技术方案能够将大文件通过压缩的形式上传至分布式网络,大大节省了分布式网络的存储空间,能够更加高效地管理分布式网络的内存。另一方面,本申请实施例的技术方案能够将加密文件和压缩文件在分布式网络中的文件地址存储在区块链系统中,保障了加密文件和文件地址的安全。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的文件上传方法的流程示意图;
图2为本申请实施例提供的文件并行压缩的原理图;
图3为本申请实施例提供的文件查询方法的流程示意图;
图4为本申请实施例提供的文件并行解压的原理图;
图5为本申请实施例提供的电子设备的结构示意图一;
图6为本申请实施例提供的电子设备的结构示意图二。
具体实施方式
下面将参照附图更详细地描述本申请公开的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请,而不应被这里阐述的具体实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请公开的范围完整的传达给本领域的技术人员。
在下文的描述中,给出了大量具体的细节以便提供对本申请更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本申请可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本申请发生混淆,对于本领域公知的一些技术特征未进行描述;即,这里不描述实际实施例的全部特征,不详细描述公知的功能和结构。
在此使用的术语的目的仅在于描述具体实施例并且不作为本申请的限制。在此使用时,单数形式的“一”、“一个”和“所述/该”也意图包括复数形式,除非上下文清楚指出另外的方式。还应明白术语“组成”和/或“包括”,当在该说明书中使用时,确定所述特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或更多其它的特征、整数、步骤、操作、元件、部件和/或组的存在或添加。在此使用时,术语“和/或”包括相关所列项目的任何及所有组合。
在现有技术中将文件上传至分布式网络存储时,并没有将文件进行处理而是直接上传至网络存储,依然占据着较大的存储空间,无法高效地利用存储空间,节省内存资源。此外,传统的将文件上传至分布式网络存储时,还可能存在着以下问题中的一种或多种:1、为了节省存储空间,一般会将文件进行压缩再上传,但是压缩算法一般比较复杂,执行所需时间过长。2、将文件上传至分布式网络存储时,很难保证文件不被其它用户篡改。
为此,提出了本申请实施例的以下技术方案。以下对本申请实施例的技术方案进行详细说明。
图1为本申请实施例提供的文件上传方法的流程示意图,需要说明的是,以下实施例中的执行主语为服务器,服务器用于实现客户端对应的后台,客户端可以位于终端(如笔记本,台式机等),如图1所示,所述文件上传方法包括以下步骤:
步骤101,接收客户端上传的源文件。
在一可选实施例中,客户端可以通过http-post协议上传源文件给服务器。
这里,源文件是通过二进制数据流的形式由客户端上传给服务器。
步骤102,对所述源文件进行加密,得到加密文件。
在一可选实施例中,可以使用哈希算法对源文件进行加密,得到加密文件。这里,哈希算法例如可以是md5信息摘要算法(messagedigestalgorithmmd5)。
使用哈希算法对源文件进行加密,具体为:对所述源文件进行散列哈希加密,得到所述源文件对应的文件指纹,其中,所述文件指纹是指所述源文件对应的加密文件。
步骤103,对所述源文件进行压缩,得到压缩文件。
需要说明的是,上述步骤102和步骤103并不限定执行先后顺序。
步骤104,将所述压缩文件上传至分布式网络,接收所述分布式网络返回的所述压缩文件在所述分布式网络中的文件地址。
在一可选实施例中,分布式网络可以是星际文件系统(inter-planetaryfilesystem,ipfs)。这里,ipfs是一种内容可寻址,版本化,点对点的超媒体分布式网络传输系统,可以永久地,去中心化地保存和共享文件。
在一个示例中,服务器对源文件进行压缩,将压缩文件上传至分布式网络,分布式网络将压缩文件保存到一个特定的文件地址上,然后,将该文件地址返回给服务器。这里,文件地址代表压缩文件在分布式网络中的路径,压缩文件的文件地址也可以称为压缩文件的链接,该链接的名称即为路径名。
步骤105,将所述加密文件和所述文件地址上传至区块链系统进行保存,其中,所述加密文件和所述文件地址与特定标识绑定。
具体地,加密文件和文件地址与特定标识绑定是为查询文件时,提供一个查询id,以便用户快速地查找到所需文件。本申请实施例提供了一种文件上传方法,服务器端接收客户端上传的源文件,并对源文件进行压缩得到压缩文件,以及对源文件进行加密得到加密文件。一方面,服务器将压缩文件上传至分布式网络,分布式网络向服务器返回压缩文件的文件地址。然后,服务器将文件指纹和文件地址一起上传至区块链系统进行保存。本申请实施例的技术方案能够将大文件通过压缩的形式上传至分布式网络,大大节省了分布式网络的存储空间,能够更加高效地管理分布式网络的内存。另一方面,本申请实施例的技术方案能够将加密文件和压缩文件在分布式网络中的文件地址存储在区块链系统中,保障了加密文件和文件地址的安全。
本申请实施例中,上述步骤103中对源文件进行压缩时,如果待压缩的源文件的数目为1个,则可以直接对该源文件进行压缩;如果待压缩的源文件的数目为多个时,则可以对多个源文件进行并行压缩,从而提高压缩效率。以下结合图2对如何对多个源文件进行并行压缩进行说明。
参照图2,创建一个待压缩文件队列和压缩文件队列,其中,待压缩文件队列用于存储待压缩的源文件,压缩文件队列用于存储压缩文件。本申请实施例通过线程来处理压缩任务,一个线程仅用于处理一个源文件的压缩任务。可以通过多个线程来并行处理多个源文件的压缩任务。线程池中包括多个线程,每个线程具有自己的id,线程的状态可以是空闲状态(也即悬挂状态)或者是工作状态。对于处于工作状态的线程来说,当该线程处理完相应的任务(如压缩任务)后被挂起而处于空闲状态。对于处于空闲状态的线程来说,当该线程被唤醒后处于工作状态,处于工作状态的线程能够处理压缩任务。需要说明的是,线程池中的线程的数量等于多核cpu核心数。
基于图2所示的架构,服务器将所述源文件(即当前的源文件)添加到待压缩文件队列,所述待压缩文件队列包括n个待压缩的源文件,n为正整数;利用m个线程对所述待压缩文件队列中的m个源文件进行并行压缩,得到m个压缩文件;m为小于等于n的正整数;将所述m个压缩文件分别添加至压缩文件队列。这里,可以利用m个线程从所述待压缩文件队列中并行取出m个源文件,并对所述m个源文件进行并行压缩。
例如:待压缩文件队列包括5个待压缩的源文件,利用5个线程对5个待压缩的源文件进行并行压缩,将得到的5个压缩文件添加至压缩文件队列。
例如:待压缩文件队列包括5个待压缩的源文件,利用3个线程对5个待压缩的源文件中的其中3个待压缩的源文件进行并行压缩,将得到的3个压缩文件添加至压缩文件队列。
上述方案中,能够执行压缩任务的线程是数目基于线程池中的空闲线程的数量确定,具体地,确定线程池中的处于空闲状态的线程的数量为p,p为正整数;如果p大于等于m,则唤醒所述线程池中的m个处于空闲状态的线程,唤醒后的m个线程用于处理所述m个源文件的压缩任务;如果p小于m,则等待所述线程池中的处于空闲状态的线程的数量达到m。
例如:线程池中的处于空闲状态的线程的数量为5个,则可以唤醒这5个线程来并行处理压缩任务。
例如:线程池中的处于空闲状态的线程的数量为3个,则可以唤醒这3个线程来并行处理压缩任务。
本申请实施例中,上述步骤104可以通过以下方式来实现:利用分布式网络的线程从所述压缩文件队列中串行取出压缩文件,将取出的压缩文件上传至分布式网络。可选地,分布式网络的线程可以是ipfs线程。需要说明的是,串行取出的意思是取出一个压缩文件并上传至分布式网络后,再接着取出下一个压缩文件并上传至分布式网络。
本实施例中,通过同时控制多个线程对多个带压缩文件进行并行压缩,该压缩算法比现有技术的压缩算法更加简单高效,提高了压缩效率。
图3为本申请实施例提供的文件查询方法的流程示意图,需要说明的是,以下实施例中的执行主语为服务器,服务器用于实现客户端对应的后台,客户端可以位于终端(如笔记本,台式机等),如图3所示,所述文件查询方法包括以下步骤:
步骤301,接收客户端发送的特定标识。
本申请实施例中,对于一个源文件来说,该源文件对应的加密文件和文件地址与特定标识具有绑定关系。其中,加密文件和文件地址存储在区块链系统中。可以通过该特定标识在区块链系统中查询对应的加密文件和文件地址。
需要说明的是,特定标识的作用是查询作用,因此也可以将特定标识称为查询id。
步骤302,从区块链系统中查找与所述特定标识对应的加密文件和文件地址。
具体地,当服务器接收到客户端发送的特定标识时,根据特定标识与文件地址之间的对应关系从区块链系统中查找到对应的加密文件和文件地址。
步骤303,根据所述文件地址从分布式网络获取压缩文件。
步骤304,对所述压缩文件进行解压,得到所述压缩文件对应的源文件。
本申请实施例中,上述步骤304中对压缩文件进行解压时,如果待解压的压缩文件的数目为1个,则可以直接对该压缩文件进行解压;如果待解压的压缩文件的数目为多个时,则可以对多个压缩文件进行并行解压,从而提高解压效率。以下结合图4对如何对多个压缩文件进行并行解压进行说明。
参照图4,创建一个待解压文件队列和解压文件队列,其中,待解压文件队列用于存储待解压的压缩文件,解压文件队列用于存储源文件。本申请实施例通过线程来处理解压任务,一个线程仅用于处理一个压缩文件的解压任务。可以通过多个线程来并行处理多个压缩文件的解压任务。线程池中包括多个线程,每个线程具有自己的id,线程的状态可以是空闲状态(也即悬挂状态)或者是工作状态。对于处于工作状态的线程来说,当该线程处理完相应的任务(如解压任务)后被挂起而处于空闲状态。对于处于空闲状态的线程来说,当该线程被唤醒后处于工作状态,处于工作状态的线程能够处理解压任务。需要说明的是,线程池中的线程的数量等于多核cpu核心数。
基于图2所示的架构,服务器将所述压缩文件(即当前的压缩文件)添加到待解压缩文件队列,所述待解压缩文件队列包括n个待解压缩的压缩文件,n为正整数;利用m个线程对所述待解压缩文件队列中的m个压缩文件进行并行解压缩,得到m个源文件;m为小于等于n的正整数;将所述m个解压缩的源文件分别添加至源文件队列。这里,可以利用m个线程从所述待解压文件队列中并行取出m个压缩文件,并对所述m个压缩文件进行并行解压。
例如:待解压文件队列包括5个待解压的压缩文件,利用5个线程对5个待解压的压缩文件进行并行解压,将得到的5个源文件添加至解压文件队列。
例如:待解压文件队列包括5个待解压的压缩文件,利用3个线程对5个待解压的压缩文件中的3个压缩文件进行并行解压,将得到的3个源文件添加至解压文件队列。
上述方案中,能够执行解压任务的线程是数目基于线程池中的空闲线程的数量确定,具体地,确定线程池中的处于空闲状态的线程的数量为p,p为正整数;如果p大于等于m,则唤醒所述线程池中的m个处于空闲状态的线程,唤醒后的m个线程用于处理所述m个源文件的解压任务;如果p小于m,则等待所述线程池中的处于空闲状态的线程的数量达到m。
例如:线程池中的处于空闲状态的线程的数量为5个,则可以唤醒这5个线程来并行处理解压任务。
例如:线程池中的处于空闲状态的线程的数量为3个,则可以唤醒这3个线程来并行处理解压任务。
步骤305,对所述源文件进行加密,得到参考加密文件。
在一可选实施例中,可以使用哈希算法对源文件进行加密,得到加密文件。这里,哈希算法例如可以是md5信息摘要算法。
使用哈希算法对源文件进行加密,具体为:对所述源文件进行散列哈希加密,得到所述源文件对应的文件指纹,其中,所述文件指纹是指所述源文件对应的加密文件。
这里的对源文件进行加密的算法与上述文件上传时所使用的加密算法保持一致。例如,上述实施例中使用哈希算法对源文件加密,因此在此步骤中对源文件使用哈希算法进行加密。
步骤306,对比所述参考加密文件和区块链系统中查找到的所述加密文件是否一致,若一致,则确定从分布式网络获取到的压缩文件未被篡改。
本申请实施例提供了一种文件查询方法,可以根据特定的标识在区块链中找到与之绑定的加密文件和文件地址,然后根据文件地址在分布式网络里找到被压缩的源文件,然后将加密文件与源文件的参考加密文件相对比,确定从分布式网络里获取的压缩文件未被篡改。因此,将加密文件和文件地址上传至区块链储存可以防止源文件被篡改,很好的保护了用户的隐私,提高了文件存储的安全性。
图5为本申请实施例中还提供了电子设备组成结构示意图一,所述电子设备包括:
第一接收单元501,用于接收客户端上传的源文件;
加密单元502,用于对所述源文件进行加密,得到加密文件;
压缩单元503,用于对所述源文件进行压缩,得到压缩文件;
第一发送单元504,用于将所述压缩文件上传至分布式网络;
第二接收单元505,用于接收所述分布式网络返回的所述压缩文件在所述分布式网络中的文件地址;
第二发送单元506,用于将所述加密文件和所述文件地址上传至区块链系统进行保存,其中,所述加密文件和所述文件地址与特定标识绑定。
在一可选实施方式中,所述加密单元502,具体用于对所述源文件进行散列哈希加密,得到所述源文件对应的文件指纹,其中,所述文件指纹是指所述源文件对应的加密文件。
在一可选实施方式中,所述压缩单元503包括:
第一添加子单元5031,用于将所述源文件添加到待压缩文件队列,所述待压缩文件队列包括n个待压缩的源文件,n为正整数;
任务处理子单元5032,用于利用m个线程对所述待压缩文件队列中的m个源文件进行并行压缩,得到m个压缩文件;m为小于等于n的正整数;
第二添加子单元5033,用于将所述m个压缩文件分别添加至压缩文件队列。
在一可选实施方式中,所述任务处理子单元5032,具体用于利用m个线程从所述待压缩文件队列中并行取出m个源文件,并对所述m个源文件进行并行压缩。
在一可选实施方式中,所述任务处理子单元5032,还用于确定线程池中的处于空闲状态的线程的数量为p,p为正整数;如果p大于等于m,则唤醒所述线程池中的m个处于空闲状态的线程,唤醒后的m个线程用于处理所述m个源文件的压缩任务;如果p小于m,则等待所述线程池中的处于空闲状态的线程的数量达到m。
在一可选实施方式中,所述第一发送单元504,具体用于利用分布式线程从所述压缩文件队列中串行取出压缩文件,将取出的压缩文件上传至分布式网络。
在一可选实施方式中,所述第一发送单元504,具体用于利用分布式线程从所述压缩文件队列中串行取出压缩文件,将取出的压缩文件上传至分布式网络。
本申请实施例中,所述电子设备中各单元实现的功能可以参照前述文件上传方法的相关描述进行理解。具体实现时,所述电子设备中的加密单元502、压缩单元503可由所述电子设备中的处理器,比如中央处理器(centralprocessingunit,cpu)、数字信号处理器(digitalsignalprocessor,dsp)、微控制单元(microcontrollerunit,mcu)或可编程门阵列(field-programmablegatearray,fpga)等实现;所述电子设备中的第一接收单元501、第一发送单元504、第二接收单元505和第二发送单元506可通过通信模组(包含:基础通信套件、操作系统、通信模块、标准化接口和协议等)及收发天线实现。
图6为本申请实施例中还提供了电子设备组成结构示意图二,所述电子设备包括:
接收单元601,用于接收客户端发送的特定标识;
查找单元602,用于从区块链系统中查找与所述特定标识对应的加密文件和文件地址;
获取单元603,用于根据所述文件地址从分布式网络获取压缩文件;
解压单元604,用于对所述压缩文件进行解压,得到所述压缩文件对应的源文件;
加密单元605,用于对所述源文件进行加密,得到参考加密文件;
对比单元606,用于对比所述参考加密文件和区块链系统中查找到的所述加密文件是否一致,若一致,则确定从分布式网络获取到的压缩文件未被篡改。
在一可选实施方式中,所述加密单元605,具体用于对所述源文件进行散列哈希加密,得到所述源文件对应的文件指纹,其中,所述文件指纹是指所述参考加密文件。
在一可选实施方式中,所述解压单元604包括:
第一添加子单元6041,用于将所述压缩文件添加到待解压文件队列,所述待解压文件队列包括n个待解压的压缩文件,n为正整数;
任务处理子单元6042,用于利用m个线程对所述待解压文件队列中的m个压缩文件进行并行解压,得到m个源文件;m为小于等于n的正整数;
第二添加子单元6043,用于将所述m个源文件分别添加至解压文件队列。
在一可选实施方式中,所述任务处理子单元6042,具体用于利用m个线程从所述待解压文件队列中并行取出m个压缩文件,并对所述m个压缩文件进行并行解压。
在一可选实施方式中,所述任务处理子单元6042,还用于确定线程池中的处于空闲状态的线程的数量为p,p为正整数;如果p大于等于m,则唤醒所述线程池中的m个处于空闲状态的线程,唤醒后的m个线程用于处理所述m个压缩文件的解压任务;如果p小于m,则等待所述线程池中的处于空闲状态的线程的数量达到m。
本申请实施例中,所述电子设备中各单元实现的功能可以参照前述文件查询方法的相关描述进行理解。具体实现时,所述电子设备中的解压单元604、加密单元605和对比单元606可由所述电子设备中的处理器,比如cpu、dsp、mcu或fpga等实现;所述电子设备中的接收单元601、查找单元602和获取单元603可通过通信模组(包含:基础通信套件、操作系统、通信模块、标准化接口和协议等)及收发天线实现。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述多级调度方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台服务器执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机被处理器执行时实现上述实施例提供的文件上传方法或文件查询方法中的步骤。
对应地,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例提供的文件上传方法或文件查询方法中的步骤。
本申请设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
在本申请所提供的几个实施例中,应该理解到,所揭露的电子设备和方法,可以通过其它的方式实现。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。