CN111752912A - 数据处理方法及装置 - Google Patents

数据处理方法及装置 Download PDF

Info

Publication number
CN111752912A
CN111752912A CN201910231743.2A CN201910231743A CN111752912A CN 111752912 A CN111752912 A CN 111752912A CN 201910231743 A CN201910231743 A CN 201910231743A CN 111752912 A CN111752912 A CN 111752912A
Authority
CN
China
Prior art keywords
record
call
current
incoming
entry
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
Application number
CN201910231743.2A
Other languages
English (en)
Other versions
CN111752912B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201910231743.2A priority Critical patent/CN111752912B/zh
Publication of CN111752912A publication Critical patent/CN111752912A/zh
Application granted granted Critical
Publication of CN111752912B publication Critical patent/CN111752912B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephone Function (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本公开涉及一种数据处理方法及装置。所述装置包括控制模块,所述控制模块包括:指令缓存子模块、指令处理子模块和存储队列子模块;所述指令缓存子模块,用于存储所述人工神经网络运算关联的计算指令;所述指令处理子模块,用于对所述计算指令解析得到多个运算指令;所述存储队列子模块,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

数据处理方法及装置
技术领域
本公开涉及信息技术领域,尤其涉及一种数据处理方法及装置。
背景技术
通常来讲,日志文件可以用于记录在操作系统或软件运行中发生的事件。相关技术中,程序的日志文件的多条记录往往是按照记录生成的时间顺序排列的,当需要查找日志文件中的一条或多条记录时,需要遍历日志文件中的各个记录,导致针对日志文件的查找效率低下。
发明内容
有鉴于此,本公开提出了一种数据处理方法及装置。
根据本公开的一方面,提供了一种数据处理方法,包括:
获取程序的日志文件,所述日志文件包括多条记录,各记录用于记载所述程序运行中执行函数调用的信息;
根据所述日志文件生成索引文件,所述索引文件表示所述日志文件中的记录的位置和记录中记载的函数调用之间的调用关系;
根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
在一种可能的实现方式中,所述索引文件包括记录的位置序号和与位置序号对应的索引号,所述位置序号表示记录在日志文件中的位置,所述索引号用于表示记录中记载的函数调用之间的调用关系,
根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置,包括:
根据所述位置序号和所述索引号,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
在一种可能的实现方式中,
所述日志文件的记录包括入记录和出记录,所述入记录用于记载所述程序执行进入函数调用的信息,所述出记录用于记载所述程序执行退出函数调用的信息,各记录在所述日志文件中的位置序号按照各记录生成的先后顺序依次变化;
在所述索引文件中,每个记录的位置序号对应一个索引号,入记录的位置序号对应的索引号与该入记录所对应的出记录的位置序号相同,出记录的位置序号对应的索引号与该出记录中函数调用的父调用所在入记录的位置序号相同。
在一种可能的实现方式中,根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置,包括:
如果当前记录为入记录,则将当前入记录的索引号,确定为与当前入记录对应的出记录的位置序号;
将当前入记录对应的出记录的索引号,作为当前入记录的函数调用的父调用所在入记录的位置序号,每个入记录的函数调用和该入记录对应的出记录的函数调用相同;
如果当前入记录对应的出记录的下一条记录为入记录,则将该当前入记录对应的出记录的下一条记录的位置序号,作为当前入记录的函数调用的同级调用中的下一条调用所在入记录的位置序号;
如果当前入记录对应的出记录的下一条记录为出记录,则确定当前入记录中函数调用的同级调用中没有下一条调用。
在一种可能的实现方式中,根据所述索引文件,确定当前记录中的函数调用的父调用或同级调用或直接子调用所在记录的位置,还包括:
如果当前记录为入记录,且当前入记录的下一条记录为入记录,则确定该当前入记录的下一条记录的位置序号,为与当前入记录对应的函数调用的第一条直接子调用所对应入记录的位置;
将该当前入记录的下一条记录的索引号,确定为该当前入记录的下一条记录所对应出记录的位置序号;
如果该当前入记录的下一条记录所对应出记录的下一条记录为入记录,则将该当前入记录的下一条记录所对应出记录的下一条记录的位置序号,确定为当前入记录对应的函数调用的直接子调用中的下一条直接子调用所对应入记录的位置序号;
如果该当前入记录的下一条记录所对应出记录的下一条记录为出记录,则确定当前入记录对应的函数调用的直接子调用中没有下一条直接子调用。
在一种可能的实现方式中,根据所述日志文件生成索引文件,包括:
创建栈,并在遍历所述日志文件的过程中,进行以下操作,直至对所述日志文件的遍历结束;
若遍历到入记录,则将该入记录对应的位置序号压入栈中;
若遍历到出记录,则将该出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号。
根据本公开的一方面,提供了一种数据处理装置,包括:
获取模块,用于获取程序的日志文件,所述日志文件包括多条记录,各记录用于记载所述程序运行中执行函数调用的信息;
生成模块,用于根据所述日志文件生成索引文件,所述索引文件表示所述日志文件中的记录的位置和记录中记载的函数调用之间的调用关系;
确定模块,用于根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
在一种可能的实现方式中,所述索引文件包括记录的位置序号和与位置序号对应的索引号,所述位置序号表示记录在日志文件中的位置,所述索引号用于表示记录中记载的函数调用之间的调用关系,
所述确定模块包括:
第一确定子模块,用于根据所述位置序号和所述索引号,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
在一种可能的实现方式中,
所述日志文件的记录包括入记录和出记录,所述入记录用于记载所述程序执行进入函数调用的信息,所述出记录用于记载所述程序执行退出函数调用的信息,各记录在所述日志文件中的位置序号按照各记录生成的先后顺序依次变化;
在所述索引文件中,每个记录的位置序号对应一个索引号,入记录的位置序号对应的索引号与该入记录所对应的出记录的位置序号相同,出记录的位置序号对应的索引号与该出记录中函数调用的父调用所在入记录的位置序号相同。
在一种可能的实现方式中,所述确定模块包括:
第二确定子模块,用于如果当前记录为入记录,则将当前入记录的索引号,确定为与当前入记录对应的出记录的位置序号;
第三确定子模块,用于将当前入记录对应的出记录的索引号,作为当前入记录的函数调用的父调用所在入记录的位置序号,每个入记录的函数调用和该入记录对应的出记录的函数调用相同;
第四确定子模块,用于如果当前入记录对应的出记录的下一条记录为入记录,则将该当前入记录对应的出记录的下一条记录的位置序号,作为当前入记录的函数调用的同级调用中的下一条调用所在入记录的位置序号;
第五确定子模块,用于如果当前入记录对应的出记录的下一条记录为出记录,则确定当前入记录中函数调用的同级调用中没有下一条调用。
在一种可能的实现方式中,所述确定模块还包括:
第六确定子模块,用于如果当前记录为入记录,且当前入记录的下一条记录为入记录,则确定该当前入记录的下一条记录的位置序号,为与当前入记录对应的函数调用的第一条直接子调用所对应入记录的位置;
第七确定子模块,用于将该当前入记录的下一条记录的索引号,确定为该当前入记录的下一条记录所对应出记录的位置序号;
第八确定子模块,用于如果该当前入记录的下一条记录所对应出记录的下一条记录为入记录,则将该当前入记录的下一条记录所对应出记录的下一条记录的位置序号,确定为当前入记录对应的函数调用的直接子调用中的下一条直接子调用所对应入记录的位置序号;
第九确定子模块,用于如果该当前入记录的下一条记录所对应出记录的下一条记录为出记录,则确定当前入记录对应的函数调用的直接子调用中没有下一条直接子调用。
在一种可能的实现方式中,所述生成模块包括:
生成子模块,用于创建栈,并在遍历所述日志文件的过程中,进行以下操作,直至对所述日志文件的遍历结束;
若遍历到入记录,则将该入记录对应的位置序号压入栈中;
若遍历到出记录,则将该出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号。
根据本公开的另一方面,提供了一种数据处理装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
本公开实施例通过生成日志文件的索引文件,索引文件表示所述日志文件中的记录的位置和记录中记载的函数调用之间的调用关系,根据索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置,由此无需遍历日志中的每条记录,有效提升访问日志文件的效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1是根据一示例性实施例示出的一种数据处理方法的流程图。
图2是根据一示例性实施例示出的一种数据处理方法中步骤101的流程图。
图3是根据一示例性实施例示出的一种数据处理方法的流程图。
图4是根据一示例性实施例示出的一种数据处理方法的流程图。
图5是根据一示例性实施例示出的一种数据处理装置的框图。
图6是根据一示例性实施例示出的一种数据处理装置的框图。
图7是根据一示例性实施例示出的一种数据处理装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1是根据一示例性实施例示出的一种数据处理方法的流程图。如图1所示,该方法可以包括:
步骤100,获取程序的日志文件,所述日志文件包括多条记录,各记录用于记载所述程序运行中执行函数调用的信息。
步骤101,根据所述日志文件生成索引文件,所述索引文件表示所述日志文件中的记录的位置和记录中记载的函数调用之间的调用关系。
步骤102,根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
本公开实施例的方法可以应用于处理器,该处理器可以用于执行运算。该处理器可以例如包括NPU(Neural-Network Processing Unit,神经网络处理单元)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)、DSP(Digital SignalProcess,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片、控制器、微控制器、微处理器中的一种或多种。该处理器可以包括一个或多个运算单元,多个运算单元可以并行执行运算。需要说明的是,可以根据需要选择适用的处理器,本公开实施例对处理器的类型不做限定。
在本公开实施例中,函数调用的父调用可以表示调用该函数的函数调用,函数调用的同级调用可以表示和该函数调用被相同父调用所调用的函数调用,函数调用的直接子调用可以表示被该函数直接调用的函数调用。例如,若第一函数分别调用了第二函数和第三函数,则第一函数可以为第二函数和第三函数的父调用,第二函数和第三函数可以为第一函数的直接子调用,第二函数和第三函数可以互为同级调用。
作为本实施例的一个示例,处理器可以获取程序的日志文件。日志文件可以包括多条记录,各记录可以用于记载程序运行中执行函数调用的信息。该信息可以包括执行的类别(例如进入调用或退出调用),被调用函数的函数名等。处理器可以根据日志文件生成索引文件,索引文件可以表示日志文件中的记录的位置和记录中记载的函数调用之间的调用关系。
索引文件可以包括日志文件中的记录的位置序号,位置序号可以表示记录在日志文件中的位置,例如,可以根据各记录的位置序号形成树形索引(索引文件的示例),该树形索引可以包括各记录的位置序号的对应关系,可以通过各记录的位置序号的对应关系,体现各记录中函数调用之间的调用关系。在查找日志文件的过程中,可以根据当前记录的位置序号和索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置序号。
本公开实施例通过生成日志文件的索引文件,索引文件表示所述日志文件中的记录的位置和记录中记载的函数调用之间的调用关系,根据索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置,由此无需遍历日志中的每条记录,有效提升访问日志文件的效率。
在一种可能的实现方式中,所述索引文件包括记录的位置序号和与位置序号对应的索引号,所述位置序号表示记录在日志文件中的位置,所述索引号用于表示记录中记载的函数调用之间的调用关系,根据所述索引文件,确定当前记录中的函数调用的父调用或同级调用所在记录的位置可以包括:根据所述位置序号和所述索引号,确定当前记录中的函数调用的父调用或同级调用所在记录的位置。
作为本实施例的一个示例,日志文件中的记录类别可以包括入记录和出记录,入记录可以用于记载程序执行进入函数调用的信息,出记录可以用于记载程序执行退出函数调用的信息,各记录在日志文件中的位置序号可以按照各记录生成的先后顺序依次变化(例如,各记录在日志文件中的位置序号按照各记录生成的先后顺序依次递增或递减)。
可以根据日志文件生成索引文件,在索引文件中,每个记录的位置序号可以对应一个索引号,可以使每条入记录的位置序号对应的索引号与该入记录所对应的出记录的位置序号相同,可以使每条出记录的位置序号对应的索引号与该出记录中函数调用的父调用所在入记录的位置序号相同。例如,程序包括函数a、函数b和函数c,且函数a分别调用函数b和函数c,则该程序的日志文件可以例如表1所示:
表1
位置序号 记录类别 记录的内容
0 入记录 程序执行进入函数a调用
1 入记录 程序执行进入函数b调用
2 出记录 程序执行退出函数b调用
3 入记录 程序执行进入函数c调用
4 出记录 程序执行退出函数c调用
5 出记录 程序执行退出函数a调用
该程序的日志文件的索引文件可以例如表2所示:
表2
位置序号 索引号
0 5
1 2
2 0
3 4
4 0
5 -1
没有父调用的函数调用,其索引号可设置为特殊字符,例如在表2中,由于函数a没有父调用,则可以将函数a所在记录的位置序号对应的索引号设置为“-1”,用以指示函数a没有父调用。
图2是根据一示例性实施例示出的一种数据处理方法中步骤101的流程图。如图2所示,步骤101可以包括:
步骤200,创建栈,并在遍历所述日志文件的过程中,进行如步骤201和步骤202的操作,直至对所述日志文件的遍历结束。
步骤201,若遍历到入记录,则将该入记录对应的位置序号压入栈中。
步骤202,若遍历到出记录,则将该出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号。
接上例,步骤201和步骤202的操作可以例如表3所示,处理器在获取日志文件后,可以创建栈,并可以在创建的栈中压入一个特殊字符(例如-1,需要说明的是,该特殊字符可以为任意字符,只要能将该特殊字符与日志中记录的位置序号相区别即可)。接着,处理器可以遍历日志文件,并可以在遍历日志文件的过程中,判断遍历到的日志文件是否为出记录或入记录。
处理器在判断遍历到入记录时,可以将该入记录对应的位置序号压入栈中,例如,如表3所示,在遍历到位置序号为1的入记录时,可以将“1”压入栈中,此时栈中的元素为-1、0、1。
处理器在判断遍历到出记录时,可以将该出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号。例如,如表2和表3所示,若遍历到位置序号为2的出记录,此时栈顶数值为1,则可以将位置序号1对应的索引号写成2,接着,可以弹出栈顶数值1,并将新的栈顶数值0作为位置序号2对应的索引号。处理器可以重复上述操作,直至对日志文件的遍历结束,形成如表2所示的索引文件。
这样,本公开实施例巧妙的利用栈仅在栈顶进行插入和删除操作的线性特征,和日志文件中各记录按照时间顺序排列的特点,通过在遍历日志文件的过程中,将入记录对应的位置序号压入栈中,并将出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号,由实现将此索引文件中各记录的位置序号按照各函数的调用关系相对应,无需复杂的运算处理,有效提升了建立索引文件的效率。
表3
Figure BDA0002006929220000111
图3是根据一示例性实施例示出的一种数据处理方法的流程图。如图3所示,图3与图1之间的区别在于,步骤102可以包括:
步骤300,如果当前记录为入记录,则将当前入记录的索引号,确定为与当前入记录对应的出记录的位置序号。
步骤301,将当前入记录对应的出记录的索引号,作为当前入记录的函数调用的父调用所在入记录的位置序号,每个入记录的函数调用和该入记录对应的出记录的函数调用相同。
步骤302,如果当前入记录对应的出记录的下一条记录为入记录,则将该当前入记录对应的出记录的下一条记录的位置序号,作为当前入记录的函数调用的同级调用中的下一条调用所在入记录的位置序号。
步骤303,如果当前入记录对应的出记录的下一条记录为出记录,则确定当前入记录中函数调用的同级调用中没有下一条调用。
例如,若程序中函数d分别调用函数e和函数f,函数e分别调用函数g和函数h,则该程序的日志文件可以如表4所示,根据该程序的日志文件生成的索引文件可以如表5所示。
处理器可以将当前入记录的索引号,确定为与当前入记录对应的出记录的位置序号,如表3所示,若当前入记录的位置序号为1,则当前入记录的位置序号对应的索引号为6,那么可以确定当前入记录对应的出记录的位置序号为6,由此可以根据索引文件定位当前入记录所对应出记录的位置。
接着,处理器可以将当前入记录所对应出记录的索引号,作为当前入记录中函数调用的父调用所在入记录的位置序号,如表4和表5所示,位置序号为6的出记录的索引号为0,则处理器可以确定位置序号为1的入记录,和位置序号为6的出记录所对应的函数调用的父调用所在入记录的位置序号为0(通常情况下,入记录的函数调用和该入记录所对应的出记录的函数调用相同,例如,位置序号为1的入记录对应的出记录的位置序号为6,位置序号为1的入记录和位置序号为6的出记录的函数调用均为函数e),由此,在需要查找当前入记录中函数调用的父调用所对应的入记录时,可以根据索引文件定位当前入记录中函数调用的父调用所对应的入记录的位置,无需遍历日志文件中的所有节点,有效提升访问日志效率。
进一步的,处理器可以判断当前入记录所对应出记录的下一条记录是否为入记录。如果处理器判断当前入记录所对应出记录的下一条记录为入记录,则可以将该下一条记录的索引号,作为当前入记录中函数调用的同级调用中下一条调用所在入记录的位置序号。如表4和表5所示,位置序号为6的出记录的下一条记录为入记录,且该入记录的位置序号为7,则可以确定当前入记录中函数调用的同级调用中下一条调用所在入记录的位置序号为7。由此,在需要查找当前入记录中函数调用的同级调用中下一条调用所对应的入记录时,可以根据索引文件定位当前入记录中函数调用的同级调用中下一条调用所对应的入记录的位置,无需遍历日志文件中的所有节点,有效提升访问日志效率。
在一种可能的实现方式中,如果处理器判断确定的出记录的下一条记录为出记录,则可以确定当前入记录中函数调用的同级调用中没有下一条调用。
表4
位置序号 记录类别 记录的内容(执行函数调用的信息)
0 入记录 程序执行进入函数d调用
1 入记录 程序执行进入函数e调用
2 入记录 程序执行进入函数g调用
3 出记录 程序执行退出函数g调用
4 入记录 程序执行进入函数h调用
5 出记录 程序执行退出函数h调用
6 出记录 程序执行退出函数e调用
7 入记录 程序执行进入函数f调用
8 出记录 程序执行退出函数f调用
9 出记录 程序执行退出函数d调用
表5
位置序号 索引号
0 9
1 6
2 3
3 1
4 5
5 0
6 0
7 8
8 0
9 -1
图4是根据一示例性实施例示出的一种数据处理方法的流程图。如图4所示,图4与图1之间的区别在于,步骤102还可以包括:
步骤400,如果当前记录为入记录,且当前入记录的下一条记录为入记录,则确定该当前入记录的下一条记录的位置序号,为与当前入记录对应的函数调用的第一条直接子调用所对应入记录的位置。
步骤401,将该当前入记录的下一条记录的索引号,确定为该当前入记录的下一条记录所对应出记录的位置序号。
步骤402,如果该当前入记录的下一条记录所对应出记录的下一条记录为入记录,则将该当前入记录的下一条记录所对应出记录的下一条记录的位置序号,确定为当前入记录对应的函数调用的直接子调用中的下一条直接子调用所对应入记录的位置序号。
步骤403,如果该当前入记录的下一条记录所对应出记录的下一条记录为出记录,则确定当前入记录对应的函数调用的直接子调用中没有下一条直接子调用。
接上例,如果当前入记录位置序号为1,当前入记录的下一条记录为入记录(位置序号为2的入记录),则可以确定当前入记录对应的函数调用的第一条直接子调用所在入记录的位置序号为2。
接着,当前入记录的下一条记录是位置序号为2的入记录,该记录的索引号为3,则位置序号为2的入记录所对应的出记录的位置序号为3。
可以确定位置序号为3的记录的下一条记录是位置序号为4的入记录,则可以确定当前入记录对应的函数调用的直接子调用中下一条直接子调用所对应入记录的位置序号为4。
可以确定位置序号为4的记录的下一条记录是位置序号为5的出记录,则可以确定当前入记录对应的函数调用的直接子调用中没有下一条直接子调用。最后,可以确定位置序号为1的当前入记录对应的函数调用的直接子调用所在入记录的位置序号分别为2和4。由此可以根据索引文件定位当前入记录中函数调用的直接子调用所对应的入记录的位置,无需遍历日志文件中的所有节点,有效提升访问日志效率。
应用示例
处理器可以针对运行的程序生成日志文件,在日志文件中,各记录的位置序号按照各记录生成的时间先后顺序依次递增。可以根据该日志文件生成一个索引文件,并创建栈,在栈顶压入数值-1,遍历日志文件,若遍历到入记录,则将该记录位置序号压入栈中。若遍历到出记录,则将该出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号。直至对所述日志文件的遍历结束,生成索引文件。
该索引文件可以包括日志文件中各记录的位置序号与索引号的对应关系,索引号可以例如为有符号32位整型数,索引文件中,入记录的位置序号对应的索引号与该入记录对应的出记录的位置序号相同,出记录的位置序号对应的索引号与该出记录中函数调用的父调用所在的入记录的位置序号相同。
在需要访问当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置时,可以将索引文件读取为一个有符号32位整型数数组,递归遍历日志文件,
如果当前记录为入记录,则将当前入记录的索引号,确定为与当前入记录对应的出记录的位置序号。将当前入记录对应的出记录的索引号,作为当前入记录的函数调用的父调用所在入记录的位置序号,这样可以确定当前入记录的函数调用的父调用所在入记录的位置。
如果当前入记录对应的出记录的下一条记录为入记录,则可以将该当前入记录对应的出记录的下一条记录的位置序号,作为当前入记录的函数调用的同级调用中的下一条调用所在入记录的位置序号。如果当前入记录对应的出记录的下一条记录为出记录,则确定当前入记录中函数调用的同级调用中没有下一条调用,这样,可以确定当前入记录对应的函数调用的同级调用所在入记录的位置。
如果当前记录为入记录,且当前入记录的下一条记录为入记录,则可以确定该当前入记录的下一条记录的位置序号,为与当前入记录对应的函数调用的第一条直接子调用所对应入记录的位置。可以将该当前入记录的下一条记录的索引号,确定为该当前入记录的下一条记录所对应出记录的位置序号。如果该当前入记录的下一条记录所对应出记录的下一条记录为入记录,则将该当前入记录的下一条记录所对应出记录的下一条记录的位置序号,确定为当前入记录对应的函数调用的直接子调用中的下一条直接子调用所对应入记录的位置序号。如果该当前入记录的下一条记录所对应出记录的下一条记录为出记录,则确定当前入记录对应的函数调用的直接子调用中没有下一条直接子调用,这样,可以确定当前入记录对应的函数调用的直接子调用所在入记录的位置。
图5是根据一示例性实施例示出的一种数据处理装置的框图。如图5所示,该装置可以包括:
获取模块51,用于获取程序的日志文件,所述日志文件包括多条记录,各记录用于记载所述程序运行中执行函数调用的信息。
生成模块52,用于根据所述日志文件生成索引文件,所述索引文件表示所述日志文件中的记录的位置和记录中记载的函数调用之间的调用关系。
确定模块53,用于根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
图6是根据一示例性实施例示出的一种数据处理装置的框图。为了便于说明,在图6中仅展示出了与本实施例相关的部分。图6中标号与图5相同的组件具有相同的功能,为了简明起见,省略对这些组件的详细说明。如图6所示,
在一种可能的实现方式中,所述索引文件包括记录的位置序号和与位置序号对应的索引号,所述位置序号表示记录在日志文件中的位置,所述索引号用于表示记录中记载的函数调用之间的调用关系,
所述确定模块包括:
第一确定子模块531,用于根据所述位置序号和所述索引号,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
在一种可能的实现方式中,所述日志文件的记录包括入记录和出记录,所述入记录用于记载所述程序执行进入函数调用的信息,所述出记录用于记载所述程序执行退出函数调用的信息,各记录在所述日志文件中的位置序号按照各记录生成的先后顺序依次变化。
在所述索引文件中,每个记录的位置序号对应一个索引号,入记录的位置序号对应的索引号与该入记录所对应的出记录的位置序号相同,出记录的位置序号对应的索引号与该出记录中函数调用的父调用所在入记录的位置序号相同。
在一种可能的实现方式中,所述确定模块53包括:
第二确定子模块532,用于如果当前记录为入记录,则将当前入记录的索引号,确定为与当前入记录对应的出记录的位置序号。
第三确定子模块533,用于将当前入记录对应的出记录的索引号,作为当前入记录的函数调用的父调用所在入记录的位置序号,每个入记录的函数调用和该入记录对应的出记录的函数调用相同。
第四确定子模块534,用于如果当前入记录对应的出记录的下一条记录为入记录,则将该当前入记录对应的出记录的下一条记录的位置序号,作为当前入记录的函数调用的同级调用中的下一条调用所在入记录的位置序号。
第五确定子模块535,用于如果当前入记录对应的出记录的下一条记录为出记录,则确定当前入记录中函数调用的同级调用中没有下一条调用。
在一种可能的实现方式中,所述确定模块53还包括:
第六确定子模块536,用于如果当前记录为入记录,且当前入记录的下一条记录为入记录,则确定该当前入记录的下一条记录的位置序号,为与当前入记录对应的函数调用的第一条直接子调用所对应入记录的位置;
第七确定子模块537,用于将该当前入记录的下一条记录的索引号,确定为该当前入记录的下一条记录所对应出记录的位置序号;
第八确定子模块538,用于如果该当前入记录的下一条记录所对应出记录的下一条记录为入记录,则将该当前入记录的下一条记录所对应出记录的下一条记录的位置序号,确定为当前入记录对应的函数调用的直接子调用中的下一条直接子调用所对应入记录的位置序号;
第九确定子模块539,用于如果该当前入记录的下一条记录所对应出记录的下一条记录为出记录,则确定当前入记录对应的函数调用的直接子调用中没有下一条直接子调用。
在一种可能的实现方式中,所述生成模块52包括:
生成子模块521,用于创建栈,并在遍历所述日志文件的过程中,进行以下操作,直至对所述日志文件的遍历结束。
若遍历到入记录,则将该入记录对应的位置序号压入栈中。
若遍历到出记录,则将该出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号。
图7是根据一示例性实施例示出的一种数据处理装置的框图。例如,装置1900可以被提供为一服务器。参照图7,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(I/O)接口1958。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (14)

1.一种数据处理方法,其特征在于,包括:
获取程序的日志文件,所述日志文件包括多条记录,各记录用于记载所述程序运行中执行函数调用的信息;
根据所述日志文件生成索引文件,所述索引文件表示所述日志文件中的记录的位置和记录中记载的函数调用之间的调用关系;
根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
2.根据权利要求1所述的方法,其特征在于,所述索引文件包括记录的位置序号和与位置序号对应的索引号,所述位置序号表示记录在日志文件中的位置,所述索引号用于表示记录中记载的函数调用之间的调用关系,
根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置,包括:
根据所述位置序号和所述索引号,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
3.根据权利要求2所述的方法,其特征在于,
所述日志文件的记录包括入记录和出记录,所述入记录用于记载所述程序执行进入函数调用的信息,所述出记录用于记载所述程序执行退出函数调用的信息,各记录在所述日志文件中的位置序号按照各记录生成的先后顺序依次变化;
在所述索引文件中,每个记录的位置序号对应一个索引号,入记录的位置序号对应的索引号与该入记录所对应的出记录的位置序号相同,出记录的位置序号对应的索引号与该出记录中函数调用的父调用所在入记录的位置序号相同。
4.根据权利要求3所述的方法,其特征在于,根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置,包括:
如果当前记录为入记录,则将当前入记录的索引号,确定为与当前入记录对应的出记录的位置序号;
将当前入记录对应的出记录的索引号,作为当前入记录的函数调用的父调用所在入记录的位置序号,每个入记录的函数调用和该入记录对应的出记录的函数调用相同;
如果当前入记录对应的出记录的下一条记录为入记录,则将该当前入记录对应的出记录的下一条记录的位置序号,作为当前入记录的函数调用的同级调用中的下一条调用所在入记录的位置序号;
如果当前入记录对应的出记录的下一条记录为出记录,则确定当前入记录中函数调用的同级调用中没有下一条调用。
5.根据权利要求3所述的方法,其特征在于,根据所述索引文件,确定当前记录中的函数调用的父调用或同级调用或直接子调用所在记录的位置,还包括:
如果当前记录为入记录,且当前入记录的下一条记录为入记录,则确定该当前入记录的下一条记录的位置序号,为与当前入记录对应的函数调用的第一条直接子调用所对应入记录的位置;
将该当前入记录的下一条记录的索引号,确定为该当前入记录的下一条记录所对应出记录的位置序号;
如果该当前入记录的下一条记录所对应出记录的下一条记录为入记录,则将该当前入记录的下一条记录所对应出记录的下一条记录的位置序号,确定为当前入记录对应的函数调用的直接子调用中的下一条直接子调用所对应入记录的位置序号;
如果该当前入记录的下一条记录所对应出记录的下一条记录为出记录,则确定当前入记录对应的函数调用的直接子调用中没有下一条直接子调用。
6.根据权利要求3所述的方法,其特征在于,根据所述日志文件生成索引文件,包括:
创建栈,并在遍历所述日志文件的过程中,进行以下操作,直至对所述日志文件的遍历结束;
若遍历到入记录,则将该入记录对应的位置序号压入栈中;
若遍历到出记录,则将该出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号。
7.一种数据处理装置,其特征在于,包括:
获取模块,用于获取程序的日志文件,所述日志文件包括多条记录,各记录用于记载所述程序运行中执行函数调用的信息;
生成模块,用于根据所述日志文件生成索引文件,所述索引文件表示所述日志文件中的记录的位置和记录中记载的函数调用之间的调用关系;
确定模块,用于根据所述索引文件,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
8.根据权利要求7所述的装置,其特征在于,所述索引文件包括记录的位置序号和与位置序号对应的索引号,所述位置序号表示记录在日志文件中的位置,所述索引号用于表示记录中记载的函数调用之间的调用关系,
所述确定模块包括:
第一确定子模块,用于根据所述位置序号和所述索引号,确定当前记录中的函数调用的父调用、同级调用或直接子调用所在记录的位置。
9.根据权利要求8所述的装置,其特征在于,
所述日志文件的记录包括入记录和出记录,所述入记录用于记载所述程序执行进入函数调用的信息,所述出记录用于记载所述程序执行退出函数调用的信息,各记录在所述日志文件中的位置序号按照各记录生成的先后顺序依次变化;
在所述索引文件中,每个记录的位置序号对应一个索引号,入记录的位置序号对应的索引号与该入记录所对应的出记录的位置序号相同,出记录的位置序号对应的索引号与该出记录中函数调用的父调用所在入记录的位置序号相同。
10.根据权利要求9所述的装置,其特征在于,所述确定模块包括:
第二确定子模块,用于如果当前记录为入记录,则将当前入记录的索引号,确定为与当前入记录对应的出记录的位置序号;
第三确定子模块,用于将当前入记录对应的出记录的索引号,作为当前入记录的函数调用的父调用所在入记录的位置序号,每个入记录的函数调用和该入记录对应的出记录的函数调用相同;
第四确定子模块,用于如果当前入记录对应的出记录的下一条记录为入记录,则将该当前入记录对应的出记录的下一条记录的位置序号,作为当前入记录的函数调用的同级调用中的下一条调用所在入记录的位置序号;
第五确定子模块,用于如果当前入记录对应的出记录的下一条记录为出记录,则确定当前入记录中函数调用的同级调用中没有下一条调用。
11.根据权利要求9所述的装置,其特征在于,所述确定模块还包括:
第六确定子模块,用于如果当前记录为入记录,且当前入记录的下一条记录为入记录,则确定该当前入记录的下一条记录的位置序号,为与当前入记录对应的函数调用的第一条直接子调用所对应入记录的位置;
第七确定子模块,用于将该当前入记录的下一条记录的索引号,确定为该当前入记录的下一条记录所对应出记录的位置序号;
第八确定子模块,用于如果该当前入记录的下一条记录所对应出记录的下一条记录为入记录,则将该当前入记录的下一条记录所对应出记录的下一条记录的位置序号,确定为当前入记录对应的函数调用的直接子调用中的下一条直接子调用所对应入记录的位置序号;
第九确定子模块,用于如果该当前入记录的下一条记录所对应出记录的下一条记录为出记录,则确定当前入记录对应的函数调用的直接子调用中没有下一条直接子调用。
12.根据权利要求7所述的装置,其特征在于,所述生成模块包括:
生成子模块,用于创建栈,并在遍历所述日志文件的过程中,进行以下操作,直至对所述日志文件的遍历结束;
若遍历到入记录,则将该入记录对应的位置序号压入栈中;
若遍历到出记录,则将该出记录的位置序号,作为位置序号与当前栈顶数值相同的记录的位置序号对应的索引号,弹出当前栈顶,并将新的栈顶数值,作为该出记录的位置序号对应的索引号。
13.一种数据处理装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为实现权利要求1至6中任意一项所述的方法。
14.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至6中任意一项所述的方法。
CN201910231743.2A 2019-03-26 2019-03-26 数据处理方法及装置 Active CN111752912B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910231743.2A CN111752912B (zh) 2019-03-26 2019-03-26 数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910231743.2A CN111752912B (zh) 2019-03-26 2019-03-26 数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN111752912A true CN111752912A (zh) 2020-10-09
CN111752912B CN111752912B (zh) 2022-11-01

Family

ID=72671105

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910231743.2A Active CN111752912B (zh) 2019-03-26 2019-03-26 数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN111752912B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463746A (zh) * 2020-12-11 2021-03-09 杭州海康汽车软件有限公司 一种文件存储、生成方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327324B1 (en) * 2008-09-29 2012-12-04 Emc Corporation Message logging system
CN103443768A (zh) * 2008-07-16 2013-12-11 苹果公司 用于调用转换和追踪的规范文件
CN104679807A (zh) * 2008-06-30 2015-06-03 起元技术有限责任公司 基于图的计算中的数据日志记录
CN109032929A (zh) * 2018-06-29 2018-12-18 北京金山安全软件有限公司 一种程序日志记录获取方法、装置及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679807A (zh) * 2008-06-30 2015-06-03 起元技术有限责任公司 基于图的计算中的数据日志记录
CN103443768A (zh) * 2008-07-16 2013-12-11 苹果公司 用于调用转换和追踪的规范文件
US8327324B1 (en) * 2008-09-29 2012-12-04 Emc Corporation Message logging system
CN109032929A (zh) * 2018-06-29 2018-12-18 北京金山安全软件有限公司 一种程序日志记录获取方法、装置及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
徐震等: "核心化多级安全数据库系统未决提交事务日志写出依赖研究", 《计算机学报》 *
郑邦峰: "分布式系统服务链追踪与监控", 《工业技术创新》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463746A (zh) * 2020-12-11 2021-03-09 杭州海康汽车软件有限公司 一种文件存储、生成方法、装置及电子设备
CN112463746B (zh) * 2020-12-11 2023-11-03 杭州海康汽车软件有限公司 一种文件存储、生成方法、装置及电子设备

Also Published As

Publication number Publication date
CN111752912B (zh) 2022-11-01

Similar Documents

Publication Publication Date Title
US11151151B2 (en) Integration template generation
US9934270B2 (en) Source code search engine
US9607063B1 (en) NoSQL relational database (RDB) data movement
US10558447B2 (en) Application push method, and a service device
US11748305B2 (en) Suggesting a destination folder for a file to be saved
US10031936B2 (en) Database table data fabrication
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
CN107729001B (zh) 一种表达式处理方法和装置
CN111694992B (zh) 一种数据处理方法和装置
CN113568605B (zh) 约定式路由配置方法、装置、和系统
CN111124541A (zh) 一种配置文件的生成方法、装置、设备及介质
CN111752912B (zh) 数据处理方法及装置
US9250890B2 (en) Optimizing performance of a computer system in response to a software change
US20170370989A1 (en) Using direct sums and invariance groups to test partially symmetric quantum-logic circuits
CN112016321B (zh) 用于邮件处理的方法、电子设备和存储介质
US11151309B1 (en) Screenshot-based memos
CN110502589B (zh) 一种节点血缘关系确定方法、装置以及电子设备
CN111949655A (zh) 表单显示方法、装置、电子设备和介质
CN113742332A (zh) 数据存储方法、装置、设备及存储介质
CN114449063B (zh) 一种报文处理方法、装置及设备
CN113724115A (zh) 基于在线教育的数据处理方法及服务器
CN111460273B (zh) 信息推送方法和装置
CN116136757A (zh) 日志输出方法、装置及电子设备
CN110018844B (zh) 决策触发方案的管理方法、装置和电子设备
CN110597517A (zh) 动态解析mat文件的方法及装置

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
GR01 Patent grant