CN115981968A - 监控pdf文件加载的方法、装置、电子设备及存储介质 - Google Patents
监控pdf文件加载的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115981968A CN115981968A CN202310180910.1A CN202310180910A CN115981968A CN 115981968 A CN115981968 A CN 115981968A CN 202310180910 A CN202310180910 A CN 202310180910A CN 115981968 A CN115981968 A CN 115981968A
- Authority
- CN
- China
- Prior art keywords
- loading
- monitoring
- file
- task
- loading task
- 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
- 238000011068 loading method Methods 0.000 title claims abstract description 310
- 238000012544 monitoring process Methods 0.000 title claims abstract description 282
- 238000000034 method Methods 0.000 title claims abstract description 96
- 230000002159 abnormal effect Effects 0.000 claims abstract description 56
- 238000004458 analytical method Methods 0.000 claims description 29
- 238000006243 chemical reaction Methods 0.000 claims description 19
- 238000002360 preparation method Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 10
- 230000003068 static effect Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供了监控pdf文件加载的方法、装置、电子设备及存储介质,该方法包括:获得待加载pdf文件,根据待加载pdf文件,生成加载任务;基于加载任务,生成监控请求;执行加载任务,获得文件信息;响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果。基于加载任务生成监控请求,并响应监控请求对加载任务中的文件信息进行监控,获得监控结果,及时获知加载任务出现异常,提高内存资源利用率,改善内存资源被出现异常的加载任务占用的问题。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及监控pdf文件加载的方法、装置、电子设备及存储介质。
背景技术
pdfbox(一个BSD许可下的源码开放项目)是一个为开发人员读取和创建pdf(可移植文档格式)文档而准备的Java类库,pdfbox支持pdf文档的开发和转换,使用pdfbox可将pdf类型的文件转换为图片或其他格式,pdf的主要组成结构包括header头信息部分、pdf文件内容核心部分PDF Objects(pdf对象)、以及pdf对象的具体偏移量。现有的pdfbox对pdf文件进行转换的过程,会因pdf文件加载异常,导致内存资源被占用的问题。
发明内容
本发明实施例的目的在于一种监控pdf文件加载的方法、装置、电子设备及存储介质,对加载任务进行监控,及时发现出现异常的加载任务并进行处理,改善内存资源被异常任务占用的情况。
第一方面,本申请实施例提供了一种监控pdf文件加载的方法,包括:获得待加载pdf文件,根据待加载pdf文件,生成加载任务;基于加载任务,生成监控请求;执行加载任务,获得文件信息;响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果。
在上述的实现过程中,基于加载任务生成监控请求,并响应监控请求,对加载任务中的文件信息进行监控,获得监控结果,及时获知加载任务出现异常,改善内存资源被出现异常的加载任务占用的问题,提高内存资源利用率。
可选的,在本申请实施例中,执行加载任务,获得文件信息,包括:通过主业务线程,按照预设的加载方法,执行加载任务,获得文件信息;其中,预设的加载方法是通过对原始加载解析方法进行重写,并继承原始加载解析方法中的方法类获得的。
在上述的实现过程中,对原始加载解析方法进行重写,获得预设的加载方法,利用重写后的加载方法对加载任务进行解析,在pdf提供的静态加载方法的基础上融合了监控机制,实现对加载任务的监控,提高资源利用率以及转换的稳定性。
可选的,在本申请实施例中,监控请求包括对象数量监控请求,基于加载任务,生成监控请求之后,方法还包括:将对象数量监控请求发送至第一异步线程;第一异步线程用于对加载任务中的文件信息进行监控,获得监控结果,并将监控结果发送至主业务线程,以使主业务线程对加载任务进行控制;监控结果包括文件数量监控结果。
在上述的实现过程中,采用通过异步监控线程来监控pdfbox在加载pdf的过程中被加载到pdf对象池的对象数量,在不影响主业务线程处理加载任务的情况下,实时发现pdf对象数异常的pdf,及时进行处理,改善内存资源占用异常的情况,使转换服务更加稳定。
可选的,在本申请实施例中,响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果,包括:通过第一异步线程,响应监控请求,对加载任务中的文件信息进行监控,获得空转换实例;根据空转换实例获得存放文件信息的对象池;从对象池中获得加载任务对应的文件信息;根据文件信息,获得监控结果。
在上述的实现过程中,采用通过异步监控线程来监控pdfbox在加载pdf的过程中被加载到pdf对象池的对象数量,在不影响主业务线程对加载任务的处理的情况下,对加载任务进行监控,改善内存资源占用异常的情况。
可选的,在本申请实施例中,文件信息包括文件对象总数和文件总页数;根据文件信息,获得监控结果,包括:根据文件对象总数和文件总页数,获得待加载pdf文件中的每页平均对象数;根据每页平均对象数,以及预设的阈值,获得监控结果;监控结果用于表征加载任务是否出现异常。
在上述的实现过程中,通过计算文件对象总数和文件总页数的比值,获得待加载pdf文件中的每页平均对象数,根据每页平均对象数,以及预设的阈值,获得监控结果。提高了监控的精确性。
可选的,在本申请实施例中,文件信息还包括超时时间;监控请求包括超时监控请求,基于加载任务,生成监控请求之后,方法还包括:将超时监控请求发送至第二异步线程;第二异步线程用于对加载任务的超时时间进行监控,获得监控结果,并将监控结果发送至主业务线程;监控结果包括超时监控结果。
在上述的实现过程中,通过第二异步线程对加载任务的超时时间进行监控,获得超时监控结果。可以及时发现超时加载任务,改善超时任务占用内存资源的情况,提高内存资源的利用率。
可选的,在本申请实施例中,在通过主业务线程,按照预设的加载方法,执行加载任务,获得文件信息之前,方法还包括:获得原始加载解析方法,原始加载解析方法包括PDFParser类;通过重写原始加载解析方法,获得预设的加载方法;其中,预设的加载方法继承PDFParser类;预设的加载方法用于获取文件对象总数和文件总页数。
在上述的实现过程中,对原始加载解析方法进行重写,获得预设的加载方法,利用重写后的加载方法对加载任务进行解析,在pdf提供的静态加载方法的基础上融合了监控机制,实现对加载任务的监控,提高内存资源利用率。
可选的,在本申请实施例中,其中,在响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果之后,包括:若监控结果表征监控到加载任务出现异常;则暂停加载任务,通过预备操作方法对待加载pdf文件进行加载处理,并根据监控结果,生成异常告警。
在上述的实现过程中,在监控到加载任务出现异常的情况下,暂停加载任务,结束异步线程的监控,通过预备操作方法对待加载pdf文件进行加载处理,在一定程度上保证转换服务的稳定性,且避免了内存资源被异常任务占用。
第二方面,本申请实施例还提供了一种监控pdf文件加载的装置,包括:生成任务模块,用于获得待加载pdf文件,根据待加载pdf文件,生成加载任务;生成请求模块,用于基于加载任务,生成监控请求;执行模块,用于执行加载任务,获得文件信息;监控模块,用于响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器和存储器,存储器存储有处理器可执行的机器可读指令,机器可读指令被处理器执行时执行如上面描述的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上面描述的方法。
采用本申请提供的监控pdf文件加载的方法、装置、电子设备及存储介质,利用重写后的加载方法对加载任务进行解析,在pdf提供的静态加载方法的基础上融合了监控机制,实现对加载任务的监控。及时获知加载任务出现异常的情况,提高内存资源利用率,改善内存资源被出现异常的加载任务占用的问题。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种监控pdf文件加载的方法的流程示意图;
图2为本申请实施例提供的异步监控pdf文件加载的示意图;
图3为本申请实施例提供的监控pdf文件加载的装置的结构示意图;
图4为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合附图对本申请技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
在本申请实施例的描述中,技术术语“第一”、“第二”等仅用于区别不同对象,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量、特定顺序或主次关系。在本申请实施例的描述中,“多个”的含义是两个及以上,除非另有明确具体的限定。
请参见图1示出的本申请实施例提供的一种监控pdf文件加载的方法的流程示意图。本申请实施例提供的监控pdf文件加载的方法可以应用于电子设备,该电子设备可以包括终端以及服务器;其中终端具体可以为智能手机、平板电脑、计算机、个人数字助理(Personal Digital Assitant,PDA)等;服务器具体可以为应用服务器,也可以为Web服务器。该监控pdf文件加载的方法可以包括以下步骤:
步骤S110:获得待加载pdf文件,根据待加载pdf文件,生成加载任务。
步骤S120:基于加载任务,生成监控请求。
步骤S130:执行加载任务,获得文件信息。
步骤S140:响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果。
在步骤S110中,待加载pdf文件可以为需要转换成图片、word文件或其他文件格式的pdf文件。电子设备获取到待加载pdf文件之后,根据每一待加载pdf文件,生成待加载pdf文件对应的加载任务。作为一种实施方式,可以将生成的加载任务发送至主业务线程,主业务线程用于对接收到的加载任务进行处理。
在步骤S120中,监控请求用于生成监控任务,通过监控任务对加载任务中的文件信息进行监控,例如根据监控到的加载任务的对象数量、超时时间等文件信息,判断该加载任务是否出现异常。其中,加载任务和监控请求是相对应的,即每一加载任务生成对应的监控请求。
作为一种实施方式,上述步骤具体可以采用jdk提供的CompletableFuture类实现,在获得加载任务之后,根据加载任务,创建CompletableFuture实例,基于CompletableFuture实例生成监控请求,其中,监控请求包括CompletableFuture实例。
在步骤S130中,通过主业务线程执行加载任务,获得文件信息;其中,文件信息包括pdf对象数量和pdf加载时间等。具体例如,使用pdfbox对待加载pdf文件进行转换处理,获取pdfbox的空转换实例,通过该空转换实例获取到存放该待加载pdf文件对应的文件信息的对象池,在对象池中获取文件信息。
在步骤S140中,响应监控请求,对加载任务进行监控,根据监控到的加载任务中的文件信息,获得监控结果。具体例如,在pdfbox加载解析pdf的方法中加入监控机制的代码逻辑,利用重写后的加载解析方法对pdf文件进行解析,即可实现对加载任务中的文件信息进行监控,包括监控pdf文件的对象数是否超过阈值,监控pdf的加载时间是否超时等。监控结果用于表征加载任务是否出现异常,在出现异常的情况下,监控结果还可以包括出现异常的类型和时间等信息。
在一个可选的实施例中,在监控到加载任务出现异常之后,可以将加载任务进行暂停或终止。例如,若监控pdf文件的对象数超过了阈值,则停止处理该加载任务的主任务线程,避免该异常pdf继续加载,造成大量内存资源的消耗。
需要说明的是,在开始执行加载任务之后就可以响应监控请求,对加载任务中的文件信息进行实时监控,而无需等待至加载任务结束才进行监控。实现对pdf的加载进行实时监控,并在发现异常的时候及时进行处理。作为一种实施方式,可以使用主业务线程执行加载任务,使用异步线程对加载任务进行监控,从而不影响主业务线程对加载任务的处理,提高监控加载的实时性。
在上述的实现过程中,基于加载任务生成监控请求,并响应监控请求对加载任务中的文件信息进行监控,获得监控结果,及时获知加载任务出现异常,改善内存资源被出现异常的加载任务占用的问题,提高内存资源利用率。
在一种可选的实施方式中,监控请求可以对pdf文件加载过程中的以下方面进行监控:pdf文件对象数量和/或文件超时时间。监控请求可以包括对象数量监控请求和/或超时监控请求。
可选的,在本申请实施例中,执行加载任务,获得文件信息,包括:通过主业务线程,按照预设的加载方法,执行加载任务,获得文件信息;其中,预设的加载方法是通过对原始加载解析方法进行重写,并继承原始加载解析方法中的方法类获得的。
在具体的实现过程中:主业务线程的作用是对加载任务进行控制,包括执行加载任务和停止加载任务。例如在接收到加载任务之后,按照预设的加载方法,执行加载任务;在接收到加载任务出现异常的信息之后,停止加载任务。
原始加载解析方法是pdfbox提供的静态加载方法中的加载解析方法,通过该静态加载方法实现对pdf进行加载处理。原始加载解析方法中并不存在监控机制,无法实现对加载任务的监控。预设的加载方法是通过对原始加载解析方法进行重写获得的,示例性的,Pdfbox自身提供的静态加载方法为PDDocument.load(),这个方法中的核心的加载解析的方法为PDFParser.parse()。预设的加载方法继承重写了pdfbox中的PDFParser类,并在其中加入监控逻辑代码,实现在原始加载解析方法PDFParser.parse()中加入监控操作。
获得预设的加载方法后,即可实现通过主业务线程,按照预设的加载方法,执行加载任务,获得文件信息。
在上述的实现过程中,对原始加载解析方法进行重写,获得预设的加载方法,利用重写后的加载方法对加载任务进行解析,在pdf提供的静态加载方法的基础上融合了监控机制,实现对加载任务的监控,提高资源利用率以及转换的稳定性。
可选的,在本申请实施例中,监控请求包括对象数量监控请求,基于加载任务,生成监控请求之后,方法还包括:将对象数量监控请求发送至第一异步线程;第一异步线程用于对加载任务中的文件信息进行监控,获得监控结果,并将监控结果发送至主业务线程,以使主业务线程对加载任务进行控制;监控结果包括文件数量监控结果。
在具体的实现过程中:监控请求包括对象数量监控请求,对象数量监控请求用于对文件信息中的对象数量进行监控。其中,对象数量为pdf文件内容核心部分PDF Objects(也可以称为COS对象)的数量。
在获取到对象数量请求之后,将其发送至第一异步线程,由第一异步线程对加载任务中的文件信息进行监控,从而不影响主任务线程对加载任务的处理。异步线程的实现方式包括多线程和完成端口等。多线程方式将加载任务放在主任务线程中运行,将监控操作使用另一线程,即第一异步线程中进行运行,通过轮询或回调方法得到完成通知。完成端口方式由操作系统接管异步操作的调度,通过硬件中断,在完成时触发回调方法,完成端口方式不需要占用额外线程。
第一异步线程在对加载任务中的文件信息进行监控后,获得监控结果,并且将获取到的监控结果发送至主业务线程,该监控结果包括文件数量监控结果。主业务线程获得的文件数量监控结果后,会根据结果对加载任务进行控制,例如在结果正常的情况下继续加载任务,在结果异常的情况下控停对pdf的加载操作。
在一个可选的实施例中,为了减少线程资源的占用,以及考虑到可能存在不同延时的加载任务,可以基于时间轮技术延时监控所有的pdf的对象数加载情况。其中,每一个时间轮即为一个异步线程。
在上述的实现过程中,采用通过异步监控线程来监控pdfbox在加载pdf的过程中被加载到pdf对象池的对象数量,在不影响主业务线程处理加载任务的情况下,实时发现PDF对象数异常的pdf,及时进行处理,改善内存资源占用异常的情况,使转换服务更加稳定。
可选的,在本申请实施例中,响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果,包括:通过第一异步线程,响应监控请求,对加载任务中的文件信息进行监控,获得空转换实例;根据空转换实例获得存放文件信息的对象池;从对象池中获得加载任务对应的文件信息;根据文件信息,获得监控结果。
在具体的实现过程中:对象池是pdfbox自身实现的一种模式,即对象池模式。将对象预先创建并初始化后放入对象池中,对象提供者pdfbox就能利用已有的对象来处理请求,例如获取文件信息的请求,减少频繁创建对象所占用的内存空间和初始化时间。一个对象池包含一组已经初始化并且可以使用的对象,可以在有需求时创建和销毁对象。对象池的用户可以从池子中取得对象,对其进行操作处理。本申请实施例中的对象可以为pdf对象。
获取pdfbox的空转换实例PDDocument,并利用第一异步线程,通过该空转换实例PDDocument获取到存放pdf文件信息的对象池,文件信息包括以及加载到对象池中的pdf对象的数量信息。
在上述的实现过程中,采用通过异步监控线程来监控pdfbox在加载pdf的过程中被加载到pdf对象池的对象数量,在不影响主业务线程对加载任务的处理的情况下,对加载任务进行监控,改善内存资源占用异常的情况。
可选的,在本申请实施例中,文件信息包括文件对象总数和文件总页数;根据文件信息,获得监控结果,包括:根据文件对象总数和文件总页数,获得待加载pdf文件中的每页平均对象数;根据每页平均对象数,以及预设的阈值,获得监控结果;监控结果用于表征加载任务是否出现异常。
在具体的实现过程中:由于每一文件的文件内容以及文件大小不同,因此,若仅仅通过文件对象总数判断加载是否出现异常,可能会出现误判的情况,并不能精确的确定pdf是否异常。因此,本申请实施例通过每页平均对象数以及预设的阈值判断加载是否出现异常。
具体例如,通过预设的加载方法获取文件对象总数和文件总页数,计算文件对象总数和文件总页数的比值,获得待加载pdf文件中的每页平均对象数。
将每页平均对象数,和预设的阈值进行比较,若每页平均对象数大于预设的阈值,则认为pdf可能出现异常,获得表征加载任务出现异常的监控结果;若每页平均对象数不大于预设的阈值,则认为pdf可能未出现异常,获得表征加载任务正常的监控结果。
在上述的实现过程中,通过计算文件对象总数和文件总页数的比值,获得待加载pdf文件中的每页平均对象数,根据每页平均对象数,以及预设的阈值,对加载任务进行监控,提高了监控的精确性。
可选的,在本申请实施例中,文件信息还包括超时时间;监控请求包括超时监控请求,基于加载任务,生成监控请求之后,方法还包括:将超时监控请求发送至第二异步线程;第二异步线程用于对加载任务的超时时间进行监控,获得监控结果,并将监控结果发送至主业务线程;监控结果包括超时监控结果。
在具体的实现过程中:超时监控请求用于监控加载任务是否超时;第二异步线程用于处理超时监控请求。超时监控请求包括请求时间戳,第二异步线程根据超时监控请求中的请求时间戳和监控的当前时间,判断加载任务是否超过预设超时时间,获得监控结果,该监控结果可以为超时监控结果。
具体例如,新增一个超时监控节点的类,在加载服务启动时,构建超时监控节点实例,根据超时监控节点实例生成超时监控请求;超时监控请求包括请求时间戳。将超时监控请求发送至第二异步线程。第二异步线程对加载任务的超时时间进行监控,若第二异步线程监控到某pdf对应的加载任务超过预设超时时间,则将表征超时异常的超时监控结果发送至主业务线程。此时可以结束第二异步线程的监控,并停止主业务线程对该加载任务的操作。
在上述的实现过程中,通过第二异步线程对加载任务的超时时间进行监控,获得超时监控结果。实现及时发现超时加载任务,改善超时任务占用内存资源的情况,提高资源利用率。
可选的,在本申请实施例中,在通过主业务线程,按照预设的加载方法,执行加载任务,获得文件信息之前,方法还包括:获得原始加载解析方法,原始加载解析方法包括PDFParser类;通过重写原始加载解析方法,获得预设的加载方法;其中,预设的加载方法继承PDFParser类;预设的加载方法用于获取文件对象总数和文件总页数。
在具体的实现过程中:预设的加载方法继承重写了pdfbox中的PDFParser类,在PDFParser.parse()方法的前后加入监控的操作。具体例如在PDFParser.parse()方法执行前,生成监控请求,再将监控请求发送至第一异步线程进行监控;在PDFParser.parse()方法后面获取来自第一异步线程的监控结果。
主业务线程在执行加载任务之前,即将对象数量监控请求发送至第一异步线程,通过原始加载解析方法无法获得文件总页数。因此,采用预设的加载方法对加载任务进行加载,使得在加载完成之前第一异步线程就获取到文件总页数,以及在pdf对象池中获取到文件对象总数。根据文件对象总数、文件总页数,以及预设的阈值,判断加载任务是否出现异常,获得监控结果。
在上述的实现过程中,对原始加载解析方法进行重写,获得预设的加载方法,利用重写后的加载方法对加载任务进行解析,在pdf提供的静态加载方法的基础上融合了监控机制,实现对加载任务的监控,提高内存资源利用率。
可选的,在本申请实施例中,其中,在响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果之后,包括:若监控结果表征监控到加载任务出现异常;则暂停加载任务,通过预备操作方法对待加载pdf文件进行加载处理,并根据监控结果,生成异常告警。
在具体的实现过程中:若监控结果表征监控到加载任务出现异常,包括文件对象数量异常或加载超时异常等;则通过主业务线程暂停加载任务,以及结束异步线程的监控。对于暂停加载的pdf加载任务,可以通过预备操作方法对待加载pdf文件进行加载处理,
其中,预备操作方法可以是使用mupdf来对pdf文件进行转换或其他的转换方式。
并且在监控到加载任务出现异常的情况下,可以生成异常告警,并将异常告警发送给用户;异常告警可以包括异常的加载任务以及异常类型,以使用户接收到异常告警后对异常情况进行处理。
在上述的实现过程中,在监控到加载任务出现异常的情况下,暂停加载任务,结束异步线程的监控,通过预备操作方法对待加载pdf文件进行加载处理,在一定程度上保证转换服务的稳定性,且避免了内存资源被异常任务占用。
请参加图2示出的本申请实施例提供的异步监控pdf文件加载的示意图。
在一个可选的实施例中,主业务线程用于执行pdf文件的加载任务,监控链中具有多个监控节点,每一监控节点通过对应的异步线程执行监控,例如,通过第一异步线程监控文件对象数量;通过第二异步线程监控超时时间;可以理解的,监控链中还可以设置其他监控节点,以及尾部空节点等。异步线程可以基于时间轮技术实现,每一时间轮可以为一个异步线程。
主业务线程基于加载任务,生成监控请求,将监控请求发送至对应的异步线程,而后执行加载任务,获得文件信息。异步线程将监控结果同步响应至主业务线程,主业务线程获取到监控结果,若监控结果表征加载任务正常,则继续执行加载任务,至文件加载完成;若监控任务表征加载时出现异常,则可以立即停止加载任务,并且同步取消该加载任务对应的监控任务。作为一种实施方式,时间轮、线程池这些异步线程执行的监控任务发生异常后,可以直接关闭当前加载的文件。
其中,各监控节点之间可以同步调用,以及若加载任务发生异常,各监控节点之间可以同步取消。
请参见图3示出的本申请实施例提供的监控pdf文件加载的装置的结构示意图;本申请实施例提供了一种监控pdf文件加载的装置200,包括:
生成任务模块210,用于获得待加载pdf文件,根据待加载pdf文件,生成加载任务;
生成请求模块220,用于基于加载任务,生成监控请求;
执行模块230,用于执行加载任务,获得文件信息;
监控模块240,用于响应于监控请求,对加载任务中的文件信息进行监控,获得监控结果。
可选地,在本申请实施例中,监控pdf文件加载的装置,执行模块230,具体用于通过主业务线程,按照预设的加载方法,执行加载任务,获得文件信息;其中,预设的加载方法是通过对原始加载解析方法进行重写,并继承原始加载解析方法中的方法类获得的。
可选地,在本申请实施例中,监控pdf文件加载的装置,还包括:异步线程模块,用于将对象数量监控请求发送至第一异步线程;第一异步线程用于对加载任务中的文件信息进行监控,获得监控结果,并将监控结果发送至主业务线程,以使主业务线程对加载任务进行控制;监控结果包括文件数量监控结果。
可选地,在本申请实施例中,监控pdf文件加载的装置,监控模块240,具体用于通过第一异步线程,响应监控请求,对加载任务中的文件信息进行监控,获得空转换实例;根据空转换实例获得存放文件信息的对象池;从对象池中获得加载任务对应的文件信息;根据文件信息,获得监控结果。
可选地,在本申请实施例中,监控pdf文件加载的装置,文件信息包括文件对象总数和文件总页数;监控模块240,还用于根据文件对象总数和文件总页数,获得待加载pdf文件中的每页平均对象数;根据每页平均对象数,以及预设的阈值,获得监控结果;监控结果用于表征加载任务是否出现异常。
可选地,在本申请实施例中,监控pdf文件加载的装置,文件信息还包括超时时间;装置还包括超时监控模块,用于将超时监控请求发送至第二异步线程;第二异步线程用于对加载任务的超时时间进行监控,获得监控结果,并将监控结果发送至主业务线程;监控结果包括超时监控结果。
可选地,在本申请实施例中,监控pdf文件加载的装置,还包括。方法重写模块,用于获得原始加载解析方法,原始加载解析方法包括PDFParser类;通过重写原始加载解析方法,获得预设的加载方法;其中,预设的加载方法继承PDFParser类;预设的加载方法用于获取文件对象总数和文件总页数。
可选地,在本申请实施例中,监控pdf文件加载的装置,预备操作模块,用于若监控结果表征监控到加载任务出现异常;则暂停加载任务,通过预备操作方法对待加载pdf文件进行加载处理,并根据监控结果,生成异常告警。
应理解的是,该装置与上述的监控pdf文件加载的方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。
请参见图4示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备300,包括:处理器310和存储器320,存储器320存储有处理器310可执行的机器可读指令,机器可读指令被处理器310执行时执行如上的方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上的方法。
其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-OnlyMemory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。
Claims (10)
1.一种监控pdf文件加载的方法,其特征在于,包括:
获得待加载pdf文件,根据所述待加载pdf文件,生成加载任务;
基于所述加载任务,生成监控请求;
执行所述加载任务,获得文件信息;
响应于所述监控请求,对所述加载任务中的文件信息进行监控,获得监控结果。
2.根据权利要求1所述的方法,其特征在于,所述执行所述加载任务,获得文件信息,包括:
通过主业务线程,按照预设的加载方法,执行所述加载任务,获得文件信息;其中,所述预设的加载方法是通过对原始加载解析方法进行重写,并继承所述原始加载解析方法中的方法类获得的。
3.根据权利要求2所述的方法,其特征在于,所述监控请求包括对象数量监控请求,所述基于所述加载任务,生成监控请求之后,所述方法还包括:
将所述对象数量监控请求发送至第一异步线程;所述第一异步线程用于对所述加载任务中的文件信息进行监控,获得监控结果,并将所述监控结果发送至所述主业务线程,以使所述主业务线程对所述加载任务进行控制;所述监控结果包括文件数量监控结果。
4.根据权利要求3所述的方法,其特征在于,所述响应于所述监控请求,对所述加载任务中的文件信息进行监控,获得监控结果,包括:
通过所述第一异步线程,响应所述监控请求,对所述加载任务中的文件信息进行监控,获得空转换实例;
根据所述空转换实例获得存放所述文件信息的对象池;
从所述对象池中获得所述加载任务对应的文件信息;
根据所述文件信息,获得所述监控结果。
5.根据权利要求4所述的方法,其特征在于,所述文件信息包括文件对象总数和文件总页数;所述根据所述文件信息,获得所述监控结果,包括:
根据所述文件对象总数和所述文件总页数,获得所述待加载pdf文件中的每页平均对象数;
根据所述每页平均对象数,以及预设的阈值,获得所述监控结果;所述监控结果用于表征所述加载任务是否出现异常。
6.根据权利要求2所述的方法,其特征在于,文件信息还包括超时时间;所述监控请求包括超时监控请求,所述基于所述加载任务,生成监控请求之后,所述方法还包括:
将所述超时监控请求发送至第二异步线程;所述第二异步线程用于对所述加载任务的超时时间进行监控,获得监控结果,并将所述监控结果发送至所述主业务线程;所述监控结果包括超时监控结果。
7.根据权利要求2所述的方法,其特征在于,在所述通过主业务线程,按照预设的加载方法,执行所述加载任务,获得文件信息之前,所述方法还包括:
获得所述原始加载解析方法,所述原始加载解析方法包括PDFParser类;
通过重写所述原始加载解析方法,获得所述预设的加载方法;其中,所述预设的加载方法继承所述PDFParser类;所述预设的加载方法用于获取所述文件对象总数和所述文件总页数。
8.根据权利要求1-7任一所述的方法,其特征在于,其中,在所述响应于所述监控请求,对所述加载任务中的文件信息进行监控,获得监控结果之后,包括:
若所述监控结果表征监控到所述加载任务出现异常;
则暂停所述加载任务,通过预备操作方法对所述待加载pdf文件进行加载处理,并根据所述监控结果,生成异常告警。
9.一种监控pdf文件加载的装置,其特征在于,包括:
生成任务模块,用于获得待加载pdf文件,根据所述待加载pdf文件,生成加载任务;
生成请求模块,用于基于所述加载任务,生成监控请求;
执行模块,用于执行所述加载任务,获得文件信息;
监控模块,用于响应于所述监控请求,对所述加载任务中的文件信息进行监控,获得监控结果。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至8任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310180910.1A CN115981968A (zh) | 2023-02-27 | 2023-02-27 | 监控pdf文件加载的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310180910.1A CN115981968A (zh) | 2023-02-27 | 2023-02-27 | 监控pdf文件加载的方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115981968A true CN115981968A (zh) | 2023-04-18 |
Family
ID=85976376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310180910.1A Pending CN115981968A (zh) | 2023-02-27 | 2023-02-27 | 监控pdf文件加载的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115981968A (zh) |
-
2023
- 2023-02-27 CN CN202310180910.1A patent/CN115981968A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766101B (zh) | App启动事件的处理方法、装置和设备 | |
US7069396B2 (en) | Deferred memory allocation for application threads | |
CN112035238B (zh) | 任务调度处理方法、装置、集群系统及可读存储介质 | |
WO2018072408A1 (zh) | 一种内存分析方法、装置、系统以及计算设备 | |
US10659317B2 (en) | Dynamically adapting cloud applications | |
CN115150464B (zh) | 应用代理方法、装置、设备及介质 | |
CN113407383B (zh) | 主备系统切换方法、装置、服务器及主备系统 | |
CN111752822A (zh) | 一种容器化压测调度方法、计算机设备及可读存储介质 | |
US20100332914A1 (en) | Dump output control apparatus and dump output control method | |
CN114880159A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN110764962B (zh) | 日志处理方法和装置 | |
US10783007B2 (en) | Load distribution for integration scenarios | |
CN115981871A (zh) | 一种gpu资源调度方法、装置、设备及存储介质 | |
CN115981968A (zh) | 监控pdf文件加载的方法、装置、电子设备及存储介质 | |
CN107453937B (zh) | 网络连接池的管理方法、网络访问方法及相关设备 | |
CN114138371B (zh) | 配置动态加载方法、装置及计算机设备、存储介质 | |
US20180373512A1 (en) | Method and device for simulating synchronous blocking in asynchronous environment, storage medium, server and terminal | |
US10445081B2 (en) | Techniques of automatically generating dependencies for applications in embedded systems | |
CN115373802A (zh) | 代理系统的重启方法、装置、电子设备及存储介质 | |
CN115904745A (zh) | 进程间通信方法及相关设备 | |
CN112257004A (zh) | 备份页面的方法、装置、服务器及存储介质 | |
CN114296774A (zh) | 一种应用程序的存储方法、调用方法、装置及存储介质 | |
JP4179110B2 (ja) | 情報処理装置、情報処理プログラムおよび情報処理方法 | |
CN112559918A (zh) | 一种页面控制方法、装置、系统、设备及可读存储介质 | |
CN118733302B (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 |