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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ConcurrentHashMap--自用,非教学

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ConcurrentHashMap--自用,非教学 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結論先行,細節在下面

jdk1.7是如何解決并發問題的以及完整流程

一.首先new一個concurrentHashMap

調用默認構造方法

二.初始化

初始化initialCapacity(默認是16,指一個segment內Entry的數量),loadFactor(默 認0.75f,負載因子),初始化concurrentLevel(默認是16,segment數量)。
1.校驗傳入的參數是否符合規定
2.計算concurrentLevel、segementMask(掩碼)和segementShift(移位數)
3.計算每個segment中的Entry數組大小,默認且最小為2
4.此時你得到了一個segment對象,調用UNSAFE.putOrderedObject方法,利用CAS將 此segment對象放在segment數組下標為0的位置,其余15個位置為null

三.初始化完開始使用。先put一個鍵值對進去

1.判斷value是否為空,為空直接報錯
2.計算hash值。int j = (hash >>> segmentShift) & segmentMask
先用segementShift將32位的hash右移28位,剩4位,再與segmentMask(二進制碼,具體數值為1111)進行與運算,得到j,此時segment[j]還是null,不像segment[0]已經初始化,那么調用ensureSegment(j)初始化segment[j]
3.上來第一步先 tryLock() ? null : scanAndLockForPut(key, hash, value);
如果tryLock失敗,也就是沒拿到獨占鎖,將調用scanAndLockForPut方法,這個方法大概是循環嘗試tryLock(),嘗試次數到一定后,將調用lock()進行阻塞,直到拿到鎖
4.獲取鎖成功后,hash計算entry下標,int index = (tab.length - 1) & hash
5.遍歷鏈表,有數據就覆蓋,沒數據就頭插
6.判斷是否需要擴容
7.釋放鎖

四.擴容

1.定義threshold = (int)(newCapacity * loadFactor),只要threshold小于map中實際存入的元素大小,就開始擴容;entry數組一次擴容成原來的兩倍
2.用rehash方法,計算新的掩碼segmentMask,然后遍歷原數組,老套路,將原數組位置 i 處的鏈表拆分到 新數組位置 i 和 i+oldCap 兩個位置(原理HashMap那里說過)
3.最后插入新節點

五.get方法

第一次計算hash定位segment,第二次hash定位entry,然后返回。

六.并發問題的解決

注意到,get沒有加鎖,put和remove都加上了獨占鎖,需要考慮的問題就是 get 的時候在同一個 segment 中發生了 put 或 remove 操作,會發生什么
1.對于put
第一個問題是:初始化segment是用CAS將segment對象放入segment數組index為0的位置的;
第二個問題是:put進entry是頭插,如果此時get操作已經遍歷到鏈表中間,無影響。但是還需要保證put之后get要找的到剛被插入的頭節點,這個依賴于 setEntryAt 方法中使用的 UNSAFE.putOrderedObject;
第三個問題是:擴容也有并發。擴容是新創建了數組,然后進行遷移數據,最后面將 newTable 設置給屬性 table,get操作會在舊table上進行,不影響,如果put先行,擴容后行,那么 put 操作的可見性保證就是 table 使用了 volatile 關鍵字。

jdk1.8是如何解決并發問題的以及完整流程

一.首先new一個concurrentHashMap

調用默認構造方法,需要注意的是,1.8摒棄了segment這個概念,引入了紅黑樹這個數據結構,加鎖則采用CAS和synchronized實現

二.構造函數內部操作。

維護一個sizeCtl = (1.5 * initialCapacity + 1) 再向上取最近的2的倍數。比如initialCapacity = 10,則sizeCtl = 16。sizeCtl的使用場景很多。
構造函數只是計算值而已,初始化操作延遲到真正操作數據的時候。

三.put過程分析

1.key或value==null直接拋錯誤。
2.hash = spread(key.hashCode()),得到hash值,定義binCount記錄鏈表長度。
3. if 數組為空,初始化數組(這里才真正初始化數組);如果已經初始化,找出該hash值對應的數組下標,得到第一個節點
else if 該位置尚未有任何節點,利用CAS將新節點放入。put邏輯基本結束。
else if hash == MOVED,說明在擴容,轉而幫助其數據遷移。
else 此時節點存在,也不為空。
在這個 else 下,又有兩個判斷:
如果hash >= 0,說明是鏈表
如果節點f instanceof TreeBin,說明是紅黑樹
對應不同的插入邏輯
4.進行完以上判斷,開始進入判斷是否將鏈表轉化成紅黑樹的階段
if(binCount >= TREEIFY_THRESHOLD) 也就是第三步的第二小步定義的binCount記錄著本鏈表的長度,大于等于8就轉紅黑樹

四.真正對數組的初始化

initTable方法
初始化一個合適大小的數組,然后會設置 sizeCtl。
初始化方法中的并發問題是通過對 sizeCtl 進行一個 CAS 操作來控制的
U.compareAndSwapInt(this, SIZECTL, sc, -1),將sizeCtl改成-1,代表搶到鎖
接下來就是各種賦初值,比如數組長度什么的。

五.鏈表轉紅黑樹

treeifyBin方法
treeifyBin 不一定就會進行紅黑樹轉換,也可能是僅僅做數組擴容
如果數組長度小于 64 的時候,其實也就是 32 或者 16 或者更小的時候,會進行數組擴容,而不是轉化為紅黑樹。
如果需要轉化,那么用synchronized加鎖,將鏈表變成紅黑樹,然后返回頭結點,設置 到數組相應的位置上。

六.擴容機制

tryPresize方法
這個方法的核心在于對 sizeCtl 值的操作,首先將其設置為一個負數,然后執行 transfer(tab, null),再下一個循環將 sizeCtl 加 1,并執行 transfer(tab, nt),之后可能是繼續 sizeCtl 加 1,并執行 transfer(tab, nt)
所以,可能的操作就是執行 1 次 transfer(tab, null) + 多次 transfer(tab, nt),這里怎么結束循環的需要看完 transfer 源碼才清楚
總的來說,肯定是得把老數組的東西拷貝到新數組里面,然后引用指向新數組,這樣就行了,怎么拷貝呢?用transfer方法
原理太復雜,大概意思就是將一個大數組分割成很多個小部分,可以令每個線程負責轉移一部分數據,轉移數據的時候,會鎖頭節點或者根節點,轉移后一個位置,就會在那個位置放置一個特殊的節點,該節點hash值為-1,表示該位置已經轉移

七.get 過程分析

計算hash,利用hash定位。
如果為null,返回null;
如果剛好是需要的,那就返回;
如果hash < 0,說明正擴容,用find方法找;
如果上面都不滿足,說明是鏈表,直接往后遍歷即可。

八.并發問題的解決

1.初始化時:在initTable方法內可以看到,通過CAS判斷當前是否有其他線程在初始化,如果有,那么當前線程會被阻塞,一直CAS自旋等到數組初始化成功。
2.擴容時:將數組分割成若干份,允許多個線程一起擴容,一起轉移數據,每個線程在負責自己那一part的數據轉移時,會對頭結點加鎖。
3.插入時:位置為空時,CAS插入;不為空時,對頭結點加鎖,再插入。

上面是總結,速度過一遍;下面是細節,仔細看一遍

正式緒論

JDK1.7之前的ConcurrentHashMap使用分段鎖機制實現,JDK1.8則使用數組+鏈表+紅黑樹數據結構和CAS原子操作實現ConcurrentHashMap;本文將分別介紹這兩種方式的實現方案及其區別。

請帶著這些問題學習。

為什么HashTable慢

Hashtable之所以效率低下主要是因為其實現使用了synchronized關鍵字對put等操作進行加鎖,而synchronized關鍵字加鎖是對整個對象進行加鎖,也就是說在進行put等修改Hash表的操作時,鎖住了整個Hash表,從而使得其表現的效率低下。

JDK1.7版本

在JDK1.5~1.7版本,Java使用了分段鎖機制實現ConcurrentHashMap. 簡而言之,ConcurrentHashMap在對象中保存了一個Segment數組,即將整個Hash表劃分為多個分段;而每個Segment元素,即每個分段則類似于一個Hashtable;這樣,在執行put操作時首先根據hash算法定位到元素屬于哪個Segment,然后對該Segment加鎖即可。因此,ConcurrentHashMap在多線程并發編程中可是實現多線程put操作。接下來分析JDK1.7版本中ConcurrentHashMap的實現原理。

segment

整個 ConcurrentHashMap 由一個個 Segment 組成,Segment 代表”部分“或”一段“的意思,所以很多地方都會將其描述為分段鎖。注意,行文中,我很多地方用了“槽”來代表一個 segment。
簡單理解就是,ConcurrentHashMap 是一個 Segment 數組,Segment 通過繼承 ReentrantLock 來進行加鎖,所以每次需要加鎖的操作鎖住的是一個 segment,這樣只要保證每個 Segment 是線程安全的,也就實現了全局的線程安全。


concurrentLevel:是一個int數值,命名為并發數,默認是16。也就是說,一個map中有16個segment,于是map支持16個線程并發寫,只要他們分別操作這16個segment。
可以人為在初始化時設置成其他值,一旦指定,不可擴容。

segment的內部

在使用之前先初始化map,調用上圖的方法,initialCapacity是初始容量,loadFactor是負載因子,concurrentLevel是并發數,也是segment的數量。
如果調用無參構造方法,那么我將得到:

segmentMask要等于數組長度減一,比如16 - 1 = 15,二進制碼是1111,可以更好地保證散列的均勻性;
segmentShift是移位數,由于hash是32位的,它設為28的話,可以使hash無符號右移28位,剩下4個高位數,而這四位再和1111(也就是segmentMask)做一次與運算就可以轉換為segment數組的下標,因為4位二進制數可以表示數字0~15,segment數組下標也是從0到15。

public V put(K key, V value) {Segment<K,V> s;if (value == null)throw new NullPointerException();// 1. 計算 key 的 hash 值int hash = hash(key);// 2. 根據 hash 值找到 Segment 數組中的位置 j// hash 是 32 位,無符號右移 segmentShift(28) 位,剩下高 4 位,// 然后和 segmentMask(15) 做一次與操作,也就是說 j 是 hash 值的高 4 位,也就是槽的數組下標int j = (hash >>> segmentShift) & segmentMask;// 剛剛說了,初始化的時候初始化了 segment[0],但是其他位置還是 null,// ensureSegment(j) 對 segment[j] 進行初始化if ((s = (Segment<K,V>)UNSAFE.getObject // nonvolatile; recheck(segments, (j << SSHIFT) + SBASE)) == null) // in ensureSegments = ensureSegment(j);// 3. 插入新值到 槽 s 中return s.put(key, hash, value, false); }

這里主要是為了計算出segment的下標,也就是該存到哪個segment下。
之后會進入segment內部獲取鎖,然后正式插入數據。

PUT方法的細節

初始化槽: ensureSegment(int k)方法

ConcurrentHashMap 初始化的時候會初始化第一個槽 segment[0],對于其他槽來說,在插入第一個值的時候進行初始化。
這里需要考慮并發,因為很可能會有多個線程同時進來初始化同一個槽 segment[k],不過只要有一個成功了就可以。

初始化第一個槽的原因


拿segment[0]這個最先被初始化且被操作的當做榜樣,利用[0]去初始化[k]。
總的來說,ensureSegment(int k) 比較簡單,對于并發操作使用 CAS 進行控制。

獲取寫入鎖方法scanAndLockForPut(K key, int hash, V value)

在往某個 segment 中 put 的時候,首先會調用 node = tryLock() ? null : scanAndLockForPut(key, hash, value),也就是說先進行一次 tryLock() 快速獲取該 segment 的獨占鎖,如果失敗,那么進入到 scanAndLockForPut 這個方法來獲取鎖。

這個方法有兩個出口,一個是 tryLock() 成功了,循環終止,另一個就是重試次數超過了 MAX_SCAN_RETRIES,進到 lock() 方法,此方法會阻塞等待,直到成功拿到獨占鎖。 這個方法就是看似復雜,但是其實就是做了一件事,那就是獲取該 segment 的獨占鎖,如果需要的話順便實例化了一下 node。

擴容:rehash

擴容是 segment 數組某個位置內部的數組 HashEntry<K,V>[] 進行擴容,擴容后,容量為原來的 2 倍。
注意到,在put方法里,會判斷該值插入后是否會導致超出閾值,超了就先擴容再插。

get方法

計算 hash 值,找到 segment 數組中的具體位置,或我們前面用的“槽”
槽中也是一個數組,根據 hash 找到數組中具體的位置
到這里是鏈表了,順著鏈表進行查找即可

并發問題分析

JDK1.8版本

寫在前面

在JDK1.7之前,ConcurrentHashMap是通過分段鎖機制來實現的,所以其最大并發度受Segment的個數限制。因此,在JDK1.8中,ConcurrentHashMap的實現原理摒棄了這種設計,而是選擇了與HashMap類似的數組+鏈表+紅黑樹的方式實現,而加鎖則采用CAS和synchronized實現。

數據結構

構造函數

// 這構造函數里,什么都不干 public ConcurrentHashMap() { } public ConcurrentHashMap(int initialCapacity) {if (initialCapacity < 0)throw new IllegalArgumentException();int cap = ((initialCapacity >= (MAXIMUM_CAPACITY >>> 1)) ?MAXIMUM_CAPACITY :tableSizeFor(initialCapacity + (initialCapacity >>> 1) + 1));this.sizeCtl = cap; }

sizeCtl = 【 (1.5 * initialCapacity + 1),然后向上取最近的 2 的 n 次方】。如 initialCapacity 為 10,那么得到 sizeCtl 為 16,如果 initialCapacity 為 11,得到 sizeCtl 為 32。

PUT方法

著作權歸https://pdai.tech所有。 鏈接:https://www.pdai.tech/md/java/thread/java-thread-x-juc-collection-ConcurrentHashMap.htmlpublic V put(K key, V value) {return putVal(key, value, false); } final V putVal(K key, V value, boolean onlyIfAbsent) {if (key == null || value == null) throw new NullPointerException();// 得到 hash 值int hash = spread(key.hashCode());// 用于記錄相應鏈表的長度int binCount = 0;for (Node<K,V>[] tab = table;;) {Node<K,V> f; int n, i, fh;// 如果數組"空",進行數組初始化if (tab == null || (n = tab.length) == 0)// 初始化數組,后面會詳細介紹tab = initTable();// 找該 hash 值對應的數組下標,得到第一個節點 felse if ((f = tabAt(tab, i = (n - 1) & hash)) == null) {// 如果數組該位置為空,// 用一次 CAS 操作將這個新值放入其中即可,這個 put 操作差不多就結束了,可以拉到最后面了// 如果 CAS 失敗,那就是有并發操作,進到下一個循環就好了if (casTabAt(tab, i, null,new Node<K,V>(hash, key, value, null)))break; // no lock when adding to empty bin}// hash 居然可以等于 MOVED,這個需要到后面才能看明白,不過從名字上也能猜到,肯定是因為在擴容else if ((fh = f.hash) == MOVED)// 幫助數據遷移,這個等到看完數據遷移部分的介紹后,再理解這個就很簡單了tab = helpTransfer(tab, f);else { // 到這里就是說,f 是該位置的頭節點,而且不為空V oldVal = null;// 獲取數組該位置的頭節點的監視器鎖synchronized (f) {if (tabAt(tab, i) == f) {if (fh >= 0) { // 頭節點的 hash 值大于 0,說明是鏈表// 用于累加,記錄鏈表的長度binCount = 1;// 遍歷鏈表for (Node<K,V> e = f;; ++binCount) {K ek;// 如果發現了"相等"的 key,判斷是否要進行值覆蓋,然后也就可以 break 了if (e.hash == hash &&((ek = e.key) == key ||(ek != null && key.equals(ek)))) {oldVal = e.val;if (!onlyIfAbsent)e.val = value;break;}// 到了鏈表的最末端,將這個新值放到鏈表的最后面Node<K,V> pred = e;if ((e = e.next) == null) {pred.next = new Node<K,V>(hash, key,value, null);break;}}}else if (f instanceof TreeBin) { // 紅黑樹Node<K,V> p;binCount = 2;// 調用紅黑樹的插值方法插入新節點if ((p = ((TreeBin<K,V>)f).putTreeVal(hash, key,value)) != null) {oldVal = p.val;if (!onlyIfAbsent)p.val = value;}}}}if (binCount != 0) {// 判斷是否要將鏈表轉換為紅黑樹,臨界值和 HashMap 一樣,也是 8if (binCount >= TREEIFY_THRESHOLD)// 這個方法和 HashMap 中稍微有一點點不同,那就是它不是一定會進行紅黑樹轉換,// 如果當前數組的長度小于 64,那么會選擇進行數組擴容,而不是轉換為紅黑樹// 具體源碼我們就不看了,擴容部分后面說treeifyBin(tab, i);if (oldVal != null)return oldVal;break;}}}// addCount(1L, binCount);return null; }

初始化數組: initTable

這個比較簡單,主要就是初始化一個合適大小的數組,然后會設置 sizeCtl。

初始化方法中的并發問題是通過對 sizeCtl 進行一個 CAS 操作來控制的。

private final Node<K,V>[] initTable() {Node<K,V>[] tab; int sc;while ((tab = table) == null || tab.length == 0) {// 初始化的"功勞"被其他線程"搶去"了if ((sc = sizeCtl) < 0)Thread.yield(); // lost initialization race; just spin// CAS 一下,將 sizeCtl 設置為 -1,代表搶到了鎖else if (U.compareAndSwapInt(this, SIZECTL, sc, -1)) {try {if ((tab = table) == null || tab.length == 0) {// DEFAULT_CAPACITY 默認初始容量是 16int n = (sc > 0) ? sc : DEFAULT_CAPACITY;// 初始化數組,長度為 16 或初始化時提供的長度Node<K,V>[] nt = (Node<K,V>[])new Node<?,?>[n];// 將這個數組賦值給 table,table 是 volatile 的table = tab = nt;// 如果 n 為 16 的話,那么這里 sc = 12// 其實就是 0.75 * nsc = n - (n >>> 2);}} finally {// 設置 sizeCtl 為 sc,我們就當是 12 吧sizeCtl = sc;}break;}}return tab; }

數組轉紅黑樹

前面我們在 put 源碼分析也說過,treeifyBin 不一定就會進行紅黑樹轉換,也可能是僅僅做數組擴容。我們還是進行源碼分析吧。

private final void treeifyBin(Node<K,V>[] tab, int index) {Node<K,V> b; int n, sc;if (tab != null) {// MIN_TREEIFY_CAPACITY 為 64// 所以,如果數組長度小于 64 的時候,其實也就是 32 或者 16 或者更小的時候,會進行數組擴容if ((n = tab.length) < MIN_TREEIFY_CAPACITY)// 后面我們再詳細分析這個方法tryPresize(n << 1);// b 是頭節點else if ((b = tabAt(tab, index)) != null && b.hash >= 0) {// 加鎖synchronized (b) {if (tabAt(tab, index) == b) {// 下面就是遍歷鏈表,建立一顆紅黑樹TreeNode<K,V> hd = null, tl = null;for (Node<K,V> e = b; e != null; e = e.next) {TreeNode<K,V> p =new TreeNode<K,V>(e.hash, e.key, e.val,null, null);if ((p.prev = tl) == null)hd = p;elsetl.next = p;tl = p;}// 將紅黑樹設置到數組相應位置中setTabAt(tab, index, new TreeBin<K,V>(hd));}}}} }

擴容: tryPresize

如果說 Java8 ConcurrentHashMap 的源碼不簡單,那么說的就是擴容操作和遷移操作。 這個方法要完完全全看懂還需要看之后的 transfer 方法,讀者應該提前知道這點。 這里的擴容也是做翻倍擴容的,擴容后數組容量為原來的 2 倍。

著作權歸https://pdai.tech所有。 鏈接:https://www.pdai.tech/md/java/thread/java-thread-x-juc-collection-ConcurrentHashMap.html// 首先要說明的是,方法參數 size 傳進來的時候就已經翻了倍了 private final void tryPresize(int size) {// c: size 的 1.5 倍,再加 1,再往上取最近的 2 的 n 次方。int c = (size >= (MAXIMUM_CAPACITY >>> 1)) ? MAXIMUM_CAPACITY :tableSizeFor(size + (size >>> 1) + 1);int sc;while ((sc = sizeCtl) >= 0) {Node<K,V>[] tab = table; int n;// 這個 if 分支和之前說的初始化數組的代碼基本上是一樣的,在這里,我們可以不用管這塊代碼if (tab == null || (n = tab.length) == 0) {n = (sc > c) ? sc : c;if (U.compareAndSwapInt(this, SIZECTL, sc, -1)) {try {if (table == tab) {@SuppressWarnings("unchecked")Node<K,V>[] nt = (Node<K,V>[])new Node<?,?>[n];table = nt;sc = n - (n >>> 2); // 0.75 * n}} finally {sizeCtl = sc;}}}else if (c <= sc || n >= MAXIMUM_CAPACITY)break;else if (tab == table) {// 我沒看懂 rs 的真正含義是什么,不過也關系不大int rs = resizeStamp(n);if (sc < 0) {Node<K,V>[] nt;if ((sc >>> RESIZE_STAMP_SHIFT) != rs || sc == rs + 1 ||sc == rs + MAX_RESIZERS || (nt = nextTable) == null ||transferIndex <= 0)break;// 2. 用 CAS 將 sizeCtl 加 1,然后執行 transfer 方法// 此時 nextTab 不為 nullif (U.compareAndSwapInt(this, SIZECTL, sc, sc + 1))transfer(tab, nt);}// 1. 將 sizeCtl 設置為 (rs << RESIZE_STAMP_SHIFT) + 2)// 我是沒看懂這個值真正的意義是什么? 不過可以計算出來的是,結果是一個比較大的負數// 調用 transfer 方法,此時 nextTab 參數為 nullelse if (U.compareAndSwapInt(this, SIZECTL, sc,(rs << RESIZE_STAMP_SHIFT) + 2))transfer(tab, null);}} }

這個方法的核心在于 sizeCtl 值的操作,首先將其設置為一個負數,然后執行 transfer(tab, null),再下一個循環將 sizeCtl 加 1,并執行 transfer(tab, nt),之后可能是繼續 sizeCtl 加 1,并執行 transfer(tab, nt)。 所以,可能的操作就是執行 1 次 transfer(tab, null) + 多次 transfer(tab, nt),這里怎么結束循環的需要看完 transfer 源碼才清楚。

transfer數據遷移方法

太麻煩了

get方法

get 方法從來都是最簡單的,這里也不例外:
計算 hash 值 根據 hash 值找到數組對應位置: (n - 1) & h
根據該位置處結點性質進行相應查找
如果該位置為 null,那么直接返回 null 就可以了
如果該位置處的節點剛好就是我們需要的,返回該節點的值即可
如果該位置節點的 hash 值小于 0,說明正在擴容,或者是紅黑樹,后面我們再介紹 find 方法
如果以上 3 條都不滿足,那就是鏈表,進行遍歷比對即可

兩個版本的區別

參考資料

https://www.pdai.tech/md/java/thread/java-thread-x-juc-collection-ConcurrentHashMap.html

總結

以上是生活随笔為你收集整理的ConcurrentHashMap--自用,非教学的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲国产成人在线观看 | 99亚洲国产 | 91精品久久久久久久久久久久久 | 黄污网站在线 | 不卡的av在线播放 | 日韩免费高清 | 日韩经典一区二区三区 | 久久久久福利视频 | 中文字幕在线观看第三页 | 国产成人精品aaa | 国产尤物在线视频 | 久久久久久久久久久黄色 | 久久免费黄色网址 | 一级片视频在线 | 99久久精品国产亚洲 | 人人躁 | 在线观看的黄色 | 成人精品视频久久久久 | 免费成人av | 国产黄色片久久久 | 人人爽爽人人 | 日韩av不卡播放 | 天天干天天上 | 97av在线视频免费播放 | 麻豆va一区二区三区久久浪 | 最近的中文字幕大全免费版 | 久色网| 欧美一二三专区 | 日韩欧美在线不卡 | 国产精品一区免费看8c0m | 久久亚洲私人国产精品 | 日韩三级不卡 | 免费一级片观看 | 久久国产电影 | 五月激情五月激情 | 国产成人性色生活片 | 亚洲第五色综合网 | 久久久久久亚洲精品 | 亚洲无吗视频在线 | 亚洲国产免费 | 久久视频这里只有精品 | 日本黄网站 | 欧美少妇bbwhd | 日日夜夜91 | 中文字幕一区二区在线播放 | 91在线视频网址 | 精品女同一区二区三区在线观看 | 久久成人精品电影 | 一级精品视频在线观看宜春院 | 日韩精品影视 | 日韩精品一区在线观看 | 国产精品美女毛片真酒店 | 亚洲免费在线 | 国产精品一区在线 | 国产99久久久国产精品免费二区 | 日韩精品一区二区三区第95 | 中文一区二区三区在线观看 | 天天射天天 | 亚洲精品久久久久久久不卡四虎 | 国产中文视 | av在线一二三区 | 中文字幕在线免费播放 | 黄色精品国产 | 国产精品精品久久久久久 | 摸阴视频 | 国产美女免费 | 在线免费观看视频一区 | 日本精品视频免费 | 日韩一二三在线 | 国产成人免费 | 久久久国产日韩 | 一区 二区电影免费在线观看 | 免费高清影视 | 色婷在线 | 亚洲欧美精品一区 | 天天激情站 | 日日干天天 | 国产成人专区 | 日韩美女久久 | 综合网中文字幕 | 国产精品ssss在线亚洲 | 91av电影在线 | av在线播放国产 | 亚洲色五月 | www.日本色 | 色综合天天综合 | 在线免费观看亚洲视频 | 九九免费精品视频在线观看 | 国产在线中文字幕 | 99成人在线视频 | 9在线观看免费高清完整 | av久久在线| 五月激情av | 亚洲精品9| 六月婷婷网 | 中文字幕免费不卡视频 | av综合站| 欧美a级在线 | 五月婷婷色综合 | 91大神在线观看视频 | 亚洲国产精品一区二区尤物区 | 中国一级片在线观看 | 欧美中文字幕第一页 | 国产 视频 高清 免费 | 久久欧美精品 | 亚洲第一久久久 | 国产a国产| 开心激情五月网 | 能在线看的av | 狠狠操操| 国产永久网站 | 91av视频免费在线观看 | 日本精品视频在线 | 亚洲欧美日韩国产精品一区午夜 | 久久国产精品免费一区二区三区 | 久久av免费电影 | 久久久69 | 久久精品国产亚洲aⅴ | 国产精品mv在线观看 | 日韩区欧美久久久无人区 | 亚洲成aⅴ人片久久青草影院 | 国产91亚洲精品 | 成人小视频在线播放 | 亚洲经典中文字幕 | 麻豆传媒视频观看 | 99热99 | 91精品视屏 | 亚洲资源在线观看 | 99视频一区| 99视频精品 | 久草在线视频在线观看 | 久久久久久久国产精品影院 | 成人免费视频播放 | 国产精品6| 日韩欧美一区二区三区在线观看 | 精品视频一区在线 | 国产精品成人在线观看 | 最近日本中文字幕 | 亚洲永久字幕 | 日韩精品欧美专区 | 国产中文在线播放 | 日韩av黄| 色香蕉网 | 玖玖在线视频观看 | 国产精品一区二区三区在线看 | 久久久久久久久国产 | 久久久久久久久久电影 | 亚洲欧美日韩中文在线 | 亚洲天堂在线观看完整版 | 麻豆国产视频 | 五月天色中色 | 国内精品久久久久久 | 在线小视频国产 | 免费看黄在线看 | 一级黄色片毛片 | 亚洲精品久久激情国产片 | 三级免费黄色 | 草久久久 | 一区二区三区在线观看 | 超碰97在线资源站 | 久久久久国产a免费观看rela | 999久久久国产精品 高清av免费观看 | 狠狠色丁香久久婷婷综合_中 | 欧美成年人在线观看 | 国产精品一区在线播放 | 999久久久久久久久 69av视频在线观看 | 国产精品久久久久久69 | 亚洲精品国精品久久99热 | 亚洲国产中文字幕在线观看 | 日韩特黄av | 国产最顶级的黄色片在线免费观看 | 中文字幕在线观看完整版 | 久久久精品亚洲 | 日韩专区av | 色激情五月 | 成人免费xxx在线观看 | 国产又粗又猛又黄视频 | 精品1区二区| 国产黄色播放 | 国产无套视频 | www.av免费观看 | 日韩免费成人 | 99视频免费在线观看 | 久久久2o19精品 | 国产玖玖精品视频 | 国产精品一区久久久久 | 九色在线视频 | 亚洲精品午夜久久久久久久久久久 | 中文一区在线 | 久久精品一区二区三 | 国产精品久久一区二区三区不卡 | 日韩欧美精品免费 | 97超视频免费观看 | 国产一级免费视频 | 91九色网址| 午夜在线免费视频 | 91av官网| 91禁在线看 | 欧美日韩亚洲在线观看 | 香蕉视频网址 | 亚洲精品国产精品国自产 | 99国产视频 | 亚洲性xxxx| 欧美日韩二区三区 | 91传媒激情理伦片 | 国产一区二区三区在线 | 亚洲成免费 | 欧美国产日韩一区二区三区 | 亚洲免费婷婷 | 亚洲乱码久久久 | 国产一区二区高清 | 97日日碰人人模人人澡分享吧 | 国产一级精品在线观看 | 久久免费公开视频 | 亚洲免费精彩视频 | 婷婷四房综合激情五月 | 在线免费观看av网站 | 久久精品一区二区三区国产主播 | 国产精品九九视频 | av丝袜天堂 | 欧美日韩国产精品久久 | av黄色免费看 | 国产精品久久久久久久免费观看 | 少妇精69xxtheporn | 特级西西444www大精品视频免费看 | 网站在线观看日韩 | 最近日本韩国中文字幕 | 欧美最猛性xxx | 日韩午夜av| 色综合天天天天做夜夜夜夜做 | 午夜的福利| 欧美日韩精品在线视频 | 欧美日韩高清一区二区三区 | 日韩一区二区三区免费视频 | 亚洲区色| 精品国产乱码久久久久久天美 | 国产精品黄网站在线观看 | 国内久久精品视频 | 国产高清第一页 | 国产色道 | 免费色视频在线 | 亚洲专区一二三 | 午夜少妇一区二区三区 | 成人免费亚洲 | 色综合狠狠干 | 玖玖精品在线 | 成人资源在线 | 日韩99热| 99精品观看| 91香蕉国产| 精品特级毛片 | 成人在线免费观看视视频 | 香蕉久草在线 | a在线观看免费视频 | 精品欧美一区二区三区久久久 | 成人一区在线观看 | 亚洲国产黄色片 | 亚洲精品国产欧美在线观看 | 人人超碰97 | 久久短视频 | 男女日麻批| 成年人黄色av | 久草视频在线资源站 | 91九色国产 | 欧美日韩视频在线播放 | 久久免费视频在线观看6 | 99热国产在线 | 国产精品自产拍在线观看网站 | 日韩av高清 | 99热精品在线观看 | av电影 一区二区 | 韩日成人av | 亚洲午夜在线视频 | 少妇av片 | 国产99视频在线观看 | 国产成人av综合色 | 一区二区三区免费在线观看视频 | 日韩中文字幕网站 | 99九九99九九九视频精品 | 国产精品久久久久久久电影 | 91视频xxxx| 成人小视频在线播放 | 在线观看欧美成人 | 国产a国产a国产a | 成人午夜电影免费在线观看 | 亚洲三级黄色 | 国产欧美三级 | 国产免费久久久久 | 中文在线a√在线 | 狠色狠色综合久久 | 亚洲电影图片小说 | 国产精品美女久久 | 日韩欧美在线综合网 | 一区二区三区免费网站 | 超碰在线97国产 | 亚洲视频免费在线观看 | 久久成人18免费网站 | 九九久久国产精品 | 欧美一级片免费观看 | 日韩精品影视 | 婷久久| 91九色在线观看视频 | 91精品老司机久久一区啪 | 国产精品视频你懂的 | 欧美日韩视频在线观看免费 | 免费观看十分钟 | 色婷婷中文 | 免费黄色特级片 | 国产欧美日韩精品一区二区免费 | 国产粉嫩在线 | av电影在线免费观看 | 亚洲第一区在线观看 | 97香蕉超级碰碰久久免费软件 | 五月天久久综合 | 黄污视频网站 | 激情久久影院 | 成人91视频| 99久久精品国产免费看不卡 | 在线一区电影 | 国产精品久久久免费看 | 欧美天天干 | av黄色国产 | 久久av不卡| 欧美日韩激情网 | 亚洲精品裸体 | 99久久99久久综合 | 天天操欧美 | 91网在线看| 91热这里只有精品 | 精品亚洲免费视频 | 久久精品79国产精品 | 日本激情视频中文字幕 | 激情丁香在线 | 国产黄色大片免费看 | 91成人精品一区在线播放69 | 亚洲国产激情 | 久草网在线观看 | 欧美激情视频一二区 | 在线观看一级视频 | 国产丝袜一区二区三区 | 国产二区免费视频 | 国产精品99久久免费观看 | 伊人色**天天综合婷婷 | 久久国语| 国产一区在线不卡 | 亚洲网站在线看 | 亚洲成人av一区 | 一级性视频| 国产一区免费在线 | 成片视频免费观看 | 国产精品一区二区中文字幕 | 麻豆久久久久 | 国产精品福利无圣光在线一区 | 91在线一区二区 | 伊人成人久久 | 国产精品久久久亚洲 | 福利一区视频 | 久久精品麻豆 | 成人毛片在线视频 | 国产成人精品网站 | 久久99精品久久久久蜜臀 | 国产一线在线 | 激情视频免费在线 | 国精产品999国精产品视频 | 久久伦理电影网 | 蜜臀av夜夜澡人人爽人人桃色 | 久久精品免视看 | 国产不卡一二三区 | 中文字幕黄色网址 | 国产96在线| 国产成人久久77777精品 | 日本激情视频中文字幕 | 最近免费中文视频 | 午夜视频在线观看欧美 | 国产精品久久久久久久久久直播 | h视频在线看| 亚洲电影免费 | 亚洲精品永久免费视频 | av一级一片 | 日韩在线视频线视频免费网站 | 国产成人精品久久二区二区 | 免费观看的黄色片 | 久草免费福利在线观看 | 九九九在线观看 | 97av视频在线观看 | 亚洲综合色播 | 午夜三级毛片 | av一级一片 | 国产精品久久久久久久久久妇女 | 国产91精品欧美 | 91精品国 | 在线蜜桃视频 | 国产精品嫩草在线 | av电影免费在线看 | 伊人亚洲精品 | 久久久久久久久艹 | 成人精品国产免费网站 | 特黄免费av | 热久久国产精品 | 日本中文字幕视频 | 中文欧美字幕免费 | 超碰国产97 | 在线探花 | 丁香六月久久综合狠狠色 | 国产精品观看视频 | 四虎永久国产精品 | 免费高清在线观看成人 | 热久久免费国产视频 | 午夜精品一区二区三区在线观看 | 九九日韩 | 免费观看性生活大片3 | 久久久这里有精品 | 精品国产一区二区三区av性色 | 成人试看120秒 | 日韩mv欧美mv国产精品 | 国产黄a三级三级三级三级三级 | 婷婷丁香久久五月婷婷 | 在线免费观看欧美日韩 | 97国产精品一区二区 | 99热这里精品 | 91九色国产视频 | 在线小视频你懂的 | 国产一区视频免费在线观看 | 国产 字幕 制服 中文 在线 | 97国产精品 | 天天插天天干天天操 | 久久久免费国产 | 精品自拍网 | 99热这里只有精品国产首页 | 久久国产精品久久精品国产演员表 | 久久久久 免费视频 | 中文字幕免 | 综合婷婷丁香 | 色人久久| 中文字幕乱码在线播放 | 亚洲一区二区三区四区精品 | 亚洲高清视频在线 | 亚洲视频 中文字幕 | 天天av资源| 波多野结衣在线观看视频 | av女优中文字幕在线观看 | 欧美大香线蕉线伊人久久 | 在线观看91视频 | 久久人人爽人人 | 成人99免费视频 | 超碰97国产在线 | 中文字幕av全部资源www中文字幕在线观看 | 91网站免费观看 | 精品国产福利在线 | 在线免费国产 | 三日本三级少妇三级99 | 久久99久久99免费视频 | 成人免费观看网站 | 亚洲精品女人久久久 | 久章操| 精品国产视频在线 | 色偷偷av男人天堂 | 日韩大片在线观看 | 日本动漫做毛片一区二区 | 91香蕉视频黄| 国产精品成人一区二区三区吃奶 | 国产精品中文字幕在线 | 久久成人国产 | 91在线视频免费观看 | 精品伊人久久久 | 中文字幕视频网 | 九九综合久久 | bbbb操bbbb| 黄色aa久久| 97超碰国产在线 | 欧美俄罗斯性视频 | 久久精品久久精品久久精品 | 成人资源站 | 狠狠色丁香婷婷综合久久片 | 97电影在线观看 | 国产精品一区二区在线观看免费 | 婷婷久草 | 黄污污网站 | 精品久久91| 久久人人爽人人爽人人片 | 婷婷免费在线视频 | 国产在线 一区二区三区 | 一区二区三区久久 | www.国产在线视频 | 天天操操 | 国产成人精品一区二区三区免费 | 中文字幕免费一区二区 | 国产91精品看黄网站 | 夜色资源网 | 国产精品久久艹 | 99精品视频在线观看视频 | 夜夜夜夜夜夜操 | 成人动漫视频在线 | 九九热精品视频在线观看 | 91中文字幕在线 | 在线观看国产区 | 久久er99热精品一区二区 | 日本精品中文字幕 | 成人影片在线免费观看 | 丁香六月天 | 99re视频在线观看 | 九九激情视频 | 欧美久久久久久久久久 | 最新亚洲视频 | 9999精品 | 欧美一区二区三区在线看 | 国产精品久久久久久久电影 | 久久99爱视频 | 久久99网 | 亚洲伦理精品 | 久久久久久久久久久久久久电影 | 中文字幕人成人 | 精品国产乱码久久久久 | 青青网视频 | 黄在线 | 99色在线播放 | 在线观看日本高清mv视频 | 又粗又长又大又爽又黄少妇毛片 | 国产高清在线a视频大全 | 日韩精品一区二区三区视频播放 | 国产精品久久久99 | 色婷婷av在线 | 综合久久婷婷 | 最近中文字幕免费 | 成人免费视频在线观看 | 公与妇乱理三级xxx 在线观看视频在线观看 | 国产成人av | 国产一及片 | 国产在线不卡精品 | 欧美亚洲国产一卡 | 日韩欧美在线第一页 | 麻豆av一区二区三区在线观看 | 热久久国产 | 麻豆免费在线播放 | 免费久久久 | 成人久久免费视频 | www亚洲精品 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 中文字幕视频网 | 九九九九精品九九九九 | 日本免费一二三区 | 日韩大片在线免费观看 | 波多野结衣小视频 | 99久久久国产精品免费观看 | 在线精品观看 | 中文字幕视频播放 | 懂色av一区二区三区蜜臀 | 波多野结衣在线视频免费观看 | 亚洲精品欧美精品 | 久艹视频免费观看 | 亚洲精品视频免费观看 | 色偷偷男人的天堂av | 91亚洲精 | 成人免费亚洲 | 久久av在线播放 | 久久精品香蕉 | 免费精品人在线二线三线 | 久久免费一级片 | 欧美日韩成人 | 欧洲色综合 | 国产精品日韩在线 | 久久在线免费视频 | 婷婷色在线播放 | 天天操夜操 | 天天干天天拍天天操天天拍 | 黄色av网站在线观看 | 天天干天天操av | 久久人人看 | a级国产乱理论片在线观看 伊人宗合网 | 中文乱码视频在线观看 | 日日爽 | 国产永久免费高清在线观看视频 | 五月天最新网址 | 亚洲综合视频在线播放 | 一级α片免费看 | 国产美女精品视频免费观看 | 99久久9 | 久久免费资源 | 日韩av不卡在线播放 | 国产成人精品一二三区 | 日韩欧美视频一区二区三区 | 国产成人久久精品77777 | 国产精品综合久久久久久 | 中文视频一区二区 | 99热在线看 | 天天干,天天干 | 99精品在线播放 | 一区二区精品在线观看 | 久久精品99北条麻妃 | 久久avav| 免费在线国产视频 | 久久99精品久久久久久 | 操操综合网 | 免费久久精品视频 | 丁香六月激情 | 婷婷丁香色 | 久久精品99国产精品酒店日本 | 人人爽人人射 | 天天操天天爱天天干 | 日韩成人精品一区二区 | 又黄又爽的视频在线观看网站 | 日韩中文在线观看 | 亚洲综合在 | 日本精a在线观看 | 91香蕉久久 | 超碰国产人人 | 午夜精品福利一区二区三区蜜桃 | av中文字幕日韩 | 久久精品99国产国产精 | 亚洲欧美成人综合 | 三级免费黄色 | 国产一区二区免费 | 天天搞天天干 | 久草在线视频网 | 国产精品99久久久久久人免费 | 久久网站免费 | 日韩v在线 | 最近中文字幕完整视频高清1 | 久久精品专区 | 国产香蕉视频在线观看 | 欧美超碰在线 | 婷婷在线播放 | 日韩欧美视频免费观看 | 国产婷婷久久 | 国产精品成人aaaaa网站 | 久久精品韩国 | 国产成人av| 日韩av影视在线观看 | 久久免费黄色网址 | 奇米影视999 | 黄色国产成人 | 九九免费在线视频 | 永久免费视频国产 | 亚洲精品久久久久58 | 欧美精品久久久久性色 | 婷婷干五月| 国产专区第一页 | 91中文字幕视频 | 国产高清精品在线观看 | 91亚洲精品久久久 | 91视频观看免费 | 国产成人一区二区三区在线观看 | av免费线看 | 香蕉在线视频播放网站 | 国产在线97 | 国内久久久久久 | 免费人成在线观看网站 | 一二区电影 | 天天操比 | 亚洲成年人免费网站 | 亚洲国产中文字幕 | 456成人精品影院 | 国产福利免费看 | 在线播放国产精品 | 国产在线精品国自产拍影院 | 久久精品超碰 | 国产69精品久久app免费版 | 国产亚洲精品日韩在线tv黄 | 国产色影院 | 五月婷婷香蕉 | 成年人免费电影 | av专区在线| 91九色精品女同系列 | 手机av在线免费观看 | 亚洲国产片色 | 中文字幕成人 | 又爽又黄又刺激的视频 | 国产精品观看在线亚洲人成网 | 国产色 在线 | 国产精品免费观看国产网曝瓜 | 午夜性福利 | 在线免费高清一区二区三区 | 五月天激情综合网 | 亚洲欧美乱综合图片区小说区 | 五月天久久综合网 | 欧美黄色成人 | 亚洲精品视频在 | 免费av免费观看 | 久久成人国产 | 国产91在线观 | 日本在线免费看 | a'aaa级片在线观看 | 久久99久久99免费视频 | 久久久久观看 | 九色视频网 | 日本精品久久久久影院 | 久久精品视频网 | 天天色欧美 | 免费在线观看a v | 婷婷激情综合五月天 | 久久婷婷色综合 | 91在线小视频 | 美女露久久 | 狠狠狠狠狠狠狠 | 91亚色视频在线观看 | 日韩欧美精品一区二区三区经典 | 在线看国产| 九九热在线精品 | 久久久久国 | 成人国产精品av | 久久国产精品99久久久久久老狼 | 一区二区三区在线免费 | 看全黄大色黄大片 | 麻豆精品传媒视频 | 日韩综合一区二区三区 | 精品福利在线 | 激情深爱五月 | 综合精品在线 | 国产性天天综合网 | 日本在线视频网址 | 伊人色**天天综合婷婷 | 色婷婷激情综合 | 午夜丁香视频在线观看 | 91精彩视频 | 欧美另类巨大 | 国产拍在线 | 996久久国产精品线观看 | 日日操操操 | 最新中文字幕在线播放 | 91最新中文字幕 | 日韩免 | 91麻豆国产福利在线观看 | 国产做爰视频 | 欧美激情综合五月色丁香 | 丁香花在线观看免费完整版视频 | 久久久精品成人 | 欧美成a人片在线观看久 | 99视频在线精品国自产拍免费观看 | 日韩免费高清在线 | 国产做a爱一级久久 | 免费成人黄色 | 人人搞人人爽 | 亚洲国产成人高清精品 | 99re国产| 超碰在线cao | 黄色在线成人 | 亚洲理论片 | 国产免费作爱视频 | 久久国产品 | 亚洲国内精品视频 | 中文字幕日本在线 | 狠狠狠狠干 | 人人爱爱 | 人人爱人人添 | 中文字幕在线观看视频一区 | 丁香六月婷婷综合 | 欧美极品裸体 | 国产精品正在播放 | 天天射天天操天天干 | 国产系列精品av | 99视频在线观看一区三区 | 又粗又长又大又爽又黄少妇毛片 | 在线观看免费版高清版 | 中文字幕在线播出 | 成人午夜影院在线观看 | 91重口视频 | 九九九在线观看视频 | 久久免费视频这里只有精品 | 99久久久国产精品免费99 | 欧美黑吊大战白妞欧美 | 久久久久国产精品免费网站 | 日本韩国欧美在线观看 | 国产成人一区二区三区在线观看 | 午夜色大片在线观看 | 色婷婷激情电影 | 久久精品一区二区三区四区 | 天天操天天干天天 | 国产精品久久久久久久久久久久午夜片 | 国产 日韩 欧美 中文 在线播放 | 亚洲一区二区视频 | 人人插人人费 | 久久视频免费在线观看 | 久久夜色精品国产欧美乱 | 在线观看日韩国产 | 久久精品免费观看 | 91av观看 | 久久综合久久综合这里只有精品 | 99色网站| 国产在线不卡一区 | 色婷婷www | 午夜视频一区二区 | 色综合久久久久综合体桃花网 | 字幕网av | 日韩一区二区在线免费观看 | 91高清完整版在线观看 | 97超碰人人模人人人爽人人爱 | 夜夜摸夜夜爽 | 狠狠黄 | 人人澡人 | 成人在线观看资源 | 日韩高清无线码2023 | 日韩午夜高清 | 免费试看一区 | 一区二区三区精品在线视频 | 伊人色综合久久天天 | 超碰999| 欧美日韩精品在线 | 国产高清视频色在线www | 日批视频在线观看免费 | 五月天中文字幕 | 天天草天天干天天 | jizzjizzjizz亚洲 | 久久草av| 中文字幕在线国产 | 国内少妇自拍视频一区 | 欧美精品久久 | 99色| 午夜精品一区二区三区在线观看 | 亚洲黄在线观看 | 99精品在线观看 | 国产.精品.日韩.另类.中文.在线.播放 | 99tvdz@gmail.com| 91精品免费视频 | 日韩高清精品一区二区 | 国产精品久久久久久爽爽爽 | 成人福利av | 国产福利一区二区在线 | 亚洲性少妇性猛交wwww乱大交 | 成人一区二区三区中文字幕 | 丁香婷婷久久 | 91在线播| 亚洲精品国产精品国自产在线 | 成年人免费av网站 | 福利电影久久 | 91在线观看高清 | 久久精美视频 | 97视频免费 | 久99久精品视频免费观看 | 手机av在线免费观看 | 麻豆视频在线 | 亚洲天堂网在线视频观看 | 欧美激情视频在线免费观看 | 久久五月激情 | 午夜精品一区二区三区在线播放 | 久久综合久久伊人 | 丁香资源影视免费观看 | 国产精品激情偷乱一区二区∴ | 精品a视频 | 免费看十八岁美女 | 天天干天天干天天射 | 日韩中文字幕在线不卡 | 久草在线在线精品观看 | 国产精品永久在线观看 | 色插综合| 久久成人麻豆午夜电影 | 日韩二级毛片 | 国内视频在线观看 | 免费能看的黄色片 | 欧美最爽乱淫视频播放 | 欧美日韩中字 | 国产一区二区在线看 | 国产淫a| 免费av黄色 | 99热手机在线观看 | 操操操夜夜操 | 夜夜躁日日躁狠狠久久av | 天天草夜夜 | 99久久国产免费免费 | 99在线免费视频观看 | 久久天天躁夜夜躁狠狠躁2022 | 国产色就色 | 亚洲视频综合在线 | 国产中文字幕在线视频 | 国产一级片免费播放 | 亚洲日本色 | 成年人电影免费在线观看 | 日韩av二区 | 天天躁天天操 | 99久久99久国产黄毛片 | 在线观看视频在线观看 | 日韩v在线91成人自拍 | 久久精品久久99精品久久 | 91精品在线免费视频 | 日韩免费在线看 | 91在线免费视频观看 | 人人爽人人爽 | 美女在线观看网站 | 亚洲综合欧美日韩狠狠色 | 国产精品视频免费 | 久久欧洲视频 | 国产18精品乱码免费看 | 久久久久免费精品视频 | 日韩久久精品一区二区 | 日韩久久久久久久久 | 人人看人人 | 久久精品一级片 | 五月开心综合 | 国产专区视频 | 国产精品女主播一区二区三区 | 丁香六月色 | 在线视频日韩欧美 | 天天草天天摸 | 天天综合日日夜夜 | 免费看亚洲毛片 | 久草在线手机观看 | 黄色片免费在线 | 国产亚洲日本 | 成人禁用看黄a在线 | 国产一区二区免费在线观看 | 日本黄区免费视频观看 | 韩国一区视频 | 99久久久久国产精品免费 | 91av在线视频播放 | 亚洲精品久久久蜜臀下载官网 | 成 人 黄 色视频免费播放 | 国产精品国产三级国产aⅴ入口 | 久久久精华网 | 日韩免费中文字幕 | 国产在线观看高清视频 | 9999毛片 | 日韩欧美一区二区在线播放 | 青青河边草观看完整版高清 | 视频在线观看日韩 | 久久激情片 | 国产精品一区二区三区在线看 | 亚洲精品国产欧美在线观看 | 日本精品一区二区三区在线观看 | 国产原创av片 | 日韩欧美一级二级 | 91久久国产自产拍夜夜嗨 | 欧美人交a欧美精品 | 成人影片在线免费观看 | 日韩欧美在线播放 | 天天玩天天干天天操 | 日本久久中文字幕 | 久久免费精品一区二区三区 | 国产精品 久久 | 91传媒视频在线观看 | 99国内精品 | 二区精品视频 | 激情五月播播久久久精品 | 综合久久久 | 天天综合网天天综合色 | 精品亚洲免费 | 欧美有色 | 免费观看一区 | 免费看污在线观看 | 日韩精品在线视频免费观看 | 99久久99久国产黄毛片 | 夜夜躁日日躁狠狠久久88av | www.五月天色| 黄色特级毛片 | 一本一本久久aa综合精品 | 免费在线电影网址大全 | 成人aaa毛片 | 中文字幕久久亚洲 | 精品国产免费久久 | 久久久久99精品成人片三人毛片 | 99精品热视频 | 久久久久亚洲精品成人网小说 | 中文字幕在线免费看线人 | 亚洲人人网 | 91精品一区二区在线观看 | 在线看中文字幕 | 中文字幕一区二区三区视频 | 亚洲欧美视频一区二区三区 | 美女视频黄免费网站 | 97超碰超碰久久福利超碰 | 免费色黄| 麻豆视频免费入口 | 91久久精| 天天舔天天搞 | 久久在草| 亚洲精品视频免费看 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 麻豆免费视频 | 一区二区三区国 | 国产高清视频色在线www | 亚洲综合情 | 免费在线观看午夜视频 | 麻豆久久 | 2019免费中文字幕 | 深爱激情av| 亚洲开心激情 | 日韩天堂在线观看 | 日本xxxx裸体xxxx17 | 国产91国语对白在线 | 精一区二区| 日韩美女久久 | 天天操夜夜逼 | 三级视频日韩 | 亚洲欧美在线视频免费 | 999成人国产| 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 婷婷综合成人 | 人人超在线公开视频 | 狠狠色丁香婷婷综合视频 | 中文乱幕日产无线码1区 | 在线高清 | 黄色大全免费网站 | 日韩欧美精品一区 | 中文永久免费观看 | 国产精品高潮在线观看 | 国产手机在线观看 | 欧美在线视频二区 | 91.精品高清在线观看 | se婷婷 | 韩日精品中文字幕 |