多版本的字节码处理方法、系统和一种虚拟机的制作方法

文档序号:6580165阅读:105来源:国知局
专利名称:多版本的字节码处理方法、系统和一种虚拟机的制作方法
技术领域
本发明涉及计算机网络领域,尤其涉及多版本的字节码处理方法、系统和 一种虚拟才几。
背景技术
字节码(bytecode)不同于通常情况下经过编-泽器编译后输出的目标代码, 它是一种经过编译但仍然不可以让目标机器直接执行的中间代码。与字节码密 切相关的一个概念是虚拟机(VM, Virtual Machine), VM是一种特殊的软件, 它可以在计算机平台和终端用户之间建立一种环境,本质上是如真实机器一样 能够运行程序的计算机的软件实现。以支持JavaScript的Java虚拟机(JVM, Java Virtual Machine)为例,解析器才艮据JavaScript的语法规则,分析JavaSc ript的源代码,建立抽象的语法树;编译器根据JavaScript的语义规则,在解 析器建立的抽象语法树的基础上,生成字节码;之后,JVM运行编译器生成 的字节码,其中包括建立运行环境和执行实际运行指令。
上述处理字节码的过程依次包括对JavaScript源代码的解析、编译和字节 码的运行。对于嵌入式环境,为了节省嵌入式客户端执行解析、编译的时间和 所需的内存空间,现有技术的一种做法是将解析、编译从处理字节码的过程中 抽离出来,即,服务器端预先对JavaScript源代码进行解析和编译,客户端直 接运行服务器端生成的字节码即可。由于字节码长度一般小于源代码,这种做 法实际上还减少了客户端和服务器端之间的通讯时间。
现有技术中预编译(包括解析和编译)和运行的分离会导致不同版本的字 节码在服务器端和客户端互不兼容的问题。例如,为了增加功能或改进性能, 有时需要将客户端的浏览器(内置虚拟机)版本升级到新的版本,然而,在虛 拟机的版本已升级的情况下,服务器端的编译器未必会进行相应的版本升级。 如此,客户端的虚拟机从服务器端获取的字节码仍然是旧版本的编译器生成的 旧版本字节码, 一旦运行这种字节码,在没有相应的退出机制时必然会出错。

发明内容
6决现有技术中编译和 运行的分离导致不同版本的字节码在服务器端和客户端互不兼容的问题。
本发明实施例提供一种多版本的字节码处理方法,包括
获取经过预编译后生成的字节码的版本号; 判断所述字节码能否运行于当前版本的虚拟机;
若能,则按照所述字节码对应的处理逻辑运行所述字节码,否则,取消运 行所述字节码并报错。
本发明实施例提供一种虚拟机,包括
获取模块,用于获取经过预编译后生成的字节码的版本号;
判断模块,用于根据所述获取模块获取的版本号判断所述字节码能否运行 于当前版本的虚拟机;
字节码处理模块,用于在所述判断模块判断所述字节码能够运行于当前版 本的虛拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/或在所 述判断模块判断所述字节码不能运行于当前版本的虚拟机时,取消运行所述字 节码并报错。
一种客户端设备,包括解析器和编译器,所述客户端设备还包括虚拟机, 其中,
所述解析器,用于解析源代码,建立抽象的语法树; 所述编译器,用于基于所述语法树,编译所述解析器解析出的源代码,生 成字节码;
所述虚拟机,用于运行所述编译器生成的字节码或运行经过服务器端预编 译后生成的字节码,所述虚拟机包括
获取模块,用于获取经过预编译后生成的字节码的版本号;
判断模块,用于根据所述获取模块获取的版本号判断所述字节码能否运行 于当前版本的虚拟斗几;
字节码处理模块,用于在所述判断模块判断所述字节码能够运行于当前版 本的虚拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/或在所 述判断模块判断所述字节码不能运行于当前版本的虚拟机时,取消运行所述字节码并报错。
一种多版本的字节码处理系统,包括预编译模块和与所述预编译模块分离 的虚拟机,所述预编译模块包括
解析器,用于解析源代码,建立抽象的语法树;
编译器,用于基于所述语法树,编译所述解析器解析出的源代码,生成字
节码,所述字节码中的第一个字节记录标识所述字节码版本的版本号; 所述虚拟4几包括
获取模块,用于获取经过所述预编译模块预编译后生成的字节码的版本
号;
判断模块,用于根据所述获取模块获取的版本号判断所述字节码能否运行 于当前片反本的虚拟才几;
字节码处理模块,用于在所述判断模块判断所述字节码能够运行于当前版 本的虚拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/或在所 述判断模块判断所述字节码不能运行于当前版本的虚拟机时,取消运行所述字 节码并报错。
在本发明实施例中,通过获取经过预编译后生成的字节码的版本号,在判 断所述字节码能够运行于当前版本的虚拟机时,按照所述字节码对应的处理逻 辑运行所述字节码,在判断所述字节码不能运行于当前版本的虚拟机时,取消 运行所述字节码并报错。与现有技术相比,本发明实施例的虚拟机在接收到高 版本的字节码时,按照所述字节码对应的处理逻辑运行所述字节码;在接收到 低版本的字节码时,按照之前保留的字节码的处理逻辑运行所述字节码,解决 了现有技术在运行字节码时向后不兼容的问题,同时,"取消运行"机制的引 入,避免了低版本的虛拟机运行高版本的字节码时必然产生的错误。


图i是本发明实施例提供的多版本的字节码处理方法基本流程示意图; 图2是本发明实施例提供的虚拟机基本逻辑结构示意图; 图3是本发明实施例提供的终端设备基本逻辑结构示意图; 图4是本发明实施例提供的多版本的字节码处理系统基本逻辑结构示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造 性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实 施例还提供相应的多版本的字节码处理系统、虚拟机和一种客户端设备。以下 分别进行详细i兌明。
请参阅图1,本发明实施例提供的多版本的字节码处理方法基本流程,包

步骤S101,获取经过预编译后生成的字节码的版本号。 在服务器端,可以将源代码(例如,JavaScript源代码)预先经过解析、 编译后生成字节码发送给客户端,这样省去了客户端解析、编译的时间和内存 空间。预编译后的字节码的字节中记录有该字节码的版本。理论上,字节码的 版本可以记录在任意字节上,但考虑到先于记录有字节码版本字节到达客户端 的字节一旦到达客户端即可能被处理,因此,为了防止出错,在本发明实施例 中,将字节码的版本记录在该字节码的第一个字节中。这样,客户端通过读取 该第一个字节,即可以获取经过预编译后生成的字节码的版本号。在本发明实 施例中,字节码的版本号用于标识该字节码的版本,因此,在下文中,有时为 了叙述方便,字节码的版本和字节码的版本号交替使用,不加区分。 步骤S102,判断所述字节码能否运行于当前版本的虚拟机。 现有技术中,在编译器和虚拟机(或服务器端和客户端)分离时,默认为 虚拟机总是能运行任何版本的字节码,譬如,默认升级后的虚拟机(新版本的 虚拟机)仍然可以运行版本低于虚拟才几当前版本的字节码。如前所述,运行低 版本的字节码将会'出错。
因此,在本发明实施例中,在获取字节码的版本 ,引入相应的判断机制, 判断经过预编译后生成的字节码能否运行于当前版本的虚拟机。判断的准则包 括准则一比较所述经过预编译后生成的字节码的版本是否与所述虚拟机当
前版本的版本相等,若是,则判断所述字节码能够运行于当前版本的虚拟机;
当前版本,若是,则判断所述字节码能够运行于当前版本的虚拟机;
准则三比较所述经过预编译后生成的字节码的版本是否高于所述虚拟机 当前版本,若是,则判断所述字节码不能运行于当前版本的虚拟机。
以下对按照三种准则下判断的情况的处理进行说明。
步骤S103,若所述字节码能够运行于当前版本的虚拟机,则按照所述字节 码对应的处理逻辑运行所述字节码,否则,取消运行所述字节码并报错。
如前所述,由于程序的改进,会引起字节码版本的更新(或版本更新了的 编译器生成版本更新了的字节码),这样,实际上形成了多个版本的字节码。 对于服务器端,只保留编译器生成的字节码的最新版本对应的处理逻辑。
以字节类型为例,对于支持JavaScript的函数,在第一版本的字节码(简 写为JS—BYTEC0DEJVER1 )中将参数个数或局部变量个数定义为单字节类 型,即,参数个数或局部变量个数最大值只能为255。随着页面应用复杂度增 加,局部变量个数很容易超过255这个限制,这时需要将编译器升级,使其生 成的字节码升级更高的版本,即,第二版本的字节码(简写为 JS—BYTECODE_VER2 )。在JS—BYTECODE—VER2中,参数个数或局部变量个 数被定义为双字节类型,编译器只保留对双字节类型的处理逻辑。
相等,例如,若经过预编译后生成的字节码的版本为JS—BYTECODE一VER2, 而虚拟机当前版本也为JS_BYTECODE—VER2 ,则虚拟机按照版本为 JS_BYTECODE—VER2的字节码的处理逻辑来运行第二版本的字节码 (JS—BYTECODE—VER2 )。对于上述字节类型变化的实例,虚拟机机按照双 字节类型的处理逻辑来运行第二版本的字节码。
若经判断,所述经过预编译后生成的字节码的版本低于所述虚拟机当前版 本,例如,若经过预编译后生成的字节码的版本为JS—BYTECODE—VER1,而 虚拟机当前版本为JS—BYTECODE_VER2,则虚拟机按照之前保留的字节码的
10处理逻辑运行JS—BYTEC0DE_VER1 。对于上述字节类型变化的实例,虚拟机
JS—BYTEC0DE一VER1 。
由于虚拟机保留有版本比其当前版本更低的字节码的处理逻辑,因此,当 虛拟机的版本升级时,其仍然能够运行编译器生成的低版本的字节码,与现有 技术相比,实际上解决了现有技术在编译(包括解析)和运行分离时存在的向 后兼容的问题。
若经判断,所述经过预编译后生成的字节码的版本高于所述虚拟机当前版 本,若经过预编译后生成的字节码的版本为JS—BYTEC0DEJVER3,而虚拟机 当前版本为JS—BYTEC0DE_VER1,则取消对接收的字节码的运行,同时报4普。 这种在发现接收的字节码的版本高于虚拟机当前版本时及时取消运行的机制, 避免了低版本的虚拟机运行高版本的字节码时必然产生的错误。
请参阅图2,本发明实施例提供的虛拟机基本逻辑结构示意图。为了便于 说明,仅示出了与本发明实施例相关的部分,其包含的功能模块/单元可以是 硬件模块/单元、软件模块/单元或软硬件相结合的模块/单元。
获取模块201,用于获取经过预编译后生成的字节码的版本号。
在本实施例中,获取模块201通过读取编译器发送过来的字节码的第一个 字节即可以获取经过预编译后生成的字节码的版本号。
判断模块202,用于根据所述获取模块201获取的版本号判断所述字节码能 否运行于当前版本的虚拟机,其包括第一判断单元2021、第二判断单元2022 和第三判断单元2023,其中
第一判断单元2021,用于判断所述经过预编译后生成的字节码的版本是否 与所述虚拟机当前版本的版本相等,若是,则判断所述字节码能够运行于当前 版本的虚拟机;
第二判断单元2022,用于判断所述经过预编译后生成的字节码的版本是否 低于所述虚拟机当前版本的版本,若是,则判断所述字节码能够运行于当前版 本的虚拟才几;
第三判断单元2023,用于判断所述经过预编译后生成的字节码的版本是否高于所述虚拟机当前版本的版本,若是,则判断所述字节码不能运行于当前版 本的虚拟冲几。
字节码处理模块203,用于在所述判断模块202判断所述字节码能够运行于 当前版本的虚拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/ 或在所述判断模块判断所述字节码不能运行于当前版本的虚拟机时,取消运行 所述字节码并报错,其包括
第一处理单元2031,用于所述第一判断单元2021判断所述经过预编译后生 成的字节码的版本与所述虚拟机当前版本的版本相等时,按照所述经过预编译
后生成的字节码的处理逻辑运行所述字节码;
第二处理单元2032,用于所述第二判断单元2022判断所述经过预编译后生 成的字节码的版本低于所述虚拟机当前版本的版本时,按照之前保留的字节码
的处理逻辑运行所述字节码。
第三处理单元2033,用于所述第三判断单元2023判断所述经过预编译后生 成的字节码的版本高于所述虚拟机当前版本的版本时,取消运行所述字节码并报错。
请参阅图3,本发明实施例提供的终端设备基本逻辑结构示意图。为了便 于说明,仅示出了与本发明实施例相关的部分,该终端设备可以是浏览器或机 顶盒,其包含的功能模块/单元可以是硬件模块/单元、软件模块/单元或软硬件 相结合的模块/单元。
解析器31,用于解析源代码,建立抽象的语法树;
竭译器32,用于基于所述解析器31建立的抽象语法树,编译所述解析器解 析出的源代码,生成字节码;
虚拟机33,用于运行所述编译器32生成的字节码或运行经过服务器端预编 译后生成的字节码,所述虚拟机33包括
获取模块331,用于获取经过预编译后生成的字节码的版本号;
判断模块332,用于根据所述获取模块331获取的版本号判断所述字节码能 否运行于当前版本的虚拟机,其包括与所述虚拟机当前版本的版本相等,若是,则判断所述字节码能够运行于当前
版本的虚拟才几;
低于所述虚拟机当前版本的版本,若是,则判断所述字节码能够运行于当前版
本的虚拟才几;
第三判断单元3323,用于判断所述经过预编译后生成的字节码的版本是否 高于所述虚拟机当前版本的版本,若是,则判断所述字节码不能运行于当前版 本的虚拟才/L;
字节码处理模块333,用于在所述判断模块332判断所述字节码能够运行于 当前版本的虚拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/ 或在所述判断模块判断所述字节码不能运行于当前版本的虛拟机时,取消运行 所述字节码并报错,字节码处理模块333包括
第 一处理单元3331,用于所述第 一判断单元3321判断所述经过预编译后生 成的字节码的版本与所述虚拟机当前版本的版本相等时,按照所述经过预编译 后生成的字节码的处理逻辑运行所述字节码;
第二处理单元3332,用于所述第二判断单元3322判断所述经过预编译后生 成的字节码的版本低于所述虚拟机当前版本的版本时,按照之前保留的字节码 的处理逻辑运行所述字节码。
第三处理单元3333,用于所述第三判断单元3323判断所述经过预编译后生 成的字节码的版本高于所述虚拟机当前版本的版本时,取消运行所述字节码并 报错。
请参阅图4,本发明实施例提供的多版本的字节码处理系统基本逻辑结构 示意图。为了便于说明,仅示出了与本发明实施例相关的部分,其包含的功能 模块/单元可以是硬件模块/单元、软件模块/单元或软硬件相结合的模块/单元。
该多版本的字节码处理系统包括预编译模块41和与所述预编译模块分离的虚 拟机42,其中,预编译才莫块41包括
解析器411,用于解析源代码,建立抽象的语法树;
编译器412,用于基于所述解析器411建立的抽象语法树,编译所述解析器411解析出的源代码,生成字节码,所述字节码中的第一个字节记录标识所述
字节码版本的版本号; 虚拟机42包括
获取模块421,用于获取经过所述预编译模块预编译后生成的字节码的版 本号;
判断模块422,用于根据所述获取模块421荻取的版本号判断所述字节码能 否运行于当前版本的虚拟机,其包括
第一判断单元4221,用于判断所述经过预编译后生成的字节码的版本是否 与所述虚拟机当前版本的版本相等,若是,则判断所述字节码能够运行于当前 版本的虚拟才几;
第二判断单元4222,用于判断所述经过预编译后生成的字节码的版本是否 低于所述虚拟机当前版本的版本,若是,则判断所述字节码能够运行于当前版 本的虚拟才几;
第三判断单元4223,用于判断所述经过预编译后生成的字节码的版本是否 高于所述虚拟机当前版本的版本,若是,则判断所述字节码不能运行于当前版 本的虚拟才几;
字节码处理模块423,用于在所述判断模块422判断所述字节码能够运行于 当前版本的虚拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/ 或在所述判断模块判断所述字节码不能运行于当前版本的虚拟机时,取消运行 所述字节码并报错,字节码处理模块423包括
第一处理单元4231,用于所述第 一判断单元4221判断所述经过预编译后生 成的字节码的版本与所述虚拟机当前版本的版本相等时,则增加所述字节码的 处理逻辑并保留版本低于所述虛拟机当前版本的字节码的处理逻辑;
第二处理单元4232,用于所述第二判断单元4222判断所述经过预编译后生 成的字节码的版本低于所述虚拟机当前版本的版本时,按照之前保留的字节码 的处理逻辑运行所述字节码。
第三处理单元4233,用于所述第三判断单元4223判断所述经过预编译后生 成的字节码的版本高于所述虛拟机当前版本的版本时,取消运行所述字节码并
14报错。
骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读
存储介质中,存储介质可以包括只读存储器(ROM, Read Only Memory )、 随机存取存储器(RAM, Random Access Memory )、石兹盘或光盘等。
以上对本发明实施例所提供的多版本的字节码处理方法、系统和一种虚拟
对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围 上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种多版本的字节码处理方法,其特征在于,包括获取经过预编译后生成的字节码的版本号;判断所述字节码能否运行于当前版本的虚拟机;若能,则按照所述字节码对应的处理逻辑运行所述字节码,否则,取消运行所述字节码并报错。
2、 如权利要求l所述多版本的字节码处理方法,其特征在于,所述判断所 述字节码能否运行于当前版本的虚拟机包括的版本相等,若是,则判断所述字节码能够运行于当前版本的虚拟机。
3、 如权利要求2所述多版本的字节码处理方法,其特征在于,若判断所述 经过预编译后生成的字节码的版本与所述虚拟机当前版本的版本相等,则按照 所述经过预编译后生成的字节码的处理逻辑运行所述字节码。
4、 如权利要求l所述多版本的字节码处理方法,其特征在于,若判断所述是,则判断所述字节码能够运行于当前版本的虚拟机。
5、 如权利要求4所述多版本的字节码处理方法,其特征在于,若判断所述前保留的字节码的处理逻辑运行所述字节码。
6、 如权利要求l所述多版本的字节码处理方法,其特征在于,若判断所述 经过预编译后生成的字节码的版本是否高于所述虚拟机当前版本的版本,若 是,则判断所述字节码不能运行于当前版本的虚拟机。
7、 如权利要求6所述多版本的字节码处理方法,其特征在于,若判断所述 经过预编译后生成的字节码的版本高于所述虚拟机当前版本的版本,取消运行 所述字节码并报错。
8、 一种虚拟机,其特征在于,所述虚拟机包括 获取模块,用于获取经过预编译后生成的字节码的版本号;判断模块,用于根据所述获取模块获取的版本号判断所述字节码能否运行 于当前版本的虚拟机;字节码处理模块,用于在所述判断模块判断所述字节码能够运行于当前版 本的虚拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/或在所 述判断模块判断所述字节码不能运行于当前版本的虚拟机时,取消运行所述字 节码并报错。
9、 如权利要求8所述的虚拟机,其特征在于,所述判断模块包括述虚拟机当前版本的版本相等,若是,则判断所述字节码能够运行于当前版本 的虚拟机;第二判断单元,用于判断所述经过预编译后生成的字节码的版本是否低于 所述虚拟机当前版本的版本,若是,则判断所述字节码能够运行于当前版本的 虛拟机;第三判断单元,用于判断所述经过预编译后生成的字节码的版本是否高于 所述虚拟机当前版本的版本,若是,则判断所述字节码不能运行于当前版本的 虚拟才几。
10、 如权利要求9所述的虚拟机,其特征在于,所述字节码处理模块包括 第一处理单元,用于所述第一判断单元判断所述经过预编译后生成的字节码的版本与所述虚拟机当前版本的版本相等时,按照所述经过预编译后生成的 字节码的处理逻辑运行所述字节码;第二处理单元,用于所述第二判断单元判断所述经过预编译后生成的字节 码的版本低于所述虚拟机当前版本的版本时,按照之前保留的字节码的处理逻 辑运行所述字节码;第三处理单元,用于所述第三判断单元判断所述经过预编译后生成的字节 码的版本高于所述虚拟机当前版本的版本时,取消运行所述字节码并报错。
11、 一种客户端设备,包括解析器和编译器,其特征在于,所述客户端设 备还包括虚拟机,其中,所述解析器,用于解析源代码,建立抽象的语法树; 所述编译器,用于基于所述语法树,编译所述解析器解析出的源代码,生 成字节码;译后生成的字节码,所述虚拟机包括获取模块,用于获取经过预编译后生成的字节码的版本号;判断模块,用于根据所述获取模块获取的版本号判断所述字节码能否运行于当前版本的虚拟机;字节码处理模块,用于在所述判断模块判断所述字节码能够运行于当前版本的虚拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/或在所述判断模块判断所述字节码不能运行于当前版本的虚拟机时,取消运行所述字节码并报错。
12、 如权利要求ll所述的客户端设备,其特征在于,所述判断模块包括述虚拟机当前版本的版本相等,若是,则判断所述字节码能够运行于当前版本 的虚拟才几;所述虚拟机当前版本的版本,若是,则判断所述字节码能够运行于当前版本的 虚拟才几;第三判断单元,用于判断所述经过预编译后生成的字节码的版本是否高于 所述虚拟机当前版本的版本,若是,则判断所述字节码不能运行于当前版本的 虛拟机。
13、 如权利要求12所述的客户端设备,其特征在于,所述字节码处理模块 包括第一处理单元,用于所述第一判断单元判断所述经过预编译后生成的字节 码的版本与所述虚拟机当前版本的版本相等时,按照所述经过预编译后生成的 字节码的处理逻辑运行所述字节码;第二处理单元,用于所述第二判断单元判断所述经过预编译后生成的字节 码的版本低于所述虚拟机当前版本的版本时,按照之前保留的字节码的处理逻 辑运行所述字节码;第三处理单元,用于所述第三判断单元判断所述经过预编译后生成的字节码的版本高于所述虚拟机当前版本的版本时,取消运行所述字节码并报错。
14、 一种多版本的字节码处理系统,包括预编译模块和与所述预编译模块 分离的虚拟机,其特征在于,所述预编译模块包括解析器,用于解析源代码,建立抽象的语法树;编译器,用于基于所述语法树,编译所述解析器解析出的源代码,生成字节码,所述字节码中的第一个字节记录标识所述字节码版本的版本号; 所述虚拟机包括获取模块,用于获取经过所述预编译模块预编译后生成的字节码的版本—, 判断模块,用于根据所述获取模块获取的版本号判断所述字节码能否运行 于当前版本的虚拟机;字节码处理模块,用于在所述判断模块判断所述字节码能够运行于当前版 本的虚拟机时,按照所述字节码对应的处理逻辑运行所述字节码,和/或在所 述判断模块判断所述字节码不能运行于当前版本的虚拟机时,取消运行所述字 节码并报错。
全文摘要
本发明实施例提供一种多版本的字节码处理方法,以解决编译和运行的分离导致不同版本的字节码在服务器端和客户端互不兼容的问题。该方法包括获取经过预编译后生成的字节码的版本号;判断所述字节码能否运行于当前版本的虚拟机;若能,则按照所述字节码对应的处理逻辑运行所述字节码,否则,取消运行所述字节码并报错。本发明实施例的虚拟机在接收到高版本的字节码时,按照所述字节码对应的处理逻辑运行所述字节码;在接收到低版本的字节码时,按照之前保留的字节码的处理逻辑运行所述字节码,解决了现有技术在运行字节码时向后不兼容的问题,同时,“取消运行”机制的引入,避免了低版本的虚拟机运行高版本的字节码时必然产生的错误。
文档编号G06F9/45GK101645018SQ20091017015
公开日2010年2月10日 申请日期2009年9月3日 优先权日2009年9月3日
发明者徐佳宏, 朱吕亮, 程伯钦 申请人:深圳市茁壮网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1