基于容器的Python代码的保护方法、装置、设备和介质与流程

文档序号:29633399发布日期:2022-04-13 16:32阅读:91来源:国知局
基于容器的Python代码的保护方法、装置、设备和介质与流程
基于容器的python代码的保护方法、装置、设备和介质
技术领域
1.本技术涉及计算机技术领域,具体涉及程序语言编译技术领域,尤其涉及一种基于容器的python代码的保护方法、装置、设备和介质。


背景技术:

2.伴随人工智能技术的发展,python语言已经越来越流行,大量的算法应用和服务使用python语言编写。但是,python语言是解释性语言,代码是无法直接加密的,如果要发布python程序,实际上是发布源代码。
3.相关技术中,考虑将python语言编辑为字节码文件(pyc文件)来避免源代码泄露。其中,pyc文件是一种二进制文件,是由py文件经过编译后生成的文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc文件是一种跨平台的字节码,是由python语言的虚拟机来执行的。但是,使用pyc文件无法直接读出代码,但是仍然可以通过第三方工具,例如已经开源的uncompyle6,将pyc文件转化为方便阅读的源代码。因此,对python语言的代码进行保护是亟待解决的问题。


技术实现要素:

4.本技术提供了一种基于容器的python代码的保护方法、装置、设备和介质,实现了对python程序内容的保护。
5.根据本技术的一方面,提供了一种基于容器的python代码的保护方法,包括:创建用于生成和运行python程序的容器环境,所述容器环境中配置有python语言的源码集和依赖文件;
6.获取所述源码集在当前所述容器环境中对应的随机操作码,所述随机操作码由所述源码集根据随机数序列进行随机乱序得到,所述随机数序列由当前所述容器环境确定;
7.获取记载目标python程序的工程源码,利用所述随机操作码对所述工程源码进行编译,得到向用户发布的目标字节码。
8.可选的,所述获取所述源码集在所述容器环境下对应的随机操作码,包括:
9.获取当前的时间数据和所述容器序列号;
10.以所述时间数据和所述容器序列号为种子生成所述随机数序列;
11.将所述源码集中的操作码按照所述随机数序列进行乱序,得到所述随机操作码。
12.可选的,所述将所述源码集中的操作码按照所述随机数序列进行乱序,得到所述随机操作码,包括:
13.分别获取所述操作码和所述随机数序列中随机数对应的编号;
14.针对每个操作码,将与其编号相同的随机数值作为所述操作码对应的新编号位置。
15.可选的,所述将所述源码集中的操作码按照所述随机数序列进行乱序,得到所述随机操作码,包括:
16.获取所述操作码对应的编号;
17.将所述操作码对应的编号按照预设规则移动所述随机数序列对应的位置,得到每个所述操作码对应的新编号位置。
18.可选的,所述利用所述随机操作码对所述工程源码进行编译,得到向目标用户发布的目标字节码,包括:
19.基于所述源码集中操作码与随机操作码之间的第一映射关系,获取所述操作码与所述字节码之间的第二映射关系;
20.基于所述第二映射关系,将所述工程源码编译成所述目标字节码。
21.可选的,所述方法还包括:
22.在运行所述python程序时,解析所述目标字节码得到所述随机操作码;
23.对所述随机操作码进行解码得到所述目标字节码对应的所述工程源码;
24.执行所述工程源码。
25.根据本技术的另一方面,提供了一种基于容器的python代码的保护装置,包括:
26.创建模块,用于创建用于生成和运行python程序的容器环境,所述容器环境中配置有python语言的源码集和依赖文件;
27.加密模块,用于获取所述源码集在当前所述容器环境中对应的随机操作码,所述随机操作码由所述源码集根据随机数序列进行随机乱序得到,所述随机数序列由当前所述容器环境确定;
28.编译模块,用于获取记载目标python程序的工程源码,利用所述随机操作码对所述工程源码进行编译,得到向用户发布的目标字节码。
29.可选的,所述装置还包括:
30.解析模块,用于在运行所述python程序时,解析所述目标字节码得到所述随机操作码;
31.解码模块,用于对所述随机操作码进行解码得到所述目标字节码对应的所述工程源码;
32.运行模块,用于执行所述工程源码。
33.根据本技术的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本技术的基于容器的python代码的保护方法。
34.根据本技术的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本技术实施例公开的电子设备的基于容器的python代码的保护方法。
35.本技术实施例提出的基于容器的python代码的保护方法、装置、设备和介质,通过对工程源码按照随机数序列进行编译,使得工程源码无法被反编译工具进行破解,有效提高了对python代码的保护效果,同时,由于采用运行python代码的容器环境生成随机数序列进行随机混淆,使得不同发布渠道的目标字节码无法通用,有效提高了产品发布的授权管理,避免了用户互换字节码实现授权外服务调用的情况。
36.应当理解,本部分所描述的内容并非旨在标识本技术的实施例的关键或重要特
征,也不用于限制本技术的范围。本技术的其它特征将通过以下的说明书而变得容易理解。
附图说明
37.附图用于更好地理解本方案,不构成对本技术的限定。其中:
38.图1是根据本技术实施例提出的一种基于容器的python代码的保护方法的流程图;
39.图2是根据本技术实施例提出的一种操作代码乱序原理示意图;
40.图3是根据本技术实施例提出的另一种操作代码乱序原理示意图;
41.图4是根据本技术实施例提出的一种基于容器的python代码的保护方法原理示意图;
42.图5是根据本技术实施例提出的一种基于容器的python代码的保护装置的方框示意图;
43.图6是根据本技术实施例提出的另一种基于容器的python代码的保护装置的方框示意图;
44.图7是用来实现本技术实施例的基于容器的python代码的保护方法的电子设备的框图。
具体实施方式
45.以下结合附图对本技术的示范性实施例做出说明,其中包括本技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
46.下面参考附图描述本技术实施例的一种基于容器的python代码的保护方法、装置、设备和介质。
47.图1是根据本技术实施例提出的一种基于容器的python代码的保护方法的流程图。其中,需要说明的是,本实施例的基于容器的python代码的保护方法的执行主体为基于容器的python代码的保护装置,基于容器的python代码的保护装置可以由软件和/或硬件的方式实现,该实施例中的基于容器的python代码的保护装置可以配置在电子设备中,也可以配置在用于对电子设备进行控制的服务器中,该服务器与电子设备进行通信进而对其进行控制。
48.其中,本实施例中的电子设备可以包括但不限于个人计算、平台电脑、智能手机等设备,该实施例对电子设备不作具体限定。
49.如图1所示,该基于容器的python代码的保护方法可以包括:
50.步骤101,创建用于生成和运行python程序的容器,容器环境中配置有python语言的源码集和依赖文件。
51.其中,容器环境是使用沙箱机制,相互之间不会有任何接口的一种虚拟化运行环境。
52.源码为原始代码,指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。源码主要作用有两种,一是生成目标代码,即计算机可
以识别的代码,另外就是对软件进行说明,即对软件的编写进行说明。
53.依赖关系用于描述一种“类与类之间”的“使用与被使用”的关系,因此,为了保证python程序的有效运行,需要将python语言的依赖文件安装在容器环境中。需要说明的是,依赖文件通常仅限于用于使目标python程序能够有效运行的依赖文件。
54.步骤102,获取源码集在当前容器环境中对应的随机操作码,随机操作码由源码集根据随机数序列进行随机乱序得到,随机数序列由当前容器环境确定。
55.也就是说,本技术在当前容器环境内,通过对操作码的随机乱序,改变操作码与字节码之间的映射关系,从而使得无法从字节码解码得到准确的工程源码。
56.具体地,获取源码集在容器环境下对应的随机操作码,包括:获取当前的时间数据和容器序列号;以时间数据和容器序列号为种子生成随机数序列;将源码集中的操作码按照随机数序列进行乱序,得到随机操作码。
57.其中,当前的时间数据可以是构建容器环境的当前时间,也可以是对操作码进行乱序的时间。还需要说明的是,在本技术实施例是,对源码集进行乱序需要以依赖文件为依赖进行乱序,即,乱序后的随机操作码仍然能够满足对依赖的调用。
58.应当理解的是,由于构建随机操作码采用的是与容器环境相关的当前时间数据和容器序列号,因此,基于时间数据和容器序列号生成的随机数序列具有更好的保密性,即,反向用户较难获取到用于生成随机数序列的种子。
59.可选的,将源码集中的操作码按照随机数序列进行乱序,得到随机操作码,包括但不限于,在随机数为一个值时,将操作码序列按照预设规则转换位置,例如当随机数为2时,将每个操作码整体向后移动两个位置,将最后的两个操作码相应移动到操作码序列的前两个位置;在随机数为多个值时,可以按照随机数值改变操作码的位置。
60.步骤103,获取记载目标python程序的工程源码,利用随机操作码对工程源码进行编译,得到向用户发布的目标字节码。
61.其中,目标python程序的工程源码为需要被保护的代码文件。
62.也就是说,本技术是将传统的利用操作码与字节码之间的映射关系对工程源码进行编译,改变为利用经过加密的随机操作码与字节码之间的映射关系对工程源码进行编译。
63.具体地,在创建用于生成和运行python程序的容器环境时,在容器环境中配置python语言的源码集和依赖文件,确保在容器环境中运行目标字节码时能够准确、稳定运行。然后获取源码集在当前容器环境中对应的随机操作码,使得对目标python程序的工程源码的编译基于容器环境,提高python程序对环境的依赖性,减少授权外的服务调用,然后根据记载目标python程序的工程源码,利用随机操作码对工程源码进行编译,得到向用户发布的目标字节码,最终实现对python程序的加密保护。
64.由此,本技术实施例提出的基于容器的python代码的保护方法,通过对工程源码按照随机数序列进行编译,使得工程源码无法被反编译工具进行破解,有效提高了对python代码的保护效果,同时,由于采用运行python代码的容器环境生成随机数序列进行随机混淆,使得不同发布渠道的目标字节码无法通用,有效提高了产品发布的授权管理,避免了用户互换字节码实现授权外服务调用的情况。
65.作为一个可行实施例,将源码集中的操作码按照随机数序列进行乱序,得到随机
操作码,包括:分别获取操作码和随机数序列中随机数对应的编号;针对每个操作码,将与其编号相同的随机数值作为操作码对应的新编号位置。
66.其中,在本实施例中,随机数序列中的随机数与操作数序列个数相同,且随机数序列中的多个随机数值均不相等。
67.具体而言,分别给操作码和随机数序列建立编号,然后基于编号建立操作码和随机数序列之间的映射关系,即,确定编号相同的操作码和随机数之间具有映射关系,此时,将与其编号相同的随机数值作为操作码对应的新编号位置。其中,按照新编号位置形成的操作码序列为随机操作码序列。
68.举例来说,如图2所示,列1为操作码的编号列,列2为操作码列,列3为随机数序列的编号列,列4为随机数列,列5为根据随机数调整的随机操作码列。由图2可以看出,操作码op1经过随机数序列的乱序,位置从第一个调整到第三个,由此,有效实现对操作码位置信息进行随机改变的目的。
69.在一个或多个实施例中,将源码集中的操作码按照随机数序列进行乱序,得到随机操作码,包括:获取操作码对应的编号,将操作码对应的编号按照预设规则移动随机数序列对应的位置,得到每个操作码对应的新编号位置。
70.也就是说,在本技术实施例中,将操作码按照随机数序列对应的数值进行整体移动。本技术实施例中,随机数序列对应一个随机数值。
71.举例来说,如图3所示,当随机数序列对应的随机数值为2时,整个随机数序列中存在与操作码个数相同的随机数2,此时,若预设规则为向前移动,则整个操作码序列中每个操作码向前移动两个位置,即,原编号为3的操作码移动编号为1的位置,即,操作码op3对应的新编号位置为1,操作码序列中的前两个操作码移动到整个操作码序列的最后,若预设规则为向后移动,则整个操作码序列中每个操作码向后移动两个位置,即,原编号为3的操作码移动编号为5的位置。
72.应当理解的是,将操作码根据随机数序列的乱序操作可根据实际情况进行设置,也可在构建容器环境时随机选择乱序规则,进一步增加对目标字节码进行反编译的难度。
73.在一个或多个可行实施例中,利用随机操作码对工程源码进行编译,得到向目标用户发布的目标字节码,包括:基于源码集中操作码与随机操作码之间的第一映射关系,获取操作码与字节码之间的第二映射关系;基于第二映射关系,将工程源码编译成目标字节码。
74.其中,第一映射关系可为随机数值,即,随机数序列中将操作码调整到随机操作码位置的随机数值,第二映射关系是基于第一映射关系产生的,第二映射关系可与第一映射关系相同。
75.应当理解的是,由于在未进行加密保护时,字节码与操作码之间具有常规的映射关系,当操作码基于第一映射关系转换成随机操作码后,则字节码基于操作码的变化与随机操作码之间形成了第二映射关系。
76.举例来说,如图2所示,操作码op1基于第一映射关系(随机数3)转换成随机操作码op1’,使得字节码pyc3基于第二映射关系与随机操作码op1’形成映射。
77.也就是说,本技术基于随机数序列改变了字节码与操作码之间的映射关系,例如将原本与操作码op3对应的字节码pyc3,基于随机数序列随机转换成了与操作码op1之间存
在映射关系,在反向时,由于无法准确地得到用于编译的随机数序列,因此,无法有效将发布的目标字节码进行解码得到方便阅读的工程源码。
78.在一个或多个实施例中,所述方法还包括:在运行python程序时,解析目标字节码得到随机操作码,对随机操作码进行解码得到目标字节码对应的工程源码,执行工程源码。
79.也就是说,在执行目标字节码时,容器环境还需要对目标字节码进行解码,从而得到记载目标python程序的工程源码,再根据工程源码进行执行,从而确保执行出的内容为客户所需。
80.进一步地,如图4所示,申请人构建容器d,在容器d中配置源码集s和依赖文件dp,确定构建容器环境的时间t和容器序列号m,根据时间t和容器序列号m生成随机数序列r,以源码集s为基础,依赖文件dp为依赖,按照随机数序列r进行乱序得到随机操作码集s’,其中,随机操作码集s’构成容器d对应的定制版python程序p’,将工程源码py利用定制版python程序p’(随机操作码集s’)进行编译得到目标字节码pyc’,将工程源码py利用公开发行的python程序p(操作码集s)进行编译,得到字节码pyc,经过验证,在容器d中运行目标字节码pyc’和在容器d运行pyc的运行结果相同。
81.综上所述,本技术实施例提出的基于容器的python代码的保护方法,通过对工程源码按照随机数序列进行编译,使得工程源码无法被反编译工具进行破解,有效提高了对python代码的保护效果,同时,由于采用运行python代码的容器环境生成随机数序列进行随机混淆,使得不同发布渠道的目标字节码无法通用,有效提高了产品发布的授权管理,避免了用户互换字节码实现授权外服务调用的情况。
82.图5为本技术实施例的基于容器的python代码的保护装置的方框示意图。
83.如图5所示,基于容器的python代码的保护装置10,包括:
84.创建模块11,用于创建用于生成和运行python程序的容器环境,所述容器环境中配置有python语言的源码集和依赖文件;
85.加密模块12,用于获取所述源码集在当前所述容器环境中对应的随机操作码,所述随机操作码由所述源码集根据随机数序列进行随机乱序得到,所述随机数序列由当前所述容器环境确定;
86.编译模块13,用于获取记载目标python程序的工程源码,利用所述随机操作码对所述工程源码进行编译,得到向用户发布的目标字节码。
87.在一些实施例中,加密模块12,还用于:
88.获取当前的时间数据和所述容器序列号;
89.以所述时间数据和所述容器序列号为种子生成所述随机数序列;
90.将所述源码集中的操作码按照所述随机数序列进行乱序,得到所述随机操作码。
91.在一些实施例中,加密模块12,还用于:
92.分别获取所述操作码和所述随机数序列中随机数对应的编号;
93.针对每个操作码,将与其编号相同的随机数值作为所述操作码对应的新编号位置。
94.在一些实施例中,加密模块12,还用于:
95.获取所述操作码对应的编号;
96.将所述操作码对应的编号按照预设规则移动所述随机数序列对应的位置,得到每
个所述操作码对应的新编号位置。
97.在一些实施例中,加密模块12,还用于:
98.基于所述源码集中操作码与随机操作码之间的第一映射关系,获取所述操作码与所述字节码之间的第二映射关系;
99.基于所述第二映射关系,将所述工程源码编译成所述目标字节码。
100.如图6所示,基于容器的python代码的保护装置10,还包括:
101.解析模块14,用于在运行所述python程序时,解析所述目标字节码得到所述随机操作码;
102.解码模块15,用于对所述随机操作码进行解码得到所述目标字节码对应的所述工程源码;
103.运行模块16,用于执行所述工程源码。
104.其中,需要说明的是,前述对基于容器的python代码的保护方法实施例的解释说明也适用于本实施例中的基于容器的python代码的保护装置,此处不再赘述。
105.综上所述,本技术实施例提出的基于容器的python代码的保护装置,通过对工程源码按照随机数序列进行编译,使得工程源码无法被反编译工具进行破解,有效提高了对python代码的保护效果,同时,由于采用运行python代码的容器环境生成随机数序列进行随机混淆,使得不同发布渠道的目标字节码无法通用,有效提高了产品发布的授权管理,避免了用户互换字节码实现授权外服务调用的情况。
106.根据本技术的实施例,本技术还提供了一种电子设备和一种可读存储介质。
107.如图7所示,是根据本技术实施例的基于容器的python代码的保护方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本技术的实现。
108.如图7所示,该电子设备包括:一个或多个处理器701、存储器702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7中以一个处理器701为例。
109.存储器702即为本技术所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本技术所提供的基于容器的python代码的保护方法。本技术的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本技术所提供的基于容器的python代码的保护方法。
110.存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本技术实施例中的基于容器的python代码的保护方法
对应的程序指令/模块(例如,附图5所示的创建模块11、加密模块12和编译模块13)。处理器701通过运行存储在存储器702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的基于容器的python代码的保护方法。
111.存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据基于容器的python代码的保护方法的电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至基于容器的python代码的保护方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
112.基于容器的python代码的保护方法的电子设备还可以包括:输入装置703和输出装置704。处理器701、存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接,图7中以通过总线连接为例。
113.输入装置703可接收输入的数字或字符信息,以及产生与基于容器的python代码的保护方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置704可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
114.此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
115.这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
116.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用
任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
117.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
118.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
119.本技术实施例提出的基于容器的python代码的保护方法、装置、设备和介质,通过对工程源码按照随机数序列进行编译,使得工程源码无法被反编译工具进行破解,有效提高了对python代码的保护效果,同时,由于采用运行python代码的容器环境生成随机数序列进行随机混淆,使得不同发布渠道的目标字节码无法通用,有效提高了产品发布的授权管理,避免了用户互换字节码实现授权外服务调用的情况。
120.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本技术公开的技术方案所期望的结果,本文在此不进行限制。
121.上述具体实施方式,并不构成对本技术保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本技术的精神和原则之内所作的修改、等同替换和改进等,均应包含在本技术保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1