亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Spark的電影推薦系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2023-06-10 06:42:26蔡春花
        軟件工程 2023年6期
        關(guān)鍵詞:離線日志矩陣

        劉 念, 蔡春花

        (黃河交通學(xué)院, 河南 焦作 454000)

        1 引言(Introduction)

        20世紀(jì)90年代以來(lái),個(gè)性化推薦系統(tǒng)受到了全球各大在線平臺(tái)的關(guān)注和研究。與此同時(shí),逐漸出現(xiàn)了各種不同的推薦系統(tǒng)及推薦算法。2014年,RAMEZANI等[1]提出了一種基于用戶興趣模式,尋找鄰居用戶的方法,該方法改善了傳統(tǒng)推薦算法在稀疏性和計(jì)算上的問(wèn)題。2019年,KIM等[2]為降低評(píng)分相關(guān)數(shù)據(jù)的稀疏現(xiàn)象提出了基于免疫網(wǎng)絡(luò)的推薦算法,該算法采用收縮評(píng)分矩陣的方法,在降低數(shù)據(jù)稀疏性方面的效果顯著。

        隨著互聯(lián)網(wǎng)時(shí)代的推進(jìn),用戶對(duì)推薦系統(tǒng)的需求呈現(xiàn)多樣化的趨勢(shì),只有單一推薦算法的推薦系統(tǒng)在推薦質(zhì)量和計(jì)算效率上已經(jīng)無(wú)法滿足時(shí)代的需求。國(guó)內(nèi)學(xué)者對(duì)推薦系統(tǒng)的研究從未停止,宋文君等[3]提出的改進(jìn)混合推薦算法,應(yīng)用在Netflix數(shù)據(jù)集上的推薦結(jié)果準(zhǔn)確性平均提高了4.22%,而且降低了大規(guī)模數(shù)據(jù)所引發(fā)的計(jì)算復(fù)雜度。王全民等[4]提出的綜合推薦法,是利用人口統(tǒng)計(jì)資料與評(píng)分資料求得系統(tǒng)內(nèi)物品的相似性;綜合推薦算法表現(xiàn)出較好的推薦質(zhì)量。

        觀看電影已經(jīng)成為一種重要的娛樂(lè)方式,人們?cè)陂e暇時(shí)間會(huì)在視頻軟件中搜索熱播的影視節(jié)目。由于現(xiàn)有的視頻軟件電影分類不夠健全,因此有必要設(shè)計(jì)了一個(gè)根據(jù)用戶偏好和通過(guò)簡(jiǎn)單操作就能獲得電影推薦的系統(tǒng)?;诖?本文設(shè)計(jì)一個(gè)基于Spark[5]的電影推薦系統(tǒng),該系統(tǒng)根據(jù)用戶推薦需求,采用基于模型和內(nèi)容的推薦算法,使用MongoDB業(yè)務(wù)數(shù)據(jù)庫(kù)、Redis緩存數(shù)據(jù)庫(kù),以及Flume、Kafka、Spring等工具,實(shí)現(xiàn)電影推薦功能。

        2 系統(tǒng)設(shè)計(jì)(System design)

        2.1 總體架構(gòu)設(shè)計(jì)

        本節(jié)主要介紹系統(tǒng)的總體架構(gòu),本設(shè)計(jì)采用大數(shù)據(jù)框架中最流行的Spark分布式計(jì)算引擎,結(jié)合MongoDB數(shù)據(jù)庫(kù)、Flume、Kafka及Spring等工具搭建一個(gè)支持處理海量數(shù)據(jù)的離線和實(shí)時(shí)的電影推薦系統(tǒng)。系統(tǒng)總體架構(gòu)設(shè)計(jì)如圖1所示。

        圖1 系統(tǒng)架構(gòu)圖Fig.1 System architecture diagram

        該推薦系統(tǒng)是基于Web開發(fā)的B/S系統(tǒng),其業(yè)務(wù)邏輯架構(gòu)是由Web前端響應(yīng)后臺(tái)業(yè)務(wù)請(qǐng)求的Spring框架創(chuàng)建的,采用MongoDB管理業(yè)務(wù)數(shù)據(jù)庫(kù);采用Elastic Search作為檢索服務(wù)器實(shí)現(xiàn)匹配查詢操作;采用Redis作為緩存數(shù)據(jù)庫(kù)實(shí)現(xiàn)實(shí)時(shí)推薦模塊里對(duì)數(shù)據(jù)的提取。系統(tǒng)基于Spark平臺(tái),運(yùn)用到了Spark部分生態(tài)組件。采用Flume進(jìn)行日志收集業(yè)務(wù)以及Kafka進(jìn)行消息緩沖操作,使用Spark Streaming將Kafka處理后的實(shí)時(shí)數(shù)據(jù)合并更新到MongoDB數(shù)據(jù)庫(kù)。

        如圖1所示,系統(tǒng)的Web端綜合業(yè)務(wù)服務(wù)模塊包括用戶登錄、用戶注冊(cè)、電影評(píng)分、電影推薦和電影搜索功能,主要負(fù)責(zé)將后臺(tái)業(yè)務(wù)數(shù)據(jù),如圖片和文字等展現(xiàn)給用戶,為用戶展示推薦結(jié)果,實(shí)現(xiàn)用戶與系統(tǒng)的交互。

        后臺(tái)的業(yè)務(wù)除了響應(yīng)前端的數(shù)據(jù)處理,還應(yīng)把數(shù)據(jù)寫入對(duì)應(yīng)的數(shù)據(jù)庫(kù)。系統(tǒng)使用的核心業(yè)務(wù)數(shù)據(jù)庫(kù)是MongoDB,原始數(shù)據(jù)全部存在MongoDB中,然后從里面讀數(shù)據(jù),讀完數(shù)據(jù)做分析計(jì)算,計(jì)算后得到的推薦結(jié)果也寫入MongoDB。系統(tǒng)采用Elastic Search的匹配查詢功能和Redis緩存數(shù)據(jù)庫(kù)存放用戶最近的幾次電影評(píng)分,可使系統(tǒng)在實(shí)時(shí)推薦時(shí)快速獲取所需數(shù)據(jù)。

        數(shù)據(jù)采集使用Flume技術(shù),將用戶在商業(yè)平臺(tái)上對(duì)某一影片的評(píng)分行為及其數(shù)據(jù)進(jìn)行收集,并將其實(shí)時(shí)傳輸至Kafka集群。本系統(tǒng)使用Kafka作為流數(shù)據(jù)緩存部件,用于接收Flume的數(shù)據(jù)收集,并把資料傳送至實(shí)時(shí)推薦系統(tǒng)。使用Redis作為緩存數(shù)據(jù)庫(kù)的目的是為了支持實(shí)時(shí)推薦系統(tǒng)中的數(shù)據(jù)快速采集。

        離線推薦模塊,首先進(jìn)行離線的統(tǒng)計(jì)推薦服務(wù),由于需要加載的數(shù)據(jù)量較大,Spark SQL會(huì)對(duì)所獲得的數(shù)據(jù)進(jìn)行一系列的數(shù)據(jù)預(yù)處理,與MongoDB和Elastic Search有對(duì)應(yīng)的連接方式,只需把定義好的數(shù)據(jù)直接寫入,保存在數(shù)據(jù)庫(kù)中供系統(tǒng)調(diào)用,這就是數(shù)據(jù)加載的過(guò)程。寫入數(shù)據(jù)后做離線統(tǒng)計(jì)服務(wù),這部分涉及四個(gè)常見的統(tǒng)計(jì)量,包括歷史熱門電影、近期熱門電影、電影平均評(píng)分和各類別優(yōu)質(zhì)電影,這部分的數(shù)據(jù)從MongoDB讀取并做處理,對(duì)應(yīng)生成各自的推薦列表,最后寫回MongoDB,由于統(tǒng)計(jì)推薦為用戶推薦當(dāng)前主流電影和經(jīng)典電影,所有用戶看到的推薦列表都是一樣的,所以又叫做非個(gè)性化的離線統(tǒng)計(jì)推薦。然后進(jìn)行個(gè)性化的離線推薦服務(wù),這也是一個(gè)協(xié)同過(guò)濾的推薦,利用Spark MLlib庫(kù)的ALS(Alternating Least Squares,交替最小二乘)算法對(duì)用戶評(píng)分?jǐn)?shù)據(jù)通過(guò)隱語(yǔ)義模型做預(yù)測(cè)評(píng)分,然后通過(guò)預(yù)測(cè)評(píng)分求電影之間的相似度,得到的結(jié)果是用戶推薦列表,最后把結(jié)果寫回業(yè)務(wù)數(shù)據(jù)庫(kù)。

        實(shí)時(shí)推薦模塊的流程為用戶在系統(tǒng)電影詳情頁(yè)面進(jìn)行電影評(píng)分,用戶請(qǐng)求發(fā)送至業(yè)務(wù)后臺(tái),電影數(shù)據(jù)先寫入MongoDB,使用Flume技術(shù)從綜合業(yè)務(wù)后臺(tái)日志環(huán)境里收集日志,然后推送到Kafka集群上做消息隊(duì)列的緩沖,待Kafka做完處理后,Spark Streaming從Kafka主題拉取MongoDB和Redis收集的用戶行為數(shù)據(jù),對(duì)預(yù)處理后得到評(píng)分?jǐn)?shù)據(jù)進(jìn)行實(shí)時(shí)推薦,結(jié)果寫回MongoDB。對(duì)應(yīng)的搜索服務(wù)要結(jié)合MongoDB和 Elastic Search檢索服務(wù)器,推薦結(jié)果的查詢需要從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),最后返回前臺(tái)。

        2.2 系統(tǒng)功能設(shè)計(jì)

        電影推薦系統(tǒng)的核心是針對(duì)不同的用戶進(jìn)行不同類型的電影推薦,那么相應(yīng)的系統(tǒng)功能需求也是圍繞著推薦業(yè)務(wù)服務(wù)展開,具體要具備的功能要求如圖2所示。

        圖2 用戶功能模塊框架圖Fig.2 Framework of user function module

        2.3 數(shù)據(jù)庫(kù)設(shè)計(jì)

        電影推薦系統(tǒng)使用了三種數(shù)據(jù)庫(kù),分別是MongoDB業(yè)務(wù)數(shù)據(jù)庫(kù)、Redis緩存數(shù)據(jù)庫(kù)和Elastic Search檢索服務(wù)器。其中,MongoDB是系統(tǒng)的核心數(shù)據(jù)庫(kù),數(shù)據(jù)源可以以文檔的形式存儲(chǔ)在MongoDB數(shù)據(jù)庫(kù)中,也可以自定義數(shù)據(jù)結(jié)構(gòu),適合海量數(shù)據(jù)存儲(chǔ),除了存儲(chǔ)數(shù)據(jù)源,還能存儲(chǔ)用戶信息表、各種推薦指標(biāo)的電影推薦列表和通過(guò)推薦算法得到的推薦矩陣列表,例如電影信息表(Movie)、電影評(píng)分表(Rating)和電影標(biāo)簽表(Tag)。電影信息表(表1)主要記錄每部電影的關(guān)鍵信息以及影響用戶選擇的多種因素,進(jìn)而為實(shí)現(xiàn)個(gè)性化推薦提供數(shù)據(jù)支持,同時(shí)可以完成統(tǒng)計(jì)類推薦。電影評(píng)分表(表2)用來(lái)記錄用戶在過(guò)去一段時(shí)間內(nèi)的評(píng)分行為信息、具體評(píng)分時(shí)間和行為內(nèi)容。該表的數(shù)據(jù)來(lái)源于日志數(shù)據(jù)。電影標(biāo)簽表(表3)用來(lái)記錄每個(gè)用戶關(guān)注的電影集合及其類別,數(shù)據(jù)源主要是為個(gè)性化的推薦服務(wù)提供支持。

        表 1 電影信息表Tab.1 Movie table

        表 2 電影評(píng)分表Tab.2 Rating table

        表 3 電影標(biāo)簽表Tab.3 Movie tag table

        Redis緩存數(shù)據(jù)庫(kù)用于存放用戶近期對(duì)影片的評(píng)分?jǐn)?shù)據(jù),作為支撐實(shí)時(shí)推薦算法的數(shù)據(jù)源,當(dāng)用戶對(duì)電影進(jìn)行評(píng)分時(shí),后臺(tái)服務(wù)記錄數(shù)據(jù)后,將數(shù)據(jù)推送至Redis緩存數(shù)據(jù)庫(kù)用于計(jì)算電影的預(yù)測(cè)評(píng)分。

        Elastic Search檢索服務(wù)器主要存放一些搜索業(yè)務(wù)需求產(chǎn)生的數(shù)據(jù),系統(tǒng)利用其強(qiáng)大的匹配查詢能力實(shí)現(xiàn)基于內(nèi)容的推薦服務(wù)。

        3 系統(tǒng)實(shí)現(xiàn)(System implementation)

        3.1 系統(tǒng)環(huán)境介紹

        本系統(tǒng)主要在Windows和Linux操作系統(tǒng)上運(yùn)行。系統(tǒng)的開發(fā)環(huán)境為CentOS7.0、JDK1.8版本、ZooKeeper分布式服務(wù)管理框架3.4版本、Flume日志采集工具1.7.0版本、Kafka分布式消息隊(duì)列2.11版本、MongoDB分布式文件存儲(chǔ)數(shù)據(jù)庫(kù)5.0.4版本、Key-Value數(shù)據(jù)庫(kù)Redis4.0.2版本、Elastic Search搜索服務(wù)器5.6.2版本。主要開發(fā)工具為IntelliJ IDEA,推薦系統(tǒng)模塊的開發(fā)語(yǔ)言主要為Java和Scala。物理機(jī)的硬件配置為16 GB內(nèi)存、500 GB硬盤,CPU為Intel Core i7-11800H。

        3.2 Spark集群搭建

        本系統(tǒng)基于Spark平臺(tái)對(duì)海量數(shù)據(jù)進(jìn)行存儲(chǔ)和分析,但受經(jīng)濟(jì)條件的約束,實(shí)際開發(fā)過(guò)程中只配置了一臺(tái)物理機(jī),所以采取Spark的偽分布式集群安裝模式,在一臺(tái)物理機(jī)上模擬多機(jī),通過(guò)虛擬機(jī)技術(shù)實(shí)現(xiàn)小規(guī)模的集群,其中Spark由4個(gè)虛擬節(jié)點(diǎn)組成(1個(gè)Master節(jié)點(diǎn)和3個(gè)Slave節(jié)點(diǎn))。以下為偽分布式Spark集群的搭建步驟。

        (1)首先在物理機(jī)上安裝VMware虛擬機(jī)軟件,然后在虛擬機(jī)中安裝CentOS操作系統(tǒng)的鏡像文件,在Linux系統(tǒng)中安裝JDK,配置其環(huán)境變量,主機(jī)名為hadoop102,重復(fù)上述步驟,在虛擬機(jī)中再次安裝、運(yùn)行2個(gè)CentOS系統(tǒng),主機(jī)名分別設(shè)置為hadoop103、hadoop104。

        (2)在集群中配置ssh,生成公鑰,實(shí)現(xiàn)3臺(tái)客戶機(jī)的相互免密碼登錄、修改對(duì)應(yīng)配置文件及加入集群節(jié)點(diǎn)的主機(jī)名。配置Spark運(yùn)行的IP地址、端口號(hào)、JDK位置和集群對(duì)應(yīng)的Master節(jié)點(diǎn)等信息。

        (3)以獨(dú)立部署模式Standalone為例,使用Spark自身節(jié)點(diǎn)運(yùn)行集群模式,執(zhí)行腳本命令sbin/start-all.sh,查看3臺(tái)服務(wù)器運(yùn)行進(jìn)程,可以看到1個(gè)Master節(jié)點(diǎn)和3個(gè)Slave節(jié)點(diǎn)均正常運(yùn)行。Spark運(yùn)行圖如圖3所示。

        圖3 Spark運(yùn)行圖Fig.3 Spark operation diagram

        3.3 數(shù)據(jù)采集模塊

        電影推薦系統(tǒng)采用Fulme作為實(shí)時(shí)日志數(shù)據(jù)采集引擎,該引擎包括三個(gè)組件,即Source、Channel和Sink,Source是指數(shù)據(jù)的來(lái)源和方式,Channel是一個(gè)數(shù)據(jù)的緩沖池,Sink定義了數(shù)據(jù)輸出的方式和目的地[6]。使用Flume將日志數(shù)據(jù)更新到Kafka隊(duì)列,實(shí)現(xiàn)流式的日志處理,使用Spark Streaming流式實(shí)時(shí)處理技術(shù),從而完成日志實(shí)時(shí)解析的目標(biāo)。Flume組件結(jié)構(gòu)如圖4所示。

        圖4 Flume組件Fig.4 Flume component

        Kafka配置如下:

        ∥輸入和輸出的topic

        string from = ″log″ ;

        String to = ″recommender ″;

        ∥定義Kafka Streaming的配置

        Properties settings = new Properties();

        settings.put(StreamsConfig.APPLICATION_ID_CONFIG,″logFilter″);

        settings.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG,brokers);

        settings.put(StreamsConfig.ZOOKEEPER_CONMECT_CONFIG,zookeepers);

        ∥創(chuàng)建 Kafka Stream配置對(duì)象

        StreamsConfig config = new StreamsConfig(settings);

        ∥創(chuàng)建一個(gè)拓?fù)浣?gòu)器

        TopologyBuilder builder = new TopologyBuilder();

        ∥定義流處理的拓?fù)浣Y(jié)構(gòu)

        builder.addSource( ″SOURCE″,from)

        .addProcessor(″PROCESSOR″,()->new LogProcessor(), ″SOURCE″″)

        .addSink( ″SINK″,to,″PROCESSOR″);

        KafkaStreams streams = new KafkaStreams( builder,config );

        3.4 推薦計(jì)算模塊

        3.4.1 離線推薦

        基于模型的協(xié)同過(guò)濾算法(ModelCF)根據(jù)已有的用戶評(píng)分?jǐn)?shù)據(jù)進(jìn)行學(xué)習(xí)并訓(xùn)練模型,進(jìn)而預(yù)測(cè)空白的用戶和物品之間的評(píng)分關(guān)系。實(shí)際上,ModelCF算法可以稱作是基于用戶的協(xié)同過(guò)濾算法(UserCF)和基于物品的協(xié)同過(guò)濾算法(ItemCF)的混合形式,同時(shí)分析了用戶和物品兩個(gè)方面,讓其更加節(jié)省空間,并且訓(xùn)練和預(yù)測(cè)速度也更快,推薦結(jié)果也更加準(zhǔn)確。交替最小二乘(ALS)矩陣分解的協(xié)同過(guò)濾算法[7]就是典型的基于模型的協(xié)同過(guò)濾算法。

        該矩陣是用戶與物品之間的關(guān)系矩陣,其數(shù)值代表用戶對(duì)物品的看法,數(shù)值可為布爾值。1代表曾做過(guò)的事,例如喜歡、點(diǎn)擊、購(gòu)買,0代表沒(méi)有,此矩陣稱為“行為矩陣”。此外,矩陣的數(shù)值還可以是一個(gè)表示回饋的分?jǐn)?shù),例如0—5的數(shù)值,這個(gè)矩陣叫做“分?jǐn)?shù)矩陣”。由于用戶無(wú)法對(duì)所有項(xiàng)目進(jìn)行操作,因此該矩陣是稀疏的?;谀P偷膮f(xié)同過(guò)濾算法是通過(guò)訓(xùn)練出一個(gè)參數(shù)模型描述用戶與物品、用戶與用戶或者物品與物品之間的關(guān)系,然后通過(guò)優(yōu)化過(guò)程得到模型參數(shù)。離線推薦算法的執(zhí)行流程如圖5所示。

        圖5 離線推薦算法流程Fig.5 Offline recommendation algorithm flow

        3.4.2 實(shí)時(shí)推薦算法

        基于內(nèi)容的推薦算法[8]的具體流程為加載電影內(nèi)容信息數(shù)據(jù),提取電影ID (Mid)、電影名稱(Name)和電影所屬類別(Genres)3項(xiàng)作為電影原始內(nèi)容特征;實(shí)例化一個(gè)分詞器,默認(rèn)按空格分詞,用分詞器對(duì)原始數(shù)據(jù)進(jìn)行轉(zhuǎn)換,生成新的數(shù)據(jù)結(jié)構(gòu);引入HashingTF工具,把一個(gè)詞語(yǔ)序列轉(zhuǎn)化成對(duì)應(yīng)的詞頻TF(Term Frequency);引入逆文檔頻率IDF(Inverse Document Frequency)工具,訓(xùn)練IDF模型得到一個(gè)詞的逆文檔頻率;用模型對(duì)原數(shù)據(jù)進(jìn)行處理,得到文檔中每個(gè)詞的TF-IDF[9],作為新的特征向量;通過(guò)特征向量計(jì)算電影相似度矩陣,通過(guò)實(shí)時(shí)推薦算法計(jì)算基于內(nèi)容的實(shí)時(shí)推薦結(jié)果。

        4 結(jié)論(Conclusion)

        本文以Spark分布式計(jì)算引擎為核心,設(shè)計(jì)了離線推薦和實(shí)時(shí)推薦相結(jié)合的電影推薦系統(tǒng),結(jié)合MongoDB、Kafka、Flume等與推薦系統(tǒng)相關(guān)的大數(shù)據(jù)技術(shù),對(duì)電影推薦系統(tǒng)的整體架構(gòu)設(shè)計(jì)、功能模塊設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)環(huán)境的搭建、數(shù)據(jù)采集模塊的設(shè)計(jì)以及推薦算法的設(shè)計(jì)進(jìn)行了詳細(xì)的闡述,系統(tǒng)各部分功能實(shí)現(xiàn)后,通過(guò)測(cè)試驗(yàn)證了各模塊的功能滿足使用需求,可用性較高。

        在電影推薦系統(tǒng)中可以綜合考慮新用戶的個(gè)人信息如性別、年齡、職業(yè)等,以及用戶在頁(yè)面的停留時(shí)間、點(diǎn)擊次數(shù)等隱式特征信息,提高系統(tǒng)推薦的準(zhǔn)確度。

        猜你喜歡
        離線日志矩陣
        一名老黨員的工作日志
        異步電機(jī)離線參數(shù)辨識(shí)方法
        呼吸閥離線檢驗(yàn)工藝與評(píng)定探討
        淺談ATC離線基礎(chǔ)數(shù)據(jù)的準(zhǔn)備
        扶貧日志
        心聲歌刊(2020年4期)2020-09-07 06:37:14
        離線富集-HPLC法同時(shí)測(cè)定氨咖黃敏膠囊中5種合成色素
        中成藥(2018年2期)2018-05-09 07:20:09
        游學(xué)日志
        初等行變換與初等列變換并用求逆矩陣
        矩陣
        南都周刊(2015年4期)2015-09-10 07:22:44
        矩陣
        南都周刊(2015年3期)2015-09-10 07:22:44
        国产99re在线观看只有精品| 亚洲av日韩av激情亚洲| 久久精品国产亚洲av香蕉| 久久老子午夜精品无码怎么打| 亚洲另在线日韩综合色| 精品中文字幕久久久人妻| 色狠狠一区二区三区中文| 2020年国产精品| 久久青青草原亚洲AV无码麻豆| 亚洲天堂一区二区精品| 大尺度免费观看av网站| 怡红院免费的全部视频| 亚洲AV无码一区二区二三区我| 国产大片在线观看91| 国产精品成人无码久久久久久| 人人妻人人澡人人爽欧美二区| 国产成人久久蜜一区二区| 美利坚合众国亚洲视频| 一本久久综合亚洲鲁鲁五月天 | 大学生被内谢粉嫩无套| 国产成人精品aaaa视频一区| 久久久熟女一区二区三区| 国产特级毛片aaaaaa视频| 久久精品国产亚洲av高清色欲| 中文字幕日韩精品美一区二区三区 | 玖玖资源站无码专区| 尤物AV无码色AV无码麻豆| 日韩美腿丝袜三区四区| 男人的天堂免费a级毛片无码| 亚洲av国产av综合av| 日韩最新av一区二区| 加勒比东京热中文字幕| 免费a级毛片永久免费| 久久成人永久免费播放| 中文字幕在线亚洲精品一区| 亚洲人成国产精品无码果冻| 人妻去按摩店被黑人按中出| 中文字幕成人精品久久不卡| 国产一级二级三级在线观看视频| 人人爽人人爽人人爽人人片av | 国产av普通话对白国语|