文件容量识别方法、装置、计算机设备和存储介质与流程

文档序号:17289169发布日期:2019-04-03 03:48阅读:159来源:国知局
本申请涉及文件处理
技术领域
:,尤其涉及一种文件容量识别方法、装置、计算机设备和存储介质。
背景技术
::文件容量能衡量一个计算机文件的大小。通常情况下以带前缀的字节数表示。文件实际所占磁盘空间取决于文件系统。文件系统的最大文件大小取决于保留存储尺寸信息的位数量,及文件系统的总大小。文件的容量直接决定着该文件是否能够被应用软件所执行,而且某些文件如果容量过大会造成执行时速度变慢,这就需要对文件进行压缩。目前,在对文件容量进行识别时主要是采用人工核验的方法,对文件大小是否超过业务指标,需要把以前的性能测试数据都展示出来,然后人工一个个核对大小是否超标,将超标文件提供开发商进行修复后重新验证,验证后需要对所有的文件再一次的进行人工核对,直至整个流程中没有出现超标文件。但是,这种方法需要大量的人力成本,人工核对工作效率较低,整个流程比较繁琐,所需时间比较长,并且在此过程中需要客户端和性能测试机在同一个网段,在网络不好的情况下资源过大的文件加载比较缓慢,耗时较长。技术实现要素:有鉴于此,有必要针对现有文件容量识别效率低和无法自动化识别的问题,提供一种文件容量识别方法、装置、计算机设备和存储介质。一种文件容量识别方法,包括如下步骤:获取文件所对应的超文本传输协议http的请求消息,根据所述http的请求消息得到其所包含的超文本标记语言html文本的响应消息;分解所述html文本的响应消息得到特征标识字段,根据所述特征标识字段获得所述文件的文件类型;根据所述文件类型,应用对象树模型对所述文件进行数据抽取后汇总成一数据组;获取所述数据组的分块节点,根据所述分块节点对所述数据组进行分块得到数个文件子块;根据所述文件类型设定一容量阈值,将所述文件子块进行依次累加得到一新文件,比较所述新文件的容量与所述容量阈值,若所述新文件的容量小于所述容量阈值则将所述新文件储存到数据库中,否则对所述新文件进行压缩直到小于所述容量阈值。在其中一个实施例中,所述获取文件所对应的超文本传输协议http的请求消息,根据所述http的请求消息得到其所包含的超文本标记语言html文本的响应消息包括:获取所述文件中超文本标记语言html配置文件所包含的文件地址信息;根据所述文件地址信息,获得所述文件地址所对应的客户端ip地址,将所述ip地址转换成所述http的请求消息;将所述http的请求消息与所述html配置文件中的对应代码建立起映射关系,根据所述映射关系得到所述html文本的响应消息。在其中一个实施例中,所述分解所述html文本的响应消息得到特征标识字段,根据所述特征标识字段获得所述文件的文件类型包括:对所述html文本的响应消息进行解析,分解出通用字符组和特征字符组;根据所述特征字符组对所述html文本的字段进行标记;抽取带有标记的所述html文本的字段,汇总得到特征标识字段;获取所述特征标识字段与文件类型的对应表,根据所述对应表中的对应关系,获取所述html文本的响应消息对应的文件类型,其中,所述对应表存储在数据库中。在其中一个实施例中,所述根据所述文件类型,应用对象树模型对所述文件进行数据抽取后汇总成一数据组包括:对所述文件进行表节点标注,以所述表节点为根节点构成一根子树,所述根子树是对象树模型从所述文件中进行数据采集的最小子树;对所述文件进行行节点标注,所述行节点是所述表节点的直接子节点,以所述行节点为二级节点抽取所述根子树中的数据形成行子树;对所述文件进行元素节点标注,所述元素节点是以所述行子树中的直接子节点,以所述元素节点为三级节点抽取所述行子树中的数据形成元素子树;应用所述表节点对数据进行抽取,逐级汇总到所述元素子树,从所述元素子树的顶部输出端将数据输出,形成所述数据组。在其中一个实施例中所述获取所述数据组的分块节点,根据所述分块节点对所述数据组进行分块得到数个文件子块包括:按照数据生成的时间顺序,对所述数据组中的数据进行排序;以时间为横坐标,数据量为纵坐标建立数据直方图;选取所述数据直方图中,纵坐标数值排名前五的数据所对应的横坐标,作为所述数据组的分块节点;根据所述分块节点,将所述数据组分割成数个文件子块,并按照所述文件子块生成的时间顺序对所述文件子块进行排序。在其中一个实施例中,所述根据所述文件类型设定一容量阈值,将所述文件子块进行依次累加得到一新文件,比较所述新文件的容量与所述容量阈值,若所述新文件的容量小于所述容量阈值则将所述新文件储存到数据库中,否则对所述新文件进行压缩直到小于所述容量阈值包括:获取所述文件类型所对应的历史数据,将所述历史数据按照距离现在时刻的远近进行排序;根据所述历史数据与现在时刻的差值,赋予不同的权重,其中距离现在时刻越近的所述历史数据的权重越大;对所述历史数据进行加权求和得到所述容量阈值;按照所述文件子块生成的时间顺序,对所述文件子块进行依次累加得到所述新文件,若所述新文件的容量大于所述容量阈值,则将所述新文件中所包含的文件子块进行压缩,直到所述新文件的容量小于所述容量阈值。在其中一个实施例中,所述根据所述文件类型,应用对象树模型对所述文件进行数据抽取后汇总成一数据组还包括找寻节点路径的步骤,具体包括:确定所述表节点从其所对应的父节点到所对应的根节点的路径,从所述对象树模型的根节点开始,沿着所述路径反方向中的每个节点找到所述对象化模型树上的匹配节点,直到找到与所述文件匹配的表节点;获取表节点的直接子节点,去除开头的第一数量的直接子节点和除结尾的第二数量的直接子节点,将其它所述直接子节点作为的行节点,沿着该路径反方向中的每个节点找到所述对象化模型树上的匹配节点,直到找到与所述文件匹配的行节点,所述第一数量的直接子节点为跳过所述表节点获得的直接子节点,所述第二数量的直接子节点为跳过所述行节点获得的直接子节点;确定所述对象树模型树中元素节点从所对应的父节点到所述行节点的路径,从所述行节点开始,沿着该路径反方向中的每个节点找到所述对象树模型的匹配节点,直到找到文件匹配的元素节点。一种文件容量识别装置,包括如下模块:响应信息获取模块,设置为获取文件所对应的超文本传输协议http的请求消息,根据所述http的请求消息得到其所包含的超文本标记语言html文本的响应消息;文件类型识别模块,设置为分解所述html文本的响应消息得到特征标识字段,根据所述特征标识字段获得所述文件的文件类型;数据组生成模块,设置为根据所述文件类型,应用对象树模型对所述文件进行数据抽取后汇总成一数据组;文件子块生成模块,设置为获取所述数据组的分块节点,根据所述分块节点对所述数据组进行分块得到数个文件子块;文件容量判断模块,设置为根据所述文件类型设定一容量阈值,将所述文件子块进行依次累加得到一新文件,比较所述新文件的容量与所述容量阈值,若所述新文件的容量小于所述容量阈值则将所述新文件储存到数据库中,否则对所述新文件进行压缩直到小于所述容量阈值。一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述文件容量识别方法的步骤。一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述文件容量识别的步骤。上述文件容量识别方法、装置、计算机设备和存储介质,包括获取文件所对应的超文本传输协议http的请求消息,根据所述http的请求消息得到其所包含的超文本标记语言html文本的响应消息;分解所述html文本的响应消息得到特征标识字段,根据所述特征标识字段获得所述文件的文件类型;根据所述文件类型,应用对象树模型对所述文件进行数据抽取后汇总成一数据组;获取所述数据组的分块节点,根据所述分块节点对所述数据组进行分块得到数个文件子块;根据所述文件类型设定一容量阈值,将所述文件子块进行依次累加得到一新文件,比较所述新文件的容量与所述容量阈值,若所述新文件的容量小于所述容量阈值则将所述新文件储存到数据库中,否则对所述新文件进行压缩直到小于所述容量阈值。本技术方案针对现有文件容量识别效率低和无法自动化识别的问题,通过html文本和对象树模型对文件容量进行解析,实现快速识别文件容量的目的。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。图1为本申请的一种文件容量识别方法的整体流程图;图2为本申请的一种文件容量识别方法中的获取http文本响应信息过程示意图;图3为本申请的一种文件容量识别方法中的数据组形成过程示意图;图4为本申请的一种文件容量识别装置的结构图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。本
技术领域
:技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。图1为本申请一个实施例中的文件容量识别方法的流程图,如图1所示,一种文件容量识别方法,包括以下步骤:s1、获取文件所对应的超文本传输协议http的请求消息,根据所述http的请求消息得到其所包含的超文本标记语言html文本的响应消息;具体的,html又称为超文本标记语言,是标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分和“主体”部分,其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容;其中,超文本传输协议http的请求消息就是向文件所处于的客户端发出获得“主体”部分信息的请求,对“主体”部分信息进行分解,获得对应的超文本标记语言html文本的响应消息。s2、分解所述html文本的响应消息得到特征标识字段,根据所述特征标识字段获得所述文件的文件类型;具体的,在客户端采用解析引擎将该html文本解析成能够运行的应用资源。这种方式统一了开发语言,服务器发布更新后的应用资源后,只要客户端与服务器之间建立了http连接,就能直接更新,无需每个客户端专门下载新的应用系统重新安装更新;其中,http://test-yzthd.xxx.com.cn:6080/yzt/fkpq/index.html,这个特征标识字段为:/yzt/fkpq;http://test-yzthd.xxx.com.cn/bank/yizhangtong/qrcode/index.html,这个特征标识字段为:/bank/yhangtong/qrcode。s3、根据所述文件类型,应用对象树模型对所述文件进行数据抽取后汇总成一数据组;具体的,文件类型是可以根据认为设定进行更改,所以要采用对象树模型对文件中包含的数据进行抽取获得文件类型所包含的特殊字符,根据这些特征字符从而确定文件的真实类型;本实施例中的对象树模型可以是python继承树,python继承树中的每个节点即一个命名空间,最底下的叶子为对象实例,对象实例通过class钩子与上边的类节点连接,类通过base钩子与更高的超类连接。位于最顶上的根节点是type元类。无论属性或者方法,最终都是在命名空间中爬树、进行查找,每个命名空间的存储以字典的形式进行,字典的键为属性或者方法的名称字符串。每个对象的属性的查找的命名空间顺序mro是固定的,之前可能是dfs再bfs,目前是c3算法来实现。c3算法保证了子类永远在父类前面。s4、获取所述数据组的分块节点,根据所述分块节点对所述数据组进行分块得到数个文件子块;具体的,对数据组进行分块,可以是按照时间顺序对数据进行分块,也可以是根据数据的相关性对数据进行分块,比如在数据组中“test”这个词语出现了6次,则可以根据“test”将所述数据组分割成六块,分块节点之间可以具有共识性,这样便于不同数据块进行快速累加。s5、根据所述文件类型设定一容量阈值,将所述文件子块进行依次累加得到一新文件,比较所述新文件的容量与所述容量阈值,若所述新文件的容量小于所述容量阈值则将所述新文件储存到数据库中,否则对所述新文件进行压缩直到小于所述容量阈值。具体的,容量阈值的设定可以根据文件类型的历史数据进行确定,历史数据可以放入到误差修正模型中进行修订,也可以通过深度学习模型进行训练使其更加接近真实值。本申请通过上述方法步骤,实现了对文件容量的快速测试,使文件容量测试的准确度大大提升。图2为本申请在一个实施例中,获取http文本响应信息过程示意图,如图所示,所述步骤s1包括:s101、获取所述文件中超文本标记语言html配置文件所包含的文件地址信息;具体的,html配置文件中包含有文件地址的公共部分和特有部分,对公共部分进行筛出,保留文件地址中的特有部分作为该文件的地址信息,以区别与其他地址信息。s102、根据所述文件地址信息,获得所述文件地址所对应的客户端ip地址,将所述ip地址转换成所述http的请求消息;具体的,客户端的ip地址为一串数字代码,对数字代码进行解读比较费力,因此根据编码器将数字代码进行转换形成http形式的协议代码,根据协议代码中的特征部分,将特征部分作为请求信息进行发送,如http://test-yzthd.xxx.com.cn:6080/yzt/fkpq/index.html,其特征部分就为fkpq,即index前面的字符段作为请求信息。s103、将所述http的请求消息与所述html配置文件中的对应代码建立起映射关系,根据所述映射关系得到所述html文本的响应消息。具体的,如上一步骤所述的fkpq,在配置文件中所对应的代码为0q23,则将fkpq与0123建立起映射关系,这种映射关系不是唯一的,即可能存在如baaa也对应0q23的可能性,而0q23就是html文本的响应消息。本实施例中,通过对html文本和http建立起映射关系,能够快速识别出文件所对应的html文本,从而加快识别文件容量的速度。在一个实施例中,所述分解所述html文本的响应消息得到特征标识字段,根据所述特征标识字段获得所述文件的文件类型包括:对所述html文本的响应消息进行解析,分解出通用字符组和特征字符组;具体的,响应信息中的数字作为通用字符组,而字母或者特殊符号作为特征字符组,将字母或者特殊字符进行组合可以得到不用的相应信息,根据不同的字母或者特殊字符可以对响应信息进行分解解析。根据所述特征字符组对所述html文本的字段进行标记;抽取带有标记的所述html文本的字段,汇总得到特征标识字段;获取所述特征标识字段与文件类型的对应表,根据所述对应表中的对应关系,获取所述html文本的响应消息对应的文件类型,其中,所述对应表存储在数据库中。本实施例中,通过html文本的字段进行解析,获得文件类型的准确信息,在文件类型确定的情况下能够更好的对文件的容量进行判断。图3为本申请在一个实施例中,数据组形成过程示意图,如图所示,所述步骤s3包括:s301、对所述文件进行表节点标注,以所述表节点为根节点构成一根子树,所述根子树是对象树模型从所述文件中进行数据采集的最小子树;具体的,表节点为位于对象树模型中最下端的一个节点,即其所处的位置为根节点的上一级;对第一种为表节点(target_table)的解析标注,以该节点为根节点的子树为包含所有要提取的结构化数据的templatedom树的最小子树,即所有要提取的结构化数据都要从该节点的子树中查找对所述文件进行行节点标注。s302、对所述文件进行行节点标注,所述行节点是所述表节点的直接子节点,以所述行节点为二级节点抽取所述根子树中的数据形成行子树;具体的,利用查找到的搜索结果超文本标识语言页面上的表节点,以及所述对所述样本超文本标识语言页面中行节点的标注,以及所述样本页面文档对象化模型树和所述搜索结果页面文档对象化模型树之间的匹配关系,从所述搜索结果超文本标识语言页面查找搜索结果超文本标识语言页面上的行节点,对查找到的搜索结果超文本标识语言页面上的行节点进行标注。s303、对所述文件进行元素节点标注,所述元素节点是以所述行子树中的直接子节点,以所述元素节点为三级节点抽取所述行子树中的数据形成元素子树;具体的,利用查找到的搜索结果超文本标识语言页面上的行节点,以及所述对所述样本超文本标识语言页面中元素节点的标注,以及所述样本页面文档对象化模型树和所述搜索结果页面文档对象化模型树之间的匹配关系,从所述搜索结果超文本标识语言页面查找搜索结果超文本标识语言页面上的元素节点,对查找到的搜索结果超文本标识语言页面上的元素节点进行标注。s304、应用所述表节点对数据进行抽取,逐级汇总到所述元素子树,从所述元素子树的顶部输出端将数据输出,形成所述数据组。本实施例中,通过建立对象化树模型,可以对数据进行逐层抽取叠加,便于对文件的容量进行精确判断。在一个实施例中,所述获取所述数据组的分块节点,根据所述分块节点对所述数据组进行分块得到数个文件子块包括:按照数据生成的时间顺序,对所述数据组中的数据进行排序;以时间为横坐标,数据量为纵坐标建立数据直方图;选取所述数据直方图中,纵坐标数值排名前五的数据所对应的横坐标,作为所述数据组的分块节点;根据所述分块节点,将所述数据组分割成数个文件子块,并按照所述文件子块生成的时间顺序对所述文件子块进行排序。具体的,在建立数据直方图时,可以对数据进行正态分布整理,将处于数据量最多的五个时间点进行汇总到直方图的正中央,这样便于对数据分块的节点进行快速比较,若有在第五数据量时存在着两个或者多个的情况时,则任选其中一个作为分块的依据,对文件进行分块,这样可以减少分块的时间。本实施例中,通过对文件进行分块可以提升文件容量测试时的速度,即可以将文件按照子块一块一块的进行容量比对,提升文件容量判断的速度。在一个实施例中,所述根据所述文件类型设定一容量阈值,将所述文件子块进行依次累加得到一新文件,比较所述新文件的容量与所述容量阈值,若所述新文件的容量小于所述容量阈值则将所述新文件储存到数据库中,否则对所述新文件进行压缩直到小于所述容量阈值包括:获取所述文件类型所对应的历史数据,将所述历史数据按照距离现在时刻的远近进行排序;具体的,在对历史数据进行排序的过程中,可以按照时间点进行筛选,即设定一个时刻,比如要获取的是距离现在5小时内的数据,则将数据获取的时刻定在距离现在5小时前的时刻,将此时刻至今的数据进行获取,进行分析,对于在5小时前的数据则先不进行获取。根据所述历史数据与现在时刻的差值,赋予不同的权重,其中距离现在时刻越近的所述历史数据的权重越大;具体的,对距离现在时刻越近的时刻赋予大权重,如在距离现在1小时内的数据的权重为0.9,在距离现在6小时的数据则权重值只有0.8,这样可以使容量阈值更接近目前数据的真实值。对所述历史数据进行加权求和得到所述容量阈值;按照所述文件子块生成的时间顺序,对所述文件子块进行依次累加得到所述新文件,若所述新文件的容量大于所述容量阈值,则将所述新文件中所包含的文件子块进行压缩,直到所述新文件的容量小于所述容量阈值。本实施例中,通过对容量阈值进行修订,使其更加符合目前时刻的真实情况,避免历史数据的错误干扰,更能反映出文件的容量的真实值。在一个实施例中,所述根据所述文件类型,应用对象树模型对所述文件进行数据抽取后汇总成一数据组还包括找寻节点路径的步骤,具体包括:确定所述表节点从其所对应的父节点到所对应的根节点的路径,从所述对象树模型的根节点开始,沿着所述路径反方向中的每个节点找到所述对象化模型树上的匹配节点,直到找到与所述文件匹配的表节点;具体的,应用annotation_tag=“target_table”,表示从该节点的子树中提取结构化数据。annotation_begin_skip_children_count=n,表示在标注target_row节点时跳过target_table的直接子节点中开头的n个直接子节点,即从target_table节点的第n+1个直接子节点开始标注target_row节点,因为有些情况下target_table节点的前面几个直接子节点不包含要提取的结构化数据。获取表节点的直接子节点,去除开头的第一数量的直接子节点和除结尾的第二数量的直接子节点,将其它所述直接子节点作为的行节点,沿着该路径反方向中的每个节点找到所述对象化模型树上的匹配节点,直到找到与所述文件匹配的行节点,所述第一数量的直接子节点为跳过所述表节点获得的直接子节点,所述第二数量的直接子节点为跳过所述行节点获得的直接子节点;具体的,annotation_tag=“target_row”,表示该节点是target_table的直接子节点,表示该节点的子树中包含要提取的结构化表结构数据中某一行的数据。annotation_row_total_part_num=n(n>=1的整数),表示一行数据被划分成n个部分,该n个部分分散在n个连续的target_row节点的子树中。确定所述对象树模型树中元素节点从所对应的父节点到所述行节点的路径,从所述行节点开始,沿着该路径反方向中的每个节点找到所述对象树模型的匹配节点,直到找到文件匹配的元素节点。本实施例中,通过对表节点、行节点和元素节点的路径分析,得到数据获取过程的具体方式,从而更好的建立起新文件,便于获得文件的容量。在一个实施例中,提供了一种文件容量识别装置,如图4所示,包括:响应信息获取模块,设置为获取文件所对应的超文本传输协议http的请求消息,根据所述http的请求消息得到其所包含的超文本标记语言html文本的响应消息;文件类型识别模块,设置为分解所述html文本的响应消息得到特征标识字段,根据所述特征标识字段获得所述文件的文件类型;数据组生成模块,设置为根据所述文件类型,应用对象树模型对所述文件进行数据抽取后汇总成一数据组;文件子块生成模块,设置为获取所述数据组的分块节点,根据所述分块节点对所述数据组进行分块得到数个文件子块;文件容量判断模块,设置为根据所述文件类型设定一容量阈值,将所述文件子块进行依次累加得到一新文件,比较所述新文件的容量与所述容量阈值,若所述新文件的容量小于所述容量阈值则将所述新文件储存到数据库中,否则对所述新文件进行压缩直到小于所述容量阈值。在一个实施例中,提出了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述各实施例中所述文件容量识别方法的步骤。在一个实施例中,提出了一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中所述文件容量识别方法的步骤。其中,所述存储介质可以为非易失性存储介质。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1