<kbd id="fugzo"></kbd>
<pre id="fugzo"></pre>
    1. <fieldset id="fugzo"><style id="fugzo"></style></fieldset>
      <center id="fugzo"></center>
    2. 哑剧盖章,电视剧折腰免费观看全集,亮剑3gp下载,秘密访客,泰剧为你着迷,古城童话,食物链无删减,大鱼海棠

      Java ClassLoader原理深入講解

      時間:2024-10-19 00:14:48 JAVA認證

      Java ClassLoader原理深入講解

        JAVA啟動后,是經(jīng)過JVM各級ClassLoader來加載各個類到內存。為了更加了解加載過程,下面為大家深入講解Java ClassLoader原理,僅供參考!

        當JVM(Java虛擬機)啟動時,會形成由三個類加載器組成的初始類加載器層次結構:

        bootstrap classloader

        |

        extension classloader

        |

        system classloader

        bootstrap classloader -引導(也稱為原始)類加載器,它負責加載Java的核心類。在Sun的JVM中,在執(zhí)行java的命令中使用-Xbootclasspath選項或使用 - D選項指定sun.boot.class.path系統(tǒng)屬性值可以指定附加的類。這個加載器的是非常特殊的,它實際上不是 java.lang.ClassLoader的子類,而是由JVM自身實現(xiàn)的。大家可以通過執(zhí)行以下代碼來獲得bootstrap classloader加載了那些核心類庫:

        URL[] urls=sun.misc.Launcher.getBootstrapClassPath().getURLs();

        for (int i = 0; i < urls.length; i++) {

        System.out.println(urls.toExternalform());

        }

        在我的計算機上的結果為:

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/dom.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/sax.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xalan-2.3.1.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xercesImpl-2.0.0.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xml-apis.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xsltc.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/rt.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/i18n.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/sunrsasign.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/jsse.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/jce.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/charsets.jar

        文件:/C:/j2sdk1.4.1_01/jre/classes

        這時大家知道了為什么我們不需要在系統(tǒng)屬性CLASSPATH中指定這些類庫了吧,因為JVM在啟動的時候就自動加載它們了。

        extension classloader -擴展類加載器,它負責加載JRE的擴展目錄(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系統(tǒng)屬性指定的)中JAR的 類包。這為引入除Java核心類以外的新功能提供了一個標準機制。因為默認的擴展目錄對所有從同一個JRE中啟動的JVM都是通用的,所以放入這個目錄的 JAR類包對所有的JVM和system classloader都是可見的。在這個實例上調用方法getParent()總是返回空值null,因為引導加載器bootstrap classloader不是一個真正的ClassLoader實例。所以當大家執(zhí)行以下代碼時:

        System.out.println(System.getProperty("java.ext.dirs"));

        ClassLoader extensionClassloader=ClassLoader.getSystemClassLoader().getParent();

        System.out.println("the parent of extension classloader : "+extensionClassloader.getParent());

        結果為:

        C:/j2sdk1.4.1_01/jre/lib/ext

        the parent of extension classloader : null

        extension classloader是system classloader的parent,而bootstrap classloader是extension classloader的parent,但它不是一個實際的classloader,所以為null。

        system classloader -系統(tǒng)(也稱為應用)類加載器,它負責在JVM被啟動時,加載來自在命令java中的-classpath或者java.class.path系統(tǒng)屬性或 者 CLASSPATH操作系統(tǒng)屬性所指定的JAR類包和類路徑。總能通過靜態(tài)方法ClassLoader.getSystemClassLoader()找 到該類加載器。如果沒有特別指定,則用戶自定義的任何類加載器都將該類加載器作為它的父加載器。執(zhí)行以下代碼即可獲得:

        System.out.println(System.getProperty("java.class.path"));

        輸出結果則為用戶在系統(tǒng)屬性里面設置的CLASSPATH。

        classloader 加載類用的是全盤負責委托機制。所謂全盤負責,即是當一個classloader加載一個Class的時候,這個Class所依賴的和引用的所有 Class也由這個classloader負責載入,除非是顯式的使用另外一個classloader載入;委托機制則是先讓parent(父)類加載器 (而不是super,它與parent classloader類不是繼承關系)尋找,只有在parent找不到的時候才從自己的類路徑中去尋找。此外類加載還采用了cache機制,也就是如果 cache中保存了這個Class就直接返回它,如果沒有才從文件中讀取和轉換成Class,并存入cache,這就是為什么我們修改了Class但是必 須重新啟動JVM才能生效的原因。

        每個ClassLoader加載Class的過程是:

        1.檢測此Class是否載入過(即在cache中是否有此Class),如果有到8,如果沒有到2

        2.如果parent classloader不存在(沒有parent,那parent一定是bootstrap classloader了),到4

        3.請求parent classloader載入,如果成功到8,不成功到5

        4.請求jvm從bootstrap classloader中載入,如果成功到8

        5.尋找Class文件(從與此classloader相關的類路徑中尋找)。如果找不到則到7.

        6.從文件中載入Class,到8.

        7.拋出ClassNotFoundException.

        8.返回Class.

        其中5.6步我們可以通過覆蓋ClassLoader的findClass方法來實現(xiàn)自己的載入策略。甚至覆蓋loadClass方法來實現(xiàn)自己的載入過程。

        類加載器的順序是:

        先 是bootstrap classloader,然后是extension classloader,最后才是system classloader。大家會發(fā)現(xiàn)加載的Class越是重要的越在靠前面。這樣做的原因是出于安全性的考慮,試想如果system classloader“親自”加載了一個具有破壞性的“java.lang.System”類的后果吧。這種委托機制保證了用戶即使具有一個這樣的類, 也把它加入到了類路徑中,但是它永遠不會被載入,因為這個類總是由bootstrap classloader來加載的。大家可以執(zhí)行一下以下的代碼:

        System.out.println(System.class.getClassLoader());

        將會看到結果是null,這就表明java.lang.System是由bootstrap classloader加載的,因為bootstrap classloader不是一個真正的ClassLoader實例,而是由JVM實現(xiàn)的,正如前面已經(jīng)說過的。

        下面就讓我們來看看JVM是如何來為我們來建立類加載器的結構的:

        sun.misc.Launcher,顧名思義,當你執(zhí)行java命令的時候,JVM會先使用bootstrap classloader載入并初始化一個Launcher,執(zhí)行下來代碼:

        System.out.println("the Launcher's classloader is "+sun.misc.Launcher.getLauncher().getClass().getClassLoader());

        結果為:

        the Launcher's classloader is null (因為是用bootstrap classloader加載,所以class loader為null)

        Launcher 會根據(jù)系統(tǒng)和命令設定初始化好class loader結構,JVM就用它來獲得extension classloader和system classloader,并載入所有的需要載入的Class,最后執(zhí)行java命令指定的帶有靜態(tài)的main方法的Class。extension classloader實際上是sun.misc.Launcher$ExtClassLoader類的一個實例,system classloader實際上是sun.misc.Launcher$AppClassLoader類的一個實例。并且都是 java.net.URLClassLoader的子類。

        讓我們來看看Launcher初試化的過程的部分代碼。

        Launcher的部分代碼:

        public class Launcher {

        public Launcher() {

        ExtClassLoader extclassloader;

        try {

        //初始化extension classloader

        extclassloader = ExtClassLoader.getExtClassLoader();

        } catch(IOException ioexception) {

        throw new InternalError("Could not create extension class loader");

        }

        try {

        //初始化system classloader,parent是extension classloader

        loader = AppClassLoader.getAppClassLoader(extclassloader);

        } catch(IOException ioexception1) {

        throw new InternalError("Could not create application class loader");

        }

        //將system classloader設置成當前線程的context classloader(將在后面加以介紹)

        Thread.currentThread().setContextClassLoader(loader);

        ......

        }

        public ClassLoader getClassLoader() {

        //返回system classloader

        return loader;

        }

        }

        extension classloader的部分代碼:

        static class Launcher$ExtClassLoader extends URLClassLoader {

        public static Launcher$ExtClassLoader getExtClassLoader()

        throws IOException

        {

        File afile[] = getExtDirs();

        return (Launcher$ExtClassLoader)AccessController.doPrivileged(new Launcher$1(afile));

        }

        private static File[] getExtDirs() {

        //獲得系統(tǒng)屬性“java.ext.dirs”

        String s = System.getProperty("java.ext.dirs");

        File afile[];

        if(s != null) {

        StringTokenizer stringtokenizer = new StringTokenizer(s, File.pathSeparator);

        int i = stringtokenizer.countTokens();

        afile = new File;

        for(int j = 0; j < i; j++)

        afile[j] = new File(stringtokenizer.nextToken());

        } else {

        afile = new File[0];

        }

        return afile;

        }

        }

        system classloader的部分代碼:

        static class Launcher$AppClassLoader extends URLClassLoader

        {

        public static ClassLoader getAppClassLoader(ClassLoader classloader)

        throws IOException

        {

        //獲得系統(tǒng)屬性“java.class.path”

        String s = System.getProperty("java.class.path");

        File afile[] = s != null ? Launcher.access$200(s) : new File[0];

        return (Launcher$AppClassLoader)AccessController.doPrivileged(new Launcher$2(s, afile, classloader));

        }

        }

        看 了源代碼大家就清楚了吧,extension classloader是使用系統(tǒng)屬性“java.ext.dirs”設置類搜索路徑的,并且沒有parent。system classloader是使用系統(tǒng)屬性“java.class.path”設置類搜索路徑的,并且有一個parent classloader。Launcher初始化extension classloader,system classloader,并將system classloader設置成為context classloader,但是僅僅返回system classloader給JVM。

        這里怎么又出來一個context classloader呢?它有什么用呢?我們在建立一個線程Thread的時候,可以為這個線程通過setContextClassLoader方法來 指定一個合適的classloader作為這個線程的context classloader,當此線程運行的時候,我們可以通過getContextClassLoader方法來獲得此context classloader,就可以用它來載入我們所需要的Class。默認的是system classloader。利用這個特性,我們可以“打破”classloader委托機制了,父classloader可以獲得當前線程的context classloader,而這個context classloader可以是它的子classloader或者其他的classloader,那么父classloader就可以從其獲得所需的 Class,這就打破了只能向父classloader請求的限制了。這個機制可以滿足當我們的classpath是在運行時才確定,并由定制的 classloader加載的時候,由system classloader(即在jvm classpath中)加載的class可以通過context classloader獲得定制的classloader并加載入特定的class(通常是抽象類和接口,定制的classloader中是其實現(xiàn)),例 如web應用中的servlet就是用這種機制加載的.

        好了,現(xiàn)在我們了解了classloader的結構和工作原理,那么我們 如何實現(xiàn)在運行時的動態(tài)載入和更新呢?只要我們能夠動態(tài)改變類搜索路徑和清除classloader的cache中已經(jīng)載入的Class就行了,有兩個方 案,一是我們繼承一個classloader,覆蓋loadclass方法,動態(tài)的尋找Class文件并使用defineClass方法來;另一個則非常 簡單實用,只要重新使用一個新的類搜索路徑來new一個classloader就行了,這樣即更新了類搜索路徑以便來載入新的Class,也重新生成了一 個空白的cache(當然,類搜索路徑不一定必須更改)。噢,太好了,我們幾乎不用做什么工作,java.netURLClassLoader正是一個符 合我們要求的classloader!我們可以直接使用或者繼承它就可以了!

        這是j2se1.4 API的doc中URLClassLoader的兩個構造器的描述:

        URLClassLoader(URL[] urls)

        Constructs a new URLClassLoader for the specified URLs using the default delegation parent ClassLoader.

        URLClassLoader(URL[] urls, ClassLoader parent)

        Constructs a new URLClassLoader for the given URLs.

        其中URL[] urls就是我們要設置的類搜索路徑,parent就是這個classloader的parent classloader,默認的是system classloader。

        好,現(xiàn)在我們能夠動態(tài)的載入Class了,這樣我們就可以利用newInstance方法來獲得一個Object。但我們如何將此Object造型呢?可以將此Object造型成它本身的Class嗎?

        首先讓我們來分析一下java源文件的編譯,運行吧!javac命令是調用“JAVA_HOME/lib/tools.jar”中的“com.sun.tools.javac.Main”的compile方法來編譯:

        public static int compile(String as[]);

        public static int compile(String as[], PrintWriter printwriter);

        返回0表示編譯成功,字符串數(shù)組as則是我們用javac命令編譯時的參數(shù),以空格劃分。例如:

        javac -classpath c:/foo/bar.jar;. -d c:/ c:/Some.java

        則 字符串數(shù)組as為{"-classpath","c://foo//bar.jar;.","-d","c://","c://Some.java"}, 如果帶有PrintWriter參數(shù),則會把編譯信息出到這個指定的printWriter中。默認的輸出是System.err。

        其中 Main是由JVM使用Launcher初始化的system classloader載入的,根據(jù)全盤負責原則,編譯器在解析這個java源文件時所發(fā)現(xiàn)的它所依賴和引用的所有Class也將由system classloader載入,如果system classloader不能載入某個Class時,編譯器將拋出一個“cannot resolve symbol”錯誤。

        所以首先編譯就通不過,也就是編譯器無法編譯一個引用了不在CLASSPATH中的未知Class的java源文件,而由于拼寫錯誤或者沒有把所需類庫放到CLASSPATH中,大家一定經(jīng)常看到這個“cannot resolve symbol”這個編譯錯誤吧!

        其 次,就是我們把這個Class放到編譯路徑中,成功的進行了編譯,然后在運行的時候不把它放入到CLASSPATH中而利用我們自己的 classloader來動態(tài)載入這個Class,這時候也會出現(xiàn)“java.lang.NoClassDefFoundError”的違例,為什么呢?

        我 們再來分析一下,首先調用這個造型語句的可執(zhí)行的Class一定是由JVM使用Launcher初始化的system classloader載入的,根據(jù)全盤負責原則,當我們進行造型的時候,JVM也會使用system classloader來嘗試載入這個Class來對實例進行造型,自然在system classloader尋找不到這個Class時就會拋出“java.lang.NoClassDefFoundError”的違例。

        OK, 現(xiàn)在讓我們來總結一下,java文件的編譯和Class的載入執(zhí)行,都是使用Launcher初始化的system classloader作為類載入器的,我們無法動態(tài)的改變system classloader,更無法讓JVM使用我們自己的classloader來替換system classloader,根據(jù)全盤負責原則,就限制了編譯和運行時,我們無法直接顯式的使用一個system classloader尋找不到的Class,即我們只能使用Java核心類庫,擴展類庫和CLASSPATH中的類庫中的Class。

        還 不死心!再嘗試一下這種情況,我們把這個Class也放入到CLASSPATH中,讓system classloader能夠識別和載入。然后我們通過自己的classloader來從指定的class文件中載入這個Class(不能夠委托 parent載入,因為這樣會被system classloader從CLASSPATH中將其載入),然后實例化一個Object,并造型成這個Class,這樣JVM也識別這個Class(因為 system classloader能夠定位和載入這個Class從CLASSPATH中),載入的也不是CLASSPATH中的這個Class,而是從 CLASSPATH外動態(tài)載入的,這樣總行了吧!十分不幸的是,這時會出現(xiàn)“java.lang.ClassCastException”違例。

        為 什么呢?我們也來分析一下,不錯,我們雖然從CLASSPATH外使用我們自己的classloader動態(tài)載入了這個Class,但將它的實例造型的時 候是JVM會使用system classloader來再次載入這個Class,并嘗試將使用我們的自己的classloader載入的Class的一個實例造型為system classloader載入的這個Class(另外的一個)。大家發(fā)現(xiàn)什么問題了嗎?也就是我們嘗試將從一個classloader載入的Class的一 個實例造型為另外一個classloader載入的Class,雖然這兩個Class的名字一樣,甚至是從同一個class文件中載入。但不幸的是JVM 卻認為這個兩個Class是不同的,即JVM認為不同的classloader載入的相同的名字的Class(即使是從同一個class文件中載入的)是 不同的!這樣做的原因我想大概也是主要出于安全性考慮,這樣就保證所有的核心Java類都是system classloader載入的,我們無法用自己的classloader載入的相同名字的Class的實例來替換它們的實例。

        看到這里,聰明的讀者一定想到了該如何動態(tài)載入我們的Class,實例化,造型并調用了吧!

        那 就是利用面向對象的基本特性之一的多形性。我們把我們動態(tài)載入的Class的實例造型成它的一個system classloader所能識別的父類就行了!這是為什么呢?我們還是要再來分析一次。當我們用我們自己的classloader來動態(tài)載入這我們只要把 這個Class的時候,發(fā)現(xiàn)它有一個父類Class,在載入它之前JVM先會載入這個父類Class,這個父類Class是system classloader所能識別的,根據(jù)委托機制,它將由system classloader載入,然后我們的classloader再載入這個Class,創(chuàng)建一個實例,造型為這個父類Class,注意了,造型成這個父類 Class的時候(也就是上溯)是面向對象的java語言所允許的并且JVM也支持的,JVM就使用system classloader再次載入這個父類Class,然后將此實例造型為這個父類Class。大家可以從這個過程發(fā)現(xiàn)這個父類Class都是由 system classloader載入的,也就是同一個class loader載入的同一個Class,所以造型的時候不會出現(xiàn)任何異常。而根據(jù)多形性,調用這個父類的方法時,真正執(zhí)行的是這個Class(非父類 Class)的覆蓋了父類方法的方法。這些方法中也可以引用system classloader不能識別的Class,因為根據(jù)全盤負責原則,只要載入這個Class的classloader即我們自己定義的 classloader能夠定位和載入這些Class就行了。

        這樣我們就可以事先定義好一組接口或者基類并放入CLASSPATH中,然 后在執(zhí)行的時候動態(tài)的載入實現(xiàn)或者繼承了這些接口或基類的子類。還不明白嗎?讓我們來想一想Servlet吧,web application server能夠載入任何繼承了Servlet的Class并正確的執(zhí)行它們,不管它實際的Class是什么,就是都把它們實例化成為一個Servlet Class,然后執(zhí)行Servlet的init,doPost,doGet和destroy等方法的,而不管這個Servlet是從web- inf/lib和web-inf/classes下由system classloader的子classloader(即定制的classloader)動態(tài)載入。說了這么多希望大家都明白了。在applet,ejb等 容器中,都是采用了這種機制.

        對于以上各種情況,希望大家實際編寫一些example來實驗一下。

        最后我再說點別的, classloader雖然稱為類加載器,但并不意味著只能用來加載Class,我們還可以利用它也獲得圖片,音頻文件等資源的URL,當然,這些資源必 須在CLASSPATH中的jar類庫中或目錄下。我們來看API的doc中關于ClassLoader的兩個尋找資源和Class的方法描述吧:

        public URL getResource(String name)

        用指定的名字來查找資源,一個資源是一些能夠被class代碼訪問的在某種程度上依賴于代碼位置的數(shù)據(jù)(圖片,音頻,文本等等)。

        一個資源的名字是以'/'號分隔確定資源的路徑名的。

        這個方法將先請求parent classloader搜索資源,如果沒有parent,則會在內置在虛擬機中的classloader(即bootstrap classloader)的路徑中搜索。如果失敗,這個方法將調用findResource(String)來尋找資源。

        public static URL getSystemResource(String name)

        從用來載入類的搜索路徑中查找一個指定名字的資源。這個方法使用system class loader來定位資源。即相當于ClassLoader.getSystemClassLoader().getResource(name)。

        例如:

        System.out.println(ClassLoader.getSystemResource("java/lang/String.class"));

        的結果為:

        jar:文件:/C:/j2sdk1.4.1_01/jre/lib/rt.jar!/java/lang/String.class

        表明String.class文件在rt.jar的java/lang目錄中。

        因此我們可以將圖片等資源隨同Class一同打包到jar類庫中(當然,也可單獨打包這些資源)并添加它們到class loader的搜索路徑中,我們就可以無需關心這些資源的具體位置,讓class loader來幫我們尋找了!

      【Java ClassLoader原理深入講解】相關文章:

      Java ClassLoader原理詳細分析201603-04

      2016最新java classloader詳解03-04

      小升初奧數(shù)知識講解之抽屜原理01-28

      揮桿原理03-23

      導游講解技巧04-08

      office知識講解03-18

      素描知識講解01-10

      JavaScript的課堂講解03-31

      學習Java的技巧03-05

      主站蜘蛛池模板: 男孩爱上已婚妇女是哪部电影| 大学生4第一季| 看电影免费观看完整版| 新金瓶梅第2部| 我的战争| 落魄贵族琉璃川在线观看动漫免费 | 水电工的艳遇1日本电影| 二战中的指挥官| 牙医郝板栗完整版电视剧在线观看 | 劳拉失忆症1997免费版| 感觉我的爱| 花与蛇在线看| 乡6全集| 我的40岁大胸继拇| 航天员蔡旭哲首次出舱:感觉良好| 猫和老鼠全集东北方言版| 金牌销售秘密5HD| 消失的十一层| 荒野女战士2满天星版| 小猪佩奇的动画片| 赛伦《渔夫的妻子》| 豺狼计划下载| 明日战记在线观看| 高庄监狱在线观看网址| 美女拳击赛| 文轩3800汤臣一品探花| 屠宰呕吐娃娃视频完整版免费观看| 误杀原版| 包青天孝子章洛| 战狼六欧式少女全部剧情| 婚姻时差电视剧全集| 九七电影网| 六神合体| 江湖儿女豆瓣| 意大利渔夫的妻子| 韩剧《不屈的儿媳》国语版| 裸体监狱女子监狱| 秦雪梅哭灵| 林一的未来全集免费观看动漫| 《爱情有烟火》免费观看| 商务旅行戴帽子的老板同行百度云| 无人区电影高清免费| 电影需要爸爸播种在线观看美国| 王曼昱对张本美和的比赛| 古装三级| 公与3个媳HD免费| 松岛葵超级兴奋朋友的| 黑帮大佬我和我的365第二部| 野花日本免费高清7| 爱上女主播分集介绍| 鬼吹灯之精绝古城在线| 三年在线观看免费高清正版| 纸醉金迷电视剧下载| 未来妈妈电视剧免费观看全集高清| 双女任务电影在线观看| 威尔和格蕾丝第三季| 高清《好好的时光》电视剧| 韩国电影和部长出差| 女子拒绝同事表白后遭辱骂| 高清《年轻的女教师》电影| 台球高手电影满天星在线观看| 国家公诉电视剧| 《女朋友的真实容貌》动漫1~2集| 瓜达卢佩的玫瑰HD版在哪里可以看 | 《最高的爱人诏》三上解说| 我被在教室强了好爽在线观看| 又见逍遥电视剧免费观看| 回复术士真人视频| 高清《调教女仆》电影 | 瓜达卢佩的玫瑰HD版在哪里可以看| 蓝色生死恋国语版全集免费观看 | 销售的销售秘密3HD中字| 西环浮尸| 连续剧樱桃| 帝皇侠大电影| 阳光之下在线观看| 恐怖片大全恐怖片免费完整版| 怪兽娘奥特怪兽拟人化计划| 侏罗纪世界重生| 塞罗奥特曼电影版| 结婚进行曲| 小call 宅之小恶魔| 鬼父在线观看无删减1-16| 天下第一楼全集免费播放在线观看| 花青歌电视剧在线观看免费| 人猿泰山hr版1995在线观看| 当邪恶潜伏时| 如东县| 需要爸爸播种籽2中文版免费观看 《和讨厌的社长出差旅》大结局短发 | 泰迪熊之玩具大战 电影| 美版非诚勿扰| 芈月传1至81全集免费观看| 不当军事行为2017完整版| 火影剧场版4| 从后面挺进护士体内| 日本电影漂亮的售楼小姐| 免费理论韩国片在线观看新妈妈| 在线观看电视剧| 50岁大胸继拇5电影| 绝世战魂免费观看完整版动漫| 需要一半留下一半打一字谜| 坎贝奇电影在线观看| 高清黄泉的使者未删减| 再见琼电影| 生死决断秋瓷炫完整版未删减 | 圣天门口在线观看| 女人魂免费观看| 19岁大学生免费观看电视剧美国| 魔术电影| 陷阱电影高清完整| 三位大学位按摩记| 山河明月全集在线播放| 王牌对王牌第二季| 战狼9欧美版免费观看完整版国语电影 | 疯狂动物城衍生剧| 你总有爱我的一天| 《美丽妻子替丈夫还| 军嫂逆袭:致富养娃两不误全集免费| 美国丽人剧情| 包青天之开封奇案第40集免费观看| 金银瓶1—5普哺乳期| 两个女人 qvod| 恋空在线观看| 第一次4中国国语| 最美时光电视剧| 二胡独奏曲赛马| 德田重男的电影播放| 赶尸谭艳| 胡歌推着游本昌走红毯| 超级飞侠第十五季| 恶作剧之吻 电影| 电影《戴恩的爱情故事》免费播放| 美人心计35集| 情事2014在线未删减版资源| 女人的战争之女人的理由| 蓝色档案| 富蕴县| 三国演义全集在线观看| 欢乐喜剧人下载| 崇阳县| 明星脸测试| 51vv视频社区福| 知否知否应是绿肥红瘦主题曲| 白雪公主白雪姬| 现在我们相爱吗| 我的老婆是大佬3高清| 天龙特攻队国语| 最终幻想15王者之剑| 杰西简壮志凌云免费观看影视大全| 拿破仑电影| 《再次人生》电视剧| 四平青年之风云再起| 老板的漂亮女儿| 数学皇冠上的明珠| 开心姐姐在美国| 天休营第一季| 波多野结全集| 外之国的少女49| 讲的笔顺| 张韶涵易天边回忆杀暴击| 刀郎演唱会首站成都| 冷风暴电视剧| 高清《柔情挚我》电影| 糙汉文11H婚孕| 免费观看高清在线播放| 《赘婿》| 法国粉红萝卜| 终末的女武神第二季观看| 动漫《高柳家》1~6| 人生若只如初见解释| 原千岁电影全集在线观看| 《禁忌:家庭秘密》在线观看| 钟汉良李小冉吻戏| 裂缝百度影音| 筐出未来| 妈妈爱上儿子同学1~2集| 郑少秋个人资料简介| 美国电影《荒岛女儿国》在线观看 | 夺粮剿匪记全集| 《黄色仓库》| 电视剧热播剧大全| 小姑娘1中汉字| 微笑挑战| 布隆家族| 三姐妹瑜伽健身电影| 薄冰电视剧全集免费观看完整版| 女房东的滋味| 七根心全集在线播放免费| 和讨厌的前任一起去差旅| 女人生殖下面欣赏SAWW性| 神兽金刚全集| 在线观看蜜桃17| 独身向前| 《越南暴行2》在线观看| 破处影院| 家事如天电视剧| 巜健身房激情HD中字三个教练| 做我的主人第一季免费看| 《初恋时间》1-6全集免费| 逆天修仙飒爆:废柴嫡女短剧全集| 笑功震武林 电影| 喝女王的圣水| 禁止性爱2| 女战狼6免费观看在线播放高清| 肖恩康纳莱| 俄罗斯美女学校泳池派对| 夫妻免费看大片真人电视剧| 上阳赋电视连续剧| 张国强电影| 金瓶双艳完整版| 金银悔1—5hd普通话 | 《执行秘书》2009| 秘密花园ost| 《新上任的秘书》人物介绍| 卿本佳人 在线| 皇家奶娘在线观看,美丽的姑娘观看在| 无人区在线完整免费| 暖暖 在线 观看 免费 高清| 灵域电视剧在线观看完整版免费| 羽生稀IPZ376在线播放观看 | 修真界帝尊短剧全集免费观看| 老阿姨才是最有V味的直播| 《年轻的女教师3》4| runningman全集在线播放| 《法国空乘5》免费观看| 皇后进宫电视剧| 369你懂的电影永久入口| 巨乳学院漫画| 爱我几何无删减全集免费看| 绝世龙尊短剧免费看| 哇嘎哇嘎高清在线观看| 三分野电视剧西瓜免费观看全集| 空中堡垒| 进击的巨人第二季第三集| 致命弯道5完整版在线观看视频| 锵锵锵锵锵锵锵免费观看完整版大全| 婚姻保卫战1| 大头儿子和小头爸爸第一部 | 女超人法国电影完整在线观看| 我爱上朋友的姐姐韩剧| 《奔跑吧兄弟》第四季| 法国版《女超人:麦乐迪》| 韩国片交换温柔| 清宫性史之名妓风流| 电影深海| 诱人的老师4| 仙尊宠妃:三界横着走短剧全集| 极速影视三个女人精油按摩 | 星动烟火| 私人女子监狱视频中文字幕版| 梦中犯人| 艾莉拉特满天星七个男子汉| 欢天喜地七公主| 拥抱未来的你| lovefou| 哈利波特1—8免费观看| 逗逗迪迪| 我算卦超准:算命小神仙短剧全集| 全红婵今日10米决赛直播| 富婆夜生活| 返老还童的电影| 银魂212| 电视剧猎狼十二钗| 爱情公寓43| 沧元图动漫免费全集| 暴躁少女的全集| 风俗校园祭动漫在线观看全集| 凶宅处理专员在线全集观看| 偶然与想象| 哇嘎免费影院大全| 银魂电影| 野兽们的战争完整版免费在线观看| 房东3| 冷月孤星剑电视剧| 怡红院在线 视频免费| 不能错过你电影免费观看| 《空中小姐》凯登克罗斯在第几集 | 成全免费观看高清电影大侦探| 风水之王:改命转运第一人全集免费| 心跳源计划在线观看| 古装连续剧| 《女超人满天星版》免费观看| 孤注一掷2023电影完整| 杨幂被挠脚心| 电影三人一次性体检| 我和我的家乡免费观看高清 | 姐妹3免费韩剧| 刚结婚陪部长出差的日剧免费观看第一季| 农民伯伯2中字新版本更新内容| 仙逆第二季在线播放| 群演逆袭全集免费| 全能奶爸不好惹100集全| 新菜主演的全部电影| 盛唐风流完整免费观看| 外出电影2| 《黑白潜行》在线观看| 诱人的小峓子BD中文电影| 新闻女王粤语免费观看| xl真人版| 李连杰电影全集高清| 男童眼里捉6条活虫| 邪恶帝国的兴起| 日韩大片电视剧在线哇嘎| 点燃我温暖你电视剧在线| 阿宾和房东太太视频| 天眼tvb| 17岁完整版高清免费播放| 爱情公寓第3季| 《华胥引》| 美丽小蜜蜂3美丽人生| 喜羊羊与灰太狼4| 夜半梳头电影在线完整版| 弹珠汽水猴子| 一锤定音鉴宝节目| 人猿泰山1995版迅雷 | 兴仁县| 五十度灰高清完整版电影| 十七·3电影高清免费播放| 阿加莎·克里斯蒂之七面钟电视剧| 法医嫡女短剧全集| 村上沙兽皇电影在线观| 好好的时光电视剧| 回复术士的重来人生在线观看免费| 持续侵犯高傲女教师| 女人如花在线观看完整版| 时空悍将| 我比破军帅| 赤警威龙在线观看| 性8地址| yellow视频在线观看免费高清无吗| 宰相刘罗锅40集在线观看| 电影蜜糖| 一闪一闪亮晶晶电视剧免费观看| 千金丫鬟电视剧在线观看完整版| 《黑暗森林》满天星| 青春梦工场粤语| 《极乐宝鉴》在线观看| 劳拉迷宫1997免费观看| 变异巨蟒在线播放| 花与蛇2电影全集免费播放| 小欢喜电视剧1-50集免费观看| 新潘金莲高清完整版| 《医生特殊的治疗》5 | 爸爸要播种电影完整版免费观看 | 法国空姐2009在线看整板 | 《私人航空》法国电影2019| 老师·好电影在线观看| 麦西来甫| 易建联29分| 淫妖虫在线| 美国式保罗4原版| 《卿卿我心》叶玉卿免费观看| 精武陈真全集| 大江大河3全48集免费播放| 愤怒的黄牛韩剧电影| 天才枪手 资源| 非诚勿扰20100620| 战狼6免费高清999加拿大版在线观看| 起飞英文| 酒井法子空蝉之森原版| 别对我说谎 电视剧| 女士邀请函电影| 我的青梅竹马是消防员樱花动漫| 芬芳喜事电视剧免费观看全集| 埃及艳后 电影国语| 刘倩楠微博| 皇家奶娘视频大全| 爱人欲望| 高清《中国机长》免费播放| 黄绮珊春晚2024难忘今宵| 《overflower》| 王保长歪传高清| 双人调情按摩术在线观看| 怒火街头2国语下载| 泰剧电视剧免费观看高清| 变节之潜罪犯下载| 末代御医粤语| 美容院特殊待遇在线观看电影 | 不可思议的晴朗24集免费观看| 永远忠诚| 南海归墟| 山城棒棒军1| 凤隐电视剧免费观看完整版 | 下水道的美人鱼百度影音| 越王勾践全集| 战狼六欧式少女全部剧情| 我们结婚了2010全集| 残酷的温柔 彭佳慧| 电影《私人女性监狱》HD在线观看,高清完整版美国伦理片,伦理_OK电影天堂 | 对手多少集| 《法国女狱警》完整版| 《卿卿我心》电视剧免费观看| 温柔的背后全集| 1对3电影| 电锯魔术失误| 甘孜县| 微电影《莫陌2》在线观看| 玩偶姐姐陪玩第四部片尾BGM| 由良千岁在线观看电视剧| 高清《朋友的妻子》5| 28天后百度影音| 诱惑维修工| 东成西就2011百度影音| 高清《黑狱断肠歌之砌生猪肉》| 在线观看日本电影《和讨厌的部长出差旅》| 大蛇王电影| 杜拉拉之似水年华下载| 渔夫的老婆赛仑免费观看| 山河令36集全集免费播放| 燃野少年的天空 电影| 地狱究竟有几层在线观看电影| 单数绝配| 电影《美容院的特殊待遇》1演员表 | 激战丛林3免费观看| 情不自禁电影下载| 逆天改命:锦绣嫡女短剧全集 | 奔跑吧第一季全集免费观看完整版| 黑白配高清国语全集在线看| 如狼似虎的母爱第三季剧情介绍| 首尔之春历史真实事件| 电影《假爸爸》免费观看| 《禁忌5》高潮| 情事 2002 电影| 盖世帝尊动漫在线观看完整版| 宁柔柔的小泬撑开到极| 五号特工组2部免费播放| 法国高2压监狱| 急先锋在线观看| 年轻的继拇3| 十大奇冤 电视剧| 按摩店的待遇1电影| 猎场大结局| v酒店在线观看免费播放电视剧大全| 爱情综合症前传泰剧| 末代御医粤语| 《需要爸爸播种子》电影免费在线观看,高清完整版美国倫理片_努努影院 | 雾蓝色的雨后晴天| 日本按摩女| 郑少秋个人资料简介| 爱我几何免费观看| 忒弥斯的不确定法庭| 郝板栗《千金女神》播放| 良辰美景好时光西瓜影视| 妻子8免费完整版在线看| 别墅ova无修版国语版| 不死者之王在线观看| 潞西市| 迪拜女孩满天星在线观看完整免费高清 | 少年方世玉张卫健高清| 同龄人电视剧| 美国版5娃娃脸| 1995版人猿泰山意大利版本| 红问号剧情| 求佛mtv| 女房东的滋味HD中字| 黑人巨茎大战俄罗斯美女的背景故事 | 虚构推理第二季未删减在线观看| 水手服饰育完整版| 人人都爱雷蒙德第九季| 流氓大亨粤语| 张艺谋电影满江红在线| 《高血压监狱》免费观看| 电影亮剑完整版免费观看| 好妈妈高清在线播放| 打工仔的梦想房| 牙医赤子板栗免费| 不思议游戏全集| 破地狱粤语| 夫妻成长日记二| 做aj的电视剧免费观看| 慈禧的秘密生活电影| 《怦然与你》| 我国实行周末双休制还不足30年| 丰满的女学生在线观看| 性迷宫 电影 1999| 边水往事连续剧免费观看全部 | 太谷县| 电影战狼4高清完整版在线观看免费9999| 寻回真爱:失忆娇妻短剧全集| 国风按摩院第三部| 甜蜜惩罚2我是看守专用宠物| 免费观看爱我几何| 王子变青蛙第二部01| 华为Mate70系列进入最后阶段| 壮志凌云2011美国女版| 《镜的第三乐章》| 高清《韩国财阀2》电影| 乱世三义高清全集| 人狗大战1~8集全集观看免费西瓜| 《猎艳狂魔》完整版在线观看| 无神之地| 好妈妈6在线| 电影《私人女性监狱》HD在线观看,高清完整版美国伦理片,伦理_OK电影天堂 | 借爸爸的种子电影| 黑执事08| 沼泽猎手11| 春雨电视剧高清在线播放 | 爱上女主播分集介绍| 壮志凌云满天星法版免费| 《善良的妻子| 特种兵之火凤| 法证先锋4粤语| 快递员的美味2中字在线观看| 女烈影视| 吴健版农民伯伯2免费观看在哪里好看| 一生无悔歌词| 欧美战狼6电影免费完整版| 漂亮的的瘦子4| 影音先锋资源 彼女系| 最美的时光第一集| 一年恋一天| 销售员的秘密| 魔鬼天使 杨思敏| 满江红在线观看免费观看完整版 | 灭狼行动| 大哥的宝库免费观看全集高清| 安吉丽娜朱莉 原罪| 《双人调情按摩术》在线观看| 新生在线观看| 陈子豪的个人空间| 微笑妈妈韩剧免费完整观看| 《妈妈爱上儿子同学》结局全集| 天使在线| 中国好声音直播现场| 女人是男的人未来1分54| 不雅空城| 年少有为| 向风而行电视剧免费观影| 老九影院| 高清【我推的孩子】 第三季未删减 | 爱我几何无删减在线观看完整版 | 夏目友人帐第一季| 社会| 《满天星》陈宝莲在线观看| 天敌 电视剧| 灵魂战车2高清下载| 色即是空 2015| 徐元《保险推销员》在线| 凌浩与秦雨欣的小说免费阅读| 电视剧西施秘史全集| 《美容院的特殊待遇》3| 电影《法国空姐2》| 刑警之海外行动全部演员表| 凯登克罗斯电影完整版| 黄色影院| 朋友的妈妈2018中语| 恶魔奶爸第二部| 黑白配电影高清在线观看! | 海边的女人下载| 电影末路| 《侄女开发日记》动漫免费观| 徐少强金银瓶| 京城大状师| 大家族电视剧| 完美世界免费观看完整在线观看| 踏日酒店电影完整版在线观看| 无法拥抱的你第二季电视剧| 启示录在线观看免费完整版高清| 汽车总动员国语版下载| 女子护卫队满天星1973完整版电影| 女战狼10可下载| 夫妻成长日记下载| 齐天大圣2022电影在线观看| 电动车防盗器接线图| 美国女儿要爸爸播种电影免费观看| 搁浅的意思| 云画的月光免费完整版在线观看| 贝茨旅馆第三季| 《售楼小姐》| 《Overflower》真人版演员表| 高清《味道》电影| 青梅竹马是消防员无删1| 北条麻妃熟女在线观看AV| 激战丛林珍妮原版播放| 《朋友的妈妈》2中字头歌词青岛| 《重启之蛇骨佛蜕》| 诛仙2电视剧| 三义影视播放在线观看| 夫人的侄子1994剧情简介| 小时代电视剧优酷| 斗罗大陆209| 地爆天星电影推荐| 琵琶别抱| 啄木鸟《荣耀守则》凯登| 电影《出轨成瘾》免费观看全集| 欢乐颂38| 宣化县| 我的女教练| 再婚进行时剧情| 电影女儿国| 电视剧金牌律师| 绫见ひかる| 王保长新篇电视剧| 歼灭天际线1到90集| 河北梆子打金枝选段| 快乐驿站马三立| 磐石影院| 土地公土地婆 电视剧| 神鬼愿望| 女超人的危机未删减版在线观麦乐迪| 变形金刚第一部| 青春期的妹妹免费观看电视剧| 等你说爱我电视剧| 进击的巨人大结局| 娃嘎电影网免费观看| 永不磨灭的番号电视剧| 高清《活佛济公2》电视剧| 凯登克罗斯电影高清播放 | 战狼四电影免费版完整视频高清| 特种部队2 影音| 网上购物社区| 西游记11版全集| 《美容院的特殊待遇》所有演员是谁 | 社长夫人用身补偿客户怎么说| 风暴在线观看| 守护天使国语版| 彡怎么读| 凌云壮志满天星2011版| 《百万人推理》| 美国版深仇高清在线观看| 《执行秘书》2009| 屠宰森林1小时52分版| 电影画皮| 地下城与西游记2| 除却巫山海外版无删减| 艾曼妞3:爱的课程| 战争与音乐电影完整版免费观看| 夏娃的诱惑2| 李美淑的电影《偿还》| 海伦娜的影子电视剧| 美丽的蜜桃电影| 妈妈2免费观看完整电视剧中文版| 高压监狱第二部在线观看完整免费高清原声满天星 | 美女跳舞视频大全| 一起愁愁愁全集免费观看方法 | 玉女心经3阴阳和合剧情介绍| 北方第二个国家级都市圈来了| 寻龙诀电影完整版下载| 禁忌女孩第一季| 冰河剧集法国空姐4| 别碰我的人 歌词| 《初中小女孩》完整版| 西安巨响登上热搜| 侵犯的继拇中字夫人| 凶降喜讯电影| 老八吃粑粑| 宗馥莉因爱生恨换了王力宏| 肉蔻之香免费观看| 情满珠江| 黑暗天使电影| 安徽省| 曹查理电影完整版| 基因决定我爱你电影| 电视剧天龙八部| 学生酒店1-580集| 大学生理发店的特殊待遇| 理想之城电视剧免费观看| 看没看过暮光之城的都沉默了| 兽皇村上沙正版电影免费观看| 养母的花样年华| 小敏家电视剧免费版全集在线观看| 咱村书记是明星| 和维修工做爱在线观看| 红唇歌曲原唱| 开心公寓| 南川市| 人乳交易乱象电影| 农奴电影| 黑名单 美剧| 小凤新婚在线播放| 伦理厨房的岳 BD神马在线观看| 皮囊第一季百度影音| 《杰顿魔物娘》动漫在线看| 贺军翔主演电视剧| 劳斯莱斯娇娃| 美国伦理《生殖按摩》在线播放| 出来面试的妻子免费观看电视剧| 大内密探之零零| 超级整蛊霸王国语版| 需要爸爸种子 - 在线观看| 欲火凤凰| 女超人麦乐迪在线完整版免费观看 | 人狼特种部队免费完整版在线观看| 辣妈正传mp4下载| 莫妮卡爱我几何| 屋塔房王世子剧情介绍| 盛夏假期遇见爱全集观看| 神探夏洛克电影版| 八戒电影观看8| 聊斋3梅女| 上海滩主题曲简谱| 《女子护卫队:满天星》在线观看| 血滴子电影下载| 人狗大战1~8集全集观看免费西瓜| 播放阿宝| 喜羊羊与灰太狼之飞马奇遇记| 电影《牙医姐妹》完整版免费播放国| 英雄三国怎么样| 聚会的目的1在观完整有限中字| 战狼10免费完整电影在线观看高清| 人间水蜜桃6免费观看电视剧 | 日本保险公司推销员2| 陈伟霆演的鸭的电影名字| 食物链无删减| 混血的摇篮曲在线播放| 我的辅导老师| 命中注定我爱你20| 战火熔炉在线观看| 出差遇到前任渣男完整版| 《咱们结婚吧》全集| 火星西路7号| 猎杀豪放女| 比思论坛东方美人| 乌鸦小姐和蜥蜴先生| 大山的荣耀| 和部长出差电影 | 行尸走肉第二季04| 纸醉金迷电视剧下载| 《沉香如屑》电视剧全集免费观看| 戴安琳恩满天星无删减版百度云资源 | 我和我们在一起免费看| 公安县| 赤子板栗千金小姐在线观看 | 假面骑士亚极陀免费观看| 别无选择电视剧| 三年大片在线免费观看| 日本战狼双人6| 迷魂记免费| 底线 电视剧| 怡红院怡春院| 阜平县| 韩剧《装修去闺蜜家》| 貌似高手| 危情实录第二部电视剧| 不输男儿郎:将门嫡女沙场短剧全集| 爱的阴暗面 百度影音| 坎贝奇品味人生无憾在线观看全集| 坎贝奇电影| ed2k 步兵| 人民万岁电影| 电视剧《雪迷宫》32集播放 | 白峰美羽《美人教师》| 金庸群侠传之苍龙逐日| 女友的妈妈 双字ID| 军人使命电视剧| 舒淇电影玉女心经| 冰河追凶| 国风按摩院在线看| 请回答1988在线观看| 速度与激情9 高清在线播放| 替夫还债在线观看完整| 扫黑风暴高清完整版免费观看| 男生吃女生的兔子头会变黑吗| 新金瓶梅电视剧免费观看全集完整版1986 | 周星驰电影粤语| 风花雪月全集免费观看| 铁石心肠2019在线观看| 邻家有女韩剧免费| 回复术士的重启人生在线 | 南京将军山碎尸案| 电影原始武器| 修理工的艳遇| 二十不惑在线观看| 三上翔子| 亲爱的热爱的| yellow 电影| 乡村爱情12剧情介绍| 中国男篮进2024奥运会了吗| 男女一起免费观看全集高清完整版| 我们的2018免费观看腾讯视频| 笼中女囚电影完整版| 双女任务在线| 高清马洛谋杀俱乐部 第三季 | 粉红的窗帘| 古墓丽影满天星在线观看完整免费高清 | 歌曲映山红简谱| 即时是空3电影免费观看完整版国语| 布衣神相国语全集| 《法国空乘5》无删减观看| 树上有个好地方高清在线观看| 玉米电影| 古惑女之狱凤| 星克莱尔在线观看| 大珍珠电视剧全集免费播放| 侏罗纪公园1在线观看免费完整版| 封神英雄80| 《炽热吸引》全集在线观看| 和讨厌的部长出差旅| 捷德奥特曼剧场版免费观看中文版 | 夺取电视剧免费观看全集高清| 哈尔移动城堡| 《和部长出差的日子》| 新垣结衣生日| 因为我太傻中文歌词| 许你半生不见短剧免费全集| 水菜丽下马番号| 八戒八戒16集免费观看| 朋友的姐姐在线观看| 同桌的你免费| 杰森斯坦森回应爱称郭达| 妻子3免费观看电视剧更新时间| 绝密卧底电视剧免费观看| 结婚才可以电视剧| 斯巴达A片成人版| 《满天星绝版》在线观看| 幸福到万家全集免费观看网| 人间四月天在线观看免费| (越南女子别动队)东京塔完整版| 维修工王李丹妮| 驰策影视| 吞噬星空202集完整版| 欢乐颂第一季在线观看免费高清| 性教育电影下载| 需要爸爸的种子在线免费观看| 不良义姐真人版台湾在线观看| 艾回五子| 天行健在线观看| 情谜睡美人之欲望的姐妹| 我的黑帮大佬第2季免费播放美剧| 游泳教练| 爱我几合完整版免费观看| 两世欢免费观看全集| 爱情睡醒了图片| 师娘她甜爆全师门短剧免费观看| 爱的色放韩国电影| 区。| 瓜达卢佩的玫瑰未删减版 | 作家的谎言的电影| 神医小娇妻短剧全集| 陪讨厌部长去出差旅视频 | 修仙小师妹全集免费| 酒井法子空蝉之森原版| 麦乐迪女超人满天星版v1.4| 金瓶梅电视剧| 暗黑第一季| 朋友的妻子肉H| 电视剧魂断秦淮| 桑德拉·拉索《啄木鸟》| 电影《之后6》| 鬼怪13| 血迷宫电视剧免费播放在线观看| 浪客剑心追忆篇免费观看完整版| 电视剧西游记82版全集免费观看| 19岁电影免费完整观看| 水润女人刘志贤最火的几部电影作品 | 《激战丛林》完整版观看 | 特种部队火凤凰| 色之恶鬼| 小女花不弃电视剧免费观看全集| 去有风的地方免费观看完整版最新| xl司令免费全集观看|