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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Netty时间轮调度原理分析,再不了解你就out啦

發布時間:2024/9/30 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Netty时间轮调度原理分析,再不了解你就out啦 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、時間輪介紹

之前公司內部搭建的延遲隊列服務有用到時間輪,但是一直沒有了解過它的實現原理。

最近有個和支付寶對接的項目,支付寶接口有流量控制,一定的時間內只允許 N 次接口調用,針對一些業務我們需要頻繁調用支付寶開放平臺接口,如果不對請求做限制,很容易觸發流控告警。

為了避免這個問題,我們按照一定延遲規則將任務加載進時間輪內,通過時間輪的調度來實現接口異步調用。

很多開源框架都實現了時間輪算法,這里以 Netty 為例,看下 Netty 中時間輪是怎么實現的。

1.1 快速入門

下面是一個 API 使用例子。

public class WheelTimerSamples {private static final HashedWheelTimerInstance INSTANCE = HashedWheelTimerInstance.INSTANCE;public static void main(String[] args) throws IOException {INSTANCE.getWheelTimer().newTimeout(new PrintTimerTask(), 3, TimeUnit.SECONDS);System.in.read();}static class PrintTimerTask implements TimerTask {@Overridepublic void run(Timeout timeout) {System.out.println("Hello world");}}enum HashedWheelTimerInstance {INSTANCE;private final HashedWheelTimer wheelTimer;HashedWheelTimerInstance() {wheelTimer = new HashedWheelTimer(r -> {Thread t = new Thread(r);t.setUncaughtExceptionHandler((t1, e) -> System.out.println(t1.getName() + e.getMessage()));t.setName("-HashedTimerWheelInstance-");return t;}, 100, TimeUnit.MILLISECONDS, 64);}public HashedWheelTimer getWheelTimer() {return wheelTimer;}} }

上面的例子中我們自定義了一個 HashedWheelTimer,然后自定義了一個 TimerTask,將一個任務加載進時間輪,3s 后執行這個任務,怎么樣是不是很簡單。

在定義時間輪時建議按照業務類型進行區分,將時間輪定義為多個單例對象。

PS:因為時間輪是異步執行的,在任務執行之前 JVM 不能退出,所以 System.in.read(); 這一行代碼不能刪除。

1.2 原理圖解

二、原理分析

2.1 時間輪狀態

時間輪有以下三種狀態:

  • WORKER_STATE_INIT:初始化狀態,此時時間輪內的工作線程還沒有開啟
  • WORKER_STATE_STARTED:運行狀態,時間輪內的工作線程已經開啟
  • WORKER_STATE_SHUTDOWN:終止狀態,時間輪停止工作

狀態轉換如下,轉換原理會在下面講到:

2.2 構造函數

public HashedWheelTimer(ThreadFactory threadFactory,long tickDuration, TimeUnit unit, int ticksPerWheel, boolean leakDetection,long maxPendingTimeouts) {if (threadFactory == null) {throw new NullPointerException("threadFactory");}if (unit == null) {throw new NullPointerException("unit");}if (tickDuration <= 0) {throw new IllegalArgumentException("tickDuration must be greater than 0: " + tickDuration);}if (ticksPerWheel <= 0) {throw new IllegalArgumentException("ticksPerWheel must be greater than 0: " + ticksPerWheel);}// 初始化時間輪數組,時間輪大小為大于等于 ticksPerWheel 的第一個 2 的冪,和 HashMap 類似wheel = createWheel(ticksPerWheel);// 取模用,用來定位數組中的槽mask = wheel.length - 1;// 為了保證精度,時間輪內的時間單位為納秒long duration = unit.toNanos(tickDuration);// 時間輪內的時鐘撥動頻率不宜太大也不宜太小if (duration >= Long.MAX_VALUE / wheel.length) {throw new IllegalArgumentException(String.format("tickDuration: %d (expected: 0 < tickDuration in nanos < %d",tickDuration, Long.MAX_VALUE / wheel.length));}if (duration < MILLISECOND_NANOS) {logger.warn("Configured tickDuration {} smaller then {}, using 1ms.",tickDuration, MILLISECOND_NANOS);this.tickDuration = MILLISECOND_NANOS;} else {this.tickDuration = duration;}// 創建工作線程workerThread = threadFactory.newThread(worker);// 非守護線程且 leakDetection 為 true 時檢測內存是否泄漏leak = leakDetection || !workerThread.isDaemon() ? leakDetector.track(this) : null;// 初始化最大等待任務數this.maxPendingTimeouts = maxPendingTimeouts;// 如果創建的時間輪實例大于 64,打印日志,并且這個日志只會打印一次if (INSTANCE_COUNTER.incrementAndGet() > INSTANCE_COUNT_LIMIT &&WARNED_TOO_MANY_INSTANCES.compareAndSet(false, true)) {reportTooManyInstances();}}

構造函數中的參數相當重要,當自定義時間輪時,我們應該根據業務的范圍設置合理的參數:

  • threadFactory:創建時間輪任務線程的工廠,通過這個工廠可以給我們的線程自定義一些屬性(線程名、異常處理等)
  • tickDuration:時鐘多長時間撥動一次,值越小,時間輪精度越高
  • unit:tickDuration 的單位
  • ticksPerWheel:時間輪數組大小
  • leakDetection:是否檢測內存泄漏
  • maxPendingTimeouts:時間輪內最大等待的任務數

時間輪的時鐘撥動時長應該根據業務設置恰當的值,如果設置的過大,可能導致任務觸發時間不準確。如果設置的過小,時間輪轉動頻繁,任務少的情況下加載不到任務,屬于一直空轉的狀態,會占用 CPU 線程資源。

為了防止時間輪占用過多的 CPU 資源,當創建的時間輪對象大于 64 時會以日志的方式提示。

構造函數中只是初始化了輪線程,并沒有開啟,當第一次往時間輪內添加任務時,線程才會開啟。

2.3 往時間輪內添加任務

@Overridepublic Timeout newTimeout(TimerTask task, long delay, TimeUnit unit) {if (task == null) {throw new NullPointerException("task");}if (unit == null) {throw new NullPointerException("unit");}// 等待的任務數 +1long pendingTimeoutsCount = pendingTimeouts.incrementAndGet();// 如果時間輪內等待的任務數大于最大值,任務會被拋棄if (maxPendingTimeouts > 0 && pendingTimeoutsCount > maxPendingTimeouts) {pendingTimeouts.decrementAndGet();throw new RejectedExecutionException("Number of pending timeouts ("+ pendingTimeoutsCount + ") is greater than or equal to maximum allowed pending "+ "timeouts (" + maxPendingTimeouts + ")");}// 開啟時間輪內的線程start();// 計算當前添加任務的執行時間long deadline = System.nanoTime() + unit.toNanos(delay) - startTime;// Guard against overflow.if (delay > 0 && deadline < 0) {deadline = Long.MAX_VALUE;}// 將任務加入隊列HashedWheelTimeout timeout = new HashedWheelTimeout(this, task, deadline);timeouts.add(timeout);return timeout;}

任務會先保存在隊列中,當時間輪的時鐘撥動時才會判斷是否將隊列中的任務加載進時間輪。

public void start() {switch (WORKER_STATE_UPDATER.get(this)) {case WORKER_STATE_INIT:// 這里存在并發,通過 CAS 操作保證最終只有一個線程能開啟時間輪的工作線程if (WORKER_STATE_UPDATER.compareAndSet(this, WORKER_STATE_INIT, WORKER_STATE_STARTED)) {workerThread.start();}break;case WORKER_STATE_STARTED:break;case WORKER_STATE_SHUTDOWN:throw new IllegalStateException("cannot be started once stopped");default:throw new Error("Invalid WorkerState");}while (startTime == 0) {try {// startTimeInitialized 是一個 CountDownLatch,目的是為了保證工作線程的 startTime 屬性初始化startTimeInitialized.await();} catch (InterruptedException ignore) {// Ignore - it will be ready very soon.}}}

這里通過 CAS 加鎖的方式保證線程安全,避免多次開啟。

工作線程開啟后,start() 方法會被阻塞,等工作線程的 startTime 屬性初始化完成后才被喚醒。為什么只有等 startTime 初始化后才能繼續執行呢?因為上面的 newTimeout 方法在線程開啟后,需要計算當前添加進來任務的執行時間,而這個執行時間是根據 startTime 計算的。

2.4 時間輪調度

@Overridepublic void run() {// 初始化 startTime.startTime = System.nanoTime();if (startTime == 0) {startTime = 1;}// 用來喚醒被阻塞的 HashedWheelTimer#start() 方法,保證 startTime 初始化startTimeInitialized.countDown();do {// 時鐘撥動final long deadline = waitForNextTick();if (deadline > 0) {int idx = (int) (tick & mask);// 處理過期的任務processCancelledTasks();HashedWheelBucket bucket =wheel[idx];// 將任務加載進時間輪transferTimeoutsToBuckets();// 執行當前時間輪槽內的任務bucket.expireTimeouts(deadline);tick++;}} while (WORKER_STATE_UPDATER.get(HashedWheelTimer.this) == WORKER_STATE_STARTED);// 時間輪關閉,將還未執行的任務以列表的形式保存到 unprocessedTimeouts 集合中,在 stop 方法中返回出去// 還未執行的任務可能會在兩個地方,一:時間輪數組內,二:隊列中for (HashedWheelBucket bucket: wheel) {bucket.clearTimeouts(unprocessedTimeouts);}for (;;) {HashedWheelTimeout timeout = timeouts.poll();if (timeout == null) {break;}if (!timeout.isCancelled()) {unprocessedTimeouts.add(timeout);}}// 處理過期的任務processCancelledTasks();}

時間輪每撥動一次 tick 就會 +1,根據這個值與(時間輪數組長度 - 1)進行 & 運算,可以定位時間輪數組內的槽。因為 tick 值一直在增加,所以時間輪數組看起來就像一個不斷循環的圓。

  • 先初始化 startTime 值,因為后面任務執行的時間是根據 startTime 計算的
  • 時鐘撥動,如果時間未到,則 sleep 一會兒
  • 處理過期的任務
  • 將任務加載進時間輪
  • 執行當前時鐘對應時間輪內的任務
  • 時間輪關閉,將所有未執行的任務封裝到 unprocessedTimeouts 集合中,在 stop 方法中返回出去
  • 處理過期的任務

上面簡單羅列了下 run 方法的大概執行步驟,下面是具體方法的分析。

2.5 時鐘撥動

如果時間輪設置的 tickDuration 為 100ms 撥動一次,當時鐘撥動一次后,應該計算下一次時鐘撥動的時間,如果還沒到就 sleep 一會兒,等到撥動時間再醒來。

private long waitForNextTick() {// 計算時鐘下次撥動的相對時間long deadline = tickDuration * (tick + 1);for (;;) {// 獲取當前時間的相對時間final long currentTime = System.nanoTime() - startTime;// 計算距離時鐘下次撥動的時間// 這里之所以加 999999 后再除 10000000, 是為了保證足夠的 sleep 時間// 例如:當 deadline - currentTime = 2000002 的時候,如果不加 999999,則只睡了 2ms// 而 2ms 其實是未到達 deadline 時間點的,所以為了使上述情況能 sleep 足夠的時間,加上 999999 后,會多睡 1mslong sleepTimeMs = (deadline - currentTime + 999999) / 1000000;// <=0 說明可以撥動時鐘了if (sleepTimeMs <= 0) {if (currentTime == Long.MIN_VALUE) {return -Long.MAX_VALUE;} else {return currentTime;}}// 這里是為了兼容 Windows 平臺,因為 Windows 平臺的調度最小單位為 10ms,如果不是 10ms 的倍數,可能會引起 sleep 時間不準確// See https://github.com/Netty/Netty/issues/356if (PlatformDependent.isWindows()) {sleepTimeMs = sleepTimeMs / 10 * 10;}try {// sleep 到下次時鐘撥動Thread.sleep(sleepTimeMs);} catch (InterruptedException ignored) {if (WORKER_STATE_UPDATER.get(HashedWheelTimer.this) == WORKER_STATE_SHUTDOWN) {return Long.MIN_VALUE;}}}}

如果時間不到就 sleep 等待一會兒,為了使任務時鐘準確,可以從上面的代碼中看出 Netty 做了一些優化,比如 sleepTimeMs 的計算,Windows 平臺的處理等。

2.6 將任務從隊列加載進時間輪

private void transferTimeoutsToBuckets() {// 一次最多只處理隊列中的 100000 個任務for (int i = 0; i < 100000; i++) {HashedWheelTimeout timeout = timeouts.poll();if (timeout == null) {// all processedbreak;}// 過濾已經取消的任務if (timeout.state() == HashedWheelTimeout.ST_CANCELLED) {continue;}// 計算當前任務到執行還需要經過幾次時鐘撥動// 假設時間輪數組大小是 10,calculated 為 12,需要時間輪轉動一圈加兩次時鐘撥動后后才能執行這個任務,因此還需要計算一下圈數long calculated = timeout.deadline / tickDuration;// 計算當前任務到執行還需要經過幾圈時鐘撥動timeout.remainingRounds = (calculated - tick) / wheel.length;// 有的任務可能在隊列里很長時間,時間過期了也沒有被調度,將這種情況的任務放在當前輪次內執行final long ticks = Math.max(calculated, tick); // Ensure we don't schedule for past.// 計算任務在時間輪數組中的槽int stopIndex = (int) (ticks & mask);HashedWheelBucket bucket = wheel[stopIndex];// 將任務放到時間輪的數組中,多個任務可能定位時間輪的同一個槽,這些任務通過以鏈表的形式鏈接bucket.addTimeout(timeout);}}void addTimeout(HashedWheelTimeout timeout) {assert timeout.bucket == null;// 任務構成雙向鏈表timeout.bucket = this;if (head == null) {head = tail = timeout;} else {tail.next = timeout;timeout.prev = tail;tail = timeout;}}

在上面也提到過,任務剛加進來不會立即到時間輪中去,而是暫時保存到一個隊列中,當時間輪時鐘撥動時,會將任務從隊列中加載進時間輪內。

時間輪每次最大處理 100000 個任務,因為任務的執行時間是用戶自定義的,所以需要計算任務到執行需要經過多少次時鐘撥動,并計算時間輪撥動的圈數。接著將任務加載進時間輪對應的槽內,可能有多個任務經過 hash 計算后定位到同一個槽,這些任務會以雙向鏈表的結構保存,有點類似 HashMap 處理碰撞的情況。

2.7 執行任務

public void expireTimeouts(long deadline) {HashedWheelTimeout timeout = head;while (timeout != null) {HashedWheelTimeout next = timeout.next;// 任務執行的圈數 > 0,表示任務還需要經過 remainingRounds 圈時鐘循環才能執行if (timeout.remainingRounds <= 0) {// 從鏈表中移除當前任務,并返回鏈表中下一個任務next = remove(timeout);if (timeout.deadline <= deadline) {// 執行任務timeout.expire();} else {// The timeout was placed into a wrong slot. This should never happen.throw new IllegalStateException(String.format("timeout.deadline (%d) > deadline (%d)", timeout.deadline, deadline));}} else if (timeout.isCancelled()) {// 過濾取消的任務next = remove(timeout);} else {// 圈數 -1timeout.remainingRounds --;}timeout = next;}}public void expire() {// 任務狀態校驗if (!compareAndSetState(ST_INIT, ST_EXPIRED)) {return;}try {task.run(this);} catch (Throwable t) {if (logger.isWarnEnabled()) {logger.warn("An exception was thrown by " + TimerTask.class.getSimpleName() + '.', t);}}}

時間輪槽內的任務以鏈表形式存儲,這些任務執行的時間可能會不一樣,有的在當前時鐘執行,有的在下一圈或者下兩圈對應的時鐘執行。當任務在當前時鐘執行時,需要將這個任務從鏈表中刪除,重新維護鏈表關系。

2.8 終止時間輪

@Overridepublic Set<Timeout> stop() {// 終止時間輪的線程不能是時間輪的工作線程if (Thread.currentThread() == workerThread) {throw new IllegalStateException(HashedWheelTimer.class.getSimpleName() +".stop() cannot be called from " +TimerTask.class.getSimpleName());}// 將時間輪的狀態修改為 WORKER_STATE_SHUTDOWN,這里有兩種情況// 一:時間輪是 WORKER_STATE_INIT 狀態,表明時間輪從創建到終止一直沒有任務進來// 二:時間輪是 WORKER_STATE_STARTED 狀態,多個線程嘗試終止時間輪,只有一個操作成功if (!WORKER_STATE_UPDATER.compareAndSet(this, WORKER_STATE_STARTED, WORKER_STATE_SHUTDOWN)) {// 代碼走到這里,時間輪只能是兩種狀態中的一個,WORKER_STATE_INIT 和 WORKER_STATE_SHUTDOWN// 為 WORKER_STATE_INIT 表示時間輪沒有任務,因此不用返回未處理的任務,但是需要將時間輪實例 -1// 為 WORKER_STATE_SHUTDOWN 表示是 CAS 操作失敗,什么都不用做,因為 CAS 成功的線程會處理if (WORKER_STATE_UPDATER.getAndSet(this, WORKER_STATE_SHUTDOWN) != WORKER_STATE_SHUTDOWN) {// 時間輪實例對象 -1INSTANCE_COUNTER.decrementAndGet();if (leak != null) {boolean closed = leak.close(this);assert closed;}}// CAS 操作失敗,或者時間輪沒有處理過任務,返回空的任務列表return Collections.emptySet();}try {boolean interrupted = false;while (workerThread.isAlive()) {// 中斷時間輪工作線程workerThread.interrupt();try {// 終止時間輪的線程等待時間輪工作線程 100ms,這個過程主要是為了時間輪工作線程處理未執行的任務workerThread.join(100);} catch (InterruptedException ignored) {interrupted = true;}}if (interrupted) {Thread.currentThread().interrupt();}} finally {INSTANCE_COUNTER.decrementAndGet();if (leak != null) {boolean closed = leak.close(this);assert closed;}}// 返回未處理的任務return worker.unprocessedTimeouts();}

當終止時間輪時,時間輪狀態有兩種情況:

  • WORKER_STATE_INIT:時間輪初始化,前面我們說過,當初始化時間輪對象時并不會立即開啟時間輪工作線程,而是第一次添加任務時才開啟,為 WORKER_STATE_INIT 表示時間輪沒有處理過任務
  • WORKER_STATE_STARTED:時間輪在工作,這里也有兩種情況,存在并發與不存在并發,如果多個線程都嘗試終止時間輪,肯定只能有一個成功

時間輪停止運行后會將未執行的任務返回出去,至于怎么處理這些任務,由業務方自己定義,這個流程和線程池的 shutdownNow 方法是類似的。

如果時間輪在運行,怎么才能獲取到未執行的任務呢,答案就在上面的 run() 方法中,如果時間輪處于非運行狀態,會把時間輪數組與隊列中未執行且未取消的任務保存到 unprocessedTimeouts 集合中。而終止時間輪成功的線程只需要等待一會兒即可,這個等待是通過 workerThread.join(100); 實現的。

取消時間輪內的任務相對比較簡單,這里就不概述了,想要了解的自行查看即可。

上面就是時間輪運行的基本原理了。

三、總結

這里以問答的形式進行總結,大家也可以看下這些問題,自己能不能很好的回答出來?

3.1 時間輪是不是在初始化完成后就啟動了?

不是,初始化完成時間輪的狀態是 WORKER_STATE_INIT,此時時間輪內的工作線程還沒有運行,只有第一次往時間輪內添加任務時,才會開啟時間輪內的工作線程。時間輪線程開啟后會初始化 startTime,任務的執行時間會根據這個字段計算,而且時間輪中時間的概念是相對的。

3.2 如果時間輪內還有任務未執行,服務重啟了怎么辦?

時間輪內的任務都在內存中,服務重啟數據肯定都丟了,所以當服務重啟時需要業務方自己做兼容處理。

3.3 如何自定義合適的時間輪參數?

自定義時間輪時有兩個比較重要的參數需要我們注意:

  • tickDuration:時鐘撥動頻率,假設一個任務在 10s 后執行,tickDuration 設置為 3min 那肯定是不行的,tickDuration 值越小,任務觸發的精度越高,但是沒有任務時,工作線程會一直自旋嘗試從隊列中拿任務,比較消耗 CPU 資源
  • ticksPerWheel:時間輪數組大小,假設當時間輪時鐘撥動時,有 10000 個任務處理,但是我們定義時間輪數組的大小為 8,這時平均一個時間輪槽內有 1250 個任務,如果這 1250 個任務都在當前時鐘執行,任務執行是同步的,由于每個任務執行都會消耗時間,可能會導致后面的任務觸發時間不準確。反之如果數組長度設置的過大,任務比較少的情況下,時間輪數組很多槽都是空的

所以當使用自定義時間輪時,一定要評估自己的業務后再設置參數。

3.4 Netty 的時間輪有什么缺陷?

Netty 中的時間輪是通過單線程實現的,如果在執行任務的過程中出現阻塞,會影響后面任務執行。除此之外,Netty 中的時間輪并不適合創建延遲時間跨度很大的任務,比如往時間輪內丟成百上千個任務并設置 10 天后執行,這樣可能會導致鏈表過長 round 值很大,而且這些任務在執行之前會一直占用內存。

3.5 時間輪要設置成單例的嗎?

強烈建議按照業務模塊區分,每個模塊都創建一個單例的時間輪對象。在上面的代碼中我們看到了,當時間輪對象大于 64 時會以日志的形式提示。如果時間輪是非單例對象,那時間輪算法完全就失去了作用。

3.6 時間輪與 ScheduledExecutorService 的區別?

ScheduledExecutorService 中的任務維護了一個堆,當有大量任務時,需要調整堆結構導致性能下降,而時間輪通過時鐘調度,可以不受任務量的限制。

當任務量比較少時時間輪會一直自旋空轉撥動時鐘,相比 ScheduledExecutorService 會占用一定 CPU 資源。

參考

netty源碼解讀之時間輪算法實現-HashedWheelTimer

HashedWheelTimer 使用及源碼分析創建

定時器的幾種實現方式

總結

以上是生活随笔為你收集整理的Netty时间轮调度原理分析,再不了解你就out啦的全部內容,希望文章能夠幫你解決所遇到的問題。

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

免费亚洲视频 | 1000部18岁以下禁看视频 | 91精品久久久久久久久久入口 | 欧美性生爱 | 亚洲视频在线观看免费 | 亚洲1区 在线 | 久久久久久综合 | 日韩欧美在线播放 | 精品久久福利 | 在线午夜电影神马影院 | 中文av字幕在线观看 | 亚洲精品小区久久久久久 | 欧美成人精品三级在线观看播放 | 久久久麻豆视频 | 四虎影视成人永久免费观看视频 | 狠狠色丁香久久婷婷综合_中 | 808电影免费观看三年 | 色中色资源站 | 日韩国产精品久久 | 国产精品99视频 | 狠狠色丁香久久婷婷综合_中 | 国产色视频123区 | 欧美中文字幕久久 | av电影亚洲 | 成人影视片 | www.午夜色.com| 黄色影院在线播放 | 中文字幕色综合网 | 狠狠色狠狠色综合日日小说 | 国产精品免费久久久 | 91麻豆精品国产自产在线游戏 | 国产精品精品久久久 | 在线草 | 在线观看视频免费大全 | 99r在线| 免费成视频 | 亚洲电影久久 | 日韩免费一级a毛片在线播放一级 | 国产精品成人国产乱一区 | 99免在线观看免费视频高清 | 亚洲精品乱码久久久久久蜜桃91 | 在线观看免费成人 | 久久综合亚洲鲁鲁五月久久 | 三级a视频| 久久女同性恋中文字幕 | 国产精品一级在线 | 中文在线免费一区三区 | 久久精品国亚洲 | 成人黄色在线视频 | 国产精品视频线看 | 91精品一| 日韩av网页 | 成年人在线电影 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 欧美a免费 | 在线免费黄色av | 国产中文自拍 | 国产成人在线精品 | 狠狠搞,com | 精品在线观 | 成人在线视频观看 | 久久99精品热在线观看 | 日韩视频www| 日韩av手机在线观看 | 91大神精品视频在线观看 | 亚洲成人影音 | 欧洲精品亚洲精品 | 天天干天天射天天操 | 麻豆视频免费在线观看 | 免费看搞黄视频网站 | 91色视频 | 日韩电影精品 | 97碰碰视频 | 日日爱视频 | 国产在线理论片 | 伊人影院得得 | 五月天亚洲精品 | 国产中文字幕视频在线观看 | 97在线观看免费视频 | 97色在线视频 | 久久精品一二三区白丝高潮 | 九九综合九九 | 久久精品亚洲 | 免费观看成年人视频 | 黄色免费观看视频 | 国产又黄又爽又猛视频日本 | 狠狠干天天射 | 九九久| 国产午夜精品一区二区三区欧美 | 国产欧美精品xxxx另类 | 综合伊人久久 | 在线观看亚洲电影 | www.黄色片网站 | 男女拍拍免费视频 | 天天爱综合 | 成人天堂网 | 国产精品涩涩屋www在线观看 | 久草在线久草在线2 | 天天看天天干 | 久久久久久久久黄色 | 亚洲小视频在线 | 国产精品日韩在线 | 免费在线一区二区 | 免费性网站 | 欧美日韩高清国产 | 操久在线 | 99久久99久久精品 | 亚洲国产精彩中文乱码av | 国产夫妻性生活自拍 | 日韩免费在线视频观看 | 国产字幕在线播放 | 狠狠做深爱婷婷综合一区 | 麻豆传媒电影在线观看 | 碰天天操天天 | 97超级碰碰碰碰久久久久 | 亚洲天堂网在线视频观看 | 免费看搞黄视频网站 | 国产精品手机视频 | 日日摸日日 | 久草在线免费播放 | 久久国产二区 | 97超碰在线久草超碰在线观看 | 99视频免费 | 久久精品视频免费观看 | 在线一二三四区 | 在线观看黄网站 | 五月导航| 精品国产电影一区 | 国产成人精品免高潮在线观看 | 91成熟丰满女人少妇 | 婷婷精品国产一区二区三区日韩 | 91女神的呻吟细腰翘臀美女 | 日韩理论电影在线 | 国产成人综合图片 | 天天天天天天天操 | 波多野结衣电影一区二区 | 成人在线免费观看网站 | 97香蕉久久超级碰碰高清版 | 丁香视频全集免费观看 | 精品国产黄色片 | 国产精品高 | 亚洲精品在线播放视频 | 国产a级免费 | 天天操狠狠操夜夜操 | 久久久久久久久久久免费av | 久久视频国产精品免费视频在线 | 日韩欧美一区二区三区在线观看 | 精品久久久久久一区二区里番 | 日韩在线观看视频一区二区三区 | 九九热免费在线视频 | 日本午夜免费福利视频 | 国产精品一区二区三区四 | 一区二区 不卡 | 午夜久久福利影院 | 久草视频免费在线观看 | 亚洲午夜av电影 | 国产91全国探花系列在线播放 | 蜜臀aⅴ国产精品久久久国产 | 一区二区三区福利 | 成人福利在线 | 成人黄色在线视频 | 黄色软件视频网站 | 特级毛片在线观看 | 国产精品一区二区三区免费看 | 91精品国产一区二区在线观看 | 麻豆视频免费在线观看 | 丁香5月婷婷久久 | 日韩在线观看视频在线 | av免费在线免费观看 | 西西4444www大胆艺术 | 激情综合五月 | 99热这里只有精品1 av中文字幕日韩 | 日韩欧美综合 | 99九九99九九九视频精品 | 国产不卡免费 | 四虎影视久久久 | 国产日韩中文在线 | 亚洲最快最全在线视频 | h久久| 国产精品久久久 | 伊人婷婷色 | aⅴ精品av导航| 成年人免费观看在线视频 | 日韩天堂在线观看 | 不卡视频在线 | 久久久久国产精品一区二区 | 五月天中文在线 | 亚洲精品在线视频播放 | 久久久久久久久综合 | 天天爽天天爽 | 国产高清视频在线免费观看 | 99精品亚洲 | 久久久.com | 美女av电影 | 天天射天天操天天干 | 日韩av看片 | 国产精品一区二区视频 | 精品久久久久国产免费第一页 | 97综合网 | 香蕉视频网址 | 国产在线播放一区二区三区 | a√天堂资源| 天天躁日日 | 国产亚洲精品中文字幕 | www.天天成人国产电影 | 中文字幕 欧美性 | 久久久久黄色 | 激情欧美一区二区三区免费看 | 久久国产精品99久久久久久进口 | 五月婷婷婷婷婷 | 日韩欧美在线视频一区二区三区 | 精品中文字幕在线播放 | 五月婷婷激情 | 日日夜夜婷婷 | 久久久人人人 | 美女禁18| 欧美 激情 国产 91 在线 | 亚洲视频 在线观看 | 啪嗒啪嗒免费观看完整版 | 久久国产二区 | 婷婷色综 | 一级片免费在线 | 99精品久久久久久久久久综合 | 91色偷偷 | av片在线看 | jizz欧美性9 国产一区高清在线观看 | 亚洲第一成网站 | 国产亚洲日本 | 中日韩欧美精彩视频 | 久久黄页 | 亚洲全部视频 | 国产精品一区二区在线播放 | 182午夜在线观看 | 亚洲午夜久久久影院 | 成人精品久久 | 99视频在线 | 精品国产理论 | 奇米影视四色8888 | 亚洲午夜av久久乱码 | 日韩四虎 | 国产一区二区精品久久 | 欧美 亚洲 另类 激情 另类 | 成人一级片视频 | 国产免费三级在线观看 | av电影不卡在线 | 国内精品久久影院 | 99久e精品热线免费 99国产精品久久久久久久久久 | 天天干天天操天天入 | 国产成人av一区二区三区在线观看 | 91插插插免费视频 | 天天干天天拍天天操 | 99久久精品久久久久久清纯 | av在线播放中文字幕 | 日本爱爱片 | av在线a| 久草在线在线视频 | www激情网| 婷婷色av | 精品国产精品久久一区免费式 | 国产91粉嫩白浆在线观看 | 国产视频99 | 五月激情在线 | 亚洲一级片免费观看 | 国产精品不卡在线 | 午夜狠狠干 | 成人国产精品久久久久久亚洲 | 亚洲精品久久久久久中文传媒 | 国产不卡免费视频 | 久久中文字幕在线视频 | 国产1级视频| 九九热精 | 在线日韩中文 | 国产福利久久 | 缴情综合网五月天 | 久精品视频在线观看 | 久久视频在线观看中文字幕 | 国产高清精品在线观看 | 国产免费黄视频在线观看 | 日本在线观看一区 | 亚洲国产播放 | 69国产精品视频免费观看 | 99热官网| 激情六月婷婷久久 | 日日躁你夜夜躁你av蜜 | 91精品国产自产老师啪 | 欧美日韩国产精品一区二区 | 9色在线视频 | 有码一区二区三区 | 极品嫩模被强到高潮呻吟91 | 豆豆色资源网xfplay | 午夜黄色 | 成人av电影免费在线观看 | 亚洲激情p | 亚洲精品1区2区3区 超碰成人网 | 欧美日韩在线观看一区二区三区 | 日本高清久久久 | 超碰在线91 | 中文字幕日韩精品有码视频 | 亚洲va天堂va欧美ⅴa在线 | 成人精品在线 | 国产高清在线免费 | 国产精品99久久久久久有的能看 | 99麻豆久久久国产精品免费 | 狠狠色丁香婷婷综合久小说久 | 亚洲国产精品成人综合 | 久久蜜桃av | 午夜美女wwww| 国产一区二区久久 | 91久久久久久久一区二区 | 日韩久久精品一区二区三区下载 | 青青草国产精品 | 中文字幕一区二区三区乱码不卡 | 人人添人人澡 | 国产精品午夜av | 99在线精品免费视频九九视 | 日韩视频一区二区在线 | 永久精品视频 | 五月婷婷视频在线 | 日韩国产精品一区 | 九九九热精品 | 91亚洲国产成人久久精品网站 | 精品日韩在线一区 | 成人久久毛片 | 中文字幕 在线看 | 亚洲一区二区三区91 | 日本在线观看一区二区 | 国产在线观看你懂得 | 国产一级视频在线免费观看 | 日韩v在线| 国产不卡免费视频 | 欧美日韩国产精品一区二区 | 婷婷综合伊人 | 国产精品video爽爽爽爽 | 一级一片免费看 | 99精品国产一区二区 | 中文字幕第一页在线播放 | 欧美日韩在线网站 | 9i看片成人免费看片 | 免费观看的黄色 | 天天五月天色 | 国产精品美女久久久久久久 | 在线观看黄色的网站 | 久久精品视频在线免费观看 | 天天综合网在线 | 亚洲成人欧美 | 国产精品精品国产婷婷这里av | 一区 二区 精品 | 成年人黄色免费视频 | 人人插人人看 | 久久久久女教师免费一区 | 国产精品丝袜 | 天天操天天舔天天干 | 99久久久久免费精品国产 | 久久五月天婷婷 | 怡红院av久久久久久久 | 久久精品视频日本 | 在线观看久久 | 98涩涩国产露脸精品国产网 | 欧美一级片在线播放 | 中文字幕一区二区三区四区久久 | 日本aaa在线观看 | 岛国av在线不卡 | 国产高清视频在线免费观看 | 99久久婷婷国产一区二区三区 | 91丨九色丨高潮丰满 | 香蕉精品视频在线观看 | 亚洲国产成人av网 | 国产小视频精品 | 欧美日韩国产二区 | 国产特级毛片aaaaaa高清 | 日韩网站一区二区 | 99性视频| 国产精品久久久网站 | 蜜桃视频日韩 | 伊色综合久久之综合久久 | 草久在线播放 | 亚洲国产福利视频 | 国产黄色视 | 视频91 | 欧美黄色软件 | 久久免费视频这里只有精品 | 一区二区三区在线播放 | bbw av| 丁香五香天综合情 | 国产青春久久久国产毛片 | 久久久久久久久久久久电影 | www.五月天激情 | 国产成人在线免费观看 | 三上悠亚一区二区在线观看 | 国产精品91一区 | 国产精品av免费在线观看 | 欧美va天堂va视频va在线 | 首页国产精品 | 激情电影影院 | 日韩久久久久久久久 | 亚洲精选视频免费看 | 国产精品18久久久久白浆 | 亚洲成人动漫在线观看 | 成人久久久电影 | av黄色国产 | 1024手机基地在线观看 | 国产高清av在线播放 | 日本精品久久久久久 | 亚洲黄污 | 亚洲另类在线视频 | 中文字幕一区在线观看视频 | 97视频免费播放 | 免费av 在线 | 在线观看视频你懂得 | 久久久久久福利 | 久久精品99国产精品 | 久久久免费看片 | 日韩精品一区二区三区在线视频 | 黄色一区三区 | 国产精品一区在线观看 | 天天射综合 | 久久精品成人 | 美女黄频在线观看 | 欧美成人h版电影 | 亚洲涩涩一区 | 国产精品美女久久久久久久久 | 九九在线高清精品视频 | 黄色软件网站在线观看 | 一区二区欧美在线观看 | 中文字幕一区二区三区在线观看 | 在线免费精品视频 | 99 色| 91资源在线观看 | 在线观看日韩 | 日韩免费一区二区三区 | 天天综合网国产 | 国产香蕉97碰碰碰视频在线观看 | 亚洲jizzjizz日本少妇 | 国产黄视频在线观看 | 91大神在线观看视频 | 亚洲精品18p| 国产亚洲人成网站在线观看 | 欧美日韩精品在线观看视频 | 天天草天天爽 | 久久精品一二三区白丝高潮 | 高清av在线免费观看 | 国产一区二三区好的 | 一区二区三区免费播放 | 欧美aaa级片| 国产麻豆精品95视频 | 超碰97免费| www.操.com| 成年人精品 | 国产又粗又猛又色又黄视频 | 91在线视频一区 | 成人午夜免费福利 | 狠狠干狠狠操 | 狠狠的日| 日韩欧美在线高清 | 黄色免费在线视频 | 欧美性生活久久 | 色丁香久久 | 久久论理| 国内小视频在线观看 | 中文字幕亚洲五码 | 丁香六月av| 中文字幕在线播放日韩 | 免费a一级| 日韩天天干 | 18做爰免费视频网站 | 国产精品久久久久影院 | 久久资源总站 | 国产精品va在线观看入 | 色婷婷国产精品 | 亚洲一级二级 | 国产精品亚洲精品 | 狠狠夜夜 | 久久免费公开视频 | 婷婷伊人五月 | 97香蕉视频 | 精品中文字幕视频 | 国产福利精品一区二区 | 成人黄色在线电影 | a久久免费视频 | 99久久精品国产欧美主题曲 | 四虎影视www | 亚洲精品视频在线观看免费视频 | 亚洲成人av电影在线 | 国产91精品久久久久 | 色婷婷久久久 | 最新av免费在线观看 | 国产欧美日韩视频 | av中文字幕免费在线观看 | 日日操狠狠干 | 婷婷深爱网 | 不卡的一区二区三区 | 一区二区三区在线观看免费视频 | 欧洲一区二区三区精品 | 在线日韩中文字幕 | 中文字幕免费中文 | 天天舔夜夜操 | 99人久久精品视频最新地址 | 欧美久久久久久久久久久久久 | 亚洲三级精品 | 日韩区欧美久久久无人区 | 国产尤物在线视频 | 激情视频一区二区 | 日韩电影在线观看一区二区 | 精品视频99 | 亚洲天堂网在线视频观看 | 亚洲国产成人在线观看 | 国产丝袜美腿在线 | 日韩欧美视频二区 | 成人a级网站 | 国产日韩欧美视频在线观看 | 欧美成人猛片 | 欧洲精品久久久久毛片完整版 | 欧美男男激情videos | 婷婷av综合| 日韩av电影免费在线观看 | 色噜噜在线观看视频 | 国产精在线 | 99在线视频精品 | www视频在线免费观看 | 中文字幕精品三区 | 中文字幕黄色网 | 久久久综合九色合综国产精品 | 91大神视频网站 | 在线观看一区二区视频 | 国产精品一区二区三区久久 | 最新午夜 | 午夜影院一级片 | 98精品国产自产在线观看 | 一区二区在线影院 | 欧美成人理伦片 | 免费在线观看av的网站 | 五月天com | 国产成人久久精品一区二区三区 | 99视频在线精品免费观看2 | 亚洲黄色在线 | 色国产精品 | 免费av大片 | 国产精品一区二区精品视频免费看 | 永久免费毛片在线观看 | 久久久久免费精品视频 | 欧洲精品久久久久毛片完整版 | 国产91精品高清一区二区三区 | 日本久久免费电影 | 狠狠干夜夜| 天天av综合网 | 97操操| 天天干天天操天天搞 | 国产亚洲精品久久久久久移动网络 | av中文在线观看 | 免费观看一级一片 | 精品国产一区二区三区久久久久久 | 亚洲国产成人av网 | 人人人爽 | 久久久免费精品 | 精品亚洲一区二区三区 | 亚洲欧美色婷婷 | 国产精品一区二区三区四 | 亚洲精品88欧美一区二区 | 热精品 | 久久综合加勒比 | 久久精品一区二区三区视频 | 亚洲一区精品二人人爽久久 | 亚洲一区二区三区四区在线视频 | 在线91精品 | 欧美国产日韩一区二区三区 | 天天综合网久久 | 91在线最新 | 亚洲国产人午在线一二区 | 91综合视频在线观看 | 免费三级a | 国产视频在线观看一区二区 | 色婷婷丁香| 久久99久久99精品免观看软件 | av免费看在线 | 在线免费精品视频 | 久久免费高清视频 | 久久九九网站 | 最近更新中文字幕 | 亚洲精品白浆高清久久久久久 | 亚洲欧洲中文日韩久久av乱码 | 又黄又爽又无遮挡的视频 | 久久精品这里精品 | 欧美日韩精品在线播放 | 久久久免费电影 | 久久午夜鲁丝片 | 国产成人久久精品一区二区三区 | av在线电影网站 | 午夜精品av在线 | 一区二区视 | 免费三级骚 | 最新动作电影 | 四虎国产视频 | www.天天干| 91av九色| 啪啪激情网 | 五月激情六月丁香 | 亚洲三级黄色 | 中文字幕超清在线免费 | 成人av中文字幕 | 97在线免费视频观看 | 欧美大片aaa | 精品美女在线视频 | 91九色视频网站 | 久久国产精品一区二区 | 91av成人| 三上悠亚一区二区在线观看 | 天天干天天操天天干 | 国产最新福利 | 亚洲日本va中文字幕 | 草久久av | 亚洲精品啊啊啊 | 成人午夜免费剧场 | 超碰99人人 | 国产精品久久久久久影院 | 黄色三级av | 久草在线免 | 在线看av的网址 | 日韩精品视频在线观看网址 | 国产精品免费成人 | www.xxxx欧美 | 91在线区 | 欧美一级激情 | 色五丁香 | 麻豆94tv免费版 | 久久精品婷婷 | 在线观看涩涩 | 国产色资源 | 国产精品va视频 | 黄色av一区二区三区 | 大胆欧美gogo免费视频一二区 | www.在线观看av | 99国产成+人+综合+亚洲 欧美 | 国产精品videossex国产高清 | 国产一区二区电影在线观看 | 亚洲色视频 | 粉嫩一区二区三区粉嫩91 | a色视频| a电影免费看 | 久草免费在线视频观看 | 久久久久久高潮国产精品视 | 国产无限资源在线观看 | 亚洲在线视频播放 | 综合色影院| 91福利视频一区 | 成人h电影在线观看 | 在线免费观看黄色 | 国产综合精品久久 | 成人免费视频免费观看 | 亚洲精品色 | 久久人视频 | 成年人免费在线观看网站 | 91天天视频| 最新在线你懂的 | 色偷偷男人的天堂av | 精品国产视频在线 | 黄色一二级片 | 天天久久综合 | 欧美资源在线观看 | 国产精品欧美激情在线观看 | 99久久久久久国产精品 | 麻豆成人在线观看 | 婷婷去俺也去六月色 | 国产夫妻性生活自拍 | 国产一区免费看 | 香蕉在线播放 | 国产婷婷在线观看 | 成年人在线电影 | 天天操人人要 | 亚洲专区一二三 | 免费一级特黄毛大片 | 亚洲精品91天天久久人人 | 欧美精品久久久久久久 | 日本黄色免费观看 | 成人av片免费观看app下载 | 国产精品免费麻豆入口 | 玖玖爱国产在线 | 中文字幕久久网 | www.久久久com | 久久99久久99精品免观看粉嫩 | 在线视频18在线视频4k | 国产成人精品在线 | 丁香婷婷电影 | 亚洲视频 在线观看 | 亚洲五月婷婷 | 欧美韩国日本在线观看 | 一区 在线 影院 | 亚洲第一av在线播放 | 欧美日韩性生活 | 久久久综合香蕉尹人综合网 | 欧美性猛片, | 久久国内免费视频 | 精品综合久久 | 色综合天天综合 | 欧美日韩国产精品一区二区亚洲 | 一区二区日韩av | 在线 日韩 av| 女人18精品一区二区三区 | 久草在线视频免费资源观看 | 国产精品中文字幕在线播放 | 天天拍天天操 | 久久色视频 | 成人免费视频在线观看 | avav99| 99re国产 | 在线精品亚洲一区二区 | 国产一区在线看 | 久久国产福利 | 成人午夜精品福利免费 | 在线观看播放av | 天天躁日日躁狠狠躁av麻豆 | 久久精品一级片 | 中文字幕在线观看视频一区二区三区 | 日日干精品 | 波多野结衣久久精品 | 四虎永久免费网站 | 婷婷亚洲最大 | 99热高清| 精品国产精品一区二区夜夜嗨 | 夜夜夜夜夜夜操 | 成人av一区二区兰花在线播放 | 中文字幕美女免费在线 | av电影中文字幕在线观看 | www日日夜夜| 国产精品成人免费 | 99久久久久 | 中文字幕在线观看视频一区 | 天堂av在线 | 91成人短视频在线观看 | 国产最新视频在线 | 欧美成人按摩 | 色偷偷97 | 国产a精品| 日韩免费区 | 久久亚洲精品国产亚洲老地址 | 亚洲资源视频 | 国产精品精品国产 | 91视频 - 114av | 色婷在线 | 99精品免费视频 | 9在线观看免费高清完整版 玖玖爱免费视频 | 亚洲综合少妇 | 亚洲精品国产欧美在线观看 | 开心综合网 | 99在线精品免费视频九九视 | 久久香蕉国产精品麻豆粉嫩av | 久久深爱网| 日韩三级中文字幕 | 国产码电影 | 一本之道乱码区 | 免费男女羞羞的视频网站中文字幕 | 国产精彩视频一区 | 黄色免费视频在线观看 | 91视频高清免费 | 五月婷婷激情综合 | 极品久久久 | 香蕉视频在线看 | 日韩国产欧美视频 | 四虎影视成人精品国库在线观看 | 97超视频| 成人久久免费视频 | 日韩在线视频精品 | japanesefreesexvideo高潮 | 欧美另类z0zx | av网站免费在线 | 国产精品入口传媒 | 三上悠亚一区二区在线观看 | 久久精品在线 | 狠狠色丁香九九婷婷综合五月 | 国产美女精品视频免费观看 | 天天干天天操天天拍 | 在线观看久草 | 91在线观看黄 | 亚洲欧洲国产日韩精品 | 91综合久久一区二区 | 久久久亚洲麻豆日韩精品一区三区 | 国产精品午夜久久久久久99热 | 久久艹艹 | 伊人五月| 国产精品一区二 | 91日韩免费 | 久草精品视频在线看网站免费 | 天天操天天操天天操 | 精品视频亚洲 | 日韩高清在线看 | 最近2019年日本中文免费字幕 | 久久不射电影院 | 亚洲成av人影片在线观看 | 中文字幕在线影视资源 | 蜜桃av人人夜夜澡人人爽 | 久久九九精品 | 亚洲欧洲精品一区 | 精品产品国产在线不卡 | 精品国产aⅴ一区二区三区 在线直播av | 国产一区二区在线播放 | 91网在线观看| 日本超碰在线 | 亚洲天堂网在线视频 | 国产精品成人av电影 | 国产亚洲欧美一区 | 欧美91精品国产自产 | 福利视频一区二区 | 国产一区视频在线观看免费 | 狠狠婷婷 | 日韩免费视频播放 | 99国产精品 | a色网站| 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产精品久久在线观看 | av福利电影| av在线h| 成人黄色片免费看 | 久久久福利 | 亚洲最新av | 18做爰免费视频网站 | 99热九九这里只有精品10 | 免费成人在线视频网站 | 亚洲激情久久 | 欧美在线视频一区二区三区 | 国产精彩在线视频 | 成人免费网站视频 | 亚洲日本中文字幕在线观看 | 亚洲尺码电影av久久 | 国产精品不卡在线播放 | 最新中文字幕在线观看视频 | 色欧美视频 | 成人在线播放av | 午夜久久久精品 | 免费在线黄网 | 九九色网 | 久久精品91久久久久久再现 | 日韩av电影免费在线观看 | 在线观看亚洲a | 亚洲成人黄色在线观看 | 免费热情视频 | 日韩毛片久久久 | 97碰碰精品嫩模在线播放 | 成人免费观看视频大全 | 一级性av| 国产精品一区二区白浆 | 国产一级精品绿帽视频 | 久久久黄色免费网站 | 国产精品91一区 | 久久精品国产v日韩v亚洲 | 亚洲精品乱码久久久久久蜜桃动漫 | 久久国产精品99久久久久 | 黄色av电影网 | 成人黄色中文字幕 | 日韩欧美xxx| 国产日本亚洲 | 国内精品毛片 | 成人 国产 在线 | 国产又粗又猛又黄又爽 | 狠狠操综合 | 精品视频在线免费观看 | 麻豆一二| 免费日韩一区二区三区 | 国产精品免费在线播放 | 免费日韩 精品中文字幕视频在线 | 91视频啊啊啊| 日韩特黄一级欧美毛片特黄 | 久热久草| 精品久久1 | 精品999 | 九九热中文字幕 | 国产成人精品一区二区三区网站观看 | 黄色国产高清 | 国产精品久久久久久麻豆一区 | 成人久久毛片 | 成人影视免费 | 狠狠色丁香久久婷婷综合丁香 | 日日夜夜草 | 精品久久一 | 免费黄色在线播放 | 国产精品免费在线观看视频 | 国产小视频精品 | 狠狠狠色丁香综合久久天下网 | 欧美三级在线播放 | 99综合视频 | 福利一区在线视频 | 国产亲近乱来精品 | 婷婷丁香花五月天 | 成年人在线免费视频观看 | 一区二区三区www | 国产96在线视频 | 国产成人三级在线播放 | 欧美视频99 | 天天射综合网视频 | av网站在线观看免费 | 久久午夜网 | 国产黄色精品网站 | 国产亚洲精品久久网站 | 99热这里只有精品1 av中文字幕日韩 | 久草在线视频资源 | 国产精品久久久一区二区三区网站 | 日韩中文字幕视频在线观看 | av在线成人| 黄色av网站在线免费观看 | 91精品福利在线 | 久久精品国产免费看久久精品 | 国产精品18久久久久白浆 | 免费福利片2019潦草影视午夜 | 91尤物国产尤物福利在线播放 | 欧美日韩国产伦理 | 亚洲精品tv | 开心激情综合网 | 国产精品igao视频网网址 | 亚洲免费永久精品国产 | 日韩精选在线观看 | 狠狠色婷婷丁香六月 | 日韩最新在线 | 韩国三级av在线 | 日韩高清无线码2023 | 综合久久2023 | 欧美日韩精品综合 | 日本中文字幕在线免费观看 | h文在线观看免费 | 亚洲最大在线视频 | 日本久久91 | 国语自产偷拍精品视频偷 | 99久久精品久久久久久动态片 | 久久精品人人做人人综合老师 | 久久国产精品免费 | 久久99久久99精品中文字幕 | 亚洲精品视频免费看 | 狠狠色狠狠综合久久 | 国产麻豆精品一区 | 国产96精品 | 中文字幕av一区二区三区四区 | 日本丶国产丶欧美色综合 | 精品96久久久久久中文字幕无 | 国产成人综合图片 | 97在线视频免费播放 | 日韩电影在线观看一区二区三区 | 国产视频 亚洲视频 | 99久热在线精品视频观看 | 欧美极品少妇xbxb性爽爽视频 | 精品在线视频观看 | 精品免费视频. | 韩国av免费在线观看 | 一区二区视频播放 | 黄色在线成人 | 欧美激情片在线观看 | 国产精品自拍av | 午夜精品一区二区三区在线观看 | 韩国av一区 | 亚洲天堂网在线观看视频 | 久久久一本精品99久久精品66 | 国产精品男女啪啪 | 一级特黄aaa大片在线观看 | 91人人视频在线观看 | 欧美精品国产综合久久 | 欧美日一级片 | 久草男人天堂 | 一级黄色a视频 | 国产成年人av | 国产在线p| 麻花豆传媒一二三产区 | 天天色婷婷 | 久久精品在线免费观看 | 中文字幕视频在线播放 | 成人一级影视 | 亚洲黄色在线播放 | 成人毛片一区 | 久草在线免费播放 | 久久国产亚洲视频 | 日韩毛片在线免费观看 | 免费高清国产 | 美女视频免费一区二区 | 亚洲专区在线视频 | 九九精品久久 | 国产精品久久久电影 | 国产精品高清免费在线观看 | 国产高清在线一区 | 久久亚洲福利视频 | www国产亚洲精品久久麻豆 | 免费高清男女打扑克视频 | 免费高清无人区完整版 | 97色噜噜| 婷婷伊人综合亚洲综合网 | 91在线看视频 | 精品视频中文字幕 | 国产黄免费在线观看 | 在线а√天堂中文官网 | 亚洲一区二区视频在线 | 亚洲 欧美 91 | 欧美日韩不卡在线观看 | 美女网站在线观看 | 在线中文字幕网站 | 99精品国自产在线 | 97超碰国产精品 | 国产精品欧美久久 | 亚洲影院一区 | 久久久久久久久久久久亚洲 | 婷婷久久久久 | 高清视频一区二区三区 | 91在线中文字幕 | 精品久久99 | 国产一级在线 |