日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java SPI机制总结系列之万字详细图解SPI源码分析

發(fā)布時間:2023/11/16 java 101 coder
生活随笔 收集整理的這篇文章主要介紹了 Java SPI机制总结系列之万字详细图解SPI源码分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原創(chuàng)/朱季謙

我在《Java SPI機制總結系列之開發(fā)入門實例》一文當中,分享了Java SPI的玩法,但是這只是基于表面的應用。若要明白其中的原理實現(xiàn),還需深入到底層源碼,分析一番。

這里再重溫一下SPI機制的概念:SPI,是Service Provider Interface的縮寫,即服務提供者接口,單從字面上看,可以這樣理解,該機制提供了一種可根據(jù)接口類型去動態(tài)加載出接口實現(xiàn)類對象的功能。打一個比喻,該機制就類似Spring容器,通過IOC將對象的創(chuàng)建交給Spring容器處理,若需要獲取某個類的對象,就從Spring容器里取出使用即可。同理,在SPI機制當中,提供了一個類似Spring容器的角色,叫【服務提供者】,在代碼運行過程中,若要使用到實現(xiàn)了某個接口的服務實現(xiàn)類對象,只需要將對應的接口類型交給服務提供者,服務提供者將會動態(tài)加載出所有實現(xiàn)了該接口的服務實現(xiàn)類對象,最后給到服務使用者使用。

接著前文的分享,可從以下三個步驟目錄去深入分析Java SPI機制源碼實現(xiàn)——

  1. 創(chuàng)建服務提供者ServiceLoader對象,其內(nèi)部生成一個可延遲加載接口對應實現(xiàn)類對象的迭代器LazyIterator,主要作用是讀取并解析META-INF/services/目錄下的配置文件中service類名字,進而通過反射加載生成service類對象。
  2. 調(diào)用serviceLoader.iterator()返回一個內(nèi)部實際是調(diào)用LazyIterator迭代器的匿名迭代器對象。
  3. 遍歷迭代器,逐行解析接口全類名所對應配置文件中的service實現(xiàn)類的名字,通過反射生成對象緩存到鏈表,最后返回。
//step 1 創(chuàng)建ServiceLoader對象,其內(nèi)部生成一個可延遲加載接口對應實現(xiàn)類對象的迭代器LazyIterator,主要作用是讀取并解析META-INF/services/目錄下的配置文件中service類名字,進而通過反射加載生成service類對象。
ServiceLoader<UserService> serviceLoader = ServiceLoader.load(UserService.class);
//step 2 調(diào)用serviceLoader.iterator()返回一個內(nèi)部實際是調(diào)用LazyIterator迭代器的匿名迭代器對象。
Iterator<UserService> serviceIterator = serviceLoader.iterator();
//step 3 遍歷迭代器,逐行解析接口全類名所對應配置文件中的service實現(xiàn)類的名字,通過反射生成對象緩存到鏈表,最后返回。
    UserService service = serviceIterator.next();
    service.getName();
    }
}

整個過程這里先做一個全面概括——ServiceLoader類會延遲加載UserService接口全名對應的META-INF/services/目錄下的配置文件com.zhu.service.UserService。當找到對應接口全名文件后,會逐行讀取文件里Class類名的字符串,假如存儲的是“com.zhu.service.impl.AUserServiceImpl”和“com.zhu.service.impl.BUserServiceImpl”這兩個類名,那么就會逐行取出,再通過反射【“Class類名”.newInstance()】,就可以創(chuàng)建出UserService接口對應的服務提供者對象。這些對象會以結構為<實現(xiàn)類名, 實現(xiàn)類對象>的Map形式,存儲到LinkedHashMap鏈表里。該鏈表將由迭代器循環(huán)遍歷,取出每一個實現(xiàn)類對象。

畫一個流程圖說明,大概如下——

接下來,基于該全貌流程圖,分別對源碼作分析。

一、創(chuàng)建服務提供者ServiceLoader對象,其內(nèi)部生成一個可延遲加載接口對應實現(xiàn)類對象的迭代器LazyIterator,主要作用是讀取并解析META-INF/services/目錄下的配置文件中service類名字,進而通過反射加載生成service類對象。

先看第一部分代碼——

ServiceLoader<UserService> serviceLoader = ServiceLoader.load(UserService.class);

進入到ServiceLoader.load(UserService.class)方法里,里面基于當前線程通Thread.currentThread().getContextClassLoader()創(chuàng)建一個當前上下文的類加載器ClassLoader,該加載器在這里主要是用來加載META-INF.services目錄下的文件。

在load方法里,將UserService.class和類加載器ClassLoader當作參數(shù),交給ServiceLoader中的另一個重載方法ServiceLoader.load(service, cl)去做進一步具體實現(xiàn)。

public static <S> ServiceLoader<S> load(Class<S> service) {
    ClassLoader cl = Thread.currentThread().getContextClassLoader();
    return ServiceLoader.load(service, cl);
}

進入到ServiceLoader.load(service, cl),該方法里創(chuàng)建了一個ServiceLoader對象,該對象默認執(zhí)行了參數(shù)值分別為UserService.class和ClassLoader的帶參構造方法。

public static <S> ServiceLoader<S> load(Class<S> service,
                                        ClassLoader loader)
{
    return new ServiceLoader<>(service, loader);
}

根據(jù)字面意義,可以看出,ServiceLoader是一個專門負責加載服務的對象,在SPI機制里,它充當專門提供接口實現(xiàn)服務對象的角色。

這里就有兩個問題,它怎么提供服務對象,它提供的是哪個接口的服務?

針對這兩個問題,基于傳進來的參數(shù)值UserService.class和類加載器ClassLoader,就已經(jīng)能猜出答案里,它將通過類加載器ClassLoader去加載實現(xiàn)UserService接口的具體服務類對象。

進入到ServiceLoader的帶參構造函數(shù)——

private ServiceLoader(Class<S> svc, ClassLoader cl) {
    service = Objects.requireNonNull(svc, "Service interface cannot be null");
    loader = (cl == null) ? ClassLoader.getSystemClassLoader() : cl;
    acc = (System.getSecurityManager() != null) ? AccessController.getContext() : null;
    reload();
}

這里暫時只需要關注loader和 reload(),而acc是專門用在服務實現(xiàn)類的安全權限訪問方面的,本文暫未涉及到acc,后續(xù)會考慮專門寫一篇文分享下SPI下,如何實現(xiàn)服務實現(xiàn)類的安全權限訪問。

傳進來的loader如果為空,那么就使用ClassLoader.getSystemClassLoader(),即系統(tǒng)類加載器,可以簡單理解,無論如何,都會得到一個非空的類加載器。

接著進入到reload()方法里——

/**
 * Clear this loader's provider cache so that all providers will be reloaded.
 * 清除此加載器的提供程序緩存,以便重新加載所有提供程序。
 * <p> After invoking this method, subsequent invocations of the {@link
 * #iterator() iterator} method will lazily look up and instantiate providers from scratch, 
   just as is done by a newly-created loader.
   調(diào)用此方法后,后續(xù)調(diào)用{@link #iterator() iterator}方法將從零開始惰性查找并實例化提供商,
   就像新創(chuàng)建的加載器一樣。
 *
 * <p> This method is intended for use in situations in which new providers
 * can be installed into a running Java virtual machine.
   此方法旨在用于新提供者可以安裝到正在運行的Java虛擬機中。
 */
public void reload() {
    providers.clear();
    lookupIterator = new LazyIterator(service, loader);
}

根據(jù)reload() 方法的注釋說明,可以看到,該方法做了兩件事:

  1. providers是一個Map結構的鏈表LinkedHashMap,專門存儲服務實例(在這里是存儲UserService接口實現(xiàn)類對象)的集合,通過clear()方法做了清除,即清空了里面的所有記錄。
  2. LazyIterator實現(xiàn)了Iterator迭代器接口,根據(jù)類名可以看出,這是一個Lazy懶加載形式的迭代器。

需要額外解釋一下延遲加載是什么意思。延遲加載,說明項目啟動時不會立馬加載,而是需要被用到的時候,才會動態(tài)去加載。實現(xiàn)了Iterator迭代器接口的LazyIterator對象,就具備延遲加載的功能。

簡單看一下,該LazyIterator的結構——

private class LazyIterator implements Iterator<S>
{
    //存儲服務接口的Class類型
    Class<S> service;
    //存儲類加載器。
    ClassLoader loader;
    //存儲服務接口全類名所對應在META-INF.services目錄中的配置文件資源路徑
    Enumeration<URL> configs = null;
    //存儲里配置文件中服務類名的迭代器
    Iterator<String> pending = null;
    //存儲下一個返回的服務提供者類名
    String nextName = null;

    private LazyIterator(Class<S> service, ClassLoader loader) {
        this.service = service;
        this.loader = loader;
    }
    ......
 }

總結這部分源碼,主要是創(chuàng)建一個可加載接口服務提供者實例的ServiceLoader類對象,其內(nèi)部創(chuàng)建一個具有延遲加載功能的迭代器LazyIterator。該LazyIterator迭代器能夠延遲去逐行遍歷解析出接口全類名所對應配置文件中的Class類名字符串,再將Class類名字符串通過反射生成服務提供者對象,存儲到鏈表,用于外部迭代遍歷。

接下來,會基于該延遲加載LazyIterator迭代器,做進一步處理。

到目前為止,只是在ServiceLoader類對象的內(nèi)部,創(chuàng)建了一個存儲接口UserService.class,類加載器loader的LazyIterator迭代器,暫時還沒涉及到如何獲取接口對應的服務提供者。

簡單理解成,菜刀和鍋都準備好了,就等切菜和煮菜了。

二、調(diào)用serviceLoader.iterator()返回一個內(nèi)部實際是調(diào)用LazyIterator迭代器的匿名迭代器對象

這里通過serviceLoader.iterator()得到了一個類型為UserService的迭代器。

Iterator<UserService> serviceIterator = serviceLoader.iterator();

先進入到serviceLoader.iterator()內(nèi)部——

public Iterator<S> iterator() {
    return new Iterator<S>() {

        Iterator<Map.Entry<String,S>> knownProviders
            = providers.entrySet().iterator();

        public boolean hasNext() {
            if (knownProviders.hasNext())
                return true;
            return lookupIterator.hasNext();
        }

        public S next() {
            if (knownProviders.hasNext())
                return knownProviders.next().getValue();
            return lookupIterator.next();
        }

        public void remove() {
            throw new UnsupportedOperationException();
        }

    };
}

該方法里,return new Iterator() { ... }表示創(chuàng)建一個實現(xiàn)了Iterator接口的匿名內(nèi)部類實例對象,并返回該實例對象作為一個迭代器。

至于這個匿名對象是叫張三還是李四,都不重要。重要的是,其內(nèi)部具有能被外部正常調(diào)用的hasNext()和next()就可以了。

我畫了一幅簡單的漫畫,舉例說明一下,這里為何可以直接返回一個實現(xiàn)Iterator接口的匿名內(nèi)部類實例對象。

故事是這樣的,有一個老板,想要招一個工具人,哦,不對,是打工人(反正都一樣......)——


故事到這里就結束了,這個return new Iterator() { ... }返回的匿名內(nèi)部類,就像無數(shù)籍籍無名的底層打工人一樣,或許自始自終都無人知道他們的名字,但他們用自己辛勤的手(hasNext()方法)腳(next()方法),在平凡的崗位上,默默做著不平凡的工作,提供著可以幫助其他人(服務使用者)的服務。

接下來,讓我們看看這些打工人那布滿皺紋的手和腳——

Iterator<Map.Entry<String,S>> knownProviders
    = providers.entrySet().iterator();

public boolean hasNext() {
    if (knownProviders.hasNext())
        return true;
    return lookupIterator.hasNext();
}

public S next() {
    if (knownProviders.hasNext())
        return knownProviders.next().getValue();
    return lookupIterator.next();
}

knownProviders是一個包裝了LinkedHashMap providers = new LinkedHashMap<>()鏈表的迭代器。

當調(diào)用hasNext()或者next()時,都會判斷providers里是否還有可以遍歷獲取的值,如果空了,就會調(diào)用lookupIterator.hasNext()或者lookupIterator.next()。

這個lookupIterator,正是前文創(chuàng)建的LazyIterator迭代器對象的引用。

匿名迭代器對象中的這兩個方法,分別是以下兩種功能:

  • hasNext()判斷迭代器是否存在下一個元素。
  • next()獲取迭代器中的下一個元素。

可見,這部分源碼調(diào)用serviceLoader.iterator()返回一個提供hasNext()和next()方法的匿名迭代器對象,實際上,hasNext()和next()方法內(nèi)真實調(diào)用的是迭代器LazyIterator的hasNext()和next()方法。

三、遍歷迭代器,逐行解析接口全類名所對應配置文件中的service實現(xiàn)類的名字,通過反射生成對象緩存到鏈表,最后返回。

該分析最后的代碼了,這里已經(jīng)到遍歷循環(huán)迭代器,通過serviceIterator.next()取出存儲接口服務提供者對象——

while (serviceIterator.hasNext()) {
    UserService service = serviceIterator.next();
    service.getName();
    }
}

這里的hasNext()和next(),正是前文return new Iterator() { ... }匿名對象里的hasNext()和next()方法。故而在執(zhí)行serviceIterator.hasNext()或者serviceIterator.next(),將跳轉到#ServiceLoader類#iterator() 中,執(zhí)行該匿名內(nèi)部類的hasNext()和next()方法。

先來看hasNext()方法——

public boolean hasNext() {
    if (knownProviders.hasNext())
        return true;
    return lookupIterator.hasNext();
}

若是第一次執(zhí)行時,knownProviders迭代器里的LinkedHashMap鏈表必定是空的,這時候,就會執(zhí)行l(wèi)ookupIterator.hasNext()——

public boolean hasNext() {
    if (acc == null) {
    //acc為空,執(zhí)行的是這一步代碼
        return hasNextService();
    } else {
        PrivilegedAction<Boolean> action = new PrivilegedAction<Boolean>() {
            public Boolean run() { return hasNextService(); }
        };
        return AccessController.doPrivileged(action, acc);
    }
}

這里acc為空,故而執(zhí)行的是return hasNextService()語句——

private boolean hasNextService() {
    if (nextName != null) {
        return true;
    }
    if (configs == null) {
        try {
            //"META-INF/services/" + 接口全類名
            String fullName = PREFIX + service.getName();
            if (loader == null)
                configs = ClassLoader.getSystemResources(fullName);
            else
            //執(zhí)行該行代碼
                configs = loader.getResources(fullName);
        } catch (IOException x) {
            fail(service, "Error locating configuration files", x);
        }
    }
    while ((pending == null) || !pending.hasNext()) {
        if (!configs.hasMoreElements()) {
            return false;
        }
        pending = parse(service, configs.nextElement());
    }
    nextName = pending.next();
    return true;
}

初次調(diào)用,configs是null,而類加載器loader非空,故而會執(zhí)行configs = loader.getResources(fullName)這行代碼。

基于該執(zhí)行步驟,分析一下這里的configs作用是什么,先看以下兩個邏輯——

  1. PREFIX的值為private static final String PREFIX = "META-INF/services/",表示正是目錄META-INF/services/路徑。
  2. service.getName()是獲取Class的name值,我們傳進來的是UserService.class,故而這里service.getName()獲取到的,便是接口全名com.zhu.service.UserService。

兩者結合,即代碼String fullName = PREFIX + service.getName()得到的,便是“METAINF/services/com.zhu.service.UserService”字符串,表示文件路徑名。

這時候,我們的類加載器就開始派上用場了——

configs = loader.getResources(fullName);

沒錯,到這里已經(jīng)拿到UserService接口全類名對應的文件路徑,就可以通過類加載器讀取到該文件資源了。

讀取到該文件之后,之后就可以解析存放在文件里的接口的服務實現(xiàn)類信息了,故而具體實現(xiàn)在pending =parse(service, configs.nextElement())這行代碼里——

while ((pending == null) || !pending.hasNext()) {
    if (!configs.hasMoreElements()) {
        return false;
    }
    //逐行解析讀取配置文件類名,將讀取到的類名存儲到ArrayList,最后包裝成iterator返回賦值給pending
    pending = parse(service, configs.nextElement());
}

進入到parse方法里,可以看到,這里開始通過while((lc =parseLine(service, u, r, lc, names))>=0)對文件內(nèi)容逐行讀取,同時創(chuàng)建一個ArrayList names,用來緩存讀取出來的類名,具體實現(xiàn)就在parseLine(service, u, r, lc, names))方法里——

private Iterator<String> parse(Class<?> service, URL u)
    throws ServiceConfigurationError
{
    InputStream in = null;
    BufferedReader r = null;
    //用來緩存從文件里讀取出來的類名
    ArrayList<String> names = new ArrayList<>();
    try {
        in = u.openStream();
        r = new BufferedReader(new InputStreamReader(in, "utf-8"));
        int lc = 1;
        //遍歷文件每一行字符串
        while ((lc = parseLine(service, u, r, lc, names)) >= 0);
    } catch (IOException x) {
        fail(service, "Error reading configuration file", x);
    } finally {
        try {
            if (r != null) r.close();
            if (in != null) in.close();
        } catch (IOException y) {
            fail(service, "Error closing configuration file", y);
        }
    }
    //將ArrayList包裝成迭代器返回
    return names.iterator();
}

進入到parseLine(service, u, r, lc, names))方法,代碼String ln = r.readLine()表示讀取出文件每一行的字符串賦值給ln。

若遇到有#注釋符號的就跳過,只讀取非#號注釋的類名字符串,以names.add(ln)保存到一個ArrayList里。

private int parseLine(Class<?> service, URL u, BufferedReader r, int lc,
                      List<String> names)
    throws IOException, ServiceConfigurationError
{
    String ln = r.readLine();
    if (ln == null) {
        return -1;
    }

    int ci = ln.indexOf('#');
    if (ci >= 0) ln = ln.substring(0, ci);
    ln = ln.trim();
    int n = ln.length();
    //過濾掉帶有#字符的
    if (n != 0) {
        if ((ln.indexOf(' ') >= 0) || (ln.indexOf('\t') >= 0))
            fail(service, u, lc, "Illegal configuration-file syntax");
        int cp = ln.codePointAt(0);
        if (!Character.isJavaIdentifierStart(cp))
            fail(service, u, lc, "Illegal provider-class name: " + ln);
        for (int i = Character.charCount(cp); i < n; i += Character.charCount(cp)) {
            cp = ln.codePointAt(i);
            if (!Character.isJavaIdentifierPart(cp) && (cp != '.'))
                fail(service, u, lc, "Illegal provider-class name: " + ln);
        }
        //讀取文件里的類名字符串存儲到names這個ArrayList里
        if (!providers.containsKey(ln) && !names.contains(ln))
            names.add(ln);
    }
    return lc + 1;
}

將讀取文件里的類名存到ArrayList后,最后return names.iterator()返回一個iterator迭代器,可debug打印看一下,可以看到該ArrayList緩存了從文件里讀取出來的類名——

該迭代器在解析完成后,會執(zhí)行一次nextName = pending.next(),表示通過迭代器方式取出ArrayList中的第一個字符串,即“com.zhu.service.impl.AUserServiceImpl”,同時return true。

這里nextName = pending.next()和return true就呼應了外部服務使用者的調(diào)用,可見serviceIterator.hasNext()內(nèi)部,若迭代器下一個元素不為空,那么就將下一個元素通過取出,賦值給nextName,同時返回true,讓while循環(huán)正常遍歷下去——

前面的nextName = pending.next()將會在serviceIterator.next()里有所體現(xiàn)。

接下來,在next()中,第一次調(diào)用,也是lookupIterator.next()方法——

public S next() {
    if (knownProviders.hasNext())
        return knownProviders.next().getValue();
    return lookupIterator.next();
}

進入到lookupIterator.next()方法——

public S next() {
    if (acc == null) {
        //執(zhí)行該方法
        return nextService();
    } else {
        PrivilegedAction<S> action = new PrivilegedAction<S>() {
            public S run() { return nextService(); }
        };
        return AccessController.doPrivileged(action, acc);
    }
}

同樣,實現(xiàn)的是nextService()——

private S nextService() {
    if (!hasNextService())
        throw new NoSuchElementException();
    String cn = nextName;
    nextName = null;
    Class<?> c = null;
    try {
        /**
        *nextName即將前文的com.zhu.service.impl.AUserServiceImpl
        *String cn = nextName
        *通過Class.forName(cn, false, loader),即可生成AUserServiceImpl的Class類對象
        */
        c = Class.forName(cn, false, loader);
    } catch (ClassNotFoundException x) {
        fail(service,
             "Provider " + cn + " not found");
    }
    if (!service.isAssignableFrom(c)) {
        fail(service,
             "Provider " + cn  + " not a subtype");
    }
    try {
        //既然已經(jīng)拿到AUserServiceImpl的Class類對象,通過反射c.newInstance()便能生成相應對象
        S p = service.cast(c.newInstance());
        //生成的對象會以結構為<實現(xiàn)類名, 實現(xiàn)類對象>的Map形式,存儲到LinkedHashMap鏈表里
        providers.put(cn, p);
        return p;
    } catch (Throwable x) {
        fail(service,
             "Provider " + cn + " could not be instantiated",
             x);
    }
    throw new Error();          // This cannot happen
}

在這里面,主要做了這樣幾件事:

  1. 將nextName字符串賦值給cn,首次調(diào)用時,這里的nextName值為“com.zhu.service.impl.AUserServiceImpl”;
  2. 通過 c = Class.forName(cn,false, loader)生成AUserServiceImpl類的Class對象;
  3. 通過反射通過c.newInstance()生成AUserServiceImpl類實例對象;
  4. 生成的對象會以結構為<實現(xiàn)類名, 實現(xiàn)類對象>的Map形式,存儲到LinkedHashMap鏈表里;
  5. 將生成的對象返回;

因此,在第一次調(diào)用完UserService service = serviceIterator.next()后,就能拿到了接口UserService的第一個實現(xiàn)類對象com.zhu.service.impl.AUserServiceImpl,進而就可以執(zhí)行相應的重寫方法service.getName()。

到while的第二次遍歷時,執(zhí)行serviceIterator.hasNext()后,會取出ArrayList中的第二個緩存類名“com.zhu.service.impl.BUserServiceImpl”賦值給nextName,這樣在執(zhí)行UserService service = serviceIterator.next()時,就會重復執(zhí)行nextService()里的邏輯。一直迭代遍歷,直到將配置里的類名都遍歷完,serviceIterator才最終結束該UserService接口的服務提供功能。

首次調(diào)用就是以上流程,值得提的一個地方是,在反射創(chuàng)建完成的對象后,將以結構為<實現(xiàn)類名, 實現(xiàn)類對象>的Map形式。存儲到LinkedHashMap鏈表里。

這個LinkedHashMap鏈表緩存的作用是什么呢?

這時回頭去看下這行代碼,還記得它里面創(chuàng)建了一個匿名內(nèi)部類嗎——

這個匿名內(nèi)部類里,其hasNext()和next()方法,會判斷knownProviders是否為空,不為空才去調(diào)用knownProviders里的方法。

這里的knownProviders正是使用到了LinkedHashMap鏈表緩存里的對象。

這個鏈表的作用,就是方便出現(xiàn)重復創(chuàng)建一個匿名迭代器去后去獲取接口的服務對象時,直接從LinkedHashMap鏈表緩存里讀取即可,無需再次去解析接口對應的配置文件,起到了查詢優(yōu)化的作用。

類似這樣的場景,第二次生成一個迭代器去提供接口的服務功能時,就直接從從LinkedHashMap鏈表緩存里讀取了。

以上,就是Java SPI的完整源碼分析。

總結

以上是生活随笔為你收集整理的Java SPI机制总结系列之万字详细图解SPI源码分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产又黄又爽又猛视频日本 | 中文字幕在线免费看线人 | 久久精品一二三区白丝高潮 | 成人a免费 | 韩国精品在线观看 | 麻豆国产电影 | 韩国一区在线 | 日日碰狠狠添天天爽超碰97久久 | 久久精品麻豆 | 欧美久久久久久久久久久 | 久久影视一区 | 九九热精品国产 | 一级α片免费看 | 999国产在线 | 中文字幕二区在线观看 | 国产亚洲精品久久久久久移动网络 | 亚洲一二三区精品 | 国产亚洲欧美一区 | www.久久91 | 久久99精品波多结衣一区 | 人人爽久久涩噜噜噜网站 | 精品毛片一区二区免费看 | 午夜av不卡 | 国产色a在线观看 | 国产福利一区二区三区在线观看 | 欧美一级黄大片 | 91黄色在线视频 | 日韩影视大全 | 午夜在线资源 | 永久免费的啪啪网站免费观看浪潮 | 国产精品爽爽久久久久久蜜臀 | 四虎国产视频 | 一本一本久久a久久 | 国产亚洲情侣一区二区无 | 国产麻豆剧果冻传媒视频播放量 | 久久99精品久久久久久秒播蜜臀 | 操处女逼 | 93久久精品日日躁夜夜躁欧美 | 色夜视频| 日韩精品无 | 欧美综合久久久 | 国产欧美在线一区二区三区 | 国产成在线观看免费视频 | 在线观看视频免费大全 | 视频在线99| 日日夜夜91 | 日韩在线免费 | 久久精品福利视频 | 亚洲国产精品成人av | 国产成人一区二 | 草久在线播放 | 亚洲精品视频免费在线观看 | 美女精品国产 | 深夜免费福利视频 | 中午字幕在线 | 成人在线一区二区 | 国内精品免费久久影院 | 狠狠撸电影| 久久亚洲精品电影 | 婷婷激情小说网 | 日本精油按摩3 | 91精品国自产拍天天拍 | 婷婷久久精品 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 免费看片网页 | 欧美少妇xxx| 中文字幕91在线 | 不卡日韩av | 成年人国产在线观看 | 国产精品永久久久久久久久久 | 在线视频手机国产 | 激情网综合| 99se视频在线观看 | 中日韩免费视频 | 精品久久久久久久久久久院品网 | 久久综合给合久久狠狠色 | 国精产品999国精产品视频 | 在线观看爱爱视频 | av在线播放观看 | www九九热| www夜夜操com| 最新av电影网址 | a在线v| 久久这里只精品 | 色视频网站免费观看 | 99久久精品电影 | 国产精品久久久久久久久久久久午夜片 | 999视频在线播放 | 亚洲闷骚少妇在线观看网站 | 成人一级 | 日本中文字幕高清 | 91人人爱| 999ZYZ玖玖资源站永久 | 日韩a在线观看 | 国产视频久久久 | 亚洲精品高清一区二区三区四区 | 激情av网| 国产精品自产拍在线观看蜜 | 超碰97免费在线 | 91桃色免费视频 | 一二三区视频在线 | 在线视频第一页 | 久草在线资源网 | 国产一级二级在线播放 | 久久99久久99免费视频 | 亚洲美女在线一区 | 中文字幕在线影院 | 麻豆传媒视频观看 | 97精品在线观看 | 丁香色婷 | 久久色在线播放 | 国产精品一区二区久久精品爱涩 | 91精品专区 | 日韩网站免费观看 | 91视频-88av | 日韩一区二区三区视频在线 | av高清一区二区三区 | 成人a在线观看高清电影 | 日韩极品在线 | 国产精品99久久久久久人免费 | 91一区啪爱嗯打偷拍欧美 | 久久精品成人热国产成 | 美女免费视频观看网站 | 久久久久久综合网天天 | 欧美性受极品xxxx喷水 | 久久手机看片 | 在线免费国产视频 | 国产麻豆精品一区二区 | 国产精品激情偷乱一区二区∴ | 粉嫩av一区二区三区四区在线观看 | 婷婷.com| 亚洲欧美日韩一区二区三区在线观看 | 精品国产人成亚洲区 | 亚洲国产中文字幕在线视频综合 | 亚洲综合在线五月天 | 97人人精品 | 久久久久国产a免费观看rela | 97精品在线| 亚洲最新av在线 | 亚洲涩涩一区 | 婷婷六月天天 | 97人人人| 欧洲亚洲精品 | 精品国产视频一区 | 亚州精品成人 | 日韩电影一区二区在线观看 | 日本中出在线观看 | 在线亚洲日本 | 中文字幕av在线电影 | 黄色三级在线观看 | 中文字幕在线观看免费高清完整版 | av在线进入 | 黄色三级免费片 | 在线亚洲午夜片av大片 | 精品一区在线 | 成人h在线 | 色狠狠操 | 91av社区| 免费看v片 | 成人网在线免费视频 | 97精产国品一二三产区在线 | 精品国产成人在线影院 | 免费视频一区二区 | 狠狠干美女| 国产精品视频99 | 337p日本欧洲亚洲大胆裸体艺术 | 成人黄色一级视频 | 日韩精品一区二区三区中文字幕 | 成人黄色小说在线观看 | 国产精品久久久久久久久久久久午 | 国产精品福利无圣光在线一区 | 黄色一级性片 | 九九久久久久久久久激情 | 一区二区三区精品久久久 | 国产片免费在线观看视频 | 一级黄毛片 | 成人小视频在线播放 | 97免费在线观看视频 | 国产精品一区二区62 | 天天操天天操一操 | 五月天电影免费在线观看一区 | 又黄又爽的视频在线观看网站 | 欧美日韩国产综合一区二区 | 一二三区av| 久久久久久久久久久久久久电影 | 狠狠狠色丁香综合久久天下网 | 欧美精品久久久久久 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产精品毛片一区视频播 | 久久电影中文字幕视频 | 免费在线观看污 | 青青草国产精品视频 | 国产精品高潮在线观看 | 天天爱综合 | 夜夜操天天操 | 成人久久视频 | 久久电影网站中文字幕 | 日韩一级成人av | 国产精品国产三级国产专区53 | 最新午夜电影 | 日韩欧美在线综合网 | 亚洲一区二区三区在线看 | 人人超在线公开视频 | 一区二区三区电影 | av高清不卡 | 久久的色 | a视频免费看 | 深夜国产在线 | 一区二区精品久久 | 91桃色在线观看视频 | 欧美在线1| 亚洲专区视频在线观看 | 免费激情网 | 在线香蕉视频 | 精品视频免费 | 婷婷视频 | 国产精品九九视频 | 亚州视频在线 | 超碰在线观看av | 久久精品aaa| 亚洲国产片 | 日日爱网站 | 亚洲精品综合欧美二区变态 | 色偷偷网站视频 | 日本在线观看中文字幕 | 国产特级毛片aaaaaa | 日韩有码在线播放 | 天天综合色天天综合 | 色婷婷av一区 | 久久高清av| 久久视频在线观看 | 亚洲精品综合一区二区 | 久久福利影视 | 欧美另类巨大 | 久久久久久久久久久精 | 精品国产成人av | 一级黄色av | 国产精品18p | 狠狠躁夜夜躁人人爽超碰97香蕉 | 视频一区二区在线观看 | 91亚洲在线观看 | 亚洲日本va午夜在线电影 | 久久在线免费 | 在线综合 亚洲 欧美在线视频 | 99热国产精品 | 黄色网址a | 狠狠干综合 | 精品一区二区三区电影 | 久草爱视频 | 中文一区二区三区在线观看 | 欧美一区二区三区免费观看 | 亚洲精品美女久久17c | x99av成人免费| 久久精品亚洲一区二区三区观看模式 | 久草网视频| 久久69精品久久久久久久电影好 | 亚洲精品色婷婷 | 欧美日韩另类视频 | 国产一级二级在线观看 | 日本在线观看一区 | 国产亚洲视频在线观看 | 亚洲精品激情 | 国产视频中文字幕在线观看 | 免费一区在线 | 国产精品18久久久久白浆 | 国产一级在线看 | 国产精品成人av在线 | 久草视频在 | 丁香六月天婷婷 | 亚洲综合视频在线 | 99久久精品国产欧美主题曲 | 久久超碰97| 人人狠狠 | 热re99久久精品国产66热 | 免费91麻豆精品国产自产在线观看 | 亚洲视频久久久 | 五月开心色 | 精品伊人久久久 | 国产亚洲综合精品 | 天天色天天上天天操 | 中文字幕中文 | 国产丝袜美腿在线 | 久久久久久国产精品久久 | 国产一二三精品 | 粉嫩一二三区 | 99色99| 国产九九精品视频 | 欧美精品一二 | 国产高清视频在线播放一区 | 天天做天天看 | 国产福利一区二区在线 | 四虎在线免费观看视频 | av电影一区 | 久久综合九色综合欧美狠狠 | 精品高清美女精品国产区 | 欧美少妇xxx | 免费观看成人网 | 日韩精品一区二区三区免费观看 | 国产精品男女 | 国产麻豆果冻传媒在线观看 | 国产午夜精品一区二区三区欧美 | 四虎视频 | 91九色视频在线观看 | 91九色蝌蚪视频 | 一区二区在线不卡 | 天天操操操操操 | 婷婷视频在线播放 | 精品999在线观看 | 国产精品久久一区二区三区不卡 | 国产精品一区在线播放 | 婷婷播播网 | 午夜123 | 视频在线观看91 | 中文字幕日韩有码 | 日韩av片无码一区二区不卡电影 | 久久免费福利视频 | 97av精品 | 超碰国产在线播放 | 亚洲一一在线 | 久久久影院官网 | 天天综合视频在线观看 | 国产精品mv在线观看 | 日韩欧美精品在线观看 | 日韩一区二区在线免费观看 | 日本久久精品视频 | 亚洲国产黄色 | 91av视频导航 | 午夜影院三级 | 91成人网页版 | 亚洲成人在线免费 | 国产美女在线观看 | 久草色在线观看 | 91在线国产观看 | 成年人电影毛片 | 亚洲激情国产精品 | 天天干天天操 | 亚洲免费成人 | 91看片在线播放 | 成人av电影网址 | 久久久久久亚洲精品 | 欧美日韩亚洲第一页 | 日本精品久久 | 国产精品一区二区av日韩在线 | 婷婷网在线 | 成人香蕉视频 | 亚洲国产精品资源 | 日韩精品久久中文字幕 | 国产免费美女 | 久久精品香蕉 | 国产黄色精品网站 | 国产视频在 | 亚洲一区精品人人爽人人躁 | 久久久久久高清 | 最近2019中文免费高清视频观看www99 | 四虎影视www | 久久免费高清 | 免费国产在线视频 | 丝袜一区在线 | 91成人天堂久久成人 | 免费男女网站 | 国产露脸91国语对白 | 久久久久久久久久久久99 | av网站有哪些| 97人人澡人人爽人人模亚洲 | 五月激情姐姐 | 中文字幕之中文字幕 | 亚洲国产播放 | 91精品视频免费看 | 日韩xxxx视频 | 日韩专区一区二区 | 一区二区三区动漫 | 久草观看| 久久久亚洲影院 | 婷婷av资源 | 狠狠色丁香久久婷婷综合五月 | 日本一区二区免费在线观看 | 日韩大片免费在线观看 | 亚洲精选国产 | 国产成在线观看免费视频 | 在线观看网站你懂的 | 国产破处在线播放 | 99久久99久久| 91黄色免费看 | 国产看片免费 | 99久高清在线观看视频99精品热在线观看视频 | 国产一区二区三区高清播放 | 国产你懂的在线 | av电影在线观看完整版一区二区 | 就要干b | 久久优 | 在线视频 国产 日韩 | japanesefreesexvideo高潮| 国内精品久久影院 | 日韩欧美一区二区三区在线 | 久久99精品国产麻豆婷婷 | 人人爽人人澡人人添人人人人 | 在线免费观看涩涩 | 国产精品6999成人免费视频 | 国产中文视 | 国产九九在线 | 999久久国精品免费观看网站 | 国产精品1区2区在线观看 | 国产成人久久精品77777 | a天堂免费 | 国产精品久久久久三级 | 天天插天天操天天干 | 国产99久久久国产精品免费看 | 国内精品久久久久久久久久清纯 | 国产原创av片 | 午夜精品一区二区三区在线观看 | 天天操夜夜操夜夜操 | 日韩亚洲精品电影 | 日韩av网站在线播放 | 91黄色免费网站 | 久久国产精品第一页 | 狠狠撸电影 | 四季av综合网站 | 国产精品毛片一区二区三区 | 欧美美女视频在线观看 | 在线观看不卡视频 | 香蕉97视频观看在线观看 | 六月丁香六月婷婷 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产精品一区二区av影院萌芽 | 欧美日产一区 | 亚洲综合视频在线 | 97国产精品免费 | 91高清视频免费 | 国产直播av | 欧美日韩在线第一页 | 操操综合 | 天天摸天天弄 | bayu135国产精品视频 | 色停停五月天 | 国产精品久久久久久一区二区 | 久久天天躁夜夜躁狠狠85麻豆 | 欧美精品视 | 国产精品久久电影网 | 西西44人体做爰大胆视频 | 日韩特级黄色片 | 国产精品手机在线 | 国产成人一区三区 | 日韩激情三级 | 成人网色| 一区二区在线电影 | 欧美韩日视频 | 国产精品va在线观看入 | 看片的网址 | 在线黄色免费av | 二区三区在线观看 | 91av官网 | 日韩高清在线观看 | 国产一级黄色av | 91亚洲国产成人久久精品网站 | 手机看国产毛片 | 天天干天天拍天天操 | 一区二区视频在线播放 | 亚洲免费在线 | 天天操天天操天天爽 | 欧美黑人性猛交 | 综合色站 | 999久久国产精品免费观看网站 | 欧美三级高清 | 欧美日韩视频免费 | 亚洲综合欧美日韩狠狠色 | 免费黄色av.| 久久人人爽爽人人爽人人片av | 国色综合| 欧美孕妇与黑人孕交 | 在线激情电影 | 嫩嫩影院理论片 | 久久国产美女 | 91亚洲在线 | 午夜影视剧场 | 亚洲成人av一区 | 免费a级毛片在线看 | 色夜视频 | 在线观看av国产 | 美女视频a美女大全免费下载蜜臀 | 日韩欧美一区二区三区视频 | 国产精品久久久久久久久久三级 | 天天插天天操天天干 | 久久精品久久精品久久精品 | 99精品免费网 | 色爱区综合激月婷婷 | 一区 二区电影免费在线观看 | 国产毛片久久 | 日韩一区二区三区免费视频 | av在线免费观看不卡 | 狠狠干天天干 | 91久久久久久国产精品 | a黄色片在线观看 | 国产中文字幕久久 | 国产黄色片网站 | 亚洲一区二区天堂 | www.天天色.com | 国产 在线观看 | 亚洲欧美日韩精品久久奇米一区 | 亚洲精品成人av在线 | 亚洲精品免费在线观看 | 在线免费观看欧美日韩 | av青草 | 免费成人黄色 | 又黄又爽免费视频 | 四虎影视成人永久免费观看视频 | 亚洲 欧美 另类人妖 | 欧美综合色在线图区 | 日韩在线视频免费看 | 久久国产亚洲视频 | 在线观看成人毛片 | 亚洲精品高清视频在线观看 | 午夜视频黄 | www.久久色| 色婷在线 | 日韩高清在线观看 | 国产成人精品久久二区二区 | 久久综合免费视频 | 91最新视频在线观看 | 97色在线视频 | 奇米影视四色8888 | 最新91在线视频 | 亚洲国产中文字幕在线视频综合 | 国产无遮挡又黄又爽馒头漫画 | 天天草天天摸 | 国产精品麻豆免费版 | 在线观看国产91 | 亚洲免费视频观看 | 正在播放 国产精品 | 国产日本亚洲 | 黄色国产大片 | 黄色大片国产 | 欧美日韩网站 | 99久久这里有精品 | 永久免费视频国产 | 国产亚洲精品美女久久 | 人人插人人射 | 涩av在线| 天天射射天天 | 国产男女无遮挡猛进猛出在线观看 | 久久久久久久综合色一本 | 亚洲成人动漫在线观看 | 欧洲av不卡 | 99久久一区 | 日本午夜免费福利视频 | 国产经典三级 | 日本三级在线观看中文字 | 国产精品久久久久久久妇 | 国产91精品在线观看 | 欧美精品久久久久久久亚洲调教 | 久久香蕉国产 | 天天透天天插 | 国产成人在线免费观看 | wwwwww色| 日本精品中文字幕在线观看 | 91精品国产自产在线观看 | 最新日本中文字幕 | 青青草国产免费 | 亚洲精品影视 | 在线色吧 | 久久综合五月婷婷 | 日韩精品中字 | 国产日韩欧美视频在线观看 | 久久黄色成人 | 九九视频在线观看视频6 | 国产一区二区在线免费 | 国产精品视频最多的网站 | 五月婷综合 | 国产精品视频地址 | 国产又黄又猛又粗 | 91九色视频在线观看 | 97国产精品| 992tv在线观看网站 | 色综合 久久精品 | 中文字幕在线日亚洲9 | 中文国产成人精品久久一 | 日韩一级电影网站 | 久久久www成人免费精品张筱雨 | av视屏在线播放 | 亚洲精品国产综合99久久夜夜嗨 | av电影在线不卡 | 久久在线精品 | 日韩欧美精选 | 国产 成人 久久 | 亚洲视频axxx | 一级黄色片在线播放 | av网址aaa| 综合国产视频 | 国产99久久久精品 | 国产精品一区二区av日韩在线 | 久久这里只有精品9 | 国产a级精品 | 中文区中文字幕免费看 | av高清网站在线观看 | 国产在线视频不卡 | 日韩精品极品视频 | 国产91全国探花系列在线播放 | 久久免费在线观看 | 国产视频在线播放 | 国产最新福利 | 天天射天| 国产美女网站视频 | 国产精品一区二区免费看 | 国产特黄色片 | 欧美色图亚洲图片 | 99精品国产福利在线观看免费 | 在线 高清 中文字幕 | 亚洲一区在线看 | 成人免费在线观看av | 激情视频区 | 国产视频 亚洲精品 | 国产又粗又猛又黄视频 | 亚洲国产精品成人av | 中文字幕在线观看视频一区二区三区 | 激情视频综合网 | 中文字幕在线观看免费 | 国产五月天婷婷 | 特黄色大片 | 日韩高清 一区 | 91亚洲欧美 | 超碰人人乐 | 中文字幕在线看视频 | 国产精品视频一二三 | 免费a级黄色毛片 | 精品国产一区二区三区日日嗨 | 97偷拍视频| 天天操天天添天天吹 | 久久激情五月丁香伊人 | 婷婷夜夜 | 亚洲狠狠丁香婷婷综合久久久 | 欧美精品久久久久久久久久白贞 | 久久99精品一区二区三区三区 | 青春草免费在线视频 | 精品v亚洲v欧美v高清v | 天天夜夜操 | 色婷婷中文 | 日韩黄色在线观看 | 亚洲国产播放 | 色综合久久天天 | 激情五月婷婷综合 | 五月天网页 | 婷婷狠狠操| 国产精品二区在线观看 | 91av蜜桃 | 一区二区精品在线 | 国产一区二区三区免费在线观看 | 国产麻豆剧果冻传媒视频播放量 | 久久精品人人做人人综合老师 | 亚州国产精品 | 制服丝袜天堂 | 欧美精品乱码久久久久 | 成人黄色电影在线播放 | 丰满少妇一级 | 日本精品中文字幕在线观看 | 视频福利在线观看 | 日韩免费播放 | 一区二区 不卡 | 久久在线观看视频 | 日本中文乱码卡一卡二新区 | 亚洲在线成人精品 | 日b视频在线观看网址 | 亚洲视频网站在线观看 | 99国产精品久久久久老师 | 奇米网在线观看 | 毛片二区 | 日本久久久影视 | 色鬼综合网 | 亚洲天堂网站 | 色婷婷综合久久久久 | 人人爽人人乐 | www色婷婷com| 久久最新网址 | 午夜精品999 | 久草在线高清 | 狠狠色2019综合网 | 精品视频在线看 | 日韩午夜三级 | 国产999免费视频 | 久久精品91久久久久久再现 | 精品一区在线 | 免费精品久久久 | 国产高清精品在线观看 | 国产精品毛片一区视频播不卡 | 在线va网站| 五月开心色 | 91成人免费在线视频 | 免费成人在线观看视频 | 一区二区三区免费播放 | 中文字幕在线视频一区二区三区 | 九九热在线视频 | 日韩av女优视频 | 91热精品 | 激情五月***国产精品 | 日本视频久久久 | av电影不卡| 久草视频在线播放 | 在线直播av | 欧美成人h版在线观看 | 国产在线精品二区 | 91av欧美| 国产精品九九久久久久久久 | 91成人短视频在线观看 | 国产精品毛片久久蜜 | 欧美污网站 | 久久av中文字幕片 | 久久综合久久鬼 | 久久久国产精品一区二区中文 | bbw av| 久久成人国产精品入口 | 久久免费在线 | 亚洲精品999 | 久久综合九色99 | 午夜12点| 国产免费视频在线 | 91精品办公室少妇高潮对白 | 久久综合色婷婷 | 亚洲第一成网站 | 欧美analxxxx| 午夜久久久久久久久久影院 | 深爱激情五月综合 | 在线电影日韩 | 精品国产一二三 | 黄色视屏免费在线观看 | 91丨九色丨91啦蝌蚪老版 | 日日夜夜精品视频 | 亚洲高清视频在线观看免费 | 4438全国亚洲精品在线观看视频 | 日韩国产精品一区 | 久久精品播放 | 91插插影库| 在线免费观看黄色 | 激情黄色av | 免费看的视频 | 日韩一区二区三 | 97av影院| 亚洲黄在线观看 | 91视频午夜| 免费在线观看亚洲视频 | 国产麻豆精品95视频 | 日韩欧美大片免费观看 | 欧美中文字幕久久 | 日韩精品一区不卡 | 国产精品正在播放 | 碰超在线97人人 | 精品99久久| 最近中文字幕免费观看 | 国产美女视频免费 | 国产日韩在线播放 | 久久影视网 | 亚洲精品乱码久久久久久蜜桃动漫 | 日日日干 | 激情视频91 | 国产精品久久久久久电影 | 免费色网 | 日韩视频一| 波多野结衣一区三区 | 国产原创在线观看 | 99视频免费看 | 干av在线| 久久免费av | 免费黄色特级片 | 国产乱对白刺激视频在线观看女王 | 欧美在线视频a | 国产激情电影综合在线看 | 日韩免费电影一区二区三区 | 免费久久久 | 国产999精品久久久久久绿帽 | av中文在线观看 | 久久这里 | 国产亚洲精品av | 欧美与欧洲交xxxx免费观看 | 国产精品专区在线观看 | 在线观看亚洲精品视频 | 国产精品免费视频网站 | 国产区 在线 | av福利在线免费观看 | 五月天av在线| 在线免费观看国产黄色 | 最近免费中文字幕 | 久久99国产一区二区三区 | 黄网av在线| 久草线 | 欧美一级片 | 国产群p视频 | 波多野结衣视频一区二区三区 | 成人在线观看你懂的 | 国产精品入口麻豆www | 国产精品美女久久久久久久久 | 欧美乱熟臀69xxxxxx | 97超碰在线久草超碰在线观看 | 亚洲精品在线免费播放 | 96国产在线 | 欧美不卡视频在线 | 久久欧美综合 | 一区二区视频在线看 | 久久久久久久久黄色 | 久久久久激情电影 | 伊人av综合 | 99综合久久 | 国产成人一二三 | 国产在线观看你懂的 | 99r在线播放 | 色婷婷婷 | 欧美激情视频在线观看免费 | 成人a在线观看高清电影 | 天天操天天是 | 人人插人人澡 | 国产精品99免费看 | 亚洲一区二区视频在线播放 | 九月婷婷人人澡人人添人人爽 | 久久久久久久久久影视 | 丝袜制服天堂 | 天天干天天怕 | 日韩天天综合 | 亚洲一区二区视频在线 | 奇米影视999 | 97操操操 | 99视频+国产日韩欧美 | www.久久久精品 | 色吧久久 | 最近日韩免费视频 | 欧洲在线免费视频 | 黄色在线观看免费 | 17videosex性欧美 | 午夜免费福利视频 | 丰满少妇在线观看 | 91精品蜜桃 | 欧美日韩在线视频观看 | 四虎成人精品永久免费av九九 | 亚洲va综合va国产va中文 | 不卡中文字幕在线 | 亚洲 欧美 成人 | 一本一本久久a久久 | 亚洲国产成人久久综合 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 手机av永久免费 | 99精品免费久久久久久日本 | 综合久久久久久 | 国产成人亚洲精品自产在线 | 国产精品毛片久久久 | 国产成人精品一区二区三区网站观看 | 欧美另类亚洲 | 国产精品欧美久久久久久 | 国产视频久久 | 四虎国产精品免费观看视频优播 | 欧美日韩免费网站 | 中文字幕一区二区三区在线播放 | 日本精油按摩3 | 午夜精品成人一区二区三区 | 成人在线观看资源 | 在线观看岛国av | 九九久久久久99精品 | 亚洲精区二区三区四区麻豆 | 高清av免费看 | 91在线一区 | 不卡av在线播放 | 欧美国产日韩一区二区三区 | 国产精品美女免费看 | 超碰日韩在线 | 天天玩天天干 | 免费高清男女打扑克视频 | 成人91在线观看 | 亚洲va欧洲va国产va不卡 | 久久综合狠狠狠色97 | 精品视频在线免费 | 久久久久欠精品国产毛片国产毛生 | 国产天天爽 | 精品国产乱码久久久久久久 | 99久久99久久精品国产片 | 国产亚洲人成网站在线观看 | 香蕉国产91 | 成人小视频在线播放 | 国产首页| 中文字幕一区二区三区精华液 | 亚洲影院一区 | 天天视频色版 | 日韩精品中文字幕有码 | 色姑娘综合 | 日韩三区在线观看 | av高清网站在线观看 | 欧美午夜性 | 亚洲欧洲精品视频 | 国产一线二线三线在线观看 | 懂色av一区二区在线播放 | 日韩理论电影在线 | 啪啪免费观看网站 | 超碰97在线人人 | 日b视频在线观看网址 | 午夜精品久久久久久久久久久久久久 | 中文字幕第一页在线视频 | 国产精品久久久久久69 | 91九色国产在线 | 又黄又爽免费视频 | 激情婷婷色 | 亚洲成人一区 | 久草在线视频新 | 久久久久久久国产精品视频 | 久久在线视频在线 | 成在人线av | 一级黄色片在线观看 | 91最新国产 | 亚洲国产美女精品久久久久∴ | 手机在线看片日韩 | 五月婷婷亚洲 | 日韩电影中文,亚洲精品乱码 | 久久久受www免费人成 | 一二三精品视频 | 久久精品看 | 国产精品久久久亚洲 | 国产高清免费 | 久久高清免费 | 99久久婷婷 | 国产xx视频| www.狠狠操.com| 久久国产综合视频 | 最新av网址大全 | 国产一级不卡视频 | 就色干综合 | 欧美福利视频一区 | 精品美女久久久久久免费 | 在线你懂| 久久国产精品免费观看 | 国产中文字幕在线视频 | 国产一区在线不卡 | 最近中文字幕国语免费高清6 | 亚洲女欲精品久久久久久久18 | 国产成人三级一区二区在线观看一 | 91av欧美| 97免费 | 午夜av日韩 | 国产精品高潮呻吟久久av无 | 亚洲综合在线五月 | 亚洲精品国偷自产在线91正片 | 天天天天色综合 | 欧美日韩一区二区三区免费视频 | 97av视频在线 | 欧美日韩国产在线观看 | 玖玖爱免费视频 | 天天色天天草天天射 | 久久新视频| 一区二区三区播放 | 韩国一区在线 | 久草男人天堂 | 美女久久久久久 | 久草国产精品 | 色国产精品一区在线观看 | 亚洲精品成人av在线 | 综合久久综合久久 | 丝袜网站在线观看 | 亚洲专区中文字幕 | 毛片激情永久免费 | 热re99久久精品国产66热 | 欧美日韩99 | 日韩在线观看av | 国产四虎在线 | 国产又黄又爽又猛视频日本 | 美女av免费看 | 操操日日 | av电影中文 | 九九热免费在线视频 | 日本特黄特色aaa大片免费 | 在线观看av片 | 久久精品一区二区三区视频 | 日韩一区在线播放 | 91经典在线 | 九九热免费在线视频 | 亚洲播播 | 欧美了一区在线观看 | av女优中文字幕在线观看 | 色香天天| 天天操夜夜逼 | 最近日本韩国中文字幕 | 欧美激情第一页xxx 午夜性福利 | 国产精品久久久久久妇 | 亚洲欧美视频 | 成年人国产精品 | www.黄色在线| 五月婷婷在线播放 | 麻豆国产精品va在线观看不卡 | 欧美激情第一页xxx 午夜性福利 | 国产精品美女久久久久久免费 | 久久激情视频 | 中文字幕在线观看一区 | 国产精品美女久久久久久 | 成人小视频在线观看免费 | 欧美日韩精品在线观看 | 欧美精品国产综合久久 | 在线观看免费版高清版 | 又黄又爽又刺激的视频 | 国产视频不卡一区 | 久久久综合九色合综国产精品 | 免费在线色视频 | 新版资源中文在线观看 | 久久久精品在线观看 | 处女av在线| 亚洲一区二区高潮无套美女 | 欧美日韩在线观看一区二区三区 | 天天操天天干天天操天天干 | 国产.精品.日韩.另类.中文.在线.播放 |