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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

从串行线程封闭到对象池、线程池

發(fā)布時(shí)間:2023/12/4 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从串行线程封闭到对象池、线程池 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


今天講一個(gè)牛逼而實(shí)用的概念,串行線程封閉。對(duì)象池是串行線程封閉的典型應(yīng)用場(chǎng)景;線程池糅合了對(duì)象池技術(shù),但核心實(shí)現(xiàn)不依賴于對(duì)象池,很容易產(chǎn)生誤會(huì)。


本文從串行線程封閉和對(duì)象池入手,最后通過(guò)源碼分析線程池的核心原理,厘清對(duì)象池與線程池之間的誤會(huì)。


線程封閉與串行線程封閉


線程封閉


線程封閉是一種常見的線程安全設(shè)計(jì)策略:僅在固定的一個(gè)線程內(nèi)訪問對(duì)象,不對(duì)其他線程共享


使用線程封閉技術(shù),對(duì)象O始終只對(duì)一個(gè)線程T1可見,“單線程”中自然不存在線程安全的問題。


ThreadLocal是常用的線程安全工具。線程封閉在Servlet及高層的web框架Spring等中應(yīng)用不少。

https://monkeysayhi.github.io/2016/11/27/源碼%7CThreadLocal的實(shí)現(xiàn)原理/


串行線程封閉


線程封閉雖然好用,卻限制了對(duì)象的共享。串行線程封閉改進(jìn)了這一點(diǎn):對(duì)象O只能由單個(gè)線程T1擁有,但可以通過(guò)安全的發(fā)布對(duì)象O來(lái)轉(zhuǎn)移O的所有權(quán);在轉(zhuǎn)移所有權(quán)后,也只有另一個(gè)線程T2能獲得這個(gè)O的所有權(quán),并且發(fā)布O的T1不會(huì)再訪問O。


所謂“所有權(quán)”,指修改對(duì)象的權(quán)利。


相對(duì)于線程封閉,串行線程封閉使得任意時(shí)刻,最多僅有一個(gè)線程擁有對(duì)象的所有權(quán)。當(dāng)然,這不是絕對(duì)的,只要線程T1事實(shí)不會(huì)再修改對(duì)象O,那么就相當(dāng)于僅有T2擁有對(duì)象的所有權(quán)。串行線層封閉讓對(duì)象變得可以共享(雖然只能串行的擁有所有權(quán)),靈活性得到大大提高;相對(duì)的,要共享對(duì)象就涉及安全發(fā)布的問題,依靠BlockingQueue等同步工具很容易實(shí)現(xiàn)這一點(diǎn)。


對(duì)象池是串行線程封閉的經(jīng)典應(yīng)用場(chǎng)景,如數(shù)據(jù)庫(kù)連接池等。


對(duì)象池


對(duì)象池利用了串行封閉:將對(duì)象O“借給”一個(gè)請(qǐng)求線程T1,T1使用完再交還給對(duì)象池,并保證“未擅自發(fā)布該對(duì)象”且“以后不再使用”;對(duì)象池收回O后,等T2來(lái)借的時(shí)候再把它借給T2,完成對(duì)象所有權(quán)的傳遞。


猴子擼了一個(gè)簡(jiǎn)化版的線程池,用戶只需要覆寫newObject()方法:


public abstract class AbstractObjectPool<T> {

? protected final int min;

? protected final int max;

? protected final List<T> usings = new LinkedList<>();

? protected final List<T> buffer = new LinkedList<>();

? private volatile boolean inited = false;

? public AbstractObjectPool(int min, int max) {

? ? this.min = min;

? ? this.max = max;

? ? if (this.min < 0 || this.min > this.max) {

? ? ? throw new IllegalArgumentException(String.format(

? ? ? ? ? "need 0 <= min <= max <= Integer.MAX_VALUE, given min: %s, max: %s", this.min, this.max));

? ? }

? }

? public void init() {

? ? for (int i = 0; i < min; i++) {

? ? ? buffer.add(newObject());

? ? }

? ? inited = true;

? }

? protected void checkInited() {

? ? if (!inited) {

? ? ? throw new IllegalStateException("not inited");

? ? }

? }

? abstract protected T newObject();

? public synchronized T getObject() {

? ? checkInited();

? ? if (usings.size() == max) {

? ? ? return null;

? ? }

? ? if (buffer.size() == 0) {

? ? ? T newObj = newObject();

? ? ? usings.add(newObj);

? ? ? return newObj;

? ? }

? ? T oldObj = buffer.remove(0);

? ? usings.add(oldObj);

? ? return oldObj;

? }

? public synchronized void freeObject(T obj) {

? ? checkInited();

? ? if (!usings.contains(obj)) {

? ? ? throw new IllegalArgumentException(String.format("obj not in using queue: %s", obj));

? ? }

? ? usings.remove(usings.indexOf(obj));

? ? buffer.add(obj);

? }

}


AbstractObjectPool具有以下特性

支持設(shè)置最小、最大容量

對(duì)象一旦申請(qǐng)就不再釋放,避免了GC


雖然很簡(jiǎn)單,但大可以用于一些時(shí)間敏感、資源充裕的場(chǎng)景。如果時(shí)間進(jìn)一步敏感,可將getObject()、freeObject()改寫為并發(fā)程度更高的版本,但記得保證安全發(fā)布安全回收;如果資源不那么充裕,可以適當(dāng)增加對(duì)象回收策略。


可以看到,一個(gè)對(duì)象池的基本行為包括:

創(chuàng)建對(duì)象newObject()

借取對(duì)象getObject()

歸還對(duì)象freeObject()


典型的對(duì)象池有各種連接池、常量池等,應(yīng)用非常多,模型也大同小異,不做解析。令人迷惑的是線程池,很容易讓人誤以為線程池的核心原理也是對(duì)象池,下面來(lái)追一遍源碼。


線程池


首先擺出結(jié)論:線程池糅合了對(duì)象池模型,但核心原理是生產(chǎn)者-消費(fèi)者模型


繼承結(jié)構(gòu)如下:


用戶可以將Runnable(或Callables)實(shí)例提交給線程池,線程池會(huì)異步執(zhí)行該任務(wù),返回響應(yīng)的結(jié)果(完成/返回值)。


猴子最喜歡的是submit(Callable<T> task)方法。我們從該方法入手,逐步深入函數(shù)棧,探究線程池的實(shí)現(xiàn)原理。


submit()


submit()方法在ExecutorService接口中定義,AbstractExecutorService實(shí)現(xiàn),ThreadPoolExecutor直接繼承。


public abstract class AbstractExecutorService implements ExecutorService {

...

? ? public <T> Future<T> submit(Callable<T> task) {

? ? ? ? if (task == null) throw new NullPointerException();

? ? ? ? RunnableFuture<T> ftask = newTaskFor(task);

? ? ? ? execute(ftask);

? ? ? ? return ftask;

? ? }

...



AbstractExecutorService#newTaskFor()創(chuàng)建一個(gè)RunnableFuture類型的FutureTask。


核心是execute()方法。


execute()


execute()方法在Executor接口中定義,ThreadPoolExecutor實(shí)現(xiàn)。


public class ThreadPoolExecutor extends AbstractExecutorService {

...

? ? public void execute(Runnable command) {

? ? ? ? if (command == null)

? ? ? ? ? ? throw new NullPointerException();

? ? ? ? int c = ctl.get();

? ? ? ? if (workerCountOf(c) < corePoolSize) {

? ? ? ? ? ? if (addWorker(command, true))

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? c = ctl.get();

? ? ? ? }

? ? ? ? if (isRunning(c) && workQueue.offer(command)) {

? ? ? ? ? ? int recheck = ctl.get();

? ? ? ? ? ? if (! isRunning(recheck) && remove(command))

? ? ? ? ? ? ? ? reject(command);

? ? ? ? ? ? else if (workerCountOf(recheck) == 0)

? ? ? ? ? ? ? ? addWorker(null, false);

? ? ? ? }

? ? ? ? else if (!addWorker(command, false))

? ? ? ? ? ? reject(command);

? ? }

...

}


我們暫且忽略線程池的池化策略。關(guān)注一個(gè)最簡(jiǎn)單的場(chǎng)景,看能不能先回答一個(gè)問題:線程池中的任務(wù)如何執(zhí)行?


核心是addWorker()方法。以8行的參數(shù)為例,此時(shí),線程池中的線程數(shù)未達(dá)到最小線程池大小corePoolSize,通常可以直接在9行返回。


addWorker()


簡(jiǎn)化如下:


public class ThreadPoolExecutor extends AbstractExecutorService {

...

? ? private boolean addWorker(Runnable firstTask, boolean core) {

? ? ? ? boolean workerStarted = false;

? ? ? ? boolean workerAdded = false;

? ? ? ? Worker w = null;

? ? ? ? try {

? ? ? ? ? ? w = new Worker(firstTask);

? ? ? ? ? ? final Thread t = w.thread;

? ? ? ? ? ? if (t != null) {

? ? ? ? ? ? ? ? final ReentrantLock mainLock = this.mainLock;

? ? ? ? ? ? ? ? mainLock.lock();

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? int rs = runStateOf(ctl.get());

? ? ? ? ? ? ? ? ? ? if (rs < SHUTDOWN) {

? ? ? ? ? ? ? ? ? ? ? ? workers.add(w);

? ? ? ? ? ? ? ? ? ? ? ? workerAdded = true;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? } finally {

? ? ? ? ? ? ? ? ? ? mainLock.unlock();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? if (workerAdded) {

? ? ? ? ? ? ? ? ? ? t.start();

? ? ? ? ? ? ? ? ? ? workerStarted = true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? } finally {

? ? ? ? ? ? if (! workerStarted)

? ? ? ? ? ? ? ? addWorkerFailed(w);

? ? ? ? }

? ? ? ? return workerStarted;

? ? }

...

}


我去掉了很多用于管理線程池、維護(hù)線程安全的代碼。假設(shè)線程池未關(guān)閉,worker(即w,下同)添加成功,則必然能夠?qū)orker添加至workers中。workers是一個(gè)HashSet:


private final HashSet<Worker> workers = new HashSet<Worker>();


哪里是對(duì)象池?


如果說(shuō)與對(duì)象池有關(guān),那么workers即相當(dāng)于示例代碼中的using,應(yīng)用了對(duì)象池模型;只不過(guò)這里的using是一直增長(zhǎng)的,直到達(dá)到最大線程池大小maximumPoolSize。


但是很明顯,線程池并沒有將線程發(fā)布出去,workers也僅僅完成using“保存線程”的功能。那么,線程池中的任務(wù)如何執(zhí)行呢?跟線程池有沒有關(guān)系?


哪里又不是?


注意9、17、24行:


9行將我們提交到線程池的firstTask封裝入一個(gè)worker。

17行將worker加入workers,維護(hù)起來(lái)

24行則啟動(dòng)了worker中的線程t


核心在與這三行,但線程池并沒有直接在addWorker()中啟動(dòng)任務(wù)firstTask,代之以啟動(dòng)一個(gè)worker。最終任務(wù)必然被啟動(dòng),那么我們繼續(xù)看Worker如何啟動(dòng)這個(gè)任務(wù)。


Worker


Worker實(shí)現(xiàn)了Runnable接口:


private final class Worker

? ? extends AbstractQueuedSynchronizer

? ? implements Runnable

{

...

? ? Worker(Runnable firstTask) {

? ? ? ? setState(-1); // inhibit interrupts until runWorker

? ? ? ? this.firstTask = firstTask;

? ? ? ? this.thread = getThreadFactory().newThread(this);

? ? }

? ? /** Delegates main run loop to outer runWorker? */

? ? public void run() {

? ? ? ? runWorker(this);

? ? }

...

}


為什么要將構(gòu)造Worker時(shí)的參數(shù)命名為firstTask?因?yàn)楫?dāng)且僅當(dāng)需要建立新的Worker以執(zhí)行任務(wù)task時(shí),才會(huì)調(diào)用構(gòu)造函數(shù)。因此,任務(wù)task對(duì)于新Worker而言,是第一個(gè)任務(wù)firstTask。


Worker的實(shí)現(xiàn)非常簡(jiǎn)單:將自己作為Runable實(shí)例,構(gòu)造時(shí)在內(nèi)部創(chuàng)建并持有一個(gè)線程thread。Thread和Runable的使用大家很熟悉了,核心是Worker的run方法,它直接調(diào)用了runWorker()方法。


runWorker()


敲黑板!!!


重頭戲來(lái)了。簡(jiǎn)化如下:


public class ThreadPoolExecutor extends AbstractExecutorService {

...

? ? final void runWorker(Worker w) {

? ? ? ? Thread wt = Thread.currentThread();

? ? ? ? Runnable task = w.firstTask;

? ? ? ? w.firstTask = null;

? ? ? ? w.unlock(); // allow interrupts

? ? ? ? boolean completedAbruptly = true;

? ? ? ? try {

? ? ? ? ? ? while (task != null || (task = getTask()) != null) {

? ? ? ? ? ? ? ? w.lock();

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? beforeExecute(wt, task);

? ? ? ? ? ? ? ? ? ? Throwable thrown = null;

? ? ? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? ? ? task.run();

? ? ? ? ? ? ? ? ? ? } catch (RuntimeException x) {

? ? ? ? ? ? ? ? ? ? ? ? thrown = x; throw x;

? ? ? ? ? ? ? ? ? ? } catch (Error x) {

? ? ? ? ? ? ? ? ? ? ? ? thrown = x; throw x;

? ? ? ? ? ? ? ? ? ? } catch (Throwable x) {

? ? ? ? ? ? ? ? ? ? ? ? thrown = x; throw new Error(x);

? ? ? ? ? ? ? ? ? ? } finally {

? ? ? ? ? ? ? ? ? ? ? ? afterExecute(task, thrown);

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? } finally {

? ? ? ? ? ? ? ? ? ? task = null;

? ? ? ? ? ? ? ? ? ? w.completedTasks++;

? ? ? ? ? ? ? ? ? ? w.unlock();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? completedAbruptly = false;

? ? ? ? } finally {

? ? ? ? ? ? processWorkerExit(w, completedAbruptly);

? ? ? ? }

? ? }

...

}


我們?cè)谇懊鎸⒁獔?zhí)行的任務(wù)賦值給firstTask,5-6行首先取出任務(wù)task,并將firstTask置為null。因?yàn)榻酉聛?lái)要執(zhí)行task,firstTask字段就沒有用了。


重點(diǎn)是10-31行的while循環(huán)。下面分情況討論。


case1:第一次進(jìn)入循環(huán),task不為null


case1對(duì)應(yīng)前面作出的諸多假設(shè)。


第一次進(jìn)入循環(huán)時(shí),task==firstTask,不為null,使10行布爾短路直接進(jìn)入循環(huán);從而16行執(zhí)行的是firstTask的run()方法;異常處理不表;最后,finally代碼塊中,task會(huì)被置為null,導(dǎo)致下一輪循環(huán)會(huì)進(jìn)入case2。


case2:非第一次進(jìn)入循環(huán),task為null


case2是更普遍的情況,也就是線程池的核心


case1中,task被置為了null,使10行布爾表達(dá)式執(zhí)行第二部分(task = getTask()) != null(getTask()稍后再講,它返回一個(gè)用戶已提交的任務(wù))。假設(shè)task得到了一個(gè)已提交的任務(wù),從而16行執(zhí)行的是新獲得的任務(wù)task的run()方法。后同case1,最后task仍然會(huì)被置為null,以后循環(huán)都將進(jìn)入case2。


GETTASK()


任務(wù)從哪來(lái)呢?簡(jiǎn)化如下:


public class ThreadPoolExecutor extends AbstractExecutorService {

...

? ? private Runnable getTask() {

? ? ? ? boolean timedOut = false;

? ? ? ? for (;;) {

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? Runnable r = timed ?

? ? ? ? ? ? ? ? ? ? workQueue.poll(keepAliveTime, TimeUnit.NANOSECONDS) :

? ? ? ? ? ? ? ? ? ? workQueue.take();

? ? ? ? ? ? ? ? if (r != null)

? ? ? ? ? ? ? ? ? ? return r;

? ? ? ? ? ? ? ? timedOut = true;

? ? ? ? ? ? } catch (InterruptedException retry) {

? ? ? ? ? ? ? ? timedOut = false;

? ? ? ? ? ? }

? ? ? ? }

? ? }

...

}


我們先看最簡(jiǎn)單的,19-28行。


首先,workQueue是一個(gè)線程安全的BlockingQueue,大部分時(shí)候使用的實(shí)現(xiàn)類是LinkedBlockingQueue:


private final BlockingQueue<Runnable> workQueue;


假設(shè)timed為false,則調(diào)用阻塞的take()方法,返回的r一定不是null,從而12行退出,將任務(wù)交給了某個(gè)worker線程。


一個(gè)小細(xì)節(jié)有點(diǎn)意思:前面每個(gè)worker線程runWorker()方法時(shí),在循環(huán)中加鎖粒度在worker級(jí)別,直接使用的lock同步;但因?yàn)槊恳粋€(gè)woker都會(huì)調(diào)用getTask(),考慮到性能因素,源碼中g(shù)etTask()中使用樂觀的CAS+SPIN實(shí)現(xiàn)無(wú)鎖同步。


關(guān)于樂觀鎖和CAS,可以參考https://monkeysayhi.github.io/2017/10/22/源碼%7C并發(fā)一枝花之ConcurrentLinkedQueue【偽】/


workQueue中的元素從哪來(lái)呢?這就要回顧execute()方法了。


EXECUTE()


public class ThreadPoolExecutor extends AbstractExecutorService {

...

? ? public void execute(Runnable command) {

? ? ? ? if (command == null)

? ? ? ? ? ? throw new NullPointerException();

? ? ? ? int c = ctl.get();

? ? ? ? if (workerCountOf(c) < corePoolSize) {

? ? ? ? ? ? if (addWorker(command, true))

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? c = ctl.get();

? ? ? ? }

? ? ? ? if (isRunning(c) && workQueue.offer(command)) {

? ? ? ? ? ? int recheck = ctl.get();

? ? ? ? ? ? if (! isRunning(recheck) && remove(command))

? ? ? ? ? ? ? ? reject(command);

? ? ? ? ? ? else if (workerCountOf(recheck) == 0)

? ? ? ? ? ? ? ? addWorker(null, false);

? ? ? ? }

? ? ? ? else if (!addWorker(command, false))

? ? ? ? ? ? reject(command);

? ? }

...

}


前面以8行的參數(shù)為例,此時(shí),線程池中的線程數(shù)未達(dá)到最小線程池大小corePoolSize,通常可以直接在9行返回。進(jìn)入8行的條件是“當(dāng)前worker數(shù)小于最小線程池大小corePoolSize”。


如果不滿足,會(huì)繼續(xù)執(zhí)行到12行。isRunning(c)判斷線程池是否未關(guān)閉,我們關(guān)注未關(guān)閉的情況;則會(huì)繼續(xù)執(zhí)行布爾表達(dá)式的第二部分workQueue.offer(command),嘗試將任務(wù)command放入隊(duì)列workQueue。


workQueue.offer()的行為取決于線程池持有的BlockingQueue實(shí)例。


Executors.newFixedThreadPool()、Executors.newSingleThreadExecutor()創(chuàng)建的線程池使用LinkedBlockingQueue,而Executors.newCachedThreadPool()創(chuàng)建的線程池則使用SynchronousQueue。


以LinkedBlockingQueue為例,創(chuàng)建時(shí)不配置容量,即創(chuàng)建為無(wú)界隊(duì)列,則LinkedBlockingQueue#offer()永遠(yuǎn)返回true,從而進(jìn)入12-18行。


更細(xì)節(jié)的內(nèi)容不必關(guān)心了,當(dāng)workQueue.offer()返回true時(shí),已經(jīng)將任務(wù)command放入了隊(duì)列workQueue。當(dāng)未來(lái)的某個(gè)時(shí)刻,某worker執(zhí)行完某一個(gè)任務(wù)之后,會(huì)從workQueue中再取出一個(gè)任務(wù)繼續(xù)執(zhí)行,直到線程池關(guān)閉,直到海枯石爛。


CachedThreadPool是一種無(wú)界線程池,使用SynchronousQueue能進(jìn)一步提升性能,簡(jiǎn)化代碼結(jié)構(gòu)。留給讀者分析。


CASE2小結(jié)


可以看到,實(shí)際上,線程池的核心原理與對(duì)象池模型無(wú)關(guān),而是生產(chǎn)者-消費(fèi)者模型


  • 生產(chǎn)者(調(diào)用submit()或execute()方法)將任務(wù)task放入隊(duì)列

  • 消費(fèi)者(worker線程)循環(huán)從隊(duì)列中取出任務(wù)處理任務(wù)(執(zhí)行task.run())


鉤子方法


回到runWorker()方法,在執(zhí)行任務(wù)的過(guò)程中,線程池保留了一些鉤子方法,如beforeExecute()、afterExecute()。用戶可以在實(shí)現(xiàn)自己的線程池時(shí),可以通過(guò)覆寫鉤子方法為線程池添加功能。


但猴子不認(rèn)為鉤子方法是一種好的設(shè)計(jì)。因?yàn)殂^子方法大多依賴于源碼實(shí)現(xiàn),那么除非了解源碼或API聲明絕對(duì)的嚴(yán)謹(jǐn)正確,否則很難正確使用鉤子方法。等發(fā)生錯(cuò)誤時(shí)再去了解實(shí)現(xiàn),可能就太晚了。說(shuō)到底,還是不要使用類似extends這種表達(dá)“擴(kuò)展”語(yǔ)義的語(yǔ)法來(lái)實(shí)現(xiàn)繼承,詳見Java中如何恰當(dāng)?shù)谋磉_(dá)“繼承”與“擴(kuò)展”的語(yǔ)義?。


當(dāng)然,鉤子方法也是極其方便的。權(quán)衡看待。


總結(jié)


相對(duì)于線程封閉,串行線程封閉離用戶的距離更近一些,簡(jiǎn)單靈活,實(shí)用性強(qiáng),很容易掌握。而線程封閉更多淪為單純的設(shè)計(jì)策略,單純使用線程封閉的場(chǎng)景不多。


線程池與串行線程封閉、對(duì)象池的關(guān)系不大,但經(jīng)常被混為一談;沒看過(guò)源碼的很難想到其實(shí)現(xiàn)方案,面試時(shí)也能立分高下。


線程池的實(shí)現(xiàn)很有意思。在追源碼之前,猴子一直以為線程池就是把線程存起來(lái),用的時(shí)候取出來(lái)執(zhí)行任務(wù);看了源碼才知道實(shí)現(xiàn)如此之妙,簡(jiǎn)潔優(yōu)雅效率高。


源碼才是最好的老師。


來(lái)源:ImportNew



總結(jié)

以上是生活随笔為你收集整理的从串行线程封闭到对象池、线程池的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

在线日本v二区不卡 | 亚洲国产精品久久久久婷婷884 | 亚洲精品www. | 天天干天天操天天入 | 色婷婷久久一区二区 | av黄色亚洲 | 久久久伊人网 | 国产中文欧美日韩在线 | 国产精品久久久久久久久婷婷 | 99热最新网址| 天天翘av| 九九九视频在线 | 免费福利小视频 | 综合网久久 | 四虎国产精品免费观看视频优播 | 超碰在线免费福利 | av在线播放观看 | 黄色网在线播放 | 一区二区三区在线电影 | 91成人久久| 91精品久久久久久久99蜜桃 | 久久国产精品99国产 | 国产生活一级片 | 成人免费视频播放 | 久久99亚洲精品久久久久 | 在线观看视频精品 | 色偷偷88888欧美精品久久久 | 99久久精品免费看国产 | 中文字幕网站视频在线 | 国产亚洲精品久久久久久无几年桃 | 99精品视频免费观看 | 亚洲精品美女久久久久网站 | 免费精品在线视频 | 国产在线观看污片 | 天天射天天射天天射 | 成人三级黄色 | 精品亚洲二区 | 精品视频在线看 | 精品久久久网 | 99精品视频免费在线观看 | 日韩视频精品在线 | 久久网址 | 国产视频在线观看一区 | 欧美不卡视频在线 | 中文字幕一区二区三区在线播放 | 成人黄色电影在线播放 | 亚洲aⅴ一区二区三区 | 欧美精品成人在线 | 五月婷婷天堂 | 91精品啪在线观看国产81旧版 | 国产免费观看av | 91精品专区 | japanese黑人亚洲人4k | 亚洲欧美激情精品一区二区 | 婷婷在线观看视频 | 在线你懂| av电影中文字幕在线观看 | 激情视频91 | 91在线播| 99色资源 | 免费a v观看 | 一区二区三区观看 | 国产97色在线 | www.国产在线| 久青草国产在线 | 日韩av五月天 | 国产黄色理论片 | 欧美在线观看视频一区二区 | 在线观看成人一级片 | 狠狠精品 | 日韩高清精品一区二区 | 伊人狠狠 | av久久在线 | 久久99精品久久久久久三级 | 黄色亚洲免费 | 午夜在线免费观看视频 | 亚洲精品视频在线观看视频 | 狠狠干电影 | 久久国产精品一区二区三区四区 | 青草草在线 | 黄色a级片在线观看 | 婷婷综合伊人 | 香蕉视频在线视频 | 在线亚洲天堂网 | 99在线热播 | 91超在线 | 欧美成年性 | 最新av网址大全 | 国产中文自拍 | 91在线免费看片 | 在线成人国产 | 国内外成人在线 | 在线观看免费色 | 天天色天天搞 | 天堂av在线网站 | 国产一区麻豆 | 丝袜足交在线 | 在线 成人| 视频精品一区二区三区 | 天天干天天操天天爱 | 久艹视频在线免费观看 | 伊人va | 国产不卡免费视频 | 国产96视频 | 欧美色噜噜噜 | 91在线视频观看 | 热久久免费视频精品 | 91c网站色版视频 | 天天天色| 亚洲黄色在线免费观看 | 久久精品国产免费观看 | 亚洲精品视频在线免费 | 国产精品久久婷婷六月丁香 | 九九在线高清精品视频 | 在线免费观看国产视频 | 在线影院 国内精品 | 国产精品九色 | 国产99久久久国产精品免费看 | 最新日韩在线观看视频 | 久久免费黄色 | 国产粉嫩在线 | 中国成人一区 | 国产视频1区2区 | 91中文在线| 国产精品久久久亚洲 | 麻豆免费视频观看 | 一区 二区电影免费在线观看 | www黄色av | 日韩在线观看三区 | 亚洲三级在线 | 国产精品一区免费在线观看 | 国产精品久久久久久久久搜平片 | 国产91电影在线观看 | 日韩毛片一区 | 黄网站色成年免费观看 | av网站播放 | 欧美性脚交 | 丰满少妇在线观看 | 国产 一区二区三区 在线 | 在线观看精品视频 | 国产成人免费在线观看 | 日本狠狠干 | 二区三区中文字幕 | 性色va| 最近免费观看的电影完整版 | 国产成人精品久久久 | 丁香花在线观看免费完整版视频 | av电影免费在线看 | 色婷婷激情电影 | 日韩在线视频精品 | 亚洲爽爽网 | 色播六月天 | 五月天免费网站 | 欧美三级免费 | 在线观看国产91 | 久久精品免费 | 成人中文字幕+乱码+中文字幕 | 1区2区3区在线观看 三级动图 | 久久综合久久88 | 日韩欧美电影在线 | 成人国产精品一区 | 一区二区三区国产精品 | 精品国产欧美 | 久久毛片网 | av官网在线 | 日韩精品欧美一区 | 人人超碰免费 | 91精品欧美一区二区三区 | 日韩av在线网站 | 日韩综合一区二区三区 | 99日精品 | 国产色视频一区二区三区qq号 | 久久国色夜色精品国产 | 搡bbbb搡bbb视频 | 首页中文字幕 | 日韩精品中文字幕在线不卡尤物 | 性色xxxxhd | 超碰国产在线 | 女人18片毛片90分钟 | 国产伦理一区二区三区 | 久久久资源 | 久久综合九色综合97婷婷女人 | 亚洲 欧洲 国产 精品 | 国产不卡视频 | 国产精品久久久久久久久久久久久久 | 国产污视频在线观看 | 在线免费观看一区二区三区 | 人人舔人人射 | 主播av在线 | 正在播放 国产精品 | 亚洲欧美精品一区 | 91在线免费播放视频 | av一区在线| 日韩女同av | 不卡国产在线 | 天天操夜夜操国产精品 | 欧美在线观看小视频 | 免费看v片网站 | 精品国产伦一区二区三区观看体验 | 九九免费在线观看视频 | 亚洲成av人片在线观看 | 日韩成片| 久久综合激情 | 亚洲精品乱码白浆高清久久久久久 | 国产999精品久久久久久麻豆 | 丁香六月国产 | 国产一级二级三级在线观看 | 久久精品视频在线观看 | 午夜精品久久久久久久99婷婷 | 91免费高清视频 | 狠狠gao | av久久在线 | 91成人看片| 久久久精品免费观看 | 免费看污污视频的网站 | 久久久国产成人 | 天天玩天天干天天操 | 99久久电影 | 久久久久久免费网 | 日产乱码一二三区别在线 | 黄色aaa毛片 | 999久久久精品视频 日韩高清www | 在线观看免费视频 | 欧美日韩二三区 | 在线性视频日韩欧美 | 天天艹天天干天天 | 丁香六月婷婷激情 | 久久婷亚洲五月一区天天躁 | 久久久视频在线 | a视频在线播放 | 蜜臀av夜夜澡人人爽人人 | 麻豆激情电影 | 欧美日韩免费观看一区=区三区 | 日韩资源视频 | 丝袜精品视频 | 亚洲电影图片小说 | 在线影视 一区 二区 三区 | 91精品久久久久久久久久久久久 | 91精品伦理 | 美女久久久久 | a在线免费观看视频 | 丝袜美腿亚洲 | 在线之家免费在线观看电影 | 国际精品久久久久 | 久久情侣偷拍 | 免费日韩一区二区 | 久久久91精品国产一区二区精品 | 久久久黄视频 | 日韩在线高清视频 | 成年人在线免费视频观看 | 又爽又黄又刺激的视频 | 午夜精品一区二区三区在线观看 | 久久综合亚洲鲁鲁五月久久 | 99精品视频一区 | 五月综合| 99视频精品全部免费 在线 | 亚洲资源视频 | 久草在线免费色站 | 久草视频免费 | 久热这里有精品 | 天天玩天天操天天射 | 免费久草视频 | 久久综合偷偷噜噜噜色 | 中文字幕乱视频 | 六月丁香久久 | 91福利视频久久久久 | 国产精品一区在线观看你懂的 | 欧美成年网站 | 成人午夜精品 | 亚洲国产精品视频在线观看 | 色激情五月 | 精品久久久久久久久久久久久久久久久久 | 免费黄色网址网站 | 97网| 丁香av在线 | 色播五月激情五月 | 开心激情婷婷 | 99精品免费久久久久久久久 | 国产成人一级 | 日韩av资源站 | 五月天久久综合 | 国产婷婷视频在线 | 婷婷 中文字幕 | 激情av资源| 九七视频在线观看 | 玖玖精品在线 | 精品一区二区三区四区在线 | 成人在线观看资源 | 在线午夜电影神马影院 | 99视频一区| 久久国产欧美日韩精品 | 日韩精品一区二区免费 | 国产精品乱码久久久久久1区2区 | 91精品国自产在线观看 | 久久亚洲免费 | 成x99人av在线www | 91视频在线观看下载 | 在线视频观看你懂的 | www国产精品com | 91色视频 | 午夜免费视频网站 | 日本护士三级少妇三级999 | 99色在线播放 | 精品久久中文 | 亚洲国产精品第一区二区 | 国产三级国产精品国产专区50 | 色婷婷亚洲综合 | 久久最新 | 天天操天天射天天添 | 亚洲传媒在线 | 中文字幕在线观看完整 | 在线亚洲午夜片av大片 | 欧美日韩中文国产一区发布 | 精品在线观看一区二区 | 日本性xxxxx| 国产乱视频 | 欧美精品久久 | 免费在线播放视频 | 国产精品大尺度 | 久久久久免费观看 | 久久激情五月丁香伊人 | 激情影音先锋 | 国产97在线视频 | 在线亚洲日本 | 成人日批视频 | 亚洲动漫在线观看 | 天天操夜夜干 | 爱爱一区 | 久久久亚洲国产精品麻豆综合天堂 | 免费看的毛片 | 视频91| 成年人在线观看视频免费 | 国产精品自产拍 | 久久久香蕉视频 | 国产尤物一区二区三区 | 午夜免费在线观看 | 日日夜夜精品免费 | 亚洲黄在线观看 | 亚洲欧美日韩中文在线 | 五月天com | 国产一区视频在线 | av资源免费看 | 伊人精品在线 | 色网站黄 | 久久精品99国产精品日本 | 在线视频欧美日韩 | 麻豆成人精品视频 | 久久综合九色九九 | 成人动态视频 | 91干干干| 日韩欧美亚洲 | 91色吧| 欧美日韩免费看 | 国产人成一区二区三区影院 | 久久99精品久久久久久久久久久久 | 国产永久免费高清在线观看视频 | 久久亚洲影院 | 黄色影院在线播放 | 欧美性生活小视频 | 一区二区三区韩国免费中文网站 | 在线va视频 | 国产激情免费 | 国产亚洲精品久久久久久久久久 | 国产日韩精品一区二区三区在线 | 99久久婷婷国产一区二区三区 | 日韩素人在线观看 | 成人va在线观看 | 久香蕉 | 国产精品av在线 | 五月婷婷六月丁香在线观看 | 在线播放 亚洲 | 亚洲黄色大片 | 黄色官网在线观看 | 免费在线色视频 | 色片网站在线观看 | 国产一区二区精品在线 | 国产欧美精品一区二区三区四区 | av在线播放网址 | av网站地址 | 天天操天天弄 | 麻豆视频免费在线播放 | 亚洲四虎影院 | 日日麻批40分钟视频免费观看 | 久草免费在线 | 亚洲视频精品在线 | 成人va视频 | 三级午夜片 | 色婷婷综合激情 | 午夜视频免费在线观看 | 天天干天天拍天天操 | 九九在线免费视频 | 日韩中文字 | 在线观看91网站 | 在线91视频 | 久久久亚洲国产精品麻豆综合天堂 | 国模视频一区二区三区 | 国产又黄又硬又爽 | 视频一区视频二区在线观看 | 欧美另类xxxx | 午夜久操 | 久久这里只有精品首页 | 男女日麻批 | 亚洲乱码精品久久久 | 99久久网站 | 日韩精品欧美一区 | 国产黄视频在线观看 | 亚洲一区二区三区四区在线视频 | 国产视频欧美视频 | 日韩在线| 精品在线免费观看 | 国产剧在线观看片 | 免费观看一级一片 | 91视频高清完整版 | 天天爽夜夜爽精品视频婷婷 | 免费中文字幕在线观看 | 国产伦理久久精品久久久久_ | 久久艹精品 | 亚洲精品国产精品国自产 | 色婷婷在线视频 | 免费男女羞羞的视频网站中文字幕 | 另类老妇性bbwbbw高清 | 国内精品亚洲 | 久久精品美女视频 | 国产精品爽爽久久久久久蜜臀 | 一区二区三区在线免费观看 | 国产精品亚州 | 91国内在线 | 99操视频 | 人人爽人人爽人人片av | 色av色av色av| 狠狠色丁香婷婷 | 国产成人精品一区一区一区 | 探花视频在线版播放免费观看 | 九九热精品视频在线观看 | 亚洲永久精品在线 | 91精选在线观看 | 欧美一级黄色片 | 国产精品黑丝在线观看 | 日韩一级电影在线 | 欧美老少交 | 亚洲精品国产精品乱码不99热 | 亚洲最大免费成人网 | 亚洲精品av中文字幕在线在线 | 国产精品综合av一区二区国产馆 | 亚州精品视频 | 日韩小视频 | 亚洲精品在线观看视频 | 91色一区二区三区 | 在线欧美小视频 | 91精品国产91久久久久久三级 | 久久久久久久久久久网站 | 国产网红在线 | 欧美精品亚洲精品 | 日本字幕网 | 91九色蝌蚪 | 国产精品18久久久久久vr | 久久激情视频免费观看 | 久久国产精品久久国产精品 | 超碰官网 | 国产伦精品一区二区三区高清 | 精品国产视频在线 | 高清不卡一区二区在线 | 日韩精品视频免费专区在线播放 | 午夜久久久精品 | 日韩国产精品一区 | 久久激情小视频 | 国产一区二区三区在线免费观看 | 成人永久在线 | 91九色在线视频观看 | 91丨九色丨首页 | 欧美激情视频三区 | 久久人人爽人人爽人人 | 亚洲一区二区三区毛片 | 国产成人精品一区在线 | 成人小电影在线看 | 国产中文在线视频 | 蜜臀久久99精品久久久久久网站 | 97成人精品| 国产中文在线字幕 | 丰满少妇高潮在线观看 | 欧美日韩免费一区 | 最新av免费在线观看 | 国产成人精品999 | 久久一本综合 | 亚洲欧洲一区二区在线观看 | 亚洲成av人片在线观看 | 99热99re6国产在线播放 | 97网| 精品国产一区二区三区久久 | 国产在线国偷精品产拍 | 久久久久久久av麻豆果冻 | 亚洲人成免费网站 | 丁香五月缴情综合网 | 日韩在线精品一区 | 亚洲人天堂 | 成人精品国产 | 欧美男女爱爱视频 | 免费碰碰| 日韩一区正在播放 | 日韩sese| 成人cosplay福利网站 | 成人在线电影观看 | 中文字幕在线播放av | 五月婷婷综合激情 | 久草视频免费播放 | 日韩视频免费在线观看 | 久久国内精品 | 日本中文字幕观看 | 久久久亚洲影院 | 91一区二区三区在线观看 | 免费看的av片 | 久草在线免费资源站 | 国内精品久久久久久久久久久久 | 伊人婷婷网 | 午夜视频一区二区三区 | 久久国产三级 | 国产免费av一区二区三区 | 亚洲japanese制服美女 | 曰本免费av | 婷婷久久综合九色综合 | 久久久综合电影 | 久久久久久久久国产 | 人成免费网站 | 欧美在线a视频 | 狠狠狠狠狠狠天天爱 | 日韩电影精品一区 | 国产精品第一页在线观看 | www.玖玖玖 | 国产精品成人久久久久久久 | 国产精品麻豆一区二区三区 | 91视频在线国产 | 狠狠狠狠狠干 | 亚洲精品电影在线 | 久久99热这里只有精品国产 | 色资源在线观看 | 91九色在线观看视频 | 色91在线视频 | 久草精品视频在线观看 | 激情网站网址 | 九热精品| 国产香蕉97碰碰久久人人 | 亚洲另类视频在线 | 91视频免费看片 | 在线免费观看一区二区三区 | 久久男女视频 | 久久综合免费视频影院 | 91九色porn在线资源 | 国产专区在线视频 | 国产亚洲无 | 国产网站色 | 亚洲精品国久久99热 | 四虎影视久久久 | 欧美福利久久 | 日韩欧美在线观看 | 色香蕉在线视频 | 中文字幕一区二区三区四区视频 | 欧美激情精品久久久久久免费印度 | 色片网站在线观看 | 午夜.dj高清免费观看视频 | 中文区中文字幕免费看 | 国内精品久久久精品电影院 | 中文字幕国内精品 | 国精产品一二三线999 | 久久精品电影 | 国产九九九精品视频 | 国产精品中文字幕在线播放 | 国产在线欧美在线 | 99久久激情| 99精品视频免费观看 | 亚洲国产免费网站 | 狠狠操精品 | 国产一区在线播放 | 欧美精品久久久久久久久久久 | 色综合久久久 | 韩国精品视频在线观看 | 人人爽人人插 | 在线a视频免费观看 | 日本最新中文字幕 | 亚洲激情校园春色 | 日本久久久精品视频 | 亚洲国产精品成人va在线观看 | 成人永久视频 | 亚洲男人天堂2018 | 久久午夜电影院 | 超碰97免费在线 | 国产欧美日韩精品一区二区免费 | 国内丰满少妇猛烈精品播放 | 国产精品1024 | 狠狠躁夜夜躁人人爽超碰91 | 久草在线最新 | 在线国产一区二区 | 国产精品 中文在线 | 亚洲精品在线视频网站 | 五月开心激情 | 三级黄色免费 | 色资源网免费观看视频 | 中文字幕人成乱码在线观看 | 在线观看电影av | 亚洲一区精品二人人爽久久 | 久草精品视频在线看网站免费 | 国产精品免费看 | 久操视频在线观看 | 99热这里只有精品久久 | 97人人超碰在线 | 国产精品一区二区白浆 | 免费97视频 | 日韩在线免费小视频 | 手机av在线网站 | 美女视频网站久久 | 久久久综合香蕉尹人综合网 | 成人免费 在线播放 | 婷色在线| 四虎国产 | 日韩综合在线观看 | 黄色在线观看免费 | 欧美国产日韩激情 | 高清不卡一区二区在线 | 成人黄色小说在线观看 | 九九亚洲精品 | 六月色 | 国产最新网站 | 国产手机视频精品 | 日日夜夜免费精品 | 日韩午夜一级片 | 激情综合网五月 | 婷婷在线视频观看 | 五月婷婷视频在线 | .精品久久久麻豆国产精品 亚洲va欧美 | 国产精品成人自拍 | 中日韩在线视频 | 亚洲激情久久 | 成人av免费网站 | 久久欧美精品 | 色五月激情五月 | 超碰99人人 | 日本精品视频免费 | 99热官网| 黄色三级在线看 | 欧美大片在线看免费观看 | 久久亚洲国产精品 | 日韩精品中文字幕在线不卡尤物 | 亚洲一区二区三区四区在线视频 | 在线观看免费观看在线91 | 日本成人免费在线观看 | 久久免费av电影 | 人人添人人澡人人澡人人人爽 | 91av视频免费在线观看 | 久久久久久久久久网 | 久久久在线免费观看 | 亚洲精品视频www | 亚洲视频999 | 日韩免费高清在线 | 免费黄色在线播放 | 色黄久久久久久 | 99 久久久久| 日韩欧美在线一区二区 | 黄色一级大片在线免费看国产一 | 国外调教视频网站 | 亚州日韩中文字幕 | 国产中文字幕一区二区 | 麻豆视频免费网站 | 九九九热精品免费视频观看网站 | 日本一区二区三区免费观看 | 亚洲精选久久 | 日韩精品一区在线观看 | aaa亚洲精品一二三区 | 黄色av一级 | 日韩一区正在播放 | 在线亚洲播放 | 欧美成年人在线视频 | 色先锋资源网 | 二区中文字幕 | www.色婷婷.com | 免费看黄网站在线 | www.夜夜草 | 美女网站视频免费都是黄 | 日韩免费视频在线观看 | 人人舔人人爱 | 久久久99精品免费观看 | 国产片免费在线观看视频 | 波多野结衣综合网 | 国产97色在线 | 天天干,天天射,天天操,天天摸 | 欧美成人aa | 超碰人人做 | 久久午夜精品影院一区 | 99精品在线视频播放 | 婷婷色在线观看 | 久久超级碰视频 | a视频在线观看 | 97夜夜澡人人爽人人免费 | 亚洲午夜久久久久 | 亚洲电影院 | 91大神dom调教在线观看 | 天天草天天干天天 | 国产中文字幕视频在线观看 | 91热视频在线观看 | 国产精品九九九 | 国语自产偷拍精品视频偷 | 亚洲高清色综合 | 99热手机在线 | 日韩在线网址 | av线上看 | 国产婷婷在线观看 | 亚洲精品中文字幕在线 | 欧美一区,二区 | 午夜精品视频一区 | 久久婷婷一区二区三区 | 日本女人b| 福利视频网址 | 日本精品视频在线观看 | 精品欧美小视频在线观看 | 成人午夜黄色 | 天天操天天是 | 亚洲播播 | 天天干天天操天天爱 | 亚洲成人频道 | 日韩在线观看视频免费 | av一级在线| 精品视频国产 | 国产麻豆精品免费视频 | 91精品国产一区 | 欧美日韩久久久 | 中文字幕美女免费在线 | 夜色成人av| 麻豆精品视频在线 | 精品 一区 在线 | 中文字幕一区二区三区四区久久 | 最新高清无码专区 | 国产码电影 | 国产黄色大片 | 激情婷婷色 | 96香蕉视频| 久久精品国产99国产 | 久久亚洲人 | 在线观看日本高清mv视频 | 久久精品电影 | 啪啪资源 | 97电影院在线观看 | 久久久电影 | 国产精品免费一区二区三区 | 97电影手机 | 欧美成人亚洲 | 天天综合天天做天天综合 | 人人爽人人澡人人添人人人人 | 九色91在线视频 | 极品久久久久久久 | 麻豆精品在线视频 | 欧美午夜一区二区福利视频 | 国产人成看黄久久久久久久久 | 九九国产精品视频 | 久草在线播放视频 | 奇米影视在线99精品 | 久草精品网 | 国产v欧美 | 日韩电影在线观看中文字幕 | www免费在线观看 | 中文字幕一区二 | 特黄色大片 | 成人在线你懂得 | 欧美日韩网站 | 蜜桃av久久久亚洲精品 | 久久99视频免费 | 久久99精品国产91久久来源 | 色悠悠久久综合 | 在线视频91 | 人人看看人人 | 久久天天躁狠狠躁亚洲综合公司 | 国产日韩欧美在线播放 | www天天干com | 国产在线高清 | 五月激情五月激情 | 欧美一级片免费观看 | 欧美性爽爽 | 国产99久久久精品 | 在线免费日韩 | 欧美国产日韩激情 | 国产做a爱一级久久 | 91在线精品秘密一区二区 | 91香蕉亚洲精品 | 久草在线观看视频免费 | 亚洲美女久久 | 亚洲精品中文字幕在线 | 国产成人一区二区精品非洲 | 97超碰在线资源 | 手机av网站 | 999电影免费在线观看 | 久久99精品国产麻豆婷婷 | 色九九影院 | 激情久久网 | 国产福利91精品 | 欧美视频不卡 | 男女男视频 | 国产香蕉97碰碰久久人人 | 欧美日韩国产在线观看 | 九九免费在线观看视频 | 欧洲成人av | 国产中文字幕免费 | 开心激情五月网 | 手机在线看永久av片免费 | 五月激情婷婷丁香 | 亚洲黄色小说网 | 精品久久久久久久久久久院品网 | 美女视频久久 | 国产在线高清精品 | 欧美激情视频免费看 | 在线一二三四区 | 福利片视频区 | 久久久精品久久日韩一区综合 | 天天天天天天天天操 | 伊人五月综合 | 国产一区二区久久精品 | 五月天国产 | 亚洲精品国产精品国自产观看 | 又长又大又黑又粗欧美 | 国色天香在线观看 | 亚州成人av在线 | 色婷婷免费视频 | 天天干夜夜想 | 玖操 | 精品久久影院 | 国产精品高潮呻吟久久久久 | 色播99 | 国内精品视频免费 | 五月开心综合 | 黄色一级大片在线免费看国产一 | 日韩av一区二区在线播放 | 97成人精品区在线播放 | 久久99久久99精品免观看软件 | 久久99热精品 | 韩日三级在线 | 91精品久久久久久久久久入口 | 2023亚洲精品国偷拍自产在线 | 日日日爽爽爽 | 欧美性生活小视频 | 国产在线日本 | 国产在线一区二区 | 99视频久 | 波多野结依在线观看 | 国产1级毛片 | 久久99久久99精品免观看软件 | 日韩欧美高清在线 | 黄色a大片 | 成人毛片在线观看视频 | 91麻豆传媒 | 日韩欧美xxx | 久久香蕉电影 | 精品人人爽 | 一区 在线 影院 | 在线观看av片 | 成人资源在线观看 | 午夜国产成人 | 麻豆91小视频 | 啪啪肉肉污av国网站 | 国产一区二区高清视频 | 99精品免费久久久久久日本 | 激情欧美日韩一区二区 | 成人丁香花 | 99中文字幕在线观看 | 久久精品国产99 | 国产精品久久一区二区三区不卡 | 97电影院在线观看 | 国产美女免费视频 | 亚洲国产精品第一区二区 | 国产精品99久久久久久有的能看 | 久久不射电影院 | 国产69久久久 | 久久综合精品一区 | 国产在线观看,日本 | www色| 国产第一页在线播放 | 国产美女黄网站免费 | 精品一区二区三区四区在线 | 97视频在线观看网址 | 亚洲成年人免费网站 | 肉色欧美久久久久久久免费看 | 亚洲一区精品二人人爽久久 | 一级黄色片在线免费观看 | 伊人天天干 | 国产精品99久久久久 | 奇米先锋 | 天天操天天操天天操天天操天天操 | 日韩www在线 | 丁香五月网久久综合 | 丁香六月伊人 | 福利电影一区二区 | 夜夜视频资源 | 91麻豆精品国产91久久久更新时间 | 96亚洲精品久久 | 日韩精品电影在线播放 | 国产一级免费观看 | 国产一级电影免费观看 | 黄色小说在线免费观看 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 日本黄色免费大片 | 国产亚洲精品久久久久秋 | 天堂av色婷婷一区二区三区 | www.人人草 | 六月丁香激情网 | 在线成人短视频 | 在线观看91av| 一区二区三区四区五区在线 | 日韩在线免费不卡 | 中文字幕在线观看1 | 久久久久女人精品毛片九一 | 日本在线精品视频 | 国产日韩视频在线 | 操操日| 国产精品久久久久久婷婷天堂 | 中文字幕日本在线 | 91精品久久久久久综合乱菊 | 国产精品99久久久久久小说 | 欧美三级高清 | 人人澡澡人人 | 麻豆国产精品一区二区三区 | 成人免费观看网站 | 久久免费电影网 | 久久精品美女 | 色综合天天狠狠 | 久久99视频精品 | www.狠狠插.com | 97国产在线视频 | 在线观看国产一区二区 | 久久精品欧美一区二区三区麻豆 | 欧美性色综合网站 | 免费麻豆 | 精品视频久久 | 99热官网| 91精品999| 看片网站黄 | 欧美大片在线看免费观看 | 少妇高潮流白浆在线观看 | 亚洲综合成人在线 | 日韩久久久久久 | 摸bbb搡bbb搡bbbb| 欧美精彩视频在线观看 | 精品国精品自拍自在线 | 97视频免费观看2区 亚洲视屏 | 日韩欧美黄色网址 | av一二三区 | 69久久99精品久久久久婷婷 | 97在线视频免费看 | 99久久一区| 婷婷色亚洲| 97av视频在线观看 | 日韩在线视频免费看 | 激情综合五月天 | 999久久国精品免费观看网站 | 欧美另类巨大 | 精品国产一区二区三区免费 | 狠狠干夜夜操天天爽 | 又黄又爽又色无遮挡免费 | 中文字幕一区二区三区在线播放 | 99久久99视频只有精品 | 色婷在线| 99精品国产高清在线观看 | 久草精品在线观看 | 97精品伊人 | 激情久久伊人 | 国内精品久久久久影院优 | 黄色三级av | 中文字幕在线视频免费播放 | 91av在线免费 | 黄色av一区二区 | 免费日韩 精品中文字幕视频在线 | 亚洲无吗视频在线 | 久久男人中文字幕资源站 | 天天操天天操天天操天天 | 国产精品久久二区 | 人交video另类hd | 日韩欧美精品免费 | 97色国产 | 成人性生活大片 | 日韩av一区二区在线影视 | 精品国精品自拍自在线 | 天天艹天天操 | 国产成人亚洲精品自产在线 | 国产一区视频免费在线观看 | 黄色在线视频网址 | 亚洲激情综合 | www.久久爱.cn | 蜜臀av麻豆 | 四虎精品成人免费网站 | 日韩免费视频在线观看 | 在线免费av电影 | 日韩一级网站 | 久久久久久久久久久久久久免费看 | 久久高清毛片 | 国产91对白在线播 | 日韩伦理片hd | 久久伊人精品天天 | 亚洲电影自拍 | a级国产乱理论片在线观看 伊人宗合网 | 亚洲伦理一区二区 | av片在线观看免费 | 免费观看v片在线观看 | 免费看黄在线网站 | 国产尤物视频在线 |