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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(八)ThreadLocal的使用及原理分析

發布時間:2024/4/14 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (八)ThreadLocal的使用及原理分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是ThreadLocal

ThreadLocal,簡單翻譯過來就是本地線程,但是直接這么翻譯很難理解ThreadLocal的作用,如果換一種說法,可以稱為線程本地存儲。簡單來說,就是ThreadLocal為共享變量在每個線程中都創建一個副本,每個線程可以訪問自己內部的副本變量。這樣做的好處是可以保證共享變量在多線程環境下訪問的線程安全性

ThreadLocal的使用

沒有使用ThreadLocal時

通過一個簡單的例子來演示一下ThreadLocal的作用,這段代碼是定義了一個靜態的成員變量num,然后通過構造5個線程對這個num做遞增

public class ThreadLocalDemo {private static Integer num=0;public static void main(String[] args) {Thread[] threads=new Thread[5];for(int i=0;i<5;i++){threads[i]=new Thread(()->{num+=5;System.out.println(Thread.currentThread().getName()+" : "+num);},"Thread-"+i);}for(Thread thread:threads){thread.start();}} }

運行結果

Thread-0 : 5 Thread-1 : 10 Thread-2 : 15 Thread-3 : 20 Thread-4 : 25

每個線程都會對這個成員變量做遞增,如果線程的執行順序不確定,那么意味著每個線程獲得的結果也是不一樣的。

使用了ThreadLocal以后

通過ThreadLocal對上面的代碼做一個改動

public class ThreadLocalDemo {private static final ThreadLocal<Integer> local=new ThreadLocal<Integer>(){protected Integer initialValue(){return 0; //通過initialValue方法設置默認值}};public static void main(String[] args) {Thread[] threads=new Thread[5];for(int i=0;i<5;i++){threads[i]=new Thread(()->{int num=local.get().intValue();num+=5;System.out.println(Thread.currentThread().getName()+" : "+num);},"Thread-"+i);}for(Thread thread:threads){thread.start();}} }

運行結果

Thread-0 : 5 Thread-4 : 5 Thread-2 : 5 Thread-1 : 5 Thread-3 : 5

從結果可以看到,每個線程的值都是5,意味著各個線程之間都是獨立的變量副本,彼此不相互影響.

ThreadLocal會給定一個初始值,也就是initialValue()方法,而每個線程都會從ThreadLocal中獲得這個初始化的值的副本,這樣可以使得每個線程都擁有一個副本拷貝

看到這里,估計有很多人都會和我一樣有一些疑問

  • 每個線程的變量副本是怎么存儲的?
  • ThreadLocal是如何實現多線程場景下的共享變量副本隔離?
  • 帶著疑問,來看一下ThreadLocal這個類的定義(默認情況下,JDK的源碼都是基于1.8版本)

    從ThreadLocal的方法定義來看,還是挺簡單的。就幾個方法

    • get: 獲取ThreadLocal中當前線程對應的線程局部變量
    • set:設置當前線程的線程局部變量的值
    • remove:將當前線程局部變量的值刪除

    另外,還有一個initialValue()方法,在前面的代碼中有演示,作用是返回當前線程局部變量的初始值,這個方法是一個protected方法,主要是在構造ThreadLocal時用于設置默認的初始值

    set方法的實現

    set方法是設置一個線程的局部變量的值,相當于當前線程通過set設置的局部變量的值,只對當前線程可見。

    public void set(T value) {Thread t = Thread.currentThread();//獲取當前執行的線程ThreadLocalMap map = getMap(t); //獲得當前線程的ThreadLocalMap實例if (map != null)//如果map不為空,說明當前線程已經有了一個ThreadLocalMap實例map.set(this, value);//直接將當前value設置到ThreadLocalMap中elsecreateMap(t, value); //說明當前線程是第一次使用線程本地變量,構造map}
    • Thread.currentThread 獲取當前執行的線程
    • getMap(t) ,根據當前線程得到當前線程的ThreadLocalMap對象,這個對象具體是做什么的?稍后分析
    • 如果map不為空,說明當前線程已經構造過ThreadLocalMap,直接將值存儲到map中
    • 如果map為空,說明是第一次使用,調用createMap構造

    ThreadLocalMap是什么?

    我們來分析一下這句話,ThreadLocalMap map=getMap(t)獲得一個ThreadLocalMap對象,那這個對象是干嘛的呢?
    其實不用分析,基本上也能猜測出來,Map是一個集合,集合用來存儲數據,那么在ThreadLocal中,應該就是用來存儲線程的局部變量的。ThreadLocalMap這個類很關鍵。

    ThreadLocalMap getMap(Thread t) {return t.threadLocals;}

    t.threadLocals實際上就是訪問Thread類中的ThreadLocalMap這個成員變量

    public class Thread implements Runnable {/* ThreadLocal values pertaining to this thread. This map is maintained* by the ThreadLocal class. */ThreadLocal.ThreadLocalMap threadLocals = null; ... }

    從上面的代碼發現每一個線程都有自己單獨的ThreadLocalMap實例,而對應這個線程的所有本地變量都會保存到這個map內

    ThreadLocalMap是在哪里構造?

    在set方法中,有一行代碼createmap(t,value);,這個方法就是用來構造ThreadLocalMap,從傳入的參數來看,它的實現邏輯基本也能猜出出幾分吧

    void createMap(Thread t, T firstValue) {t.threadLocals = new ThreadLocalMap(this, firstValue);}

    Thread t 是通過Thread.currentThread()來獲取的表示當前線程,然后直接通過new ThreadLocalMap將當前線程中的threadLocals做了初始化
    ThreadLocalMap是一個靜態內部類,內部定義了一個Entry對象用來真正存儲數據

    static class ThreadLocalMap {static class Entry extends WeakReference<ThreadLocal<?>> {/** The value associated with this ThreadLocal. */Object value;Entry(ThreadLocal<?> k, Object v) {super(k);value = v;}}ThreadLocalMap(ThreadLocal<?> firstKey, Object firstValue) {//構造一個Entry數組,并設置初始大小table = new Entry[INITIAL_CAPACITY];//計算Entry數據下標int i = firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1);//將`firstValue`存入到指定的table下標中table[i] = new Entry(firstKey, firstValue);size = 1;//設置節點長度為1setThreshold(INITIAL_CAPACITY); //設置擴容的閾值}//...省略部分代碼 } 分析到這里,基本知道了ThreadLocalMap長啥樣了,也知道它是如何構造的?那么我看到這里的時候仍然有疑問
    • Entry集成了WeakReference,這個表示什么意思?
    • 在構造ThreadLocalMap的時候new ThreadLocalMap(this, firstValue);,key其實是this,this表示當前對象的引用,在當前的案例中,this指的是ThreadLocal<Integer> local。那么多個線程對應同一個ThreadLocal實例,怎么對每一個ThreadLocal對象做區分呢?

    解惑WeakReference

    weakReference表示弱引用,在Java中有四種引用類型,強引用、弱引用、軟引用、虛引用。
    使用弱引用的對象,不會阻止它所指向的對象被垃圾回收器回收。

    在Java語言中, 當一個對象o被創建時, 它被放在Heap里. 當GC運行的時候, 如果發現沒有任何引用指向o, o就會被回收以騰出內存空間. 也就是說, 一個對象被回收, 必須滿足兩個條件:

    • 沒有任何引用指向它
    • GC被運行.

    這段代碼中,構造了兩個對象a,b,a是對象DemoA的引用,b是對象DemoB的引用,對象DemoB同時還依賴對象DemoA,那么這個時候我們認為從對象DemoB是可以到達對象DemoA的。這種稱為強可達(strongly reachable)

    DemoA a=new DemoA(); DemoB b=new DemoB(a);

    如果我們增加一行代碼來將a對象的引用設置為null,當一個對象不再被其他對象引用的時候,是會被GC回收的,但是對于這個場景來說,即時是a=null,也不可能被回收,因為DemoB依賴DemoA,這個時候是可能造成內存泄漏的

    DemoA a=new DemoA(); DemoB b=new DemoB(a); a=null;

    通過弱引用,有兩個方法可以避免這樣的問題

    //方法1 DemoA a=new DemoA(); DemoB b=new DemoB(a); a=null; b=null; //方法2 DemoA a=new DemoA(); WeakReference b=new WeakReference(a); a=null;

    對于方法2來說,DemoA只是被弱引用依賴,假設垃圾收集器在某個時間點決定一個對象是弱可達的(weakly reachable)(也就是說當前指向它的全都是弱引用),這時垃圾收集器會清除所有指向該對象的弱引用,然后把這個弱可達對象標記為可終結(finalizable)的,這樣它隨后就會被回收。

    試想一下如果這里沒有使用弱引用,意味著ThreadLocal的生命周期和線程是強綁定,只要線程沒有銷毀,那么ThreadLocal一直無法回收。而使用弱引用以后,當ThreadLocal被回收時,由于Entry的key是弱引用,不會影響ThreadLocal的回收防止內存泄漏,同時,在后續的源碼分析中會看到,ThreadLocalMap本身的垃圾清理會用到這一個好處,方便對無效的Entry進行回收

    解惑ThreadLocalMap以this作為key

    在構造ThreadLocalMap時,使用this作為key來存儲,那么對于同一個ThreadLocal對象,如果同一個Thread中存儲了多個值,是如何來區分存儲的呢?
    答案就在firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1)

    void createMap(Thread t, T firstValue) {t.threadLocals = new ThreadLocalMap(this, firstValue); }ThreadLocalMap(ThreadLocal<?> firstKey, Object firstValue) {table = new Entry[INITIAL_CAPACITY];int i = firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1);table[i] = new Entry(firstKey, firstValue);size = 1;setThreshold(INITIAL_CAPACITY); }

    關鍵點就在threadLocalHashCode,它相當于一個ThreadLocal的ID,實現的邏輯如下

    private final int threadLocalHashCode = nextHashCode(); private static AtomicInteger nextHashCode =new AtomicInteger(); private static final int HASH_INCREMENT = 0x61c88647;private static int nextHashCode() {return nextHashCode.getAndAdd(HASH_INCREMENT); }

    這里用到了一個非常完美的散列算法,可以簡單理解為,對于同一個ThreadLocal下的多個線程來說,當任意線程調用set方法存入一個數據到Entry中的時候,其實會根據threadLocalHashCode生成一個唯一的id標識對應這個數據,存儲在Entry數據下標中。

    • threadLocalHashCode是通過nextHashCode.getAndAdd(HASH_INCREMENT)來實現的

    i*HASH_INCREMENT+HASH_INCREMENT,每次新增一個元素(ThreadLocal)到Entry[],都會自增0x61c88647,目的為了讓哈希碼能均勻的分布在2的N次方的數組里

    • Entry[i]= hashCode & (length-1)

    魔數0x61c88647

    從上面的分析可以看出,它是在上一個被構造出的ThreadLocal的threadLocalHashCode的基礎上加上一個魔數0x61c88647。我們來做一個實驗,看看這個散列算法的運算結果

    private static final int HASH_INCREMENT = 0x61c88647;public static void main(String[] args) {magicHash(16); //初始大小16magicHash(32); //擴容一倍}private static void magicHash(int size){int hashCode = 0;for(int i=0;i<size;i++){hashCode = i*HASH_INCREMENT+HASH_INCREMENT;System.out.print((hashCode & (size-1))+" ");}System.out.println();}

    輸出結果

    7 14 5 12 3 10 1 8 15 6 13 4 11 2 9 0 7 14 21 28 3 10 17 24 31 6 13 20 27 2 9 16 23 30 5 12 19 26 1 8 15 22 29 4 11 18 25 0

    根據運行結果,這個算法在長度為2的N次方的數組上,確實可以完美散列,沒有任何沖突, 是不是很神奇。

    魔數0x61c88647的選取和斐波那契散列有關,0x61c88647對應的十進制為1640531527。而斐波那契散列的乘數可以用(long) ((1L << 31) * (Math.sqrt(5) - 1)); 如果把這個值給轉為帶符號的int,則會得到-1640531527。也就是說
    (long) ((1L << 31) * (Math.sqrt(5) - 1));得到的結果就是1640531527,也就是魔數0x61c88647 //(根號5-1)*2的31次方=(根號5-1)/2 *2的32次方=黃金分割數*2的32次方 long l1 = (long) ((1L << 31) * (Math.sqrt(5) - 1)); System.out.println("32位無符號整數: " + l1); int i1 = (int) l1; System.out.println("32位有符號整數: " + i1); 總結,我們用0x61c88647作為魔數累加為每個ThreadLocal分配各自的ID也就是threadLocalHashCode再與2的冪取模,得到的結果分布很均勻。

    圖形分析

    為了更直觀的體現set方法的實現,通過一個圖形表示如下

    set剩余源碼分析

    前面分析了set方法第一次初始化ThreadLocalMap的過程,也對ThreadLocalMap的結構有了一個全面的了解。那么接下來看一下map不為空時的執行邏輯

    private void set(ThreadLocal<?> key, Object value) {Entry[] tab = table;int len = tab.length;// 根據哈希碼和數組長度求元素放置的位置,即數組下標int i = key.threadLocalHashCode & (len-1);//從i開始往后一直遍歷到數組最后一個Entry(線性探索)for (Entry e = tab[i];e != null;e = tab[i = nextIndex(i, len)]) {ThreadLocal<?> k = e.get();//如果key相等,覆蓋valueif (k == key) {e.value = value;return;}//如果key為null,用新key、value覆蓋,同時清理歷史key=null的陳舊數據if (k == null) {replaceStaleEntry(key, value, i);return;}}tab[i] = new Entry(key, value);int sz = ++size;//如果超過閥值,就需要擴容了if (!cleanSomeSlots(i, sz) && sz >= threshold)rehash();}

    主要邏輯

    • 根據key的散列哈希計算Entry的數組下標
    • 通過線性探索探測從i開始往后一直遍歷到數組的最后一個Entry
    • 如果map中的key和傳入的key相等,表示該數據已經存在,直接覆蓋
    • 如果map中的key為空,則用新的key、value覆蓋,并清理key=null的數據
    • rehash擴容

    replaceStaleEntry

    由于Entry的key為弱引用,如果key為空,說明ThreadLocal這個對象被GC回收了。
    replaceStaleEntry的作用就是把陳舊的Entry進行替換

    private void replaceStaleEntry(ThreadLocal<?> key, Object value,int staleSlot) {Entry[] tab = table;int len = tab.length;Entry e;//向前掃描,查找最前一個無效的slotint slotToExpunge = staleSlot;for (int i = prevIndex(staleSlot, len);(e = tab[i]) != null;i = prevIndex(i, len))if (e.get() == null)//通過循環遍歷,可以定位到最前面一個無效的slotslotToExpunge = i; //從i開始往后一直遍歷到數組最后一個Entry(線性探索)for (int i = nextIndex(staleSlot, len);(e = tab[i]) != null;i = nextIndex(i, len)) {ThreadLocal<?> k = e.get();//找到匹配的key以后if (k == key) {e.value = value;//更新對應slot的value值//與無效的sloat進行交換tab[i] = tab[staleSlot];tab[staleSlot] = e;//如果最早的一個無效的slot和當前的staleSlot相等,則從i作為清理的起點if (slotToExpunge == staleSlot)slotToExpunge = i;//從slotToExpunge開始做一次連續的清理cleanSomeSlots(expungeStaleEntry(slotToExpunge), len);return;}//如果當前的slot已經無效,并且向前掃描過程中沒有無效slot,則更新slotToExpunge為當前位置if (k == null && slotToExpunge == staleSlot)slotToExpunge = i;}//如果key對應的value在entry中不存在,則直接放一個新的entrytab[staleSlot].value = null;tab[staleSlot] = new Entry(key, value);//如果有任何一個無效的slot,則做一次清理if (slotToExpunge != staleSlot)cleanSomeSlots(expungeStaleEntry(slotToExpunge), len);}

    cleanSomeSlots

    這個函數有兩處地方會被調用,用于清理無效的Entry

    • 插入的時候可能會被調用
    • 替換無效slot的時候可能會被調用

    區別是前者傳入的n為元素個數,后者為table的容量

    private boolean cleanSomeSlots(int i, int n) {boolean removed = false;Entry[] tab = table;int len = tab.length;do {// i在任何情況下自己都不會是一個無效slot,所以從下一個開始判斷i = nextIndex(i, len);Entry e = tab[i];if (e != null && e.get() == null) {n = len;// 擴大掃描控制因子removed = true;i = expungeStaleEntry(i); // 清理一個連續段}} while ( (n >>>= 1) != 0);return removed;}

    expungeStaleEntry

    執行一次全量清理

    private int expungeStaleEntry(int staleSlot) {Entry[] tab = table;int len = tab.length;// expunge entry at staleSlottab[staleSlot].value = null;//刪除valuetab[staleSlot] = null;//刪除entrysize--; //map的size遞減// Rehash until we encounter nullEntry e;int i;for (i = nextIndex(staleSlot, len);// 遍歷指定刪除節點,所有后續節點(e = tab[i]) != null;i = nextIndex(i, len)) {ThreadLocal<?> k = e.get();if (k == null) {//key為null,執行刪除操作e.value = null;tab[i] = null;size--;} else {//key不為null,重新計算下標int h = k.threadLocalHashCode & (len - 1);if (h != i) {//如果不在同一個位置tab[i] = null;//把老位置的entry置null(刪除)// 從h開始往后遍歷,一直到找到空為止,插入while (tab[h] != null)h = nextIndex(h, len);tab[h] = e;}}}return i;}

    get操作

    set的邏輯分析完成以后,get的源碼分析就很簡單了

    public T get() {Thread t = Thread.currentThread();//從當前線程中獲取ThreadLocalMapThreadLocalMap map = getMap(t);if (map != null) {//查詢當前ThreadLocal變量實例對應的EntryThreadLocalMap.Entry e = map.getEntry(this);if (e != null) {//獲取成功,直接返回@SuppressWarnings("unchecked")T result = (T)e.value;return result;}}//如果map為null,即還沒有初始化,走初始化方法return setInitialValue();}

    setInitialValue

    根據initialValue()的value初始化ThreadLocalMap

    private T setInitialValue() {T value = initialValue();//protected方法,用戶可以重寫Thread t = Thread.currentThread();ThreadLocalMap map = getMap(t);if (map != null)//如果map不為null,把初始化value設置進去map.set(this, value);else//如果map為null,則new一個map,并把初始化value設置進去createMap(t, value);return value;}
    • 從當前線程中獲取ThreadLocalMap,查詢當前ThreadLocal變量實例對應的Entry,如果不為null,獲取value,返回
    • 如果map為null,即還沒有初始化,走初始化方法

    remove方法

    remove的方法比較簡單,從Entry[]中刪除指定的key就行

    public void remove() {ThreadLocalMap m = getMap(Thread.currentThread());if (m != null)m.remove(this);}private void remove(ThreadLocal<?> key) {Entry[] tab = table;int len = tab.length;int i = key.threadLocalHashCode & (len-1);for (Entry e = tab[i];e != null;e = tab[i = nextIndex(i, len)]) {if (e.get() == key) {e.clear();//調用Entry的clear方法expungeStaleEntry(i);//清除陳舊數據return;}}}

    應用場景

    ThreadLocal的實際應用場景:

  • 比如在線程級別,維護session,維護用戶登錄信息userID(登陸時插入,多個地方獲取)
  • 數據庫的鏈接對象Connection,可以通過ThreadLocal來做隔離避免線程安全問題
  • 問題

    ThreadLocal的內存泄漏

    ThreadLocalMap中Entry的key使用的是ThreadLocal的弱引用,如果一個ThreadLocal沒有外部強引用,當系統執行GC時,這個ThreadLocal勢必會被回收,這樣一來,ThreadLocalMap中就會出現一個key為null的Entry,而這個key=null的Entry是無法訪問的,當這個線程一直沒有結束的話,那么就會存在一條強引用鏈

    Thread Ref - > Thread -> ThreadLocalMap - > Entry -> value 永遠無法回收而造成內存泄漏

    其實我們從源碼分析可以看到,ThreadLocalMap是做了防護措施的
    • 首先從ThreadLocal的直接索引位置(通過ThreadLocal.threadLocalHashCode & (len-1)運算得到)獲取Entry e,如果e不為null并且key相同則返回e
    • 如果e為null或者key不一致則向下一個位置查詢,如果下一個位置的key和當前需要查詢的key相等,則返回對應的Entry,否則,如果key值為null,則擦除該位置的Entry,否則繼續向下一個位置查詢

    在這個過程中遇到的key為null的Entry都會被擦除,那么Entry內的value也就沒有強引用鏈,自然會被回收。仔細研究代碼可以發現,set操作也有類似的思想,將key為null的這些Entry都刪除,防止內存泄露。
    但是這個設計一來與一個前提條件,就是調用get或者set方法,但是不是所有場景都會滿足這個場景的,所以為了避免這類的問題,我們可以在合適的位置手動調用ThreadLocal的remove函數刪除不需要的ThreadLocal,防止出現內存泄漏

    所以建議的使用方法是
    • 將ThreadLocal變量定義成private static的,這樣的話ThreadLocal的生命周期就更長,由于一直存在ThreadLocal的強引用,所以ThreadLocal也就不會被回收,也就能保證任何時候都能根據ThreadLocal的弱引用訪問到Entry的value值,然后remove它,防止內存泄露
    • 每次使用完ThreadLocal,都調用它的remove()方法,清除數據。

    總結

    以上是生活随笔為你收集整理的(八)ThreadLocal的使用及原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    美女视频黄是免费的 | 国产日产高清dvd碟片 | 黄网在线免费观看 | 又黄又刺激 | 麻豆久久久久 | 天天操天天爽天天干 | 欧洲亚洲女同hd | 99久久精品无码一区二区毛片 | 欧美性成人 | 精品福利网站 | 成人在线你懂得 | 欧美精品在线观看免费 | 亚洲精品99久久久久中文字幕 | 天天色图| 欧美a级免费视频 | 香蕉在线播放 | 国产一二区视频 | 欧美成年人在线视频 | 首页中文字幕 | 91视频免费观看 | 亚洲视频专区在线 | 国产精品久久久久久久久久久久久 | 精品自拍网 | 干亚洲少妇 | 国产精品美女久久久久久久久 | 国产精品久久久久四虎 | 日韩精品一区在线观看 | 精品一区二区三区四区在线 | wwwwww色 | 欧美日韩国产一二 | 九九久久国产 | 午夜黄色大片 | 亚洲综合色丁香婷婷六月图片 | 久久国产午夜精品理论片最新版本 | 久久黄色小说视频 | www.夜夜爽| a级国产乱理论片在线观看 伊人宗合网 | 黄毛片在线观看 | 中文字幕在线观看日本 | 国产精品一区二区三区在线 | 四虎永久免费 | 国产专区在线播放 | 天天天干夜夜夜操 | 国产精品久久婷婷六月丁香 | 狠狠色狠狠色综合日日92 | 亚洲成av人影片在线观看 | 在线黄色av| 日韩超碰在线 | 亚洲精品777| 国产精品久久久久久久久久久久 | 久久国产精品免费观看 | 日本最新高清不卡中文字幕 | 最新中文字幕在线播放 | 香蕉视频在线观看免费 | 99精品国产一区二区 | 亚洲国产精品va在线看黑人动漫 | 日韩精品中文字幕在线 | 亚洲成人黄色av | 999精品视频 | 日本中文字幕一二区观 | 精品在线99 | 激情五月网站 | 一级一级一片免费 | 午夜体验区 | 成人黄色视 | 九九热在线精品视频 | 久久亚洲私人国产精品 | 色a网| av激情五月 | 91桃色在线免费观看 | 国产不卡网站 | 丁香婷婷网 | av网站免费看| 日韩高清免费在线观看 | 亚洲精品天天 | 日韩网站中文字幕 | 91在线中字 | 亚洲日本韩国一区二区 | 国产一区二区三区在线 | 911精品美国片911久久久 | 亚洲一区二区视频在线播放 | 99久久综合国产精品二区 | 日韩一区在线播放 | 九九热有精品 | av一区二区在线观看中文字幕 | 九九九九九九精品任你躁 | 精品国产91亚洲一区二区三区www | 在线观看免费中文字幕 | 激情综合五月天 | 久99视频| 免费看成人| 六月丁香综合网 | 99爱精品视频 | 99色人| 人人爱天天操 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产专区一 | 9在线观看免费高清完整 | 91激情视频在线播放 | 天天躁日日躁狠狠躁av麻豆 | 亚洲一级性 | 午夜精品电影 | 国产精品视频免费看 | 亚洲精品乱码久久久久久按摩 | 日韩特级片| 国产精品自在线拍国产 | 999久久 | 中文区中文字幕免费看 | 精品一区二区精品 | 欧美电影黄色 | 九九热精品视频在线观看 | 久久99热精品这里久久精品 | 麻豆精品传媒视频 | 国产伦理精品一区二区 | 草久在线视频 | 99人成在线观看视频 | 亚洲精品男人的天堂 | 黄色片免费在线 | 亚洲国产成人精品在线观看 | 国产乱对白刺激视频在线观看女王 | 欧美a级在线播放 | 日韩网站中文字幕 | 久久精品免视看 | 五月综合色 | 91丨九色丨高潮丰满 | 天天干天天摸天天操 | 国产成人综合精品 | 国产亚洲精品bv在线观看 | 涩涩色亚洲一区 | av电影中文字幕在线观看 | 欧美福利片在线观看 | 久久久久免费观看 | av免费看av | 国产日韩在线视频 | 精品国内 | 日b视频在线观看网址 | 日日夜夜精品网站 | 久久久久久久久毛片 | 成年人电影免费在线观看 | 免费在线观看国产黄 | 99久高清在线观看视频99精品热在线观看视频 | 国产视频2区| 91在线观看高清 | 日韩一三区 | 91成人精品一区在线播放69 | 中文字幕在线观看第三页 | 91探花在线视频 | 亚洲国产网站 | 欧美夫妻生活视频 | 久草青青在线观看 | av噜噜噜在线播放 | 婷婷综合成人 | 黄色软件视频大全免费下载 | 国产剧情一区 | 欧美激情xxxx性bbbb | 久久ww| 婷婷电影在线观看 | 亚洲成人精品国产 | 99视频在线免费播放 | 黄污在线观看 | 美女久久久久久久久久 | 91视频啊啊啊 | 久久99国产精品久久99 | 日韩在线中文字幕视频 | 日韩电影中文字幕在线观看 | www.天天草| 久久国产精品久久精品国产演员表 | 黄色精品一区二区 | 成人av电影免费 | 免费色网站 | 久草精品视频在线播放 | 日韩动态视频 | 99热精品免费观看 | 国产精品精品久久久久久 | 欧美污污网站 | av黄色成人| 亚洲精品啊啊啊 | 国产精品99久久免费观看 | 91精品国产高清自在线观看 | 亚洲乱码精品久久久久 | av免费电影在线观看 | 99久久久国产精品免费观看 | 日韩免费网站 | 欧美精品在线观看一区 | 亚洲国产中文在线观看 | 久久午夜精品 | 久草精品网 | 一区二区视频免费在线观看 | 91亚洲精品久久久久图片蜜桃 | 欧美一区二区在线免费看 | 欧美精品成人在线 | 人人爽久久久噜噜噜电影 | 欧美天天综合网 | 天天色.com | 久久国内免费视频 | 久久久成人精品 | 国产精品不卡 | 97免费| 综合激情婷婷 | 午夜精品视频一区二区三区在线看 | 天天干天天操av | 97视频在线观看网址 | 精品一二三四在线 | 精品国产欧美一区二区三区不卡 | 在线观看亚洲精品 | 91亚洲精 | 天天插天天干天天操 | 久久久免费少妇 | 久久精品91久久久久久再现 | 久久国产视屏 | 国产精品理论片在线观看 | 黄色不卡av| 久久久69 | 伊人国产在线观看 | 国产免费黄视频在线观看 | 91av视频在线观看免费 | 国产成人一区二区三区免费看 | 亚洲国产成人久久 | 国产精品99免费看 | 91视频一8mav | 成人一区在线观看 | 午夜视频亚洲 | 欧美最爽乱淫视频播放 | 欧美日韩视频精品 | 97在线精品国自产拍中文 | 久久黄色免费观看 | 激情五月婷婷激情 | 最近中文字幕免费观看 | 九九免费在线观看 | 香蕉视频在线网站 | 韩日电影在线 | 色婷婷av一区 | 最近中文字幕在线 | а天堂中文最新一区二区三区 | 久久精品精品 | 亚洲视频久久久久 | 免费视频黄色 | 久久tv视频 | 婷婷视频在线观看 | 久久综合中文字幕 | 婷婷精品在线视频 | 波多野结衣综合网 | 97精产国品一二三产区在线 | 欧美日韩免费一区 | 色国产精品一区在线观看 | 国产综合香蕉五月婷在线 | www.夜夜爽| 亚洲国产成人在线观看 | 在线导航av | 免费高清在线观看电视网站 | 精品九九久久 | 激情婷婷| 最新成人av | 一区二区三区国产精品 | 91成版人在线观看入口 | 色欧美成人精品a∨在线观看 | 精品亚洲成a人在线观看 | 欧美福利视频一区 | 999久久久欧美日韩黑人 | av中文字幕在线观看网站 | 婷婷精品在线视频 | 日韩精品专区在线影院重磅 | 国产无吗一区二区三区在线欢 | 美女精品久久久 | 国产精品免费在线视频 | 在线播放日韩 | 久久久久久久国产精品 | 在线国产不卡 | 亚洲免费视频观看 | 久久久久国产成人精品亚洲午夜 | 精品国产精品久久一区免费式 | 久久综合亚洲鲁鲁五月久久 | 国产精品白丝av | 日韩色区 | 成年人av在线播放 | 日韩在线观看中文字幕 | av解说在线 | 日本乱视频 | 久久高清国产 | 91久久久国产精品 | 91av电影网| 欧美精品一区二区三区一线天视频 | 国产不卡在线观看视频 | 亚洲视频 中文字幕 | 久久夜色精品国产欧美乱 | 天天视频色版 | 国产91精品一区二区 | 国产精品网在线观看 | 国产999精品久久久久久绿帽 | 国产91影院 | 久久免费福利 | 黄色成人91 | 国产精品igao视频网网址 | 久久婷婷一区二区三区 | 国产生活一级片 | 日韩在线网 | 丝袜制服综合网 | 久久精品3| 亚洲专区 国产精品 | 免费视频一区二区 | 少妇精品久久久一区二区免费 | 久久网站免费 | 日日日日干 | 91x色| 成人黄色毛片视频 | 国产日韩亚洲 | 欧美日韩亚洲第一 | 在线观看黄网 | 国产91精品一区二区麻豆亚洲 | 丁香花在线观看免费完整版视频 | 国产91粉嫩白浆在线观看 | 午夜视频在线瓜伦 | 色婷丁香 | 亚洲一区免费在线 | 99国产精品视频免费观看一公开 | 中文字幕亚洲精品日韩 | 午夜丁香网 | 国产精品成人一区二区三区吃奶 | 欧美成人一区二区 | 亚洲情感电影大片 | 菠萝菠萝在线精品视频 | 麻豆91在线观看 | 免费观看91| 在线观看 国产 | 黄色精品久久久 | 久久精品中文字幕少妇 | 丝袜制服天堂 | 91cn国产在线| 欧美综合在线视频 | 久久激情小说 | 久久久久久久久久免费视频 | 欧美一区二区三区特黄 | 成人免费视频播放 | 天天操天天是 | 又粗又长又大又爽又黄少妇毛片 | 成人在线视频网 | 国产高清不卡av | 香蕉免费在线 | 亚洲午夜久久久综合37日本 | 日韩另类在线 | www黄com | 天天草天天摸 | 天天干天天综合 | 人人爱人人添 | 国产在线日本 | 精品av网站 | 久久久精品网站 | 亚洲精品一区二区三区新线路 | 中文字幕婷婷 | 久久午夜色播影院免费高清 | 91综合久久一区二区 | 人人插人人看 | www中文在线 | 国产黄色精品在线观看 | 五月婷婷欧美视频 | 中文字幕亚洲综合久久五月天色无吗'' | av线上看| 日韩精品在线视频免费观看 | 91资源在线 | 天天看天天干天天操 | 黄色小网站免费看 | 久久理论电影 | 91桃色在线观看视频 | 国产亚洲精品久久久久久久久久 | 在线观看黄 | 99国产精品久久久久久久久久 | 色婷婷六月| 欧美99热 | 天天夜夜操 | 欧美在线18 | 丁香激情综合国产 | 欧美在线久久 | 欧美日韩裸体免费视频 | 日韩精品一区二区不卡 | 国产精品免费观看在线 | 欧美日韩免费视频 | 西西444www大胆高清图片 | 久久综合五月天婷婷伊人 | 欧美成人免费在线 | 人人爽人人爽人人片av | 国产精品国产三级国产aⅴ无密码 | 国产精品第一页在线观看 | 亚洲天天在线日亚洲洲精 | 99综合视频 | 在线免费av观看 | 日韩精品亚洲专区在线观看 | 99精品久久只有精品 | 亚洲国产精品电影在线观看 | 在线免费高清 | av在线网站免费观看 | 黄网站免费看 | 在线电影 你懂得 | 国产精品久久久久久久久久久久久久 | 久久久久国产精品一区 | 色综合天天综合网国产成人网 | 久久久久久久久影视 | 中文字幕有码在线 | 婷婷色网址 | 爱爱av在线 | 娇妻呻吟一区二区三区 | 手机av电影在线观看 | 久久久久久久久久久免费av | 91av在线精品| 综合网中文字幕 | 97成人在线观看 | 手机av在线网站 | 丁香六月激情 | 92国产精品久久久久首页 | 日韩精品中文字幕在线不卡尤物 | 久久久久久久久久久福利 | 六月丁香在线观看 | 久久免费成人网 | 精品一区二区三区四区在线 | 日韩女同一区二区三区在线观看 | 国产又粗又猛又爽又黄的视频先 | 色吧av色av | 免费在线观看av网址 | 超碰在线日本 | 四虎在线视频 | 亚洲高清在线精品 | 亚洲黄网址 | 97视频在线观看视频免费视频 | 久久婷婷一区二区三区 | 亚洲综合网站在线观看 | 国产精品久久99综合免费观看尤物 | 成人精品国产免费网站 | 99色视频| 免费成人av| 欧美美女视频在线观看 | 国产成人精品午夜在线播放 | 欧美成年黄网站色视频 | 久久久久亚洲精品成人网小说 | 欧美精品你懂的 | 日韩欧美精选 | 三级黄色片在线观看 | 黄色av网站在线观看免费 | 亚洲午夜精 | 色婷婷精品大在线视频 | 日本久久精 | 国产精品久久久久久久久久久久午夜 | 国产精品欧美在线 | 日本特黄一级片 | 天天五月天色 | 亚洲黄色影院 | 五月婷色 | 一区二区三区日韩在线观看 | 一区二区三区高清在线观看 | 亚洲另类人人澡 | 亚洲视频1区2区 | 国产美女免费观看 | 亚洲国产理论片 | 日韩av电影免费在线观看 | 色综合激情网 | 狠狠干美女| 日韩高清av在线 | 日韩电影中文,亚洲精品乱码 | 黄色av电影在线观看 | 欧美伦理一区二区三区 | 国产中文字幕一区 | 97视频在线观看免费 | 激情综合网色播五月 | 国产一区影院 | 四虎国产永久在线精品 | 一区二区三区高清在线观看 | 免费看一级特黄a大片 | 欧美日韩精 | 精品伊人久久久 | 国产精品成人一区二区 | av一级片网站 | 亚洲精品小视频 | 韩国av一区二区三区 | av在线免费观看不卡 | 亚洲欧洲一级 | 黄色1级大片 | 亚洲视频一区二区三区在线观看 | 狠狠色丁香婷婷综合最新地址 | 国产一级不卡视频 | 激情综合五月婷婷 | 国产精品久久在线 | 久草在线免费播放 | 狠狠色丁香婷婷综合 | 人人爽人人舔 | 婷婷久久综合九色综合 | 激情网五月天 | 久久精彩免费视频 | 99久久综合精品五月天 | 日韩精品一卡 | 午夜精品视频免费在线观看 | 色婷丁香| 99久久婷婷国产综合亚洲 | 亚洲成色777777在线观看影院 | 五月天综合激情网 | av三级av| 九九免费在线视频 | 美女视频是黄的免费观看 | 成人av在线网 | 国产精品人人做人人爽人人添 | 欧美亚洲免费在线一区 | 精品福利视频在线观看 | 精品亚洲成人 | 成人在线免费小视频 | 亚洲 中文字幕av | 国产夫妻性生活自拍 | 欧美久草视频 | 天天操天天艹 | 亚洲成人xxx | 日韩精品一区二区三区免费视频观看 | 91chinesexxx | 婷婷亚洲最大 | 亚洲va欧美 | 久久久久久高清 | 成人丝袜 | 国产精品福利无圣光在线一区 | 国产一级91 | 热re99久久精品国产66热 | 亚洲日本国产精品 | 国产真实精品久久二三区 | 黄色一级动作片 | 色婷婷国产精品一区在线观看 | 狠狠色狠狠色综合日日小说 | 深夜免费福利在线 | 亚洲精品美女视频 | 日韩在线精品一区 | 在线观看国产成人av片 | 色婷婷狠狠操 | 欧美性色黄 | 色综合久久88色综合天天6 | 中文字幕超清在线免费 | 国产综合片 | 成人免费在线电影 | 国产福利免费看 | 久久久影视 | 99久e精品热线免费 99国产精品久久久久久久久久 | 美女国内精品自产拍在线播放 | 久久久久久久久综合 | 91色亚洲| 日韩在线视频一区 | 成人黄色在线观看视频 | 狠狠的操 | 中文免费在线观看 | 在线免费观看国产视频 | 久久综合狠狠综合久久狠狠色综合 | 成年人视频在线免费 | 成人在线观看av | 2019天天干夜夜操 | 91视频在线网址 | 天天综合在线观看 | 国产中文字幕视频在线 | 午夜私人影院久久久久 | 香蕉视频在线看 | 五月综合激情婷婷 | 婷婷性综合 | 欧美另类人妖 | 国产成人精品综合久久久久99 | 91九色视频导航 | 91精品久久久久久综合五月天 | 婷婷在线资源 | 深夜国产福利 | 欧美午夜性生活 | 青春草免费在线视频 | 日韩精品一区二区三区高清免费 | 欧美 激情在线 | 亚洲成人av影片 | 国产精品1000 | 六月天综合网 | 中文亚洲欧美日韩 | 在线观看成人小视频 | 免费视频一区二区 | 亚洲资源在线观看 | 91亚洲国产| 一区在线观看 | 日韩在线免费播放 | 国产黄在线播放 | 精品国产激情 | 一区免费在线 | 国产一级在线视频 | 综合精品在线 | 日韩精品一区二区三区在线视频 | 中文字幕av免费在线观看 | 色99在线| 国产精品乱码一区二三区 | 精品免费视频. | 亚洲国产精品99久久久久久久久 | 丁香视频 | 久久久网页 | 国产99久久久久 | 国产午夜精品一区二区三区四区 | 欧美日韩国产精品一区 | 91手机电影 | 亚洲综合视频在线播放 | 亚洲 欧美 另类人妖 | 亚洲免费精品一区二区 | 欧美在线视频a | 九九日韩| 狠狠色狠狠色综合日日小说 | 99亚洲精品 | 亚洲欧美日韩精品久久久 | 日韩在线精品一区 | 成人a视频 | 99国产在线 | 久久精品一区二区三区国产主播 | 午夜精品久久久久久久久久久 | 福利电影久久 | 色视频国产直接看 | 麻豆小视频在线观看 | 欧美国产精品一区二区 | 精品国偷自产在线 | 欧美十八| 亚洲一区二区三区在线看 | 亚洲色图美腿丝袜 | 狠狠狠狠狠狠天天爱 | 亚洲91视频 | 91试看 | av网站地址 | 久久久91精品国产一区二区精品 | 黄网站app在线观看免费视频 | 日韩午夜在线 | 精品天堂av | 亚洲日本三级 | 天天看天天干天天操 | 亚洲伦理一区 | 久草电影网 | 91久久精品日日躁夜夜躁国产 | 探花视频网站 | 亚洲精品1234区 | 日韩理论电影在线观看 | 中文字幕乱码视频 | 激情五月婷婷激情 | 久久伊人婷婷 | 国产拍揄自揄精品视频麻豆 | 国产精品午夜在线观看 | 婷婷激情欧美 | 日韩电影一区二区三区在线观看 | 免费h在线观看 | 国产高清无av久久 | 2024av在线播放 | 99理论片 | 亚洲精品久久在线 | 一区中文字幕 | 久久天堂网站 | 亚洲日本一区二区在线 | 午夜av在线播放 | 91麻豆精品国产自产在线 | 丁香五月亚洲综合在线 | 免费一级片观看 | 日韩免费在线一区 | 欧美日韩国产欧美 | 97超碰资源网 | 成片视频免费观看 | 韩日精品在线 | 久久久999免费视频 日韩网站在线 | 三级av网站 | 日韩免费成人 | 欧美日韩不卡一区二区三区 | 91在线精品秘密一区二区 | 久久综合99| 日韩免费观看一区二区三区 | 天堂av观看| 91九色蝌蚪视频在线 | 久久五月网 | 麻豆影视在线播放 | 婷婷精品在线 | 国产美女精品人人做人人爽 | 99产精品成人啪免费网站 | 国产探花在线看 | 99在线热播精品免费 | 国产一区二区在线免费视频 | 狠狠干网站 | 日韩久久午夜一级啪啪 | 91在线看黄| 国产精品国产亚洲精品看不卡15 | 午夜视频在线瓜伦 | 欧美日一级片 | 日本福利视频在线 | 天天操福利视频 | 岛国大片免费视频 | 日日草视频 | 国产视频精选 | 狠狠色丁香婷婷综合最新地址 | 色先锋资源网 | 91av综合 | 日日日日 | 噜噜色官网 | 色婷婷国产在线 | 国产日本在线播放 | 91亚色视频在线观看 | 午夜日b视频 | 天天操天天操天天操天天操天天操天天操 | 亚州精品天堂中文字幕 | 在线国产一区二区三区 | 五月婷婷影院 | 操操操干干干 | 天天射综合 | 日本在线视频网址 | 欧美日韩国产页 | 成人精品电影 | 中文字幕一区二区三区乱码不卡 | 久久极品| 天天躁天天躁天天躁婷 | 色久av| 最近免费中文字幕大全高清10 | 日韩一区二区三区在线观看 | 69国产精品成人在线播放 | 亚洲精品乱码久久久久久蜜桃不爽 | 91资源在线| 久久精品美女视频网站 | 久久高清av | 日日天天干 | 99亚洲国产精品 | 久久精品99 | 成人h动漫精品一区二 | 午夜精品视频一区 | 婷婷丁香视频 | 婷婷丁香在线 | 久久视频这里有久久精品视频11 | 婷婷激情小说网 | 99综合电影在线视频 | 亚洲激情p| 国产福利91精品一区二区三区 | 一区二区三区日韩在线 | 中文字幕精品在线 | 欧洲成人av| 久久精品99久久 | 国产视频18| 四虎影视精品永久在线观看 | 黄色片视频在线观看 | 亚洲黄色在线免费观看 | 婷婷5月激情5月 | 麻豆果冻剧传媒在线播放 | 午夜精品久久久久久久99无限制 | 国产日产欧美在线观看 | 久久人人爽人人爽 | 色婷婷丁香 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 日韩a免费| 免费在线国产视频 | 亚洲国产精品久久久久婷婷884 | 在线一区电影 | 精品久久久久久久久久久久久 | 在线免费视频 你懂得 | 日韩在线视频网站 | 国产精品九九九 | 在线观看中文字幕dvd播放 | 亚洲精品资源在线观看 | 欧美有色 | 97精品国产aⅴ | 久久久九色精品国产一区二区三区 | 国产综合视频在线观看 | 久久三级视频 | 久久综合亚洲鲁鲁五月久久 | 九九热免费在线视频 | 国产小视频91 | 日韩精品一区二区三区免费视频观看 | 欧美成人黄色 | 久久精品综合一区 | 亚洲视频分类 | 日日摸日日添日日躁av | 婷婷国产在线 | 麻豆国产露脸在线观看 | a电影在线观看 | 97碰碰精品嫩模在线播放 | 手机在线看片日韩 | 天天操天天插 | 麻豆免费在线视频 | 99久久国产免费,99久久国产免费大片 | 天天综合精品 | 蜜臀久久99精品久久久无需会员 | 韩日三级av | 久久久久久久电影 | 一区二区在线电影 | 成年人电影毛片 | 亚洲资源一区 | 久久免费精品国产 | 国产精品99精品久久免费 | 99在线视频免费观看 | 黄色免费网站 | 狠狠狠色丁香婷婷综合激情 | 日韩一区二区三区高清在线观看 | 国产精品久久久久久69 | 四虎小视频 | 国产精品破处视频 | 亚洲天堂视频在线 | 日韩sese | 免费一级黄色 | 国产精品24小时在线观看 | 色美女在线 | 97超级碰碰碰碰久久久久 | 日本公妇在线观看 | 亚洲成年人免费网站 | 又黄又刺激 | 国产a精品 | 欧美精品一二三 | 色婷婷激婷婷情综天天 | 久久99影院 | 成人黄色在线电影 | 国产69精品久久app免费版 | 欧美日韩视频免费看 | 91视频这里只有精品 | 日韩a在线 | 亚洲dvd| 欧美在线观看视频 | 婷婷99| 国产精品手机播放 | 国产精品久久久久久久久久久久久久 | 久久亚洲欧美 | 天天摸日日摸人人看 | 夜夜夜夜夜夜操 | 久久久国产精品人人片99精片欧美一 | 91九色pron| 久久理论影院 | av女优中文字幕在线观看 | 激情网色 | 在线激情小视频 | 美女网站色免费 | 国产黄色看片 | 91精品国产99久久久久久红楼 | 久久人人添人人爽添人人88v | 99精品国产免费久久久久久下载 | 午夜精品999 | 久久久久国产成人免费精品免费 | 色综合久久久久网 | 国产一区在线观看视频 | 天天做天天爱天天综合网 | 97电影院在线观看 | 九色福利视频 | 人人躁 | 亚洲国产999| 亚洲午夜久久久久久久久 | 日韩免费一区二区在线观看 | 黄色毛片在线观看 | 欧洲亚洲激情 | 久久久久在线 | 色www精品视频在线观看 | 久久在线免费观看 | 粉嫩av一区二区三区入口 | 婷婷激情网站 | 成人啊 v | 国产精品一区二区免费视频 | 日韩性片 | 狠狠干夜夜操天天爽 | 高清av中文字幕 | 久久久久久久久艹 | 成人免费在线网 | 亚洲专区视频在线观看 | 98精品国产自产在线观看 | 国产成人黄色片 | 91热视频在线观看 | av7777777| 日韩乱码中文字幕 | 99热最新| 激情五月五月婷婷 | 91免费观看视频在线 | 国产成人91 | 五月婷激情 | 国产精品女人久久久 | 国产一级视频在线观看 | 黄色亚洲 | 中国一级特黄毛片大片久久 | 日本久热 | 97精品国产97久久久久久粉红 | 国产区高清在线 | 亚洲国产97在线精品一区 | 久久久免费精品国产一区二区 | 国产午夜精品视频 | 中文字幕一区二区三区在线视频 | 在线观看黄网站 | 欧美视频一区二 | 国产又黄又猛又粗 | 亚洲1区在线 | 久久久成人精品 | 亚洲综合婷婷 | 人人草人| 欧美一区二区免费在线观看 | 激情狠狠干 | 久草9视频 | 伊人婷婷色 | 国产精品久久久久久久午夜片 | 婷婷免费在线视频 | 国产精品手机播放 | 鲁一鲁影院 | 中文亚洲欧美日韩 | 91成人免费视频 | 日韩美一区二区三区 | 日本乱视频 | 欧美成人亚洲 | 精品国产乱码久久久久久三级人 | 99精品在线播放 | 亚洲精品免费在线 | 国产黄色一级大片 | 国产黑丝袜在线 | 久久久国产高清 | 国产粉嫩在线观看 | 国产精品美女久久久久久免费 | 婷婷丁香色 | 国产1区在线观看 | 日本中文字幕在线观看 | 成人免费在线观看av | 国产91学生粉嫩喷水 | 人人爽人人插 | 狠狠操影视 | 午夜国产福利视频 | 99热这里只有精品1 av中文字幕日韩 | 日韩精品一区二区三区在线播放 | 天天色天天骑天天射 | 国产视频一区二区在线 | 日韩网站在线播放 | 国产精品成人国产乱 | 日韩免费在线视频观看 | 国产一区福利在线 | 国产资源在线免费观看 | 五月婷久久 | 欧美男男激情videos | avwww在线| 四虎国产精品免费观看视频优播 | 五月天婷婷视频 | 国产精品成久久久久 | 五月天婷婷在线视频 | 久久伊人八月婷婷综合激情 | 日韩欧美在线视频一区二区三区 | 青青河边草免费 | 四虎8848免费高清在线观看 | 久久新视频 | 麻豆传媒在线免费看 | 国产日韩欧美在线免费观看 | 欧美日韩高清 | 国产资源在线免费观看 | 精品国产乱码久久久久 | 91插插插免费视频 | 精品久久久久一区二区国产 | 日本视频精品 | 99久久国产免费看 | 爱爱一区 | 久久久久久久久亚洲精品 | 日韩在线视频播放 | 日日爽夜夜操 | 成人久久国产 | 国产精品久久99综合免费观看尤物 | 成人性生交大片免费观看网站 | 午夜婷婷网 | 天天操天天干天天 | 精品欧美一区二区在线观看 | 在线观看你懂的网址 | 4438全国亚洲精品观看视频 | 国产精品原创 | 天天激情 | 九九九热精品免费视频观看 | 91精品一区国产高清在线gif | 久久久久久黄 | 亚洲视频免费视频 | 日韩一区二区在线免费观看 | 91在线视频网址 | 中文字幕中文字幕 | 在线亚洲欧美视频 | 成人免费毛片aaaaaa片 | 精品你懂的 | 五月婷婷在线综合 | 国产.精品.日韩.另类.中文.在线.播放 | 最近免费中文字幕大全高清10 | 亚洲高清在线视频 | 天天射天天操天天 | bbbb操bbbb | 国产精品久久久久三级 | 伊人日日干 | 欧美一级免费片 | 人人狠狠综合久久亚洲 | 久久激情五月丁香伊人 | 婷婷黄色片| 欧美久久久久久久久久久 | jizz999| 人人爽人人射 | 国产999在线观看 | 99re久久资源最新地址 | 久久永久视频 | 日韩av一区二区在线 | 婷婷激情欧美 | 国产一线二线三线性视频 | 91入口在线观看 | 人人爽人人片 | 国产精品欧美日韩在线观看 | 最近日本mv字幕免费观看 | 国产人成在线视频 | 伊人五月天 | 亚洲欧洲精品视频 | 久久女教师 | 久久国产视屏 | 精品国产乱码久久久久久久 | 精品自拍sae8—视频 | 国产视频黄 | 久久久久国产精品免费免费搜索 | 国产在线播放观看 | 午夜视频色 | 18久久久久久 | 久久免费的精品国产v∧ | 韩国三级一区 | 久久激情小说 | 亚洲日日射 | 91高清视频| 久久久国产成人 |