青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 14, 文章 - 0, 評(píng)論 - 3, 引用 - 0
數(shù)據(jù)加載中……

[轉(zhuǎn)貼]客戶(hù)端架構(gòu)設(shè)計(jì)的簡(jiǎn)單總結(jié)

我們知道,客戶(hù)端是相對(duì)服務(wù)端而言的,客戶(hù)端程序相對(duì)普通應(yīng)用程序,主要是增加了網(wǎng)絡(luò)通訊功能。在這個(gè)移動(dòng)和云存儲(chǔ)的年代,大部分終端應(yīng)用程序都有網(wǎng)絡(luò)通訊功能, 所以都可以稱(chēng)為客戶(hù)端。常見(jiàn)的客戶(hù)端如瀏覽器,IM客戶(hù)端, 網(wǎng)絡(luò)會(huì)議客戶(hù)端,郵件客戶(hù)端,微博和微信客戶(hù)端等...

通過(guò)觀察,我們會(huì)發(fā)現(xiàn)所有的客戶(hù)端基本是大同小異,都會(huì)包括一些相同的功能組件, 下面簡(jiǎn)單例舉下:
通訊協(xié)議層

既然客戶(hù)端都有網(wǎng)絡(luò)功能,就會(huì)涉及到通訊方式和數(shù)據(jù)格式以及協(xié)議, 這三者不是完全獨(dú)立,而是有機(jī)統(tǒng)一的。

首先說(shuō)通訊方式,常見(jiàn)的通訊方式包括TCP,UDP, P2P和http(s), 很多時(shí)候我們不會(huì)用單一的通訊方式,而是多種通訊方式的結(jié)合。比如說(shuō)TCP端口被封,走不通時(shí),我們會(huì)轉(zhuǎn)成嘗試http(s)。IM中聊天文本走的是TCP, 由服務(wù)器轉(zhuǎn)發(fā),但是2個(gè)客戶(hù)端之間的文件傳輸我們可能走的又是P2P了, 多個(gè)人之間的語(yǔ)音聊天, 我們走的又是UDP了。

其次說(shuō)數(shù)據(jù)格式,常見(jiàn)的數(shù)據(jù)格式包括二進(jìn)制編碼,開(kāi)源序列化協(xié)議和文本格式。
二進(jìn)制一般是自定義的私有格式,通常對(duì)數(shù)值,我們會(huì)轉(zhuǎn)成大頭端,對(duì)字符串我們會(huì)用UTF8 編碼,因?yàn)闆](méi)有冗余數(shù)據(jù),它的優(yōu)點(diǎn)是不會(huì)浪費(fèi)帶寬;主要缺點(diǎn)是有硬編碼的味道,不好擴(kuò)充。
開(kāi)源序列化協(xié)議這里主要是指google的protocal buffer,  現(xiàn)在很多公司都在用, 很多人基于它開(kāi)發(fā)了自己的RPC框架。主要優(yōu)點(diǎn)是數(shù)據(jù)小,使用簡(jiǎn)單而高效。
文本格式主要是指xml和json. 相對(duì)來(lái)說(shuō)xml比較清晰和容易擴(kuò)充,但是冗余數(shù)據(jù)比較多。json借助javascript對(duì)它語(yǔ)言層次的支持,感覺(jué)主要是前端人員使用的比較多。

最后再說(shuō)協(xié)議,  協(xié)議和我們的應(yīng)用相關(guān)聯(lián)。比如郵件客戶(hù)端,當(dāng)然是走SMTP和POP3了; IM客戶(hù)端的話,一般走XMPP了;  網(wǎng)絡(luò)會(huì)議的話,可以走ITU的T.120協(xié)議, 也可以RFC 6501定義的XCON, 信令走SIP, 數(shù)據(jù)走RTP等。

通信協(xié)議層是整個(gè)客戶(hù)端網(wǎng)絡(luò)事件驅(qū)動(dòng)的引擎,它可能會(huì)比較簡(jiǎn)單,也可能會(huì)很復(fù)雜。如果是基于XMPP的IM, 它可能會(huì)比較簡(jiǎn)單,因?yàn)榛旧现恍枰粚游谋緟f(xié)議的封包和解包就可以了。 當(dāng)如果是基于T.120網(wǎng)絡(luò)會(huì)議客戶(hù)端,就會(huì)比較復(fù)雜,它數(shù)據(jù)包走的自定義的二機(jī)制格式,按照T.120協(xié)議的建議, 在通訊協(xié)議層又分了3層:TP, MCS和GCC。TP層主要封裝數(shù)據(jù)傳輸?shù)姆绞? 可以讓上層無(wú)差別的區(qū)分TCP和http(s)。 MCS層主要提供多點(diǎn)傳輸功能, 它抽象出通道(channel)這個(gè)概念, 讓不同session的數(shù)據(jù)進(jìn)行邏輯隔離, 上層用戶(hù)可以同時(shí)加入不同的通道來(lái)進(jìn)行一對(duì)一和一對(duì)多的數(shù)據(jù)收發(fā),并且通道中的數(shù)據(jù)有不同的優(yōu)先級(jí), 還有令牌這個(gè)機(jī)制。我們也可以在MCS層對(duì)數(shù)據(jù)進(jìn)行加密和壓縮, 還可以對(duì)上層的大數(shù)據(jù)包進(jìn)行切包等。 GCC層主要封裝會(huì)議的最基本邏輯,比如創(chuàng)建會(huì)議和加入session數(shù)據(jù)包的格式封裝等, 讓上層可以通過(guò)API調(diào)用而不用關(guān)心協(xié)議要求的數(shù)據(jù)包格式。不同的數(shù)據(jù)包會(huì)工作在不同的層次, 比如心跳包可能在底層TP層就被攔截了,它不要再往上層發(fā),因?yàn)樯厦娌挥藐P(guān)心這個(gè); 而有些數(shù)據(jù)包,則需要從底層往上層按照整個(gè)協(xié)議棧層層轉(zhuǎn)發(fā),當(dāng)然每層都會(huì)剝離掉自己的協(xié)議頭, 直至上層用戶(hù)數(shù)據(jù)到達(dá)它的最終用戶(hù)。

總之,通訊協(xié)議層封裝了客戶(hù)端和服務(wù)端的通訊方式及協(xié)議格式, 讓上層用戶(hù)不用關(guān)心底層的通信機(jī)制, 而只關(guān)注應(yīng)用的接口事件。理論上我們可以在上層應(yīng)用不做大調(diào)整的前提下,直接將網(wǎng)絡(luò)會(huì)議客戶(hù)端中的T.120協(xié)議成基于SIP的XCON。
功能組件

一個(gè)客戶(hù)端程序通常是由很多功能模塊組成,模塊按功能來(lái)說(shuō)可以分為基礎(chǔ)組件和應(yīng)用組件。

基礎(chǔ)組件為應(yīng)用組件提供的基礎(chǔ)設(shè)施,基礎(chǔ)組件是可以在不同的項(xiàng)目中重復(fù)使用的(比如界面控件庫(kù),2D渲染引擎Skia, 跨平臺(tái)的網(wǎng)絡(luò)和線程庫(kù)等)。 
應(yīng)用組件通常和我們當(dāng)前的特定應(yīng)用程序相關(guān),比如我們的網(wǎng)絡(luò)會(huì)議客戶(hù)端包含的桌面共享模塊, 文檔共享模塊,視頻音頻模塊,文本聊天模塊等。

應(yīng)用模塊本身分為帶界面和無(wú)界面兩種情況, 帶界面的情況下我們通常會(huì)給組件提供一個(gè)容器窗口的句柄, 讓組件自己在內(nèi)部組織自己的界面。這種帶界面的組件通常會(huì)為邏輯和界面的分離帶來(lái)麻煩,在Window上實(shí)現(xiàn)一些半透明和動(dòng)畫(huà)效果也很難。 比如我們想提供跨平臺(tái)的SDK來(lái)封裝邏輯,這時(shí)我們會(huì)更傾向讓?xiě)?yīng)用組件采用無(wú)界面的模式,組件在跨平臺(tái)層只封裝邏輯和提供數(shù)據(jù), 而把數(shù)據(jù)發(fā)到最上層界面層后再統(tǒng)一處理。

對(duì)功能組件我們的設(shè)計(jì)原則是盡量保持獨(dú)立和可復(fù)用,最好能以仿COM方式動(dòng)態(tài)升級(jí)而不用重新編譯, 另外組件之間要保持層次性,避免雙向或是循環(huán)依賴(lài)。
數(shù)據(jù)存儲(chǔ)

客戶(hù)端本身是處理和收發(fā)網(wǎng)絡(luò)數(shù)據(jù), 這里就涉及到對(duì)這些數(shù)據(jù)如何組織和存儲(chǔ)的問(wèn)題。這個(gè)通常會(huì)根據(jù)客戶(hù)端的類(lèi)型采用不同的處處理方式:
對(duì)于永久存儲(chǔ)的數(shù)據(jù),當(dāng)然是保存成文件或是存入數(shù)據(jù)庫(kù),文件如xml, 數(shù)據(jù)庫(kù)如ACCESS,  SQL server, mysql等。
臨時(shí)數(shù)據(jù)當(dāng)然是存入內(nèi)存了,根據(jù)需要采用不同的數(shù)據(jù)結(jié)構(gòu), 組織格式如array,list, map, hashmap等。
還有一種是常見(jiàn)的數(shù)據(jù)保存方式是內(nèi)存數(shù)據(jù)庫(kù),最常見(jiàn)是SQLite了, 內(nèi)存數(shù)據(jù)庫(kù)既能高效的分類(lèi)保存大量數(shù)據(jù), 又可以直接用基于SQL語(yǔ)句進(jìn)行查詢(xún)和處理, 比如foxmail客戶(hù)端就是用SQLite存儲(chǔ)的郵件信息。
還有一種是跨進(jìn)程共享的數(shù)據(jù),我們一般當(dāng)然是內(nèi)存映射文件了。比如我們有一個(gè)實(shí)時(shí)顯示log的工具, 我們通常會(huì)在對(duì)方應(yīng)用程序里分配共享內(nèi)存的內(nèi)存映射文件,所有的log都寫(xiě)到里面,然后在log工具程序里讀取和顯示。
當(dāng)然還有一些數(shù)據(jù)可能存到網(wǎng)上去的, 常見(jiàn)的比如我們的云筆記, 這時(shí)數(shù)據(jù)分服務(wù)端數(shù)據(jù)和本地cache。

對(duì)于數(shù)據(jù)存儲(chǔ)我們的設(shè)計(jì)原則是根據(jù)需要,選擇簡(jiǎn)單高效的方式。比如我們?cè)谠O(shè)計(jì)網(wǎng)絡(luò)會(huì)議客戶(hù)端時(shí)曾討論要不要引入SQLite, 理想情況是引入內(nèi)存數(shù)據(jù)庫(kù)后各個(gè)組件和上層應(yīng)用的數(shù)據(jù)都可以統(tǒng)一存儲(chǔ),采用數(shù)據(jù)驅(qū)動(dòng)的方式,可以很方便的跟蹤整個(gè)客戶(hù)端的運(yùn)行情況。但后來(lái)發(fā)現(xiàn)這種設(shè)計(jì)會(huì)把本來(lái)各自獨(dú)立的組件通過(guò)數(shù)據(jù)庫(kù)耦合在了一起,而且各組件的數(shù)據(jù)格式本身都很不要一樣, 很難統(tǒng)一存儲(chǔ), 另外很多數(shù)據(jù)實(shí)際也只是臨時(shí)數(shù)據(jù), 沒(méi)必要把簡(jiǎn)單的時(shí)間做復(fù)雜了。
客戶(hù)端框架

客戶(hù)端框架一般有兩個(gè)作用:一是把所有的功能組件組織起來(lái),進(jìn)行統(tǒng)一的管理和展現(xiàn); 二是實(shí)現(xiàn)整個(gè)客戶(hù)端的主界面。客戶(hù)端框架在協(xié)調(diào)各個(gè)組件時(shí), 要注意避免讓組件之間產(chǎn)生雙向依賴(lài), 而是應(yīng)該讓組件把事件通知給框架后由框架統(tǒng)一協(xié)調(diào)和處理, 所以客戶(hù)端框架通常是整個(gè)客戶(hù)端邏輯最復(fù)雜的部分。 一個(gè)好的客戶(hù)端框架,通常會(huì)采用插件方式設(shè)計(jì),可以動(dòng)態(tài)插拔需要的組件。最好是可以根據(jù)服務(wù)端的配置, 動(dòng)態(tài)下載和更新所需要的插件。

對(duì)于客戶(hù)端框架, 我們的設(shè)計(jì)原則是低耦合和可擴(kuò)展。基本上所有下層組件的改動(dòng)都會(huì)影響到我們的客戶(hù)端框架,客戶(hù)的很多新需求和新組件也會(huì)導(dǎo)致框架產(chǎn)生壞味道, 這里我們?cè)O(shè)計(jì)時(shí)就要考慮如何讓客戶(hù)端框架能及時(shí)的適應(yīng)這些變化。
界面庫(kù)

客戶(hù)端肯定會(huì)有界面,在Windows平臺(tái)上,現(xiàn)在的界面大致分為以下幾類(lèi):
基于Windows原始窗口控件句柄的C++ native 客戶(hù)端, 基于.net的winform客戶(hù)端,基于.net的WPF客戶(hù)端,基于C++的DirectUI客戶(hù)端, 以嵌入瀏覽器(如webkit)方式實(shí)現(xiàn)的客戶(hù)端, 還有一類(lèi)是基于Xaml的Metro客戶(hù)端。

對(duì)于企業(yè)級(jí)大型安裝應(yīng)用,主要考慮的是開(kāi)發(fā)效率,所以客戶(hù)端還是以.net為主; 但是對(duì)于互聯(lián)網(wǎng)企業(yè), 更多的是要求客戶(hù)端精簡(jiǎn)而高效, 所以還是以C++為主。 這里就設(shè)及到C++的兩種界面庫(kù), 一種是基于windows窗口句柄和控件自繪機(jī)制的界面庫(kù),還有一中是基于DirectUI的界面庫(kù), 現(xiàn)在大一點(diǎn)的公司基本上都有自己的DirectUI界面庫(kù)。基于修改Webkit方式實(shí)現(xiàn)的界面庫(kù)可以通過(guò)Canvas和SVG動(dòng)畫(huà)等方式實(shí)現(xiàn)一些很炫的效果, 但是它和標(biāo)準(zhǔn)程序的用戶(hù)體驗(yàn)還是有一定差距:一來(lái)web實(shí)現(xiàn)的控件跟Windows標(biāo)準(zhǔn)控件有很大不同, 二來(lái)web的流式布局和應(yīng)用程序的網(wǎng)格布局也不一樣。

對(duì)于界面,個(gè)人覺(jué)得這個(gè)東西變化實(shí)在太快了,所以我覺(jué)得應(yīng)該盡量用界面和邏輯相分離的方式組織代碼。
總結(jié)

對(duì)于客戶(hù)端架構(gòu)設(shè)計(jì),個(gè)人覺(jué)得最大的原則就分層設(shè)計(jì), 每層都封裝一個(gè)概念并保持獨(dú)立, 同時(shí)根據(jù)依賴(lài)倒置的原則, 站在上層客戶(hù)的角度提供接口。軟件工程里面的一條黃金定律:“任何問(wèn)題都可以通過(guò)增加一個(gè)間接層來(lái)解決。

from:http://m.shnenglu.com/weiym/archive/2014/07/26/207819.html

posted @ 2014-08-20 19:19 天道酬勤 閱讀(284) | 評(píng)論 (0)編輯 收藏

[轉(zhuǎn)貼]socket阻塞與非阻塞,同步與異步

     摘要:   閱讀全文

posted @ 2013-12-20 11:08 天道酬勤 閱讀(219) | 評(píng)論 (0)編輯 收藏

[轉(zhuǎn)]C++ placement new

     摘要: C++ placement new  閱讀全文

posted @ 2013-12-17 21:09 天道酬勤 閱讀(266) | 評(píng)論 (0)編輯 收藏

C++中placement new操作符

     摘要: placement new是重載operator new的一個(gè)標(biāo)準(zhǔn)、全局的版本,它不能被自定義的版本代替(不像普通的operator new和operator delete能夠被替換成用戶(hù)自定義的版本)。
它的原型如下:
void *operator new( size_t, void *p ) throw() { return p; }  閱讀全文

posted @ 2013-12-17 21:03 天道酬勤 閱讀(308) | 評(píng)論 (0)編輯 收藏

[轉(zhuǎn)貼]Windows服務(wù)編寫(xiě)綜述

     摘要:   閱讀全文

posted @ 2013-12-17 17:13 天道酬勤 閱讀(956) | 評(píng)論 (0)編輯 收藏

[轉(zhuǎn)貼]Windows服務(wù)程序編程入門(mén)

     摘要: Windows服務(wù)程序是在操作系統(tǒng)后臺(tái)運(yùn)行的一種程序,要開(kāi)發(fā)該類(lèi)程序,需要使用windows提供的service API,
MSDN上有對(duì)該類(lèi)api的詳細(xì)描述,這里簡(jiǎn)單介紹下windows服務(wù)編程的具體步驟:  閱讀全文

posted @ 2013-12-17 17:10 天道酬勤 閱讀(454) | 評(píng)論 (0)編輯 收藏

[轉(zhuǎn)貼]MySQL字段類(lèi)型詳解

     摘要: MySQL支持大量的列類(lèi)型,它可以被分為3類(lèi):數(shù)字類(lèi)型、日期和時(shí)間類(lèi)型以及字符串(字符)類(lèi)型。本節(jié)首先給出可用類(lèi)型的一個(gè)概述,并且總結(jié)每個(gè)列類(lèi)型的存儲(chǔ)需求,然后提供每個(gè)類(lèi)中的類(lèi)型性質(zhì)的更詳細(xì)的描述。  閱讀全文

posted @ 2013-12-10 14:13 天道酬勤 閱讀(334) | 評(píng)論 (0)編輯 收藏

[轉(zhuǎn)貼]MySQL下,text 、blob的比較

     摘要: text和blob比較  閱讀全文

posted @ 2013-12-10 14:10 天道酬勤 閱讀(447) | 評(píng)論 (0)編輯 收藏

[轉(zhuǎn)貼]windows下使用vnc viewer遠(yuǎn)程連接Linux桌面

     摘要:   閱讀全文

posted @ 2013-08-29 11:21 天道酬勤 閱讀(289) | 評(píng)論 (0)編輯 收藏

在頭文件中引入stdafx.h導(dǎo)致的問(wèn)題

今天有個(gè)同事遇到一著實(shí)令人頭疼的問(wèn)題,向項(xiàng)目中加入一個(gè)cpp文件,編譯,鏈接時(shí)出現(xiàn) error LNK2001: 無(wú)法解析的外部符號(hào) "public: static struct CRuntimeClass const CDialog::classCDialog" (?classCDialog@CDialog@@2UCRuntimeClass@@B)。
追溯源頭,是某某同學(xué)在該cpp文件引用的一個(gè)頭文件中加入了 #include "stdafx.h"

posted @ 2010-01-19 15:14 天道酬勤 閱讀(897) | 評(píng)論 (1)編輯 收藏

僅列出標(biāo)題
共2頁(yè): 1 2 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品免费观看| 欧美aⅴ99久久黑人专区| 国产日韩欧美精品在线| 欧美日韩中文字幕在线| 欧美日韩高清在线观看| 欧美日本免费| 国产精品一区在线观看你懂的| 国产精品xxxxx| 国产精品揄拍500视频| 国产性色一区二区| 亚洲国产婷婷香蕉久久久久久| 91久久国产自产拍夜夜嗨| 亚洲精品在线观看免费| 亚洲一区二区av电影| 亚洲精品一区二区三区四区高清 | 欧美日韩精品免费观看视频完整 | 欧美高清视频在线观看| 亚洲国产欧美日韩| 一个人看的www久久| 欧美一区二区三区四区在线观看地址| 你懂的视频一区二区| 亚洲国产日韩综合一区| 亚洲一区二区三区中文字幕| 久久精品视频免费| 欧美深夜影院| 亚洲区免费影片| 欧美一级一区| 亚洲精品国产精品国自产观看| 亚洲欧美中文在线视频| 欧美电影在线免费观看网站| 国产日韩精品一区二区三区在线 | 欧美亚洲在线视频| 欧美日本一道本| 国色天香一区二区| 亚洲欧美激情四射在线日 | 国产乱码精品| 一本久道久久久| 美女爽到呻吟久久久久| 亚洲在线第一页| 欧美日韩视频一区二区| 一区精品久久| 久久久久国色av免费看影院| 日韩视频在线免费观看| 老**午夜毛片一区二区三区| 国产日韩免费| 性欧美长视频| 亚洲性xxxx| 欧美三级电影精品| 亚洲精品在线免费观看视频| 美女图片一区二区| 久久久久综合一区二区三区| 国产香蕉久久精品综合网| 亚洲欧美激情诱惑| 一区二区三区欧美| 国产精品初高中精品久久| 艳女tv在线观看国产一区| 亚洲国产精品福利| 欧美大片在线观看| 99国产精品99久久久久久| 免费观看成人| 欧美在线观看视频一区二区| 一区二区免费看| 日韩视频一区二区三区在线播放免费观看| 久久久久9999亚洲精品| 国内一区二区在线视频观看 | 欧美一区二区福利在线| 亚洲在线成人精品| 国产一区二区三区奇米久涩| 欧美一区三区二区在线观看| 午夜精品免费视频| 狠狠色综合色区| 欧美韩日视频| 欧美日韩一区三区| 欧美激情国产精品| 欧美一区在线看| 久久精品欧洲| 亚洲性感美女99在线| 欧美一区二区视频在线| 亚洲精品中文字幕女同| 国产乱码精品| 艳妇臀荡乳欲伦亚洲一区| 国产精品亚洲综合色区韩国| 狠狠v欧美v日韩v亚洲ⅴ| 欧美一区日韩一区| 国内精品久久久久久久影视蜜臀| 久久久久久网| 欧美精品www| 久久国产日韩| 牛夜精品久久久久久久99黑人 | 国产精品一区毛片| 欧美成人dvd在线视频| 欧美激情二区三区| 欧美专区在线观看| 免费亚洲视频| 欧美中文字幕在线播放| 美脚丝袜一区二区三区在线观看 | 亚洲黑丝一区二区| 国产精品xnxxcom| 欧美福利电影在线观看| 国产精品成人观看视频免费| 久久综合五月| 国产精品女人毛片| 亚洲高清视频在线观看| 国产日韩精品久久| 亚洲巨乳在线| 亚洲国产婷婷综合在线精品| 亚洲免费中文| 亚洲伊人色欲综合网| 蜜桃伊人久久| 久久亚洲视频| 日韩视频免费观看高清在线视频| 卡一卡二国产精品| 欧美一区二区三区在线看| 欧美国产亚洲精品久久久8v| 久久久久久9| 国产精品一区毛片| av72成人在线| 一区二区精品国产| 99在线精品视频在线观看| 久久精品国产亚洲高清剧情介绍| 久久久久五月天| 亚洲狼人综合| 在线视频国产日韩| 国产精品一区在线观看你懂的| 久久久之久亚州精品露出| 亚洲精品一区二区网址 | 亚洲欧洲精品一区二区| 久久国产一区二区三区| 欧美高清视频在线| 狠狠色狠狠色综合日日小说| 欧美一区2区三区4区公司二百| 亚洲欧美另类综合偷拍| 欧美激情在线观看| 欧美成人激情在线| 在线精品观看| 男男成人高潮片免费网站| 欧美国产精品专区| 亚洲国产一区视频| 欧美国产日产韩国视频| 亚洲精品美女在线| 亚洲午夜未删减在线观看| 欧美系列电影免费观看| 亚洲一区二区av电影| 欧美一区永久视频免费观看| 国产一区二区激情| 久久在线免费观看视频| 亚洲日本电影在线| 亚洲免费影视| 一区二区在线观看视频| 欧美刺激午夜性久久久久久久| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲一区精品在线| 国产精品美女| 久久成人精品电影| 亚洲国产精品www| 亚洲一区二区三区国产| 国产精品永久免费| 久久嫩草精品久久久精品| 亚洲国产精品成人综合色在线婷婷| 99精品国产在热久久下载| 国产精品久久久久9999| 欧美一级电影久久| 亚洲国产cao| 亚洲欧美日韩精品久久| 免费欧美网站| 国产综合亚洲精品一区二| 免费成人av在线看| 亚洲深夜福利网站| 狂野欧美激情性xxxx| 亚洲精品专区| 国产日产亚洲精品系列| 欧美电影在线免费观看网站| 亚洲亚洲精品在线观看| 欧美成人精品在线视频| 中文有码久久| 在线精品视频在线观看高清 | 欧美视频专区一二在线观看| 性做久久久久久| 亚洲欧洲日本mm| 久久久夜夜夜| 亚洲欧美国产另类| 亚洲精品美女| 国精产品99永久一区一区| 欧美日韩福利视频| 老牛嫩草一区二区三区日本 | 亚洲伊人一本大道中文字幕| 狠狠色综合网| 国产欧美69| 欧美涩涩网站| 欧美大片一区二区三区| 久久xxxx| 亚洲一区二区三区色| 亚洲欧洲在线免费| 久久亚洲精品中文字幕冲田杏梨| 亚洲永久在线观看| 亚洲毛片一区二区| 亚洲欧洲一二三| 亚洲电影免费观看高清完整版| 国产精品视频一区二区三区| 欧美日韩高清在线|