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

        ?

        基于雙排序原理的先進(jìn)先出數(shù)據(jù)核銷高速通用算法

        2021-03-24 09:56:14王國忠
        軟件工程 2021年3期

        摘? 要:本文按照軟件中臺(tái)的思想,設(shè)計(jì)了一個(gè)針對先進(jìn)先出(First-In First-Out, FIFO)[1]數(shù)據(jù)核銷的通用實(shí)現(xiàn)框架及其對應(yīng)的入庫數(shù)據(jù)模型、消費(fèi)數(shù)據(jù)模型和匹配核銷模型。同時(shí),設(shè)計(jì)了基于雙排序原理的先進(jìn)先出數(shù)據(jù)核銷高速實(shí)現(xiàn)方法。該方法按照匹配規(guī)則先對數(shù)據(jù)進(jìn)行排序,然后對兩個(gè)有序隊(duì)列進(jìn)行單循環(huán)匹配查找,避免了傳統(tǒng)先進(jìn)先出實(shí)現(xiàn)中的雙循環(huán)操作,可以大幅度提高運(yùn)算性能,大幅度節(jié)省CPU開銷和存儲(chǔ)開銷,實(shí)現(xiàn)超大數(shù)據(jù)量的快速匹配,可以支持兩個(gè)億級(jí)數(shù)據(jù)庫的快速先進(jìn)先出匹配。

        關(guān)鍵詞:先進(jìn)先出;存儲(chǔ)過程;雙排序;面向?qū)ο?/p>

        中圖分類號(hào):TP31? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

        Abstract: This paper proposed to design a general implementation framework for FIFO (First-In First-Out) data verification and its corresponding inbound data model, consumption data model and matching verification model based on idea of middle platform. At the same time, a high-speed realization method of FIFO data verification is designed based on the double sorting principle. This method first sorts data according to matching rules, and then performs a single-loop matching search on the two ordered queues, avoiding double-loop operation in traditional FIFO implementation. The proposed method significantly improves computing performance, and greatly saves CPU and storage overheads. As a result, it is capable of processing super large data volume, and can support fast FIFO matching of two databases with large data volume.

        Keywords: First-In First-Out (FIFO); storage procedure; double sort; object-oriented

        1? ?引言(Introduction)

        先進(jìn)先出是傳統(tǒng)庫存商品成本核算的一個(gè)通用方法,商品銷售先選擇最早采購的商品價(jià)格作為銷售商品的庫存成本。目前,國內(nèi)很多企業(yè)對于各類消費(fèi)數(shù)據(jù)都需要用先進(jìn)先出的方法進(jìn)行核算。隨著互聯(lián)網(wǎng)新零售大幅度崛起,消費(fèi)數(shù)據(jù)從傳統(tǒng)的商品批發(fā)零售擴(kuò)大到很多場景,例如CRM[2](Customer Relationship Management)的積分核銷[3]就是十分典型的一個(gè)應(yīng)用,不同商家的積分產(chǎn)生和使用,需要相互結(jié)算。隨著全渠道零售的興起,各個(gè)結(jié)算主體之間也存在先進(jìn)先出的結(jié)算需求。從軟件實(shí)現(xiàn)上來看,數(shù)據(jù)庫先進(jìn)先出核銷需要解決模塊化和運(yùn)算高效的技術(shù)難點(diǎn)。先進(jìn)先出算法的缺陷會(huì)使系統(tǒng)運(yùn)行性能變差,甚至導(dǎo)致系統(tǒng)癱瘓。

        為了節(jié)省服務(wù)器的計(jì)算時(shí)間,需要設(shè)計(jì)一個(gè)通用的高速核銷引擎,方便應(yīng)用程序直接調(diào)用,大幅度降低普通程序員對出入數(shù)據(jù)核銷實(shí)現(xiàn)的門檻。目前數(shù)據(jù)基本上都存儲(chǔ)在數(shù)據(jù)庫中,而程序開發(fā)工具大部分是Java或C語言等,通過JDBC/ODBC和數(shù)據(jù)庫連接讀取和寫入數(shù)據(jù)。由于數(shù)據(jù)庫和開發(fā)工具都具備運(yùn)算能力,因此先進(jìn)先出引擎可以利用開發(fā)工具能力,也可以利用數(shù)據(jù)庫能力,以及兩者混合能力來實(shí)現(xiàn)。

        本文按照軟件中臺(tái)的思想,設(shè)計(jì)了一個(gè)針對先進(jìn)先出數(shù)據(jù)核銷的通用實(shí)現(xiàn)框架及其對應(yīng)的入庫數(shù)據(jù)模型、消費(fèi)數(shù)據(jù)模型和匹配核銷模型。同時(shí),為了克服傳統(tǒng)先進(jìn)先出數(shù)據(jù)核銷中的雙循環(huán)操作瓶頸,設(shè)計(jì)了基于雙排序原理的先進(jìn)先出數(shù)據(jù)核銷高速實(shí)現(xiàn)方法,通過先排序后先進(jìn)先出,把先進(jìn)先出算法從乘法變成加法,實(shí)現(xiàn)超高速的計(jì)算引擎[4],可以滿足超大數(shù)據(jù)的先進(jìn)先出需求。

        2? ?先進(jìn)先出通用模型設(shè)計(jì)(Design of FIFO general model)

        為了實(shí)現(xiàn)通用的先進(jìn)先出引擎,本文設(shè)計(jì)了一個(gè)先進(jìn)先出通用實(shí)現(xiàn)框架[5]。如圖1所示,該框架包含來源數(shù)據(jù)模型FIFO_in、消費(fèi)數(shù)據(jù)模型FIFO_out和匹配核銷模型FIFO三個(gè)模塊。任何需要使用先進(jìn)先出算法的系統(tǒng),只要將數(shù)據(jù)按照要求存入兩個(gè)出入表,然后調(diào)用先進(jìn)先出引擎運(yùn)行,即可得到結(jié)果。

        入庫數(shù)據(jù)模型FIFO_in,存儲(chǔ)來源數(shù)據(jù)。例如對于商品,就是采購入庫數(shù)據(jù);對于顧客積分,就是顧客消費(fèi)產(chǎn)生的積分。為了標(biāo)識(shí)來源數(shù)據(jù)唯一性,該表需要加入來源數(shù)據(jù)的唯一主鍵信息,主要字段為:先進(jìn)先出種類(用于區(qū)分應(yīng)用場景,例如商品出入庫、顧客積分等)、來源數(shù)據(jù)關(guān)鍵詞(一般是入庫單號(hào)+商品+日期或產(chǎn)生積分的銷售小票單號(hào)+顧客信息+日期)、來源數(shù)據(jù)的數(shù)值(數(shù)量、金額、成本、積分等)、來源數(shù)據(jù)的優(yōu)先級(jí)(解決FI的不同場景,例如后進(jìn)先出,只需要調(diào)整優(yōu)先級(jí)即可)、已核銷的數(shù)值(被FO匹配到的數(shù)值)、未被核銷的數(shù)值等。

        消費(fèi)數(shù)據(jù)模型FIFO_out,存儲(chǔ)使用數(shù)據(jù)。對于商品,就是銷售或批發(fā)數(shù)據(jù);對于顧客積分,就是使用積分(包括積分抵現(xiàn)、退貨、積分換券等用掉的積分)。為了標(biāo)識(shí)目標(biāo)數(shù)據(jù)唯一性,該表需要加入消費(fèi)數(shù)據(jù)的唯一主鍵信息,主要字段為:先進(jìn)先出種類(商品出入庫或積分核銷等場景)、消費(fèi)數(shù)據(jù)關(guān)鍵詞(一般是銷售單號(hào)或積分使用單號(hào),加上產(chǎn)品或顧客信息)、消費(fèi)數(shù)據(jù)的數(shù)值(數(shù)量、金額、成本、積分等)、消費(fèi)數(shù)據(jù)的優(yōu)先級(jí)(解決哪些數(shù)據(jù)優(yōu)先處理的問題)、已匹配數(shù)據(jù)(已經(jīng)匹配到的數(shù)值)等。

        匹配核銷模型FIFO,存儲(chǔ)匹配記錄,即消費(fèi)數(shù)據(jù)和來源數(shù)據(jù)核銷關(guān)系。這需要通過運(yùn)行先進(jìn)先出引擎從FIFO_out循環(huán),逐行從FIFO_in表尋找。FIFO匹配核銷模型主要信息為:先進(jìn)先出種類、出方關(guān)鍵詞、入方關(guān)鍵詞及核銷數(shù)據(jù)。

        3? ?五種先進(jìn)先出算法(Five FIFO algorithms)

        傳統(tǒng)數(shù)據(jù)核銷大部分是單個(gè)數(shù)據(jù)發(fā)生后,通過某些條件去尋找來源,這樣實(shí)現(xiàn)比較簡單。例如,顧客使用積分抵現(xiàn),由于積分可能是其他商家產(chǎn)生的,這樣就需要針對使用積分找到提供積分的商家銷售單進(jìn)行結(jié)算。實(shí)現(xiàn)單個(gè)數(shù)據(jù)尋找算法很簡單,就是找到這個(gè)顧客以前的積分記錄,把未核銷的積分按照先進(jìn)先出原則排序,逐個(gè)匹配,將匹配到的記錄存在數(shù)據(jù)庫中,并標(biāo)記已經(jīng)核銷的記錄,防止重復(fù)核銷。然而當(dāng)數(shù)據(jù)數(shù)量非常龐大時(shí),先進(jìn)先出引擎算法的效率直接決定了整個(gè)系統(tǒng)的運(yùn)算性能,一個(gè)有缺陷的先進(jìn)先出算法會(huì)使系統(tǒng)運(yùn)行性能變差甚至導(dǎo)致系統(tǒng)癱瘓。

        傳統(tǒng)的先進(jìn)先出數(shù)據(jù)核銷采用雙循環(huán)機(jī)制,運(yùn)算量大,不適用于處理大規(guī)模的數(shù)據(jù)。為了解決這個(gè)問題,本文設(shè)計(jì)了基于雙排序原理的先進(jìn)先出數(shù)據(jù)核銷高速實(shí)現(xiàn)方法。該方法按照匹配規(guī)則先對數(shù)據(jù)進(jìn)行排序,然后對兩個(gè)有序隊(duì)列進(jìn)行單循環(huán)匹配查找,避免了傳統(tǒng)先進(jìn)先出實(shí)現(xiàn)中的雙循環(huán)操作,可以大幅度提高運(yùn)算性能,節(jié)省CPU開銷和存儲(chǔ)開銷,實(shí)現(xiàn)超大數(shù)據(jù)量的快速匹配,可以支持兩個(gè)億級(jí)數(shù)據(jù)庫的快速先進(jìn)先出匹配。本節(jié)從先進(jìn)先出數(shù)據(jù)核銷算法演進(jìn)的角度,對以下五種算法的原理和優(yōu)缺點(diǎn)進(jìn)行說明。

        (1)軟件對象雙循環(huán)匹配查找:基于面向?qū)ο蟮能浖_發(fā)思想,先將來源數(shù)據(jù)和消費(fèi)數(shù)據(jù)分別映射成開發(fā)工具環(huán)境的兩個(gè)對象,通過應(yīng)用軟件(Java/C#)雙循環(huán)進(jìn)行匹配查找,然后把結(jié)果寫到數(shù)據(jù)庫中。

        (2)軟件調(diào)用數(shù)據(jù)庫命令交互查找匹配:應(yīng)用軟件負(fù)責(zé)寫SQL查找和修改語句,交互式調(diào)用數(shù)據(jù)庫進(jìn)行查找運(yùn)算。這個(gè)方法中開發(fā)工具不存儲(chǔ)大量數(shù)據(jù),全部利用數(shù)據(jù)庫的存儲(chǔ)和SQL能力,進(jìn)行循環(huán)調(diào)用。

        (3)數(shù)據(jù)庫內(nèi)部雙循環(huán)匹配查找:利用數(shù)據(jù)庫的PL/SQL[6]能力,實(shí)現(xiàn)雙循環(huán)匹配查找,不需要非數(shù)據(jù)庫的開發(fā)語言代碼。

        (4)開發(fā)語言雙排序單循環(huán)匹配查找:首先通過面向?qū)ο蟮拈_發(fā)語言排序,然后進(jìn)行排序匹配查找,最后批量寫到數(shù)據(jù)庫中。

        (5)數(shù)據(jù)庫排序單循環(huán)匹配查找:通過PL/SQL,利用數(shù)據(jù)庫的排序能力,直接在數(shù)據(jù)中排序快速匹配,不需要應(yīng)用開發(fā)工具反復(fù)調(diào)用數(shù)據(jù)庫計(jì)算能力。

        3.1? ?方法1:軟件對象雙循環(huán)匹配查找

        這是最傳統(tǒng)的面向?qū)ο蟮姆椒?,利用?yīng)用開發(fā)工具,例如Java、C++[7]或.net,將來源數(shù)據(jù)和消費(fèi)數(shù)據(jù)分別映射成開發(fā)工具環(huán)境的兩個(gè)對象,然后采用雙循環(huán)方法,對兩個(gè)對象進(jìn)行匹配,最后將匹配結(jié)果存在FIFO對象并刷新FIFO_in和FIFO_out對象的已匹配數(shù)量,把對象保存到數(shù)據(jù)庫的表中,如圖2所示。

        上述方法利用開發(fā)工具能力雙循環(huán),總體的計(jì)算次數(shù)為:出數(shù)據(jù)記錄×進(jìn)數(shù)據(jù)記錄,所以,總體運(yùn)算量比較大,效率很低。其優(yōu)點(diǎn)是方便理解,調(diào)試運(yùn)維效率高。

        3.2? ?方法2:軟件調(diào)用數(shù)據(jù)庫命令交互查找匹配

        本方法也是傳統(tǒng)的算法,消費(fèi)數(shù)據(jù)和來源數(shù)據(jù)不需要映射到對象,通過逐條把數(shù)據(jù)庫消費(fèi)數(shù)據(jù)讀取到內(nèi)存,然后根據(jù)條件從來源數(shù)據(jù)匹配,匹配到的直接寫入數(shù)據(jù)庫,如圖3所示。這個(gè)方法的特點(diǎn)是開發(fā)工具部署的應(yīng)用環(huán)境內(nèi)存消耗很低,存儲(chǔ)全部運(yùn)用數(shù)據(jù)庫的能力,指示命令都是應(yīng)用程序下達(dá)給數(shù)據(jù)庫的。這個(gè)方法類似傳統(tǒng)的C/S架構(gòu),客戶端發(fā)命令,數(shù)據(jù)庫運(yùn)算,并且一次命令對應(yīng)一個(gè)匹配運(yùn)算。

        這個(gè)方法的優(yōu)點(diǎn)是調(diào)試方便,容易運(yùn)維;缺點(diǎn)是運(yùn)行效率很低,應(yīng)用軟件和數(shù)據(jù)庫反復(fù)交互,每次SQL運(yùn)行都需要編譯,代價(jià)比較大。這個(gè)算法一般是系統(tǒng)開發(fā)初期使用,成熟后需要升級(jí)到方法3。

        3.3? ?方法3:數(shù)據(jù)庫內(nèi)部雙循環(huán)匹配查找

        本方法是方法2的改進(jìn),將開發(fā)工具的循環(huán)代碼通過

        PL/SQL[8]翻譯成數(shù)據(jù)庫的存儲(chǔ)過程,在數(shù)據(jù)庫內(nèi)部實(shí)現(xiàn)雙循環(huán)匹配查找,如圖4所示。這樣客戶端和數(shù)據(jù)庫只需要交互一次,具體循環(huán)全部在存儲(chǔ)過程中,大幅度減少了網(wǎng)絡(luò)交互的開銷和SQL反復(fù)編譯的代價(jià)。

        該方法存儲(chǔ)過程的優(yōu)點(diǎn)是運(yùn)行效率很高,SQL代碼都是預(yù)編譯好的,大幅度節(jié)省了數(shù)據(jù)庫編譯SQL的時(shí)間,同時(shí)節(jié)省了開發(fā)語言和數(shù)據(jù)庫交互的網(wǎng)絡(luò)時(shí)延代價(jià);缺點(diǎn)是出現(xiàn)問題時(shí)調(diào)試運(yùn)維不方便,所以需要等方法2成熟后,再翻譯成存儲(chǔ)過程比較好。

        3.4? ?方法4:開發(fā)語言雙排序單循環(huán)匹配查找

        前面三個(gè)方法的特點(diǎn)是運(yùn)用內(nèi)外雙循環(huán)的傳統(tǒng)算法,運(yùn)算量都是消費(fèi)記錄和來源記錄的乘積,對于數(shù)據(jù)量很大的場景運(yùn)算非常慢。特別是匹配出現(xiàn)異常,需要重新匹配的時(shí)間很長,無法快速高效支撐大型企業(yè)的應(yīng)用,所以理論上只能停留在實(shí)驗(yàn)室,不能投入生產(chǎn)系統(tǒng)。

        先進(jìn)先出本質(zhì)上是兩個(gè)大表的匹配,雖然不是Join,實(shí)際上可以利用排序Join的思想,將運(yùn)算量從乘法變成加法,極大提高運(yùn)算的效率,有力支撐企業(yè)先進(jìn)先出各種場景的應(yīng)用,包括BI(Business Intelligence)分析需要的先進(jìn)先出應(yīng)用。

        方法4通過開發(fā)語言將數(shù)據(jù)進(jìn)行排序,然后基于排序后的隊(duì)列進(jìn)行匹配查找,最后將結(jié)果批量寫到數(shù)據(jù)庫。圖5首先將來源和消費(fèi)兩個(gè)大表數(shù)據(jù)映射成開發(fā)工具環(huán)境的兩個(gè)對象(類似方法1),然后分別按照匹配規(guī)則排序,變成兩個(gè)隊(duì)列。后續(xù)匹配算法變成了兩個(gè)隊(duì)列從頭開始同時(shí)向下循環(huán),把雙循環(huán)變成單循環(huán),運(yùn)算量最大就是兩個(gè)隊(duì)列記錄數(shù)的總和。

        排序是本方法的主要代價(jià),需要利用已有的優(yōu)秀排序算法進(jìn)行快速排序,這樣才可以將兩個(gè)對象按照各自的排序進(jìn)行單循環(huán)匹配。匹配過程是消費(fèi)數(shù)據(jù)對象外循環(huán),來源數(shù)據(jù)(進(jìn)數(shù)據(jù))為內(nèi)循環(huán)。和雙循環(huán)的主要區(qū)別是,這兩個(gè)循環(huán)是同步進(jìn)行的,誰匹配完一個(gè)就移到下一個(gè),所以總的循環(huán)次數(shù)是兩個(gè)相加。匹配完成后,需要將匹配結(jié)果的對象寫回?cái)?shù)據(jù)庫。

        3.5? ?方法5:數(shù)據(jù)庫排序單循環(huán)匹配查找

        方法4的缺點(diǎn)是需要將大量的數(shù)據(jù)讀到應(yīng)用服務(wù)器的內(nèi)存,匹配完還需要將大量的匹配數(shù)據(jù)寫回?cái)?shù)據(jù)庫,代價(jià)比較大。所以方法5通過PL/SQL將方法4的代碼轉(zhuǎn)換成數(shù)據(jù)庫的存儲(chǔ)過程,利用數(shù)據(jù)庫的排序能力,可以大幅度提高運(yùn)算性能,實(shí)現(xiàn)超大數(shù)據(jù)量的快速匹配,大幅度節(jié)省CPU開銷和存儲(chǔ)開銷。

        圖6是數(shù)據(jù)庫排序匹配方法的流程圖,排序只需要數(shù)據(jù)庫建一個(gè)索引,每秒可以處理十萬條記錄。然后定義兩個(gè)Cursor,分別對應(yīng)消費(fèi)數(shù)據(jù)和來源數(shù)據(jù),兩個(gè)循環(huán)組成單循環(huán),第一個(gè)循環(huán)和第二個(gè)循環(huán)同時(shí)進(jìn)行匹配,整個(gè)計(jì)算量最多是兩個(gè)表的記錄數(shù)相加,所以可以支持兩個(gè)億級(jí)數(shù)據(jù)量的快速先進(jìn)先出匹配。

        4? ?結(jié)論(Conclusion)

        本文按照軟件中臺(tái)的思想,設(shè)計(jì)了一個(gè)針對先進(jìn)先出數(shù)據(jù)核銷的通用實(shí)現(xiàn)框架及其對應(yīng)的入庫數(shù)據(jù)模型、消費(fèi)數(shù)據(jù)模型和匹配核銷模型,并對五種先進(jìn)先出數(shù)據(jù)核銷的實(shí)現(xiàn)方法進(jìn)行了闡述。對于企業(yè)應(yīng)用,大部分采用方法5。先進(jìn)先出作為企業(yè)級(jí)應(yīng)用,模塊化價(jià)值比較高,可防止不同應(yīng)用場景重復(fù)開發(fā),造成額外開發(fā)量以及性能潛在的風(fēng)險(xiǎn)。不同算法對系統(tǒng)的要求不一樣,效果差異很大。普通程序員很容易使用前面運(yùn)行效率低的算法,在系統(tǒng)開始運(yùn)行幾個(gè)月后,造成系統(tǒng)癱瘓。對于有一定規(guī)模的企業(yè)應(yīng)用數(shù)據(jù),數(shù)據(jù)庫使用效率是十分重要的。先進(jìn)先出只是數(shù)據(jù)庫應(yīng)用中比較常用的一種方法,其他人工智能的算法也需要充分利用數(shù)據(jù)庫能力,合理設(shè)計(jì)算法。如果超過一個(gè)數(shù)據(jù)庫能力,就需要用多個(gè)數(shù)據(jù)庫以及大數(shù)據(jù)的方法解決。

        參考文獻(xiàn)(References)

        [1] 闞運(yùn)奇.營銷零售行業(yè)先進(jìn)先出算法設(shè)計(jì)[J].無線互聯(lián)科技,2012(12):98.

        [2] 李靜.基于數(shù)據(jù)挖掘技術(shù)的電子商務(wù)CRM研究[J].現(xiàn)代電子技術(shù),2015(11):126.

        [3] 蔣文書.運(yùn)用數(shù)據(jù)挖掘技術(shù),精準(zhǔn)把握客戶需求[J].軟件和集成電路,2018(Z1):20.

        [4] 侯寧.大數(shù)據(jù)環(huán)境下并行化先進(jìn)先出成本算法研究[J].軟件導(dǎo)刊,2019,18(06):85.

        [5] 許桂平.基于數(shù)據(jù)庫的通用驅(qū)動(dòng)程序自動(dòng)編寫算法研究[J].電子設(shè)計(jì)工程,2019(15):166-169;174.

        [6] CJ Fernandez Candel, J Garcia Molina, FJ Bermudez Ruiz, et al. Developing a model-driven reengineering approach for migrating PL/SQL triggers to Java: A practical experience[J].The Journal of Systems and Software,2019(151):38-64.

        [7] 鐘玲玲,劉冬雪,黃小平,等.基于C語言的學(xué)生信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].河南科技學(xué)院學(xué)報(bào)(自然科學(xué)版),2019(04): 62-67;78.

        [8] 周嵐.Oracle中基于Java的存儲(chǔ)過程[D].合肥:安徽大學(xué),2006.

        作者簡介:

        王國忠(1971-),男,碩士,講師.研究領(lǐng)域:大型分布式數(shù)據(jù)庫應(yīng)用,企業(yè)級(jí)應(yīng)用.

        欧美极品jizzhd欧美| 国产女人av一级一区二区三区 | 久久久AV无码精品免费| 日本人妖一区二区三区| av网站在线观看大全| 中文无码一区二区不卡av| 久久无码人妻一区二区三区午夜 | 欧美大屁股xxxx高跟欧美黑人| 欧美 国产 日产 韩国 在线| 欧美性xxx久久| 亚洲精品中文字幕乱码无线| 国产精品日本一区二区在线播放 | 在线观看免费的黄片小视频| 日本精品一区二区三区二人码 | 福利片福利一区二区三区| aa视频在线观看播放免费| 谷原希美中文字幕在线| 色综合av综合无码综合网站 | 中文字幕日韩熟女av| 日本久久久免费观看视频| a级毛片100部免费观看| 人妻丰满多毛熟妇免费区| 精品国产97av一区二区三区| 成人女同av在线观看网站| 欧美日韩一区二区综合| 亚洲精品亚洲人成在线下载 | 美女狂喷白浆网站视频在线观看 | 国产福利片无码区在线观看| av大片网站在线观看| 天天做天天爱夜夜爽毛片毛片| 最近日本中文字幕免费完整| 国产成人精品人人做人人爽| 国产精品亚洲一区二区麻豆| 黑色丝袜秘书夹住巨龙摩擦| 日韩在线看片| 在线高清亚洲精品二区| 加勒比hezyo黑人专区| 区二区欧美性插b在线视频网站 | 久久久久亚洲av片无码| 欧美人与动牲交片免费| 国产大学生自拍三级视频|