一种协程调用追踪方法、系统、设备及可读存储介质与流程
未命名
10-19
阅读:153
评论:0

1.本技术涉及计算机应用性能监控的技术领域,尤其是涉及一种协程调用追踪方法、系统、设备及可读存储介质。
背景技术:
2.目前,在计算机应用性能监控(application performance monitoring,apm)领域,分布式链路追踪方法通常是需要对原有的框架代码进行修改,使得一个协程在接受到一个远程过程调用(remote procedure call,rpc)请求后通过提取上下文信息、并将其继续注入同一个分布式事务的后续rpc请求中,使得在分布式系统中一个事务的所有rpc能共享同一个上下文信息,从而实现分布式事务的追踪。
3.通过修改代码的方式来完成追踪需要将修改后的代码进行重新编译才能实现。同时,对于协程来说,每个协程有对应的协程号,多个协程之间并不能根据协程号来判断协程之间的调用或创建关系,为协程的调用追踪增加了难度。由于协程的性质,协程之间的调用关系也需要通过修改代码来实现对于调用关系的存储。修改代码会对应用代码造成侵扰,降低代码的安全性。
4.上述中的现有技术方案存在以下缺陷:目前的追踪方法对代码的侵扰性强。
技术实现要素:
5.为了改善协程调用追踪方法对代码的侵扰性强的问题,本技术提供了一种协程调用追踪方法、系统、设备及可读存储介质。
6.在本技术的第一方面,提供了一协程调用追踪方法。该方法包括:获取调用请求;根据所述调用请求,创建初始协程,所述初始协程包括初始协程号和初始操作;根据所述初始协程,创建子协程,所述子协程包括协程号和协程操作;当所述调用请求触发预设的ebpf应用程序时,根据协程关系建立规则、所述初始协程号和协程号,建立协程关系树;基于所述协程关系树,对所述子协程进行调用追踪。
7.由以上技术方案可知,当获取到调用请求后,会根据调用请求创建初始协程,初始协程会进一步创建子协程,进而完成对调用请求的处理;在获取到调用请求的同时,调用请求会触发预设在操作系统中的ebpf应用程序,根据ebpf应用程序获取到的内容和协程关系建立规则,建立协程关系树,进而根据协程关系树完成对子协程的调用追踪,在不对原始代码进行侵扰的情况下,实现对协程的调用追踪,具有降低追踪方法对代码的侵扰性的效果。
8.在一种可能的实现方式中,所述子协程为一个或多个;当多个子协程中任意两个子协程存在上下级对应关系时,上级子协程为下级子协程的父协程。
9.在一种可能的实现方式中,当所述调用请求触发预设的ebpf应用程序时,所述根据协程关系建立规则、所述初始协程号和协程号,建立协程关系树,包括:
根据所述子协程的上下级对应关系和所述协程号,建立子协程关系树;根据所述初始协程和所述子协程的对应关系、所述协程号、所述初始协程号、所述子协程关系树,建立协程关系树;所述协程关系树中的所有子协程均存在对应的父协程。
10.由以上技术方案可知,在已知子协程的上下级对应关系和协程号的情况下,先建立子协程关系树;然后再根据初始协程和子协程的对应关系、和子协程关系树,建立完整的协程关系树;使得协程关系树中的所有子协程均存在对应的父协程,为后续对协程的调用追踪建立关系基础,在一定程度上可以节省调用追踪的耗时。
11.在一种可能的实现方式中,所述ebpf应用程序是预存在操作系统内的,用于获取所述初始协程和所述子协程的对应关系以及所述子协程之间的上下级对应关系。
12.由以上技术方案可知,通过将ebpf应用程序预存在操作系统内,当接收到调用请求时,触发ebpf应用程序,实现对初始协程创建子协程的创建动作进行监控,进而得到初始协程和子协程的对应关系以及子协程之间的上下级对应关系,通过使用ebpf应用程序,实现了在不修改原有代码的基础上完成对协程的调用追踪,降低对代码的侵扰性。
13.在一种可能的实现方式中,所述基于所述协程关系树,对所述子协程进行调用追踪,包括:遍历所述子协程并判断所述子协程的父协程的协程操作中是否包含读操作或者写操作;若是,则将包含有读操作或者写操作的父协程作为待确定祖先协程;若否,则将所述子协程作为待确定祖先协程;记录所述待确定祖先协程对应的调取次数;根据所述调取次数,更新所述待确定祖先协程;根据更新后的所述调取次数和所述待确定祖先协程,确定祖先协程,完成对所述子协程的调用追踪。
14.在一种可能的实现方式中,所述根据所述调取次数,更新所述待确定祖先协程,包括:当所述调取次数小于调取预设值时,判断所述待确定祖先协程的父协程是否包含读操作或者写操作;若是,将所述父协程作为新的待确定祖先协程。
15.在一种可能的实现方式中,所述根根据更新后的所述调取次数和所述待确定祖先协程,确定祖先协程,包括:当所述调取次数小于等于调取预设值且所述待确定祖先协程不存在父协程时,将所述待确定祖先协程作为祖先协程。
16.在一种可能的实现方式中,所述调取预设值通过以下方法获得:获取子协程的历史调取数据,所述历史调取数据包括多个子协程确定祖先协程的调取次数;根据调取次数的不同,计算得到每一种调取次数对应的调取权重和,并对所述调取权重和进行升序排列,得到权重序列;依次获取所述权重序列中的调取权重和;
当所述调取权重和大于等于权重预设值时,所述调取权重和对应的调取次数为调取预设值。
17.由以上技术方案可知,通过对历史调取数据进行分析,实现对调取预设值的确定,提高了调取预设值的合理性。
18.在本技术的第二方面,提供了一种协程调用追踪系统。该系统包括:请求获取模块,用于获取调用请求;第一创建模块,用于根据所述调用请求,创建初始协程,所述初始协程包括初始协程号和初始操作;第二创建模块,用于根据所述初始协程,创建子协程,所述子协程包括协程号和协程操作;关系建立模块,用于当所述调用请求触发预设的ebpf应用程序时,根据协程关系建立规则、所述初始协程号和协程号,建立协程关系树;调用追踪模块,用于基于所述协程关系树,对所述子协程进行调用追踪。
19.在本技术的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
20.综上所述,本技术包括以下至少一种有益技术效果:1.通过调用请求触发预设的ebpf应用程序,可以在不对原始代码进行侵扰的情况下,实现对协程的调用追踪,具有降低追踪方法对代码的侵扰性的效果;2.通过建立协程关系树,使得协程关系树中的所有子协程均存在对应的父协程,为后续对协程的调用追踪建立关系基础,在一定程度上可以节省调用追踪的耗时;3.通过对历史调取数据进行分析,实现对调取预设值的确定,提高了调取预设值的合理性。
附图说明
21.图1是本技术提供的协程调用追踪方法的流程示意图。
22.图2是本技术实施例提供的协程关系树的示意图。
23.图3是本技术提供的协程调用追踪系统的结构示意图。
24.图4是本技术提供的电子设备的结构示意图。
25.图中,200、协程调用追踪系统;201、请求获取模块;202、第一创建模块;203、第二创建模块;204、关系建立模块;205、调用追踪模块;301、cpu;302、rom;303、ram;304、i/o接口;305、输入部分;306、输出部分;307、存储部分;308、通信部分;309、驱动器;310、可拆卸介质。
具体实施方式
26.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在
三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
28.对于不使用协程模型的语言来说,例如,c语言、c++、java18及java18之前的历史版本,跟踪从收到一个网络请求到发出该网络请求对应的响应之间的所有网络请求,这个跟踪过程在一个线程内就可以完成。但是对于使用协程模型的go语言来说,由于其本身的协程调度使用的是协同式调度,无法使用线程对上述过程进行跟踪。所以,如何在go语言中实现对“从收到一个网络请求到发出该网络请求对应的响应之间的所有网络请求”的跟踪,是本技术需要解决的问题。
29.下面结合说明书附图对本技术实施例作进一步详细描述。
30.本技术实施例提供一种协程调用追踪方法,所述方法的主要流程描述如下。
31.如图1所示:步骤s101:获取调用请求。
32.具体的,上述调用请求可以为get请求,也可以为post请求,上述调用请求也可以为其他任何请求方式的网络请求,在此不做限定。
33.步骤s102:根据调用请求,创建初始协程。
34.具体的,上述初始协程包括初始协程号和初始操作。上述初始协程号为初始协程的唯一标识码,上述初始操作为初始协程需要完成的操作,上述初始操作包括读操作和写操作,上述初始协程可能会进行多次不同或相同的读操作和写操作,但初始操作包括的内容仅表示初始协程是否进行过读操作或写操作,只要进行过,则初始操作中就包含读操作和写操作,并不包含进行读操作或写操作的次数。
35.可以理解的是,设备中的代码可以监听网络端口,当监听到网络端口有新的网络请求到达时,根据网络请求创建初始协程处理网络请求。上述对网络端口的监听方法和创建协程的方法都是本领域技术人员公知的技术,在此不做赘述。
36.步骤s103:根据初始协程,创建子协程。
37.具体的,子协程包括协程号和协程操作;上述子协程为一个或多个;当多个子协程中任意两个子协程存在上下级对应关系时,上级子协程为下级子协程的父协程,上述协程操作和初始操作的含义相同,不同的是,初始操作对应的是初始协程的操作,协程操作对应的是每个子协程的操作。
38.可以理解的是,初始协程为主协程,为了处理调用请求,主协程可以创建子协程,子协程也可以继续创建子协程的子协程来完成对调用请求的处理。所以,子协程为一个时,表示初始协程只创建了一个子协程,当子协程为多个时,可能为初始协程创建了多个子协程,也有可能是在初始协程创建子协程的基础上,子协程继续创建子协程。
39.步骤s104:当调用请求触发预设的ebpf应用程序时,根据协程关系建立规则、初始协程号和协程号,建立协程关系树。
40.ebpf(extended berkeley packet filter)是一种可以在linux内核中运行用户编写的程序,而不需要修改内核代码或加载内核模块的技术。
41.首先,使用c语言编写ebpf程序,并通过clang编译成目标文件即ebpf字节码文件。上述clang是一个编译器,可以实现对于ebpf程序的编译。然后,需要有一个应用程序通过调用linux内核的系统调用,将编译好的ebpf字节码加载到内核中。在加载的过程中,内核
会对ebpf程序进行验证,保证ebpf程序是安全的;然后将ebpf字节码编译成机器码。之后,内核会按照绑定好的hook point调用相应的函数。上述“按照绑定好的hook point调用相应的函数”即调用请求触发预设的ebpf应用程序。
42.具体的,上述ebpf应用程序是预存在操作系统内核中的,当ebpf应用程序被触发后,可以获取上述初始协程和上述子协程的对应关系以及上述子协程之间的上下级对应关系。ebpf应用程序是通过监控到初始协程创建子协程的创建动作,以及监控到子协程创建对应子协程的创建动作,获取到初始协程和子协程的对应关系以及子协程和子协程之间的上下级对应关系。
43.根据上述子协程的上下级对应关系和上述协程号,建立子协程关系树;根据上述初始协程和上述子协程的对应关系、上述协程号、上述初始协程号、上述子协程关系树,建立协程关系树;上述协程关系树中的所有子协程均存在对应的父协程。例如,初始协程号为a,协程号有b1、b2、c1、c2、d1。可以知道的是,a和b1存在对应关系、a和b2存在对应关系、b1和c1存在上下级对应关系即b1创建c1,b1和c2存在上下级对应关系即b1创建c2,c1和d1存在上下级对应关系即c1创建d1,根据上下级对应关系和协程号可以得知,b1创建了c1和c2,c1创建了d1,b2和其他子协程不存在创建关系,根据上述创建关系即可得到子协程关系树,子协程关系树中,包括b2,且b1创建c1和c2,c1创建了d1。根据初始协程和子协程的对应关系(即a和b1存在对应关系、a和b2存在对应关系),将初始协程号加入到子协程关系树中,得到协程关系树,即将a作为b1和b2的父协程。参照图2,图2为协程关系树的示意图。
44.可以理解的是,在已知上述初始协程和上述子协程的对应关系以及上述子协程之间的上下级对应关系的情况下,可以不进行子协程关系树的建立,直接建立协程关系树。即a创建了b1和b2,b1创建了c1和c2,c1创建了d1,根据创建关系就可以得到如图2所示的协程关系树。
45.步骤s105:基于协程关系树,对子协程进行调用追踪。
46.具体的,遍历上述子协程并判断该子协程的父协程的协程操作中是否包含读操作或者写操作;若是,表示父协程的协程操作中至少包含读操作或者写操作中的任意一个,则将该父协程作为待确定祖先协程;若否,表示父协程的协程操作中既不包含读操作也不包含写操作,则将上述子协程作为待确定祖先协程;记录上述待确定祖先协程对应的调取次数。上述调取次数是指以该子协程为起始点,记录追踪过程中,调取父协程的次数。例如,以d1作为起始点即上述子协程为d1,当d1调取c1时,调取次数为1次,当c1调取b1时,调取次数为2次,当b1调取a时,调取次数为3次。如果以c1作为起始点即遍历到c1作为子协程,当c1调取b1时,调取次数为1次,当b1调取a时,调取次数为2次。
47.根据上述调取次数,更新待确定祖先协程:当上述调取次数小于调取预设值时,判断待确定祖先协程的父协程是否包含读操作或者写操作;若是,将上述父协程作为新的待确定祖先协程;若否,则保留原来的待确定祖先协程,并继续向上判断,新的父协程(即父协程的父协程)的协程操作是否包含读操作或者写操作,则继续进行上述更新祖先协程的判断,直到不存在新的父协程或者调取次数等于调取预设值,结束待确定祖先协程的更新。
48.根据更新后的上述调取次数和上述待确定祖先协程,确定祖先协程,完成对上述子协程的调用追踪。当上述调取次数小于等于调取预设值且上述待确定祖先协程不存在父
协程时,将上述待确定祖先协程作为祖先协程。即当待确定祖先协程的更新结束时,表示不会出现新的待确定祖先协程了,将待确定祖先协程作为上述子协程的祖先协程,确定祖先协程后,表示对该子协程的调用追踪完成。
49.上述调取预设值通过以下方法获得:获取子协程的历史调取数据,上述历史调取数据包括多个子协程确定祖先协程的调取次数;根据调取次数的不同,计算得到每一种调取次数对应的调取权重和,上述调取权重和为大于上述大于等于上述调取次数的调取权重之和,并上述调取权重和进行升序排列,得到权重序列。依次获取上述权重序列中的调取权重和;当上述调取权重和大于等于权重预设值时,上述调取权重和对应的调取次数为调取预设值。
50.可以理解的是,调用次数和调用权重和的大小关系是相对应的,对于最小的调用次数,那对应的调用权重和为百分之百。当调取权重和大于等于权重预设值时,表示该调取权重和对应的调取次数可以覆盖大部分的调取情况,即在大部分情况下,在调取次数小于调取预设值的情况下都可以找到祖先协程。上述权重预设值可以根据实际情况下的不同需求进行设定,在此不作限制。
51.由于ebpf程序在执行过程中对指令数存在限制,导致无法出现循环操作,或者说是不允许循环操作出现死循环的可能性。通过设置循环次数的上限,就可以让循化操作变成出现重复的顺序操作。所以调取预设值的确定可以是根据工作人员的经验直接设定的,也可以根据数据分析得到。在此对调取预设值的获取方式不做限制。
52.上述调用请求还包括创建时间,调用请求的创建时间表示接收到该调用请求的时间,由于协程关系树是根据调用请求建立的,所以上述协程关系树的创建时间与调用请求的创建时间对应,当调用请求创建的协程任务全部完成后即协程关系树中所有的协程均处理完毕,则根据调用请求的创建时间,确定对应创建时间的协程关系树,并将该协程关系树从存储空间中删除。至此,完成了一个调用请求的调用跟踪。
53.本技术实施例提供一种协程调用追踪系统200,参照图3,协程调用追踪系统200包括:请求获取模块201,用于获取调用请求;第一创建模块202,用于根据所述调用请求,创建初始协程,所述初始协程包括初始协程号和初始操作;第二创建模块203,用于根据所述初始协程,创建子协程,所述子协程包括协程号和协程操作;关系建立模块204,用于当所述调用请求触发预设的ebpf应用程序时,根据协程关系建立规则、所述初始协程号和协程号,建立协程关系树;调用追踪模块205,用于基于所述协程关系树,对所述子协程进行调用追踪。
54.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
55.本技术实施例公开一种电子设备。参照图4,电子设备包括,包括中央处理单元(cpu)301,其可以根据存储在只读存储器(rom)302中的程序或者从存储部分307加载到随机访问存储器(ram)303中的程序而执行各种适当的动作和处理。在ram 303中,还存储有系统操作所需的各种程序和数据。cpu 301、rom 302以及ram 303通过总线彼此相连。输入/输
出(i/o)接口304也连接至总线。
56.以下部件连接至i/o接口304:包括键盘、鼠标等的输入部分305;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分306;包括硬盘等的存储部分307;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分308。通信部分308经由诸如因特网的网络执行通信处理。驱动器309也根据需要连接至i/o接口304。可拆卸介质310,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器309上,以便于从其上读出的计算机程序根据需要被安装入存储部分307。
57.特别地,根据本技术的实施例,上文参考流程图图1描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分308从网络上被下载和安装,和/或从可拆卸介质310被安装。在该计算机程序被中央处理单元(cpu)301执行时,执行本技术的装置中限定的上述功能。
58.需要说明的是,本技术所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
59.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中申请的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
技术特征:
1.一种协程调用追踪方法,其特征在于,包括:获取调用请求;根据所述调用请求,创建初始协程,所述初始协程包括初始协程号和初始操作;根据所述初始协程,创建子协程,所述子协程包括协程号和协程操作;当所述调用请求触发预设的ebpf应用程序时,根据协程关系建立规则、所述初始协程号和协程号,建立协程关系树;基于所述协程关系树,对所述子协程进行调用追踪。2.根据权利要求1所述的协程调用追踪方法,其特征在于,所述子协程为一个或多个;当多个子协程中任意两个子协程存在上下级对应关系时,上级子协程为下级子协程的父协程。3.根据权利要求2所述的协程调用追踪方法,其特征在于,当所述调用请求触发预设的ebpf应用程序时,所述根据协程关系建立规则、所述初始协程号和协程号,建立协程关系树,包括:根据所述子协程的上下级对应关系和所述协程号,建立子协程关系树;根据所述初始协程和所述子协程的对应关系、所述协程号、所述初始协程号、所述子协程关系树,建立协程关系树;所述协程关系树中的所有子协程均存在对应的父协程。4.根据权利要求3所述的协程调用追踪方法,其特征在于,所述ebpf应用程序是预存在操作系统内的,用于获取所述初始协程和所述子协程的对应关系以及所述子协程之间的上下级对应关系。5.根据权利要求3所述的协程调用追踪方法,其特征在于,所述基于所述协程关系树,对所述子协程进行调用追踪,包括:遍历所述子协程并判断所述子协程的父协程的协程操作中是否包含读操作或者写操作;若是,则将包含有读操作或者写操作的父协程作为待确定祖先协程;若否,则将所述子协程作为待确定祖先协程;记录所述待确定祖先协程对应的调取次数;根据所述调取次数,更新所述待确定祖先协程;根据更新后的所述调取次数和所述待确定祖先协程,确定祖先协程,完成对所述子协程的调用追踪。6.根据权利要求5所述的协程调用追踪方法,其特征在于,所述根据所述调取次数,更新所述待确定祖先协程,包括:当所述调取次数小于调取预设值时,判断所述待确定祖先协程的父协程是否包含读操作或者写操作;若是,将所述父协程作为新的待确定祖先协程。7.根据权利要求5所述的协程调用追踪方法,其特征在于,所述根据更新后的所述调取次数和所述待确定祖先协程,确定祖先协程,包括:当所述调取次数小于等于调取预设值且所述待确定祖先协程不存在父协程时,将所述待确定祖先协程作为祖先协程。
8.根据权利要求5所述的协程调用追踪方法,其特征在于,所述调取预设值通过以下方法获得:获取子协程的历史调取数据,所述历史调取数据包括多个子协程确定祖先协程的调取次数;根据调取次数的不同,计算得到每一种调取次数对应的调取权重和,并对所述调取权重和进行升序排列,得到权重序列;依次获取所述权重序列中的调取权重和;当所述调取权重和大于等于权重预设值时,所述调取权重和对应的调取次数为调取预设值。9.一种协程调用追踪系统,其特征在于,包括:请求获取模块,用于获取调用请求;第一创建模块,用于根据所述调用请求,创建初始协程,所述初始协程包括初始协程号和初始操作;第二创建模块,用于根据所述初始协程,创建子协程,所述子协程包括协程号和协程操作;关系建立模块,用于当所述调用请求触发预设的ebpf应用程序时,根据协程关系建立规则、所述初始协程号和协程号,建立协程关系树;调用追踪模块,用于基于所述协程关系树,对所述子协程进行调用追踪。10.一种电子设备,其特征在于,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行如权利要求1至8中任一种方法的计算机程序。
技术总结
本发明涉及一种协程调用追踪方法、系统、设备及可读存储介质,其方法包括获取调用请求;根据调用请求,创建初始协程,初始协程包括初始协程号和初始操作;根据初始协程,创建子协程,子协程包括协程号和协程操作;当调用请求触发预设的eBPF应用程序时,根据协程关系建立规则、初始协程号和协程号,建立协程关系树;基于协程关系树,对子协程进行调用追踪。本发明具有降低追踪方法对代码的侵扰的效果。明具有降低追踪方法对代码的侵扰的效果。明具有降低追踪方法对代码的侵扰的效果。
技术研发人员:向阳 聂润杰 尹纪平
受保护的技术使用者:北京云杉世纪网络科技有限公司
技术研发日:2023.05.24
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/