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

歡迎訪問 生活随笔!

生活随笔

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

java

Java8 ThreadLocal 源码分析

發布時間:2024/9/30 java 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java8 ThreadLocal 源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可參考文章: Java8 IdentityhashMap 源碼分析
IdentityhashMap 與 ThreadLocalMap 一樣都是采用線性探測法解決哈希沖突,有興趣的可以先了解下 IdentityhashMap 。

一、ThreadLocal 簡介

在學習源碼之前,有一個概念我們需要先明白:ThreadLocal 可以使多線程間數據讀寫隔離,因此 ThreadLocal 解決的是線程局部變量安全性問題,并不是多線程間共享變量安全性問題。

ThreadLocal 在使用時必須先初始化 value,否則會報空指針異常,你可以通過 set 方法與重寫 initialValue 方法兩種方式初始化 value。

下面是 ThreadLocal 原理圖,讀源碼的時候可以參考。

二、ThreadLocal 源碼

我們先來了解一下 ThreadLocal,然后再逐漸了解 ThreadLocalMap。

2.1 內部相關屬性

/** ThreadLocal 的哈希值通過一個原子類計算*/private final int threadLocalHashCode = nextHashCode();/*** 用于計算 ThreadLocal 哈希值的原子類*/private static AtomicInteger nextHashCode = new AtomicInteger();/** * 計算 ThreadLocal 哈希值的魔數 * 該值生成出來的值可以較為均勻地分布在 2 的冪大小的數組中* 據說與斐波那契散列有關...*/private static final int HASH_INCREMENT = 0x61c88647;

ThreadLocalMap 的結構是通過純數組實現的,因此 ThreadLocal 計算哈希值的方式也比較特殊,通過 nextHashCode() 方法生成哈希值,下面是具體實現。

private static int nextHashCode() {return nextHashCode.getAndAdd(HASH_INCREMENT);}

生成哈希值時每次加上 0x61c88647,據了解通過 0x61c88647 計算出來的哈希值能夠均勻的分布在 2 的冪大小的數組中,有興趣的可以網上查一下進行詳細的了解。

2.2 set 方法

public void set(T value) {Thread t = Thread.currentThread();// 根據當前線程獲取對應的 mapThreadLocalMap map = getMap(t);if (map != null)// key 是當前 ThreadLocal 對象的引用map.set(this, value);elsecreateMap(t, value);}

在設置 value 時會先調用 getMap 方法根據當前線程獲取對應的 map,如果 map 存在就設置值,不存在則創建 map,下面跟別來看下對應的方法(map.set 方法會在下面分析)。

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

getMap 方法很簡單,就是返回當前線程的 threadLocals,這個 threadLocals 就是 ThreadLocalMap 對象。由此可以知道每個 Thread 內部都有一個 ThreadLocalMap 變量。

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

createMap 方法也比較簡單,創建一個 ThreadLocalMap 并賦值給當前線程的 threadLocals 變量。

2.3 get 方法

public T get() {Thread t = Thread.currentThread();// 根據當前線程獲取對應的 mapThreadLocalMap map = getMap(t);if (map != null) {// 根據當前對象獲取到對應的 Entry,getEntry 方法會在下面 ThreadLocalMap 中看到ThreadLocalMap.Entry e = map.getEntry(this);if (e != null) {@SuppressWarnings("unchecked")T result = (T)e.value;// 返回 Entry 中對應的 valuereturn result;}}// map 為空時創建return setInitialValue();}

如果 map 存在的話會先獲取到當前線程對應的 map,然后根據當前 ThreadLocal 的弱引用獲取 Entry,最終返回 Entry 中的 value 即可。如果 map 不存在則調用 setInitialValue 方法創建,下面是具體實現細節。

private T setInitialValue() {// 獲取 initialValue() 方法中對應的 value,// 如果沒有重寫 initialValue 方法會拋空指針異常T value = initialValue();Thread t = Thread.currentThread();ThreadLocalMap map = getMap(t);// 如果對應的 map 不為空,則重置對應的 valueif (map != null)map.set(this, value);// map 為空,初始化 mapelsecreateMap(t, value);return value;}

2.4 remove 方法

public void remove() {ThreadLocalMap m = getMap(Thread.currentThread());if (m != null)m.remove(this);}

remove 方法調用了 ThreadLocalMap 中的 remove 方法刪除當前線程的,這個方法到下面介紹 ThreadLocalMap 時再詳細分析。

三、ThreadLocalMap 源碼分析

ThreadLocal 源碼中最有意思的就屬 ThreadLocalMap 了,它到底有哪些巧妙的設計呢?下面就來一探究竟吧。

3.1 內部相關屬性

/*** 哈比表數組默認初始化大小*/private static final int INITIAL_CAPACITY = 16;/*** 底層哈希表數組*/private Entry[] table;/*** 哈希表鍵值對個數*/private int size = 0;/*** 擴容閾值*/private int threshold; // Default to 0/*** 設置擴容閾值為容量的 2/3*/private void setThreshold(int len) {threshold = len * 2 / 3;}/*** Increment i modulo len.當到數組尾時會從頭開始*/private static int nextIndex(int i, int len) {return ((i + 1 < len) ? i + 1 : 0);}/*** Decrement i modulo len.當到數組頭部時會從尾部開始*/private static int prevIndex(int i, int len) {return ((i - 1 >= 0) ? i - 1 : len - 1);}

ThreadLocalMap 與 HashMap 最大的不同是當發生哈希沖突時不通過鏈表形式來解決沖突,而是使用線性探測法解決哈希沖突。ThreadLocalMap 的擴容閾值是 2/3,與 IdentityHashMap 一致,有興趣的可以看下 IdentityHashMap,它們兩個的結構是很相似的。

3.2 構造函數

我們來看其中一個構造函數。

/*** 第一次添加的時候會調用該構造函數進行初始化,并設置第一個線程對應的 key 與 value*/ThreadLocalMap(ThreadLocal<?> firstKey, Object firstValue) {// 初始化哈希表數組table = new Entry[INITIAL_CAPACITY];// 計算桶位置,這個哈希值的計算在上面我們解釋過int i = firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1);// 設置到對應的桶位置上(已經有了一個 key 與 value)table[i] = new Entry(firstKey, firstValue);// 初始化 size 為 1size = 1;// 設置擴容閾值為初始容量的 2/3setThreshold(INITIAL_CAPACITY);}

當設置擴容閾值時調用了 setThreshold 方法,這個方法很簡單,就是把閾值設置為數組長度的 2/3。

private void setThreshold(int len) {threshold = len * 2 / 3;}

3.3 Entry 結構

static class Entry extends WeakReference<ThreadLocal<?>> {/** The value associated with this ThreadLocal. */Object value;Entry(ThreadLocal<?> k, Object v) {// key 為弱引用super(k);value = v;}}

ThreadLocalMap 中存儲鍵值對的結構是 Entry,Entry 實現了 WeakReference 類使 key 成為一個弱引用。Java 語言的弱引用對象意味著只要被垃圾收集器線程掃描到,那么不管當前內存是否足夠都會被回收。關于強引用、軟引用、弱引用與虛引用的差別可以查閱資料進行詳細了解。

3.4 set 方法

ThreadLocalMap 添加鍵值對的方法不是 put 而是 set,如下:

private void set(ThreadLocal<?> key, Object value) {// 獲取哈希表數組 Entry[] tab = table;int len = tab.length;// 計算 key 對應的桶位置int i = key.threadLocalHashCode & (len-1);// e != null 意味著哈希沖突或是 key 重復// e = tab[i = nextIndex(i, len)] 線性探測法解決哈希沖突for (Entry e = tab[i]; e != null; e = tab[i = nextIndex(i, len)]) {// 獲取 key 的引用ThreadLocal<?> k = e.get();// key 重復,value 覆蓋if (k == key) {e.value = value;return;}// entry 不為 null,key 為 null,是因為 key 是弱引用,可能已經被 GC 回收了if (k == null) {replaceStaleEntry(key, value, i);return;}}// 找到插入的位置,存儲 key 與 valuetab[i] = new Entry(key, value);int sz = ++size;// cleanSomeSlots 用于刪除可能已經被 GC 回收的 key// 如果沒有 key 被 GC 回收,并且哈希表數組中的鍵值對數量大于 2/3,執行擴容操作if (!cleanSomeSlots(i, sz) && sz >= threshold)rehash();}

當插入鍵值對的時候,先根據哈希值計算出在哈希表數組中的位置,如果當前桶位置上的 entry 不為空,意味著出現哈希沖突或者是 key 重復。key 重復時直接將原來的 value 覆蓋即可,上面我們已經提到了如果發生哈希沖突,ThreadLocalMap 通過線性探測法方式解決,因此需要繼續從數組當前位置向后查找可插入位置(nextIndex)。當插入鍵值對過后會判斷是否需要對哈希表數組擴容,整體的流程還是很清晰的。下面是 nextIndex 的具體實現:

private static int nextIndex(int i, int len) {return ((i + 1 < len) ? i + 1 : 0);}

當查找到數組尾部時,如果還沒有找到要插入的位置,會從頭繼續查找,因此可以把哈希表數組理解為一個環狀的結構。

ThreadLocalMap 的 key 因為是弱引用,因此當發生哈希沖突時,沖突的 entry 可能不為 null,而 key 為 null(弱引用被 GC 回收),如果 key 為 null 則調用 replaceStaleEntry 方法,下面就來看一下這個方法:

private void replaceStaleEntry(ThreadLocal<?> key, Object value,int staleSlot) {// 獲取哈希表數組Entry[] tab = table;int len = tab.length;Entry e;// 記錄 key 被擦除的桶位置(為 staleSlot 位置前的第一個連續的 key 被擦除的索引// 或 staleSlot 位置后第一個連續的 key 被擦除或 key 重復的索引)int slotToExpunge = staleSlot;// 尋找 staleSlot 索引前連續不為 null 的 key 被擦除的桶位置// 注意循環結束的條件是 e == null 與 IdentityHashMap 相同,也是線性探測法解決哈希沖突的截止條件,有興趣的可以看下 IdentityHasHMapfor (int i = prevIndex(staleSlot, len); (e = tab[i]) != null; i = prevIndex(i, len))if (e.get() == null)slotToExpunge = i;// 向后查找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;// i 位置與 staleSlot 位置的 entry 互換,因為 staleSlot 位置上的 key 已經被回收,沒有意義了// TODO 那為什么不把 key 被 GC 回收的 entry 置為 null 而是位置互換呢?不要急,下面 expungeStaleEntry 方法會做tab[i] = tab[staleSlot];tab[staleSlot] = e;// Start expunge at preceding stale entry if it exists// slotToExpunge == staleSlot 意味著向前沒有查找到連續的鍵值對 key 被擦除的情況if (slotToExpunge == staleSlot)slotToExpunge = i;// 將 slotToExpunge 位置上的 entry 清除cleanSomeSlots(expungeStaleEntry(slotToExpunge), len);return;}// 如果 i 位置上的 key 也已經被擦除將 slotToExpunge 置為 iif (k == null && slotToExpunge == staleSlot)slotToExpunge = i;}// If key not found, put new entry in stale slot// 把新的鍵值對直接存儲在 staleSlot 位置tab[staleSlot].value = null;tab[staleSlot] = new Entry(key, value);// If there are any other stale entries in run, expunge them// 如果向前或向后找到了 key 被擦除的 entry,則清除 slotToExpunge 位置上的鍵值對if (slotToExpunge != staleSlot)cleanSomeSlots(expungeStaleEntry(slotToExpunge), len);}

replaceStaleEntry 方法相對來說比較難以理解,這里總結下我的思路過程,如果大家覺得哪里不對,可以在下面留言。首先我們先確定下 replaceStaleEntry 方法中的 staleSlot 字段,它表示新增鍵值對時 key 重復且 key 被 GC 回收情況下在哈希表數組中的位置。

replaceStaleEntry 方法先從 staleSlot 位置向前查找 entry 不為 null,key 為 null 的 鍵值對,記錄在哈希表數組中的位置,注意這里循環結束的條件是 (e = tab[i]) != null,只要 entry 為 null 就停止循環,這個是線形探測法解決哈希沖突的重要判斷條件,在 IdentityHashMap 中也有體現。

向前查找過后開始向后查找,結束的條件與之前一致,只不過向后查找可能會出現 key 相同的情況,如果 key 重復則重置其 value,然后把 staleSlot 位置與 i 位置的鍵值對位置互換,為什么要互換呢?原因是 staleSlot 位置上的 entry 的 key 已經被 GC 回收了,為了保證哈希沖突的所有鍵值對連續,因此需要把后面沖突的鍵值對前移。

接下來看這一段代碼:

if (slotToExpunge == staleSlot)slotToExpunge = i;// 將 slotToExpunge 位置上的 entry 清除cleanSomeSlots(expungeStaleEntry(slotToExpunge), len);

slotToExpunge == staleSlot 表示向前沒有查找到連續的鍵值對 key 被擦除的情況,把 slotToExpunge 的值置為了 i,然后執行了 cleanSomeSlots(expungeStaleEntry(slotToExpunge), len),這個 slotToExpunge 在這里表示鍵值對交換過之后 key 被 GC 回收的那個 entry 所在哈希表數組中索引的位置。因為它的 key 已經被 GC 回收了,就意味著這個鍵值對沒有存在的必要了,需要對其清除,于是就執行了 expungeStaleEntry 方法:

private int expungeStaleEntry(int staleSlot) {Entry[] tab = table;int len = tab.length;// value 置 null,對應桶位置上的 Entry 也置 nulltab[staleSlot].value = null;tab[staleSlot] = null;// 鍵值對數量減 1size--;Entry e;int i;// 刪除一個 key 被擦除的鍵值對,可能因為之前哈希沖突,導致后面桶位置上的鍵值對位置不準確,因此要向前調整后面桶位置上的鍵值對// 從 staleSlot 位置向后遍歷,要求必須連續,與 IdentityHashMap 一致 for (i = nextIndex(staleSlot, len); (e = tab[i]) != null; i = nextIndex(i, len)) {ThreadLocal<?> k = e.get();// 如果后面桶位置上鍵值對被擦除,則直接清除,因此 expungeStaleEntry 方法并不是只清除 staleSlot 位置上的鍵值對if (k == null) {e.value = null;tab[i] = null;size--;} else {// 并不是向前移動,而是重新 rehash,計算對應的桶位置// TODO 重點理解,重新 rehash 解決之前可能存在哈希沖突的情況int h = k.threadLocalHashCode & (len - 1);if (h != i) {tab[i] = null;// Unlike Knuth 6.4 Algorithm R, we must scan until// null because multiple entries could have been stale.while (tab[h] != null)h = nextIndex(h, len);tab[h] = e;}}}// 返回 staleSlot 之后第一個鍵值對為 null 的桶位置return i;}

expungeStaleEntry 中上來就對 staleSlot 位置上的鍵值對置 null,然后鍵值對的數量減一,但是并不說刪除一個鍵值對這里就結束了。我們說過 ThreadLocalMap 是通過線性探測法來解決哈希沖突的,當刪除一個鍵值對之后需要從當前刪除的位置向后循環,判斷后面是否存在因為哈希沖突被移動到后面去的鍵值對,如果有就重新計算其哈希值,然后存儲到對應的位置上,當然重新計算哈希值也要考慮哈希沖突。順便在這里提一下,這里與 IdentityhashMap 的處理方式是不同的,IdentitiHashMap 并不會重新計算后面沖突的 key 的哈希值而是采取向前移動的方式來解決。

到這里還不算完,expungeStaleEntry 方法中返回了一個 i,這個 i 表示 staleSlot 位置后第一個 key 被 GC 回收的數組索引位置。執行完 expungeStaleEntry 方法后根據其返回值又執行了 cleanSomeSlotsc 方法,這個方法又是干嘛的呢?下面來簡單的分析一下:

private boolean cleanSomeSlots(int i, int n) {boolean removed = false;Entry[] tab = table;int len = tab.length;do {i = nextIndex(i, len);// 獲取對應桶位置上的 EntryEntry e = tab[i];// Entry 不為 null,key 為 null 是因為 key 是弱引用可能會被 GC 回收,因此需要在哈希表中刪除if (e != null && e.get() == null) {n = len;// 如果有鍵值對被擦出就返回 trueremoved = true;// 刪除 i 位置上的鍵值對i = expungeStaleEntry(i);}} /* 對數掃描,并不會掃描整個哈希表數組 */while ( (n >>>= 1) != 0);return removed;}

根據 cleanSomeSlots 的方法名我們應該可以知道這個方法大概做了什么,清除一些哈希槽位置上的鍵值對。這個方法會循環向后判斷當前桶位置上的 key 是否被 GC 回收了,如果被回收了就調用 expungeStaleEntry 方法清除其鍵值對。注意這里不是一直向后循環,而是采取對數的方式,這就說明,整個循環下來并不會清除所有 key 被 GC 回收的鍵值對,會存在一些漏網之魚。

關于 set 方法就簡單的分析到這里,其中還有一些細節大家有興趣可以自己查看,如果哪里有錯誤的地方大家可以在下面留言交流。

3.5 set 方法之 rehash

我們上面一直在分析哈希沖突的情況,還有一個比較重要的 rehash 過程,添加過鍵值對后判斷是否需要 rehash 的是下面這段代碼:

// !cleanSomeSlots(i, sz) 表示沒有鍵值對因為 key 被回收而清除// sz >= threshold 表示哈希表數組中的鍵值對數量已經大于了擴容閾值if (!cleanSomeSlots(i, sz) && sz >= threshold)rehash();

當判斷條件通過后會調用 rehash 方法。

private void rehash() {// 清除所有 key 被擦出的鍵值對expungeStaleEntries();// Use lower threshold for doubling to avoid hysteresis// 再次判斷// TODO Q:這個判斷有什么作用?不可能是 false 的啊// A:因為上面調用了 expungeStaleEntries 方法,可能有的鍵值對被移除導致哈希表數組的鍵值對非常少,此時就沒有擴容的必要了if (size >= threshold - threshold / 4)resize();}

rehash() 方法先調用了 expungeStaleEntries() 方法,這個方法里會循環整個哈希表數組,然后清除所有的 key 被 GC 回收的鍵值對。

private void expungeStaleEntries() {Entry[] tab = table;int len = tab.length;for (int j = 0; j < len; j++) {Entry e = tab[j];if (e != null && e.get() == null)expungeStaleEntry(j);}}

為什么上面已經執行過了 cleanSomeSlots 方法來清除鍵值對,為什么這里又要判斷一次呢?原因就是 cleanSomeSlots 方法并不會循環整個哈希表,會存在一些漏網之魚,而 expungeStaleEntries() 方法會連那些漏網之魚一起處理掉。

調用了 expungeStaleEntries() 方法之后,需要重新判斷鍵值對數量,只有當條件滿足時才會調用 resize() 方法。下面是 resize() 方法的是實現:

private void resize() {Entry[] oldTab = table;int oldLen = oldTab.length;// 新哈希表的大小為原哈希表大小的 2 倍int newLen = oldLen * 2;// 初始化新哈希表Entry[] newTab = new Entry[newLen];// 記錄新哈希表中鍵值對的個數int count = 0;// 遍歷老哈希表數組,進行 rehashfor (int j = 0; j < oldLen; ++j) {// 獲取老哈希表桶位置上的 EntryEntry e = oldTab[j];if (e != null) {ThreadLocal<?> k = e.get();// 如果 key 被回收,則把 value 也置 null// 無時不刻判斷著 key 被擦除的情況if (k == null) {e.value = null; // Help the GC} else {// 計算老哈希表中的鍵值對在新哈希表中的桶位置int h = k.threadLocalHashCode & (newLen - 1);// 這里也可能會產生哈希沖突while (newTab[h] != null)h = nextIndex(h, newLen);newTab[h] = e;count++;}}}// 設置新的擴容閾值,2/3setThreshold(newLen);size = count;// 新的哈希表替代老的哈希表table = newTab;}

rehash 的過程其實是比較簡單的,生成新的哈希表,然后遍歷舊的哈希表數組,將鍵值對重新 rehash 存儲到新的哈希表數組中即可。

3.6 getEntry 方法

private Entry getEntry(ThreadLocal<?> key) {// 獲取桶位置int i = key.threadLocalHashCode & (table.length - 1);// 獲取桶位置上對應的鏈表Entry e = table[i];// 哈希不沖突,直接獲取對應的 value 并返回if (e != null && e.get() == key)return e;// 哈希沖突,則遍歷后面的桶位置,進行查找,當然 key 可能因為是弱引用被擦出,需要額外處理elsereturn getEntryAfterMiss(key, i, e);}

getEntry 方法實現很簡單,根據 key 的哈希值計算在哈希表數組中的桶位置,然后,如果當前對應的桶位置上的 key 是同一個則直接返回 Entry,反之則調用 getEntryAfterMiss 方法來處理哈希沖突的情況。

private Entry getEntryAfterMiss(ThreadLocal<?> key, int i, Entry e) {Entry[] tab = table;int len = tab.length;// Entry 為 null 作為循環結束條件while (e != null) {ThreadLocal<?> k = e.get();// 找到直接返回, valueif (k == key)return e;// 如果 key 被擦出,則清除if (k == null)expungeStaleEntry(i);else// 重置 i 用于循環遍歷i = nextIndex(i, len);e = tab[i];}// 沒有找到返回 nullreturn null;}

代碼邏輯很清晰,這里就不進行詳細總結了。

3.7 remove 方法

上面我們看了添加方法,下面來看一下刪除操作:

private void remove(ThreadLocal<?> key) {Entry[] tab = table;int len = tab.length;// 計算出對應的桶位置,當然對應桶位置上的鍵值對并不一定是當前 key 對應的鍵值對,因為可能存在哈希沖突int i = key.threadLocalHashCode & (len-1);// 從 i 位置向后遍歷,遍歷結束的位置是后續桶位置上為 nullfor (Entry e = tab[i]; e != null; e = tab[i = nextIndex(i, len)]) {if (e.get() == key) {// key 清空e.clear();// 調用 expungeStaleEntry 方法expungeStaleEntry(i);return;}}}

根據 key 就算哈希值,在哈希表數組中找到對應的位置開始循環判斷,如果 key 相同則調用 expungeStaleEntry 方法直接清除鍵值對。PS:注意循環結束條件 e != null。

關于 ThreadLocal 的源碼就分析到這里,一千個人眼里有一千個哈姆雷特,只有自己去看了才能有更深刻的了解。

關于 jdk1.8 更多的源碼分析,請點擊這里前往:jdk1.8 源碼閱讀

總結

以上是生活随笔為你收集整理的Java8 ThreadLocal 源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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

九九热国产 | 亚洲欧美在线综合 | 超碰九九 | 婷婷色中文网 | 天堂av在线网站 | 亚洲国产午夜精品 | 国产精品久久久久久久电影 | 8x成人免费视频 | 新av在线 | 精品国产乱码久久久久久浪潮 | 亚洲欧美日韩国产精品一区午夜 | 99久久激情视频 | 亚洲最新av网站 | 亚洲精品理论 | 午夜国产福利在线观看 | 日韩欧美电影在线观看 | 久久夜色精品国产欧美一区麻豆 | 日韩精品免费专区 | 国产亚洲午夜高清国产拍精品 | 国产精品理论视频 | 天天艹天天爽 | 日本激情视频中文字幕 | 日韩美女免费线视频 | 六月久久婷婷 | 国产精品一区二区免费视频 | 一级久久精品 | 天堂av免费看 | 免费日韩av片 | 黄色的网站免费看 | 久久男人免费视频 | 国产综合在线观看视频 | 久久成人亚洲欧美电影 | 成人免费观看在线视频 | 日韩av在线免费看 | 欧美大片aaa | 在线探花| 免费视频资源 | 国产精品久久久网站 | 日韩欧美有码在线 | 九九电影在线 | 999热线在线观看 | 久久精品999| 午夜精品电影一区二区在线 | 午夜美女福利直播 | 国产91aaa| 日韩免费在线 | 中文字幕av有码 | 亚洲另类视频在线观看 | 国产精品99久久久久久久久久久久 | 国产成人在线观看免费 | 中文字幕免费观看 | 手机在线看片日韩 | 91.精品高清在线观看 | 亚洲欧美视频网站 | 视频国产区 | 国产理论在线 | 五月天激情视频 | 国产91影视 | 国产黄色理论片 | 免费日韩av片 | 九九九九九精品 | 久久xxxx| 超碰97免费| 午夜免费视频网站 | 亚洲激情av | 在线亚洲精品 | 99视频免费看 | 亚洲精品乱码久久久久 | 久久久久久久久爱 | 国产精品视频你懂的 | 欧美9999 | www.夜色.com| 91网页版免费观看 | 99在线观看 | 97精品国产97久久久久久 | 色婷婷激婷婷情综天天 | www.超碰97.com | 日本精品久久久久久 | 国产精品2018| 久久免费电影网 | 国产免费小视频 | 国产精品久久久久久久久久直播 | 三级性生活视频 | 国产精品久久久久久五月尺 | 久久久久久久99精品免费观看 | 欧美一级视频在线观看 | 干综合网 | 久久久麻豆 | 午夜视频在线瓜伦 | 日韩久久影院 | av在线免费播放网站 | 国产在线精品视频 | 丰满少妇在线观看资源站 | 久久精品视频日本 | 五月开心六月伊人色婷婷 | 亚洲欧美成人网 | 国产成人精品999 | 69视频永久免费观看 | 久久久国产精华液 | 国产va在线观看免费 | 全黄色一级片 | 青青草视频精品 | 91精品视频免费看 | 九九视频网站 | 免费观看性生活大片 | 久久男人影院 | av亚洲产国偷v产偷v自拍小说 | 国产免费影院 | 97激情影院| 在线有码中文 | 国产精品久99 | 国产精品igao视频网网址 | 中文字幕一区二区三区久久 | av在线com | 亚洲免费观看在线视频 | 免费在线观看成人av | www.亚洲精品视频 | 91精品爽啪蜜夜国产在线播放 | 久久在线观看视频 | 在线超碰av | 97av免费视频 | 国产夫妻自拍av | 黄色99视频 | 久久亚洲欧美 | 又紧又大又爽精品一区二区 | 91伊人久久大香线蕉蜜芽人口 | 在线精品亚洲一区二区 | 91精品视频免费在线观看 | 91最新视频 | 91精品国产99久久久久久久 | 黄色大片免费播放 | 狠狠的干狠狠的操 | 亚洲欧美乱综合图片区小说区 | 一区二区高清在线 | 91福利影院在线观看 | 国产精品久久久久9999 | 久草精品在线播放 | 久久国产精品久久精品国产演员表 | 亚洲综合干| 精品久久久久久久久久久久久久久久久久 | 精品一区二区三区香蕉蜜桃 | 狠狠地日| 少妇性aaaaaaaaa视频 | 在线播放日韩av | 五月婷久久 | 国产精品久久久久久久久软件 | 欧美成年人在线观看 | 亚洲免费视频观看 | 免费在线观看黄网站 | 日韩激情精品 | 成人免费观看视频网站 | 一区二区三区在线免费观看视频 | 黄色在线看网站 | 国产高清不卡一区二区三区 | 日韩欧美视频一区 | 奇米网网址 | 亚洲在线高清 | 国模精品在线 | 美女视频免费精品 | 成人91在线观看 | 国产一区二区高清不卡 | 夜色成人网| 97在线免费观看视频 | 亚洲精品在线观看中文字幕 | 久久综合久久综合久久 | 午夜精品一区二区三区在线播放 | 国产成人免费网站 | 日日草天天干 | 成人av资源网 | 美女久久网站 | 成人日韩av | 99久久99久久 | 亚洲国产精品传媒在线观看 | 最近中文字幕在线中文高清版 | 天天草综合网 | 成人久久18免费网站 | 亚洲成人免费在线观看 | 黄污网站在线 | 欧美日韩在线播放一区 | 国产女v资源在线观看 | 91亚洲精品久久久久图片蜜桃 | 亚洲午夜精品久久久 | 久久综合狠狠综合久久激情 | 人人看人人艹 | 在线电影播放 | 免费三级大片 | 国产一区在线视频观看 | 亚洲狠狠丁香婷婷综合久久久 | 四虎在线免费观看视频 | 夜夜夜夜夜夜操 | 成人黄色小视频 | 欧美性大战久久久久 | 男女激情免费网站 | 黄色片网站av| 日日操天天操夜夜操 | 插插插色综合 | 国产91亚洲 | 日韩网站视频 | 日韩免费成人av | 亚洲欧洲国产视频 | 天天综合网在线观看 | 麻豆一精品传二传媒短视频 | 久久精品2 | 在线中文字幕一区二区 | 国产精品粉嫩 | 麻豆国产精品永久免费视频 | 久久精品久久精品久久 | 在线 日韩 av | 精品久久久久久综合 | 欧洲一区二区在线观看 | 99精品免费在线 | 在线之家官网 | 亚洲美女精品 | 久草国产在线观看 | 精品欧美一区二区在线观看 | 婷婷丁香在线视频 | 粉嫩av一区二区三区四区 | 91传媒视频在线观看 | 丁香九月婷婷 | 亚洲91精品在线观看 | 中文字幕免费一区 | a天堂最新版中文在线地址 久久99久久精品国产 | 国产区高清在线 | 日韩一级黄色片 | 国产精品久久久久久久久久久久久久 | 久久综合国产伦精品免费 | 激情xxxx | 天天天天天干 | 国产视频一 | 日韩成人在线一区二区 | 麻豆精品在线视频 | 亚洲精品66 | 久久伦理电影网 | 亚洲精品777| 国产乱码精品一区二区三区介绍 | 欧美专区国产专区 | 国产成人精品av | 国产精品情侣视频 | 国产精品丝袜在线 | 日韩久久精品一区二区三区下载 | 国产视频九色蝌蚪 | 色吧久久 | 高清久久久 | 国产成人av在线影院 | 在线观看www视频 | 中文在线字幕观看电影 | 久久久 激情| 天天干天天操天天入 | 日韩精品在线一区 | 久久一区国产 | 天天干天天做天天操 | 97热在线观看 | 91精品国自产在线观看欧美 | 美女视频黄,久久 | 亚洲国产精品99久久久久久久久 | 美女中文字幕 | www一起操| 免费亚洲黄色 | 九九免费观看全部免费视频 | 涩涩资源网 | 国产一区免费视频 | 亚洲黄色免费观看 | 欧美做受高潮 | 日本中文在线 | 午夜黄色一级片 | 在线成人高清电影 | 久久久综合精品 | 玖玖在线资源 | 高清免费在线视频 | 国产精品久久一区二区无卡 | 97在线观| 国产无遮挡又黄又爽馒头漫画 | 六月婷婷网 | 天天爽天天摸 | 91视频链接 | 韩国在线一区二区 | 最近2019中文免费高清视频观看www99 | 国产中文字幕国产 | 伊人五月综合 | 欧美做受高潮1 | 欧美日韩国产二区三区 | 在线看的av网站 | 亚洲3级 | 国产精品免费在线 | 91色国产| 亚洲欧美日韩精品久久久 | 国产精品美女久久久久久久久久久 | 成人黄色大片在线免费观看 | 国产精品毛片久久久久久久 | 美女视频网站久久 | 亚州欧美精品 | 99免费| 二区三区av| 欧美 亚洲 另类 激情 另类 | 欧美一区,二区 | 精品国产电影 | 国产一级久久 | 江苏妇搡bbbb搡bbbb | 夜夜夜夜操 | 中文字幕在线视频一区 | 欧美日韩xx | 美女网站视频免费黄 | 91香蕉国产在线观看软件 | 国产自产在线视频 | 2019国产精品 | 黄色小网站免费看 | 国产精品久久久久久久久久尿 | 国产精品网在线观看 | 最近中文字幕完整高清 | 美女黄频在线观看 | 久九视频 | 在线免费高清 | 亚洲精品在线视频网站 | 成人亚洲免费 | 91在线超碰 | av直接看| 毛片精品免费在线观看 | 激情五月综合网 | 久久综合久色欧美综合狠狠 | 麻豆91精品91久久久 | 综合中文字幕 | 日韩欧美国产免费播放 | 在线免费av网| 麻豆视频在线看 | 人人草在线观看 | 91视频麻豆 | 亚洲精品中文字幕在线观看 | 日韩精品一区二区三区高清免费 | 亚洲精品美女久久久 | 亚洲精品久久久蜜桃 | 欧美影片 | 日本论理电影 | 成人在线一区二区三区 | 美女黄视频免费 | 狠狠五月婷婷 | 黄色av一级 | 成人午夜黄色影院 | 欧美性色黄大片在线观看 | 国产五月色婷婷六月丁香视频 | 日韩久久精品一区二区 | 日韩资源在线观看 | 丁香久久婷婷 | 九九色在线观看 | 免费亚洲视频 | 91精品在线播放 | 五月开心婷婷 | 天天综合网在线 | 久久午夜免费视频 | 91麻豆高清视频 | 亚州日韩中文字幕 | 激情视频免费观看 | 日日夜夜综合 | 三级午夜片 | 夜夜操夜夜干 | 伊人永久在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产一区在线视频观看 | 久久国产区 | 久久久久久久久久电影 | 精品毛片在线 | 国产日韩视频在线播放 | 色香蕉在线视频 | 国产精品理论片在线观看 | 特黄一级毛片 | 久久99久久99精品免视看婷婷 | 欧美91视频 | 欧美另类调教 | 黄色小说在线免费观看 | 91精品视频一区二区三区 | 国产在线日韩 | 亚洲最新在线视频 | 四虎成人精品永久免费av | 日韩在线免费不卡 | 懂色av懂色av粉嫩av分享吧 | 成人午夜久久 | 成人欧美一区二区三区黑人麻豆 | 九九日九九操 | 成人在线播放av | 国产成人精品一区二区三区免费 | 黄色a视频免费 | 久草在线99 | 激情视频一区二区三区 | 国产精品久久久久影院日本 | 成人国产精品久久久春色 | 日本成址在线观看 | 91亚洲精品久久久 | 中文字幕欲求不满 | 亚洲男女精品 | 在线观看完整版免费 | 97国产一区| 99在线视频精品 | 午夜电影中文字幕 | 天天干夜夜爱 | 国产一区黄色 | 懂色av一区二区三区蜜臀 | 久久免费在线观看 | 九九热免费精品视频 | a色视频 | 国产黄色特级片 | 五月天婷婷狠狠 | 激情五月播播久久久精品 | 在线观看免费视频你懂的 | 中文字幕高清 | 精品视频在线看 | 日本三级全黄少妇三2023 | 亚洲精品动漫成人3d无尽在线 | 国产精品九九九九九 | av丁香花| 日韩免费视频在线观看 | 国产亚洲成人精品 | 日韩毛片精品 | 久久视频在线观看中文字幕 | 亚洲成人一二三 | av网在线观看 | 国产亚洲一区 | 日韩网站一区 | 日韩免费一级a毛片在线播放一级 | www.色婷婷.com | 欧美日韩高清一区二区 国产亚洲免费看 | 午夜精品在线看 | 成人在线播放av | 夜夜澡人模人人添人人看 | 国产福利一区二区在线 | 西西444www| 日韩欧美大片免费观看 | 伊人天天操 | 中文有码在线视频 | 91色吧 | 一本一本久久a久久精品综合 | 午夜精品电影 | 久草.com | 欧美日本啪啪无遮挡网站 | 91中文在线| 久久久官网 | 久久九九国产视频 | 99久久久久成人国产免费 | www.99久久.com | 六月激情婷婷 | 久久久久久久久爱 | 黄色精品久久久 | 成人一区二区在线观看 | 337p日本欧洲亚洲大胆裸体艺术 | 国产精品久久久久久久久久妇女 | 97在线视频观看 | 深夜免费福利视频 | av线上免费看 | 99在线高清视频在线播放 | 在线免费精品视频 | 天天综合网 天天综合色 | 国产精品成久久久久 | 久久久久免费精品国产小说色大师 | 最新一区二区三区 | 久久综合中文字幕 | 香蕉视频在线观看免费 | 中中文字幕av在线 | 四虎在线影视 | 人人添人人澡人人澡人人人爽 | 国内久久久 | 日韩在线观看影院 | 国产97色在线 | 激情五月五月婷婷 | 午夜免费视频网站 | 亚洲精品视频在线观看免费视频 | 狠狠色丁香久久婷婷综合_中 | 成人宗合网 | 国产xxxx做受性欧美88 | 欧美极品xxx| 91桃色国产在线播放 | 中文字幕在线观看免费观看 | 久久精品国产美女 | 在线观看mv的中文字幕网站 | 亚洲最新av | 国产麻豆剧果冻传媒视频播放量 | 韩国精品一区二区三区六区色诱 | 国产成人精品一区二区三区网站观看 | 黄色精品久久久 | 日日操网站 | 久久综合九色 | 在线播放国产一区二区三区 | 欧美精品免费视频 | 国产精品免费一区二区三区 | 亚洲女人av | 久久久资源网 | 国产中文字幕视频在线观看 | 国产成人综合精品 | 中国精品少妇 | 久久精品国产久精国产 | 国产精品黄色在线观看 | 九九视频这里只有精品 | 午夜精品久久久久久久久久久久久久 | 久久电影国产免费久久电影 | 99亚洲天堂 | 日韩精品大片 | 特级xxxxx欧美 | 国产精品永久免费在线 | 黄污网| 国产在线探花 | 婷婷午夜激情 | 最近中文字幕免费观看 | 久久久久国产精品免费免费搜索 | 成全在线视频免费观看 | 国产精品video爽爽爽爽 | 免费看黄网站在线 | 五月激情在线 | 亚洲精品久久久久久久蜜桃 | 国产免费久久精品 | 国产精品黄色 | 天天色视频| 国产原创在线视频 | 国产精品高清在线观看 | 免费在线看v | 在线观看视频h | 永久免费的啪啪网站免费观看浪潮 | 亚洲激情久久 | 夜夜躁狠狠躁日日躁视频黑人 | 国产精品网站一区二区三区 | 日韩有码在线观看视频 | 色多多视频在线观看 | 天天爱天天射天天干天天 | 国产精品久久久久久久久久久久冷 | 国产精品淫 | 久久只有精品 | av大全在线观看 | 国产成人av | 中文字幕一区二区三区四区在线视频 | 日本精品免费看 | 成人av影视观看 | 欧美日韩精品久久久 | 久久在线精品视频 | 中文字幕在线国产 | 午夜久久美女 | 中文字幕在线观看网址 | 综合久久网站 | 久久情网 | 成人黄色电影在线观看 | 欧美日韩一区二区三区在线观看视频 | 99久久精品国产亚洲 | 九九热精品视频在线播放 | 国产色a在线观看 | 特级黄色电影 | 在线视频一区观看 | 麻豆一精品传二传媒短视频 | 91视频久久久久 | 激情伊人五月天 | 男女免费视频观看 | 国产在线资源 | 久亚洲| 狠狠ri | 亚洲一二三在线 | 久久夜色精品国产欧美一区麻豆 | 色综合久 | 精品在线99| 久久婷亚洲五月一区天天躁 | 国产小视频网站 | 在线中文字幕电影 | 欧美日韩网址 | www.天天色| 手机av看片 | 亚洲黄色成人av | 日本黄色免费在线 | 永久免费的啪啪网站免费观看浪潮 | 色综合久久综合中文综合网 | 日韩欧美一区二区在线播放 | 国产在线超碰 | 亚洲高清视频在线 | 亚洲视频精品在线 | 国产一区二区免费看 | 国产va精品免费观看 | 日韩三级视频在线看 | 久久电影日韩 | 亚洲精品乱码白浆高清久久久久久 | 亚洲精品午夜一区人人爽 | 国产精品久久久久久久久久久免费看 | 久久精品视频18 | 日韩a在线 | 免费高清无人区完整版 | 在线色视频小说 | 成人免费毛片aaaaaa片 | 久草网在线视频 | 九九精品在线观看 | 久久精品视频网址 | 日韩在线视| 国产精品免费在线观看视频 | 粉嫩av一区二区三区四区在线观看 | 久久无码精品一区二区三区 | 五月天天av | 在线导航av | 精品视频9999 | 久草精品电影 | 亚洲精品88欧美一区二区 | 麻豆综合网 | av在线播放中文字幕 | 91视频最新网址 | 日免费视频 | 99国产视频| 欧美有色| 天天天射 | 亚洲无吗视频在线 | 久久久午夜视频 | 午夜电影中文字幕 | 日本久久久精品视频 | 亚洲春色综合另类校园电影 | 国产中文字幕国产 | 人人澡超碰碰 | 欧美精品久久天天躁 | 久草www | 国产伦精品一区二区三区免费 | 91视频国产高清 | 五月婷婷在线视频观看 | 精品1区二区| 成年人看片网站 | 国产福利91精品一区二区三区 | 欧美在线视频精品 | 91成人免费在线视频 | 亚洲成人网在线 | 亚洲精品美女久久 | 人人讲| 久久久久久黄色 | 激情欧美xxxx | 久久久久免费精品国产 | 国产亚洲欧美一区 | 精品国产一区二区在线 | 久久精品国产免费看久久精品 | 精品国产免费一区二区三区五区 | 日韩在线视频免费播放 | 一区二区三区电影 | 国产午夜在线观看视频 | 一区二区三区在线观看免费 | 新版资源中文在线观看 | 日韩精品一区电影 | 久久精品国产一区二区电影 | 最新99热 | 日本不卡一区二区 | 久久中文网 | 国产精品精品久久久久久 | 天天天干夜夜夜操 | 国产999视频| 亚洲精品在线观看不卡 | av在线日韩| 成人全视频免费观看在线看 | 亚洲小视频在线 | 一区二区精品在线 | 欧美a级片网站 | 9幺看片| 男女视频久久久 | 婷婷丁香导航 | 蜜臀aⅴ国产精品久久久国产 | 国产亚洲成av片在线观看 | 欧美一区二区三区免费看 | 亚洲春色综合另类校园电影 | 成年人网站免费观看 | 亚洲婷婷丁香 | 国产麻豆精品久久 | 国产精品区在线观看 | 青青草华人在线视频 | 国产欧美高清 | 久久免费视频6 | 亚洲精品视频久久 | 西西大胆免费视频 | 成人午夜在线观看 | 亚州日韩中文字幕 | 成年人视频在线免费 | 日韩在线免费视频 | 日韩毛片在线播放 | 日韩av伦理片 | 五月婷婷电影网 | 中文字幕精品三区 | 亚洲天天干 | 国产日韩欧美视频在线观看 | www.国产在线视频 | 国产精品一区二区三区99 | 国产一区二区三区 在线 | 中文在线免费一区三区 | 国产麻豆精品免费视频 | 探花视频在线观看免费 | 欧美国产一区在线 | 在线播放亚洲 | 色www. | 国产精彩视频一区二区 | 亚洲精品欧美精品 | 色播五月激情综合网 | 天天爽天天爽夜夜爽 | 黄a网站| 久久乐九色婷婷综合色狠狠182 | 午夜国产一区二区 | 激情五月激情综合网 | av网在线观看 | 国产精品久久艹 | 在线亚洲欧美日韩 | 人人插人人插 | 国产伦精品一区二区三区免费 | 国产一级精品在线观看 | 成人av午夜 | www.色国产 | 黄色av电影在线 | 精品9999| 婷婷福利影院 | 亚洲在线视频观看 | 国产黄网站在线观看 | 一级片视频在线 | 成人小视频免费在线观看 | 五月天综合色激情 | 成人av一区二区在线观看 | 日日天天 | 久久久免费观看视频 | 亚洲国产激情 | 成年人免费看的视频 | 九九热有精品 | 在线免费观看国产 | 婷婷丁香色 | 欧美精彩视频在线观看 | 国产精品一区二区久久国产 | 91免费在线看片 | 插插插色综合 | 亚洲精品免费在线观看 | 精品国产一区二区三区日日嗨 | 一区二区三区在线观看 | 欧亚日韩精品一区二区在线 | 欧日韩在线 | 国产小视频国产精品 | 免费黄色网址大全 | 精品亚洲一区二区三区 | 久久激情综合网 | 欧美a√在线 | 九九免费在线观看 | 国产破处视频在线播放 | 国产精品一区二 | 日日日日干 | 在线免费观看羞羞视频 | 国产字幕av | 久久a v视频 | 就色干综合| 亚洲最大激情中文字幕 | 麻豆传媒视频在线播放 | 成人黄色小视频 | 天天干天天操天天爱 | 色综合天天射 | 久久精品国产一区 | 国产手机av | 久久系列 | 欧美激情视频免费看 | 国产三级在线播放 | 福利视频第一页 | 亚洲一区二区91 | www.夜夜操 | 91免费试看 | av超碰免费在线 | 欧美在线99| 免费看的av片 | 国产视频一区在线 | 国产很黄很色的视频 | 久久线视频 | 丝袜制服综合网 | 国产日本亚洲 | 欧美日韩一区二区三区在线免费观看 | 又爽又黄在线观看 | 久久艹国产视频 | 免费看一级特黄a大片 | 免费精品国产va自在自线 | 99精品国产福利在线观看免费 | 在线观看黄色av | 婷婷狠狠操 | 色偷偷88欧美精品久久久 | 免费看黄在线网站 | 久久精彩 | 国产精品视频app | 午夜久久久影院 | 国产精品嫩草在线 | 成人av网站在线观看 | 久色 网| 欧美日韩aa | 欧美精品天堂 | 日韩av电影免费观看 | 丁香视频| 黄色午夜| 国产又粗又猛又黄又爽的视频 | 日韩精品一区二区三区免费观看视频 | 一区二区亚洲精品 | 在线观看久久久久久 | 久久久久高清 | 91日韩免费 | 在线午夜电影神马影院 | 干干夜夜 | 天天在线视频色 | 97成人超碰| 五月激情五月激情 | 青草视频在线播放 | 久久久久国产免费免费 | 色久五月| 四虎国产 | 久久天天躁狠狠躁夜夜不卡公司 | 中文在线免费一区三区 | 操综合| 国产精品嫩草影院99网站 | 久久人人爽人人爽人人片av免费 | 玖玖视频网 | 国精产品999国精产品视频 | 久久久午夜剧场 | 在线观看欧美成人 | 91chinesexxx| 一色av | 夜夜爽www | 在线国产99 | 欧美精品久久99 | 国产精品久久三 | 中文有码在线 | 视频一区二区视频 | 久久国产精品一区二区三区 | 色综合久久久久综合 | 国内三级在线观看 | 色多多视频在线 | 欧美美女视频在线观看 | 伊人婷婷在线 | 在线亚洲午夜片av大片 | 成人免费xxxxxx视频 | 不卡的av在线播放 | 国产精品一区二区在线观看 | 成人影片免费 | 天天舔天天射天天操 | 91麻豆网站 | 久久成年人网站 | 国产精品久久婷婷六月丁香 | 波多野结衣资源 | 国产成人一区二区三区久久精品 | 亚洲 欧美 变态 国产 另类 | 激情五月婷婷综合 | 欧美色插| www久| 成人黄色国产 | www.夜夜草 | 丁香婷五月 | va视频在线 | 国产一区二区三区在线 | 在线视频观看你懂的 | 五月天亚洲激情 | 爱情影院aqdy鲁丝片二区 | 日日成人网 | 久久夜夜夜| 九九久久久久久久久激情 | 天天色天天操天天爽 | 亚洲欧美精品一区二区 | 国产精品国产三级在线专区 | 日本资源中文字幕在线 | 综合网在线视频 | 免费精品在线视频 | 日韩欧美网址 | 国产成人免费观看久久久 | 在线观看黄色国产 | 国产视频一二区 | 中文字幕在线观看网址 | 国产在线观看二区 | 九月婷婷人人澡人人添人人爽 | 国产青青青 | 成人a毛片 | 中文字幕中文字幕在线中文字幕三区 | 国产中文自拍 | 黄网站免费看 | 黄色软件在线观看免费 | 国产精品99精品久久免费 | 超碰激情在线 | 久草视频2| 国产成人91 | 黄色aaa毛片| av 一区二区三区四区 | 国产一级特黄毛片在线毛片 | 综合影视 | 国内精品久久久久久久久久久 | 九九九九九国产 | 国产色啪 | 字幕网av| 成人观看视频 | 欧美一级性视频 | 久久精品视频在线看 | 国产69精品久久app免费版 | 天天干天天搞天天射 | 在线不卡视频 | 国内小视频 | 蜜臀精品久久久久久蜜臀 | 国产精品二区三区 | 精品国内自产拍在线观看视频 | 综合激情| 成人在线视频一区 | 日本中文字幕在线播放 | 久久五月婷婷丁香社区 | 亚洲成人资源网 | 精品美女久久久久久免费 | 九九爱免费视频在线观看 | 午夜美女福利直播 | 免费在线观看av片 | 日本精品中文字幕 | 亚洲精品午夜久久久久久久久久久 | 日韩一区二区三区在线看 | 在线观看日本高清mv视频 | 一区二区三区中文字幕在线 | 国产精品久久久久影视 | 亚洲国产视频a | 91精品视频免费看 | 国产精品自产拍在线观看网站 | 国产色女人 | 一区二区不卡高清 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 成人动漫精品一区二区 | 91九色精品国产 | 亚洲高清av| 麻豆91网站 | 国产成人av网站 | 国产成人99久久亚洲综合精品 | 日韩视频三区 | 西西www4444大胆视频 | 欧美日韩在线免费视频 | 日韩一区二区三区高清在线观看 | 日韩网站免费观看 | 在线a亚洲视频播放在线观看 | 精品久久久久久亚洲综合网站 | 久久国产精品电影 | 国产一区黄色 | 国内精品视频一区二区三区八戒 | 黄色av成人在线 | 亚洲一级免费电影 | 日韩专区在线播放 | 国产精品免费成人 | 日本字幕网 | 九九激情视频 | 久久精品网址 | 午夜美女福利直播 | 西西4444www大胆视频 | 亚洲精品tv久久久久久久久久 | 国产精品免费视频观看 | 国产精品久久久av | 国产成人一区二区三区电影 | 日韩免费b| 国产精品中文字幕在线观看 | 又黄又爽又刺激的视频 | 国产在线第三页 | 高清国产午夜精品久久久久久 | 欧美亚洲国产一卡 | 五月综合激情婷婷 | 欧美日韩电影在线播放 | 999久久久久| 久久久久久99精品 | 亚洲欧洲一区二区在线观看 | 久久黄页 | 欧美久久综合 | 99热在线免费观看 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 丁香av在线 | 一区二区三区观看 | 免费观看的黄色 | 婷婷网五月天 | 日韩视频免费看 | 国产精品剧情在线亚洲 | 精品成人在线 | 久久国产精品久久久 | 日韩激情视频在线观看 | 日韩在线高清免费视频 | 蜜臀久久99精品久久久久久网站 | 久久www免费人成看片高清 | 亚洲综合色婷婷 | 亚洲视频精选 | 深夜免费福利视频 | 欧美天堂久久 | 91爱爱视频 | 久久精品老司机 | 欧美成人在线网站 | 国产一区二区三区免费在线 | 中文字幕观看在线 | 手机av电影在线观看 | 乱男乱女www7788 | 国产特级毛片aaaaaa | 天天色 天天 | 日本三级香港三级人妇99 | 日本久久中文字幕 | 国产高清不卡av | 人人干网 | 日韩av手机在线观看 | 在线观看午夜av | 欧美亚洲国产精品久久高清浪潮 | 欧美极品少妇xbxb性爽爽视频 | 国产精品久久久久一区二区三区 | 国产精品久久久久永久免费看 | 日韩视频中文 | 二区三区在线 | 美女视频网 | 国产精品毛片一区二区在线看 | 久久99久久久久 | 美女一二三区 | 久久99国产精品久久 | 五月天中文字幕mv在线 | 婷婷六月天丁香 | 99久久久成人国产精品 | 99国内精品久久久久久久 | www黄com | 国产精品免费一区二区三区在线观看 | 婷婷色网视频在线播放 | 成 人 黄 色 视频 免费观看 | 亚洲情感电影大片 | 国产精品欧美一区二区 | 色婷婷视频 |