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

蝸牛的家
男兒當(dāng)自強(qiáng)
posts - 48,  comments - 21,  trackbacks - 0
1 適用性
\• 在不影響其他對象的情況下,以動態(tài)、透明的方式給單個對象添加一些職責(zé),如:加密層,解密層。
• 處理那些可能偶爾才會用到的特性接口
• 當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)充時。一種情況是,可能有大量獨(dú)立的擴(kuò)展,為支持
每一種組合將產(chǎn)生大量的子類,使得子類數(shù)目呈爆炸性增長
#include "stdafx.h"
#include 
<iostream>
using namespace std;


class Component            //被裝飾者抽象類
{
public:
    
virtual void Draw() = 0;
};
class Decorator : public Component //被裝飾者基類
{
public:
    Decorator(Component 
*c) : _component(c){}
    
~Decorator() {delete _component;}

    
virtual void Draw() { if (_component) _component->Draw();}
private:
    Component 
*_component;
};
//////////////////////////////////////////////////////////////////////////
class MyComponent : public Component //被裝飾者
{
public:
    
virtual void Draw() {cout << "MyComponent::Draw()" << endl;}
};
//////////////////////////////////////////////////////////////////////////
class BorderDecorator : public Decorator //邊框裝飾
{
public:
    BorderDecorator(Component 
*c) : Decorator(c){}
    
virtual void Draw()
    {
        cout 
<< "DrawBorder" << endl;
        Decorator::Draw();
    }
};
class ScrollDecorator : public Decorator //滾動條裝飾
{
public:
    ScrollDecorator(Component 
*c) : Decorator(c){}
    
virtual void Draw()
    {
        cout 
<< "DrawSrollbar" << endl;
        Decorator::Draw();
    }
};
int main()
{
    Component 
*c2 = new BorderDecorator(
        
new MyComponent()); //裝飾邊框的組件
    c2->Draw();
    delete c2;

    Component 
*c3 = new ScrollDecorator(
        
new BorderDecorator(
        
new MyComponent())); //同時裝飾上邊框和滾動條的組件
    c2->Draw();
    delete c3;

    system(
"pause");
    
return 0;
}
posted @ 2009-01-16 15:58 黑色天使 閱讀(388) | 評論 (0)編輯 收藏
     摘要:   閱讀全文
posted @ 2009-01-15 14:01 黑色天使 閱讀(385) | 評論 (0)編輯 收藏
     摘要: 編者按: 這幾天在調(diào)試課本上關(guān)于二叉樹的有關(guān)代碼,發(fā)現(xiàn)嚴(yán)的這本數(shù)據(jù)結(jié)構(gòu)教程喜歡把簡單問題復(fù)雜化,當(dāng)然這是從學(xué)生角度出發(fā),從個人角度出發(fā),這本書注重代碼的可讀性、重用等,更側(cè)重于與軟件工程、軟件組織結(jié)合,當(dāng)然是不錯的教材。比如,其棧和隊列的順序?qū)崿F(xiàn),也都用指針來代替數(shù)組,讓學(xué)生是很難理解。我在實(shí)現(xiàn)過程中,也有點(diǎn)拿不穩(wěn),特別是用隊列或棧來存儲樹的結(jié)點(diǎn)(也是指針)時,為了確保沒問題,特別是內(nèi)存...  閱讀全文
posted @ 2009-01-03 12:40 黑色天使 閱讀(3917) | 評論 (0)編輯 收藏
     摘要: #pragma once#include <WinSock2.h>class CHpServer{public:    CHpServer(void);    virtual ~CHpServer(void);    BOOL&...  閱讀全文
posted @ 2008-12-30 16:51 黑色天使 閱讀(354) | 評論 (0)編輯 收藏
     摘要: 網(wǎng)上找了很久沒有合適的類,就自己封一個,一般軟件更新的時候用  閱讀全文
posted @ 2008-12-23 13:21 黑色天使 閱讀(2355) | 評論 (10)編輯 收藏
     摘要:  1#pragma once 2 3#include <afxmt.h> 4#include <map> 5 6using namespace std; 7 8#define MAX_PENDING_CONNECTIONS &...  閱讀全文
posted @ 2008-12-23 13:12 黑色天使 閱讀(599) | 評論 (0)編輯 收藏
     摘要: 一早上寫的,為了個小東西通訊用,放上來讓大家拍磚,交流  閱讀全文
posted @ 2008-12-19 15:56 黑色天使 閱讀(2266) | 評論 (2)編輯 收藏
void ExtractString(CStringArray& arr, const CString strSrc, const TCHAR sep = '|')
{
    CString str(strSrc);
    str.TrimLeft(); 
    str.TrimRight();

    
if(str.IsEmpty())
        
return;

    
int pos = str.Find(sep);
    
while (pos != -1)
    
{
        arr.Add(str.Left(pos));
        str 
= str.Mid(pos + 1);
        pos 
= str.Find(sep);
    }

    
if (strcmp(str, _T("")) != 0)
        arr.Add(str);
}



int StrIndex(const char *str, const char *substr)
{

    
int nEnd = strlen(str) - strlen(substr);  /* 計算結(jié)束位置   */
    
    
if ( nEnd > 0 )                      /* 子字符串小于字符串 */
    
{
        
for (int i = 0; i <= nEnd; i++ )
            
for (int j = i; str[j] == substr[j-i]; j++ )
                
if ( substr[j-i+1== '\0' ) /* 子字符串字結(jié)束   */
                    
return i + 1;           
    }


    
return -1;
}
posted @ 2008-12-16 17:34 黑色天使 閱讀(441) | 評論 (0)編輯 收藏
//適合于比較小的對象
class CSingletonObj
{
public:
    
virtual ~CSingletonObj(void); //必須為公有
    static CSingletonObj& Instance(void{return m_Instance;}

protected:
    CSingletonObj(
void); //防止構(gòu)造與拷貝
    CSingletonObj(const CSingletonObj&);

private:
    
static CSingletonObj m_Instance;
}
;
#include <memory>

using namespace std;

template<class  T>
class Singleton
{
public:
static T* GetInstance();

protected:
Singleton(void) {}
~Singleton(void) {}
Singleton(const Singleton&) {}
Singleton & operator = (const Singleton&) {}

private:
static auto_ptr<T> _instance;
};


template <class T>
auto_ptr<T> Singleton<T>::_instance;

template <class T>
inline T* Singleton<T>::GetInstance()
{
if( 0 == _instance.get())
{
// 加入臨界區(qū),可實(shí)現(xiàn)多線程安全
_instance.reset ( new T);
}

return _instance.get();
}
//////////////////////////////////////////////////////////////////////////
//使用
class Test : public Singleton<Test> 
public: 
void foo(); 
private: 
Test(); 
~Test(); 
friend class Singleton<Test>; 
}; 
posted @ 2008-11-11 16:58 黑色天使 閱讀(292) | 評論 (0)編輯 收藏
將以前的代碼在vc2005下編譯,經(jīng)常會遇到類似如下的警告: warning C4996: 'strcat' was declared deprecated. 通常這類警告都是由于調(diào)用了字符串相關(guān)函數(shù)引起的。雖然這警告無傷大雅,僅僅只是說使用的函數(shù)已過時(deprecated)&lt;需要用新的函數(shù)來替代&gt;,但看著實(shí)在別扭,且看看ms為什么要設(shè)置成這樣。
    搜索了一下ms的網(wǎng)站,找到了結(jié)果。ms認(rèn)為以前的c/c++庫中有一部分函數(shù)不夠安全,希望程序員可以使用他們的替代安全庫(Safe Library)來避免不必要的隱患。 整個原文請點(diǎn)擊以下鏈接訪問:Repel Attacks on Your Code with the Visual Studio 2005 Safe C and C++ Libraries  
    在網(wǎng)上搜索到的最常用的解決方案,那就是定義 _CRT_SECURE_NO_DEPRECATE 和 _SCL_SECURE_NO_DEPRECATE 來禁止vc2005對此產(chǎn)生警告(依然使用的是非安全庫!顯然并不是一個好的解決方案)。而且如果使用了ATL,則還需要定義 _ATL_SECURE_NO_DEPRECATE, 使用了MFC則需要定義 _AFX_SECURE_NO_DEPRECATE。然而盡管如此,更好的解決方案只需要定義一個宏 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES, 那么vc將會自動替換使用他們的Safe Library來代替C/C++標(biāo)準(zhǔn)庫(如strcat將被strcat_f來取代)。
    即使使用了_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES,代碼將依舊不夠安全:(, 對此,ms提出了如下10點(diǎn)建議:
    1. 不要認(rèn)為 strcpy_s 和 strncpy_s( 以及其他的字符串函數(shù))(在空間不夠的時候)會自動終止拷貝(truncate截斷,不截斷則意味著溢出).如果需要自動截斷,請使用strncpy_s (同時使用_TRUNCATE作為長度參數(shù))。
    2. 記住fopen_s缺省是獨(dú)占模式。如需共享使用文件,應(yīng)該使用_sopen。
    3. 別忘了_dupenv_s, 它將比_getenv_s更容易使用,因?yàn)樗茏詣臃峙湟粋€正確長度的內(nèi)存(buffer)。
    4. 在scanf_s中小心參數(shù)順序。
    5. 確定printf_s中格式字符串的正確。
    6. 使用_countof(x)來取代sizeof(x)/sizeof(element). _countof將會正確的計算元素個數(shù),而且如果x是一個指針,編譯器將會發(fā)出一個警告(來提醒程序員,僅針對C++編譯)
    7. 記住所有的sizes(大小,非長度)都是使用characters(字符,unicode下一個字符占2個byte)作為單位,而不是bytes(字節(jié)).
    8. 記住所有的sizes(大小,非長度,緣由同上)包含了字符串結(jié)束符'\0'(即別忘了很多情況下size需要+1)。
    9. 調(diào)試的時候監(jiān)視數(shù)據(jù)0xfd。 (在調(diào)試版本下)0xfd將會被填充在數(shù)據(jù)(buffer,通常是字符串)的結(jié)尾處。如果運(yùn)行非你所愿,可能會得到一個長度錯誤。
    10. 檢查所有的錯誤。 許多新函數(shù)相比舊函數(shù),能返回(表示)錯誤信息(的數(shù)值)。
    今天在把以前的項(xiàng)目port到VC2005上來時,碰到了不少問題,大都和字符處理相關(guān)。VC2005中默認(rèn)的字符處理函數(shù)都是調(diào)用雙字節(jié)版本,而且直接在代碼中輸入的字符串都默認(rèn)為雙字節(jié)的。
    在項(xiàng)目的轉(zhuǎn)換Log中發(fā)現(xiàn)這一段:The C/C++ compiler default settings have been modified to be more compliant with ISO Standard C++. Included in those changes are enforcing Standard C++ for loop scoping and supporting wchar_t as a native type. These changes may cause existing code to no longer compile without changes to the code or the compiler options with which it is built.
    Standard C++ 有要求wchar_t作為默認(rèn)的字符類型嗎?只好先在Project->Properties->Configuration Properties->C/C++->Language中的選項(xiàng)"Treate wchar_t as Build-in Type"設(shè)置為No
    還有一點(diǎn)就是VC2005的CRT用的是新版的Security-Enhanced Versions of CRT Functions,有關(guān)字符串處理的相關(guān)函數(shù)都被建議用后綴加上"_s"的版本,這樣的話,在從以前項(xiàng)目的轉(zhuǎn)換中會出現(xiàn)一大堆的warnings,做好的解決辦法是:在預(yù)編譯頭文件中的任何include之前加入:  
    //for Secure Template Overloads of Security-Enhanced Versions of CRT Functions
    #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
    定義這個宏就會默認(rèn)使用Security-Enhanced CRT,即使你的代碼中用的并不是加后綴_s的函數(shù)版本,因?yàn)樗趲熘惺褂昧艘粋€小技量:函數(shù)重載。
    但是即使你完全按照上面的做了,在編譯代碼的時候還是會出現(xiàn)一大堆煩人的warnings,你可能會說“我不是已經(jīng)用新版的CRT了嗎?” 是的,沒錯!那是在鏈接的時候做的,但是編譯器在編譯你的代碼的時候并不清楚,它只認(rèn)你上面寫的是什么,沒"xxx_s";,就給你好看!不讓它們出現(xiàn)有兩種辦法,我們首先想到的就是可以在預(yù)編譯頭文件里加上#pragma warning (disable :xxxx),這樣也不失為一個處理的辦法。另外一個是VS2005自帶MSDN中說明的辦法,同上,在stdafx.h沒include任何頭文件之前定義一個宏:
    //for no more warns about the Security-Enhanced Versions of CRT Functions
    #define _CRT_SECURE_NO_DEPRECATE
   【系統(tǒng)分析】【編譯】【代碼升級】升級到Visual C++ 2005庫要注意事項(xiàng)
    Visual C++庫的十項(xiàng)突破性變化</p><p>Visual C++ 2005庫已經(jīng)發(fā)生了一系列的變化,可能會對現(xiàn)有的程序有所影響,在升級到Visual C++ 2005之前,必須要確定程序中沒有這些問題。
    1、參數(shù)的有效性
    在C運(yùn)行時庫中,加入了一些代碼,以檢查參數(shù)的有效性。例如:如果傳遞的目標(biāo)緩沖區(qū)大小不足以strcpy使用--通常這是在冒安全風(fēng)險,而新版本此時則會調(diào)用一個非法參數(shù)處理程序。在release版中,會調(diào)用Dr.Watson;而在debug版中,會產(chǎn)生斷言(assert),當(dāng)然,只要程序中傳遞的參數(shù)都是有效的,就不會有什么問題了。
    2、對非安全API的警告
    在Visual C++ 2005中,CRT中的一組函數(shù)已不再建議使用,而應(yīng)使用新提供的安全版本。大多數(shù)這些不建議使用的函數(shù)如果使用不當(dāng),將會導(dǎo)致緩沖區(qū)溢出或其他安全問題,這些函數(shù)如:strcpy、strcat等等。這些函數(shù)新的安全版本都在函數(shù)名后加了一個_s后綴,以方便識別,如strcpy_s、wcscpy_s、mbscpy_s、calloc_s和strcat_s這些函數(shù)。如果想繼續(xù)使用老版本、非安全的函數(shù),可在源代碼開始處加上#define value of _CRT_SECURE_NO_DEPRECATE(此處value代表某一數(shù)值);然而,還是建議大家升級代碼使用新的安全函數(shù)。
    3、迭代器越界
    受檢查的迭代器(checked iterators)和調(diào)試迭代器(debug iterators)也因?yàn)榘踩脑蜻M(jìn)行了相應(yīng)的更新,如果迭代器越界,則相應(yīng)會調(diào)用一個非法參數(shù)處理程序。再次提醒,可以通過拋出一個越界異常來避免產(chǎn)生非法參數(shù)問題。在代碼中加入#define value of _SECURE_SCL_THROWS,并把value值設(shè)為1,這樣就不會調(diào)用非法參數(shù)處理程序,而是產(chǎn)生一個異常了。也可以通過設(shè)置#defined value of _SECURE_SCL值為零,關(guān)閉此迭代器檢查,通常默認(rèn)情況下,此選項(xiàng)是打開的。
    4、time_t類型
    time_t類型通常用于顯示從1970年開始以來的秒數(shù)。直到Visual C++ 7.1(即Visual C++ .NET 2003),time_t類型都被定義為一個long,而到了Visual C++ 2005中,已被定義為一個64位類型,可用于顯示一直到3000年的時間了。
    5、鏈接到CRT
    托管應(yīng)用程序現(xiàn)在不能靜態(tài)鏈接到CRT。以往,在Visual C++ 7.0和7.1中(指Visual Studio .NET 2002與2003),可以生成靜態(tài)鏈接到CRT的CLR程序,而在Visual Studio 2005卻行不通。
    6、單線程CRT支持
    在Visual Studio 2005中,已經(jīng)取消了單線程CRT支持。而且用發(fā)展的眼光來看,未來大多數(shù)的人還是愿意使用線程安全的多線程代碼。<br />在線程中,可使用_nolock后綴來優(yōu)化代碼,但同時,這些函數(shù)是非線程安全的。
    7、異常處理
    有兩種類型的異常處理可供選擇:/EHa(異步的)和/EHs(同步C++異常)。在以前,如果使用了/EHs,那么在一個catch(…)塊中,也許可能、也許不可能捕捉到結(jié)構(gòu)化異常,因?yàn)榇诵袨槭菦]有定義且不可靠的;現(xiàn)在,再使用/EHs時,就可保證不會捕捉到結(jié)構(gòu)化異常。如果想與以前版本的Visual C++保持一致,并且捕捉異步結(jié)構(gòu)化異常,還是應(yīng)該在編譯時使用/EHa。
    8、初始化順序
    以往,如果代碼中同時有托管與本地全局變量及對象,那么初始化順序是不確定的;如代碼中存在托管對象與本地對象互操作,就不能保證哪一個對象先初始化了。現(xiàn)在,Visual Stuio 2005可保證所有的本地全局變量及對象先初始化,然后才初始化托管全局變量及對象。
    9、printf
    就目前來說,printf中的%n格式化指示符一般用于指定輸出的字符個數(shù)。這已經(jīng)確認(rèn)為一個安全隱患,并且已禁用,但可以使用set_printf_count_output來啟用它;通過傳遞給set_printf_count_output一個零值(0)可禁用它,而傳遞任意一個其他值可再次啟用。
   10、swprintf函數(shù)
    為與C++標(biāo)準(zhǔn)保持一致,對swprintf函數(shù)也作了修改,現(xiàn)在它已遵循C++標(biāo)準(zhǔn)了。在C++中,通過適當(dāng)?shù)膮?shù),可實(shí)現(xiàn)重載;這個函數(shù)的老版本已不再建議使用,因?yàn)樵贑中,是不允許重載的,因此如果使用老格式,將會返回一個錯誤。
    編譯器中的突破性變化
    除了那些會影響到庫的變化之外,也有一些變化會影響到編譯器。以下是Visual C++ 2005中編譯器的主要變化,需再次提醒的是,此處并沒有列出所有的變化,但卻是微軟公司VC++使用者及內(nèi)部合作者所確認(rèn)的關(guān)鍵性變化。
    指向成員的指針
    在之前的版本中,一個指向成員的指針不需使用取址操作符(&)就能獲取,現(xiàn)在,Visual C++ 2005已經(jīng)嚴(yán)格按照標(biāo)準(zhǔn),必須要使用取址操作符,這也有助于消除潛在的運(yùn)行時錯誤。但也導(dǎo)致了MFC庫的許多地方需要修改,同時意味著,可能會對現(xiàn)有的程序造成影響。
    范圍限制規(guī)則
    在for循環(huán)聲明中,默認(rèn)情況下不強(qiáng)制執(zhí)行范圍限制規(guī)則。在之前的版本中,for循環(huán)中變量的生命期將會延續(xù)到循環(huán)之外,為與標(biāo)準(zhǔn)兼容,for循環(huán)中定義的變量,現(xiàn)在只限定在for循環(huán)內(nèi)使用。
    wchar_t類型
    現(xiàn)在,wchar_t已為默認(rèn)內(nèi)置類型。這就是說,也許在以前,wchar_t可能會被當(dāng)作一個unsigned short,因?yàn)樗€不是內(nèi)置類型,所以,當(dāng)與那些有wchar_t類型變量的文件作符號比較時,很可能會導(dǎo)致問題。在Visual C++ 2005中,wchar_t已是一個內(nèi)置類型,也就是說,需要確定以前對wchar_t的用法不會導(dǎo)致轉(zhuǎn)譯為一個unsigned short。
    異常處理
    為了與庫的變化保持一致,編譯器已作了一些修改,以便不會捕捉到結(jié)構(gòu)化異常。所以,為與以前代碼保持兼容,還是應(yīng)該使用/EHa。
    參數(shù)屬性
    為了提供更健壯的屬性--也是為了代碼的健壯性,編譯器現(xiàn)在將會檢查類型、枚舉等等的屬性。這意味著,以前的代碼可能會在屬性方面碰到一個從未有過的編譯器錯誤。
    默認(rèn)為int
    為遵循C++標(biāo)準(zhǔn),對沒有類型聲明的變量或函數(shù),已不再默認(rèn)為int類型。但在C語言中仍然可以,C++語言中已不行。這甚至也影響到了微軟公司自身的代碼,包括NT系統(tǒng)的代碼,所以最好的方式,還是顯式聲明。
    關(guān)于C的托管代碼
    C語言編譯器一般不可能創(chuàng)建CLR的托管代碼,因?yàn)镃語言不是面向?qū)ο蟮模环螩LR所使用的模型,因此,任何以C語言來編譯的代碼都會與CLR編譯器設(shè)置沖突。例如,如果在編譯時使用/TC設(shè)置,而且又設(shè)置了CLR,就會導(dǎo)致沖突。
    面向CLR的新語法
    通過設(shè)置/clr編譯選項(xiàng),C++編譯器只接受新語法。這將強(qiáng)制推廣加入到Visual C++ 2005中的新語法,同時,也會廢棄掉老代碼。
    安全檢查
    在安全越來越得到重視的今天,安全檢查選項(xiàng)/GS,在默認(rèn)情況下就是打開的,還是有一定道理的。在Visual C++ 2005中,默認(rèn)情況下將會使用/GS選項(xiàng)。
    結(jié)論:本文列出了微軟公司已確認(rèn)的Visual C++ 2005中的一些關(guān)鍵性變化,雖然不是所有的變化,也不是最有可能沖擊到代碼的變化,但此處所列出的項(xiàng)目,將最有可能導(dǎo)致問題的產(chǎn)生。歸根結(jié)底,在升級或用新版編譯器對程序作修改之前,必須先試著編譯現(xiàn)有程序,以確認(rèn)代碼能通過編譯,否則,就不可避免要動手修正源代碼中存在的問題。
posted @ 2008-10-17 14:49 黑色天使 閱讀(643) | 評論 (0)編輯 收藏
僅列出標(biāo)題
共5頁: 1 2 3 4 5 

<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(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>
            亚洲乱码国产乱码精品精可以看 | 制服丝袜激情欧洲亚洲| 国产精品资源在线观看| 欧美日韩综合精品| 国产精品激情av在线播放| 欧美日韩免费观看一区三区| 欧美视频日韩| 国产亚洲欧美日韩精品| 一区免费视频| 日韩手机在线导航| 香蕉亚洲视频| 久久综合九色九九| 亚洲日本乱码在线观看| 亚洲精品久久| 在线观看欧美精品| aa日韩免费精品视频一| 亚洲欧美激情四射在线日 | 久久成人精品电影| 欧美日本一区二区视频在线观看| 国产精品免费网站在线观看| 狠狠色丁香久久综合频道| 亚洲激情欧美激情| 欧美一区二区播放| 亚洲精品乱码久久久久久| 香蕉久久夜色精品国产使用方法| 美女亚洲精品| 国产伦精品一区二区三区视频黑人| 伊人成人在线| 欧美一区二区三区播放老司机| 欧美大片免费看| 午夜国产欧美理论在线播放| 男人插女人欧美| 国产一区二区三区最好精华液| 亚洲黄色小视频| 久久野战av| 亚洲欧美美女| 欧美午夜精品| 一本久道久久久| 欧美激情女人20p| 欧美中在线观看| 国产精品网站视频| 亚洲色诱最新| 亚洲欧洲午夜| 麻豆成人综合网| 国产亚洲精品一区二555| 亚洲影院色在线观看免费| 欧美成人中文| 久久久精品视频成人| 国产日本欧美一区二区三区| 亚洲欧美国产77777| 亚洲精选视频免费看| 免费视频一区二区三区在线观看| 狠狠色丁香婷婷综合| 欧美在线|欧美| 亚洲一区欧美激情| 国产精品一二三| 亚洲欧美视频在线观看视频| 日韩午夜电影av| 欧美性开放视频| 亚洲女与黑人做爰| 亚洲一区二区在线看| 国产精品免费视频观看| 亚洲欧美一区二区原创| 在线视频亚洲欧美| 国产精品激情av在线播放| 香蕉久久久久久久av网站 | 欧美激情网友自拍| 亚洲精品国精品久久99热一| 欧美福利电影网| 免费成人小视频| 欧美极品在线播放| 一区二区免费在线播放| 亚洲美女诱惑| 国产精品午夜在线观看| 欧美在线观看一区二区| 久久国产直播| 亚洲精品男同| 亚洲深夜福利在线| 国内精品久久久久久久影视麻豆| 免费永久网站黄欧美| 欧美日韩高清免费| 久久爱www| 欧美不卡在线视频| 午夜亚洲伦理| 免费成人激情视频| 午夜免费在线观看精品视频| 久久久久.com| 一区二区高清在线观看| 欧美亚洲一区三区| 日韩视频在线你懂得| 亚洲欧美在线aaa| 亚洲精品一区二区三区蜜桃久| 一区二区三区高清| 在线观看视频免费一区二区三区| 亚洲精品一区二区三区99| 国产欧美日韩综合| 亚洲区在线播放| 国内外成人在线视频| 亚洲精品久久久久中文字幕欢迎你| 国产精品美女黄网| 欧美激情亚洲自拍| 国产一区美女| 夜夜爽www精品| 亚洲国产毛片完整版| 亚洲免费中文| 一区二区三区视频在线| 久久久人人人| 久久国内精品视频| 欧美视频中文字幕在线| 欧美黄色一区二区| 国产亚洲欧美另类中文 | 欧美1区视频| 久久久国际精品| 国产精品美女黄网| 一区二区三区黄色| 日韩网站在线| 欧美激情a∨在线视频播放| 久久综合网络一区二区| 国产欧美日韩一区二区三区在线观看| 亚洲全部视频| 日韩一区二区福利| 免费影视亚洲| 欧美大片在线看| 亚洲成人中文| 久久免费视频在线观看| 久久精品一二三区| 国产日韩欧美一区二区| 亚洲永久免费av| 午夜精品av| 国产精品萝li| 亚洲欧美日韩国产中文| 午夜精品一区二区三区在线| 国产精品白丝av嫩草影院| 一区二区三区久久久| 这里只有视频精品| 午夜亚洲一区| 亚洲午夜国产一区99re久久 | 久久国产主播精品| 国产嫩草一区二区三区在线观看| 一个人看的www久久| 亚洲一区二区欧美日韩| 国产精品久久77777| 亚洲在线视频免费观看| 久久不见久久见免费视频1| 国产精品手机在线| 午夜免费在线观看精品视频| 久久成人免费视频| 激情综合电影网| 免费久久99精品国产| 亚洲激情啪啪| 亚洲一区二区三区免费视频| 国产精品国产三级欧美二区 | 欧美区亚洲区| 亚洲视频视频在线| 久久精品国产亚洲aⅴ| 精品不卡一区二区三区| 媚黑女一区二区| 国产一区99| 免费亚洲一区二区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久久久久久久蜜桃| 亚洲精品国精品久久99热一| 欧美日韩国产美女| 亚洲欧美在线另类| 欧美黄色免费| 亚洲欧美一级二级三级| 在线看视频不卡| 欧美日韩一区综合| 久久九九99视频| 一区二区三区国产| 美脚丝袜一区二区三区在线观看 | 亚洲欧美999| 亚洲电影欧美电影有声小说| 亚洲一区二区精品视频| 国内精品国产成人| 欧美日韩视频在线一区二区观看视频| 亚洲欧美精品在线| 亚洲人www| 久久尤物视频| 亚洲免费中文| 日韩午夜电影av| 一区二区自拍| 国产精品一区一区三区| 欧美韩国日本综合| 久久精品九九| 亚洲欧美日韩人成在线播放| 91久久久久久国产精品| 老司机精品导航| 欧美中在线观看| 亚洲专区一区| 99一区二区| 最新亚洲视频| 狠狠色丁香婷婷综合| 欧美在线网址| 中文久久乱码一区二区| 91久久久亚洲精品| 欧美高清不卡在线| 另类欧美日韩国产在线| 欧美一区二区三区啪啪| 亚洲专区一二三|