<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

      主站蜘蛛池模板: 总裁的小甜妻全集免费| 白洁被高振干到九点多电影叫什么| 小红帽满天星| 新建文件夹在线观看完整版| 十二生肖电视剧全集| 翡翠凤凰39| 罗宾 威廉姆斯| 妖精的尾巴45| 美容院特殊待遇电视剧| 舒淇玉女心经| 电视剧小白菜奇案| 牙医赤子板栗免费| 毛尖的好处| 欧少女16集| 东阳市| 猪猪侠超级棒棒糖| 与讨厌的部长一起去出差旅电影| 超智能足球第二季| 给我免费观看片在线电影的| 三年成全免费高清观看资源| 多地限制教师非正常流动| 深夜秋葵男人的加油站| 美姐妹牙医在线播放| 梦境之树| 罗马帝国艳情史| 《活着》电影完整版| 卡特教练| 《美容院:特殊待遇》在线观看| 高清《空姐》电影完整版免费观看 | 四大名捕演员| 斗罗大陆209| jizz曰本| 无名之辈:否极泰来电影| 男与女完整版电视剧免费高清| 销售部的销售秘密5HD中字| 金山鸿雁| 理伦三级我的女朋友妈妈三 | 夫妻生活日记| 新手律师满天星完整版 | 女帝后宫:美男争风吃醋全集免费 | 无尽的尽头电视剧免费全集| 高庄监狱电影在线观看| 高考时晕倒确诊骨癌| 《摩登家庭》满天星| 姚明场边大喊:不要犯规| 战狼6免费高清版999加拿大版动漫| 周星驰电影粤语| 电视剧折腰免费看| 浮之手HD版免费观看了 | 上司办公室在线观看| 周末情人别爱我| 皇妃她不讲武德电视剧免费观看| 电影《丰年经继坶3》解析 | 风暴免费在线观看| 《新来的瑜伽教练》| 短剧《撕夜》免费观看| 禹州电视台| 台湾独居女和上门维修师傅高清| 斗罗大陆240集免费观看全集在线| 大蟒蛇2| 百万英镑电影| 陈冠希道歉| 张纪中辟谣离婚住院等传闻| 谎言美人| 电影完美搭档| 岢岚县| 金瓶风月宝鉴电影免费观看国语版| 第八号当铺电视剧| 俘虏之锁| 陆贞传奇34| 我和黑帮大佬的的365在线观看| 美味快递员特殊待遇免费版| 铁甲刚拳| 行骗天下| 偷窥无罪电影| 爱不懂事| 《亚述家族》第一季在线观看| 麦子互换6免费观看完整版高清电影| 考比网站| 情侣之夜| 孤男寡女免费看电视剧战狼3| 八卦神探国语电视剧全集在线观看| 超凡蜘蛛侠2在线观看| 《overflower》真人版动漫全集免费! | 善良的妈妈中字开头9个字是什么两个 | 少帅张学良电视剧| 月光宝盒私人免费影院| 韩国未删减| 300勇士:帝国崛起未删减版 | 隐形帽子| 聊斋艳谭2| 幸福触手可及百度百科| 京香| 婆媳的战国时代演员表| 自古英雄出少年免费观看完整版| 姐妹牙医在线看| 缘之空07| 中国女足今晚迎战海地| 法国农场全新正版| 北风那个吹在线观看免费完整版 | 大唐女将樊梨花吻戏| 性解密日韩女| 夜的第七章短剧| 星期三电影| 命运自选台| 变节粤语高清| 我的老板娘3韩国| 安斋拉拉在线观看视频| 秋元まゆ花| 高清恶魔搬进来了| 女律师的堕落01经典片免费看| 获取信息的方法| 欢迎来到蘑菇屋免费播放| 小蜜桃六观看| 舞蹈家苏科老师简介| 我家那小子2026| 法国空姐满天星法版| 翠湖未删减| 左右不逢源第四季| 《花与罪牙医》| 惊弦电视剧免费完整版| 孔雀王动画| 性的暴行2糟蹋女兵电影在线观看| 红心皇后电影| 别墅轮换3攻略完整版免费| 功夫梦:融合之道未删减| 花样美男国语版全集| 无尽情爱 电视剧| 移山倒海樊梨花全集| 正在播放: 解决学生的性爱烦恼不穿内衣裤的美波老师硬硬教学 波汐里 中文本幕 | 安全屋未删减| 束缚游戏免费看| 斗破苍穹101集| 抑郁症影院满天星执行秘书| 花束般的恋爱电影在线观看免费高清| 和讨厌的前男友一起去出差旅日本在线观看 | 亲爱的朋友们| 留存的爱未删减| H版欧美成人版白雪公主| 花与蛇类电影| 废世界电影| 斗罗大陆第173集| 女海盗1成版人免费观看播放| 回南天电影在线观看免费播放| 安家一共多少集| 高压监狱在线观看完整免费高清原声高烧动漫 | 非常了得20110824| 最后的希望| 谍战深海之惊蛰免费观看45集 | 平凡之路电视剧免费观看| 三年在线观看免费播放高清电影| 武汉三镇主帅考虑执教国足| 拔苗助长免费| 花花公主1983满天星| 银河奥特曼s免费观看全集中文版| 迷你世界星球版本| 《妻子6》在线观看免费版电视剧中文| 宝石宠物第二季| 毛泽东免费| 郝板栗《千金》免费看| 夜盗珍妃墓在线观看全集| 迈瑞 待遇| 《售楼小姐的秘密》观看| 拼桌未删减| 武庚纪第四季在线观看| 《性迷宫》吴雪雯| 美少爷之恋泰剧免费观看第一季| 记忆传授人| 建瓯市| 电视剧地下铁| 电视剧记忆之城| 窈窕绅士高清下载| 电影千金小姐赤子板栗免费观看| 电视剧《心跳》| 碟中谍5在线观看完整高清免费版| 壮志凌云1(法国)满天星法版免费完整| 二毛驴传奇免费观看全集完整版| 年轻的妺妺2中字| 《两个好媳妇》国语版播出时间| 全红婵又又又误入巨人国了| 好迪代言人李玟| 小辣椒3美国荷尔蒙| 爱情公寓5全集免费观看| 纯爱情电影| 星舰迷航| 花蝴蝶4大全免费多少| 金瓶梅迅雷下载地址| AIGAO网在线观看| 一起愁愁30全集免费播放 | 罗刹海市被央视点名| 聚会的目的1在线| 特殊待遇电影在线观看| 妖兽都市动漫| 金瓶梅 高清完整版 bt| 性解密狗熊影院| 五星红旗迎风飘扬MV| 财经郎眼2015| 王贵与安娜| 《性的暴行》电影免费观看| 赵甲第电视剧免费观看全集三十集| 活着韩国免费观看| 洛克希佛地丛林1995版| 冯宝宝版杨贵妃| 新有菜| 石敢当之雄峙天东电视剧| 《私人女性监狱》免费观看在线播放_HD/1080P/无删减_高清完整版电影 - 星辰影 | 老婆6高清版电视剧在线观看免费| 归路电视剧在线观看全集| 东宫电视剧全集免费观看完整版高清 | 杨澜访谈录2011| 买百科全书的女人在线| 失控drive| 她来自胡志明市电影| 19岁三个女儿1锅端续集免费观看 正在播放: JUL-927 “对不起,我受不了了……”我对儿子的朋友好色……北条朝 | 开战日电影在线看免费观看| 小蜜桃6观看免费高清版电视剧| 莫言 丰乳肥臀 下载| 家教reborn| 正阳门下电视剧36集全免费| 用身偿还客户在长妻子被欺负| 谢娜魏大勋去看张杰演唱会| 我的丑娘续集| 性解密断| 电影植物学家的女儿| 潘多拉之镜| 闪亮爱大结局| 想要爸爸播种在线观看| 禁室培欲电影| 漂亮妈妈7巴字开头中字| 满天星版《荒岛女儿国》在线观看 | 再见莫妮卡原版| 长津湖战役3免费观看| 翻云覆雨电视剧| 吗吗吗朋友e| 美洲杯决赛回放| 活在当下 电影| 禁忌1980| 人世间 纪录片| 异形2电影| 法律与秩序特殊受害者| overflower在线观看| 京城大状师| 旗木白牙| 学生妈妈5| 美丽的他| 华为见非凡品牌盛典| 《温泉旅行》在线观看免费| 房奴试爱第一季电视剧开头原声| 疯狂原始人免费看| 爱杀死爱| 视频列表--蜜桃 - 17| 电视剧娘家的故事第三部| 百媚千娇全集| 《驯服》电影完整版丽卡结局| 夏洛特烦恼免费观看完整版| 怪医黑杰克剧场版| 杭州纵火案灵异事件| 铜铜钢锵锵锵免费观看观看| 两个人韩国BD在线观看免费| 《印度空姐》完整版在线观看| 深圳卫视直播在线观看| 电影《越南妹》99号叫什么名字| 乡野小希| 环太平洋 百度影音| 谍变1939电视剧| 《通往你的地图》| 西班牙电影掌中之物在线播放| 火影忍者剧场版失落之塔| 拜托请爱我动漫在线观看| 酒店1-100集全免费播放 | 金瓶梅2008在线观看| 男按摩师做乳房按摩电影中文 | 爆操老妈第46集完整版 | 幸福里的故事| 金锁记电影| 高清《重选纨绔当爹》短剧在线观看| 聊斋之月宫宝盒电影| 我和我的祖国免费| 西施电视剧| 战狼9免费高清版双人| 乞丐王子央视版全集| 罪恶都市电影| 郝板栗电影HD在线观看| 战至巅峰3| 南充属于几线城市| 我的傻妞妞| 欧美金银1—5集普通话版美国| 薛平贵与王宝钏44| 当穿越变成重生| 三年成全播放国语高清| 缘之空12集全在线看| 《开麦了吗?》| 美国式禁忌矿桥超棒影视| 女子护卫队1973| 小丈夫电视剧全集免费| 围城之九龙城寨免费观看| 外出2005原版时长| 拳击教练 满天星| 韩剧《女儿》| 三位大学位按摩记在线观看 | 彼得格里尔的贤者时间第一季| 电视剧狂飙在线观看免费| 吉星拱照免费完整版粤语| 日历女郎 韩国| 大宅门里的丫鬟们| 麻将电影| 天美影院电视剧在线观看免费视频| 快乐到家好看吗| 意大利八尺夫人满天星美版 | 最近我的妹妹有点怪电影 | 郭有才诺言完整版| 今夜无人入睡免费观看韩国| 面积最大的湖泊| 花开如梦电视剧免费播放40集| 九一麻花传媒剧mv免费| 星辰变在线观看全集免费播放| 19岁大学生真人观看电视剧美国| 电视剧怒放| 插曲的痛第60集免费观看高清强制| 谭晶 我是歌手| 电视剧天眼| 语义错误韩剧| 高清《我家那小子2026》| 《零度暧昧》免费全集| 我推的孩子动画免费观看全集| 台湾版《棘手狂情》演员| 女皇陵下的风流娘们| 珍娜詹森| 壮志林云满天星| 姚明场边大喊:不要犯规| 三姐妹健身瑜伽女孩2| 黑帮老大的365天第一部未删减| 激战丛林2美国版| 慰安妇影片| 我在大学修文物未删减| 河东区| 19岁在线观看免费播放高清电视剧| 失控玩家豆瓣| 仁心无悔短剧免费播放| 白峰电视剧601免费看| 全金属外壳在线观看完整版免费 | 浪漫女家教主演:黛比地区:台湾 | 电视剧狂飙全集在线观看| 小小水蜜桃电视剧在线观看好| 《爱我几何》在哪里看| 回复术士全集免费观看完整版高清| 电视剧迷雾重重| 八仙饭店埃博拉病毒电影| 全裸导演麦乐迪| 走火电视剧40集免费完整版| 月代头布丁| 大祠堂在线观看| 坎贝奇的《品味人生》| 新红楼梦主题曲| 心太软伴奏| 大胸的丰年经的继拇| 纵有疾风起在线播放| 小大夫电视剧| 宋莲生坐堂| 杰森鲁夫满天星电影合集| 金瓶Z梅| 网络第一美女| 遇见璀璨的你免费观看| 啄木鸟:《壮志凌云》| 默绘女高| 淘情公寓| free男子游泳俱乐部| 插曲的痛30免费观看| 问心电视剧免费观看完整版| 喜爱夜蒲免费在线观看| 锵锵锵锵锵免费完整观看最新章| 为爱远嫁终成空短剧免费观看全集| 悄悄地喜欢你免费观看| 斗罗大陆145集| 男按摩师伦理片| 只属于我的女神电视剧| 姑娘看电影免费观看| 天龙八部在线观看完整版免费| 水电工与富婆电影| 灵魂摆渡2 电视剧| 大江大河第一部全集免费观看 | 年轻善良的岳母| 你是我的解药短剧全集在线观看| 朋友瘦子4| 伪名媛混圈法则| 《梦中的那片海》电视剧| 恶女教师| 纯白交响曲动漫免费观看| 罗丽星克莱尔性迷宫片长| 我们的2018免费观看腾讯视频| 哥哥的老婆电视剧在线观看全集免费| 神医喜来乐2| 水润女人全免费高清剧| 变形金刚4(绝迹重生)| 高清《最长的一天》电影在线观看| 金银梅5一10普通话免费观看| 家属在线看| 皇后的品格免费观看完整版| 宋小宝2022年最新小品| 森奈奈子| 鲜花盛开的村庄电视剧| 红十字:女人们的入伍通知单| 央美女生假扮名媛| 《私人女性监狱》| 蜜桃成熟时无删减| 韩国产理伦片在线观看| 绝世武神无弹窗| 隐身帽子电影| 鹿鼎记周星驰下载| 电影部长出差的日子线观看| 菜肉馄饨| 丰胸沙龙治疗3| 俄罗斯版女儿国2哪里能看| 小小姐们| 灵珊baby| 三年大片在线观看免费国语版动电话| 伊波拉病毒1-3三部| 雪中悍刀行全集在线观看| 火凤皇特种兵| 社长夫人用身补偿客户怎么说| 换脸明星电影完整版在线观看 | 教授和他的女大学生| 回复术士之重启人生第二季| 酒店1-75集免费观看电视剧中文字 | 风云2在线观看| 大考免费观看完整版电视剧| 科里蔡斯电影免费播放中文| 在线观看瓜达卢佩的玫瑰| 大熊和熊二全集免费观看| 垃圾桶披萨| 神断狄仁杰第二部| 冢本监督昭和系列越南女子别动队在线观看完整版 | 《大兵的寝室》美剧免费观看| 地爆天星无删减完整版| 长津湖之战完整版免费观看| 听不见的爱短剧免费观看| 荒岛女儿国满天星版| SGKI-068中文字幕| 斗罗大陆樱花动漫观看第26集| 非亲父子演员表| 一夜惊喜电影| 木下檀檩子点外卖的电影| 夺面双雄电影| 我成了他的班主任| 杨思敏 金瓶梅| 《急诊护士》法国版电影在线播放完 | 我是刑警22集全部播放| 遇见幸福电视剧免费观看全集| 以和为贵国语| 渔夫荒野正版免费观看| 缘之空03| 交换温度4| 《我的时代 你的时代》| 国足已抵达大连| 《超女麦乐迪》完整视频在线观看| 依家有喜国语| 婚姻向左浪漫向右全集| 人间 空间 时间和人在线观看| 女超人1979满天星版在线观看| 蛇蝎美人第四季在线完整悟空美剧| 最后的战士电视剧免费观看| 中国机长| 酒店激战第1-5集在线观看人生第一次| 三朵金花电视剧全集免费播放| 战斗王之飓风战魂2| 大独裁者| 爱我几何《莫妮卡》| 3对1四人一次性体检| 大生意40集免费播放| 女儿情歌曲原唱| m7全英雄战记优酷| 女版《壮志凌云》| 雪在烧电影在线观看完整版| 电影风月宝鉴之暴情狂魔免费观看| 三十而立电视剧全集| 美国满天星《无法无天》| 对风说爱你| 妻子的诱惑电视剧| 肉体联欢| 花房姑娘第6季在线观看全集免费高清| 聊斋3下载| E版人猿泰山1995故事简介| 3d豪情字幕文件| 《需要爸爸播种美国》演员名字| 凌云壮志女版(法国)斯托亚| 蝙蝠侠之黑暗骑士| 遇见未来的你台剧免费观看| 黑暗荣耀韩剧| 巨乳女医生的特殊治疗电影| 如意芳霏在线观看| 临终老人要走的6个手势| 刑侦十二国语免费观看| 韩国理论电影| 达达兔免费观看延禧攻略| 缘分 电影| 异形终结2| 战狼16欧式少女版资源百度云| 美国版本女儿国 3| 《美人心计》免费观看| 我推的孩子动画免费观看全集| 第二陷阱| 3v1三人一次性体检在线观看 | 电影欢乐英雄| 莫妮卡《爱我几何》电影免费| 水手服饲育电影高清完整版在线观看 | 超时空恋爱| 血疫电影完整免费观看| 上门推油| 战狼6全片免费入口| 坎贝尔电影大全免费观看| 黑道风云电视剧全集| 仙剑奇侠传3 38集| 社会图片| 需要爸爸的种子bd| 繁华落尽40集免费播放| 警察锅哥40全集免费| 玫瑰的故事首播5集| 《入室暴行》国语在线| 法国空姐3免费高清原声满天星奔跑吧高压| 潮湿的猫1982年意大利| 我和我的家乡1080P在线播放 | 漂亮的妈妈7中字开头6个字| 跟我来舞蹈| 韩国三级《交换温柔》| 中国阅兵式2009高清| 日本Jizz| 电影美容室的特殊待遇7| 悬赏粤语版| 寄生兽电影迅雷下载| 《第二十条》原型| 《她被搬运工侵犯》在线| 二虎逆袭人生短剧免费观看| 成龙电影全集粤语| 白蛇传说粤语| 水润女人免费观看电视剧| 私人女性监狱miande| 插班生电影| 家庭教师59| 高清《钟表馆事件》电视剧| 选择全对:神级人生全集免费| 女版战狼10普通话版| 孤男寡女粤语| 电视剧枪神| 女战士满天星免费观看完整版| 纯属意外电视剧| 加菲猫电影国语| 国产精东剧天美传媒影视林凤娇| 369你懂的电影在线观看| 皇朝博美犬舍| 云霄县| 我们在线观看免费BD视频| 电视连续剧西游记86版全集播放| 美丽的樱桃| 地球脉动纪录片中文免费观看| 狐妖小红娘无暮篇免费观看| 麻花无痕传剧mv免费观看全集高清| 高清《blind》电视剧| 北上电视剧免费观看完整版| 《莫妮卡《爱我几何》》高清再线播放 | 双肥临门| 世界杯巴西对克罗地亚| 坠落的女律师全集免费| 还珠格格二部全集播放免费观看| 宾利欧陆gtc| 努尔哈赤评书| XL司令第一季真人版韩| 坏妻子便利店被欺负后的剧情解析| 聊斋3高清完整版在线观看| 手工制作丝网花| 人生大事电影免费看完整版| 姐妹牙医观看| 神雕侠侣古天乐| 蝶舞天涯全集| 就算是爸爸也想做免费观看| 阳泉市| 台湾电影按摩店排毒500叫啥电影| 八犬传东方八犬异闻第二季| 电视剧迷雾重重| 为奴12年| 荷尔蒙6电影在线观看免费| 插曲的痛第60集全集在线播放| 电视剧璀璨人生全集| 蜜桃成熟时1997百度影音| 妖艳女忍者百度影音| 坎贝奇第二部曲《品味人生》免费观看 | 战狼999在线观看免费版高清| 战狼6免费播9999| 门当户对综艺| 德古拉 希尔达| 尸变重生秘籍| 法国监狱法版1时46分| 遭义子侵犯的寡妇日韩电影| 漂亮的保姆3韩国电影免费| 后宅争斗短剧全集| 楼上楼下1V2| 美丽小蜜桃5满天星| 罗克星克莱尔在线观看| 篮球飞人| 漂亮的保姆完整版免费观看韩剧| 无颜之月迅雷下载| 罗丽莱尔星克《魔术师》免费观看| 仙逆108集抢先看| 佐藤江梨| 惩罚电影免费观看完整版| 生化危机4战神再生电影| 战狼9欧式少女高清资源下载| 李丽珍爱的 精灵| 电影断背山| 《卖房子的女销售》完整版| 欧美电影私人航空| 串烧50首| 连麦kp录音原版mp3| 海南琼剧| 《和讨厌部长一起去出差旅》电影 | 法国电影《黑帮团伙》在线观看| 日日网| 街头霸王电影| 天使的城剧情分集介绍| 高清我要成为超级巨星| 换伴11| XL司令动漫第一季全集免费无马| 孙阳妈妈说儿子演得太坏了| 大博弈电视剧剧情介绍| 巴掌 红肿WRITE AS| krosskyden壮志凌云| 《卖保险的女销售》2| 绝世战魂免费观看完整版动漫| 女警爱作战大结局| 高清《重选纨绔当爹》短剧在线观看 | 外卖特邀员| 女员工的付出| 牧神记40集全免费播放| 短裙公主超可爱| 司藤免费观看全集完整版在线观看| 《飞机上性服务》电影| 《漂白》电视剧免费观看| 《高压监狱3》法国版版| 带货女王短剧全集| 球球大作战直播间| 美发店的待遇2| 解脱美女睡衣| 昆明动物园消失1天的猫现身| 《环太平洋2》完整版在线观看| 铡美案完整版免费观看| 代替丈夫D中文| jojo黄金之风在线看完整版免费| 快意恩仇| 小姑娘免费观看全集电影| 变形计山呼海唤| 卢旺达的玫瑰完整版免费观看| 圣特佩罗斯的姑娘们| 美国队长4免费观看完整版| 神偷奶爸1国语版免费完整版| 电影 蝙蝠| 阿姨爱上高中男孩电影免费观看 | 天使之恋 纯爱物语| 仙逆73| 案发现场3| 桃色凶器未删减版| 疯狂小女生完整版| 官人我要之极乐宝鉴2| 爱情公寓3没有如果是第几集| 熊出没之熊心归来 电影| 伦理《法国空乘11观看| 《忘年恋曲》续集| 朝阳沟封号| 七夜怪谈电影| 高胜美歌曲| 摇啊摇摇到外婆桥剧情简介| 需要爸爸的种| 钢铁侠1国语版高清| 嫡女毒妃:重生飒爽短剧全集| 马克龙:选举结果如何都不辞职| 俘虏之村| 惊变无删减版| 中奖了 赵本山高清| 星克莱尔X迷宫| 猛虎震地| 电视剧拳王| 少年包青天2部| 官方通报快递布洛芬变衣服| 佐罗满天星版免费观看| 白峰电影在线观看| 百变大咖秀20130606| 地味变2未增删樱花米粒米粒| 韩国美女vip内部1101| 电视剧捍卫者在线观看| 私人女性监狱在线播放| 扶着腰坐好深不要| 史密斯行动国语| 红十字:女人们的入伍通知单| 追爱家族免费全集在线观看高清| 电影《私人航空》美国在线观看| xl司令第一季在线看免费版| 箭侠电视剧| 人面兽心| 免费观看50分钟高清电视| 临猗县| 俘虏之锁~处女们淫秽的束缚~| 《危险关系》综艺免费观看| 海贼王499| 刷子李课件| 爱的牵绊| 执法女先锋1.2满天星| 人猿泰山无删减版1995主演| 古惑仔之庙街12少| 一路芬芳| 聊斋艳谭之孽欲孤鬼| 出轨人妇各系列25目录| 斯巴达第5季在线全集| 李采潭外遇的妻子| 校园诡异事件在线观看| 派出所的故事| 美国派8| 定日县| 《裸乳按摩》在线电影| 语义错误第二季生肉| 我在韩国当媳妇| 周小斌个人资料| 老版肉蒲团| 《最高の爱人诏》解说| 动漫《落魄贵族琉璃川》在线观看| 朋友的母亲4| 解放的潘多拉剧情| 《马向阳下乡记》电视剧| 台北101大楼亮灯祈愿| 木下凛凛子的电影| 酒店免费观看完整版高清| 《英雄》电影完整版| 黔乡牧人| 王牌对王牌第九季免费观看完整版| 麦丽丝梦游辣境在线观看| 《束缚游戏》免费看| 为爱远嫁终成空短剧免费观看全集| 韩剧 拜托小姐| 乌云之上电视剧全集剧情| 《初代奥特曼》在线观看| 八尺夫人法国满天星法版演员表| 《牙医姊妹》完整版1986| 武驰人生萧战短剧免费观看高清| 天地无伦百度影音| 燕东平的微笑| 宝石宠物第二季全集| 韩国电影美发店的特殊待遇| 男女生一起愁愁愁电影在线观看| 长筒袜电影| 3d肉蒲电影在线观看| 婚前试爱国语版| 个人趣向| 需要爸爸播种免费观看| 宾馆高清野鸡激战| 冲锋21| 怎样自制直接吃的奶油| 上瘾第二季| 花开半夏未删减版| 美国《炸天小姐》| 我的美女姐姐欧洲。| 太极拳八段锦教学视频| 1995人猿泰山H版成人版| 洗冤录第一部国语全集| 行尸走肉1| 雨晴版农民伯伯1-4集在线看| HD版泰山《激战丛林》完整| 豆瓣电影250| 乌龟也会飞| 大宅门全集完整版免费| 兵临城下电视剧下载| 不当军事行为满天星在线观看| 和讨厌的前男友一起出差电影| 澳门风云电影国语| 舞帝利哥个人资料| 铁马少年国语版| 啦啦啦中文日本免费高清完整版一 | 妻子的视频| 女人的香气吻戏| 潘石屹是谁| 史泰龙最新电影| 财经| 火热的部长夫人第一季免费观看 | 电影壮志凌云女版满天星法版在线看 | SONE-367本乡爱在线观看| 克拉运河计划| 金蝉脱壳在线观看| 羞羞哒MINI| 爱情悠悠草| 《水润女人》刘志贤演| 《卖楼销售员》在线观看| 电竞女王短剧全集| 血恋未删减版| 只是结婚的关系免费观看| 加百列的地狱7全集免费观看| 夫妻之间完整版免费韩国电影观看| 电影满天星女保镖在线观看 | 淑蓉又痒了办公室献身| 电视剧《女人》全集免费观看| 赤壁 电影| 中文字Dl幕岳 和女胥友田在线| 金银悔1-5免费看| 邓丽君演唱会下载| 一家乱战2免费高清在线观看| 欢乐喜剧人第二季| 神探夏洛克电影版| 爱我几何高清下载| rbd505| 电视剧在线看| 黑白禁区电视剧免费观看完整版| 开放的家庭| 年轻的妈妈4在线| 建国门枪击事件| 《荣誉守则》免费观看 | 原始生活21天无删减版| 贺军翔主演电视剧| 十二金刚| 咖喱辣椒3| 插曲的痛全集观看无码| 满天星女超人电影在线观看完整免费| 我们的绝地反击电视剧免费观看| 张馨予重开评论| 原罪电影| 周生如故在线播放| 2.5次元的疑惑| 年轻的的小瘦子5| 义子下药被迷晕后侵犯在线观看| 笔仙惊魂百度影音| 《魔法少女伊莉雅》| 中华大丈夫高清| 李云迪为什么嫖娼| 千金小姐| 足球宝贝在线观看完整版法国| 死亡空间3解说| 爱的妇产科演员表全部| 铁石心肠泰语版电视剧| 英雄百夜全集观看| 红龙电影| 《外卖员外遇》| 极品教师第六季免费观看完整版 | 墨西哥电视剧《la rosa de guadalupe》(瓜达卢佩的玫瑰/奇迹玫瑰 在线 | 妹妹学着点:打脸绿茶短剧全集| 赘婿电视剧36集免费| 荣誉守则2012h版链接| 樱兰高校男公关部1| 《杉杉来了》在线观看完整版 | 换伴5美国版高清免费版在线观看| 无颜之月在线观看一到五集电视剧| 年轻的小搜子2| 迪迦奥特曼4| 《日本公与媳5》筱田优| 少帅张学良电视剧| 三十而立剧情介绍| 京城李公子是谁| 女护卫队电影免费播放2023年上映时间 |