一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式存储过程的运行方法、电子设备及存储介质与流程

2022-02-19 02:21:30 来源:中国专利 TAG:


1.本发明实施例涉及数据库领域,特别涉及一种分布式存储过程的运行方法、电子设备及存储介质。


背景技术:

2.存储过程(英文:stored procedure)是存储于数据库系统中的一组能够完成特定功能的语句集,存储过程经过第一次编译后,在后续调用时无需再次编译,用户可以通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来运行存储过程。分布式数据库系统中通常包括存储过程引擎和结构化查询语言(structured query language,简称“sql”)处理引擎,存储过程引擎用于运行存储过程,而sql处理引擎用于执行存储过程中的sql指令。
3.在实现本发明实施例的过程中,发明人发现,在执行存储过程的过程中,sql处理引擎与存储过程引擎之间的消息交互次多,影响执行存储过程的效率。


技术实现要素:

4.本发明实施例的目的在于提供一种分布式存储过程的运行方法、电子设备及存储介质,提高了分布式存储过程运行的效率。
5.为解决上述技术问题,本发明的实施例提供了一种分布式存储过程的运行方法,包括:获取存储过程中的第一结构化查询语言sql指令;判断第一sql指令中sql指令的类型,获得第一判断结果;若第一判断结果指示第一sql指令中存在非游标的查询类sql指令,则生成第一处理请求,第一处理请求包括非游标的查询类sql指令以及返回结果集信息的返回指示信息;向sql处理引擎发送第一处理请求,以供sql处理引擎向存储过程引擎返回非游标的查询类sql指令的结果状态以及结果集信息。
6.本发明的实施例还提供了一种分布式存储过程的运行方法,包括:接收存储过程引擎发送的请求消息;判断请求消息中是否存在第一处理请求,获取第四判断结果,第一处理请求包括:非游标的查询类sql指令以及返回结果集信息的返回指示信息若第四判断结果指示存在第一处理请求,则向存储过程引擎返回非游标的查询类sql指令的结果状态以及结果集信息。
7.本发明的实施例还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述应用于存储过程引擎的分布式存储过程的运行方法,或者,执行应用于sql处理引擎的分布式存储过程的运行方法。
8.本发明的实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述应用于存储过程引擎的分布式存储过程的运行方法,或者,执行应用于sql处理引擎的分布式存储过程的运行方法。
9.本发明实施例相对于现有技术而言,获取存储过程中的第一sql指令后,对该第一
sql指令的类型进行判断,若第一sql指令中存在非游标的查询类sql指令,生成包含返回指示信息的第一处理请求,sql处理引擎根据该第一处理请求,对该非游标的查询类sql指令进行处理,该sql处理引擎将处理的结果状态以及结果集直接返回该存储过程引擎,存储过程引擎即可对下一条第一sql指令进行处理;由于存储过程引擎无需在接收到结果状态后,向sql处理引擎逐行获取结果集,减少了存储过程引擎与sql处理引擎获取之间的交互次数,减小了对非游标的查询类sql指令的处理速度,提升了整个存储过程的运行效率。
附图说明
10.一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
11.图1是现有的分布式数据库的架构示意图;
12.图2是现有存储过程运行的交互示意图;
13.图3是根据本发明第一实施例中的分布式存储过程的运行方法的流程图;
14.图4是根据本发明第二实施例中的分布式存储过程的运行方法的流程图;
15.图5是根据本发明第三实施例中的运行非游标的查询类sql指令的存储过程的交互示意图;
16.图6是根据本发明第三实施例中的运行游标中的查询类sql指令的存储过程的交互示意图;
17.图7是根据本发明第三实施例中运行游标中的查询类sql指令的存储过程的交互示意图;
18.图8是根据本发明第三实施例中的分布式存储过程的运行方法中获取该第一sql指令的示意图;
19.图9是根据本发明第三实施例中的分布式存储过程的运行方法中对错误信息处理的示意图;
20.图10是根据本发明第四实施例中的电子设备的结构示意图。
具体实施方式
21.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本技术而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本技术所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
22.在分布式数据库中,存在多个数据存储结点,sql处理引擎以及存储过程引擎。目前的存储过程的运行如图1、2所示。
23.图1为分布式数据库的架构示意图。该分布式数据库包括多个存储结点,如,db_1、db_2
……
db_n。用户的发起的执行存储过程的执行请求发送至sql处理引擎,由sql处理引擎、存储过程引擎、数据存储结点以及元数据管理进行协助,完成存储过程的执行,元数据管理用于管理元数据,其中,数据存储结点可以为存储设备。下面结合图2介绍目前sql处理引擎
与存储过程引擎之间的交互过程。
24.sql处理引擎执行步骤s01:向存储过程引擎发送该执行存储过程的请求。
25.存储过程引擎执行步骤s02:存储过程引擎执行该存储过程,检测存储过程中的sql指令。
26.存储过程引擎执行步骤s03:根据检测到的sql指令,重构出完整的sql指令,可以以消息的形式发送至sql处理引擎,等待sql处理引擎执行该sql指令的执行结果。
27.sql处理引擎执行步骤s04:接收存储过程引擎发送的sql指令。
28.sql处理引擎执行步骤s05:sql处理引擎完成对接收的sql语句的执行,将执行的结果状态作为响应发给sql处理引擎。
29.存储过程引擎执行步骤s06:收到sql执行结果状态后,根据该结果状态,判断是否需要向sql处理引擎请求一行的结果集,如是,则发送请求。
30.sql处理引擎执行步骤s07:sql处理引擎将一行的结果集作为响应发送给存储过程引擎。如果存储过程引擎需要多行的结果集,则多次进行上述的获取步骤,即每需要获取一行结果集就执行步骤s06和步骤s07。
31.存储过程引擎执行步骤s08:执行完当前的sql指令的结果集,通知sql处理引擎释放对应的结果集。sql处理引擎重复执行下一条sql指令,即重复步骤s03至步骤s08。
32.存储过程引擎执行步骤s09:执行完存储过程后,将出参、出入参拼接到消息中,作为最终响应发送给sql处理引擎。sql处理引擎将最终结果返回给用户。
33.存储过程执行中,sql的结果集从sql处理引擎传递到存储过程引擎中,若sql处理引擎与存储过程引擎之间交互次数多,会导致频繁访问网络。
34.可见,现在的交互方式中若存储过程引擎每执行一行的结果集时,需要向sql处理引擎发送一次获取请求,由sql处理引擎返回的结果集,若需要多行的结果集,sql处理引擎与存储过程引擎之间的交互次数多,影响执行存储过程的效率。
35.本发明的第一实施例涉及一种分布式存储过程的运行方法,应用于存储过程引擎,其流程如图3所示。
36.步骤101:获取存储过程中的第一结构化查询语言sql指令。
37.步骤102:判断第一sql指令中sql指令的类型,获得第一判断结果。
38.步骤103:若第一判断结果指示第一sql指令中存在非游标的查询类sql指令,则生成第一处理请求,第一处理请求包括非游标的查询类sql指令以及返回结果集信息的返回指示信息。
39.步骤104:向sql处理引擎发送第一处理请求,以供sql处理引擎向存储过程引擎返回非游标的查询类sql指令的结果状态以及结果集信息。
40.本发明实施例相对于现有技术而言,获取存储过程中的第一sql指令后,对该第一sql指令的类型进行判断,若第一sql指令中存在非游标的查询类sql指令,生成包含返回指示信息的第一处理请求,sql处理引擎根据该第一处理请求,对该非游标的查询类sql指令进行处理,该sql处理引擎将处理的结果状态以及结果集直接返回该存储过程引擎,存储过程引擎即可对下一条第一sql指令进行处理;由于存储过程引擎无需在接收到结果状态后,向sql处理引擎逐行获取结果集,减少了存储过程引擎与sql处理引擎获取之间的交互次数,减小了对非游标的查询类sql指令的处理速度,提升了整个存储过程的运行效率。
41.本发明的第二实施例涉及一种分布式存储过程的运行方法,该分布式存储过程的运行方法应用于sql处理引擎,其流程如图4所示:
42.步骤201:接收存储过程引擎发送的请求消息。
43.步骤202:判断请求消息中是否存在第一处理请求,获取第四判断结果,第一处理请求包括:非游标的查询类sql指令以及返回结果集信息的返回指示信息。
44.步骤203:若第四判断结果指示存在所述第一处理请求,则向存储过程引擎返回非游标的查询类sql指令的结果状态以及结果集信息。
45.本实施例提供的分布式存储过程的运行方法,sql处理引擎在处理了请求消息中的指定的sql指令,可以判断请求消息中是否存在第一处理请求,若存在第一处理请求,向存储过程引擎返回处理得到的结果状态以及结果集信息,由于无需等待存储过程引擎下一交互过程中的获取结果集的请求,减少了与存储过程交互的次数,且无需逐行将结果集返回存储过程引擎,进一步减少与存储过程引擎的交互次数,提高了执行存储过程的效率。
46.为了更好的理解第一实施例以及第二实施例,第三实施例将详细介绍该分布式存储过程运行的方法。
47.第三实施例中的分布式存储过程运行的方法,其运行过程如图5所示。
48.分布式数据库中,存在多个数据存储结点、存储过程引擎和sql处理引擎。下面结合存储过程引擎和sql处理引擎之间的交互图5,具体介绍分布式存储过程的运行过程。
49.sql处理引擎执行步骤s11:向存储过程引擎发送该执行存储过程的请求。
50.具体地,用户的客户端向sql处理引擎发起执行存储过程的执行请求,sql处理引擎在处理该执行请求时,向存储过程引擎发送该执行存储过程的请求。
51.存储过程引擎执行步骤s12:获取存储过程中的第一结构化查询语言sql指令。
52.具体地,存储过程引擎执行该存储过程中,获取执行该存储过程中的一条sql指令,可以将该条sql指令作为第一sql指令,也可以将执行存储过程中的获取的多条sql指令作为第一sql指令,也就是说第一sql指令可以包含一条sql指令,也可以包含至少两条sql指令。
53.存储过程引擎执行步骤s13:判断第一sql指令中sql指令的类型,获得第一判断结果。
54.具体地,本示例中sql指令的类型可以包括:常规sql指令,非游标的查询类sql、游标中的查询类sql指令、游标中的常规sql指令。sql处理引擎执行该非游标的查询类sql指令后的结果包括三种:成功、失败以及结果集。存储过程引擎针对非游标的查询类sql指令,需要执行sql处理引擎返回的结果集。返回的结果集可以为一行或0行。针对游标中的查询类sql指令,存储过程引擎需要延后执行结果集。在存储过程中执行游标的查询类sql指令时,也需要结果集中的一行。而结果集包括0行、1行,多行这三种情况。常规sql指令,不需要结果集,需要sql返回的结果状态,如:成功的结果、失败的结果。
55.针对第一sql指令中的每条sql指令进行如下处理:根据该sql指令及上下文信息,判断该sql指令是否为非游标的查询类的sql指令;例如,可以通过获取sql指令的位置,未处于游标中,则属于非游标类的sql指令,继续根据sql指令的关键词,判断该是否属于查询类,经过两次判断,即可确定该sql指令是否属于非游标的查询类sql指令。可以理解的是,还可以采用其他的方式进行判断,此处不再一一列举。
56.存储过程引擎执行步骤s14:若第一判断结果指示第一sql指令中存在非游标的查询类sql指令,则生成第一处理请求,第一处理请求包括非游标的查询类sql指令以及返回结果集信息的返回指示信息。
57.具体地,生成的第一处理请求中包括返回结果集信息的返回指示信息,例如,第一处理请求中可以携带“回应中是否带上结果集”的信息,若第一判断结果指示第一sql指令中存在非游标的查询类sql指令,则,“回应中是否带上结果集信息”的信息为true;该true信息即为返回指示信息;若第一判断结果指示第一sql指令中不存在非游标的查询类sql指令,则,“回应中是否带上结果集信息”的信息为false。结果集信息可以包括:执行该条第一sql指令后得到的所有结果集,也可以是指定行数的结果集。
58.可以理解的是,第一处理请求中可以包括该非游标的查询类sql指令;若第一sql指令中具有多条sql指令,那么该第一处理请求还可以包括第一sql指令中的其他类型的sql指令。
59.存储过程引擎执行步骤s15:向sql处理引擎发送第一处理请求,以供sql处理引擎向存储过程引擎返回非游标的查询类sql指令的结果状态以及结果集信息。
60.具体地,根据第一处理请求,生成请求消息,该请求消息中可以包括该第一处理请求,还可以包括第一sql指令中的其他sql指令。
61.sql处理引擎执行步骤s16:接收存储过程引擎发送的请求消息。
62.具体地,获取请求消息中的携带的sql指令,处理该sql指令,获取处理该sql指令的结果状态以及对应的结果集信息。
63.sql处理引擎执行步骤s17:判断请求消息中是否存在第一处理请求,获取第四判断结果,第一处理请求包括:非游标的查询类sql指令以及返回结果集信息的返回指示信息。
64.具体地,第一处理请求中携带有返回指示信息,若请求消息中是否有返回指示信息,则可以判定请求消息中存在第一处理请求,例如:查找到请求消息中的“回应中是否带上结果集信息”信息为true;则第四判断结果指示存在第一处理请求。
65.sql处理引擎执行步骤s18:若第四判断结果指示存在第一处理请求,则向存储过程引擎返回非游标的查询类sql指令的结果状态以及结果集信息。
66.在一个例子中,若第四判断结果指示存在第一处理请求,sql处理引擎获取非游标的查询类sql指令的结果集;判断非游标的查询类sql指令的结果集的行数是否大于1,若是,则生成错误信息。若非游标的查询类sql指令的结果集的行数小于或等于1,则构造一个新的种类的状态消息,该新的状态消息中包含执行非游标的查询类sql指令的结果状态和结果集信息;结果集信息可以包括:执行该条第一sql指令后得到的所有结果集,也可以是指定行数的结果集。
67.在另一个例子中,若第四判断结果指示不存在第一处理请求,则按照已有方式构造状态消息。
68.按照上述步骤s11至步骤s18,继续执行下一条sql指令,直至完成本次存储过程的所有指令。
69.存储过程引擎执行步骤s19:完成当前的sql指令的结果集,通知sql处理引擎释放对应的结果集。sql处理引擎重复执行下一条第一sql指令,即重复步骤s13至步骤s18。
70.存储过程引擎执行步骤s20:向sql处理引擎发送存储过程执行结果的消息。
71.具体地,存储过程引擎执行完存储过程后,将出参、出入参拼接到消息中,作为最终响应发送给sql处理引擎;sql处理引擎将最终结果返回给用户的客户端。
72.本实施例中还提供了运行游标中的查询类sql指令的存储过程的方式。下面结果交互图6、图7介绍。
73.sql处理引擎执行步骤s21:向存储过程引擎发送该执行存储过程的请求。
74.与步骤s11类似,此处不再赘述。
75.存储过程引擎执行步骤s22:获取存储过程中的第一结构化查询语言sql指令。
76.具体地,存储过程引擎执行该存储过程中,获取执行该存储过程中的一条sql指令,可以将该sql指令作为第一sql指令,也可以将执行存储过程中的多条sql指令作为第一sql指令,也就是说第一sql指令可以包含一条sql指令,也可以包含至少两条sql指令。
77.存储过程引擎执行步骤s23:判断第一sql指令中sql指令的类型,获得第一判断结果。
78.该步骤与步骤s13大致相同,此处不再赘述。
79.存储过程引擎执行步骤s24:若第一判断结果指示第一sql指令中存在游标中的查询类sql指令,则向sql处理引擎发送第二处理请求,第二处理请求包括游标中的查询类sql指令,以供sql处理引擎返回状态消息,状态消息包括游标中的查询类sql指令的结果状态。
80.具体地,针对第一sql指令中的sql指令进行如下处理:根据该sql指令及上下文信息,判断该sql指令是否为游标的查询类的sql指令;例如,可以通过获取sql指令的位置,若该sql指令处于游标中,则属于游标类的sql指令,根据sql指令的关键词,判断该sql指令是否属于查询类,经过两次判断,即可确定该sql指令是否属于游标中的查询类sql指令。可以理解的是,还可以采用其他的方式进行判断,此处不再一一列举。
81.第一判断结果指示第一sql指令中存在游标中的查询类sql指令,则可以生成请求消息,该请求消息中可以包括该第二处理请求、第一sql指令中的其他sql指令。
82.sql处理引擎执行步骤s25:接收存储过程引擎发送的请求消息。
83.具体地,获取请求消息中的携带的sql指令,处理该sql指令,可以获取处理该sql指令的结果状态以及对应的结果集。
84.sql处理引擎执行步骤s26:判断请求消息中是否存在第一处理请求,获取第四判断结果,第一处理请求包括:非游标的查询类sql指令以及返回结果集信息的返回指示信息。
85.具体地,第一处理请求中携带有返回指示信息,若请求消息中有返回指示信息,则可以判定请求消息中存在第一处理请求,例如:查找到请求消息中的“回应中是否带上结果集信息”信息为false;该第四判断结果指示不存在第一处理请求。若检测出包括游标中的查询类sql指令,则第四判断结果指示存在第二处理请求。可以理解的是,第二处理请求中还可以包括第二处理请求的标识信息,以便该sql处理引擎可以根据该标识信息,判断是否存在第二处理请求。
86.sql处理引擎执行步骤s27:若第四判断结果指示存在第二处理请求,第二处理请求包括游标中的查询类sql指令,则获取游标中的查询类sql指令的结果状态以及结果集中的容量信息。
87.具体地,若处理第二请求后,获得的结果是结果集时,sql处理引擎计算结果集的总行数或一行的结果集的大小。结果集的容量信息可以包括获得的结果集的总行数或一行的结果集的大小的信息,sql处理引擎发送给存储过程引擎的状态消息中带上结果集的容量信息。
88.sql处理引擎执行步骤s28:向存储过程引擎返回状态消息,状态消息包括游标中的查询类sql指令的结果状态以及结果集中的容量信息,以供存储过程引擎向所述sql处理引擎发送获取n行的结果集的第一获取请求。
89.存储过程引擎执行步骤s29:判断接收的状态消息中是否存在结果集的容量信息,获取第二判断结果。
90.存储过程引擎执行步骤s30:若第二判断结果指示状态消息中存在结果集的容量信息,则向sql处理引擎发送获取n行的结果集的第一获取请求,以供sql处理引擎返回n行的结果集,n为大于1的整数。
91.具体地,存储过程引擎向sql处理引擎请求n行的结果集可以根据存储过程引擎根据容量信息中的总行数或一行结果集的大小设置n的值,也可以同时根据内存、网络因素动态设定n的值,n为大于1的整数。
92.sql处理引擎执行步骤s31:响应于第一获取请求,向存储过程引擎返回n行的结果集。
93.具体地,如果对结果集中剩余结果集行数有n行(即剩余结果集行数大于等于n行),就向存储过程引擎回应n行的结果集;如没有n行,则回应实际行数的结果集。
94.存储过程引擎执行步骤s32:通知sql处理引擎释放结果集。
95.若sql处理引擎与存储过程引擎部署在同一个电子设备上时,执行步骤s21至步骤s26
96.sql处理引擎执行步骤s27’:若第四判断结果指示存在第二处理请求,第二处理请求包括游标中的查询类sql指令,向存储过程引擎发送游标中的查询类sql指令的结果状态,以供存储过程引擎发送获取所有结果集的第二获取请求。
97.存储过程引擎还可以执行步骤s28’:若第二判断结果指示状态消息中不存在结果集的容量信息,则在存储过程引擎所处设备中检测是否存在sql处理引擎,若是存在,则向sql处理引擎发送获取所有结果集的第二获取请求,以供sql处理引擎返回所有结果集的存储信息。
98.具体地,存储过程引擎检测所处的电子设备上是否存在sql处理引擎,若是存在,表明存储过程引擎与sql处理引擎被部署在同一个电子设备上。
99.sql处理引擎执行步骤s29’:将游标中的查询类sql指令的所有结果集写入sql处理引擎所在设备的存储介质上,获取存储信息。
100.具体地,获取处理第二处理请求中游标中的查询类sql指令的所有结果集,将该结果集存储在sql处理引擎所在设备的存储介质上,例如,磁盘文件或共享内存上;获取该文件的存储位置。向存储过程引擎发送结果集所在的文件的存储位置。
101.sql处理引擎执行步骤s30’:响应于第二获取请求,向存储过程引擎发送存储信息,以供存储过程引擎按照存储信息获取所有结果集。
102.存储过程引擎执行步骤s31’:按照存储信息获取所有结果集。
103.具体地,由于sql处理引擎和存储过程引擎位于同一设备上,存储过程引擎按照存储位置查找存储的结果集,从文件中取用结果集,而不用反复向sql处理引擎请求结果集,进一步减少sql处理引擎与存储过程引擎之间的交互次数。
104.存储过程引擎执行步骤s32’:通知sql处理引擎释放结果集。
105.按照上述步骤s21至步骤s32,或者步骤s21至步骤s32’,继续执行下一条sql指令,直至完成本次存储过程的所有指令。
106.需要说明的是,在sql处理引擎与存储过程引擎部署在不同设备或是同一个电子设备上时,都能采用步骤s21至步骤s32。
107.存储过程引擎执行步骤s33:向sql处理引擎发送存储过程执行结果的消息。
108.具体地,存储过程引擎执行完存储过程后,将出参、出入参拼接到消息中,作为最终响应发送给sql处理引擎;sql处理引擎将最终结果返回给用户的客户端。
109.值得一提的是,对游标中的查询类sql,将消息由传递单行结果集改为传递多行结果集消息,即从存储过程引擎向sql处理引擎一次就请求多行结果集,sql处理引擎向存储过程引擎回应多行结果集。
110.在一个例子中,第一sql指令中还可以包括多个sql指令,下面介绍获取该第一sql指令的过程。其具体实现的示意图如图8所示。
111.步骤s40:获取当前执行存储过程中的第二sql指令。
112.步骤s41:判断第二sql指令是否属于游标中的常规sql指令,获取第三判断结果,若第三判断结果指示第二sql指令为游标中的常规sql指令,则执行步骤s42;第三判断结果指示所述第二sql指令属于目标类型,则执行步骤s43。
113.具体地,在存储过程引擎中,对可并行请求执行多个sql指令,可以将多个sql指令合并成一个请求消息。可并行请求的sql指令满足如下条件:
114.(1)第m条sql指令是游标中的常规sql指令,而第m 1条sql指令是一条常规sql指令。可以同时向sql处理引擎进行请求,m为大于0的整数。
115.(2)连续多个游标中的sql指令,且没有查询fetch操作。这些游标中的sql可以同时向sql处理引擎进行请求。
116.存储过程引擎在执行存储过程时,获取当前执行存储过程中的sql指令,将获取的sql指令作为第二sql指令,该第二sql指令为当前执行的一条sql指令。
117.检测第二sql指令是否属于游标中的常规sql指令,若是,则缓存此游标中的查询类sql指令,继续执行存储过程中下一条第二sql指令,继续检测下一条第二sql指令是否属于目标类型,目标类型可以包括:常规sql指令,或者,游标中的查询类sql指令,且该游标中任一条sql指令未被发送至sql处理引擎。
118.步骤s42:缓存第二sql指令,继续返回获取下一条第二sql指令的步骤。
119.步骤s43:将缓存区内的sql指令以及第二sql指令合并作为第一sql指令。
120.在一个例子中,sql处理引擎对错误信息的处理的具体实现的示意图如图9所示。
121.步骤s50:获取错误信息;
122.步骤s51:判断错误信息是否属于预设的错误类型,获取第五判断结果,若第五判断结果指示错误信息属于预设的错误类型,则执行步骤s52;否则,执行步骤s53。
123.具体地,预设的错误类型包括:sql处理引擎本身在处理时出现的错误,如语法解
memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
136.本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献