• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Qt的文件內(nèi)容搜索工具設(shè)計與實現(xiàn)

    2019-09-10 19:55:23章俊
    大眾科學(xué)·中旬 2019年8期
    關(guān)鍵詞:多線程

    章俊

    摘 要:該文利用Qt框架實現(xiàn)了一個文件搜索工具,并支持對文件內(nèi)容的搜索。該文件搜索工具是一個集多線程、圖形界面、事件處理的面向?qū)ο缶幊痰膶嵗绦颉?/p>

    關(guān)鍵詞:Qt;C++;多線程;文件搜索;事件處理

    1背景

    Windwos系統(tǒng)原生自帶的“文件搜索工具”的功能簡單,查找文件緩慢,而且不支持基于文本內(nèi)容的文件搜索。本文利用Qt框架,實現(xiàn)了一個支持并發(fā)的文本內(nèi)容的搜索工具。該文件搜索工具在進行搜索時,會把搜索任務(wù)合理分配給輔助線程,并由輔助線程完成任務(wù)后由事件系統(tǒng)通知給主線程。該文件搜索工具是一個集多線程、圖形界面、事件處理的面向?qū)ο缶幊讨R的綜合應(yīng)用實例程序。

    2Qt框架介紹

    Qt是跨平臺的應(yīng)用程序和圖形用戶接口(GUI)開發(fā)框架,由集成開發(fā)工具、跨平臺類庫和集成開發(fā)環(huán)境(IDE)組成,它的開發(fā)語言是C++。

    Qt中的一個核心機制是信號與槽機制,它是Qt的基礎(chǔ)。信號與槽的設(shè)計使用了觀察者模式,當(dāng)某個事件發(fā)生之后,它就會發(fā)出一個信號(signal),信號的發(fā)出是沒有目的的,類似廣播,如果有對象對這個信號感興趣,它就會使用連接(connect)函數(shù)將自己的槽(slot)函數(shù)綁定到這個信號。信號與槽機制取代了回調(diào)函數(shù)的實現(xiàn)方式,當(dāng)信號發(fā)出時,被連接的槽函數(shù)會自動被回調(diào),它可以讓應(yīng)用程序編寫人員把這些互不了解的對象綁定在一起。

    事件是GUI程序的重要部分,GUI應(yīng)用程序是由事件循環(huán)驅(qū)動的。事件是各種由應(yīng)用程序內(nèi)部或者外部產(chǎn)生的事情或者動作的統(tǒng)稱,Qt中使用一個對象來表示一個事件,繼承自QEvent類。事件和信號與槽并不相同,響應(yīng)事件的函數(shù)并不能立即響應(yīng),而是會進入事件序列,等待執(zhí)行。而信號與槽不同,信號發(fā)出后,關(guān)連的槽函數(shù)會立即得到執(zhí)行。

    3軟件介紹

    文件搜索工具會從指定的目錄中搜索含有指定內(nèi)容的文件,并列出匹配到的文件列表。一個文件的搜索過程涉及到把文件的內(nèi)容讀取到內(nèi)存,然后在讀取到的內(nèi)容中匹配指定的搜索關(guān)鍵字,并把匹配到的文件路徑顯示出來,這是一個混合了磁盤讀取和數(shù)據(jù)處理的過程。

    在這個程序中,使用了多個輔助線程完成這個任務(wù),每個線程都有需要用來搜索的一個文件列表。每個線程在進行搜索任務(wù)的同時,通過使用一個自定義事件來與主線程進行通信,把搜索到的結(jié)果通知給主線程(GUI)進行匯總與顯示。

    4詳細設(shè)計與實現(xiàn)

    4.1界面設(shè)計

    使用Qt Creator新建一個Qt Widgets Application程序,并新建一個繼承于QMainWindow類的MainWindow窗口類,在類MainWindow下創(chuàng)建一個搜索目錄設(shè)置框,一個搜索內(nèi)容設(shè)置框,一個搜索結(jié)果顯示列表,一個搜索/取消按鈕。界面效果如圖1所示。

    4.2搜索任務(wù)與界面顯示設(shè)計

    主窗口類MainWindow還有2個私有數(shù)據(jù)類型的項:int done和volatile bool stopped,done整型變量是已經(jīng)匹配成功的文件數(shù)目,stopped布爾值用來通知輔助線程用戶是否已經(jīng)取消操作,此變量使用volatile來修飾,在線程間使用volatile bool是安全的。

    一旦選定搜索目錄、搜索內(nèi)容,用戶按下Search按鈕就開始搜索工作了。按鈕一旦被按下,該按鈕就會變成Cancel按鈕,所以用戶可以在任何時候停止搜索工作。這個按鈕與searchOrCancel()槽相連。

    searchOrCancel()函數(shù)主要內(nèi)容:

    void MainWindow::searchOrCancel()

    {

    m_stopped = true;

    if (QThreadPool::globalInstance()->activeThreadCount())

    QThreadPool::globalInstance()->waitForDone();

    if (m_searchOrCancelButton->text() == tr("&Cancel")) {

    updateUi();

    return;

    }

    QStringList sourceFiles = getFiles(m_directoryLineEdit->text());

    if (!sourceFiles.isEmpty()) {

    m_resultListWidget->clear();

    m_statusBar->clearMessage();

    searchFiles(sourceFiles);

    }

    }

    在這個槽函數(shù)的一開始設(shè)定stopped變量值為true,通知那些運行中的輔助線程都必須停止。然后,檢查是否還有輔助線程在Qt的全局線程序列中運行,如果有的話,那么就阻塞,直到所有的線程都停止。

    點擊Cancel按鈕會調(diào)用updateUi()方法把Cancel按鈕的文本改成Search并返回。

    點擊Search按鈕,就會使用getFiles()函數(shù)獲得搜索目錄所有文件的列表。如果列表為空,則通知用戶錯誤,并返回。如果列表不為空,清除搜索結(jié)果窗口中之前的搜索結(jié)果和狀態(tài)欄的搜索統(tǒng)計結(jié)果。

    4.3任務(wù)分配與線程調(diào)度設(shè)計

    文件搜索工具的具體搜索工作是在多個線程內(nèi)完成的,所以主線程在會把搜索任務(wù)合理的分配給多個線程。在此使用QtConcurrent::run()函數(shù)調(diào)用任務(wù)線程,它會在Qt全局線程池中的一個輔助線程中執(zhí)行該函數(shù)。

    在本應(yīng)用中使用searchFiles()函數(shù)把任務(wù)分配給多個線程,并使線程運行。該函數(shù)接受的形參是需要搜索的文件列表,函數(shù)的主要內(nèi)容:

    void MainWindow::searchFiles(const QStringList &sourceFiles)

    {

    m_stopped = false;

    updateUi();

    m_total = sourceFiles.count();

    m_done = 0;

    const QVector<int> sizes = chunkSizes(sourceFiles.count(),QThread::idealThreadCount());

    const QString &searchContent = m_contentLineEdit->text();

    int offset = 0;

    foreach (const int chunkSize, sizes) {

    QtConcurrent::run(searchFilesTask, this, &m_stopped,

    sourceFiles.mid(offset, chunkSize), searchContent);

    offset += chunkSize;

    }

    checkIfDone();

    }

    在函數(shù)的一開始把stopped變量為false,然后調(diào)用updateUi()函數(shù)更新界面的顯示。把done變量設(shè)置成0,因為還沒有匹配到任何文件。

    如果為每一個文件創(chuàng)建一個線程來執(zhí)行搜索任務(wù),即為每個必須要檢索的文件通過函數(shù)和文件名調(diào)用QtConcurrent::run()一次,這樣會建立和列表中文件數(shù)目一樣多的輔助線程。對于一些非常大的文件,這樣的方法或許奏效,但對于非常多卻不知大小的文件來說,建立如此多的線程所付出的代價會與任務(wù)分散給輔助線程處理所得到的潛在收益不成比例。

    所以在此使用QThread::idealThreadCount()函數(shù)獲取計算程序運行所在平臺上支持的輔助線程的最佳數(shù)目,并把任務(wù)進行劃分,使得每個輔助線程都能得到一個合理的任務(wù)數(shù)量。

    chunkSize()函數(shù)會完成此工作,它會對容器進行劃分,該函數(shù)會根據(jù)容器中給定的文件數(shù)量和期望的文件塊數(shù)(這里是輔助線程的數(shù)目),返回一個劃分的塊大小矢量。chunkSize()函數(shù)的內(nèi)容:

    QVector<int> MainWindow::chunkSizes(int size, int chunkCount)

    {

    if (chunkCount == 1) return QVector<int>() << size;

    QVector<int> result(chunkCount, size / chunkCount);

    if (int remainder = size % chunkCount) {

    int index = 0;

    for (int i = 0; i < remainder; ++i) {

    ++result[index];

    ++index;

    index %= chunkCount;

    }

    }

    return result;

    }

    接下來使用一個循環(huán)來遍歷得到的任務(wù)劃分矢量,并使用QtConcurrent::run()函數(shù)啟動輔助線程。一旦所有的輔助線程得到啟動,就會調(diào)用checkIfDone()槽函數(shù),這個槽函數(shù)會以輪詢的方式確定搜索是否完成。

    4.4搜索任務(wù)線程設(shè)計

    搜索匹配函數(shù)searchFilesTask()會被任務(wù)分配函數(shù)調(diào)用一次或多次,它們在一個或多個輔助線程中運行,每個任務(wù)線程都有一個唯一的需要處理文件的列表,并對列表中的文件進行搜索處理。在搜索任務(wù)線程中,每次搜索匹配文件內(nèi)容之前,都會檢測stopped布爾值來獲取用戶是否已經(jīng)取消了操作,如果已經(jīng)取消,函數(shù)就返回,它正在執(zhí)行的線程也會轉(zhuǎn)變成非激活態(tài),如果沒有取消,則繼續(xù)運行。searchFilesTask()函數(shù)的主要內(nèi)容:

    void searchFilesTask(QObject *receiver, volatile bool *stopped,

    const QStringList &sourceFiles, const QString &searchContent)

    {

    foreach (const QString &source, sourceFiles) {

    if (*stopped) return;

    QFile file(source);

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) continue;

    if(file.readAll().contains(searchContent.toLocal8Bit().data())) {

    QApplication::postEvent(receiver, new ProgressEvent(hit, source));

    }

    }

    }

    文件搜索過程非常簡單:對于列表中的每個文件,讀取文件中的內(nèi)容,搜索是否含有搜索的關(guān)鍵字,如果沒有,進行列表中下一個文件的搜索;如果有,則使用一個自定義事件,把文件路徑傳遞給主窗口對象。QApplication::postEvent()函數(shù)進行這個自定義事件的傳遞。

    實際上,有兩種方法可用于事件的發(fā)送:QApplication::sendEvent()和QApplication::postEvent()。sendEvent()函數(shù)會立即發(fā)送事件。同時,sendEvent()不會刪除事件,因此,實際應(yīng)用中會在棧(stack)上創(chuàng)建sendEvent()事件。postEvent()函數(shù)會向接收者的事件序列中添加事件,該事件應(yīng)當(dāng)使用new創(chuàng)建在堆(heap)上,以便可以讓它作為接收者事件序列循環(huán)處理過程中的一部分而得到處理,postEvent()函數(shù)會獲取這個事件的所有權(quán),它會析構(gòu)并刪除此事件,它與Qt的事件處理配合得非常好。

    Qt完美地處理了事件從一個線程切換到另外一個線程的情況。使用自定義事件,如下是自定義事件類ProcessEvent的內(nèi)容:

    struct ProgressEvent : public QEvent

    {

    explicit ProgressEvent(bool hit_, const QString &fileName_)

    : QEvent(static_cast<Type>(QEvent::User)), hit(hit_), fileName(fileName_) {}

    const bool hit;

    const QString fileName;

    };

    在此給予每一個自定義事件一個唯一的ID(QEvent::User),ID的類型為QEvent::Type,這樣做就可以避免事件之間的相互混淆。我們把事件定義成struct,并從基類QEvent派生,并將布爾型的hit標志和fileName文本設(shè)置成可公開訪問,便于在界面類MainWindow中訪問。

    在界面類MainWindow中重新實現(xiàn)了QWidget::event(),使其能夠探測并處理自定義事件。界面類MainWindow中重新實現(xiàn)的QWidget::event()的內(nèi)容:

    bool MainWindow::event(QEvent *event)

    {

    if (!m_stopped && event->type() == static_cast<QEvent::Type>(QEvent::User)) {

    ProgressEvent *progressEvent = static_cast<ProgressEvent*>(event);

    if (progressEvent->hit) {

    m_resultListWidget->addItem(progressEvent->fileName);

    ++m_done;

    }

    return true;

    }

    return QMainWindow::event(event);

    }

    此外,如果數(shù)據(jù)處理正在進行,獲取自定義的ProgressEvent,會把事件的信息文本(匹配到的文件路徑)添加到搜索結(jié)果窗口中,并增加匹配到的文件數(shù)量。程序還會返回一個true來表明事件已經(jīng)得到了處理, Qt將會刪除該事件,而不是繼續(xù)尋找另一個能夠處理該事件的處理器。但是,如果搜索過程已經(jīng)停止,對于任何的其他事件,都把任務(wù)傳遞給基類的事件處理器。

    5結(jié)束語

    本文通過使用Qt應(yīng)用框架實現(xiàn)了文件搜索工具,支持對文件內(nèi)容的搜索,并支持多線程搜索。可為類似的圖形界面、多線程復(fù)雜計算任務(wù)軟件的開發(fā)工作提供參考。

    本文還使用Qt框架的自定義事件系統(tǒng)代替?zhèn)鹘y(tǒng)的信號與槽實現(xiàn)輔助線程與主線程間通信應(yīng)用進行了嘗試研究工作。并對兩種事件的發(fā)送方式(QApplication::sendEvent()和QApplication::postEvent())進行了研究。

    參考文獻

    [1] Mark Summerfiled. Advanced Qt Programming[M]. Prentice Hall, 2010-7.

    [2] Jasmin Blanchette, Mark Summerfield. C++ GUI Programming with Qt4[M]. Prentice Hall, 2008-2.

    猜你喜歡
    多線程
    Java多線程同步機制在網(wǎng)絡(luò)售票系統(tǒng)中的應(yīng)用
    科技資訊(2016年29期)2017-02-28 09:30:34
    Java并發(fā)工具包對并發(fā)編程的優(yōu)化
    基于多線程文件傳輸關(guān)鍵技術(shù)研究與實現(xiàn)
    網(wǎng)頁爬蟲技術(shù)的關(guān)鍵技術(shù)研究探索
    一種基于多線程的高速磁盤鏡像算法
    iOS并發(fā)程序設(shè)計中幾種方法的特點及使用技巧研究
    HTM L5 Web WOrker技術(shù)及應(yīng)用研究
    電站鍋爐煤粉參數(shù)遠程監(jiān)控系統(tǒng)的軟件設(shè)計與實現(xiàn)
    一種高并發(fā)認證服務(wù)器的實現(xiàn)
    一種低開銷的并行重復(fù)數(shù)據(jù)刪除算法
    亚洲欧洲精品一区二区精品久久久| 久久久久久久久久久久大奶| 亚洲欧美激情综合另类| 成人欧美大片| 国产午夜福利久久久久久| 日本五十路高清| 亚洲成人国产一区在线观看| 电影成人av| 国产成人欧美在线观看| 亚洲一区二区三区不卡视频| 亚洲自拍偷在线| 长腿黑丝高跟| 高清毛片免费观看视频网站| 国产精品永久免费网站| 在线十欧美十亚洲十日本专区| 大型黄色视频在线免费观看| 亚洲av成人av| 在线观看免费日韩欧美大片| 级片在线观看| 亚洲 欧美 日韩 在线 免费| 亚洲成人国产一区在线观看| 黄片大片在线免费观看| 久久人人爽av亚洲精品天堂| 欧美亚洲日本最大视频资源| 18禁国产床啪视频网站| 欧美成狂野欧美在线观看| 久久久久精品国产欧美久久久| www日本在线高清视频| 国产精品影院久久| 91av网站免费观看| 色综合欧美亚洲国产小说| 咕卡用的链子| 亚洲国产精品sss在线观看| or卡值多少钱| aaaaa片日本免费| 久久 成人 亚洲| 国产一区二区三区视频了| 国产私拍福利视频在线观看| 香蕉国产在线看| 久久午夜综合久久蜜桃| 欧美亚洲日本最大视频资源| 亚洲av日韩精品久久久久久密| 久久香蕉激情| 亚洲av成人一区二区三| 精品久久久久久,| 精品国产乱码久久久久久男人| 久久这里只有精品19| 亚洲精品av麻豆狂野| 久久久久久免费高清国产稀缺| 一进一出好大好爽视频| tocl精华| 精品久久久久久久人妻蜜臀av | 精品国产一区二区三区四区第35| cao死你这个sao货| av天堂久久9| 国产精品亚洲一级av第二区| 十八禁网站免费在线| 成人手机av| 国产成人av激情在线播放| 亚洲 欧美 日韩 在线 免费| www.999成人在线观看| 成年人黄色毛片网站| 午夜免费鲁丝| 99国产极品粉嫩在线观看| 国产精品爽爽va在线观看网站 | 校园春色视频在线观看| 麻豆成人av在线观看| 国产精品久久久久久精品电影 | 正在播放国产对白刺激| 老汉色∧v一级毛片| 国产精品一区二区三区四区久久 | 夜夜夜夜夜久久久久| 韩国av一区二区三区四区| 国产精品影院久久| 色播亚洲综合网| 亚洲国产中文字幕在线视频| 999久久久精品免费观看国产| 国产精品二区激情视频| 久久这里只有精品19| 咕卡用的链子| 久久婷婷人人爽人人干人人爱 | 国产欧美日韩一区二区三区在线| 成在线人永久免费视频| 多毛熟女@视频| 少妇 在线观看| 宅男免费午夜| 热99re8久久精品国产| 亚洲国产欧美网| 国产av在哪里看| 丝袜美腿诱惑在线| 国产精品 欧美亚洲| 侵犯人妻中文字幕一二三四区| 色综合亚洲欧美另类图片| 丝袜人妻中文字幕| 精品一区二区三区av网在线观看| 亚洲 国产 在线| 国产精品爽爽va在线观看网站 | 天堂影院成人在线观看| 中文亚洲av片在线观看爽| 国产精品免费一区二区三区在线| 黄色片一级片一级黄色片| 国产成人精品久久二区二区免费| 久久狼人影院| 99riav亚洲国产免费| 黑人欧美特级aaaaaa片| 国产精品影院久久| av网站免费在线观看视频| 在线播放国产精品三级| 亚洲 国产 在线| 久久中文字幕一级| 伦理电影免费视频| 亚洲精品中文字幕在线视频| 在线天堂中文资源库| 免费在线观看亚洲国产| 国产视频一区二区在线看| 黄片小视频在线播放| 亚洲色图 男人天堂 中文字幕| 成人欧美大片| 一a级毛片在线观看| 电影成人av| 级片在线观看| av中文乱码字幕在线| 免费观看人在逋| 精品午夜福利视频在线观看一区| 侵犯人妻中文字幕一二三四区| 国产精品二区激情视频| 久久久久国产一级毛片高清牌| 欧美激情久久久久久爽电影 | 欧美最黄视频在线播放免费| 神马国产精品三级电影在线观看 | 乱人伦中国视频| 久久天堂一区二区三区四区| 日韩欧美免费精品| 91国产中文字幕| 欧洲精品卡2卡3卡4卡5卡区| 男男h啪啪无遮挡| 少妇 在线观看| 丁香欧美五月| 国产精品自产拍在线观看55亚洲| 午夜福利视频1000在线观看 | 涩涩av久久男人的天堂| 中文字幕人妻丝袜一区二区| 国产精品久久视频播放| 可以免费在线观看a视频的电影网站| 啦啦啦韩国在线观看视频| 手机成人av网站| 久久天堂一区二区三区四区| 十分钟在线观看高清视频www| 一边摸一边抽搐一进一出视频| 少妇被粗大的猛进出69影院| 久久香蕉激情| 欧美 亚洲 国产 日韩一| 两个人免费观看高清视频| 两性夫妻黄色片| 久久国产亚洲av麻豆专区| 亚洲美女黄片视频| 日韩大码丰满熟妇| 91在线观看av| 男女做爰动态图高潮gif福利片 | 亚洲av电影不卡..在线观看| 国内久久婷婷六月综合欲色啪| 色播在线永久视频| 精品不卡国产一区二区三区| 中文字幕人成人乱码亚洲影| 琪琪午夜伦伦电影理论片6080| 成人手机av| 高清在线国产一区| 亚洲午夜精品一区,二区,三区| 99国产极品粉嫩在线观看| 国产精品日韩av在线免费观看 | 成人特级黄色片久久久久久久| av视频免费观看在线观看| 男女下面插进去视频免费观看| 亚洲欧美精品综合久久99| 国产成+人综合+亚洲专区| 日本五十路高清| 一二三四社区在线视频社区8| 午夜福利视频1000在线观看 | 久久亚洲真实| 99久久99久久久精品蜜桃| av欧美777| tocl精华| 精品福利观看| 成在线人永久免费视频| 亚洲欧美日韩高清在线视频| 国产精品久久久av美女十八| 一级作爱视频免费观看| 老司机在亚洲福利影院| 欧美日韩中文字幕国产精品一区二区三区 | 精品熟女少妇八av免费久了| 又黄又爽又免费观看的视频| 午夜福利免费观看在线| 欧美大码av| 99国产极品粉嫩在线观看| 午夜福利在线观看吧| 丁香六月欧美| 黄片小视频在线播放| 黄色片一级片一级黄色片| 亚洲色图av天堂| 老汉色av国产亚洲站长工具| 亚洲欧美激情综合另类| 999精品在线视频| 日韩欧美免费精品| 免费一级毛片在线播放高清视频 | 国产成人av激情在线播放| 亚洲自拍偷在线| 国产亚洲av嫩草精品影院| 成人永久免费在线观看视频| 免费高清视频大片| 国内久久婷婷六月综合欲色啪| 欧美+亚洲+日韩+国产| 色精品久久人妻99蜜桃| 法律面前人人平等表现在哪些方面| 不卡av一区二区三区| 国产成人系列免费观看| 18禁黄网站禁片午夜丰满| 777久久人妻少妇嫩草av网站| 亚洲精品国产精品久久久不卡| 色综合欧美亚洲国产小说| 一区二区三区高清视频在线| 麻豆av在线久日| 在线国产一区二区在线| 天堂动漫精品| www.熟女人妻精品国产| 美女大奶头视频| 男人操女人黄网站| 亚洲欧美日韩另类电影网站| 久久精品国产亚洲av高清一级| 国内精品久久久久精免费| 免费少妇av软件| 99精品久久久久人妻精品| 成年版毛片免费区| 久久人妻福利社区极品人妻图片| 真人做人爱边吃奶动态| 久久久久久久久中文| 成人av一区二区三区在线看| 久久久久国内视频| 国产亚洲精品av在线| 岛国视频午夜一区免费看| 最新在线观看一区二区三区| 18禁观看日本| 一边摸一边抽搐一进一小说| 亚洲午夜精品一区,二区,三区| 成人免费观看视频高清| 日韩大尺度精品在线看网址 | 黄色丝袜av网址大全| 神马国产精品三级电影在线观看 | 国产成人精品久久二区二区91| 窝窝影院91人妻| 精品一品国产午夜福利视频| 国产成人av教育| 国产亚洲精品久久久久久毛片| 久久人妻福利社区极品人妻图片| 亚洲中文日韩欧美视频| 99国产精品免费福利视频| 亚洲男人的天堂狠狠| www.自偷自拍.com| 午夜精品久久久久久毛片777| 手机成人av网站| 亚洲狠狠婷婷综合久久图片| 日日摸夜夜添夜夜添小说| 亚洲视频免费观看视频| 亚洲国产中文字幕在线视频| 国产又爽黄色视频| av片东京热男人的天堂| 妹子高潮喷水视频| 久久天躁狠狠躁夜夜2o2o| 人妻丰满熟妇av一区二区三区| 色婷婷久久久亚洲欧美| 亚洲视频免费观看视频| 欧美另类亚洲清纯唯美| 亚洲 国产 在线| 久久久久九九精品影院| 欧美日韩精品网址| 亚洲av熟女| 男男h啪啪无遮挡| 亚洲av美国av| 法律面前人人平等表现在哪些方面| 国产男靠女视频免费网站| 男人操女人黄网站| 精品一区二区三区视频在线观看免费| 这个男人来自地球电影免费观看| 九色亚洲精品在线播放| 18禁美女被吸乳视频| 一区二区三区国产精品乱码| 啦啦啦 在线观看视频| 国产精品一区二区在线不卡| 久久精品国产亚洲av香蕉五月| 日韩一卡2卡3卡4卡2021年| 欧美亚洲日本最大视频资源| 青草久久国产| 亚洲欧美激情在线| www.www免费av| 欧美精品啪啪一区二区三区| 18禁美女被吸乳视频| 丝袜美足系列| 90打野战视频偷拍视频| 波多野结衣巨乳人妻| 88av欧美| 久久国产精品人妻蜜桃| 午夜免费观看网址| 中文字幕最新亚洲高清| 91麻豆精品激情在线观看国产| 精品日产1卡2卡| 欧美日本亚洲视频在线播放| 亚洲成a人片在线一区二区| 老熟妇仑乱视频hdxx| 一本久久中文字幕| 老熟妇仑乱视频hdxx| 日本 欧美在线| 欧美精品啪啪一区二区三区| 两个人视频免费观看高清| 女人爽到高潮嗷嗷叫在线视频| 久久久水蜜桃国产精品网| 级片在线观看| 宅男免费午夜| 亚洲第一电影网av| 他把我摸到了高潮在线观看| 亚洲欧洲精品一区二区精品久久久| 国产又色又爽无遮挡免费看| 91麻豆av在线| 一a级毛片在线观看| 性欧美人与动物交配| 黑人巨大精品欧美一区二区蜜桃| 美女 人体艺术 gogo| 999精品在线视频| 一区二区三区精品91| 亚洲欧美精品综合一区二区三区| 色精品久久人妻99蜜桃| 麻豆成人av在线观看| 色播亚洲综合网| 亚洲最大成人中文| 制服丝袜大香蕉在线| netflix在线观看网站| 国产精品九九99| 一级毛片女人18水好多| 亚洲精品粉嫩美女一区| 看片在线看免费视频| 99在线人妻在线中文字幕| 黑人欧美特级aaaaaa片| 一二三四社区在线视频社区8| 久久热在线av| 91麻豆精品激情在线观看国产| 国产精品 欧美亚洲| 精品一品国产午夜福利视频| 国内久久婷婷六月综合欲色啪| 日韩精品免费视频一区二区三区| 色av中文字幕| 久热这里只有精品99| 法律面前人人平等表现在哪些方面| 巨乳人妻的诱惑在线观看| 久久久国产成人精品二区| 日本五十路高清| 老司机午夜十八禁免费视频| av天堂在线播放| bbb黄色大片| 精品电影一区二区在线| 国产麻豆成人av免费视频| 老司机靠b影院| 久久九九热精品免费| 欧美成人午夜精品| 亚洲五月婷婷丁香| 岛国视频午夜一区免费看| 色综合欧美亚洲国产小说| 国产精品久久久av美女十八| 女人被狂操c到高潮| 国产野战对白在线观看| 中出人妻视频一区二区| 美女免费视频网站| 亚洲avbb在线观看| 国产精品久久久久久精品电影 | 国产精品99久久99久久久不卡| 亚洲黑人精品在线| 麻豆成人av在线观看| 欧美成人一区二区免费高清观看 | av福利片在线| 波多野结衣高清无吗| bbb黄色大片| www.自偷自拍.com| 成人国语在线视频| 男人舔女人下体高潮全视频| 欧美国产日韩亚洲一区| 久久精品国产清高在天天线| 人人澡人人妻人| 亚洲熟妇中文字幕五十中出| 看片在线看免费视频| 久久精品人人爽人人爽视色| 久久久久久久久中文| 久久久精品欧美日韩精品| 国产熟女xx| 91av网站免费观看| 曰老女人黄片| 十八禁人妻一区二区| 在线观看免费视频日本深夜| 男人的好看免费观看在线视频 | 日韩精品中文字幕看吧| 色精品久久人妻99蜜桃| 精品国产超薄肉色丝袜足j| 制服诱惑二区| 黑人巨大精品欧美一区二区蜜桃| 欧美中文日本在线观看视频| 在线观看一区二区三区| 亚洲精品国产色婷婷电影| 在线永久观看黄色视频| 亚洲欧美日韩高清在线视频| 午夜福利免费观看在线| 中文字幕精品免费在线观看视频| av网站免费在线观看视频| 变态另类成人亚洲欧美熟女 | 精品人妻1区二区| 老司机午夜十八禁免费视频| 久久国产精品男人的天堂亚洲| 欧美另类亚洲清纯唯美| 欧美老熟妇乱子伦牲交| 亚洲精品av麻豆狂野| 一个人免费在线观看的高清视频| 欧美性长视频在线观看| 18美女黄网站色大片免费观看| 亚洲欧美激情在线| av福利片在线| 村上凉子中文字幕在线| 美女扒开内裤让男人捅视频| 午夜福利,免费看| 我的亚洲天堂| 国产一区二区三区在线臀色熟女| 色婷婷久久久亚洲欧美| 日韩大码丰满熟妇| 午夜精品国产一区二区电影| 日韩一卡2卡3卡4卡2021年| 亚洲国产精品sss在线观看| 美女扒开内裤让男人捅视频| 国产精品免费一区二区三区在线| 久久青草综合色| videosex国产| 色婷婷久久久亚洲欧美| 高清毛片免费观看视频网站| 大型黄色视频在线免费观看| 久久草成人影院| 国产av一区二区精品久久| 欧美国产日韩亚洲一区| 亚洲熟妇熟女久久| 亚洲专区字幕在线| 精品国产乱码久久久久久男人| 女性被躁到高潮视频| 亚洲五月天丁香| 动漫黄色视频在线观看| 三级毛片av免费| 亚洲国产精品sss在线观看| 午夜成年电影在线免费观看| 99国产精品免费福利视频| 亚洲中文日韩欧美视频| 嫁个100分男人电影在线观看| 久久香蕉精品热| 国产熟女午夜一区二区三区| 涩涩av久久男人的天堂| 色尼玛亚洲综合影院| 国产精品一区二区三区四区久久 | 国产精品国产高清国产av| 一边摸一边抽搐一进一小说| 国产欧美日韩一区二区三区在线| 国产精品亚洲av一区麻豆| 欧美黑人精品巨大| 一级毛片女人18水好多| 日韩欧美免费精品| 国产亚洲av高清不卡| 久久久国产成人免费| 男女午夜视频在线观看| 国内久久婷婷六月综合欲色啪| 亚洲精品美女久久久久99蜜臀| 亚洲午夜理论影院| 久久久久久久久久久久大奶| 免费在线观看影片大全网站| 桃色一区二区三区在线观看| 国产免费av片在线观看野外av| 啦啦啦观看免费观看视频高清 | 久久国产精品影院| 在线观看日韩欧美| 在线视频色国产色| 久久热在线av| 黄色视频,在线免费观看| 岛国在线观看网站| 亚洲成av人片免费观看| av中文乱码字幕在线| 午夜久久久在线观看| 中文字幕人妻丝袜一区二区| 美国免费a级毛片| 一级,二级,三级黄色视频| 黄色 视频免费看| 国产区一区二久久| 91麻豆精品激情在线观看国产| 免费一级毛片在线播放高清视频 | 九色亚洲精品在线播放| 欧美日韩福利视频一区二区| 国产在线观看jvid| 黄色a级毛片大全视频| 俄罗斯特黄特色一大片| 精品不卡国产一区二区三区| 后天国语完整版免费观看| 国产亚洲精品第一综合不卡| 亚洲欧洲精品一区二区精品久久久| 美女高潮到喷水免费观看| 久久精品亚洲精品国产色婷小说| 99riav亚洲国产免费| 韩国精品一区二区三区| www国产在线视频色| 精品人妻在线不人妻| 日日爽夜夜爽网站| 国产伦人伦偷精品视频| 国产精品98久久久久久宅男小说| 别揉我奶头~嗯~啊~动态视频| 日韩成人在线观看一区二区三区| 久久午夜综合久久蜜桃| 大陆偷拍与自拍| 九色亚洲精品在线播放| 国产国语露脸激情在线看| 国产精品香港三级国产av潘金莲| 女人精品久久久久毛片| 国产免费av片在线观看野外av| 黄色毛片三级朝国网站| 亚洲黑人精品在线| 日本免费一区二区三区高清不卡 | 久久婷婷人人爽人人干人人爱 | av视频在线观看入口| 精品不卡国产一区二区三区| 老司机午夜十八禁免费视频| 欧美午夜高清在线| 色播在线永久视频| www.www免费av| 日本五十路高清| 欧美日韩亚洲国产一区二区在线观看| 久久久水蜜桃国产精品网| 在线十欧美十亚洲十日本专区| tocl精华| 亚洲国产看品久久| 窝窝影院91人妻| 免费人成视频x8x8入口观看| 天天躁夜夜躁狠狠躁躁| 日本在线视频免费播放| 欧美日韩中文字幕国产精品一区二区三区 | 女人爽到高潮嗷嗷叫在线视频| 制服丝袜大香蕉在线| 欧美激情久久久久久爽电影 | 国产亚洲精品久久久久久毛片| 波多野结衣一区麻豆| 欧美+亚洲+日韩+国产| 亚洲成国产人片在线观看| 国产在线观看jvid| 一卡2卡三卡四卡精品乱码亚洲| 91成人精品电影| www国产在线视频色| 国产真人三级小视频在线观看| 国产成人啪精品午夜网站| 在线永久观看黄色视频| 久久久久久久久免费视频了| 欧美日本中文国产一区发布| 一区二区三区国产精品乱码| 欧美日韩亚洲综合一区二区三区_| 在线国产一区二区在线| 18禁美女被吸乳视频| 老司机在亚洲福利影院| 久久久久九九精品影院| 丝袜在线中文字幕| 无人区码免费观看不卡| 久久国产乱子伦精品免费另类| 精品欧美一区二区三区在线| 在线观看免费视频网站a站| 国产高清videossex| 日韩欧美三级三区| 日韩大尺度精品在线看网址 | 久久国产亚洲av麻豆专区| 黑丝袜美女国产一区| 亚洲最大成人中文| 午夜福利在线观看吧| 身体一侧抽搐| bbb黄色大片| 涩涩av久久男人的天堂| 色av中文字幕| 午夜免费观看网址| 高潮久久久久久久久久久不卡| 亚洲无线在线观看| 久久精品亚洲熟妇少妇任你| 亚洲国产欧美一区二区综合| 国产99白浆流出| 国产麻豆69| 国产成人系列免费观看| 亚洲精品国产色婷婷电影| 国产一区二区在线av高清观看| 黑人操中国人逼视频| 69av精品久久久久久| 亚洲电影在线观看av| 国产麻豆成人av免费视频| 国产又爽黄色视频| 久久人妻av系列| 女性生殖器流出的白浆| 日韩国内少妇激情av| 久久精品成人免费网站| 国产高清视频在线播放一区| www国产在线视频色| 一进一出好大好爽视频| 国产精品野战在线观看| 精品免费久久久久久久清纯| 黑人巨大精品欧美一区二区mp4| 99在线视频只有这里精品首页| 91成人精品电影| 午夜久久久久精精品| 久久精品人人爽人人爽视色| 色老头精品视频在线观看| 窝窝影院91人妻| 黄色视频,在线免费观看| 免费无遮挡裸体视频| 久久九九热精品免费| 日本五十路高清| www.熟女人妻精品国产| av有码第一页| 岛国在线观看网站|