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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

并发编程实践之公平有界阻塞队列实现

發布時間:2024/8/23 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 并发编程实践之公平有界阻塞队列实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介:?JUC 工具包是 JAVA 并發編程的利器。本文講述在沒有 JUC 工具包幫助下,借助原生的 JAVA 同步原語, 如何實現一個公平有界的阻塞隊列。希望你也能在文后體會到并發編程的復雜之處,以及 JUC 工具包的強。

作者 | 李新然
來源 | 阿里技術公眾號

一 背景

JUC 工具包是 JAVA 并發編程的利器。

本文講述在沒有 JUC 工具包幫助下,借助原生的 JAVA 同步原語, 如何實現一個公平有界的阻塞隊列。

希望你也能在文后體會到并發編程的復雜之處,以及 JUC 工具包的強大。

二 方法

本文使用到的基本工具:

  • 同步監聽器 synchronized ,方法基本和代碼塊級別;
  • Object 基礎類的 wait, notify, notifyAll;
  • 基于以上基礎工具,實現公平有界的阻塞隊列,此處:

  • 將公平的定義限定為 FIFO ,也就是先阻塞等待的請求,先解除等待;
  • 并不保證解除等待后執行 Action 的先后順序;
  • 確保隊列的大小始終不超過設定的容量;但阻塞等待的請求數不做限制;
  • 三 實現

    1 基礎版本

    首先,考慮在非并發場景下,借助 ADT 實現一個基礎版本

    interface Queue {boolean offer(Object obj);Object poll();} class FairnessBoundedBlockingQueue implements Queue {// 當前大小protected int size;// 容量protected final int capacity;// 頭指針,empty: head.next == tail == nullprotected Node head;// 尾指針protected Node tail;public FairnessBoundedBlockingQueue(int capacity) {this.capacity = capacity;this.head = new Node(null);this.tail = head;this.size = 0;}// 如果隊列已滿,通過返回值標識public boolean offer(Object obj) {if (size < capacity) {Node node = new Node(obj);tail.next = node;tail = node;++size;return true;}return false;}// 如果隊列為空,head.next == null;返回空元素public Object poll() {if (head.next != null) {Object result = head.next.value;head.next.value = null;head = head.next; // 丟棄頭結點--size;return result;}return null;}class Node {Object value;Node next;Node(Object obj) {this.value = obj;next = null;}} }

    以上

  • 定義支持隊列的兩個基礎接口, poll 和 offer;
  • 隊列的實現,采用經典實現;
  • 考慮在隊列空的情況下, poll 返回為空,非阻塞;
  • 隊列在滿的情況下, offer 返回 false ,入隊不成功,無異常;
  • 需要注意的一點:在出隊時,本文通過遷移頭結點的方式實現,避免修改尾結點。
    在下文實現并發版本時,會看到此處的用意。

    2 并發版本

    如果在并發場景下,上述的實現面臨一些問題,同時未實現給定的一些需求。

    通過添加 synchronized ,保證并發條件下的線程安全問題。

    注意此處做同步的原因是為了保證類的不變式。

    并發問題

    在并發場景下,基礎版本的實現面臨的問題包括:原子性,可見性和指令重排的問題。

    參考 JMM 的相關描述。

    并發問題,最簡單的解決方法是:通過 synchronized 加鎖,一次性解決問題。

    // 省略接口定義 class BoundedBlockingQueue implements Queue {// 當前大小protected int size;// 容量protected final int capacity;// 頭指針,empty: head.next == tail == nullprotected Node head;// 尾指針protected Node tail;public BoundedBlockingQueue(int capacity) {this.capacity = capacity;this.head = new Node(null);this.tail = head;this.size = 0;}// 如果隊列已滿,通過返回值標識public synchronized boolean offer(Object obj) {if (size < capacity) {Node node = new Node(obj);tail.next = node;tail = node;++size;return true;}return false;}// 如果隊列為空,head.next == null;返回空元素public synchronized Object poll() {if (head.next != null) {Object result = head.next.value;head.next.value = null;head = head.next; // 丟棄頭結點--size;return result;}return null;}// 省略 Node 的定義 }

    以上,簡單粗暴的加 synchronized 可以解決問題,但會引入新的問題:系統活性問題(此問題下文會解決)。

    同時,簡單加 synchronized 同步是無法實現阻塞等待;即

  • 如果隊列為空,那么出隊的動作還是會立即返回,返回為空;
  • 如果隊列已滿,那么入隊動作還是會立即返回,返回操作不成功;
  • 實現阻塞等待,需要借助 JAVA 中的 PV 原語:wait, notify, notifyAll 。

    參考:JDK 中對 wait, notify, notifyAll 的相關描述。

    衛式方法

    阻塞等待,可以通過簡單的衛式方法來實現,此問題本質上可以抽象為:

  • 任何一個方法都需要在滿足一定條件下才可以執行;
  • 執行方法前需要首先校驗不變式,然后執行變更;
  • 在執行完成后,校驗是否滿足后驗不變式;
  • WHEN(condition) Object action(Object arg) {checkPreCondition();doAction(arg);checkPostCondition(); }

    此種抽象 Ada 在語言層面上實現。在 JAVA 中,借助 wait, notify, notifyAll 可以翻譯為:

    // 當前線程 synchronized Object action(Object arg) {while(!condition) {wait();}// 前置條件,不變式checkPreCondition();doAction();// 后置條件,不變式checkPostCondition(); }// 其他線程 synchronized Object notifyAction(Object arg) {notifyAll(); }

    需要注意:

  • 通常會采用 notifyAll 發送通知,而非 notify ;因為如果當前線程收到 notify 通知后被中斷,那么系統將一直等待下去。
  • 如果使用了 notifyAll 那么衛式語句必須放在 while 循環中;因為線程喚醒后,執行條件已經不滿足,雖然當前線程持有互斥鎖。
  • 衛式條件的所有變量,有任何變更都需要發送 notifyAll 不然面臨系統活性問題
  • 據此,不難實現簡單的阻塞版本的有界隊列,如下

    interface Queue {boolean offer(Object obj) throws InterruptedException;Object poll() throws InterruptedException;} class FairnessBoundedBlockingQueue implements Queue {// 當前大小protected int size;// 容量protected final int capacity;// 頭指針,empty: head.next == tail == nullprotected Node head;// 尾指針protected Node tail;public FairnessBoundedBlockingQueue(int capacity) {this.capacity = capacity;this.head = new Node(null);this.tail = head;this.size = 0;}// 如果隊列已滿,通過返回值標識public synchronized boolean offer(Object obj) throws InterruptedException {while (size < capacity) {wait();}Node node = new Node(obj);tail.next = node;tail = node;++size;notifyAll(); // 可以出隊return true;}// 如果隊列為空,阻塞等待public synchronized Object poll() throws InterruptedException {while (head.next == null) {wait();}Object result = head.next.value;head.next.value = null;head = head.next; // 丟棄頭結點--size;notifyAll(); // 可以入隊return result;}// 省略 Node 的定義 }

    以上,實現了阻塞等待,但也引入了更大的性能問題

  • 入隊和出隊動作阻塞等待同一把鎖,惡性競爭;
  • 當隊列變更時,所有阻塞線程被喚醒,大量的線程上下文切換,競爭同步鎖,最終可能只有一個線程能執行;
  • 需要注意的點:

  • 阻塞等待 wait 會拋出中斷異常。關于異常的問題下文會處理;
  • 接口需要支持拋出中斷異常;
  • 隊里變更需要 notifyAll 避免線程中斷或異常,丟失消息;
  • 3 鎖拆分優化

    以上第一個問題,可以通過鎖拆分來解決,即:定義兩把鎖,讀鎖和寫鎖;讀寫分離。

    // 省略接口定義 class FairnessBoundedBlockingQueue implements Queue {// 容量protected final int capacity;// 頭指針,empty: head.next == tail == nullprotected Node head;// 尾指針protected Node tail;// guard: canPollCount, headprotected final Object pollLock = new Object();protected int canPollCount;// guard: canOfferCount, tailprotected final Object offerLock = new Object();protected int canOfferCount;public FairnessBoundedBlockingQueue(int capacity) {this.capacity = capacity;this.canPollCount = 0;this.canOfferCount = capacity;this.head = new Node(null);this.tail = head;}// 如果隊列已滿,通過返回值標識public boolean offer(Object obj) throws InterruptedException {synchronized(offerLock) {while(canOfferCount <= 0) {offerLock.wait();}Node node = new Node(obj);tail.next = node;tail = node;canOfferCount--;}synchronized(pollLock) {++canPollCount;pollLock.notifyAll();}return true;}// 如果隊列為空,阻塞等待public Object poll() throws InterruptedException {Object result = null;synchronized(pollLock) {while(canPollCount <= 0) {pollLock.wait();}result = head.next.value;head.next.value = null;head = head.next;canPollCount--;}synchronized(offerLock) {canOfferCount++;offerLock.notifyAll();}return result;}// 省略 Node 定義 }

    以上

  • 定義了兩把鎖, pollLock 和 offerLock 拆分出隊和入隊競爭;
  • 入隊鎖同步的變量為:callOfferCount 和 tail;
  • 出隊鎖同步的變量為:canPollCount 和 head;
  • 出隊的動作:首先拿到 pollLock 衛式等待后,完成出隊動作;然后拿到 offerLock 發送通知,解除入隊的等待線程。
  • 入隊的動作:首先拿到 offerLock 衛式等待后,完成入隊的動作;然后拿到 pollLock 發送通知,解除出隊的等待線程。
  • 以上實現

  • 確保通過入隊鎖和出隊鎖,分別保證入隊和出隊的原子性;
  • 出隊動作,通過特別的實現,確保出隊只會變更 head ,避免獲取 offerLock;
  • 通過 offerLock.notifyAll 和 pollLock.notifyAll 解決讀寫競爭的問題;
  • 但上述實現還有未解決的問題:

    當有多個入隊線程等待時,一次出隊的動作會觸發所有入隊線程競爭,大量的線程上下文切換,最終只有一個線程能執行。

    即,還有 讀與讀 和 寫與寫 之間的競爭問題。

    4 狀態追蹤解除競爭

    此處可以通過狀態追蹤,解除讀與讀之間和寫與寫之間的競爭問題

    class FairnessBoundedBlockingQueue implements Queue {// 容量protected final int capacity;// 頭指針,empty: head.next == tail == nullprotected Node head;// 尾指針protected Node tail;// guard: canPollCount, headprotected final Object pollLock = new Object();protected int canPollCount;protected int waitPollCount;// guard: canOfferCount, tailprotected final Object offerLock = new Object();protected int canOfferCount;protected int waitOfferCount;public FairnessBoundedBlockingQueue(int capacity) {this.capacity = capacity;this.canPollCount = 0;this.canOfferCount = capacity;this.waitPollCount = 0;this.waitOfferCount = 0;this.head = new Node(null);this.tail = head;}// 如果隊列已滿,通過返回值標識public boolean offer(Object obj) throws InterruptedException {synchronized(offerLock) {while(canOfferCount <= 0) {waitOfferCount++;offerLock.wait();waitOfferCount--;}Node node = new Node(obj);tail.next = node;tail = node;canOfferCount--;}synchronized(pollLock) {++canPollCount;if (waitPollCount > 0) {pollLock.notify();}}return true;}// 如果隊列為空,阻塞等待public Object poll() throws InterruptedException {Object result;synchronized(pollLock) {while(canPollCount <= 0) {waitPollCount++;pollLock.wait();waitPollCount--;}result = head.next.value;head.next.value = null;head = head.next;canPollCount--;}synchronized(offerLock) {canOfferCount++;if (waitOfferCount > 0) {offerLock.notify();}}return result;}// 省略 Node 的定義 }

    以上

  • 通過 waitOfferCount 和 waitPollCount 的狀態追蹤解決 讀寫內部的競爭問題;
  • 當隊列變更時,根據追蹤的狀態,決定是否派發消息,觸發線程阻塞狀態解除;
  • 但,上述的實現在某些場景下會運行失敗,面臨活性問題,考慮

    情況一:

  • 初始狀態隊列為空 線程 A 執行出隊動作,被阻塞在 pollLock , 此時 waitPollCount==1;
  • 此時線程 A 在執行 wait 時被中斷,拋出異常, waitPollCount==1 并未被重置;
  • 阻塞隊列為空,但 waitPollCount==1 類狀態異常;
  • 情況二:

  • 初始狀態隊列為空 線程 A B 執行出隊動作,被阻塞在 pollLock , 此時 waitPollCount==2;
  • 線程 C 執行入隊動作,可以立即執行,執行完成后,觸發 pollLock 解除一個線程等待 notify;
  • 觸發的線程在 JVM 實現中是隨機的,假設線程 A 被解除阻塞;
  • 假設線程 A 在阻塞過程中已被中斷,阻塞解除后 JVM 檢查 interrupted 狀態,拋出 InterruptedException 異常;
  • 此時隊列中有一個元素,但線程 A 仍阻塞在 pollLock 中,且一直阻塞下去;
  • 以上為解除阻塞消息丟失的例子,問題的根源在與異常處理。

    5 解決異常問題

    解決線程中斷退出的問題,線程校驗中斷狀態的場景

  • JVM 通常只會在有限的幾個場景檢測線程的中斷狀態, wait, Thread.join, Thread.sleep;
  • JVM 在檢測到線程中斷狀態 Thread.interrupted() 后,會清除中斷標志,拋出 InterruptedException;
  • 通常為了保證線程對中斷及時響應, run 方法中需要自主檢測中斷標志,中斷線程,特別是對中斷比較敏感需要保持類的不變式的場景;
  • class FairnessBoundedBlockingQueue implements Queue {// 容量protected final int capacity;// 頭指針,empty: head.next == tail == nullprotected Node head;// 尾指針protected Node tail;// guard: canPollCount, head, waitPollCountprotected final Object pollLock = new Object();protected int canPollCount;protected int waitPollCount;// guard: canOfferCount, tail, waitOfferCountprotected final Object offerLock = new Object();protected int canOfferCount;protected int waitOfferCount;public FairnessBoundedBlockingQueue(int capacity) {this.capacity = capacity;this.canPollCount = 0;this.canOfferCount = capacity;this.waitPollCount = 0;this.waitOfferCount = 0;this.head = new Node(null);this.tail = head;}// 如果隊列已滿,通過返回值標識public boolean offer(Object obj) throws InterruptedException {if (Thread.interrupted()) {throw new InterruptedException(); // 線程已中斷,直接退出即可,防止中斷線程競爭鎖}synchronized(offerLock) {while(canOfferCount <= 0) {waitOfferCount++;try {offerLock.wait();} catch (InterruptedException e) {// 觸發其他線程offerLock.notify();throw e;} finally {waitOfferCount--;}}Node node = new Node(obj);tail.next = node;tail = node;canOfferCount--;}synchronized(pollLock) {++canPollCount;if (waitPollCount > 0) {pollLock.notify();}}return true;}// 如果隊列為空,阻塞等待public Object poll() throws InterruptedException {if (Thread.interrupted()) {throw new InterruptedException();}Object result = null;synchronized(pollLock) {while(canPollCount <= 0) {waitPollCount++;try {pollLock.wait();} catch (InterruptedException e) {pollLock.notify();throw e;} finally {waitPollCount--;}}result = head.next.value;head.next.value = 0;// ignore head;head = head.next;canPollCount--;}synchronized(offerLock) {canOfferCount++;if (waitOfferCount > 0) {offerLock.notify();}}return result;}// 省略 Node 的定義 }

    以上

  • 當等待線程中斷退出時,捕獲中斷異常,通過 pollLock.notify 和 offerLock.notify 轉發消息;
  • 通過在 finally 中恢復狀態追蹤變量;
  • 通過狀態變量追蹤可以解決讀與讀之間和寫與寫之間的鎖競爭問題。

    以下考慮如果解決讀與讀之間和寫與寫之間的公平性問題。

    6 解決公平性

    公平性的問題的解決需要將狀態變量的追蹤轉換為:請求監視器追蹤。

  • 每個請求對應一個監視器;
  • 通過內部維護一個 FIFO 隊列,實現公平性;
  • 在隊列狀態變更時,釋放隊列中的監視器;
  • 以上邏輯可以統一抽象為

    boolean needToWait; synchronized(this) {needToWait = calculateNeedToWait();if (needToWait) {enqueue(monitor); // 請求對應的monitor} } if (needToWait) {monitor.doWait(); }

    需要注意

  • monitor.doWait() 需要在 this 的衛式語句之外,因為如果在內部, monitor.doWait 并不會釋放 this鎖;
  • calculateNeedToWait() 需要在 this 的守衛之內完成,避免同步問題;
  • 需要考慮中斷異常的問題;
  • 基于以上的邏輯抽象,實現公平隊列

    // 省略接口定義 class FairnessBoundedBlockingQueue implements Queue {// 容量protected final int capacity;// 頭指針,empty: head.next == tail == nullprotected Node head;// 尾指針protected Node tail;// guard: canPollCount, head, pollQueueprotected final Object pollLock = new Object();protected int canPollCount;// guard: canOfferCount, tail, offerQueueprotected final Object offerLock = new Object();protected int canOfferCount;protected final WaitQueue pollQueue = new WaitQueue();protected final WaitQueue offerQueue = new WaitQueue();public FairnessBoundedBlockingQueue(int capacity) {this.capacity = capacity;this.canOfferCount = capacity;this.canPollCount = 0;this.head = new Node(null);this.tail = head;}// 如果隊列已滿,通過返回值標識public boolean offer(Object obj) throws InterruptedException {if (Thread.interrupted()) {throw new InterruptedException(); // 線程已中斷,直接退出即可,防止中斷線程競爭鎖}WaitNode wait = null;synchronized(offerLock) {// 在有阻塞請求或者隊列為空時,阻塞等待if (canOfferCount <= 0 || !offerQueue.isEmpty()) {wait = new WaitNode();offerQueue.enq(wait);} else {// continue.}}try {if (wait != null) {wait.doWait();}if (Thread.interrupted()) {throw new InterruptedException();}} catch (InterruptedException e) {offerQueue.doNotify();throw e;}// 確保此時線程狀態正常,以下不會校驗中斷synchronized(offerLock) {Node node = new Node(obj);tail.next = node;tail = node;canOfferCount--;}synchronized(pollLock) {++canPollCount;pollQueue.doNotify();}return true;}// 如果隊列為空,阻塞等待public Object poll() throws InterruptedException {if (Thread.interrupted()) {throw new InterruptedException();}Object result = null;WaitNode wait = null;synchronized(pollLock) {// 在有阻塞請求或者隊列為空時,阻塞等待if (canPollCount <= 0 || !pollQueue.isEmpty()) {wait = new WaitNode();pollQueue.enq(wait);} else {// ignore}}try {if (wait != null) {wait.doWait();}if (Thread.interrupted()) {throw new InterruptedException();}} catch (InterruptedException e) {// 傳遞消息pollQueue.doNotify();throw e;}// 以下不會檢測線程中斷狀態synchronized(pollLock) {result = head.next.value;head.next.value = 0;// ignore head;head = head.next;canPollCount--;}synchronized(offerLock) {canOfferCount++;offerQueue.doNotify();}return result;}class WaitQueue {WaitNode head;WaitNode tail;WaitQueue() {head = new WaitNode();tail = head;}synchronized void doNotify() {for(;;) {WaitNode node = deq();if (node == null) {break;} else if (node.doNotify()) {// 此處確保NOTIFY成功break;} else {// ignore, and retry.}}}synchronized boolean isEmpty() {return head.next == null;}synchronized void enq(WaitNode node) {tail.next = node;tail = tail.next;}synchronized WaitNode deq() {if (head.next == null) {return null;}WaitNode res = head.next;head = head.next;if (head.next == null) {tail = head; // 為空,遷移tail節點}return res;}}class WaitNode {boolean released;WaitNode next;WaitNode() {released = false;next = null;}synchronized void doWait() throws InterruptedException {try {while (!released) {wait();} } catch (InterruptedException e) {if (!released) {released = true;throw e;} else {// 如果是NOTIFY之后收到中斷的信號,不能拋出異常;需要做RELAY處理Thread.currentThread().interrupt();}}}synchronized boolean doNotify() {if (!released) {released = true;notify();// 明確釋放了一個線程,返回truereturn true;} else {// 沒有釋放新的線程,返回falsereturn false;}}}// 省略 Node 的定義 }

    以上

  • 核心是替換狀態追蹤變量為同步節點, WaitNode;
  • WaitNode 通過簡單的同步隊列組織實現 FIFO 協議,每個線程等待各自的 WaitNode 監視器;
  • WaitNode 內部維持 released 狀態,標識線程阻塞狀態是否被釋放,主要是為了處理中斷的問題;
  • WaitQueue 本身是全同步的,由于已解決了讀寫競爭已經讀寫內部競爭的問題, WaitQueue 同步并不會造成問題;
  • WaitQueue 是無界隊列,是一個潛在的問題;但由于其只做同步的追蹤,而且追蹤的通常是線程,通常并不是問題;
  • 最終的公平有界隊列實現,無論是入隊還是出隊,首先衛式語句判定是否需要入隊等待,如果入隊等待,通過公平性協議等待;
  • 當信號釋放時,借助讀寫鎖同步更新隊列;最后同樣借助讀寫鎖,觸發隊列更新消息;

    7 等待時間的問題

    并發場景下,等待通常會設置為限時等待 TIMED_WAITING ,避免死鎖或損失系統活性;

    實現同步隊列的限時等待,并沒想象的那么困難

    class TimeoutException extends InterruptedException {}class WaitNode {boolean released;WaitNode next;WaitNode() {released = false;next = null;}synchronized void doWait(long milliSeconds) throws InterruptedException {try {long startTime = System.currentTimeMillis();long toWait = milliSeconds;for (;;) {wait(toWait);if (released) {return;}long now = System.currentTimeMillis();toWait = toWait - (now - startTime);if (toWait <= 0) {throw new TimeoutException();}}} catch (InterruptedException e) {if (!released) {released = true;throw e;} else {// 如果已經釋放信號量,此處不拋出異常;但恢復中斷狀態Thread.currentThread().interrupt();}}}synchronized boolean doNotify() {if (!released) {released = true;notify();return true;} else {return false;}}

    由于所有的等待都阻塞在 WaitNode 監視器,以上

    • 首先定義超時異常,此處只是為了方便異常處理,繼承 InterruptedException;
    • 此處依賴于 wait(long timeout) 的超時等待實現,這通常不是問題;

    最后,將 WaitNode 超時等待的邏輯,帶入到 FairnessBoundedBlockingQueue 實現中,即可。

    四 總結

    本文通過一步步迭代,最終借助 JAVA 同步原語實現初版的公平有界隊列。迭代實現過程中可以看到以下幾點:

  • 觀念的轉變,將調用一個類的方法思維轉換為:在滿足一定條件下方法才可以調用,在調用前需要滿足不變式,調用后滿足不變式;由于并發的問題很難測試,通常要采用衛式表達證明并發的正確性;
  • 在迭代實現中會看到很多模式,比如,讀寫分離時,其實可以抽象為讀鎖和寫鎖;就得到了一個抽象的 Lock 的定義;比如,讀寫狀態追蹤,可以采用 Exchanger 抽象表達;
  • 另外,本文的實現遠非完善,還需要考慮支持 Iterator 遍歷、狀態查詢及數據遷移等操作;
  • 最后,相信大家再看 JUC 的工具包實現,定有不一樣的體會。

    原文鏈接
    本文為阿里云原創內容,未經允許不得轉載。

    總結

    以上是生活随笔為你收集整理的并发编程实践之公平有界阻塞队列实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    日韩一区二区三区在线观看 | 日本一区二区三区免费看 | 亚洲欧洲一级 | ,久久福利影视 | 天天色官网| 亚洲黄网站 | 国产不卡精品视频 | 九九免费在线观看 | 天天舔天天搞 | 日韩av在线小说 | 国产日韩欧美在线观看视频 | 亚洲精品高清视频 | 久草在线免费在线观看 | 日韩精品视频免费在线观看 | 天天插伊人 | 国产一级在线免费观看 | 国产精品美女www爽爽爽视频 | 精品福利在线 | 午夜精品一区二区三区免费视频 | 欧美日韩国产精品一区二区亚洲 | 久久免费毛片视频 | 综合天堂av久久久久久久 | 国产精品久一 | 91成品视频 | 久久久久久久久久久免费av | 人人玩人人添人人澡超碰 | 日韩午夜av | 日韩精品久久久久久久电影竹菊 | 亚洲成人国产精品 | 亚洲成av人电影 | 精品国偷自产在线 | 日p在线观看 | 美女黄视频免费看 | 久久久综合精品 | 六月丁香综合网 | 日韩极品视频在线观看 | 98涩涩国产露脸精品国产网 | 婷婷色网 | 成人国产精品av | 午夜视频福利 | 九九九九色 | 99国产精品 | 欧美激情综合色综合啪啪五月 | 亚洲三级精品 | 日韩系列 | 久久a免费视频 | 亚洲最新av在线网址 | 久久99热这里只有精品国产 | 免费在线激情视频 | 久久久国产一区二区三区四区小说 | 国产对白av | 国产91亚洲精品 | 超级碰碰碰视频 | 国产一级淫片免费看 | 久久夜av | 97电影院在线观看 | 在线观看视频你懂得 | 超碰人人99| 久久久99国产精品免费 | 午夜精品一区二区三区免费视频 | 成人免费观看电影 | 国产精品午夜av | 97福利在线观看 | 激情婷婷在线观看 | 亚洲欧洲av在线 | 亚洲国产一二三 | 亚洲欧美国内爽妇网 | 中文字幕在线观看网站 | 精选久久 | 成人a免费视频 | 国产精品久久久一区二区 | 在线日韩亚洲 | 中文字幕在线播放一区 | 91最新在线观看 | 日本99热 | 国产精品美女久久久久久久 | 日韩中文字幕在线看 | 欧美精品一区二区性色 | 亚洲成av人片一区二区梦乃 | 色欧美成人精品a∨在线观看 | 69视频在线 | 国产精品久久99 | 国产福利av在线 | 久久综合毛片 | 国产在线小视频 | 亚洲综合欧美激情 | 在线播放视频一区 | 国产在线中文字幕 | 久久好看| 97精品国产97久久久久久免费 | 黄色com| 一区二区中文字幕在线观看 | 成人免费精品 | 中文字幕亚洲欧美日韩 | 91福利区一区二区三区 | 久久草在线精品 | 丝袜美腿在线 | 亚洲一区二区观看 | 日本高清dvd | 97视频在线观看视频免费视频 | 天天操夜夜操夜夜操 | 中文字幕在线一二 | 一区二区三区日韩在线 | www亚洲视频| 亚洲综合小说电影qvod | 97精品超碰一区二区三区 | 人人插人人射 | aaa免费毛片 | 久久久久婷 | 久久精品看 | 91 中文字幕 | 毛片一级免费一级 | 国产精品综合在线观看 | 在线播放91 | 亚洲成人家庭影院 | 激情久久久久久久久久久久久久久久 | 天天色棕合合合合合合 | 亚洲砖区区免费 | 久久综合五月天婷婷伊人 | 久久久www免费电影网 | 一区二区三区在线观看中文字幕 | 在线观看国产中文字幕 | 黄色日本片 | 91桃色视频| 国产专区视频在线观看 | 麻豆久久久久 | www.在线看片.com | 天天操夜夜摸 | 欧美成人影音 | 欧美精品你懂的 | 久久免费视频在线 | 国产 一区二区三区 在线 | 日本 在线 视频 中文 有码 | 精品国模一区二区 | 日本一区二区三区免费看 | 亚洲欧美国产精品久久久久 | 射九九| 国产亚洲成av片在线观看 | 麻豆视频网址 | 亚洲电影自拍 | 欧美美女一级片 | 日韩专区 在线 | 国产精品女人久久久久久 | 天无日天天操天天干 | 色久av| 日韩av伦理片 | 91在线在线观看 | 日本中文在线 | 国产福利免费在线观看 | 国产资源在线免费观看 | 欧美成人猛片 | 欧美在线观看视频 | 免费在线观看av网址 | 国产精品色在线 | 日本在线视频一区二区三区 | 91污污| 日日干网| 安徽妇搡bbbb搡bbbb | 午夜电影中文字幕 | 亚洲国产黄色片 | .精品久久久麻豆国产精品 亚洲va欧美 | 国产精品中文字幕在线 | 亚洲电影一区二区 | 日韩高清一 | 狠狠色丁香九九婷婷综合五月 | 天天色草 | 国产精品一区久久久久 | 99re6热在线精品视频 | 日韩美精品视频 | 男女激情麻豆 | 亚洲人视频在线 | 中文字幕xxxx | 亚洲一二区视频 | 婷婷九月激情 | 中文字幕日韩精品有码视频 | 天天操夜操视频 | 亚洲综合色激情五月 | 激情六月婷婷久久 | 免费亚洲片 | 国产欧美综合在线观看 | 日本精品一二区 | 午夜视频在线观看欧美 | 久久官网 | 色视频在线免费 | 日韩精品专区 | 久久久久久蜜av免费网站 | 国产视频九色蝌蚪 | 中文字幕4 | 国产一级黄 | 久久婷婷一区二区三区 | 亚洲人成人99网站 | 蜜桃视频成人在线观看 | 国产伦理剧 | 五月综合在线观看 | 天天色天天爱天天射综合 | 五月综合激情婷婷 | 美女精品| 美女视频免费一区二区 | 国产视 | 久久精品国产精品亚洲 | 激情婷婷六月 | 东方av在线免费观看 | 久久国产精品99久久人人澡 | 99久久99久久精品免费 | 日韩视频免费观看高清 | 亚洲综合成人在线 | 在线视频你懂得 | 精品国偷自产国产一区 | 91完整视频 | 这里只有精品视频在线 | 亚洲综合色站 | 久久久久久久久久久久久久免费看 | 国产精品成人免费 | 黄色网址在线播放 | 国产精品电影一区 | 中文字幕在线看视频国产 | 婷婷网站天天婷婷网站 | 日韩欧美成人网 | 91精品国产91p65 | 亚洲欧洲精品一区二区精品久久久 | 国产毛片在线 | 免费合欢视频成人app | 久精品视频免费观看2 | 久久在草 | 日韩av一卡二卡三卡 | 中文乱幕日产无线码1区 | 最新三级在线 | 久久人操 | 在线观看黄色免费视频 | 色综合久久五月天 | 美女网色| 久久精品国产一区二区电影 | 成人免费在线观看电影 | 精品久久久网 | www·22com天天操 | 久草在线免费新视频 | 国产一区二区三区免费视频 | 久久综合国产伦精品免费 | 久久官网 | 国产精品精品久久久久久 | 日韩城人在线 | 国产精品短视频 | 五月天激情在线 | 国产日本在线观看 | 色之综合网 | 天天射天天做 | 欧美福利精品 | 免费又黄又爽的视频 | 久久精品国产亚洲a | 国内久久视频 | 美女中文字幕 | 日韩在线第一 | 视频成人| 久久中文精品视频 | 中文字幕在线观看资源 | 91麻豆精品91久久久久同性 | 在线免费成人 | 五月婷婷中文网 | 香蕉影院在线观看 | 久久看片| 国产精品美女久久久久久久网站 | 91丨九色丨蝌蚪丰满 | 国产三级视频 | 高清一区二区三区av | 超碰公开97 | 久久久久成人精品 | 欧美一级艳片视频免费观看 | 综合久久久久 | 成人av免费看 | 成人a大片 | 99国产成+人+综合+亚洲 欧美 | 伊人午夜| 亚洲欧美综合精品久久成人 | 天天色天天上天天操 | 在线观看视频一区二区三区 | 日韩在线观看小视频 | 一级免费黄视频 | 99久久久久| 日韩国产精品久久久久久亚洲 | 97天天综合网 | 91久久久久久久 | 国产xx视频 | 久久久精品网站 | 亚洲一区在线看 | 丝袜精品视频 | 国产五十路毛片 | 婷婷色综合网 | 色夜视频 | 日韩午夜大片 | 国产小视频在线免费观看视频 | 欧美九九九 | 国产精品国产亚洲精品看不卡15 | 成年人免费在线播放 | 美女视频黄,久久 | 日日夜夜精品免费视频 | 日本在线观看一区 | 91在线最新 | 国产精品区二区三区日本 | 久久久久久久久久久久久影院 | 欧美一级免费在线 | 99久久99久国产黄毛片 | 91精品中文字幕 | 欧美三级高清 | 久草免费在线观看 | 成人免费共享视频 | 国产99久久精品一区二区300 | 亚州成人av在线 | 日韩免费视频观看 | 91亚洲精品久久久蜜桃借种 | 精品一区在线 | 日韩久久精品一区二区三区 | 视频精品一区二区三区 | 国产精品美女在线观看 | 日韩理论影院 | 亚洲精品资源 | 99精品热| 国产成人精品999在线观看 | 丁香婷婷亚洲 | 国产黄色片免费在线观看 | 97夜夜澡人人双人人人喊 | a v在线视频 | 欧美日韩一区二区三区免费视频 | 天天色天天操综合 | 久久免费视频国产 | 少妇自拍av | 色综合中文字幕 | 国产精品久久久久一区二区三区 | 国产精品12 | 国产五月 | 久久免费在线观看 | 蜜桃视频色 | 国产区久久 | 永久中文字幕 | 日韩理论片在线观看 | 久久久穴 | 日韩试看| 亚洲成av人片在线观看www | .国产精品成人自产拍在线观看6 | 成人一级片在线观看 | 天天夜操 | 免费a网址 | 精品在线播放 | 999亚洲国产996395 | 黄色片视频在线观看 | 欧美一级片免费播放 | 色噜噜狠狠色综合中国 | 狠狠伊人| 国产一卡二卡在线 | 精品国产午夜 | 久久久久久久久久久久电影 | 天天综合网天天 | 久久精品综合 | 最近中文字幕完整高清 | 亚洲综合网站在线观看 | 欧美精品免费在线观看 | 国产精品99久久久久 | 综合精品久久久 | 午夜精品在线看 | 在线观看一级片 | 国产精品久久久久久久久久 | 五月激情婷婷丁香 | 伊人资源视频在线 | 色网av | 国内免费的中文字幕 | 狠狠狠色丁香综合久久天下网 | 激情欧美日韩一区二区 | 日韩在线观看网站 | 日本精品中文字幕在线观看 | 国产一区二区影院 | 国内精品视频一区二区三区八戒 | 亚洲人成精品久久久久 | 国产免费叼嘿网站免费 | 91成人网页版 | 西西444www大胆无视频 | 日日夜夜天天综合 | 欧美成人精品三级在线观看播放 | 精品国产一区二区三区四区vr | 国产精品嫩草影视久久久 | 久要激情网 | av 在线观看| 麻豆高清免费国产一区 | 99久久久国产精品美女 | 欧美了一区在线观看 | 国产黄色电影 | 91麻豆精品国产午夜天堂 | 欧美精品在线观看免费 | 欧美最猛性xxxx | 人人爽人人爽人人片av | 在线视频观看91 | 成人h在线| 国产精品久久久久av免费 | 天天综合网在线观看 | 五月综合婷 | 狠狠色综合网站久久久久久久 | 国产精品 视频 | 最近字幕在线观看第一季 | 精品亚洲一区二区三区 | 国产永久免费高清在线观看视频 | 激情综合网天天干 | 亚洲视频精品在线 | 一区二区三区在线免费观看 | 美女免费av| 91九色蝌蚪国产 | 久久国产精品精品国产色婷婷 | 欧美一级电影在线观看 | 久久在现 | 日韩欧美精品一区二区三区经典 | 日韩欧美一区二区三区在线观看 | 中文字幕国产 | 成人天堂网 | 丁香花中文在线免费观看 | 亚洲伦理一区 | 夜色资源站国产www在线视频 | 中文字幕在线资源 | 丁香资源影视免费观看 | .国产精品成人自产拍在线观看6 | 免费视频 三区 | 亚洲成av | 亚洲一区欧美激情 | 中文在线字幕免费观看 | 国产第一页在线播放 | 中文字幕日韩伦理 | 亚洲美女免费精品视频在线观看 | 亚洲精品久久久久久久蜜桃 | 日韩成人精品在线观看 | 亚洲影院一区 | 成人国产一区 | 欧美日韩视频免费看 | av一级片 | 国内少妇自拍视频一区 | 国产视频观看 | 国产最新精品视频 | 超碰在线最新地址 | 一区二区三区四区精品视频 | 亚洲精品玖玖玖av在线看 | 国产99在线播放 | 狠狠操天天干 | 尤物97国产精品久久精品国产 | 日日婷婷夜日日天干 | 香蕉视频色 | 午夜久久久精品 | 亚洲精品国产精品国自 | 国产精品综合久久久久久 | 日韩va欧美va亚洲va久久 | 在线观看视频黄 | 日韩精品免费一区二区在线观看 | 国产小视频在线观看 | 亚洲乱码久久久 | 国产一区二区在线看 | 欧美性生活大片 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 一区二区三区在线视频观看58 | 一区中文字幕在线观看 | 涩涩网站在线看 | 成人久久18免费网站图片 | 中文在线字幕免费观看 | 天天操天天色天天射 | h动漫中文字幕 | 久久男人中文字幕资源站 | 久久精品一区二区三区国产主播 | 国产最新视频在线观看 | 日本一区二区高清不卡 | 亚洲成人av片 | 青春草视频在线播放 | 久久婷婷一区 | 黄色av电影| 国产96av| 久久久久久久99精品免费观看 | 欧美激情第八页 | 欧美a级在线播放 | 久久精久久精 | 成人在线免费av | 色婷婷一| 午夜精品一区二区国产 | 日本中文字幕网 | 婷婷丁香五 | 中文字幕黄色av | 国产成人精品在线 | 欧美a免费| 久久久久久久久综合 | 五月天激情婷婷 | 日韩视频欧美视频 | 国产91综合一区在线观看 | 色夜影院 | 在线一二三区 | 国产成人久久77777精品 | 久久综合桃花 | 97精品在线视频 | 精品一区精品二区高清 | 久草电影免费在线观看 | 亚洲精品视频在线观看网站 | 久久精品国产免费看久久精品 | 免费观看成人网 | 欧美日韩一区二区在线观看 | 日本在线观看黄色 | 伊人午夜视频 | 高清在线一区 | 国产精品久久一区二区无卡 | 久久精品永久免费 | 在线久草视频 | 亚洲午夜大片 | 久久96国产精品久久99漫画 | 日日爽天天爽 | 国产精品99免费看 | www.在线观看av | 久久人人精品 | 欧美激情精品久久久久久 | 丁香电影小说免费视频观看 | 一区二区视频在线免费观看 | 国产成人精品久久 | 日韩在线视频一区二区三区 | 欧美日韩国产成人 | 国产网红在线 | 亚洲成人二区 | 五月天激情综合网 | 欧美亚洲久久 | 美女免费视频网站 | 亚洲精品欧美精品 | 中文一区二区三区在线观看 | 色婷婷久久久综合中文字幕 | 超碰在线9| 国产精品丝袜在线 | 久久久久电影 | 欧美国产日韩一区二区三区 | 久久精品五月 | 精品伊人久久久 | 日本成人a| 国产精品自产拍在线观看中文 | 99热最新地址 | 国产尤物一区二区三区 | 国产电影一区二区三区四区 | 国产精品免费久久久久 | 女人高潮一级片 | 97av色 | 色爱成人网 | 国产中文字幕在线免费观看 | 最近更新的中文字幕 | 97人人模人人爽人人少妇 | 天天躁日日躁狠狠躁av麻豆 | 日本3级在线观看 | 亚洲欧美日韩不卡 | a级一a一级在线观看 | 99re8这里有精品热视频免费 | 久久99这里只有精品 | 在线观看爱爱视频 | 成人一区二区三区在线 | 91久色蝌蚪 | 玖玖精品在线 | 97国产小视频| 欧美少妇的秘密 | 免费视频国产 | 97人人看 | 草久视频在线观看 | 国产在线观看污片 | 91丨九色丨高潮 | 在线视频18在线视频4k | 免费三级网| 99视频+国产日韩欧美 | 欧美大片在线观看一区 | 久久综合加勒比 | 国产日女人| 国产精品视频永久免费播放 | 国产亚洲精品bv在线观看 | 国产视频亚洲精品 | 日韩精品一区二区三区不卡 | 狠狠色丁香婷婷综合欧美 | 色在线中文字幕 | 黄色毛片电影 | 国产精品视频app | 久久久网| 永久免费av在线播放 | 国产精品露脸在线 | 午夜视频在线观看网站 | 在线亚洲免费视频 | 99免费在线 | 在线你懂的视频 | 久久免费福利 | 国产视频 久久久 | 亚洲精品在线视频网站 | 婷婷电影在线观看 | 国产成人在线综合 | 91精品一区在线观看 | 天天曰天天 | 91超在线| 99久久精品午夜一区二区小说 | 丝袜av一区| 91免费视频网站在线观看 | 欧美日韩视频在线观看一区二区 | 成人久久影院 | 国产真实精品久久二三区 | 在线观看精品视频 | 色婷婷激情电影 | 五月婷香蕉久色在线看 | av在线等| 亚洲午夜精品一区 | 国产精品久久久久久久久久 | 成人久久免费视频 | 亚洲91网站| 九九久久成人 | 午夜av免费观看 | 精品国产aⅴ麻豆 | 色综合小说 | 日本三级不卡视频 | 视频在线观看入口黄最新永久免费国产 | 97爱| 亚洲日本三级 | 国产中文字幕视频在线观看 | 欧美男男tv网站 | 永久免费观看视频 | 欧美最猛性xxxxx(亚洲精品) | 在线免费观看成人 | 久久综合精品国产一区二区三区 | 香蕉视频91 | av 一区二区三区四区 | 久草99| 不卡电影免费在线播放一区 | 久久精品屋| 天天操天天干天天干 | 国产精品专区在线 | 天天干天天弄 | 久久国产精品网站 | 性色xxxxhd | 国产一区高清在线观看 | 亚洲高清网站 | 黄a在线观看 | 免费在线看成人av | 欧美日韩在线视频免费 | 免费在线播放视频 | 亚洲一级理论片 | 手机看片国产日韩 | 成人福利在线观看 | 91香蕉视频好色先生 | 一二三区在线 | 韩国av一区| 人人爽人人做 | 国产美女主播精品一区二区三区 | 国产在线不卡精品 | 婷五月天激情 | 欧美一区中文字幕 | 免费能看的av | 六月丁香色婷婷 | 菠萝菠萝蜜在线播放 | 在线免费色视频 | 91日韩精品一区 | 国产啊v在线 | 片黄色毛片黄色毛片 | 欧美视频日韩视频 | 国产亚洲欧洲 | 国产黄色片免费 | 天天操夜夜操国产精品 | 中文字幕日韩国产 | 久久超碰免费 | 69精品久久| 国产精品1区2区3区 久久免费视频7 | 91成年视频 | 成人激情开心网 | 亚洲人成免费网站 | 99热在线看 | 欧美经典久久 | 亚洲国产手机在线 | 精品国产99国产精品 | 精品99久久久久久 | 国产自产高清不卡 | av解说在线观看 | 丁香六月婷婷开心婷婷网 | 天天干夜夜干 | 亚洲欧美激情精品一区二区 | 国产综合婷婷 | 91色在线观看视频 | 亚洲精品午夜久久久久久久 | 精品国产成人av在线免 | 天天躁天天狠天天透 | 成人黄色资源 | 久久久久久综合网天天 | 欧美乱淫视频 | 亚洲九九九在线观看 | 五月婷婷综合在线视频 | 99热超碰| 超碰在线人 | 99精品免费观看 | 天天做天天爱夜夜爽 | 全久久久久久久久久久电影 | 午夜精品久久久久久久99婷婷 | 午夜123 | 国产精品久久一区二区三区不卡 | 久久永久免费视频 | 在线视频欧美精品 | 亚洲人在线视频 | 一区二区三区日韩在线观看 | 国际精品久久久久 | 人人射人人插 | 在线观看视频精品 | 毛片在线播放网址 | 福利区在线观看 | 久久久www成人免费毛片麻豆 | 狠狠88综合久久久久综合网 | 99热这里只有精品免费 | 午夜999 | 久久久夜色 | 一区二区精品久久 | 亚洲激情影院 | 婷婷综合激情 | 一区二区精品国产 | 亚洲精品欧洲精品 | 日韩精品 在线视频 | 国产高清精 | 成人久久视频 | 波多野结依在线观看 | 天堂激情网 | 免费av视屏 | 久久综合9988久久爱 | 综合色播| 亚洲精品视频一二三 | 夜夜夜草 | 国产视频2区 | 韩国三级一区 | 91精彩视频 | 91热| 亚州精品天堂中文字幕 | 亚洲无在线 | 黄色国产大片 | 丁香婷婷激情啪啪 | 日韩三级视频在线观看 | 在线国产不卡 | 九九日九九操 | 91在线入口 | 成人91在线观看 | 九九热在线精品 | 日韩在线观看一区 | 五月天视频网站 | 日韩中文在线字幕 | 国产精品黄 | 四季av综合网站 | 国产视频九色蝌蚪 | 成人小电影在线看 | 久久1区 | 久久夜色精品国产欧美乱 | 中文字幕视频 | 久久艹人人 | 99精品一区| 国产午夜av | 久久精彩免费视频 | 特及黄色片 | 91毛片在线 | 91福利视频久久久久 | 国产黄色片一级三级 | 91高清在线 | 久久九九影视网 | 免费v片| 国产黄色高清 | 一级免费看视频 | 视频国产精品 | 亚洲国产欧美在线人成大黄瓜 | 麻豆视频在线播放 | 日韩在线视频观看 | 国产精品av免费 | 亚洲一区二区视频在线播放 | 中文字幕在线观看完整版电影 | 精品99在线观看 | 五月婷婷六月丁香 | 日韩精品一区二区三区中文字幕 | 亚洲精品乱码白浆高清久久久久久 | 探花视频在线观看免费版 | 亚洲 在线 | 国产一级片网站 | 日韩av成人免费看 | 国产精品自产拍在线观看蜜 | 一级a性色生活片久久毛片波多野 | 久视频在线 | 人人精品| 美女网站久久 | 亚洲精品在线免费观看视频 | 天堂网在线视频 | 99久久久久免费精品国产 | 日韩a级免费视频 | 玖玖视频国产 | 免费黄色特级片 | 色综合天天综合网国产成人网 | 日韩在线免费视频 | 91丨精品丨蝌蚪丨白丝jk | 国产精品一区二区果冻传媒 | 免费日韩电影 | 天天操天天舔天天干 | 久久久久国产成人免费精品免费 | 日韩免费视频在线观看 | 国内精品久久久久久久97牛牛 | 久久精品视频一 | 欧美另类xxx | 在线亚洲欧美视频 | 日韩免费av网址 | 99re6热在线精品视频 | av大片免费在线观看 | 曰韩精品 | 国产探花 | 五月婷婷中文网 | 久久不卡日韩美女 | 久久激情五月激情 | 成人久久国产 | 成年人免费av | 综合伊人久久 | 欧美在线视频免费 | 人人爱在线视频 | 国产精品久久久久久99 | 日韩偷拍精品 | 日日夜夜操av | 国产精品久久久久亚洲影视 | 欧美日韩免费在线视频 | 在线黄网站 | 天天操天| 色吊丝av中文字幕 | 午夜狠狠操 | 五月综合激情 | 成年人在线观看免费视频 | 天堂av在线网站 | 色妞色视频一区二区三区四区 | 超碰人人做 | 亚洲四虎在线 | 免费在线观看av网站 | 亚洲三级在线播放 | 免费高清在线一区 | 91人人网 | 国产精品初高中精品久久 | 992tv在线观看网站 | 欧美日本高清视频 | 激情av网址 | 久久av在线 | 国产系列精品av | 一级黄色a视频 | 视频二区在线 | 最近中文字幕高清字幕在线视频 | 伊人电影天堂 | 九九热视频在线免费观看 | 中文字幕第| 久久久激情视频 | 久久电影色 | 男女视频91| 欧美小视频在线观看 | 九九av| 日韩在线观看小视频 | 91在线视频在线 | 国产黄色大片 | 国产一区欧美日韩 | www.人人草| 麻豆你懂的 | 精品久久久久久久久久久久久 | h网站免费在线观看 | 日韩性色 | 亚洲一区二区精品视频 | 狠狠干天天干 | 奇米7777狠狠狠琪琪视频 | 欧美综合久久久 | 国产精品嫩草影视久久久 | 亚洲精品白浆高清久久久久久 | 久久激情精品 | av中文字幕在线电影 | 欧美在线free| ,午夜性刺激免费看视频 | 久草在线看片 | 国产三级午夜理伦三级 | 亚洲免费av网站 | 国产精品免费久久 | 免费看黄在线观看 | 色婷婷国产精品 | 永久免费在线 | 国产专区视频在线 | 麻豆精品视频在线观看免费 | 日韩欧美国产视频 | 成人国产精品电影 | 国产美腿白丝袜足在线av | 日韩欧美在线综合网 | 日韩午夜av | 99久久99久久 | 天天色天天操天天爽 | 天天天干天天天操 | 亚洲人av免费网站 | 久久久蜜桃一区二区 | 日韩理论电影在线观看 | 涩涩爱夜夜爱 | 91免费高清观看 | 公开超碰在线 | av中文字幕网 | 日日碰狠狠添天天爽超碰97久久 | 激情视频在线观看网址 | 97碰碰视频 | 国产美女主播精品一区二区三区 | 久久人人精 | 久久久精品欧美 | 色国产在线 | 人人干网 | 久久久精品国产一区二区 | 久久精品黄 | 国产精品国产自产拍高清av | 又黄又爽的免费高潮视频 | 久久久国产精品麻豆 | 国产剧情一区 | 91大片网站| 亚洲成人精品久久 | 免费91在线观看 | 国产精品黄色在线观看 | 草久久久 | www.超碰 | 91激情视频在线观看 | 天天做天天爱天天爽综合网 | 久久精品成人热国产成 | 久草在线免费电影 | 中文字幕精品www乱入免费视频 | 激情网综合 | 亚洲精品www久久久 www国产精品com | 波多野结衣视频网址 | 天天曰天天射 | 亚洲日本一区二区在线 | 看片的网址 | 亚洲综合爱 | 日韩av手机在线观看 | 成人动漫精品一区二区 | 91香蕉视频在线下载 | 欧美aa在线| 超碰个人在线 | 俺要去色综合狠狠 | 国产日韩欧美在线免费观看 | 日日夜夜天天久久 | 成人在线观看资源 | 国精产品永久999 | 久草电影在线 | 日韩在线视频线视频免费网站 | 激情视频一区二区三区 | 亚洲精品免费在线 | 国模吧一区 | 免费黄色激情视频 | 成人免费视频a | 免费看毛片网站 | 在线国产能看的 | 精品96久久久久久中文字幕无 | 日本黄色免费在线观看 | 天天色天天综合 | 91在线区 | 探花视频免费在线观看 | 一区二区三区播放 | www激情久久 | 亚洲午夜精品久久久久久久久久久久 | 最新国产精品视频 | 国产五月色婷婷六月丁香视频 | 久久国产二区 | 就要干b| 美女视频黄,久久 | www.人人草 | 久久99精品久久久久久秒播蜜臀 | 在线视频免费观看 | 国产三级午夜理伦三级 | 国产女教师精品久久av | 91mv.cool在线观看 | 亚洲永久精品在线观看 | 性色av免费在线观看 | 久久精品一区二区三区国产主播 | 精品视频www | 中文字幕精 | 国产馆在线播放 | 91九色国产视频 | 久久国产欧美日韩 | 波多野结衣视频一区二区三区 | 国产精品麻豆三级一区视频 | 日日弄天天弄美女bbbb | 欧美国产日韩激情 | 去干成人网 | 国产精品婷婷午夜在线观看 | 亚洲最大成人免费网站 | 91夜夜夜| 麻豆视频在线看 | 人人插人人搞 | 国产中文在线观看 | 国产精品免费视频一区二区 | 久久久久综合 | 手机在线看永久av片免费 | 日韩高清在线一区二区三区 | 91精品在线免费 | 亚洲一区二区三区在线看 | 免费在线日韩 | 丁香九月激情综合 | 精品视频一区在线观看 | 水蜜桃亚洲一二三四在线 | 久久免费电影网 | 韩日精品在线 | 五月开心婷婷 | 人人舔人人爽 | 韩国三级一区 | 久久久高清免费视频 | 国产精品18p | 激情网第四色 | 成年人免费看片网站 | 国产黄色片免费 | 欧美日韩精品在线观看 | 欧美成人精品在线 | 国产一级黄色电影 | 永久中文字幕 | 狠狠色丁香婷婷综合久久片 | 国产视频精选 | 国产网红在线 | 99999精品 |