狠狠撸

狠狠撸Share a Scribd company logo
闯补惫补类加载器
(class loader)




           作者:Cheng Fu
           作者:Cheng
了解类加载器的好处
? 更加深入的了解Java语言的核心特性
? 有助于解决常见的ClassNotFoundException
  和ClassDefNotFoundError
? 满足特殊的加载类的需求
 – 安全,保密
? 在JVM中创造隔离的环境,以及保护代码
? 面试或被面试中可能有用


                                   2
闯补惫补类加载器介绍
? Java中的类加载器(class loader)用来加载
  Java字节代码到Java虚拟机(JVM)
? 类加载器的引入被认为是Java语言惟一的重要
  创新
? 类加载器从JDK 1.0就存在了,最初是为了满足
  Applet的需要



                                 3
类加载器的必要性
? Java语言的口号
 – 编写一次,到处运行
 – 分发Java字节代码即可
? Java语言规范保证字节代码的兼容性
? 类加载器负责完成加载
            编译器                类加载器
 Java源代码          Java字节代码
                                      Java虚拟机
  (.java)           (.class)




                                                4
Java类
? Java中的类通过java.lang.Class来表示
? Java中的类加载器通过java.lang.ClassLoader
  来表示
? 类加载器的作用就是从字节代码(byte数组)
  中生成出来java.lang.Class的实例




                                 5
树状组织结构(1/2)
? 类加载器的分类
 – 系统提供
  ? 引导类加载器(bootstrap)
    – 加载Java核心库,原生代码实现
  ? 扩展类加载器(extensions)
    – 加载Java扩展库,在JVM的指定目录查找
  ? 系统类加载器(system)
    – 根据Java应用的类路径(classpath)来加载类
    – 加载Java应用
 – 开发人员提供
  ? 通过继承java.lang.ClassLoader类来实现

                                    6
树状组织结构(2/2)
? 除了引导类加载器之外,所有的类加载器
  都有一个父类加载器
 – 通过getParent()方法可以获得父类加载器
? 通过这样的组织方式,系统中的类加载器
  形成树状结构
? 对于开发人员编写的类加载器,其父类加
  载器是加载这个类加载器的类加载器
 – 注意:类加载器本身也是Java类,也是需要被
   加载的

                              7
8
代理模式
? 类加载器在尝试自己去查找并加载某个类
  之前,会先代理给其父类加载器
 – 父类加载器会进一步代理给其父类加载器
? 只有在父类加载器无法加载的时候,才尝
  试自己加载




                        9
判断类是否相同
? JVM对类是否相同的定义是:
 – 类的全名相同
 – 加载此类的类加载器相同
? 同样的字节代码,被不同的类加载器加载
  之后,所得到的类是不同的!




                       10
代理模式的作用
? 代理模式是为了保护Java核心库的类型安全
? 如果不用代理模式
 – 所有的Java应用都至少需要引用java.lang.Object
 – 如果java.lang.Object由应用自己来加载
   ? JVM中存在多个版本的java.lang.Object类
   ? 它们之间是不兼容的!
? 通过代理模式,Java核心库总是由引导类加
  载器来负责加载

                                    11
初始和定义加载器
? 由于代理模式的存在,启动一个类的加载和最终
  完成这个类的加载的,可能并不是同一个类加载
  器
 – 通过调用loadClass()方法来启动类的加载过程
   ? 初始加载器(initiating loader)
 – 通过调用defineClass()方法来完成类的定义
   ? 定义加载器(defining loader)
   ? 得到java.lang.Class对象
? JVM判断类是否相同的时候使用的是定义加载器
? 一个类的定义加载器是它所引用的其它类的初始
  加载器

                                12
线程上下文类加载器
? 线程上下文类加载器(context class loader)
  是为了解决代理模式的问题而引入的
 – java.lang.Thread提供的getContextLoader()和
   setContextLoader()方法
? Java提供的服务提供者接口(SPI)
 – Java核心库提供接口
   ? JDBC,JCE,JNDI,JAXP,JBI
 – 由第三方来提供实现


                                            13
JAXP示例
? JAXP的接口定义在javax.xml.parsers包中,
  包含在Java核心库中
? Apache Xerces提供了JAXP的实现,出现在类
  路径(classpath)上
? SPI接口的代码需要使用加载具体的实现类

      代理模式无法解决的问题!



                               14
使用线程上下文类加载器
? Java应用运行的初始线程的上下文类加载器
  正是系统类加载器
? SPI代码中通过线程上下文类加载器就可以
  完成加载类路径上具体实现类的工作




                      15
编写自己的类加载器
? 满足特定的加载类的需求
  – 从某个网络位置下载Java字节代码
  – 加密/解密
  – 数字签名
? 继承自java.lang.ClassLoader类




                              16
java.lang.ClassLoader
方法                            说明
loadClass(String name)        加载名称为name的类,返回java.lang.Class

findClass(String name)        查找名称为name的类,返回java.lang.Class
findLoadedClass(String name) 查找名称为name的已经被加载过的类,返回
                             java.lang.Class
defineClass(String name,      把字节代码转换成Java类,返回java.lang.Class
byte[] b, int off, int len)



                自己的类加载器实现一般只需要覆写findClass()即可

                代理模式的实现封装在loadClass()方法中



                                                                17
Web应用中的类加载器
? Web应用中类加载器与一般Java应用不同
? 在Apache Tomcat中
 – 每个Web应用对应自己的类加载器
 – 它会首先尝试加载类,找不到再代理给父类加
   载器
 – 保证Web应用自己的类的优先级高于容器提供
   的类



                          18
处理Web应用依赖的类
? 每个应用自己使用的jar包,放在WEB-
  INF/lib目录下面
? 多个应用共享的jar包,放在Web容器的指
  定目录下




                          19
OSGi
? OSGi是Java的动态模块系统
? OSGi中的每个模块(bundle)可以依赖其它
  模块或是为其它模块所用
 – 导入:通过Import-Package声明
 – 导出:通过Export-Package声明
? 每个模块由自己的类加载器
? 加载Java核心库的时候代理给父类加载器


                           20
模块类加载器的代理模式
? 一个模块的类加载器在加载它所导入的类
  的时候,会代理给导出此类的模块对应的
  类加载器
             代理类加载
    模块A              模块B


   加载                     加载
             继承自
        类A           类B




                               21
处理模块依赖的类
? 模块单独使用的jar包,放在模块中,通过
  Bundle-Classpath声明
? 多个模块共享的jar包,单独创建一个新的
  模块,把其中的Java类声明为导出的,其它
  模块声明导入这些Java类




                      22
隔离与保护
? 不同的类加载器为相同名称的类创建了额
  外的名称空间
? 相同名称的类可以并存在JVM中
 – 保护代码
 – 版本控制




                       23
参考资料
? 闯补惫补类加载器(classloader)深入探讨
 – http://www.ibm.com/developerworks/cn/java/j-
   lo-classloader/index.html
? Java语言规范
 – http://java.sun.com/docs/books/jls/
? OSGi规范
 – http://www.osgi.org/Specifications/HomePage



                                                  24

More Related Content

What's hot (20)

Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Justin Lin
?
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Justin Lin
?
Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論
Justin Lin
?
北京圣思园深入Java虚拟机 class loader
北京圣思园深入Java虚拟机 class loader北京圣思园深入Java虚拟机 class loader
北京圣思园深入Java虚拟机 class loader
Medivh2011
?
Class loader
Class loaderClass loader
Class loader
Medivh2011
?
闯补惫补平台概论
闯补惫补平台概论闯补惫补平台概论
闯补惫补平台概论
Justin Lin
?
前端自动化工具
前端自动化工具前端自动化工具
前端自动化工具
國昭 張
?
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
?
CH1:闯补惫补平台概论
CH1:闯补惫补平台概论CH1:闯补惫补平台概论
CH1:闯补惫补平台概论
Justin Lin
?
Entity Framework實戰
Entity Framework實戰Entity Framework實戰
Entity Framework實戰
國昭 張
?
Entity framework + Linq 介紹
Entity framework + Linq 介紹Entity framework + Linq 介紹
Entity framework + Linq 介紹
Alan Tsai
?
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
?
Redux+react js
Redux+react jsRedux+react js
Redux+react js
國昭 張
?
20170830 2nd sre build and deployment scripting
20170830 2nd sre build and deployment scripting20170830 2nd sre build and deployment scripting
20170830 2nd sre build and deployment scripting
Joshua Tseng
?
RESTful
RESTfulRESTful
RESTful
PingLun Liao
?
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
tka
?
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web framework
Bo-Yi Wu
?
颁贬11:执行绪与并行础笔滨
颁贬11:执行绪与并行础笔滨颁贬11:执行绪与并行础笔滨
颁贬11:执行绪与并行础笔滨
Justin Lin
?
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Justin Lin
?
惭补惫别苍初级培训
惭补惫别苍初级培训惭补惫别苍初级培训
惭补惫别苍初级培训
ytsolar
?
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Justin Lin
?
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Justin Lin
?
Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論
Justin Lin
?
北京圣思园深入Java虚拟机 class loader
北京圣思园深入Java虚拟机 class loader北京圣思园深入Java虚拟机 class loader
北京圣思园深入Java虚拟机 class loader
Medivh2011
?
闯补惫补平台概论
闯补惫补平台概论闯补惫补平台概论
闯补惫补平台概论
Justin Lin
?
前端自动化工具
前端自动化工具前端自动化工具
前端自动化工具
國昭 張
?
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
?
CH1:闯补惫补平台概论
CH1:闯补惫补平台概论CH1:闯补惫补平台概论
CH1:闯补惫补平台概论
Justin Lin
?
Entity Framework實戰
Entity Framework實戰Entity Framework實戰
Entity Framework實戰
國昭 張
?
Entity framework + Linq 介紹
Entity framework + Linq 介紹Entity framework + Linq 介紹
Entity framework + Linq 介紹
Alan Tsai
?
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
?
20170830 2nd sre build and deployment scripting
20170830 2nd sre build and deployment scripting20170830 2nd sre build and deployment scripting
20170830 2nd sre build and deployment scripting
Joshua Tseng
?
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
tka
?
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web framework
Bo-Yi Wu
?
颁贬11:执行绪与并行础笔滨
颁贬11:执行绪与并行础笔滨颁贬11:执行绪与并行础笔滨
颁贬11:执行绪与并行础笔滨
Justin Lin
?
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Justin Lin
?
惭补惫别苍初级培训
惭补惫别苍初级培训惭补惫别苍初级培训
惭补惫别苍初级培训
ytsolar
?

Viewers also liked (20)

Presentcion power pointPresentcion power point
Presentcion power point
dianabenavides93032713775
?
Verdadero o falso (2)Verdadero o falso (2)
Verdadero o falso (2)
pipe8sasan
?
Tutorial BloggerTutorial Blogger
Tutorial Blogger
sonyalorena
?
Metodo de gaussMetodo de gauss
Metodo de gauss
Diego Naranjo
?
Estructuraatmicai 090418200027-phpapp02Estructuraatmicai 090418200027-phpapp02
Estructuraatmicai 090418200027-phpapp02
Lucas Crotti
?
Verdadero o falso (2)Verdadero o falso (2)
Verdadero o falso (2)
pipe8sasan
?
Apresenta??o Dominit 2013Apresenta??o Dominit 2013
Apresenta??o Dominit 2013
Dominit - Solu??es e Processos em TI
?
Tecnologia na escolaTecnologia na escola
Tecnologia na escola
Marineide Ribeiro
?
Despacho organizac3a7c3a3o-ano-letivo-2013 2014Despacho organizac3a7c3a3o-ano-letivo-2013 2014
Despacho organizac3a7c3a3o-ano-letivo-2013 2014
mcelpais
?
Danza del fuego
Danza del fuegoDanza del fuego
Danza del fuego
isaemilio
?
Verdadero o falsoVerdadero o falso
Verdadero o falso
pipe8sasan
?
Cuando la hiervaCuando la hierva
Cuando la hierva
azconfort
?
Prevencao rodoviariaPrevencao rodoviaria
Prevencao rodoviaria
luisamirandacosta
?
础谤驳耻尘别苍迟补肠颈ó苍础谤驳耻尘别苍迟补肠颈ó苍
础谤驳耻尘别苍迟补肠颈ó苍
Marcela Alvera
?
Ppt tema6Ppt tema6
Ppt tema6
ireneunica
?
笔谤别蝉别苍迟补肠颈ó苍1笔谤别蝉别苍迟补肠颈ó苍1
笔谤别蝉别苍迟补肠颈ó苍1
danny211
?
Motiva??oMotiva??o
Motiva??o
maisarraffblogspot.com
?
Project textual sebasProject textual sebas
Project textual sebas
loslaboriosos
?
Por q usar oliveiraPor q usar oliveira
Por q usar oliveira
Oliveira
?
Guia aguaGuia agua
Guia agua
ceramicavg2012
?
Presentcion power pointPresentcion power point
Presentcion power point
dianabenavides93032713775
?
Verdadero o falso (2)Verdadero o falso (2)
Verdadero o falso (2)
pipe8sasan
?
Tutorial BloggerTutorial Blogger
Tutorial Blogger
sonyalorena
?
Metodo de gaussMetodo de gauss
Metodo de gauss
Diego Naranjo
?
Estructuraatmicai 090418200027-phpapp02Estructuraatmicai 090418200027-phpapp02
Estructuraatmicai 090418200027-phpapp02
Lucas Crotti
?
Verdadero o falso (2)Verdadero o falso (2)
Verdadero o falso (2)
pipe8sasan
?
Apresenta??o Dominit 2013Apresenta??o Dominit 2013
Apresenta??o Dominit 2013
Dominit - Solu??es e Processos em TI
?
Tecnologia na escolaTecnologia na escola
Tecnologia na escola
Marineide Ribeiro
?
Despacho organizac3a7c3a3o-ano-letivo-2013 2014Despacho organizac3a7c3a3o-ano-letivo-2013 2014
Despacho organizac3a7c3a3o-ano-letivo-2013 2014
mcelpais
?
Danza del fuego
Danza del fuegoDanza del fuego
Danza del fuego
isaemilio
?
Verdadero o falsoVerdadero o falso
Verdadero o falso
pipe8sasan
?
Cuando la hiervaCuando la hierva
Cuando la hierva
azconfort
?
Prevencao rodoviariaPrevencao rodoviaria
Prevencao rodoviaria
luisamirandacosta
?
础谤驳耻尘别苍迟补肠颈ó苍础谤驳耻尘别苍迟补肠颈ó苍
础谤驳耻尘别苍迟补肠颈ó苍
Marcela Alvera
?
Ppt tema6Ppt tema6
Ppt tema6
ireneunica
?
笔谤别蝉别苍迟补肠颈ó苍1笔谤别蝉别苍迟补肠颈ó苍1
笔谤别蝉别苍迟补肠颈ó苍1
danny211
?
Project textual sebasProject textual sebas
Project textual sebas
loslaboriosos
?
Por q usar oliveiraPor q usar oliveira
Por q usar oliveira
Oliveira
?
Guia aguaGuia agua
Guia agua
ceramicavg2012
?

Similar to 闯补惫补类加载器 (20)

Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
?
颁濒补蝉蝉尝辞补诲别谤简析
颁濒补蝉蝉尝辞补诲别谤简析颁濒补蝉蝉尝辞补诲别谤简析
颁濒补蝉蝉尝辞补诲别谤简析
wavefly
?
2. java introduction
2. java introduction2. java introduction
2. java introduction
netdbncku
?
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletServlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
?
如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala
javatwo2011
?
JVM 初探
JVM 初探JVM 初探
JVM 初探
zyh
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
反射与类别载入器
反射与类别载入器反射与类别载入器
反射与类别载入器
Justin Lin
?
OPM
OPMOPM
OPM
goto100
?
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
建興 王
?
Notes of jcip
Notes of jcipNotes of jcip
Notes of jcip
Dai Jun
?
惭补惫别苍技术分享
惭补惫别苍技术分享惭补惫别苍技术分享
惭补惫别苍技术分享
wslfh2005
?
专案啟动与环境设定
专案啟动与环境设定专案啟动与环境设定
专案啟动与环境设定
Shengyou Fan
?
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
?
Jdk5
Jdk5Jdk5
Jdk5
Medivh2011
?
Ant
AntAnt
Ant
Medivh2011
?
惭补惫别苍初级培训
惭补惫别苍初级培训惭补惫别苍初级培训
惭补惫别苍初级培训
Cody Zhang
?
闯痴惭内容管理和垃圾回收
闯痴惭内容管理和垃圾回收闯痴惭内容管理和垃圾回收
闯痴惭内容管理和垃圾回收
Tony Deng
?
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
?
webpack 入門
webpack 入門webpack 入門
webpack 入門
Anna Su
?
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
?
颁濒补蝉蝉尝辞补诲别谤简析
颁濒补蝉蝉尝辞补诲别谤简析颁濒补蝉蝉尝辞补诲别谤简析
颁濒补蝉蝉尝辞补诲别谤简析
wavefly
?
2. java introduction
2. java introduction2. java introduction
2. java introduction
netdbncku
?
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletServlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
?
如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala
javatwo2011
?
JVM 初探
JVM 初探JVM 初探
JVM 初探
zyh
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
反射与类别载入器
反射与类别载入器反射与类别载入器
反射与类别载入器
Justin Lin
?
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
建興 王
?
Notes of jcip
Notes of jcipNotes of jcip
Notes of jcip
Dai Jun
?
惭补惫别苍技术分享
惭补惫别苍技术分享惭补惫别苍技术分享
惭补惫别苍技术分享
wslfh2005
?
专案啟动与环境设定
专案啟动与环境设定专案啟动与环境设定
专案啟动与环境设定
Shengyou Fan
?
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
?
惭补惫别苍初级培训
惭补惫别苍初级培训惭补惫别苍初级培训
惭补惫别苍初级培训
Cody Zhang
?
闯痴惭内容管理和垃圾回收
闯痴惭内容管理和垃圾回收闯痴惭内容管理和垃圾回收
闯痴惭内容管理和垃圾回收
Tony Deng
?
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
?
webpack 入門
webpack 入門webpack 入門
webpack 入門
Anna Su
?

More from Fu Cheng (6)

Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
Fu Cheng
?
The Evolution of Java
The Evolution of JavaThe Evolution of Java
The Evolution of Java
Fu Cheng
?
Java SE 7 New Features and Enhancements
Java SE 7 New Features and EnhancementsJava SE 7 New Features and Enhancements
Java SE 7 New Features and Enhancements
Fu Cheng
?
Advanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojoAdvanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojo
Fu Cheng
?
础箩补虫应用开发最佳实践
础箩补虫应用开发最佳实践础箩补虫应用开发最佳实践
础箩补虫应用开发最佳实践
Fu Cheng
?
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
Fu Cheng
?
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
Fu Cheng
?
The Evolution of Java
The Evolution of JavaThe Evolution of Java
The Evolution of Java
Fu Cheng
?
Java SE 7 New Features and Enhancements
Java SE 7 New Features and EnhancementsJava SE 7 New Features and Enhancements
Java SE 7 New Features and Enhancements
Fu Cheng
?
Advanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojoAdvanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojo
Fu Cheng
?
础箩补虫应用开发最佳实践
础箩补虫应用开发最佳实践础箩补虫应用开发最佳实践
础箩补虫应用开发最佳实践
Fu Cheng
?
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
Fu Cheng
?

闯补惫补类加载器