CN113704588A - 基于映射技术的文件读取方法及*** - Google Patents
基于映射技术的文件读取方法及*** Download PDFInfo
- Publication number
- CN113704588A CN113704588A CN202111015063.0A CN202111015063A CN113704588A CN 113704588 A CN113704588 A CN 113704588A CN 202111015063 A CN202111015063 A CN 202111015063A CN 113704588 A CN113704588 A CN 113704588A
- Authority
- CN
- China
- Prior art keywords
- data
- target data
- mapping area
- target
- preset mapping
- 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
- 238000013507 mapping Methods 0.000 title claims abstract description 243
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000005516 engineering process Methods 0.000 title claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000004590 computer program Methods 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 17
- 101000771640 Homo sapiens WD repeat and coiled-coil-containing protein Proteins 0.000 claims description 8
- 102100029476 WD repeat and coiled-coil-containing protein Human genes 0.000 claims description 8
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种基于映射技术的文件读取方法及***,该方法包括:若接收到数据读取指令,获取目标数据对应的索引;根据所述目标数据对应的索引,判断预设映射区是否存在所述目标数据,预设映射区位于内存中,预设映射区用于预先存储原始数据,原始数据为缓存文件中的数据经过预设处理得到;若预设映射区存在目标数据,则从预设映射区中读取出目标数据对应的原始数据;根据目标数据对应的原始数据,读取目标数据。本发明实施例通过建立预设映射区,并建立预设映射区与缓存文件中数据的对应关系,当需要对数据进行读取时,不需要对数据进行预处理,直接在预设映射区中进行查找即可,从而节省了数据读取时间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于映射技术的文件读取方法及***。
背景技术
现有技术中,APP通过常规方式打开并读取手机文件***内的文件数据时,一般需要经过如下两个步骤:
1、由操作***内核找到目标文件在APP进程文件符表内的索引节点(简称inode),内核通过索引节点内记录的文件信息,将文件从硬盘中读取到内存缓冲区。
2、文件数据从内存缓冲区再次复制到用户空间后,才可以对文件数据进行操作。如果文件是一个图片且需要展示在页面上时,除了上述步骤外,还需要额外进行解码、字节对齐等过程,才可以被GPU处理渲染到页面上。
因此如果APP需要频繁加载文件***内的文件数据时,需要不断的将文件***中的数据读取到缓冲区,然后再复制到用户空间,这是一个非常耗时的过程,会造成APP性能瓶颈,比如FPS降低,出现卡顿现象,从而直接造成用户体验度下降。
发明内容
本发明提供一种基于映射技术的文件读取方法及***,其主要目的在于节省数据读取时间,有效提高数据处理效率。
第一方面,本发明实施例提供一种基于映射技术的文件读取方法,包括:
S1,若接收到用于对目标数据进行读取的数据读取指令,获取所述目标数据对应的索引;
S2,根据所述目标数据对应的索引,判断预设映射区是否存在所述目标数据,所述预设映射区为内存中用于预先存储经预设处理的缓存文件中的原始数据;
S3,若所述预设映射区存在所述目标数据,则从所述预设映射区中读取出所述目标数据对应的原始数据;
S4,基于所述目标数据对应的原始数据,进行所述预设处理的逆处理,从而读取所述目标数据。
优选地,还包括:
S21,若所述预设映射区不存在所述目标数据,且所述预设映射区的剩余空间不小于所述目标数据所占内存空间,对所述目标数据进行所述预设处理得到所述目标数据对应的原始数据;
S22,根据预设的目标队列中排于末位的数据的起始偏移量和内存,计算目标起始偏移量,所述目标队列用于记录所述预设映射区中每一原始数据的索引、每一原始数据的起始偏移量和每一原始数据所占内存空间;
S23,根据所述目标起始偏移量,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入所述预设映射区的相应位置。
优选地,所述根据所述目标起始偏移量,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入所述预设映射区的相应位置,包括:
将所述目标起始偏移量作为所述相应位置的起始点;
将所述目标数据所占内存空间作为所述相应位置的大小;
通过写函数,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入到所述相应位置。
优选地,还包括:将所述目标数据的索引、目标起始偏移量、所述目标数据所占内存空间写入所述目标队列和所述缓存文件中。
优选地,还包括:
S31,若所述预设映射区不存在所述目标数据,且所述预设映射区的剩余空间小于所述目标数据所占内存空间,则清除所述目标队列中若干数据,获取清除后的目标队列;
S32,在所述预设映射区偏移量为0的位置开始,重新写入清除后的目标队列中的所有原始数据,并重复步骤S21至步骤S23,直到清除后的目标队列中的所有原始数据都被写入所述预设映射区。
优选地,所述预设映射区所占总内存空间通过如下步骤得到:
向配置服务器发送请求指令,获取所述配置服务器回应的预设映射区理论尺寸;
根据所述预设映射区理论尺寸,以及预设内存页尺寸,得到预设映射区实际尺寸。
优选地,还包括:将所述目标数据转换成base64字符串,通过JSBridege传递给H5页面进行展示。
优选地,所述预设映射区用于预先存储原始数据,通过如下方式实现:
通过MMAP函数,建立所述预设映射区和所述缓存文件之间的映射关系;
对所述缓存文件中的目标数据进行所述预设处理,将所述目标数据对应的原始数据存储在所述预设映射区的对应位置中。
第二方面,本发明实施例提供一种基于映射技术的文件读取***,包括:
接收模块,用于若接收到用于对目标数据进行读取的数据读取指令,获取所述目标数据对应的索引;
判断模块,用于根据所述目标数据对应的索引,判断预设映射区是否存在所述目标数据,所述预设映射区为内存中用于预先存储经预设处理的缓存文件中的原始数据;
处理模块,用于若所述预设映射区存在所述目标数据,则从所述预设映射区中读取出所述目标数据对应的原始数据;
读取模块,用于基于所述目标数据对应的原始数据,进行所述预设处理的逆处理,从而读取所述目标数据。
第三方面,本发明实施例提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于映射技术的文件读取方法的步骤。
第四方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于映射技术的文件读取方法的步骤。
本发明提出的一种基于映射技术的文件读取方法及***,通过建立预设映射区,并建立预设映射区与缓存文件中数据的对应关系,当需要对数据进行读取时,直接在预设映射区中进行查找即可,节省了数据首次在内存中存储时的预处理操作,从而节省了数据读取时间,提高了软件的性能。
附图说明
图1为本发明实施例提供的一种基于映射技术的文件读取方法的应用场景图;
图2为本发明实施例提供的一种基于映射技术的文件读取方法的流程图;
图3为本发明实施例提供的一种基于映射技术的文件读取***的结构示意图;
图4为本发明实施例提供的一种计算机设备的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例提供的一种基于映射技术的文件读取方法的应用场景图,如图1所示,客户端获取数据读取指令,并将该数据读取指令发送给服务端,服务端接收到该数据读取指令后,执行该基于映射技术的文件读取方法,最终读取出目标数据。
需要说明的是,服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。客户端可为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。客户端和服务端可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者其他通讯连接方式进行连接,本发明实施例在此不做限制。
图2为本发明实施例提供的一种基于映射技术的文件读取方法的流程图,如图2所述,该方法包括:
本发明的执行主体为服务端,具体为服务端中的某个软件。
S1,若接收到用于对目标数据进行读取的数据读取指令,获取所述目标数据对应的索引;
用户在使用某软件的过程中或者浏览网页的过程中,触发软件或者网页产生数据读取指令,并将该数据读取指令发送给服务端,服务端接收该数据读取指令后,根据该数据读取指令,解析出目标数据对应的索引。
需要说明的是,目标数据可以是任何文字、图片或者声音等,本发明实施例在此不做具体的限定,具体根据实际需要进行确定。
目标数据可以是缓存文件中的数据,也可以是在进行网页浏览时第一次浏览到的数据,如果目标数据是缓存文件中的数据,一般会根据目标数据在文件***中路径,确定该目标数据对应的索引;如果该数据是第一次浏览到的,缓存文件中没有,则根据该目标数据的下载路径,确定目标数据对应的索引。不同的数据对应的索引是不同的,也就是索引是唯一的。
还需要说明的是,由于从内存中读取数据要远快于从硬盘中读取数据,因此,通过在内存中开辟一块空间建立缓存文件,缓存文件就是用来存储该软件常用的数据或指令,当需要这些数据或指令的时候直接从缓存中读取,这样比直接从内存或者硬盘中读取数据要快的多。
还需要说明的是,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合,即相应的指向表中物理标识这些值数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。本发明实施例中,根据数据在文件***内的路径计算MD5值,并将该值作为该数据的索引。
S2,根据所述目标数据对应的索引,判断预设映射区是否存在所述目标数据,所述预设映射区为内存中用于预先存储经预设处理的缓存文件中的原始数据;
根据目标数据对应的索引,在预设映射区中进行查找,具体的查找方式可以是在预设映射区中所有存储的索引中,进行查找,看能否找到目标数据对应的索引,如果能找到对应的索引,则说明预设映射区中记录了与该目标数据对应的原始数据。
具体地,预设映射区是位于内存中的一块区域,在软件或者浏览器打开运行时,首先会进行初始化,***会先分配一个内存区域,作为缓存文件的预设映射区,该预设映射区用来同步记录缓存文件中的数据,当需要对缓存文件中的数据进行读取时,可以通过在预设映射区中查找到对应的数据,进行读取即可,而不需要重新将缓存文件中的数据拷贝到缓冲区。
其中,数据首次存储在预设映射区时,如果该数据是图片,需要先进行解码和字节对齐等操作后,然后再存储在预设映射区中,因此,如果目标数据是图片,那预设映射区中存储的就是经过解码和字节对齐后的图片,即原始数据,此时,原始数据即为目标数据经过解码和字节对齐后的图片,预设处理即为解码和字节对齐操作;如果该数据是数字,可能不需要进行额外的编解码或者字节对齐等操作,直接将数字存储在预设映射区即可,此时原始数据即为数字本身,即原始数据与目标数据是相同的,此时,原始数据即为目标数据,预设处理即为不处理。
S3,若所述预设映射区存在所述目标数据,则从所述预设映射区中读取出所述目标数据对应的原始数据;
如果预设映射区中能找到目标数据对应的原始数据,则直接在预设映射区中将该目标数据对应的原始数据读取出来,不需要像现有技术中对目标数据进行编解码或字节对齐等预设处理操作,以将处理后的数据存储起来然后再读取出来,省略了数据预设处理的时间,从而缩短了数据读取时间,提高了数据读取效率。
S4,基于所述目标数据对应的原始数据,进行所述预设处理的逆处理,从而读取所述目标数据。
然后根据目标数据对应的原始数据,经过预设处理的逆操作,比如,若图片存储到内存中需要经过压缩、编码的预处理,则从预设映射区读取到目标数据对应的原始数据后,进行解码和解压处理,即可还原出目标数据,然后根据需要进行后续处理。
本发明实施例提供一种基于映射技术的文件读取方法,通过建立预设映射区,并建立预设映射区与缓存文件中数据的对应关系,当需要对数据进行读取时,直接在预设映射区中进行查找即可,省略了数据首次在内存中存储时的预处理操作,从而缩短了数据读取时间,提高了数据读取效率,提高了软件性能。
在上述实施例的基础上,优选地,还包括:
S21,若所述预设映射区不存在所述目标数据,且所述预设映射区的剩余空间不小于所述目标数据所占内存空间,对所述目标数据进行所述预设处理得到所述目标数据对应的原始数据;
如果该目标数据是第一次在网页上浏览到的,那么预设映射区中肯定没有记录该目标数据,即在预设映射区中无法找到与目标数据的索引相匹配的索引,并且经过计算,预设映射区的剩余空间不小于目标数据所占内存空间,即预设映射区中存在足够的空间写入该目标数据,此种情况下,需要将该目标数据写入到预设映射区中。
首先根据预设映射区剩余空间与目标数据所占内存空间之间大小关系,确定预设映射区是否还有足够的空间写入目标数据。
预设映射区剩余内存空间等于预设映射区所占内存空间减去预设映射区中所有数据所占的空间,预设映射区所占内存空间可以看做是预先设置好的,而预设映射区中所有数据所占的空间为每个数据所占空间加起来之和,两者相减即可得到预设映射区剩余内存空间。
在软件初次运行进行初始化时,会建立一个目标队列,该目标队列用来记录预设映射区中的所有数据,将每个数据作为目标队列的一个MAP,MAP记录每个数据的索引、该数据在预设映射区的起始偏移量和该数据所占内存空间,起始偏移量可以看做数据在预设映射区的存储位置,因此,根据目标队列中所记录每个数据所占的内存空间,进行相加,即可得到预设映射区中已被占据的空间大小。
如果判断出预设映射区剩余空间大于或等于该目标数据所占内存空间,则进行后续步骤。
在具体实施过程中,当目标数据为图片时,目标图片所占内存空间计算方法为:将目标图片解码成bitmap位图,且在解码时按照64字节进行对齐,对齐后的大小为图片每行像素数乘以每像素字节数,即可得到图片每行像素占用字节大小,然后将该乘积结果与64计算最小公倍数后,再用最小公倍数乘以图片的高度,将结果再除以预设内存页大小,对结果向上取整,即为图片所占内存空间。
S22,根据预设的目标队列中排于末位的数据的起始偏移量和内存,计算目标起始偏移量,所述目标队列用于记录所述预设映射区中每一原始数据的索引、每一原始数据的起始偏移量和每一原始数据所占内存空间;
根据目标队列中最后一个数据的起始偏移量和最后一个数据所占内存空间大小,最后一个数据即排于末位的数据,内存是指最后一个数据所占内存空间大小,将最后一个数据的起始偏移量加上其所占内存空间大小,即可得到目标数据在预设映射区的目标起始偏移量,目标起始偏移量给出了目标数据应该存储在预设映射区中的第几页第几节,也就是目标数据在预设映射区中的起始位置。
S23,根据所述目标起始偏移量,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入所述预设映射区的相应位置。
然后根据目标起始偏移量,将目标数据的索引、目标数据和目标数据所占内存空间写入到预设映射区的相关位置中,以便后续对该目标数据进行读取操作时,可以直接从预设映射区中进行读取,从而达到节省时间的目的。
本发明实施例将目标数据写入目标队列,可以保证目标队列和预设映射区的一致性,并且通过目标队列的记录,可以缩短在预设映射区中查找目标数据的时间。
在上述实施例的基础上,优选地,所述根据所述目标起始偏移量,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入所述预设映射区的相应位置,包括:
将所述目标起始偏移量作为所述相应位置的起始点;
将所述目标数据所占内存空间作为所述相应位置的大小;
通过写函数,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入到所述相应位置。
在具体实现过程中,将目标起始偏移量作为相应位置在内存中的起始点,将目标数据所占内存空间作为相应位置在内存空间中的大小,本发明实施例中,通过write()写函数,将目标数据的索引、目标数据和目标数据所占内存空间写入到内存空间中的相应位置处。
在上述实施例的基础上,优选地,还包括:将所述目标数据的索引、目标起始偏移量、所述目标数据所占内存空间写入所述目标队列和所述缓存文件中。
将目标数据写入预设映射区后,还需要将目标数据的索引、目标数据的目标起始偏移量和目标数据所占内存空间写入到目标队列中,以保证目标队列和预设映射区的一致性。将目标数据写入目标队列,可以保证目标队列和预设映射区的一致性,并且通过目标队列的记录,可以缩短在预设映射区中查找目标数据的时间。
同时,还要将目标数据写在缓存文件中,缓存文件存在文件***中,无论软件打开还是关闭,缓存文件都会一直存在,而预设映射区存在与内存中,当软件关闭后,内存也会消失,而下一次软件打开时,在初始化的过程中,会重新在内存中建立预设映射区,并将缓存文件中的数据拷贝到预设映射区,后续对缓存文件中进行读取操作时可以避免预处理操作,因此,由于缓存文件不会随着软件的关闭而消失,通过缓存文件存储目标数据,可以对目标数据进行长期保存,后续使用时不需要再次进行拷贝。
在上述实施例的基础上,优选地,还包括:
S31,若所述预设映射区不存在所述目标数据,且所述预设映射区的剩余空间小于所述目标数据所占内存空间,则清除所述目标队列中若干数据,获取清除后的目标队列;
具体地,如果预设映射区的索引中无法找到目标数据对应的索引,即预设映射区中不存在目标数据,且预设预设映射区的剩余空间小于目标数据所占内存空间,说明预设预设映射区的剩余空间不够写入该目标数据,那么就需要对预设映射区进行清除处理。
在具体操作时,先清除队列中位于前半部分的数据,本发明实施例中清除队列中位于前50%的数据,然后获取清除后的目标队列。
S32,在所述预设映射区偏移量为0的位置开始,重新写入清除后的目标队列中的所有原始数据,并重复步骤S21至步骤S41,直到清除后的目标队列中的所有原始数据都被写入所述预设映射区。
然后在预设映射区偏移量为0的位置开始重新写入清除后目标队列中的所有数据,同样地,在写入时,将数据的索引、数据和数据的起始偏移量都写入到预设映射区中,然后再重复步骤S21到步骤S23,将清除后的目标队列中所有的数据都写入预设映射区中。
在上述实施例的基础上,优选地,所述预设映射区所占总内存空间通过如下步骤得到:
向配置服务器发送请求指令,获取所述配置服务器回应的预设映射区理论尺寸;
向配置服务器发送请求指令,接收配置服务器发送的预设映射区大小上限数值,即为预设映射区理论尺寸,一般预设映射区大小上限数值不会超过10M,在配置服务器中是预先设置好的。
根据所述预设映射区理论尺寸,以及预设内存页尺寸,得到预设映射区实际尺寸。
用户终端接收到该预设映射区大小上限数值后,除以预设内存页大小,所得的结果向下取整,作为该预设映射区实际尺寸。
此处,计算预设映射区实际尺寸是因为内存最小存储粒度为页,而后续建立的MMAP映射区也是以页为单位进行数据读写的,所以预设映射区实际尺寸必须是内存页大小的整数倍。
在上述实施例的基础上,优选地,还包括:将所述目标数据转换成base64字符串,通过JSBridege传递给H5页面进行展示。
在具体实施过程中,若终端页面或浏览网页采用的开发方式为Native,即原生的开发方式,Native是指在软件内用iOS、android原生程式语言Objective-C、Swift、Java编写的页面及逻辑,页面和逻辑属于两个部分,页面属于视图展示部分代码,而逻辑包含了如数据计算、业务需求等各部分的代码;若终端页面或浏览网页采用的开发方式为H5,H5是指软件内用WebView承载的HTML页面以及Javascript代码逻辑,当开发方式为H5时,需要在软件内建立JSBridge,H5通过JSBridge与Native之间进行通信。
如果是H5页面需要展示目标数据,Native通过上述基于映射技术的文件读取方法获取到目标数据,并将所获取的目标数据转换成base64字符串,通过JSBridge传递给H5页面进行展示。
在上述实施例的基础上,优选地,所述预设映射区用于预先存储原始数据,通过如下方式实现:
通过MMAP函数,建立所述预设映射区和所述缓存文件之间的映射关系;
对所述缓存文件中的目标数据进行所述预设处理,将所述目标数据对应的原始数据存储在所述预设映射区的对应位置中。
具体地,通过MMAP函数建立预设映射区和缓存文件之间的实际映射关系。
MMAP函数是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而***会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read、write等***调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。
本发明一优选实施例提供一种基于映射技术的文件读取方法,包括如下步骤:
(1)向配置服务器发送请求指令,获取配置服务器回应的预设映射区理论尺寸,比如5MB,将预设映射区理论尺寸除以预设内存页尺寸,将结果向下取整,得到预设映射区实际尺寸。
(2)通过MMAP函数,建立预设映射区和缓存文件之间的映射关系,对缓存文件中的目标数据进行预设处理,将目标数据对应的原始数据存储在预设映射区的对应位置中。
(3)创建目标队列和缓存文件,目标队列和缓存文件用来记录预设映射区中的所有数据,将每个数据作为目标队列的一个MAP,MAP记录每个数据的索引、该数据在预设映射区的起始偏移量和该数据所占内存空间。至此初始化完成。
(4)若接收到数据读取指令,获取目标数据对应的索引,根据目标数据对应的索引,判断预设映射区是否存在目标数据。
(5)若预设映射区存在目标数据,则从预设映射区中读取出目标数据对应的原始数据,并根据目标数据对应的原始数据,读取目标数据。
(6)若预设映射区不存在目标数据,且预设映射区的剩余空间不小于目标数据所占内存空间,对目标数据进行预设处理,获取目标数据对应的原始数据;根据目标队列中最后数据的起始偏移量和最后数据占据内存空间大小,获取目标起始偏移量;根据目标起始偏移量,将目标数据的索引、目标数据和目标数据所占内存空间写入预设映射区的相应位置。
(7)若预设映射区不存在目标数据,且预设映射区的剩余空间小于目标数据所占内存空间,则清除目标队列中若干数据,获取清除后的目标队列;在预设映射区偏移量为0的位置开始,重新写入清除后的目标队列中的所有原始数据,并重复步骤(6),直到清除后的目标队列中的所有原始数据都被写入预设映射区。
(8)如果是H5页面需要展示目标数据,Native通过上述基于映射技术的文件读取方法获取到目标数据,并将所获取的目标数据转换成base64字符串,通过JSBridge传递给H5页面进行展示。
综上,本发明实施例提供一种基于映射技术的数据读取方法,包括如下有益效果:
(1)通过建立预设映射区,并建立预设映射区与缓存文件中数据的对应关系,当需要对数据进行读取时,直接在预设映射区中进行查找即可,节省了数据首次在内存中存储时的预处理操作,从而节省了数据读取时间,提高了软件的性能。
(2)将目标数据写入目标队列,可以保证目标队列和预设映射区的一致性,并且通过目标队列的记录,可以缩短在预设映射区中查找目标数据的时间。并且,还要将目标数据写在缓存文件中,缓存文件存在文件***中,无论软件打开还是关闭,缓存文件都会一直存在,而预设映射区存在与内存中,当软件关闭后,内存也会消失,而下一次软件打开时,在初始化的过程中,会重新在内存中建立预设映射区,并将缓存文件中的数据拷贝到预设映射区,后续对缓存文件中进行读取操作时可以避免预处理操作,因此,由于缓存文件不会随着软件的关闭而消失,通过缓存文件存储目标数据,可以对目标数据进行长期保存,后续使用时不需要再次进行拷贝。
(3)如果将目标数据在H5页面上显示,通过JSBridege传递给H5页面进行展示。H5和Native对缓存数据可以快速共享使用,H5不再需要额外独立开发缓存功能。
图3为本发明实施例提供的一种基于映射技术的文件读取***的结构示意图,如图3所示,该***包括接收模块310、判断模块320、处理模块330和读取模块340,其中:
接收模块310用于若接收到用于对目标数据进行读取的数据读取指令,获取所述目标数据对应的索引;
判断模块320用于根据所述目标数据对应的索引,判断预设映射区是否存在所述目标数据,所述预设映射区为内存中用于预先存储经预设处理的缓存文件中的原始数据;
处理模块330用于若所述预设映射区存在所述目标数据,则从所述预设映射区中读取出所述目标数据对应的原始数据;
读取模块340用于基于所述目标数据对应的原始数据,进行所述预设处理的逆处理,从而读取所述目标数据。
在上述实施例的基础上,优选地,还包括:第一判断模块、偏移量计算模块、第一映射模块,其中:
所述第一判断模块用于若所述预设映射区不存在所述目标数据,且所述预设映射区的剩余空间不小于所述目标数据所占内存空间,对所述目标数据进行所述预设处理,获取所述目标数据对应的原始数据;
所述偏移量计算模块用于根据预设的目标队列中排于末位的数据的起始偏移量和内存,计算目标起始偏移量,所述目标队列用于记录所述预设映射区中每一原始数据的索引、每一原始数据的起始偏移量和每一原始数据所占内存空间;
所述第一映射模块用于根据所述目标起始偏移量,将所述目标数据写入所述预设映射区的相应位置。
在上述实施例的基础上,优选地,还包括:索引模块,其中:
所述索引模块用于将所述目标数据的索引、目标起始偏移量、所述目标数据所占内存空间写入所述目标队列和所述缓存文件中。
在上述实施例的基础上,优选地,还包括:第二判断模块、第二映射模块,其中:
所述第二判断模块用于若所述预设映射区不存在所述目标数据,且所述预设映射区的剩余空间小于所述目标数据所占内存空间,则清除所述目标队列中若干数据,获取清除后的目标队列;
所述第二映射模块用于在所述预设映射区偏移量为0的位置开始,重新写入清除后的目标队列中的所有原始数据,并重复,直到清除后的目标队列中的所有原始数据都被写入所述预设映射区。
在上述实施例的基础上,优选地,所述判断模块中,所述预设映射区所占总内存空间通过如下步骤得到:
向配置服务器发送请求指令,获取所述配置服务器回应的预设映射区理论尺寸;
根据所述预设映射区理论尺寸,以及预设内存页尺寸,得到预设映射区实际尺寸。
在上述实施例的基础上,优选地,还包括:转换展示模块,其中:
所述转换展示模块用于将所述目标数据转换成base64字符串,通过JSBridege传递给H5页面进行展示。
在上述实施例的基础上,优选地,所述判断模块中,所述预设映射区用于预先存储原始数据,通过如下方式实现:
通过MMAP函数,建立所述预设映射区和所述缓存文件之间的映射关系;
对所述缓存文件中的目标数据进行所述预设处理,将所述目标数据对应的原始数据存储在所述预设映射区的对应位置中。
本实施例为与上述基于映射技术的文件读取方法实施例相对应的***实施例,其实施过程与上述方法实施例一致,详情请参考上述方法实施例,本***实施例在此不再赘述。
本发明提出的一种基于映射技术的文件读取***,通过建立预设映射区,并建立预设映射区与缓存文件中数据的对应关系,当需要对数据进行读取时,直接在预设映射区中进行查找即可,节省了数据首次在内存中存储时的预处理操作,从而节省了数据读取时间,提高了软件的性能。
上述基于映射技术的文件读取***中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,图4为本发明实施例提供的一种计算机设备的结构示意图,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括计算机存储介质、内存储器。该计算机存储介质存储有操作***、计算机程序和数据库。该内存储器为计算机存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行基于映射技术的文件读取方法过程中生成或获取的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于映射技术的文件读取方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中的基于映射技术的文件读取方法的步骤。或者,处理器执行计算机程序时实现基于映射技术的文件读取***这一实施例中的各模块/单元的功能。
在一实施例中,提供一计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中基于映射技术的文件读取方法的步骤。或者,该计算机程序被处理器执行时实现上述基于映射技术的文件读取***这一实施例中的各模块/单元的功能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)、DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于映射技术的文件读取方法,其特征在于,包括:
S1,若接收到用于对目标数据进行读取的数据读取指令,获取所述目标数据对应的索引;
S2,根据所述目标数据对应的索引,判断预设映射区是否存在所述目标数据,所述预设映射区为内存中用于预先存储经预设处理的缓存文件中的原始数据;
S3,若所述预设映射区存在所述目标数据,则从所述预设映射区中读取出所述目标数据对应的原始数据;
S4,基于所述目标数据对应的原始数据,进行所述预设处理的逆处理,从而读取所述目标数据。
2.根据权利要求1所述的基于映射技术的文件读取方法,其特征在于,还包括:
S21,若所述预设映射区不存在所述目标数据,且所述预设映射区的剩余空间不小于所述目标数据所占内存空间,对所述目标数据进行所述预设处理得到所述目标数据对应的原始数据;
S22,根据预设的目标队列中排于末位的数据的起始偏移量和内存,计算目标起始偏移量,所述目标队列用于记录所述预设映射区中每一原始数据的索引、每一原始数据的起始偏移量和每一原始数据所占内存空间;
S23,根据所述目标起始偏移量,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入所述预设映射区的相应位置。
3.根据权利要求2所述的基于映射技术的文件读取方法,其特征在于,所述根据所述目标起始偏移量,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入所述预设映射区的相应位置,包括:
将所述目标起始偏移量作为所述相应位置的起始点;
将所述目标数据所占内存空间作为所述相应位置的大小;
通过写函数,将所述目标数据的索引、所述目标数据和所述目标数据所占内存空间写入到所述相应位置。
4.根据权利要求2所述的基于映射技术的文件读取方法,其特征在于,还包括:
S31,若所述预设映射区不存在所述目标数据,且所述预设映射区的剩余空间小于所述目标数据所占内存空间,则清除所述目标队列中若干数据,获取清除后的目标队列;
S32,在所述预设映射区偏移量为0的位置开始,重新写入清除后的目标队列中的所有原始数据,并重复步骤S21至步骤S23,直到清除后的目标队列中的所有原始数据都被写入所述预设映射区。
5.根据权利要求1至4任一所述的基于映射技术的文件读取方法,其特征在于,所述预设映射区所占总内存空间通过如下步骤得到:
向配置服务器发送请求指令,获取所述配置服务器回应的预设映射区理论尺寸;
根据所述预设映射区理论尺寸,以及预设内存页尺寸,得到预设映射区实际尺寸。
6.根据权利要求1至4任一所述的基于映射技术的文件读取方法,其特征在于,还包括:将所述目标数据转换成base64字符串,通过JSBridege传递给H5页面进行展示。
7.根据权利要求1至4任一所述的基于映射技术的文件读取方法,其特征在于,所述预设映射区用于预先存储原始数据,通过如下方式实现:
通过MMAP函数,建立所述预设映射区和所述缓存文件之间的映射关系;
对所述缓存文件中的目标数据进行所述预设处理,将所述目标数据对应的原始数据存储在所述预设映射区的对应位置中。
8.一种基于映射技术的文件读取***,其特征在于,包括:
接收模块,用于若接收到用于对目标数据进行读取的数据读取指令,获取所述目标数据对应的索引;
判断模块,用于根据所述目标数据对应的索引,判断预设映射区是否存在所述目标数据,所述预设映射区为内存中用于预先存储经预设处理的缓存文件中的原始数据;
处理模块,用于若所述预设映射区存在所述目标数据,则从所述预设映射区中读取出所述目标数据对应的原始数据;
读取模块,用于基于所述目标数据对应的原始数据,进行所述预设处理的逆处理,从而读取所述目标数据。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述基于映射技术的文件读取方法的步骤。
10.一种计算机存储介质,所述计算机存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述基于映射技术的文件读取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111015063.0A CN113704588A (zh) | 2021-08-31 | 2021-08-31 | 基于映射技术的文件读取方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111015063.0A CN113704588A (zh) | 2021-08-31 | 2021-08-31 | 基于映射技术的文件读取方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113704588A true CN113704588A (zh) | 2021-11-26 |
Family
ID=78658187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111015063.0A Pending CN113704588A (zh) | 2021-08-31 | 2021-08-31 | 基于映射技术的文件读取方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113704588A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115061637A (zh) * | 2022-07-12 | 2022-09-16 | 平安科技(深圳)有限公司 | 磁盘数据索引方法、装置、计算机设备及存储介质 |
CN117527714A (zh) * | 2024-01-04 | 2024-02-06 | 柏科数据技术(深圳)股份有限公司 | 数据报文的读取方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106657009A (zh) * | 2016-11-14 | 2017-05-10 | 平安科技(深圳)有限公司 | 资源包加密方法、资源包解密方法及装置 |
CN107992569A (zh) * | 2017-11-29 | 2018-05-04 | 北京小度信息科技有限公司 | 数据访问方法、装置、电子设备及计算机可读存储介质 |
CN111290973A (zh) * | 2020-05-11 | 2020-06-16 | 深圳市科信通信技术股份有限公司 | 数据写入方法、装置、计算机设备及存储介质 |
CN112328342A (zh) * | 2020-10-29 | 2021-02-05 | 腾讯科技(深圳)有限公司 | 基于在线文档的待办事项处理方法及装置 |
-
2021
- 2021-08-31 CN CN202111015063.0A patent/CN113704588A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106657009A (zh) * | 2016-11-14 | 2017-05-10 | 平安科技(深圳)有限公司 | 资源包加密方法、资源包解密方法及装置 |
CN107992569A (zh) * | 2017-11-29 | 2018-05-04 | 北京小度信息科技有限公司 | 数据访问方法、装置、电子设备及计算机可读存储介质 |
CN111290973A (zh) * | 2020-05-11 | 2020-06-16 | 深圳市科信通信技术股份有限公司 | 数据写入方法、装置、计算机设备及存储介质 |
CN112328342A (zh) * | 2020-10-29 | 2021-02-05 | 腾讯科技(深圳)有限公司 | 基于在线文档的待办事项处理方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115061637A (zh) * | 2022-07-12 | 2022-09-16 | 平安科技(深圳)有限公司 | 磁盘数据索引方法、装置、计算机设备及存储介质 |
CN117527714A (zh) * | 2024-01-04 | 2024-02-06 | 柏科数据技术(深圳)股份有限公司 | 数据报文的读取方法、装置、设备及存储介质 |
CN117527714B (zh) * | 2024-01-04 | 2024-03-15 | 柏科数据技术(深圳)股份有限公司 | 数据报文的读取方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106537327B (zh) | 快闪存储器压缩 | |
US10649905B2 (en) | Method and apparatus for storing data | |
EP3159796A1 (en) | System and method for generating backups of a protected system from a recovery system | |
CN109710185B (zh) | 数据处理方法及装置 | |
CN113704588A (zh) | 基于映射技术的文件读取方法及*** | |
CN110532201B (zh) | 一种元数据处理方法及装置 | |
CN105393228B (zh) | 读写闪存中数据的方法、装置及用户设备 | |
US20200089580A1 (en) | Techniques for managing context information for a storage device while maintaining responsiveness | |
TWI634421B (zh) | 用以存取資料之電子裝置及其資料存取方法 | |
CN115470156A (zh) | 基于rdma的内存使用方法、***、电子设备和存储介质 | |
CN111803917A (zh) | 资源的处理方法和装置 | |
US9471584B2 (en) | Demand paging method for mobile terminal, controller and mobile terminal | |
US9471246B2 (en) | Data sharing using difference-on-write | |
US20230142948A1 (en) | Techniques for managing context information for a storage device | |
CN111796969A (zh) | 一种数据差量压缩检测方法、计算机设备和存储介质 | |
CN113704027B (zh) | 文件聚合兼容方法、装置、计算机设备和存储介质 | |
US11194498B1 (en) | Inline compression with small-write compression avoidance | |
CN115495020A (zh) | 文件处理方法、装置、电子设备和可读存储介质 | |
CN113010113B (zh) | 数据处理方法、装置及设备 | |
US9646014B1 (en) | Systems and methods for selective defragmentation | |
CN114003573A (zh) | 文件***的压缩方法、装置、设备、存储介质、程序产品 | |
US10019318B1 (en) | Storage optimization of pre-allocated units of storage | |
US20190294806A1 (en) | Method and system for implementing data secure deletion in mobile terminal | |
WO2017001900A1 (en) | A data processing method | |
CN107870736B (zh) | 支持大于4gb非线性闪存的方法及装置 |
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 |