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

Error

C++博客 首頁 新隨筆 聯系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

#

查看和設置ndk使用的gcc版本
設置toolchain的方法是在Application.mk中設置:
NDK_TOOLCHAIN_VERSION = 4.7
為了確認是否設置成功,在ndk-build調用時增加參數V=1。即 ndk-build V=1 ..其他參數..
結果會顯示:
/Developer/sdks/Android-ndk-r8e/toolchains/arm-Linux-androideabi-4.7/prebuilt/darwin-x86_64/bin/arm-Linux-androideabi-g++ -MMD -MP -MF ....
posted @ 2017-03-31 19:32 Enic 閱讀(742) | 評論 (0)編輯 收藏

// lambda_test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <functional>
// 利用rtii觀察堆棧生命周期
class StackLifeTimeWatching
{
public:
StackLifeTimeWatching()
{
std::cout << __FUNCTION__ << std::endl;
}
~StackLifeTimeWatching()
{
std::cout << __FUNCTION__ << std::endl;
}
};
// 經驗: 保存lambda表達式的變量被銷毀后,該表達式對應的閉包會銷毀。應該保證閉包在lambda表達式變量的生命周期之內執行,否則程序執行結果不可預知!
// 1.理解lambda首先要理解函數對象,和閉包
// 2.理解必包的基礎上,理解lambda如何實現閉包
// 3.理解閉包以后,需要分析設置不同的capture的情況下分別是如何實現閉包
//   1)閉包意味著一個函數地址 + 一組封裝好的參數。
//   2)閉包可以被拷貝,但是每個閉包中的參數可以是不一樣的
// 4.理解函數對象和lambda的關系: lambda可以理解成函數,但是當lambda賦值給一個函數對象的時候,編譯器應該是把lambda構造成了一個閉包的function
//   1)根據匯編碼分析,lambda對象類似于函數指針(但是類型系統和函數指針是完全不同的概念,可以用decltype(lambda)來鑒定),本質和函數對象是不一樣的。
//   2)定義一個lambda表達式相當于定義一個函數(觀察會變碼,lambda表達式是沒有構造和析構的)
//   3)把函數指針賦值給一個std::function,和吧lambda賦值給一個std::function的效果是完全不一樣的。一個這是指針賦值操作,另一個則是完整的閉包。
//   4)經過代碼實際測試,lambda是鑒于函數指針和函數對象之間的一個玩意,它也是一個特殊的類型,這個具體只能看C++標準文檔了。
//   5)boost asio異步接口中的functor可能是利用了meta編程技巧,或者他本身每一次發起異步操作都會形成一個獨立的閉包,解決了函數對象和socket對象生命周期綁定的關系
//      應為如果是functor實現,宿主對象析構,一定會造成作為成員變量的functor銷毀,同時引起lambda閉包混亂(不僅閉包參數亂掉,閉包函數本身也呈現混亂)。
//      由此分析,閉包中的任何一行代碼都必須在閉包本身的聲明周期內執行。似乎可以理解成,lambda閉包是把lambda函數本身也當作一個特殊的參數來完成閉包封裝的。
//      通過會變碼觀察,在使用不同的lambda變量調用lambda表達式的時候,會在ecx寄存器壓入不同的值,然后會讀取一塊關聯的內存。
//   6)vc2015下的lambda永遠都是4字節,這應該是編譯器實現細節了,按說應該是隨著閉包內容的大小變化而變化。我猜測,這四個字節應該指向一個塊內存,里邊的數據是用來還原“lambda”函數執行棧的閉包
// 5.通俗的理解上述分析: lambda對象(變量)是一塊內存,內存里邊是lambda表達式本身的副本。當執行lambda表達式對象的時候,實際是執行對象對應的內存中的代碼,如果對象被析構了,對應的代碼也就是未知代碼。
void Test1();
void Test2();
int main()
{
Test2();
    return 0;
}
void Test2()
{
int n = 0;
auto lambda = [&]()->void
{
StackLifeTimeWatching stackWatching;
n = 1;
int j = 0;
int j1 = 0;
int j2 = 0;
int j3 = 0;
int j4 = 0;
int j5 = 0;
};
decltype(&lambda) pLambda0 = &lambda;
decltype(&lambda) pLambda = NULL;
int nSize = sizeof(lambda);
{
decltype(lambda) lambda_copy = lambda;
lambda_copy();
}
(*pLambda0)();  // 正常掉用
(*pLambda)();  // 調用后整個閉包混亂
}
void Test1()
{
StackLifeTimeWatching p();
int n = 0;
std::function<void()> func;
std::function<void()>* pFunc = new std::function<void()>;
{
//std::function<void()> func = [&]()->void
//{
// StackLifeTimeWatching stackWatching;
// n = 1;
//};
//func();
auto lambda = [&]()->void
{
StackLifeTimeWatching stackWatching;
n = 1;
};
lambda();
func = lambda;
auto lambda2 = [&]()->void
{
delete pFunc;
pFunc = NULL;
StackLifeTimeWatching stackWatching;
n = 1;
};
//decltype(lambda) lambda_copy = lambda2; 編譯錯誤,應為編譯器會把每一個lambda表達式當作一個獨立的類型,這是lambda不同于函數指針的地方,函數指針是根據參數來決定類型的
decltype(lambda) lambda_copy = lambda;
*pFunc = lambda2;
}
func();
(*pFunc)();
}
posted @ 2017-03-22 22:41 Enic 閱讀(1858) | 評論 (0)編輯 收藏

實現在CCGeometry.js
Point:
type: cc.Point(x,y)
help functon: 
cc.p(x,y)
cc.pointEqualToPoint(p1, p2)
cc.Size()
cc.size();
cc.sizeEqualToSize
cc.Rect()
cc.rect()
cc.rectEqualToRect()
cc._rectEqualToZero()
cc.rectContainsRect()
cc.rectGetMaxX
cc.rectGetMidX
cc.rectGetMinX
cc.rectGetMaxY
cc.rectGetMidY
cc.rectGetMinY
cc.rectContainsPoint
cc.rectIntersertsRect
cc.rectOverlapsRect
cc.rectUnion
cc.rectInterserction
// 可視區域
cc.visibleRect()


經過實際調試:
Point: 有x y屬性可以直接使用
Size: width height
Rect: x y width height
posted @ 2017-03-19 10:54 Enic 閱讀(177) | 評論 (0)編輯 收藏

1.創建的時候給明確地址和端口,創建完成后直接可以accept
2.open bind listen accept完整套路
posted @ 2017-03-16 21:56 Enic 閱讀(192) | 評論 (0)編輯 收藏

1.直接close:客戶端接收數據不完整,本地系統關閉socket,客戶端收不到完整數據
2.shutdown_both:客戶端接收數據不完整,end of file
3.shutdown_receive: 客戶端接收數據完整
3.shutdown_send: 客戶端接收數據不完整,遠程主機關閉鏈接
關閉socket,但是確保對端一定收到數據的手段是:
1.shutdown_receive,同時在應用層確認全部數據已經投遞到tcp堆棧,然后調用close
2.設計應用層關閉協議,由接收方主動關閉
posted @ 2017-03-16 21:54 Enic 閱讀(593) | 評論 (0)編輯 收藏

apt-get install mysql-server
apt-get install apache2
apt-get install php5
apt-get install php5-mysql
apt-get install php5-gd
apt-search php5
apt-get install libapache2-mod-php5.6
apt-get install libapache2-mod-auth-mysql
apt-get install openjdk
sudo apt-get purge openjdk/openjdk
apt-get install python-software-properties
apt-get install software-properties-common
apt-get install -y language-pack-en-base
LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
add-apt-repository ppa:ondrej/php
apt-get update
apt-cache search php5
apt-get install php5.5-common
apt-get install libapache2-mod-php5.5
apt-get install php5.6
apt-get install php5.6-mysql
apt-get install php5.6-gd
apt-get install php7.1-mcrypt
apt-get install php-mbstring
apt-get install php7.1-mbstring
lsof -i:80   權限查詢
/etc/init.d/apache2 restart
netstat -tupln
/etc/apache2/ports.conf
vi /etc/apache2/sites-enabled/000-default.conf  修改默認站點的root路徑
sudo apt-get install phpmyadmin
ln -s /usr/share/phpmyadmin
sudo apt-get install wordpress
ln -s /usr/share/wordpress
cp wp-config-sample.php wp-config.php
vi wp-config.php
mysql: create database WordPress
ls /usr/share
ls /var/www/
WordPress
posted @ 2017-03-10 14:13 Enic 閱讀(145) | 評論 (0)編輯 收藏

// RandomTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <iostream>
#include <cmath>
#include <random>
#include <cstdint>
#include <ctime>
#include <algorithm>
#include <numeric>
#include <cassert>
#include <climits>
#include <thread>

#define XASSERT(exp) assert(exp)
#define XASSERT_MSG(exp, msg) assert(exp)
#define X_DEFAULT_FLOAT_PRECISION (0.00000001)

// @in: 總次數、目標比例(千分比)、算法類型(1.c標準庫rand; 2.cpp11 mt19937)
// @out: 實際命中次數、實際命中概率
bool RandomHitTest(int32_t nTotalCount, float fHitRate, int32_t nAlgorithmType, int32_t& nRealHitCount, float& fRealHitRate);
void RandomHitTest_std_mt19937(int32_t nTotalCount, float fHitRate, int32_t& nRealHitCount, float& fRealHitRate);
void RandomHitTest_std_rand(int32_t nTotalCount, float fHitRate, int32_t& nRealHitCount, float& fRealHitRate);
// 簡化std::rand獲取[nMin, nMax]區間的一個數字
uint32_t StdRandEx(uint32_t nMin, uint32_t nMax);


int _tmain(int argc, _TCHAR* argv[])
{
    //std::thread srandThread([](){ std::this_thread::sleep_for(std::chrono::seconds(1));});
    
//srandThread.detach();

    std::vector<std::tuple<floatfloat>> vecResult;

    for (int n = 0; n < 1000; n++)
    {
        uint32_t nTotalCount = 100000;  // 基數100000次

        for (float fHitRate = 0.001f; 1.f - fHitRate >= 0; fHitRate = fHitRate + 0.101f)
        {
            int32_t nRealHitCount = 0;
            float fRealHitRate = 0;

            // std::rand測試
            RandomHitTest(nTotalCount, fHitRate, 1, nRealHitCount, fRealHitRate);
            //std::cout << "AlgorithmType=" << 1 << ",TotlaCount=" << nTotalCount << ",HitRate=" << 
            
//    fHitRate  << ",ReahHitRate=" << std::fixed << fRealHitRate << ",RealHitCount=" << nRealHitCount << std::endl;


            int32_t nRealHitCount1 = 0;
            float fRealHitRate1 = 0;

            // cpp11 mt19937
            RandomHitTest(nTotalCount, fHitRate, 2, nRealHitCount1, fRealHitRate1);
            //std::cout << "AlgorithmType=" << 2 << ",TotlaCount=" << nTotalCount << ",HitRate=" << 
            
//    fHitRate  << ",ReahHitRate=" << std::fixed << fRealHitRate1 << ",RealHitCount=" << nRealHitCount1 << std::endl;
            
//std::cout << "---differ rate=" << std::fixed << fRealHitRate1 - fRealHitRate << ", differ count=" 
            
//    << nRealHitCount1 - nRealHitCount << std::endl;

            std::tuple<floatfloat> tupleResult = std::make_tuple(fHitRate, std::fabsf(fRealHitRate1 - fRealHitRate));
            vecResult.push_back(tupleResult);
        }
    }

    std::sort(vecResult.begin(), vecResult.end(), 
        [](std::tuple<floatfloat>& tupLeft, std::tuple<floatfloat>& tupRight)->bool{
            //float fHitRateL = 0;
            
//float fRealRateL = 0;

            
//float fHitRateR = 0;
            
//float fRealRateR = 0;
            return std::get<1>(tupLeft) - std::get<1>(tupRight) > 0;;
    });

    auto tupleFirst = vecResult[0];

    return 0;
}


uint32_t StdRandEx(uint32_t nMin, uint32_t nMax)
{
    XASSERT((nMin >= 0) && (nMax >= 0) && (nMin <= nMax));

    uint32_t nRandVal = 0;

    if (nMin == nMax)
    {
        nRandVal = nMax;
    }
    else if (nMin < nMax)
    {
        nRandVal = rand() % (nMax - nMin + 1) + nMin;
    }
    else
    {
        XASSERT_MSG(0, _T("參數異常"));
    }

    return nRandVal;
}

void RandomHitTest_std_rand(int32_t nTotalCount, float fHitRate, int32_t& nRealHitCount, float& fRealHitRate)
{
    nRealHitCount = 0;
    fRealHitRate = 0;

    if (nTotalCount <= 0 || fHitRate <= 0)
    {
        return;
    }

    // 計算浮點小數點個數
    int32_t nWeCount = 3;  // 位數(三位數,千分比精度)
    XASSERT((fHitRate * std::pow(10, nWeCount)) - std::numeric_limits<uint64_t>::max() <= X_DEFAULT_FLOAT_PRECISION);  // 永不溢出
    int64_t nHitRateIntHelp = static_cast<uint64_t>(fHitRate * std::pow(10, nWeCount));  // 概率轉整數輔助計算

    
// 根據位數決定隨機數范圍
    int32_t nRandMin = 0;
    int32_t nRandMax = std::pow(10, nWeCount);

    // 開始測試
    auto nTestCount = nTotalCount;
    while (nTestCount-- > 0)
    {
        // 生成隨機數
        int32_t nRandVal = StdRandEx(nRandMin, nRandMax);

        // 命中判定
        if (nRandVal < nHitRateIntHelp)
        {
            nRealHitCount++;
        }
    }

    fRealHitRate = float(nRealHitCount)/float(nTotalCount);
}

void RandomHitTest_std_mt19937(int32_t nTotalCount, float fHitRate, int32_t& nRealHitCount, float& fRealHitRate)
{
    nRealHitCount = 0;
    fRealHitRate = 0;

    if (nTotalCount <= 0 || fHitRate <= 0)
    {
        return;
    }

    // 計算浮點小數點個數
    int32_t nWeCount = 3;  // 位數(三位數,千分比精度)
    XASSERT((fHitRate * std::pow(10, nWeCount)) - std::numeric_limits<uint64_t>::max() <= X_DEFAULT_FLOAT_PRECISION);  // 永不溢出
    int64_t nHitRateIntHelp = static_cast<uint64_t>(fHitRate * std::pow(10, nWeCount));  // 概率轉整數輔助計算

    
// 根據位數決定隨機數范圍
    int32_t nRandMin = 0;
    int32_t nRandMax = std::pow(10, nWeCount);

    // 設置隨機數生成器
    std::random_device rd;
    std::mt19937_64 gen(rd());
    std::uniform_int_distribution<> dis(nRandMin, nRandMax);
    
    // 重設種子應該使用這個api:::CryptGenRandom
    
// linux也有相應的高精度隨機數
    gen.seed(uint32_t(time(NULL)));

    // 開始命中測試
    auto nTestCount = nTotalCount;
    while (nTestCount-- > 0)
    {
        // 生成隨機數
        uint32_t randVal = dis(gen);

        if (randVal < nHitRateIntHelp)
        {
            nRealHitCount++;
        }
    }

    fRealHitRate = float(nRealHitCount)/float(nTotalCount);
}


bool RandomHitTest(int32_t nTotalCount, float fHitRate, int32_t nAlgorithmType, int32_t& nRealHitCount, float& fRealHitRate)
{
    if (nTotalCount <= 0)
    {
        return false;
    }

    bool bRet = true;
    switch (nAlgorithmType)
    {
    case 1:
        RandomHitTest_std_rand(nTotalCount, fHitRate, nRealHitCount, fRealHitRate);
        break;
    case 2:
        RandomHitTest_std_mt19937(nTotalCount, fHitRate, nRealHitCount, fRealHitRate);
        break;
    default:
        bRet = false;
        break;
    }

    return true;
}

posted @ 2017-01-22 12:28 Enic 閱讀(1350) | 評論 (0)編輯 收藏

參考鏈接:http://www.cnblogs.com/dolphinX/p/3269145.html
最基礎的玩法:

var Plaza = {};
Plaza.HelloWorldLayer = cc.Layer

這樣解決不了多個文件中需要使用同一個名字控件而且需要共享的情況。


var Plaza = Plaza || {};
Plaza.HelloWorldLayer = cc.Layer
這樣簡單處理能搞定。

另外還有如下比較高階的函數玩法:

(function(){                 
   var _NS=function(){ }
   _NS.prototype.alert
=function(){
      console.log(
'test');
}
window.NS
=new _NS();
})();
posted @ 2016-12-21 10:15 Enic 閱讀(141) | 評論 (0)編輯 收藏

bSceneCutsomResolution決定適配策略ResolutionPolicy::EXACT_FIT會用縮放拉伸的方式適配

void
 CAutoScreen::SetSceneResolute(float w, float h, bool bSceneCutsomResolution)
{
    CAutoScreen::sceneCutsomResolution=bSceneCutsomResolution;

    if(bSceneCutsomResolution)
    {
        cocos2d::Size ls = Size(w, h);
        Size fs = Director::getInstance()->getOpenGLView()->getFrameSize();
        float sx = ls.width/fs.width;
        float sy = ls.height/fs.height;
    
        sceneResolute = ls;
    
        //定義 scale 變量
        resoluteBool = sx>sy;
        float scale = resoluteBool?sx:sy;
        SetSceneSize(resoluteBool?ls.width:fs.width*scale, resoluteBool?fs.height*scale:ls.height);
        SetSceneScale(resoluteBool?fs.height*scale/ls.height : fs.width*scale/ls.width);
    
        Director::getInstance()->getOpenGLView()->setDesignResolutionSize(GetSceneWidth(), GetSceneHeight(), ResolutionPolicy::SHOW_ALL);
    }
    else
    {
        sceneScale = 0.0f;
        sceneSize = Size(w, h);
        sceneResolute = Size(w, h);
        Director::getInstance()->getOpenGLView()->setDesignResolutionSize(w, h, ResolutionPolicy::EXACT_FIT);
    }
    Director::getInstance()->setContentScaleFactor(1.0f);
}
posted @ 2016-12-19 18:07 Enic 閱讀(241) | 評論 (0)編輯 收藏

1.暴力做法:
select * into [QPTreasureDB].dbo.[WinLoseScoreInfo2] from [QPTreasureDB].dbo.[WinLoseScoreInfo]
drop table [WinLoseScoreInfo]
select distinct * into [QPTreasureDB].dbo.[WinLoseScoreInfo] from [WinLoseScoreInfo2]

2.如果表中有id字段可以考慮:先根據指定字段查詢重復數據,然后根據不為已的id設置保留數據
select UserId, ServerId, DateId, count(*) as [count], @@rowid--, ROW_NUMBER()over(order by UserId, ServerId, DateId) 
from QPTreasureDB.dbo.WinLoseScoreInfo 
group by UserId, ServerId, DateId 
having count(*) > 1;
posted @ 2016-12-19 13:58 Enic 閱讀(132) | 評論 (0)編輯 收藏

僅列出標題
共22頁: 1 2 3 4 5 6 7 8 9 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产婷婷综合在线精品| 亚洲乱码国产乱码精品精98午夜| 欧美亚洲综合网| 亚洲特级毛片| 国产精品久久久久久久久久妞妞| 亚洲影音一区| 亚洲欧美激情视频在线观看一区二区三区| 国产精品大片免费观看| 亚洲欧美综合一区| 欧美在线网站| 亚洲激情午夜| 一区二区激情视频| 国内伊人久久久久久网站视频| 久久久999精品免费| 久久久亚洲午夜电影| 亚洲巨乳在线| 亚洲欧洲av一区二区三区久久| 国产偷国产偷精品高清尤物| 免费国产一区二区| 欧美日韩四区| 久久在线观看视频| 欧美精品电影| 久久精品国产欧美亚洲人人爽| 久久久久综合| 亚洲欧美日韩中文在线制服| 久久精品视频va| 一区二区三区视频在线观看| 久久国产精品久久w女人spa| 日韩一本二本av| 欧美在线免费观看亚洲| 亚洲三级电影全部在线观看高清| 亚洲一区高清| 日韩亚洲一区二区| 久久久久国产精品人| 一本色道婷婷久久欧美| 欧美在线91| 亚洲欧美激情在线视频| 美女黄色成人网| 久久精品噜噜噜成人av农村| 欧美久久久久免费| 久久综合九色综合欧美就去吻| 欧美日韩一区二区三区在线| 美女主播一区| 国产日本精品| 一区二区三区免费观看| 亚洲人成网站影音先锋播放| 欧美在线视频观看| 亚洲免费影视第一页| 欧美大片免费观看| 免费久久精品视频| 国产丝袜一区二区| 亚洲午夜激情| 亚洲伊人久久综合| 欧美色视频在线| 亚洲欧洲一区二区三区久久| 黑人一区二区| 欧美一区二区日韩一区二区| 亚洲欧美日韩人成在线播放| 欧美日韩在线不卡| 91久久精品www人人做人人爽| 伊人久久av导航| 久久久精品999| 久久亚洲捆绑美女| 国内揄拍国内精品久久| 欧美一区二区大片| 欧美综合二区| 韩日欧美一区| 久久青青草综合| 欧美成人精品不卡视频在线观看| 狠狠综合久久av一区二区小说| 香蕉亚洲视频| 美国十次了思思久久精品导航| 国模精品一区二区三区色天香| 亚洲欧美日韩一区二区三区在线观看| 亚洲自拍偷拍视频| 国产乱子伦一区二区三区国色天香| 正在播放亚洲| 久久国产精品99国产精| 国产综合欧美在线看| 欧美中文字幕久久| 欧美顶级艳妇交换群宴| 亚洲毛片视频| 国产精品乱码妇女bbbb| 欧美亚洲三区| 欧美成人蜜桃| 中文亚洲免费| 国产真实久久| 猛男gaygay欧美视频| 亚洲精品一区二区三区樱花| 午夜国产精品视频| 韩国在线视频一区| 欧美二区不卡| 亚洲综合电影| 亚洲国产va精品久久久不卡综合| 99这里只有精品| 国产区亚洲区欧美区| 久久久久免费| 亚洲天堂偷拍| 嫩草成人www欧美| 亚洲午夜在线视频| 极品尤物av久久免费看| 欧美精选午夜久久久乱码6080| 亚洲综合999| 欧美激情精品| 欧美一级电影久久| 亚洲巨乳在线| 国产一区二区三区四区在线观看| 美玉足脚交一区二区三区图片| 中文在线资源观看网站视频免费不卡| 久久国产婷婷国产香蕉| 亚洲另类自拍| 一色屋精品视频在线观看网站| 欧美日韩天天操| 久久网站热最新地址| 日韩亚洲不卡在线| 麻豆精品91| 欧美一区二区三区在线看| 亚洲精品一区二区三区四区高清 | 亚洲激情二区| 久久久xxx| 亚洲欧美一级二级三级| 最新热久久免费视频| 国产小视频国产精品| 欧美三级电影一区| 玖玖国产精品视频| 欧美一区日本一区韩国一区| 一本久道综合久久精品| 欧美激情一区二区三级高清视频| 久久精品人人爽| 亚洲欧美韩国| 亚洲新中文字幕| 中文av一区特黄| 99精品视频免费观看视频| 亚洲激情av| 亚洲国产一区二区a毛片| 激情久久久久久久| 国产亚洲精品久久久久久| 国产精品毛片a∨一区二区三区|国 | 一区二区三区精品| 91久久精品一区二区别| 欧美黄色一区二区| 欧美成人国产| 欧美成人第一页| 麻豆精品视频在线观看视频| 久久精品综合| 另类激情亚洲| 欧美成人精品在线观看| 欧美大片一区| 最新成人在线| 日韩一区二区免费高清| 一区二区三区欧美成人| 一本久久知道综合久久| 亚洲视频观看| 小黄鸭精品aⅴ导航网站入口| 亚洲欧美日韩综合| 久久高清免费观看| 另类天堂视频在线观看| 欧美国产日韩一区二区在线观看| 欧美大学生性色视频| 欧美美女喷水视频| 国产精品成人免费视频| 国产三级欧美三级| 在线观看日韩www视频免费| 亚洲国产日韩欧美在线99| 亚洲精品你懂的| 亚洲综合另类| 久久人人97超碰国产公开结果 | 日韩午夜中文字幕| 亚洲在线视频| 久久视频精品在线| 亚洲高清视频一区二区| 一区二区不卡在线视频 午夜欧美不卡在 | 国产日韩专区在线| 在线免费观看成人网| 日韩午夜在线观看视频| 午夜精品久久久久久久久久久久久| 欧美影院午夜播放| 欧美大片一区二区| 在线午夜精品| 久久嫩草精品久久久精品一| 欧美精品一区二| 国产亚洲精品久久久久久| 最新高清无码专区| 久久国产视频网站| 亚洲日本免费| 久久久久久97三级| 欧美系列一区| 亚洲国产精品电影在线观看| 亚洲欧美影院| 欧美激情一区二区久久久| 亚洲欧美国产高清va在线播| 欧美1区免费| 国内成人精品2018免费看| 一本久道久久久| 欧美波霸影院| 欧美一区激情| 国产精品视频午夜| 夜夜爽av福利精品导航| 欧美成人精品高清在线播放| 午夜精品av|