CN114265818A - 文件上传方法、装置、设备及计算机可读介质 - Google Patents
文件上传方法、装置、设备及计算机可读介质 Download PDFInfo
- Publication number
- CN114265818A CN114265818A CN202111619062.7A CN202111619062A CN114265818A CN 114265818 A CN114265818 A CN 114265818A CN 202111619062 A CN202111619062 A CN 202111619062A CN 114265818 A CN114265818 A CN 114265818A
- Authority
- CN
- China
- Prior art keywords
- file
- reading
- file data
- uploading
- folder
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000008569 process Effects 0.000 claims abstract description 23
- 238000012544 monitoring process Methods 0.000 claims abstract description 9
- 238000013467 fragmentation Methods 0.000 claims description 29
- 238000006062 fragmentation reaction Methods 0.000 claims description 29
- 239000012634 fragment Substances 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004519 manufacturing process Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 6
- 238000009877 rendering Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004880 explosion Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种文件上传方法、装置、设备及计算机可读介质。该方法包括:基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,调用栈用于存储基于深度优先策略读取文件数据时递归产生的上下文环境记录访问路径;在监测到调用栈的内存占用率达到警戒值时,清空调用栈中存储的上下文环境记录访问路径,并基于广度优先策略读取文件数据,得到文件数据的目录树;按照目录树的目录结构将文件数据推入上传队列进行文件上传。上述方案解决了由于文件的层级和数量过大导致递归程序读取文件时调用栈溢出而无法顺利上传文件的技术问题。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种文件上传方法、装置、设备及计算机可读介质。
背景技术
在递归程序中,每一层次递归都必须在调用栈增加一条上下文环境,因此如果程序出现无限递归(或仅仅是过多的递归层次),调用栈就会产生栈溢出。
文件上传是指通过递归程序读取文件,并从一个终端传输至另一个终端或服务器端的过程。随着信息化时代的来临,数据的交互与共享越来越紧密,伴随而来的一个问题是:文件的层级和数量越来越大,进一步会导致调用栈内存持续增大直至调用栈内存溢出,造成线程运行超时,严重甚至可能丢失文件。
目前,相关技术中,针对文件的层级和数量越来越大,导致递归程序读取文件时调用栈内存溢出而无法顺利上传文件的问题,一种方式是严格控制文件层级和文件数量,保证整个递归所需的栈空间保持在设计阈值以内,另一种方式则是不断扩展栈空间,然而成本和体积的翻倍增长却让用户难以接受。
针对文件的层级和数量越来越大,导致递归程序读取文件时调用栈内存溢出而无法顺利上传文件的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种文件上传方法、装置、设备及计算机可读介质,以解决文件的层级和数量越来越大,导致递归程序读取文件时调用栈溢出而无法顺利上传文件的技术问题。
根据本申请实施例的一个方面,本申请提供了一种文件上传方法,包括:
基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,调用栈用于存储基于深度优先策略读取文件数据时递归产生的上下文环境记录访问路径;
在监测到调用栈的内存占用率达到警戒值时,清空调用栈中存储的上下文环境记录访问路径,并基于广度优先策略读取文件数据,得到文件数据的目录树;以及,
按照目录树的目录结构将文件数据推入上传队列进行文件上传。
可选地,基于深度优先策略读取待上传的文件数据之前,所述方法还包括:
将预设条件参数发送至业务端,以指示业务端按照预设条件参数制作待上传的文件数据,其中,预设条件参数包括文件层级阈值和文件数量阈值;
在业务端反馈的文件数据的实际文件层级在文件层级阈值范围内且文件数据的实际文件数量在文件数量阈值范围内的情况下,基于深度优先策略读取待上传的文件数据。
可选地,基于深度优先策略读取待上传的文件数据包括:
以根文件夹为读取起点,每当读取到下一级文件夹的情况下,生成上下文环境记录访问路径,以记录当前层位置;
将上下文环境记录访问路径存储至调用栈,并进入下一级文件夹继续读取文件数据;
在当前层级的文件夹中不存在下一级文件夹的情况下,通过调用栈中的上下文环境记录访问路径返回当前层级的文件夹的上一级文件夹;
在通过调用栈中的上下文环境记录访问路径回到根文件夹且根文件夹中的所有单个文件均被读取的情况下,生成以根文件夹为根节点,各层级的子文件夹为子节点,各层级的单个文件为叶子结点的目录树。
可选地,转用广度优先策略读取文件数据包括:
在调用栈内存占用率达到警戒值时,将基于深度优先策略读取到的文件层级和文件数量更新为新的预设条件参数,并创建读取队列;
将根文件夹推入读取队列作为读取起点;
推出读取队列队头的文件夹以在当前文件夹中读取单个文件,并将当前文件夹的下一级文件夹推入读取队列;
在当前文件夹中的所有单个文件均被读取、所有下一级文件夹均被推入读取队列的情况下,继续推出队头的文件夹,以继续按照入队顺序依次读取各个文件夹中的文件数据;
在读取队列推出所有文件夹的情况下,生成以根文件夹为根节点,各层级的文件夹为子节点,各层级的单个文件为叶子结点的目录树。
可选地,读取文件数据包括:
为每个文件夹或者每个单个文件生成对应的微任务,并将各个微任务按照生成顺序推入微任务队列;
在主线程处于空闲状态的情况下,调用主线程执行微任务队列,并记录主线程的占用时间,其中,主线程连续执行微任务时占用时间累加;
在占用时间大于预设时间阈值的情况下,为微任务队列中的剩余微任务分别创建对应的宏任务,以使主线程每次执行完一个微任务之后执行一次宏任务,其中,主线程执行宏任务之后占用时间被重置。
可选地,按照目录树的目录结构将文件数据推入上传队列进行文件上传包括:
按照文件数据中的第一文件的文件类型确定第一文件的分片大小,并按照分片大小对第一文件进行分片,得到多个第一文件块,其中第一文件的大小超过第一阈值;
从上传队列中逐个推出第一文件块进行上传,并计算每个第一文件块的校验码;
在最后一个第一文件块推出上传队列进行上传时,合并所有第一文件块的校验码,得到第一文件的完整校验码;以及
上传完整校验码。
可选地,按照目录树的目录结构将文件数据推入上传队列进行文件上传还包括:
确定第二文件的文件类型,并调用与文件类型匹配的第一分片策略来对第二文件进行分片,得到多个第二文件块;
从信道池中选择目标信道上传多个第二文件块,其中,目标信道为信道池中在预设时间内未被选择过的信道;
在多个第二文件块的上传过程中,根据已上传的第二文件块的上传状态调整第一分片策略,得到第二分片策略;
利用第二分片策略对剩余未上传的第二文件块进行重新分片,并重新选择目标信道上传。
根据本申请实施例的另一方面,本申请提供了一种文件上传装置,包括:
第一读取模块,用于基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,调用栈用于存储基于深度优先策略读取文件数据时递归产生的上下文环境记录访问路径;
第二读取模块,用于在监测到调用栈的内存占用率达到警戒值时,清空调用栈中存储的上下文环境记录访问路径,并基于广度优先策略读取文件数据,得到文件数据的目录树;
上传模块,用于按照目录树的目录结构将文件数据推入上传队列进行文件上传。
根据本申请实施例的另一方面,本申请提供了一种电子设备,包括存储器、处理器、通信接口及通信总线,存储器中存储有可在处理器上运行的计算机程序,存储器、处理器通过通信总线和通信接口进行通信,处理器执行计算机程序时实现上述方法的步骤。
根据本申请实施例的另一方面,本申请还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述的方法。
本申请实施例提供的上述技术方案与相关技术相比具有如下优点:
本申请技术方案为基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,调用栈用于存储基于深度优先策略读取文件数据时递归产生的上下文环境记录访问路径;在监测到调用栈的内存占用率达到警戒值时,清空调用栈中存储的上下文环境记录访问路径,并基于广度优先策略读取文件数据,得到文件数据的目录树;按照目录树的目录结构将文件数据推入上传队列进行文件上传。本申请通过动态算法规划,在深度优先策略读取的文件层级过多导致存入调用栈的上下文环境记录访问路径极大占用调用栈的内存空间时,适时转用广度优先策略,释放调用栈中存储的上下文环境记录访问路径,并顺利读取完所有文件,解决文件的层级和数量越来越大,导致递归程序读取文件时调用栈溢出而无法顺利上传文件的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本申请实施例提供的一种可选的文件上传方法硬件环境示意图;
图2为根据本申请实施例提供的一种可选的文件上传方法流程示意图;
图3为根据本申请实施例提供的一种可选的文件上传装置框图;
图4为本申请实施例提供的一种可选的电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
相关技术中,针对文件的层级和数量越来越大,导致递归程序读取文件时调用栈内存溢出的问题,一种方式是严格控制文件层级和文件数量,保证整个递归所需的栈空间保持在设计阈值以内,另一种方式则是不断扩展栈空间,然而成本和体积的翻倍增长却让用户难以接受。
为了解决背景技术中提及的问题,根据本申请实施例的一方面,提供了一种文件上传方法的实施例。
可选地,在本申请实施例中,上述文件上传方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如文件读取、文件分片、计算校验码、文件上传等服务),可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101包括但不限于PC、手机、平板电脑等。
本申请实施例中的一种文件上传方法可以由终端101来执行,如图2所示,该方法可以包括以下步骤:
步骤S202,基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,调用栈用于存储基于深度优先策略读取文件数据时递归产生的上下文环境记录访问路径。
本实施例中的文件上传方法可以应用于将文件数据从一个终端传输至另一个终端或服务器端的文件上传场景,该文件数据可以以嵌套存在的多级文件夹为容器,每个层级的文件夹均可容纳文件数据,文件数据可以包括文本文件、多媒体文件、可执行文件、库文件、系统文件等。
在文件层级和文件个数较少的情况下,可以利用深度优先策略快速遍历、读取所有文件,因为深度优先策略基于易于编码、易于理解的递归程序,时间开销比较小。深度优先策略的基本思想是,在当前层中,选择了一条路径去搜索时,沿当前路径深入到不能再深入为止,每深入一层,递归程序便会生成上下文环境并通过调用栈保存,在当前路径不能再深入,即到达路径末端的情况下,结束当前路径搜索,回收内存;继续在当前层,并探寻是否存在其他路径,若存在其他路径,则继续深入,否则直至所有分支路径都遍历一遍,读取完所有文件。
当前上下文环境保存在调用栈中会占用调用栈的内存空间,随着文件层级和文件数量的不断增加,通过深度优先策略读取文件数据时,调用栈的可用内存空间不断缩小,为防止爆栈,即防止调用栈内存溢出,需要实时监测调用栈的内存状态。
步骤S204,在监测到调用栈的内存占用率达到警戒值时,清空调用栈中存储的上下文环境记录访问路径,并基于广度优先策略读取文件数据,得到文件数据的目录树。
本申请实施例中,为防止爆栈,在监测到调用栈的内存占用率达到警戒值的情况下,可以转换读取策略,转用广度优先策略,先将调用栈内存储的上下文环境记录访问路径清空,再动态创建一个队列,从根文件夹开始逐层遍历文件数据,并将遍历到的子文件夹推入队列中,再按照入队顺序逐个读取子文件夹内的文件数据,直至所有文件夹都遍历,队列清空,完成所有文件数据的读取。
本申请实施例中,可以先向存储器申请分配预设大小的内存空间,该预设大小即作为该队列的初始队列长度,若文件层级较多,文件夹较多,以至于需要扩展队列长度时,则动态地向存储器申请分配新的内存空间,以增加队列长度。因此,广度优先策略可以针对文件层级较多的情况,避免了调用栈爆栈导致的线程运行超时,能够顺利读取完所有文件数据而不会丢失文件。
本申请实施例中,可以在深度优先策略获得的目录树的基础上基于广度优先策略继续扩展目录树,即遍历时仍需要从根文件夹开始遍历,但遍历到已经读取过的文件或文件夹时,即可跳过该文件或文件夹。
本申请实施例中,还可以按照目录树向用户展示文件目录。
步骤S206,按照目录树的目录结构将文件数据推入上传队列进行文件上传。
通过上述步骤S202至S206,本申请针对不同的文件嵌套层级,分别采用不同的读取策略,在深度优先策略读取的文件层级过多导致存入调用栈的上下文环境记录访问路径极大占用调用栈的内存空间时,适时转用广度优先策略,释放调用栈中存储的上下文环境记录访问路径,并顺利读取完所有文件,解决文件的层级和数量越来越大,导致递归程序读取文件时调用栈溢出而无法顺利上传文件的技术问题。
可选地,基于深度优先策略读取待上传的文件数据之前,所述方法还包括:
步骤1,将预设条件参数发送至业务端,以指示业务端按照预设条件参数制作待上传的文件数据,其中,预设条件参数包括文件层级阈值和文件数量阈值;
步骤2,在业务端反馈的文件数据的实际文件层级在文件层级阈值范围内且文件数据的实际文件数量在文件数量阈值范围内的情况下,基于深度优先策略读取待上传的文件数据。
本申请实施例中,可以根据调用栈的设计参数预先设置条件参数,该条件参数可以是使得调用栈内存溢出的文件层级阈值和/或文件数量阈值,可以是使得调用栈的内存占用率达到警戒值的文件层级阈值和/或文件数量阈值,还可以根据实际情况、实际需要进行设置。
在获取待上传的文件数据之前,可以先将该预设条件参数发送至业务端,以指示业务端按照该预设条件参数来制作待上传的文件数据。这样一来,若业务端制作的待上传的文件数据满足该预设条件参数,则本端即可通过简单编码得到的递归程序对文件数据进行深度优先遍历。
若业务端制作的待上传的文件数据超出了预设条件参数,则本端可以在预设条件参数范围内基于深度优先策略读取文件数据,而对超出预设条件参数的部分则采取广度优先策略读取文件数据,或者,在确定业务端制作的待上传的文件数据超出了预设条件参数,则本端可以直接采用广度优先策略来读取所有文件数据。
本申请实施例中,该预设条件参数可以是动态变化的,如第一次可以根据调用栈的设计参数进行设置,往后便可以在每次读取文件数据的过程中,根据调用栈的情况动态设置下一次读取文件数据时所用的预设条件参数。如当前预设条件参数为200层,10000个文件,而当基于深度优先策略读取到150层调用栈的内存占用率就已经达到警戒值时,将150层更新为下一次发给业务端的预设条件参数。反之,若基于深度优先策略读取到250层调用栈的内存占用率依然处于较低水平的情况下,则可以将下一次发给业务端的预设条件参数更新为250层甚至更高。
可选地,本端可以将调用栈的内存空间判断和上述预设条件参数结合,若业务端未反馈待上传的文件数据的层级和数量,则本端可以先按照深度优先策略读取文件数据;在读取的文件层级和/或文件数量达到预设条件参数但调用栈的内存占用率还处于低占用率区间的情况下,继续基于深度优先策略读取文件数据,直至调用栈的内存占用率达到警戒值时,转用广度优先策略读取文件数据,并更新预设条件参数;在读取的文件层级和/或文件数量达到预设条件参数且调用栈的内存占用率已处于高占用率区间的情况下,转用广度优先策略读取文件数据。其中,低占用率区间和高占用率区间的具体设置方式可以根据实际情况或者实际需求进行设置。
可选地,本端还可以仅基于上述预设条件参数来判断是否转用广度优先策略来读取文件。具体的,本端在按照深度优先策略读取文件数据的过程中,可以实时记录已经读取的文件层级和文件数量,并在文件层级和/或文件数量达到上述预设条件参数时,转用广度优先策略。
可选地,基于深度优先策略读取待上传的文件数据包括:
步骤1,以根文件夹为读取起点,每当读取到下一级文件夹的情况下,生成上下文环境记录访问路径,以记录当前层位置;
步骤2,将上下文环境记录访问路径存储至调用栈,并进入下一级文件夹继续读取文件数据;
步骤3,在当前层级的文件夹中不存在下一级文件夹的情况下,通过调用栈中的上下文环境记录访问路径返回当前层级的文件夹的上一级文件夹;
步骤4,在通过调用栈中的上下文环境记录访问路径回到根文件夹且根文件夹中的所有单个文件均被读取的情况下,生成以根文件夹为根节点,各层级的子文件夹为子节点,各层级的单个文件为叶子结点的目录树。
本申请实施例中,深度优先策略读取文件是当选择了一条路径去搜索时,沿当前路径深入到不能再深入为止,每深入一层,递归程序便会生成一个上下文环境记录访问路径,来记录当前层位置,并保存在内存中,在当前路径不能再深入,即到达路径末端的情况下,通过调用栈中的上下文环境记录访问路径返回上一层,并探寻是否存在其他路径,若存在其他路径,则继续深入,否则继续通过调用栈中的上下文环境记录访问路径返回更上一层,直至所有分支路径都遍历一遍,读取完所有文件。最后以根文件夹为根节点,各层级的子文件夹为子节点,各层级中的单个文件为叶子节点创建目录树。
可选地,转用广度优先策略读取文件数据包括:
步骤1,在调用栈内存占用率达到警戒值时,将基于深度优先策略读取到的文件层级和文件数量更新为新的预设条件参数,并创建读取队列;
步骤2,将根文件夹推入读取队列作为读取起点;
步骤3,推出读取队列队头的文件夹以在当前文件夹中读取单个文件,并将当前文件夹的下一级文件夹推入读取队列;
步骤4,在当前文件夹中的所有单个文件均被读取、所有下一级文件夹均被推入读取队列的情况下,继续推出队头的文件夹,以继续按照入队顺序依次读取各个文件夹中的文件数据;
步骤5,在读取队列推出所有文件夹的情况下,生成以根文件夹为根节点,各层级的文件夹为子节点,各层级的单个文件为叶子结点的目录树。
本申请实施例中,广度优先策略即是先将调用栈内存储的上下文环境记录访问路径清空,再动态创建一个队列,从根文件夹开始逐层遍历文件数据,并将遍历到的子文件夹推入队列中,再按照入队顺序逐个读取子文件夹内的文件数据,直至所有文件夹都遍历,队列清空,完成所有文件数据的读取。
本申请还提供针对文件个数极多如几十万以上的情况下,避免主线程持续占用的文件读取方法,下面以JavaScript环境为例进行说明。
可选地,读取文件数据包括:
步骤1,为每个文件夹或者每个单个文件生成对应的微任务,并将各个微任务按照生成顺序推入微任务队列;
步骤2,在主线程处于空闲状态的情况下,调用主线程执行微任务队列,并记录主线程的占用时间,其中,主线程连续执行微任务时占用时间累加;
步骤3,在占用时间大于预设时间阈值的情况下,为微任务队列中的剩余微任务分别创建对应的宏任务,以使主线程每次执行完一个微任务之后执行一次宏任务,其中,主线程执行宏任务之后占用时间被重置。
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。为了防止主线程阻塞,事件循环的方案应运而生。事件循环是通过任务队列的机制来进行协调的,每个循环的核心事件包括读取任务队列里的任务进行执行,之后检查是否存在微任务队列,若存在则一直执行微任务队列中的微任务,直至微任务队列清空,渲染页面。JavaScript可以通过渲染页面读取用户的交互操作、脚本执行结果、UI渲染结果以及网络处理结果等事件。而一旦微任务队列过长,主线程持续被占用,则页面无法及时更新其他操作结果,处于页面卡死状态,会导致用户体验极差。
本申请实施例中,读取文件数据时需要为每个文件夹或者每个单个文件创建微任务,而一旦需要读取的文件个数极多,直接使用微任务读取执行文件数据读取任务时,会导致微任务队列极长,进一步导致主线程持续被微任务队列占用。因此,本申请采用宏任务+微任务的技巧去处理,即利用微任务去读取每个文件或者文件夹时同时创建一个宏任务,然后把这两个任务合成一个宏任务,这样有效的把微任务队列拆分到不同的宏任务当中,主线程每次执行完一个微任务之后执行一次宏任务,执行宏任务之后会进行页面渲染,从而在渲染阶段读取用户的交互操作、脚本执行结果、UI渲染结果以及网络处理结果等事件,有效解决了主线程持续占用的问题。
本申请实施例中,还提供另一种微任务+宏任务相结合以解决主线程持续占用这一问题的方法,具体的,还可以根据已读取的文件目录判断文件数量的大小,因为在前述步骤中已为每个文件夹或者每个单个文件生成对应的微任务,因此可以根据微任务的数量判断文件数量。在判断文件数量大于数量阈值时,即可为微任务队列中的剩余微任务分别创建对应的宏任务,而不必等主线程的占用时间大于预设时间阈值时再来为微任务队列中的剩余微任务分别创建对应的宏任务。由此,本申请可以进一步解决主线程持续占用的问题,将主线程持续占用的苗头消灭在萌芽时期。
上传文件时,通常还需要进行文件的完整性校验,就需要在文件上传前计算文件的校验码。而通过浏览器进行文件上传时,一旦单个文件数据量较大(如1G),则浏览器可能发生内存溢出的情况,导致浏览器直接崩溃。因此本申请还提供一种文件上传方法,可以避免浏览器崩溃,下面进行详细说明。
可选地,按照目录树的目录结构将文件数据推入上传队列进行文件上传包括:
步骤1,按照文件数据中的第一文件的文件类型确定第一文件的分片大小,并按照分片大小对第一文件进行分片,得到多个第一文件块,其中第一文件的大小超过第一阈值;
步骤2,从上传队列中逐个推出第一文件块进行上传,并计算每个第一文件块的校验码;
步骤3,在最后一个第一文件块推出上传队列进行上传时,合并所有第一文件块的校验码,得到第一文件的完整校验码;以及
步骤4,上传完整校验码。
本申请实施例中,若某个文件的大小超过第一阈值,则需要将该文件进行分片,而不同文件类型的文件可对应不同的分片大小,如系统类文件、可执行文件类等的文件类型,需要尽可能避免数据切割,因此可以对这一类文件设置较高的分片阈值,使得对这一类文件进行分片时,每个文件块的大小都尽可能大。而对其他文件类型的文件,则可以设置相对较小的分片大小,以提高文件上传效率。文件大小超过上述第一阈值的文件即为需要分片的第一文件,对第一文件进行分片,得到多个第一文件块。上传该第一文件时,需要将第一文件的多个第一文件块逐个推出上传队列进行上传,并一边传输第一文件块一边计算每个第一文件块的校验码,最后将所有第一文件块的校验码合并,得到第一文件的完整校验码即可。
上述第一阈值可以根据实际需要进行设置,可以对不同的文件类型预先设置不同的阈值,还可以针对网络带宽动态调整该阈值。对于可以对不同的文件类型预先设置不同的阈值的情况,如针对系统类文件、可执行文件类等的文件类型,需要尽可能避免数据分片,以保障数据的一致性,因此可以对这一类文件设置较高的阈值;而对于比较琐碎的文件,则可以设置较小的阈值。对于可以针对网络带宽动态调整该阈值的情况,如根据传输速率的变化动态调整阈值,还可根据上一个文件的上传状态确定当前文件的阈值大小。
本申请实施例中,可以计算已上传文件块在所有文件块中的占比来确定上传进度,并可将上传进度、各个文件块的上传状态进行展示。
本申请实施例中,若上传过程中断,则通过记录断点,可以在重新上传时,从断点开始续传。
可选地,按照目录树的目录结构将文件数据推入上传队列进行文件上传还包括:
步骤1,确定第二文件的文件类型,并调用与文件类型匹配的第一分片策略来对第二文件进行分片,得到多个第二文件块;
步骤2,从信道池中选择目标信道上传多个第二文件块,其中,目标信道为信道池中在预设时间内未被选择过的信道;
步骤3,在多个第二文件块的上传过程中,根据已上传的第二文件块的上传状态调整第一分片策略,得到第二分片策略;
步骤4,利用第二分片策略对剩余未上传的第二文件块进行重新分片,并重新选择目标信道上传。
本申请实施例中,可以先确定待分片的第二文件的文件类型,再根据第二文件的文件类型确定第二文件的初始分片大小,于是按照该初始分片大小对第二文件进行分片,得到多个第二文件块,最后从信道池中选一个预设时间内未被选择过的信道来上传这多个第二文件块,避免信道阻塞。上述初始分片大小即为该第一分片策略。如系统文件、可执行文件等应尽可能保证其完整性而分片越大越好,可设置相对较大的初始分片大小,普通文件则可根据浏览器性能设置相对较小的初始分片大小。多个第二文件块上传一部分之后,可以根据已上传的第二文件块的上传状态动态调整分片大小,即调整该第一分片策略,得到第二分片策略,最后再利用调整后的分片大小重新对剩余未上传的第二文件块进行分片并上传。
本申请实施例中,确定第二文件的初始分片大小之后,还可以先按照初始分片大小对第二文件的一部分进行分片,将这一部分上传之后,根据这部分的上传状态调整分片大小,最后再根据调整后的分片大小对剩余第二文件进行分片并上传。
本申请实施例中,上述初始分片大小还可以根据文件类型和网络带宽来确定,如上传系统文件时,根据先验知识确定上传系统文件需要20兆带宽,此时系统文件的初始分片大小设置为500MB为宜。而当前仅5兆带宽的情况下,则需要将系统文件的初始分片大小设置为100MB。
根据本申请实施例的又一方面,如图3所示,提供了一种文件上传装置,包括:
第一读取模块301,用于基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,调用栈用于存储基于深度优先策略读取文件数据时递归产生的上下文环境记录访问路径;
第二读取模块303,用于在监测到调用栈的内存占用率达到警戒值时,清空调用栈中存储的上下文环境记录访问路径,并基于广度优先策略读取文件数据,得到文件数据的目录树;
上传模块305,用于按照目录树的目录结构将文件数据推入上传队列进行文件上传。
需要说明的是,该实施例中的第一读取模块301可以用于执行本申请实施例中的步骤S202,该实施例中的第二读取模块303可以用于执行本申请实施例中的步骤S204,该实施例中的上传模块305可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
可选地,该第一读取模块,在基于深度优先策略读取待上传的文件数据之前,还用于:
将预设条件参数发送至业务端,以指示业务端按照预设条件参数制作待上传的文件数据,其中,预设条件参数包括文件层级阈值和文件数量阈值;
在业务端反馈的文件数据的实际文件层级在文件层级阈值范围内且文件数据的实际文件数量在文件数量阈值范围内的情况下,基于深度优先策略读取待上传的文件数据。
可选地,该第一读取模块,具体用于:
以根文件夹为读取起点,每当读取到下一级文件夹的情况下,生成上下文环境记录访问路径,以记录当前层位置;
将上下文环境记录访问路径存储至调用栈,并进入下一级文件夹继续读取文件数据;
在当前层级的文件夹中不存在下一级文件夹的情况下,通过调用栈中的上下文环境记录访问路径返回当前层级的文件夹的上一级文件夹;
在通过调用栈中的上下文环境记录访问路径回到根文件夹且根文件夹中的所有单个文件均被读取的情况下,生成以根文件夹为根节点,各层级的子文件夹为子节点,各层级的单个文件为叶子结点的目录树。
可选地,该第二读取模块,具体用于:
在调用栈内存占用率达到警戒值时,将基于深度优先策略读取到的文件层级和文件数量更新为新的预设条件参数,并创建读取队列;
将根文件夹推入读取队列作为读取起点;
推出读取队列队头的文件夹以在当前文件夹中读取单个文件,并将当前文件夹的下一级文件夹推入读取队列;
在当前文件夹中的所有单个文件均被读取、所有下一级文件夹均被推入读取队列的情况下,继续推出队头的文件夹,以继续按照入队顺序依次读取各个文件夹中的文件数据;
在读取队列推出所有文件夹的情况下,生成以根文件夹为根节点,各层级的文件夹为子节点,各层级的单个文件为叶子结点的目录树。
可选地,该第一读取模块、第二读取模块在读取文件数据时,用于:
为每个文件夹或者每个单个文件生成对应的微任务,并将各个微任务按照生成顺序推入微任务队列;
在主线程处于空闲状态的情况下,调用主线程执行微任务队列,并记录主线程的占用时间,其中,主线程连续执行微任务时占用时间累加;
在占用时间大于预设时间阈值的情况下,为微任务队列中的剩余微任务分别创建对应的宏任务,以使主线程每次执行完一个微任务之后执行一次宏任务,其中,主线程执行宏任务之后占用时间被重置。
可选地,该上传模块,具体用于:
按照文件数据中的第一文件的文件类型确定第一文件的分片大小,并按照分片大小对第一文件进行分片,得到多个第一文件块,其中第一文件的大小超过第一阈值;
从上传队列中逐个推出第一文件块进行上传,并计算每个第一文件块的校验码;
在最后一个第一文件块推出上传队列进行上传时,合并所有第一文件块的校验码,得到第一文件的完整校验码;以及
上传完整校验码。
可选地,该上传模块,还用于:
确定第二文件的文件类型,并调用与文件类型匹配的第一分片策略来对第二文件进行分片,得到多个第二文件块;
从信道池中选择目标信道上传多个第二文件块,其中,目标信道为信道池中在预设时间内未被选择过的信道;
在多个第二文件块的上传过程中,根据已上传的第二文件块的上传状态调整第一分片策略,得到第二分片策略;
利用第二分片策略对剩余未上传的第二文件块进行重新分片,并重新选择目标信道上传。
根据本申请实施例的另一方面,本申请提供了一种电子设备,如图4所示,包括存储器401、处理器403、通信接口405及通信总线407,存储器401中存储有可在处理器403上运行的计算机程序,存储器401、处理器403通过通信接口405和通信总线407进行通信,处理器403执行计算机程序时实现上述方法的步骤。
上述电子设备中的存储器、处理器通过通信总线和通信接口进行通信。所述通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
根据本申请实施例的又一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一实施例的步骤。
可选地,在本申请实施例中,计算机可读介质被设置为存储用于所述处理器执行以下步骤的程序代码:
基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,调用栈用于存储基于深度优先策略读取文件数据时递归产生的上下文环境记录访问路径;
在监测到调用栈的内存占用率达到警戒值时,清空调用栈中存储的上下文环境记录访问路径,并基于广度优先策略读取文件数据,得到文件数据的目录树;以及,
按照目录树的目录结构将文件数据推入上传队列进行文件上传。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本申请实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种文件上传方法,包括:
基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,所述调用栈用于存储基于所述深度优先策略读取所述文件数据时递归产生的上下文环境记录访问路径;
在监测到所述调用栈的内存占用率达到警戒值时,清空所述调用栈中存储的所述上下文环境记录访问路径,并基于广度优先策略读取所述文件数据,得到所述文件数据的目录树;以及
按照所述目录树的目录结构将所述文件数据推入上传队列进行文件上传。
2.根据权利要求1所述的方法,其特征在于,在所述基于深度优先策略读取待上传的文件数据之前,所述方法还包括:
将预设条件参数发送至业务端,以指示所述业务端按照所述预设条件参数制作待上传的所述文件数据,其中,所述预设条件参数包括文件层级阈值和文件数量阈值;以及
在所述业务端反馈的所述文件数据的实际文件层级在所述文件层级阈值范围内且所述文件数据的实际文件数量在所述文件数量阈值范围内的情况下,基于深度优先策略读取待上传的所述文件数据。
3.根据权利要求2所述的方法,其特征在于,所述基于深度优先策略读取待上传的文件数据包括:
以根文件夹为读取起点,每当读取到下一级文件夹的情况下,生成所述上下文环境记录访问路径,以记录当前层位置;
将所述上下文环境记录访问路径存储至所述调用栈,并进入所述下一级文件夹继续读取所述文件数据;
在当前层级的文件夹中不存在所述下一级文件夹的情况下,通过所述调用栈中的所述上下文环境记录访问路径返回当前层级的文件夹的上一级文件夹;以及
在通过所述调用栈中的所述上下文环境记录访问路径回到所述根文件夹且所述根文件夹中的所有单个文件均被读取的情况下,生成以所述根文件夹为根节点,各层级的子文件夹为子节点,各层级的单个文件为叶子结点的所述目录树。
4.根据权利要求2所述的方法,其特征在于,所述基于广度优先策略读取所述文件数据包括:
在所述调用栈内存占用率达到警戒值时,将基于深度优先策略读取到的文件层级和文件数量更新为新的预设条件参数,并创建读取队列;
将根文件夹推入所述读取队列作为读取起点;
推出所述读取队列队头的文件夹以在当前文件夹中读取单个文件,并将当前文件夹的下一级文件夹推入所述读取队列;
在当前文件夹中的所有所述单个文件均被读取、所有所述下一级文件夹均被推入所述读取队列的情况下,继续推出队头的文件夹,以继续按照入队顺序依次读取各个文件夹中的所述文件数据;以及
在所述读取队列推出所有文件夹的情况下,生成以所述根文件夹为根节点,各层级的文件夹为子节点,各层级的单个文件为叶子结点的所述目录树。
5.根据权利要求1所述的方法,其特征在于,所述读取所述文件数据包括:
为每个文件夹或者每个单个文件生成对应的微任务,并将各个微任务按照生成顺序推入微任务队列;
在主线程处于空闲状态的情况下,调用所述主线程执行所述微任务队列,并记录所述主线程的占用时间,其中,所述主线程连续执行所述微任务时所述占用时间累加;以及
在所述占用时间大于预设时间阈值的情况下,为所述微任务队列中的剩余微任务分别创建对应的宏任务,以使所述主线程每次执行完一个所述微任务之后执行一次所述宏任务,其中,所述主线程执行所述宏任务之后所述占用时间被重置。
6.根据权利要求1所述的方法,其特征在于,所述按照所述目录树的目录结构将所述文件数据推入上传队列进行文件上传包括:
按照所述文件数据中的第一文件的文件类型确定所述第一文件的分片大小,并按照所述分片大小对所述第一文件进行分片,得到多个第一文件块,其中所述第一文件的大小超过第一阈值;
从所述上传队列中逐个推出所述第一文件块进行上传,并计算每个所述第一文件块的校验码;
在最后一个所述第一文件块推出所述上传队列进行上传时,合并所有所述第一文件块的校验码,得到所述第一文件的完整校验码;以及
上传所述完整校验码。
7.根据权利要求1所述的方法,其特征在于,所述按照所述目录树的目录结构将所述文件数据推入上传队列进行文件上传还包括:
确定第二文件的文件类型,并调用与所述文件类型匹配的第一分片策略来对所述第二文件进行分片,得到多个第二文件块;
从信道池中选择目标信道上传所述多个第二文件块,其中,所述目标信道为所述信道池中在预设时间内未被选择过的信道;
在所述多个第二文件块的上传过程中,根据已上传的第二文件块的上传状态调整所述第一分片策略,得到第二分片策略;
利用所述第二分片策略对剩余未上传的第二文件块进行重新分片,并重新选择所述目标信道上传。
8.一种文件上传装置,其特征在于,包括:
第一读取模块,用于基于深度优先策略读取待上传的文件数据,并在读取过程中监测调用栈的内存状态,其中,所述调用栈用于存储基于所述深度优先策略读取所述文件数据时递归产生的上下文环境记录访问路径;
第二读取模块,用于在监测到所述调用栈的内存占用率达到警戒值时,清空所述调用栈中存储的所述上下文环境记录访问路径,并基于广度优先策略读取所述文件数据,得到所述文件数据的目录树;以及
上传模块,用于按照所述目录树的目录结构将所述文件数据推入上传队列进行文件上传。
9.一种电子设备,包括存储器、处理器、通信接口及通信总线,所述存储器中存储有可在所述处理器上运行的计算机程序,所述存储器、所述处理器通过所述通信总线和所述通信接口进行通信,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至7任一项所述的方法的步骤。
10.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111619062.7A CN114265818B (zh) | 2021-12-27 | 2021-12-27 | 文件上传方法、装置、设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111619062.7A CN114265818B (zh) | 2021-12-27 | 2021-12-27 | 文件上传方法、装置、设备及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114265818A true CN114265818A (zh) | 2022-04-01 |
CN114265818B CN114265818B (zh) | 2024-10-11 |
Family
ID=80830975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111619062.7A Active CN114265818B (zh) | 2021-12-27 | 2021-12-27 | 文件上传方法、装置、设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114265818B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174679A (zh) * | 2022-07-27 | 2022-10-11 | 天翼云科技有限公司 | 一种网络文件缓存方法、装置、电子设备及存储介质 |
CN115391289A (zh) * | 2022-08-15 | 2022-11-25 | 广州市玄武无线科技股份有限公司 | 一种包含文件信息的目录结构生成方法及装置 |
CN116089364A (zh) * | 2023-04-11 | 2023-05-09 | 山东英信计算机技术有限公司 | 一种存储文件管理方法、装置、ai平台和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838791A (zh) * | 2012-11-27 | 2014-06-04 | 大连灵动科技发展有限公司 | 一种网络机器人方法 |
CN104243425A (zh) * | 2013-06-19 | 2014-12-24 | 深圳市腾讯计算机系统有限公司 | 一种在内容分发网络中进行内容管理的方法、装置及系统 |
CN106446068A (zh) * | 2016-09-06 | 2017-02-22 | 北京邮电大学 | 一种目录数据库生成、查询方法及装置 |
US20190035138A1 (en) * | 2017-07-27 | 2019-01-31 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Methods, Computer Program and Apparatus for an Ordered Traversal of a Subset of Nodes of a Tree Structure and for Determining an Occlusion of a Point along a Ray in a Raytracing Scene |
CN110442553A (zh) * | 2019-07-05 | 2019-11-12 | 平安国际智慧城市科技股份有限公司 | 文件管理方法、装置、计算机设备和存储介质 |
CN110798332A (zh) * | 2018-08-03 | 2020-02-14 | Emc Ip控股有限公司 | 用于搜索目录访问组的方法和系统 |
CN111324483A (zh) * | 2018-12-13 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 一种数据恢复方法、装置以及相关设备 |
-
2021
- 2021-12-27 CN CN202111619062.7A patent/CN114265818B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838791A (zh) * | 2012-11-27 | 2014-06-04 | 大连灵动科技发展有限公司 | 一种网络机器人方法 |
CN104243425A (zh) * | 2013-06-19 | 2014-12-24 | 深圳市腾讯计算机系统有限公司 | 一种在内容分发网络中进行内容管理的方法、装置及系统 |
CN106446068A (zh) * | 2016-09-06 | 2017-02-22 | 北京邮电大学 | 一种目录数据库生成、查询方法及装置 |
US20190035138A1 (en) * | 2017-07-27 | 2019-01-31 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Methods, Computer Program and Apparatus for an Ordered Traversal of a Subset of Nodes of a Tree Structure and for Determining an Occlusion of a Point along a Ray in a Raytracing Scene |
CN110798332A (zh) * | 2018-08-03 | 2020-02-14 | Emc Ip控股有限公司 | 用于搜索目录访问组的方法和系统 |
CN111324483A (zh) * | 2018-12-13 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 一种数据恢复方法、装置以及相关设备 |
CN110442553A (zh) * | 2019-07-05 | 2019-11-12 | 平安国际智慧城市科技股份有限公司 | 文件管理方法、装置、计算机设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
曲大鹏;张迪;连秋雨;李晓光;宋宝燕;: "搜索算法在计算机程序设计竞赛中的研究", 辽宁大学学报(自然科学版), no. 03, 15 August 2016 (2016-08-15) * |
王永建;杨建华;郭广涛;王治东;: "面向最优化问题的人工智能搜索算法研究", 通信技术, no. 11, 10 November 2016 (2016-11-10) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174679A (zh) * | 2022-07-27 | 2022-10-11 | 天翼云科技有限公司 | 一种网络文件缓存方法、装置、电子设备及存储介质 |
CN115391289A (zh) * | 2022-08-15 | 2022-11-25 | 广州市玄武无线科技股份有限公司 | 一种包含文件信息的目录结构生成方法及装置 |
CN115391289B (zh) * | 2022-08-15 | 2023-08-11 | 广州市玄武无线科技股份有限公司 | 一种包含文件信息的目录结构生成方法及装置 |
CN116089364A (zh) * | 2023-04-11 | 2023-05-09 | 山东英信计算机技术有限公司 | 一种存储文件管理方法、装置、ai平台和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114265818B (zh) | 2024-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114265818A (zh) | 文件上传方法、装置、设备及计算机可读介质 | |
US10901619B2 (en) | Selecting pages implementing leaf nodes and internal nodes of a data set index for reuse | |
EP3873066A1 (en) | Method for managing resource state information, and resource downloading system | |
US9307024B2 (en) | Efficient storage of small random changes to data on disk | |
CN110659151A (zh) | 数据校验方法及装置,存储介质 | |
US11102289B2 (en) | Method for managing resource state information and system for downloading resource | |
CN107656807A (zh) | 一种虚拟资源的自动弹性伸缩方法及装置 | |
CN110958300B (zh) | 一种数据的上传方法、系统、装置、电子设备和计算机可读介质 | |
CN107885859B (zh) | 一种文件个数配额的方法、装置和计算机可读存储介质 | |
CN111159524A (zh) | 监控方法和系统,及存储介质 | |
CN110781156A (zh) | 一种数据节点的分配方法、设备及介质 | |
EP4407957A1 (en) | Data processing method and apparatus, computer device and readable storage medium | |
CN114428764B (zh) | 文件写入方法、系统、电子设备及可读存储介质 | |
US10938956B2 (en) | Processing command line templates for database queries | |
CN111563199A (zh) | 一种数据处理方法及装置 | |
CN108958660B (zh) | 分布式存储系统及其数据处理方法和装置 | |
CN110765073A (zh) | 分布式存储系统的文件管理方法、介质、设备及装置 | |
CN112711564B (zh) | 合并处理方法以及相关设备 | |
US20170149893A1 (en) | Metadata server, network device and automatic resource management method | |
CN116795790A (zh) | 小文件合并的方法、装置、电子设备及存储介质 | |
CN114637790A (zh) | 榜单数据查询方法、装置、电子设备和存储介质 | |
CN111405313B (zh) | 存储流媒体数据的方法和系统 | |
CN115129789A (zh) | 一种分布式对象存储系统的桶索引存储方法、装置及介质 | |
JP5514220B2 (ja) | 検索装置、及びシステム | |
CN115905115A (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 |