• <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>

            Error

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

            #

            查看和設(shè)置ndk使用的gcc版本
            設(shè)置toolchain的方法是在Application.mk中設(shè)置:
            NDK_TOOLCHAIN_VERSION = 4.7
            為了確認(rèn)是否設(shè)置成功,在ndk-build調(diào)用時(shí)增加參數(shù)V=1。即 ndk-build V=1 ..其他參數(shù)..
            結(jié)果會(huì)顯示:
            /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 閱讀(695) | 評(píng)論 (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;
            }
            };
            // 經(jīng)驗(yàn): 保存lambda表達(dá)式的變量被銷毀后,該表達(dá)式對(duì)應(yīng)的閉包會(huì)銷毀。應(yīng)該保證閉包在lambda表達(dá)式變量的生命周期之內(nèi)執(zhí)行,否則程序執(zhí)行結(jié)果不可預(yù)知!
            // 1.理解lambda首先要理解函數(shù)對(duì)象,和閉包
            // 2.理解必包的基礎(chǔ)上,理解lambda如何實(shí)現(xiàn)閉包
            // 3.理解閉包以后,需要分析設(shè)置不同的capture的情況下分別是如何實(shí)現(xiàn)閉包
            //   1)閉包意味著一個(gè)函數(shù)地址 + 一組封裝好的參數(shù)。
            //   2)閉包可以被拷貝,但是每個(gè)閉包中的參數(shù)可以是不一樣的
            // 4.理解函數(shù)對(duì)象和lambda的關(guān)系: lambda可以理解成函數(shù),但是當(dāng)lambda賦值給一個(gè)函數(shù)對(duì)象的時(shí)候,編譯器應(yīng)該是把lambda構(gòu)造成了一個(gè)閉包的function
            //   1)根據(jù)匯編碼分析,lambda對(duì)象類似于函數(shù)指針(但是類型系統(tǒng)和函數(shù)指針是完全不同的概念,可以用decltype(lambda)來鑒定),本質(zhì)和函數(shù)對(duì)象是不一樣的。
            //   2)定義一個(gè)lambda表達(dá)式相當(dāng)于定義一個(gè)函數(shù)(觀察會(huì)變碼,lambda表達(dá)式是沒有構(gòu)造和析構(gòu)的)
            //   3)把函數(shù)指針賦值給一個(gè)std::function,和吧lambda賦值給一個(gè)std::function的效果是完全不一樣的。一個(gè)這是指針賦值操作,另一個(gè)則是完整的閉包。
            //   4)經(jīng)過代碼實(shí)際測試,lambda是鑒于函數(shù)指針和函數(shù)對(duì)象之間的一個(gè)玩意,它也是一個(gè)特殊的類型,這個(gè)具體只能看C++標(biāo)準(zhǔn)文檔了。
            //   5)boost asio異步接口中的functor可能是利用了meta編程技巧,或者他本身每一次發(fā)起異步操作都會(huì)形成一個(gè)獨(dú)立的閉包,解決了函數(shù)對(duì)象和socket對(duì)象生命周期綁定的關(guān)系
            //      應(yīng)為如果是functor實(shí)現(xiàn),宿主對(duì)象析構(gòu),一定會(huì)造成作為成員變量的functor銷毀,同時(shí)引起lambda閉包混亂(不僅閉包參數(shù)亂掉,閉包函數(shù)本身也呈現(xiàn)混亂)。
            //      由此分析,閉包中的任何一行代碼都必須在閉包本身的聲明周期內(nèi)執(zhí)行。似乎可以理解成,lambda閉包是把lambda函數(shù)本身也當(dāng)作一個(gè)特殊的參數(shù)來完成閉包封裝的。
            //      通過會(huì)變碼觀察,在使用不同的lambda變量調(diào)用lambda表達(dá)式的時(shí)候,會(huì)在ecx寄存器壓入不同的值,然后會(huì)讀取一塊關(guān)聯(lián)的內(nèi)存。
            //   6)vc2015下的lambda永遠(yuǎn)都是4字節(jié),這應(yīng)該是編譯器實(shí)現(xiàn)細(xì)節(jié)了,按說應(yīng)該是隨著閉包內(nèi)容的大小變化而變化。我猜測,這四個(gè)字節(jié)應(yīng)該指向一個(gè)塊內(nèi)存,里邊的數(shù)據(jù)是用來還原“lambda”函數(shù)執(zhí)行棧的閉包
            // 5.通俗的理解上述分析: lambda對(duì)象(變量)是一塊內(nèi)存,內(nèi)存里邊是lambda表達(dá)式本身的副本。當(dāng)執(zhí)行l(wèi)ambda表達(dá)式對(duì)象的時(shí)候,實(shí)際是執(zhí)行對(duì)象對(duì)應(yīng)的內(nèi)存中的代碼,如果對(duì)象被析構(gòu)了,對(duì)應(yīng)的代碼也就是未知代碼。
            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)();  // 調(diào)用后整個(gè)閉包混亂
            }
            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; 編譯錯(cuò)誤,應(yīng)為編譯器會(huì)把每一個(gè)lambda表達(dá)式當(dāng)作一個(gè)獨(dú)立的類型,這是lambda不同于函數(shù)指針的地方,函數(shù)指針是根據(jù)參數(shù)來決定類型的
            decltype(lambda) lambda_copy = lambda;
            *pFunc = lambda2;
            }
            func();
            (*pFunc)();
            }
            posted @ 2017-03-22 22:41 Enic 閱讀(1844) | 評(píng)論 (0)編輯 收藏

            實(shí)現(xiàn)在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
            // 可視區(qū)域
            cc.visibleRect()


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

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

            1.直接close:客戶端接收數(shù)據(jù)不完整,本地系統(tǒng)關(guān)閉socket,客戶端收不到完整數(shù)據(jù)
            2.shutdown_both:客戶端接收數(shù)據(jù)不完整,end of file
            3.shutdown_receive: 客戶端接收數(shù)據(jù)完整
            3.shutdown_send: 客戶端接收數(shù)據(jù)不完整,遠(yuǎn)程主機(jī)關(guān)閉鏈接
            關(guān)閉socket,但是確保對(duì)端一定收到數(shù)據(jù)的手段是:
            1.shutdown_receive,同時(shí)在應(yīng)用層確認(rèn)全部數(shù)據(jù)已經(jīng)投遞到tcp堆棧,然后調(diào)用close
            2.設(shè)計(jì)應(yīng)用層關(guān)閉協(xié)議,由接收方主動(dòng)關(guān)閉
            posted @ 2017-03-16 21:54 Enic 閱讀(565) | 評(píng)論 (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   權(quán)限查詢
            /etc/init.d/apache2 restart
            netstat -tupln
            /etc/apache2/ports.conf
            vi /etc/apache2/sites-enabled/000-default.conf  修改默認(rèn)站點(diǎn)的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 閱讀(117) | 評(píng)論 (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: 總次數(shù)、目標(biāo)比例(千分比)、算法類型(1.c標(biāo)準(zhǔn)庫rand; 2.cpp11 mt19937)
            // @out: 實(shí)際命中次數(shù)、實(shí)際命中概率
            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]區(qū)間的一個(gè)數(shù)字
            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;  // 基數(shù)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("參數(shù)異常"));
                }

                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;
                }

                // 計(jì)算浮點(diǎn)小數(shù)點(diǎn)個(gè)數(shù)
                int32_t nWeCount = 3;  // 位數(shù)(三位數(shù),千分比精度)
                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));  // 概率轉(zhuǎn)整數(shù)輔助計(jì)算

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

                // 開始測試
                auto nTestCount = nTotalCount;
                while (nTestCount-- > 0)
                {
                    // 生成隨機(jī)數(shù)
                    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;
                }

                // 計(jì)算浮點(diǎn)小數(shù)點(diǎn)個(gè)數(shù)
                int32_t nWeCount = 3;  // 位數(shù)(三位數(shù),千分比精度)
                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));  // 概率轉(zhuǎn)整數(shù)輔助計(jì)算

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

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

                // 開始命中測試
                auto nTestCount = nTotalCount;
                while (nTestCount-- > 0)
                {
                    // 生成隨機(jī)數(shù)
                    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 閱讀(1314) | 評(píng)論 (0)編輯 收藏

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

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

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


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

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

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

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

            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 閱讀(212) | 評(píng)論 (0)編輯 收藏

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

            2.如果表中有id字段可以考慮:先根據(jù)指定字段查詢重復(fù)數(shù)據(jù),然后根據(jù)不為已的id設(shè)置保留數(shù)據(jù)
            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 閱讀(98) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題
            共22頁: 1 2 3 4 5 6 7 8 9 Last 
            久久伊人精品青青草原高清| 精品国产一区二区三区久久| 国内精品伊人久久久久| 久久中文字幕人妻丝袜| 国产AV影片久久久久久| 国产精品久久久久久久久| 精品久久人人爽天天玩人人妻| 老司机午夜网站国内精品久久久久久久久 | 精品久久久久久无码专区不卡| 欧美国产精品久久高清| 久久强奷乱码老熟女| 国产精品日韩深夜福利久久| 国产成人香蕉久久久久| 精品久久人人做人人爽综合| 国产精品va久久久久久久| 久久久九九有精品国产| 热久久这里只有精品| 久久91精品国产91久久小草| 久久成人影院精品777| 97久久精品人妻人人搡人人玩| avtt天堂网久久精品| 国产亚洲精品美女久久久| 久久精品国产亚洲沈樵| 国产成人精品久久一区二区三区av| 成人a毛片久久免费播放| 精品国产综合区久久久久久 | 中文成人久久久久影院免费观看| 久久青青草原精品国产不卡| 亚洲va久久久久| 狠狠干狠狠久久| 久久精品国内一区二区三区| 精品久久久无码中文字幕| 香蕉99久久国产综合精品宅男自| 香蕉久久影院| 色偷偷偷久久伊人大杳蕉| 色综合久久中文色婷婷| 欧美与黑人午夜性猛交久久久| 77777亚洲午夜久久多喷| 久久99国产精品久久99果冻传媒| 青青草国产成人久久91网| 亚洲国产日韩欧美久久|