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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

源码分析系列1:HashMap源码分析(基于JDK1.8)

發布時間:2024/1/17 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 源码分析系列1:HashMap源码分析(基于JDK1.8) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.HashMap的底層實現圖示

  

  如上圖所示:

  HashMap底層是由? 數組+(鏈表)+(紅黑樹)?組成,每個存儲在HashMap中的鍵值對都存放在一個Node節點之中,其中包含了Key-Value之外,還包括hash值(key.hashCode()) ^ (h >>> 16)) 以及執行下一個節點的指針next。

?

2.HashMap源碼分析

2.1 重要常量

public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {private static final long serialVersionUID = 362498820763181265L;static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; static final int MAXIMUM_CAPACITY = 1 << 30;     static final float DEFAULT_LOAD_FACTOR = 0.75f;   static final int TREEIFY_THRESHOLD = 8;static final int UNTREEIFY_THRESHOLD = 6;static final int MIN_TREEIFY_CAPACITY = 64; transient Node<K,V>[] table;? 
transient Set<Map.Entry<K,V>> entrySet;
  transient int size;
  transient int modCount;
int threshold;
  final float loadFactor;
  • DEFAULT_INITIAL_CAPACITY : HashMap的默認容量,16

  • MAXIMUM_CAPACITY : HashMap的最大支持容量,2^30

  • DEFAULT_LOAD_FACTOR:HashMap的默認加載因子

  • TREEIFY_THRESHOLD:Bucket中鏈表長度大于該默認值,轉化為紅黑樹

  • UNTREEIFY_THRESHOLD:Bucket中紅黑樹存儲的Node小于該默認值,轉化為鏈表

  • MIN_TREEIFY_CAPACITY:桶中的Node被樹化時最小的hash表容量。(當桶中Node的數量大到需要變紅黑樹時,若hash表容量小于MIN_TREEIFY_CAPACITY時,此時應執行resize擴容操作這個MIN_TREEIFY_CAPACITY的值至少是TREEIFY_THRESHOLD的4倍。)

  • table:存儲元素的數組,總是2的n次冪

  • entrySet:存儲具體元素的集

  • size:HashMap中存儲的鍵值對的數量

  • modCount:HashMap擴容和結構改變的次數。

  • threshold:擴容的臨界值,=容量*填充因子

  • loadFactor:填充因子

2.2 重要方法

1.獲取hash值? hash

static final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}

  hash方法用傳入的key的hashCode和hashCode無符號右移16位的結果,做異或運算后作為hash值返回。

注:之所以獲取hashCode后,還需要和右移16位的hashCode做異或運算,原因是:在根據hash值獲取鍵值對在bucket數組中的下標時,采用的算法是:index=h & (length-1),當數組的length較小時,只有低位能夠參與到“與”運算中,但是將hashCode右移16位再與本身做異或獲取到的hash,可以使高低位均能夠參與到后面的與運算中。

下面圖說明:

2.根據鍵值對數量獲取HashMap容量方法? ?tableSizeFor

static final int tableSizeFor(int cap) {int n = cap - 1;n |= n >>> 1;n |= n >>> 2;n |= n >>> 4;n |= n >>> 8;n |= n >>> 16;return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;}

tabSizeFor方法,主要根據傳入的鍵值對容量,來返回大于容量的最小的二次冪數值。

算法如下: 

 將傳入的容量-1:至于這里為什么需要減1,是為了防止cap已經是2的冪。如果cap已經是2的冪, 又沒有執行這個減1操作,則執行完后面的幾條無符號右移操作之后,返回的capacity將是這個cap的2倍,各位可自行驗證:

?

 假設原始n:? ? 0001? xxxx xxxx xxxx

第一次右移1位+或運算:二進制序列出現至少兩個連續的1,如 0001 1xxx xxxx xxxx; 第二次右移2位+或運算:二進制序列出現至少四個連續的1,如 0001 111x xxxx xxxx;

第三次右移4位+或運算:二進制序列出現至少八個連續的1, 如 0001 1111 1111 xxxx;

第四次右移8位+或運算:二進制序列至少出現16個連續的1,如 0001 1111 1111 1111; 第五次右移16位+或運算:二進制序列至少出現32個連續的1,如 0001 1111 1111 1111;   上述運算中,若出現右移后為0,則或運算得到的結果和原始值一致,則后續推導過程可以忽略。
此時可以保證,原始序列從包含1的最高位,到最低位,全部都變成了1.
最后+1,返回的結果就是大于原值的最小二次冪數。
  

3.插入方法? ?putVal

  

1 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, 2 boolean evict) { 3 4 Node<K,V>[] tab; //存儲Node節點的數組tab 5 Node<K,V> p; //單個Node節點p 6 int n, i; //HashMap的容量n 7 //初始化數組桶table 8 if ((tab = table) == null || (n = tab.length) == 0) 9 n = (tab = resize()).length; 10 //如果數組桶中不包含要插入的元素,將新鍵值對作為新Node存入數組, 11 if ((p = tab[i = (n - 1) & hash]) == null) //此處p初始化,p和需要存儲的鍵值對下標相同且P是鏈表的第一個元素 12 tab[i] = newNode(hash, key, value, null); 13 14 //桶中包含要插入的元素 15 else { 16 Node<K,V> e; K k; 17 //如果key和鏈表第一個元素p的key相等 18 if (p.hash == hash && 19 ((k = p.key) == key || (key != null && key.equals(k)))) 20 //則將e指向該鍵值對 21 e = p; 22 //若p是TreeNode類型,則使用紅黑樹的方法插入到樹中 23 else if (p instanceof TreeNode) 24 e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value); 25 //else:鍵值對的引用不在鏈表的第一個節點,此時需要遍歷鏈表 26 else { 27 for (int binCount = 0; ; ++binCount) { 28 //將e指向p的下一個元素,直到其next為null時,將鍵值對作為新Node放到p的尾部或樹中。 29 if ((e = p.next) == null) { 30 p.next = newNode(hash, key, value, null); 31 //如果遍歷鏈表的長度大于等于8,則變成樹 32 if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st 33 treeifyBin(tab, hash); 34 break; //新元素已追加到鏈表尾部或樹中,退出遍歷 35 } 36 //在沖突鏈表中找到另一個具有相同key值的節點,退出遍歷 37 if (e.hash == hash && 38 ((k = e.key) == key || (key != null && key.equals(k)))) 39 break; 40 41 //將e指向p,便于下次遍歷e = p.next 42 p = e; 43 } 44 //上述for循環執行完畢后,e要么指向了存儲的新節點,要么是原來已有的元素,具有和新節點一樣key值 45 } 46 //當e非空時,說明e是原來HashMap中的元素,具有和新節點一樣的key值 47 if (e != null) { // existing mapping for key 48 V oldValue = e.value; 49 if (!onlyIfAbsent || oldValue == null) //onlyIfAbsent 表示是否僅在 oldValue 為 null 的情況下更新鍵值對的值 50 e.value = value; 51 //空實現,LinkedHashMap用 52 afterNodeAccess(e); 53 return oldValue; 54 } 55 } 56 //HashMap結構更改,modCount+1 57 ++modCount; 58 //判斷是否需要擴容 59 if (++size > threshold) 60 resize(); 61 //空實現,LinkedHashMap用 62 afterNodeInsertion(evict); 63 return null; 64 }

  HashMap中進行存儲的入口方法是:put(K,V),但是核心方法是putVal方法,該方法一共有以下步驟:

  • 初始化數組桶
  • 判斷數組桶中對應下標是否無元素存在,是,就直接存入
  • 若數組桶中對應下標有元素存在,則開始遍歷,根據長度將元素存入鏈表尾部或樹中。
  • 判斷是否需要擴容
  •   

    4.擴容方法? ?resize

    1 final Node<K,V>[] resize() { 2 Node<K,V>[] oldTab = table; 3 int oldCap = (oldTab == null) ? 0 : oldTab.length; //原HashMap的容量 4 int oldThr = threshold; //原HashMap的擴容臨界值 5 int newCap, newThr = 0; 6 //case1:odlCap>0,說明桶數組已經初始化過 7 if (oldCap > 0) { 8 //原HashMap的越界檢查 9 if (oldCap >= MAXIMUM_CAPACITY) { 10 threshold = Integer.MAX_VALUE; 11 return oldTab; 12 } 13 //容量擴大一倍后的越界檢查 14 else if ((newCap = oldCap << 1) < MAXIMUM_CAPACITY && 15 oldCap >= DEFAULT_INITIAL_CAPACITY) 16 newThr = oldThr << 1; // double threshold 17 } 18 //case2:oldCap=0 && oldThr >0,桶數組尚未初始化,當調用帶初始化容量的構造函數時會發生該情況 19 else if (oldThr > 0) // initial capacity was placed in threshold 20 //在前面HashMap的初始化中,將Initial capcity暫存在threshold中 21 newCap = oldThr; //未初始化,則用Initial capcity作為新的容量 22 23 //若oldThr = threshold = 0,則說明未傳入初始化容量參數 24 25 //case3:oldCap=0 && oldThr = 0,當調用無參構造函數時會發生該情況,此時使用默認容量初始化 26 else { // zero initial threshold signifies using defaults 27 newCap = DEFAULT_INITIAL_CAPACITY; //默認容量 28 newThr = (int)(DEFAULT_LOAD_FACTOR * DEFAULT_INITIAL_CAPACITY); //默認擴容臨界值 29 } 30 31 // 當newThr 為 0 時,閾值按照計算公式進行計算 32 if (newThr == 0) { 33 float ft = (float)newCap * loadFactor; 34 newThr = (newCap < MAXIMUM_CAPACITY && ft < (float)MAXIMUM_CAPACITY ? 35 (int)ft : Integer.MAX_VALUE); 36 } 37 38 threshold = newThr; 39 /* 40 * 在上面的操作中,主要是獲取了Resize之后的新的Capcity和新的擴容臨界值threshold 41 */ 42 43 @SuppressWarnings({"rawtypes","unchecked"}) 44 //上面獲取到的新的Capcity,來創建一個新的桶數組 newTab,并指向table 45 Node<K,V>[] newTab = (Node<K,V>[])new Node[newCap]; 46 table = newTab; 47 //若oldTab非空,則需要將原來桶數組的元素取出來放到新的桶數組中 48 if (oldTab != null) { 49 for (int j = 0; j < oldCap; ++j) { 50 Node<K,V> e; 51 if ((e = oldTab[j]) != null) { 52 oldTab[j] = null; //將原桶數組的元素占用的空間釋放,便于GC 53 if (e.next == null) 54 //若桶中元素的next為空,獲取index后直接將其放入新桶數組中 55 newTab[e.hash & (newCap - 1)] = e; 56 //若桶中元素的next是樹節點 57 else if (e instanceof TreeNode) 58 //采用樹的方式插入 59 ((TreeNode<K,V>)e).split(this, newTab, j, oldCap); 60 //若桶中元素的next是鏈表節點 61 else { // preserve order 62 Node<K,V> loHead = null, loTail = null; 63 Node<K,V> hiHead = null, hiTail = null; 64 Node<K,V> next; 65 66 /*遍歷原鏈表,按照原來的順序進行分組 67 */ 68 69 70 /*原始鏈表中的元素,在resize之后,其下標有兩種可能,一種是在原來下標處,另一種是原來下標+oldCap處 71 *舉例說明: 若原來的容量 -1后 只有n位,低位有n個1,去下標公式為:i = (oldCap - 1) & hash,若hash值只有低n為有值,則與運算后獲得的值和 72 *擴容前是一樣的,若hash不止第n位有值,那采用與運算后,結果比原來剛好大oldCap。 下面有圖片示例) 73 */ 74 75 76 do { 77 next = e.next 78 //若e.e.hash & oldCap 結果為0,則下標在新桶數組中不用改變,此時,將元素存放在loHead為首的鏈表中 79 if ((e.hash & oldCap) == 0) { 80 if (loTail == null) 81 loHead = e; 82 else 83 loTail.next = e; 84 loTail = e; 85 } 86 87 //若e.e.hash & oldCap 結果不為0,則下標在新桶數組等于原下標+oldCap,此時,將元素存放在hiHead為首的鏈表中 88 else { 89 if (hiTail == null) 90 hiHead = e; 91 else 92 hiTail.next = e; 93 hiTail = e; 94 } 95 } while ((e = next) != null); 96 97 98 99 if (loTail != null) { //loHead為首的鏈表中,下標不改變 100 loTail.next = null; 101 newTab[j] = loHead; 102 } 103 if (hiTail != null) { //hiHead為首的鏈表中,下標=原下標+oldCap 104 hiTail.next = null; 105 newTab[j + oldCap] = hiHead; 106 } 107 } 108 } 109 } 110 } 111 return newTab; 112 }

      上述代碼分析較長,總結如下:

    1.獲取不同情況下的 新的容量 和 新的擴容臨界值

    2.根據新容量創建新的桶數組tab。

    3.根據節點類型,樹節點和鏈表節點分別采用對應方法放入新的桶數組

    ?

    5.移除元素? remove

    1 final Node<K,V> removeNode(int hash, Object key, Object value, 2 boolean matchValue, boolean movable) { 3 Node<K,V>[] tab; Node<K,V> p; int n, index; 4 5 //通過hash值獲取下標,下標對應的節點p不為空 6 if ((tab = table) != null && (n = tab.length) > 0 && 7 (p = tab[index = (n - 1) & hash]) != null) { 8 Node<K,V> node = null, e; K k; V v; 9 //若節點p的key和待移除的節點key相等 10 if (p.hash == hash && 11 ((k = p.key) == key || (key != null && key.equals(k)))) 12 //則p就是待移除節點 13 node = p; //將p指向待移除節點 14 //p的key和待移除的節點key不相等,遍歷p作為頭的鏈表或者樹 15 else if ((e = p.next) != null) { 16 //若p是樹節點 17 if (p instanceof TreeNode) 18 //采用樹節點方式獲得要移除的節點 19 node = ((TreeNode<K,V>)p).getTreeNode(hash, key); 20 else {//p是鏈表的頭節點 21 do { 22 //采用循環,當p.next不為空,比對它和傳入的key,直到找到相等的key 23 if (e.hash == hash && 24 ((k = e.key) == key || 25 (key != null && key.equals(k)))) { 26 //找到后,將節點指向node 27 node = e; //將e指向待移除節點,此時相當于p.next就是待移除的節點node,可自行驗證循環便知 28 break; 29 } 30 p = e; 31 } while ((e = e.next) != null); 32 } 33 } 34 //若node非空,傳入的matchValue參數為flase或 node的value等于傳入value 35 if (node != null && (!matchValue || (v = node.value) == value || 36 (value != null && value.equals(v)))) { 37 //若node是樹節點 38 if (node instanceof TreeNode) 39 //采用樹節點的方式移除 40 ((TreeNode<K,V>)node).removeTreeNode(this, tab, movable); 41 //若待移除節點是鏈表頭,將其指向待移除元素的next,移除對node的引用 42 else if (node == p) 43 tab[index] = node.next; 44 else//待移除元素是鏈表中的元素,此時其等于p.next 45 //將p.next指向node.next,移除了對node的引用 46 p.next = node.next; 47 //增加結構修改計數器 48 ++modCount; 49 //size-1 50 --size; 51 //空實現,LinkedHashMap用 52 afterNodeRemoval(node); 53 54 //返回移除的節點node 55 return node; 56 } 57 } 58 return null; 59 }

    ?

        移除節點的入口方法是:?public V remove(Object key)? ,其核心方法是removeNode,主要做了以下幾個工作:

  • 通過用key獲取的hash,來獲取下標。
  • 若下標對應處無元素,返回null。
  • 若下標對應處有元素,判斷是樹或者鏈表,采用對應方法移除。  
  • 6.查找元素方法 get

    1 final Node<K,V> getNode(int hash, Object key) { 2 Node<K,V>[] tab; Node<K,V> first, e; int n; K k; 3 //根據hash值,獲取對應下標的第一個元素first 4 if ((tab = table) != null && (n = tab.length) > 0 && 5 (first = tab[(n - 1) & hash]) != null) { 6 //如果first的key和待查詢的key相等,返回first 7 if (first.hash == hash && // always check first node 8 ((k = first.key) == key || (key != null && key.equals(k)))) 9 return first; 10 //若first不是待查詢的元素 11 if ((e = first.next) != null) { 12 //若first是樹節點,采用樹節點的方式獲取 13 if (first instanceof TreeNode) 14 return ((TreeNode<K,V>)first).getTreeNode(hash, key); 15 //first是鏈表節點頭,使用循環獲取 16 do { 17 if (e.hash == hash && 18 ((k = e.key) == key || (key != null && key.equals(k)))) 19 return e; 20 } while ((e = e.next) != null); 21 } 22 } 23 return null; 24 }

        查詢元素的入口方法是:public V get(Object key),返回值是node的value,核心方法是getNode(int hash, Object key)。

    2.3 構造方法

    1.無參構造函數

    public HashMap() {this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted}

      使用所有默認參數來構造一個HashMap,我們常用的就是這種。

    2.給出容量的構造函數 

    public HashMap(int initialCapacity) {this(initialCapacity, DEFAULT_LOAD_FACTOR);}

      此處調用了下面這個構造函數,將給出的容量傳入和默認負載因子。

    3.給出容量和負載因子的構造函數

    public HashMap(int initialCapacity, float loadFactor) {
          //容量越界檢查
    if (initialCapacity < 0)throw new IllegalArgumentException("Illegal initial capacity: " +initialCapacity);if (initialCapacity > MAXIMUM_CAPACITY)initialCapacity = MAXIMUM_CAPACITY;
          //負載因子非負非空檢查
    if (loadFactor <= 0 || Float.isNaN(loadFactor))throw new IllegalArgumentException("Illegal load factor: " +loadFactor);
        
    this.loadFactor = loadFactor; this.threshold = tableSizeFor(initialCapacity); //此處將初始化的容量暫存到threshold中}

    4.用一個map來初始化的構造函數

    public HashMap(Map<? extends K, ? extends V> m) {this.loadFactor = DEFAULT_LOAD_FACTOR;putMapEntries(m, false);}

      此處將map中所有元素放入HashMap進行初始化。

    3.常見問題解答

    3.1 HashMap的容量為什么必須是2的n次冪?

        答:當容量是2的n次冪時,不同的key獲取在桶數組中的下標相同的概率減小,發生Hash碰撞幾率減少,元素分布更加均勻,見下圖。

      

    結論

    1.由上述實例可以看出,當HashMap容量為2的n次冪的時候,length-1,可以使得在計算index的"&"運算過程中,hash值的對應位都能參與到計算;若HashMap容量不等于2的n次冪,leng-1后必然有一些位是等于0的,那么在計算index的"&"運算過程中,對應位的數字無論是0或者1,都未能參與到運算中。導致Hash沖突概率增大。

    2.初次之外,若HashMap容量不為2的n次冪,無論Hash值如何變化,始終有一些下標值無法取得,因為"&"運算過程中,必然有一些位置結果始終為0,如實例所示,其最低位始終為0,因此下標 1(二進制0000 0001)、3(二進制0000 0011)、5(二進制0000 0101)、7(二進制0000 0111)等下標、永遠都獲取不了。造成了容量的浪費

    3.2 HashMap的時間復雜度?

      答:O(1)或者O(log(n))或O(n),分析如下:

      根據第一節的內容可知,根據HashMap的數據結構,可能有以下三種情況:

      1.無鏈表和紅黑樹,理想狀態。每個桶只有一個或0個元素,不存在Hash沖突,此時時間復雜度為O(1);但此時耗費的內存空間較大。

      2.只有鏈表,此時因為需要循環鏈表來獲取元素,時間復雜度為O(n)

      3.只有紅黑樹,此時時間復雜度為紅黑樹查找的時間復雜度,O(log(n)).

      4.鏈表和紅黑樹均有,此時時間復雜度依據紅黑樹的層數和鏈表長度而定。為O(n)或者O(log(n)).

    3.3 負載因子LoadFactor為何默認值為0.75。

      當負載因子過大時,Hash沖突概率增加、讀寫的時間復雜度也大大增加,當負載因子過小時,Hash沖突概率較小,時間復雜度較低,但占用內存空間較大。

      至于為什么默認值是0.75,這是一個基于時間和空間復雜度的綜合考慮的結果,可以參考這篇文章:HashMap的loadFactor為什么是0.75?

    3.4 作為HasHMap的key有什么條件?

      使用HashMap,若用int/String等作為key值,因為Integer類和String類都以及重寫了equals()和hashCode()方法.

      但是如果key是自定義的類,就必須重寫hashcode()和equals()。理由如下:

      

    //在插入元素中,根據hash值后,與length-1做&運算獲取下標//獲取hashstatic final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}//獲取下標p = tab[i = (n - 1) & hash]//用equals方法比對key值和節點的key值,來確認是否遍歷到所需元素(key != null && key.equals(k)))/*對比hash值,如果不重寫hashCode方法,那么采用Object類的默認的hash方法是獲取內存地址,此時即使兩個key對象相等,但其內存地址不可能相等,所以必須重寫hashCode方法。*/ /*equals方法若不重寫,采用的Object的equals方法,比對的是內存地址,如果不重寫,會造成兩個一樣的key值都插入,存在重復元素*/
    //同理,在查找過程中,在第二節putVal方法中有分析,會用到hash值,以及用到key.equals方法,因此如果不重寫equals()和hashCode(),會造成雖然元素存在,但是因內存地址不一致,差找不到對應元素

    3.5 HashMap key允許為空嗎?,最多幾個?

      答:允許但只允許一個key值為空。當key值為空時,其hash值為0,因此在桶數組中位置是0,即第一個元素。

      那么為什么不能有兩個key值為null呢,原因是兩個key為null,是一樣的,后面put進去的(null,value2)會覆蓋先put進去的(null,value1)。驗證如下:

      

      

    3.6 HashMap value允許為空嗎?最多幾個?

      答:允許,可以有多個value為null,查看源碼可知,在putVal中沒有對value進行限制,驗證如下:

      

    寫在最后:

      1.本文中設計到數操作的都沒有詳細介紹,因為紅黑樹本身概念較為抽象復雜,打算下一篇文章中再來詳細分析一下,還有其他一些類似于“map.clear()、map.ContainsKey()”等等邏輯較為簡單的方法也未作贅述。

      2.不得不感嘆一些設計Java集合類的大牛是真的牛,看似一個簡單的HashMap中、對于位運算、鏈表。紅黑樹的應用可謂是爐火純青,看起來都不能一目了然,設計時那更是天馬行空,匠心獨運。

    ?
    3.本人水平有限,如有錯漏,請各位不吝賜教。 ?

    ?

    ?

    轉載于:https://www.cnblogs.com/LearnAndGet/p/9971526.html

    總結

    以上是生活随笔為你收集整理的源码分析系列1:HashMap源码分析(基于JDK1.8)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    在线观看视频一区二区 | 99精品视频免费观看 | 亚洲欧美乱综合图片区小说区 | 午夜av免费观看 | 中文字幕亚洲精品在线观看 | 亚洲精品在线观看网站 | 在线视频亚洲 | 国产理论影院 | 成人av中文字幕在线观看 | 日日躁天天躁 | 中文字幕永久免费 | 碰碰影院 | 日本精品一区二区 | 成人免费视频免费观看 | 91夜夜夜 | 一级黄色片在线免费观看 | 成人午夜黄色影院 | www色com | 日本91在线| 亚洲高清资源 | 日韩av免费一区 | 久久久久国产成人精品亚洲午夜 | 手机av网站 | 亚洲免费在线视频 | 国产原创av在线 | 日本mv大片欧洲mv大片 | 日批在线观看 | 亚洲视频网站在线观看 | 亚洲国产精品成人综合 | 日日干夜夜骑 | 久久99久久久久 | 色婷婷激情电影 | 久久伦理电影网 | 国产综合精品一区二区三区 | 最新国产在线观看 | 午夜精品久久久久久久99热影院 | 天天摸天天操天天爽 | 欧美性猛片 | 九九综合久久 | 亚洲午夜精品电影 | 亚洲成人二区 | 黄色小网站在线观看 | av在线播放快速免费阴 | 一区二区三区精品久久久 | 日韩精品一区二区免费视频 | 一区二区三区三区在线 | 日女人电影 | 天天艹日日干 | 五月婷婷中文网 | 91高清视频在线 | 欧美日韩一区二区视频在线观看 | 亚洲韩国一区二区三区 | 天堂在线视频中文网 | 99国产精品视频免费观看一公开 | 国产成年免费视频 | 国产精品 国产精品 | 久久久久久久久久久国产精品 | 中文字幕在线观看免费观看 | 在线视频app | 日韩三级视频在线观看 | 久久黄色网址 | 国产亚州精品视频 | 六月丁香婷婷久久 | 色播亚洲婷婷 | 丁香伊人网 | 亚洲天堂网视频在线观看 | 国产色在线视频 | 日本最新高清不卡中文字幕 | 日韩免费电影在线观看 | 久久精品91久久久久久再现 | 伊人色播 | av一级片网站| 波多野结衣在线观看一区二区三区 | 亚洲91精品在线观看 | 久久久久99精品成人片三人毛片 | 久草在线视频中文 | 欧美日韩在线看 | 黄色av影院 | 色视频网站在线 | av线上看 | 在线欧美最极品的av | 亚洲国产电影在线观看 | 一区三区在线欧 | 亚洲黑丝少妇 | 在线免费国产视频 | 日日操日日干 | 丁香午夜婷婷 | 天天干夜夜爽 | 日韩精品久久中文字幕 | 亚洲视频综合 | 精品99999| 国产精品日韩在线播放 | 国产午夜视频在线观看 | 在线亚洲午夜片av大片 | 91成人精品一区在线播放69 | av专区在线| 欧美日韩免费在线观看视频 | 国产精品99久久久精品 | 久草视频在线观 | 亚洲高清视频在线观看免费 | 国产福利一区二区三区视频 | 亚洲成人在线免费 | av中文在线影视 | 91精品系列| 91精品在线观看视频 | 免费情缘 | 国产一级不卡视频 | 91重口视频| 日本激情视频中文字幕 | 四虎成人精品永久免费av九九 | 久久天天操 | 亚洲成人av片在线观看 | 在线观看国产v片 | 色婷婷中文 | www·22com天天操| 欧美一级欧美一级 | 一区二区三区在线视频观看58 | 久青草视频| 热久久在线视频 | 亚洲综合精品视频 | 午夜手机电影 | 国产尤物在线视频 | 中文字幕av在线免费 | 国产91在线 | 美洲 | av福利在线看 | 免费看网站在线 | 久久久久女教师免费一区 | 欧美嫩草影院 | 国产精品高清在线观看 | 天天爽综合网 | 国产精品久久久久久麻豆一区 | 国产美女被啪进深处喷白浆视频 | 日本久久久久久久久久 | 精品国产一区二区三区在线观看 | 成年人在线免费看视频 | 51精品国自产在线 | 免费在线h| 久草在线免 | 在线观看的av网站 | 99久久99视频只有精品 | 久久久久久久久久免费视频 | 一区二区三区国 | 最新亚洲视频 | 91亚洲精品国产 | 国产99久久九九精品免费 | 在线中文字幕av观看 | 色婷婷88av视频一二三区 | 久久国产美女 | 香蕉手机在线 | 久草手机视频 | 亚洲精品国久久99热 | 在线观看网站黄 | 天堂视频中文在线 | 亚洲欧洲日韩在线观看 | 精品免费视频 | 婷婷久久综合九色综合 | 18+视频网站链接 | 国产女人40精品一区毛片视频 | 国产精品女 | 黄污网站在线观看 | 免费黄色激情视频 | 久久久久久久久影院 | 精品国产乱码 | 天天操天天爱天天爽 | 午夜视频黄| 国产98色在线 | 日韩 | 麻豆视频在线观看 | 国产黄免费在线观看 | 黄色成年 | 国产一区欧美日韩 | 中文字幕一区2区3区 | 激情久久小说 | 激情婷婷综合网 | 国产剧情一区 | 正在播放国产一区二区 | 国产美女搞久久 | 亚洲精品国久久99热 | www.91国产 | 国产精品久久久久久久久久久久午夜片 | 国产系列 在线观看 | 免费看一级 | 中文字幕一区在线观看视频 | 久草在线视频在线 | 中文av在线免费观看 | 日韩黄在线观看 | 久久精品国产免费 | 免费看毛片网站 | 久久久久国产免费免费 | 亚洲精品在线国产 | 91麻豆免费版 | 久久国产日韩 | 激情综合狠狠 | 国产精品永久在线观看 | 国产精彩视频一区二区 | 啪嗒啪嗒免费观看完整版 | 俺要去色综合狠狠 | 丝袜av一区| 九九热免费在线观看 | 日韩经典一区二区三区 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 精久久久久 | 欧美日韩精品在线观看 | 国产精品6 | 91亚洲精品久久久久图片蜜桃 | 97国产大学生情侣酒店的特点 | 久久99亚洲精品久久 | 国产97视频在线 | 久久久久女人精品毛片九一 | 精品夜夜嗨av一区二区三区 | 天天看天天干天天操 | 国产这里只有精品 | 四虎影视www | 91在线视频播放 | 亚洲成人av影片 | 亚洲精品456在线播放 | 四虎成人精品永久免费av | 在线国产高清 | 欧美色黄 | 国产亚洲久一区二区 | 日本系列中文字幕 | 国产精品成人自拍 | 亚洲成人资源在线观看 | 色橹橹欧美在线观看视频高清 | 亚洲成人资源网 | 激情五月综合 | 91欧美在线 | 久久福利国产 | 国产69精品久久久久99尤 | 九色自拍视频 | 人成午夜视频 | 欧美成人一区二区 | 日韩综合视频在线观看 | 亚洲人成人在线 | 精品国产乱码久久久久久久 | 黄a网站 | av丝袜美腿 | 97超碰资源总站 | 视频一区二区精品 | 欧美日韩国产网站 | 国产精品免费在线 | 黄色精品久久久 | 在线视频福利 | 六月婷婷久香在线视频 | 色欧美综合 | 欧美日韩国产页 | 青青河边草免费观看 | 国产精品久久久 | 国产福利一区二区三区视频 | 蜜桃传媒一区二区 | 成人h动漫在线看 | 黄色片亚洲 | 国产精品免费在线播放 | 九九视频在线观看视频6 | 欧美一级黄色视屏 | 午夜久久久影院 | 一区二区三区中文字幕在线 | 久久综合九色综合久99 | 亚洲精品国产成人av在线 | 综合网伊人 | 日韩中文久久 | 五月婷婷亚洲 | 亚洲综合在线五月天 | 91最新中文字幕 | 狠狠色丁香久久婷婷综合五月 | 在线国产激情视频 | 精品国产一区二区三区免费 | 视频在线观看入口黄最新永久免费国产 | 亚洲精品日韩一区二区电影 | 男女视频91| 丰满少妇高潮在线观看 | 视频一区在线免费观看 | 99人久久精品视频最新地址 | 国产成人精品a | 91九色成人蝌蚪首页 | 一级黄色片在线 | 狠狠操.com | 久草综合视频 | 91亚洲视频在线观看 | 国产亚洲91| 精品一区二区久久久久久久网站 | 免费看v片网站 | 激情五月av | 欧美日韩色婷婷 | 97狠狠干 | 九九99 | 日韩午夜电影网 | 婷婷在线免费 | 狠狠色综合网站久久久久久久 | 婷婷亚洲综合 | 三级黄免费看 | 91视频专区| 欧美精品v国产精品v日韩精品 | 色偷偷88欧美精品久久久 | 精品久久久久久国产91 | 一区二区三区在线观看免费 | 玖玖视频网 | 亚洲天堂网在线视频观看 | 天天色天天射天天操 | 中文字幕在线观看完整版电影 | 国产99精品在线观看 | 国产中文 | 久久精久久精 | 国产视频在线播放 | 日日夜精品 | 国产人成精品一区二区三 | 欧美一区,二区 | 欧洲激情综合 | 亚洲成人黄色在线 | 深爱婷婷久久综合 | 日本 在线 视频 中文 有码 | 午夜av在线播放 | 视频成人永久免费视频 | 99福利片| 手机在线免费av | 色视频在线免费观看 | 日韩av午夜 | 一区二区三区四区五区在线视频 | 亚洲区另类春色综合小说 | 免费看十八岁美女 | 日韩有码网站 | 欧美日韩中文字幕视频 | 国产精品va在线观看入 | 国产呻吟在线 | 国产精品美女毛片真酒店 | 亚洲黄色一级电影 | 99精品在线视频播放 | 国产专区第一页 | 99中文字幕在线观看 | 欧美精品久久久久久久久老牛影院 | 精品国产成人av在线免 | 天天av在线播放 | 日韩二区三区在线 | 日韩欧美在线播放 | av在线h | www成人av | 成人国产精品一区二区 | 黄色片网站av | 97av视频 | 欧美精品乱码99久久影院 | 中文字幕亚洲综合久久五月天色无吗'' | 精品一二三区 | 麻豆成人在线观看 | 久久精品中文字幕一区二区三区 | 丁香激情五月婷婷 | 日韩h在线观看 | 精品一区久久 | 国产传媒中文字幕 | 国产视频一二区 | 日日操夜夜操狠狠操 | 国产小视频网站 | 日韩一级电影网站 | 91人人揉日日捏人人看 | 亚洲成人黄 | 91网站在线视频 | 欧美福利片在线观看 | 91桃花视频 | 国产97视频在线 | 欧美亚洲免费在线一区 | www色片 | 欧美精品久久久 | 国产成人福利在线观看 | 激情综合狠狠 | 日韩欧美极品 | 午夜三级理论 | 久久男人中文字幕资源站 | 成人黄大片视频在线观看 | 亚洲国产日韩精品 | 欧美日韩综合在线观看 | 在线视频亚洲 | 黄色91在线| 色噜噜狠狠狠狠色综合 | 香蕉视频在线免费 | 激情一区二区三区欧美 | 久久久久久久久久毛片 | 最近中文字幕大全中文字幕免费 | 久草免费电影 | 精品无人国产偷自产在线 | 日b黄色片 | 久久成人高清视频 | 黄色成人免费电影 | 亚洲欧美综合精品久久成人 | 一区二区三区电影大全 | 成人在线观看影院 | 97视频总站 | free. 性欧美.com| 成人影片在线免费观看 | 又黄又爽又色无遮挡免费 | 亚洲日本va中文字幕 | 亚洲欧美日韩中文在线 | 狠狠操影视 | 91高清不卡 | 在线草| 色全色在线资源网 | 免费久久99精品国产婷婷六月 | 91高清免费看 | 天天综合网 天天综合色 | 成年人免费电影 | 日韩成人不卡 | 久久免费av电影 | 国产成人久久av977小说 | 国产在线观看av | 国产欧美精品在线观看 | 成人国产精品一区 | 麻豆91在线| 黄色片视频免费 | 日韩在线观看第一页 | 国产福利在线不卡 | 国产区在线视频 | 涩涩网站在线播放 | 999久久国产 | 一区二区免费不卡在线 | 中文日韩在线视频 | www黄| 日韩电影中文,亚洲精品乱码 | 国产成人精品久久亚洲高清不卡 | 丁香免费视频 | 黄色免费观看 | 成人久久 | 亚洲最新av在线 | 国产精品免费在线观看视频 | 亚洲视频综合在线 | 久影院 | 婷婷久久久| 在线亚洲欧美视频 | 一级性生活片 | 午夜久久久久久久 | 中文字幕在线免费播放 | 欧美一进一出抽搐大尺度视频 | 国产精品毛片一区二区 | 欧美日韩国产在线精品 | 91视频在线自拍 | 国产亚洲精品久久久久久电影 | 国产色网| 久久成人国产 | 色姑娘综合 | 久久人人爽爽人人爽人人片av | 人人爽人人爽人人爽 | 欧美精品在线观看一区 | 日韩一区二区三区在线观看 | 在线欧美最极品的av | 麻豆免费精品视频 | 日韩免费一级a毛片在线播放一级 | 久草男人天堂 | 人人干天天射 | 99久久99久久精品国产片果冰 | 国产美女免费看 | 激情一区二区三区欧美 | 亚洲精品视频在线免费播放 | 亚洲天天草 | 免费色视频 | 911亚洲精品第一 | 久久久久久久久久久久久久电影 | 永久免费的啪啪网站免费观看浪潮 | 国产成人精品一区二区三区在线观看 | 99精品久久精品一区二区 | 久久只有精品 | 午夜婷婷在线观看 | 在线观看成人网 | 日本3级在线观看 | 亚洲成人午夜av | 在线国产中文字幕 | 丁香一区二区 | 蜜桃av综合网 | 国产中文字幕亚洲 | 日本中文字幕网址 | 在线播放第一页 | 在线亚洲精品 | 精品久久一区二区 | 日韩av男人的天堂 | 国产在线观看免费 | 中字幕视频在线永久在线观看免费 | 精品久久中文 | 国产在线观看地址 | 亚洲一区二区观看 | 青青网视频 | 五月天婷婷狠狠 | 欧美日韩在线观看一区二区 | 99精品系列| 国产黄色美女 | 国产精品第 | 亚洲我射av | 国产最新在线观看 | 国产精品免费久久久久久 | 人人干人人爽 | 欧美成年网站 | 天天激情在线 | 在线观看免费国产小视频 | 波多野结衣电影一区二区 | 国产精品第一 | 欧美日韩在线观看一区 | 久久久久久久久久网站 | 成人在线黄色 | 色视频在线免费观看 | 亚洲美女精品 | 久久8| 黄色软件在线观看视频 | 久热av| 91成人天堂久久成人 | 中文在线天堂资源 | 免费看短 | 91精品国产综合久久福利不卡 | 国产成人一级 | 黄色福利网 | 国产99久久九九精品免费 | 中文字幕免费观看 | 久久特级毛片 | 亚洲精品美女久久久久网站 | 亚洲人成人99网站 | 五月开心激情 | 日韩精品中文字幕在线 | 蜜臀av.com | 国产精品高潮呻吟久久久久 | 欧美色操 | 99久久999久久久精玫瑰 | 中文字幕免 | 久久久久久久久久久国产精品 | 午夜精品一区二区三区在线视频 | 狠狠色狠狠色终合网 | a色视频 | 狠狠干.com| 黄网站色欧美视频 | 日韩免费视频在线观看 | av在线激情| 国产精品久久久久永久免费看 | 国产原创91 | 久久免费公开视频 | 日本黄区免费视频观看 | 激情五月婷婷网 | 在线国产高清 | 日日夜日日干 | 久久se视频 | 国产精品久久久久永久免费看 | 国产伦精品一区二区三区免费 | 一区二区中文字幕在线观看 | 西西444www| 亚洲精品一区中文字幕乱码 | 成人免费观看视频网站 | 狠狠狠干 | 日韩精品一区二区三区高清免费 | 久久1电影院 | 久久亚洲私人国产精品va | 狠狠色噜噜狠狠 | 亚洲专区在线播放 | 精品在线视频播放 | 天天想夜夜操 | 国产一区二区三区久久久 | 91桃色国产在线播放 | 手机av在线免费观看 | 一本之道乱码区 | 久久99视频免费观看 | 综合色伊人 | 日韩高清免费电影 | 亚洲欧美日韩国产精品一区午夜 | 久久综合成人 | 国产精品精品久久久久久 | 亚洲精品观看 | 日韩啪视频 | 日韩欧美69| 成人午夜电影在线播放 | 日本黄色a级大片 | 亚洲欧洲国产精品 | 欧美激情视频在线免费观看 | 青青河边草免费观看完整版高清 | 中文在线√天堂 | 91香蕉视频黄 | 国产精品1024 | 丁香视频全集免费观看 | 中文字幕人成人 | 一色av | 欧美午夜一区二区福利视频 | 日韩有码在线观看视频 | 国产精品一区二区三区久久 | 欧美少妇bbwhd| 91在线视频观看 | 插综合网 | 五月天精品视频 | 国产精品99久久久久 | 色网站免费在线观看 | 亚洲精品视频www | 久久激情视频 久久 | 亚洲精品国偷拍自产在线观看蜜桃 | av在线永久免费观看 | 国产精品黄色影片导航在线观看 | 国产精品久久久久久高潮 | 91香蕉视频 | 激情丁香婷婷 | 97偷拍在线视频 | 97电影在线观看 | 欧美精品一区在线 | 国产精品永久在线 | 五月婷婷狠狠 | 丁香六月婷婷 | 精品国产乱码久久久久久1区二区 | 亚洲精品在线观看不卡 | 成人午夜av电影 | 天天操狠狠操 | 日韩欧美有码在线 | 三级黄色大片在线观看 | 久久影视中文字幕 | 免费a v在线| 99九九99九九九视频精品 | 91在线网址 | 国内揄拍国内精品 | av免费观看网址 | 中文字幕日韩有码 | 欧美日韩二区在线 | 日韩视频在线一区 | 夜夜高潮夜夜爽国产伦精品 | 日韩免费高清在线观看 | 最新高清无码专区 | 波多野结衣精品视频 | 中文字幕在线一二 | 天天操天天操天天操天天操天天操天天操 | 久久精品欧美一 | 国产福利在线免费观看 | 国产一二区免费视频 | 日韩高清国产精品 | 国产黄在线 | 麻豆传媒视频观看 | 国产又粗又长又硬免费视频 | 在线观看的a站 | 成人黄色大片在线观看 | 五月导航 | 国产高清免费观看 | 免费中文字幕在线观看 | 欧美欧美| 欧美一区二区三区四区夜夜大片 | 久草国产在线观看 | 亚洲精品日韩av | www久草| 国产午夜亚洲精品 | 在线观看成人毛片 | 在线亚洲观看 | 99亚洲国产精品 | 精品视频免费看 | 天天操天天射天天添 | 成人黄色中文字幕 | 国产精品女主播一区二区三区 | 午夜国产成人 | 久久精品网站免费观看 | 韩国精品在线观看 | 色婷av | 久久亚洲美女 | 久久国产精品免费一区 | 在线午夜 | 日韩簧片在线观看 | 丁香婷婷综合网 | 久久综合婷婷国产二区高清 | 日韩欧美精品免费 | 天天操天天色综合 | 免费又黄又爽的视频 | 亚洲成人av一区二区 | av高清在线 | 色综合天天干 | 中文字幕在线免费 | 欧产日产国产69 | 亚洲日本一区二区在线 | 97人人精品| 夜夜操天天干 | 黄色免费观看视频 | 97超视频 | 精品视频亚洲 | 午夜视频不卡 | 日韩特黄一级欧美毛片特黄 | 成人a在线观看高清电影 | 超碰在线天天 | 国内免费久久久久久久久久久 | 2019精品手机国产品在线 | 黄色天堂在线观看 | 97在线看片 | 97视频资源 | 亚洲日本一区二区在线 | 黄色三级av | 国产精品日韩欧美 | 亚洲视频2 | 国产剧情一区 | 成人动漫视频在线 | bbbbb女女女女女bbbbb国产 | 婷婷色在线观看 | 亚洲黄色一级电影 | 国产日韩欧美综合在线 | 久久夜夜夜 | 日韩免费av片| 嫩嫩影院理论片 | 成年人毛片在线观看 | 天天干夜夜擦 | 天天艹日日干 | 欧美日韩综合在线 | 国产黄色播放 | 国产专区视频在线 | 久久9999久久免费精品国产 | 久久久久久久久影视 | 国产精品久久久视频 | 国产色女 | 日韩在线资源 | 久久a热6 | 美女久久久久久 | www.伊人网 | 免费在线激情电影 | 国产在线观看网站 | 亚洲国产一区在线观看 | 国产精品久久久久久久毛片 | 热久精品| 一区精品久久 | 制服丝袜一区二区 | 久久久久久久久黄色 | 高清不卡免费视频 | 草久中文字幕 | 日韩欧美一区二区不卡 | 国产福利午夜 | 在线精品一区二区 | 一级免费看 | 三级av免费看 | 精品国产美女 | 99久久精品国产网站 | 国产第一页精品 | 亚洲精品字幕在线观看 | 少妇性xxx | 干干日日| 西西44人体做爰大胆视频 | 成人黄色小说在线观看 | 91精品影视 | 一级性视频 | 亚洲成人av一区二区 | 97超碰成人| 日韩精品一区电影 | av官网在线 | 免费a网站| 麻豆传媒视频在线 | 99久久久久久久久久 | 香蕉视频在线视频 | 色综合久久久久综合体桃花网 | 国产精品国产三级国产aⅴ9色 | 97超碰总站 | 91porny九色在线播放 | 欧美另类xxxxx| 九七人人干 | 国产午夜精品视频 | 天天骚夜夜操 | 国产专区视频 | 91精品啪在线观看国产81旧版 | 波多野结衣在线视频免费观看 | 国产综合小视频 | 99久久99久久精品国产片 | 在线天堂中文在线资源网 | 在线免费观看黄色小说 | 日韩区视频| 99国产在线视频 | 国产精品久久在线 | 国内成人精品视频 | 国产亚洲精品久久久久秋 | 国产精品99久久久久的智能播放 | 久久 亚洲视频 | 国产精品久久久久久久久久久久 | 嫩嫩影院理论片 | 婷婷国产在线 | 欧美激情精品久久久久久免费 | 国产精品日韩在线观看 | 久草免费在线视频观看 | 精品人人爽 | 亚洲日b视频 | av一区二区三区在线观看 | 伊人日日干| adn—256中文在线观看 | 亚洲福利精品 | 精精国产xxxx视频在线播放 | 天天色综合1 | 日本特黄一级 | 成人毛片a | 免费网址在线播放 | 久久九九影视网 | 国产精品免费久久久久影院仙踪林 | 国产精品一区电影 | 亚洲天堂网在线观看视频 | 黄色在线观看免费 | 婷婷色站 | 免费国产在线精品 | 亚洲毛片久久 | 91九色porny蝌蚪主页 | 久久精品婷婷 | 亚洲精品久久久久中文字幕m男 | 国产3p视频| 日韩av网址在线 | 成人av片在线观看 | 国产激情电影综合在线看 | 91在线你懂的 | 人人舔人人爱 | 91av在线看| 四虎视频 | 波多野结衣一区二区三区中文字幕 | 91九色综合 | 粉嫩av一区二区三区四区在线观看 | 国产精品久久久久久久久久久不卡 | 高清免费在线视频 | 99精品视频免费全部在线 | 在线观看www. | 五月天久久精品 | 日韩av免费一区二区 | www.五月天 | 日韩电影久久 | 国产免费黄视频在线观看 | 在线看片视频 | 在线观看中文av | 国产xx视频 | 久久久高清免费视频 | 碰超在线| 一区 二区 精品 | 日韩欧美视频在线免费观看 | 在线观看中文av | 亚洲欧美视频在线观看 | 免费高清在线观看成人 | 97国产情侣爱久久免费观看 | 九九久久国产精品 | 欧美最新大片在线看 | 欧美成人aa | 深夜免费小视频 | 亚洲一区视频在线播放 | 色婷婷啪啪免费在线电影观看 | 国产一级做a | 亚洲精品99 | 九月婷婷综合网 | 91精品国产入口 | 欧美午夜激情网 | 成人av片免费观看app下载 | 91麻豆免费版 | 国产 在线 高清 精品 | 免费观看全黄做爰大片国产 | 久久老司机精品视频 | 午夜精品福利一区二区三区蜜桃 | www免费在线观看 | 成年人免费看片 | av观看免费在线 | 91av在线播放视频 | av成人免费在线看 | 亚洲女欲精品久久久久久久18 | 日韩欧美高清一区二区三区 | 亚洲精品高清一区二区三区四区 | 亚洲精品色视频 | 日韩性网站 | 免费精品视频在线 | 日本中文字幕免费观看 | 97在线观视频免费观看 | 欧美日韩在线精品一区二区 | 免费精品国产va自在自线 | 中国一级片视频 | 亚洲一区黄色 | 免费视频一区二区 | 99久久精品费精品 | 天天操天天操天天操天天操天天操天天操 | 99久免费精品视频在线观看 | www.狠狠操.com | 久久久久免费精品 | 国产精品久久电影网 | 成人av影院在线观看 | 亚洲精品视频免费观看 | 亚洲一级性 | 成人小视频在线 | 日韩一区二区三区高清免费看看 | 九九爱免费视频在线观看 | 五月香视频在线观看 | 在线免费观看视频你懂的 | 久久精品999 | 一区 二区 精品 | 成人黄色电影在线播放 | 偷拍区另类综合在线 | 久久精品综合视频 | 欧美伦理一区二区 | 日本黄色免费大片 | 欧美日韩精品在线播放 | 国产精品麻豆视频 | 久久久影视 | 色婷婷综合视频在线观看 | 91麻豆精品国产91久久久更新时间 | 国产精品久久久久久久久久久免费看 | 久青草电影 | 亚洲免费视频在线观看 | 香蕉免费 | 国产亚洲激情视频在线 | 成人免费色 | 五月天电影免费在线观看一区 | 日韩丝袜| 日本中文字幕在线免费观看 | 成人国产精品 | 超碰久热 | 99在线免费视频 | 天天操伊人| 激情久久久久久久久久久久久久久久 | 国产精品久久久久久久久久白浆 | 久久久久一区二区三区 | 免费网站看v片在线a | 成人九九视频 | 蜜臀av性久久久久av蜜臀妖精 | 免费看黄在线观看 | avhd高清在线谜片 | 911精品美国片911久久久 | 91免费高清视频 | 国产最新视频在线观看 | 久久成人黄色 | 中文区中文字幕免费看 | 99热国产在线中文 | 成人aⅴ视频 | 色播激情五月 | 成人精品999 | 亚洲精品视频在 | 免费看污污视频的网站 | 91高清在线看 | 国产视频在线观看一区二区 | 成 人 黄 色 视频播放1 | 午夜精品一二三区 | 亚洲欧美日韩国产 | 日本在线观看一区二区 | 日韩一区二区三区免费视频 | 久久三级视频 | 手机av永久免费 | 婷婷综合av| 免费在线观看污网站 | 91精品人成在线观看 | 日韩在线短视频 | 亚洲最新视频在线播放 | 婷婷深爱五月 | 国产精品久久99综合免费观看尤物 | 欧美日韩免费一区 | 国内精品视频久久 | av中文字幕网址 | 日韩在线观看视频一区二区三区 | 久久精品aaa| 欧美人体xx | 欧美少妇xxx | 九九免费在线视频 | 国产色资源 | 亚洲欧美乱综合图片区小说区 | av综合站 | 夜夜骑天天操 | 久久尤物电影视频在线观看 | 欧美日本日韩aⅴ在线视频 插插插色综合 | av日韩精品| 综合色站 | 国产五月婷婷 | a在线一区 | 国产精品国产三级国产不产一地 | 日韩精品在线视频免费观看 | 欧洲精品在线视频 | 免费亚洲精品视频 | 五月天.com | 中文字幕av日韩 | 欧美日韩性生活 | 久久最新 | 91视频国产免费 | 四虎影院在线观看av | 日韩一区二区免费播放 | 日韩三级视频在线看 | 日韩欧美高清 | 91色影院 | 日本99干网| www.五月天激情 | 中文字幕在线免费 | 日韩精品视频在线免费观看 | 91在线入口 | 激情视频在线高清看 | 久久久久综合精品福利啪啪 | 在线午夜电影神马影院 | 黄色小视频在线观看免费 | 国产日韩中文字幕在线 | 99久久婷婷国产综合亚洲 | 国产欧美精品一区二区三区 | 视频91在线| 色的网站在线观看 | 啪啪免费试看 | 一区二区三区中文字幕在线 | 四虎成人精品永久免费av | 特黄特色特刺激视频免费播放 | 日韩在线一二三区 | 国产精品嫩草影院123 | 亚洲免费高清视频 | 国产涩图 | 性色av香蕉一区二区 | 在线观看激情av | 国产 视频 高清 免费 | 国产色爽 | 在线视频电影 | 成年人视频在线免费观看 | 日韩一区精品 | 久久久噜噜噜久久久 | 亚洲视频在线看 | 日本婷婷色| 大胆欧美gogo免费视频一二区 | 一级成人网 | 在线国产一区二区三区 | 国产精品高潮呻吟久久av无 | 人人爽人人搞 | 成人午夜免费福利 | 在线免费观看国产黄色 | 500部大龄熟乱视频使用方法 | 国产精品乱码久久久久 | 韩国一区二区在线观看 | 天天射天天操天天色 | 天天爱综合 | 激情网站免费观看 |