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

Error

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

#

運行時使用非標準位置/usr/lib和/lib下的庫的方式有三種:
(1) 設(shè)置$LD_LIBRARY_PATH=庫所在目錄(多個目錄用:分隔),系統(tǒng)加載工具ld.so/ld-linux.so將順序搜索變量指定的目錄。例如#$LD_LIBRARY_PATH=/usr/local/mysql/lib ./test_mysql
(2) 以root身份把庫路徑加入/etc/ld.so.conf或在/etc/ld.so.conf.d中創(chuàng)建特定的.conf文件,然后運行l(wèi)dconfig更新/etc/ld.so.cache。例如:在/etc/ld.so.conf.d下創(chuàng)建文件mysql.conf寫入/usr/local/mysql/lib
(3) 另一種辦法就是把需要的庫copy到/usr/lib或/lib,但這不是建議的方法,特別是盡量避免copy發(fā)到/lib。但這種方法可以在編譯時免去用-L選項。



linux中動態(tài)鏈接庫的搜索順序

 (2008-12-23 10:03:20)
標簽: 

雜談

linux中動態(tài)鏈接庫的搜索順序 
//
// by kirk,2008.11.21,文中有bug請搞緊與我聯(lián)系:-)
//   
  

    在接手一個很古老的程序時,發(fā)現(xiàn)其所使用的動態(tài)庫都實在是太陳舊了,正式運行環(huán)境中部署的庫都是相適應(yīng)的,而目前的開發(fā)測試環(huán)境中均是部署的新的升級版本。為了能在這些環(huán)境下開發(fā)測試,程序得能在自定義的路徑里來搜索。因此在這里復習一下linux中程序?qū)討B(tài)鏈接庫的搜索順序,如下所述:

   1.首先查看程序文件的.dynamic 段是否包含了一個叫DT_RPATH的項(它是一個以冒號分隔的庫文件搜索目錄列表)。

   怎么設(shè)置這個選項?

   需要在編譯連接程序的時候使用-Wl,-rpath選項,假設(shè)一個程序test需要使用liblib.so庫,如下所示進行編譯連接:

    

g++ -o test -L. -llib -Wl,rpath=./ test.cpp
 

     這樣在執(zhí)行test程序時,test便會先到./即當前目錄下查找所需要的動態(tài)庫liblib.so

    2.查找是否存在環(huán)境變量 LD_LIBRARY_PATH(它是一個以冒號分隔的庫文件搜索目錄列表)。

   怎么設(shè)置這個選項?當然是設(shè)置linux下的環(huán)境變量就可以了。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
 

      當然,這種方法是對當前登錄生效的。如果想開機即有效,跟其它環(huán)境變量的設(shè)置也是一樣,需要修改一些配置文件。

    3.查看庫高速緩存文件 /etc/ld.so.conf ,它包含了庫名和路徑的一個對應(yīng)列表,如果庫名存在,連接器就使用它對應(yīng)的路徑,用這個查找方法能夠找到大部分的庫。

   怎么設(shè)置這個選項?可以直接編輯ld.so.conf加入需要查找的路徑,也可以在/etc/ld.so.conf.d目錄下的己有文件中加入路徑,或者在該目錄下新建一個文件(名字為*.conf即可),再把需要的路徑加入到該文件中。最后執(zhí)行l(wèi)dconfig即可生效。

    4.查找默認路徑/lib和/usr/lib,

    如果經(jīng)過了以上的步驟仍然查找失敗,則將報錯并退出相關(guān)程序。

    對于前三個步驟來說,我們均是可以進行設(shè)置調(diào)整的,其中第三個步驟中的設(shè)置需要root權(quán)限才能進行,且會影響所有的程序。當使用第一、第二中的方法進行了設(shè)置調(diào)整后,我們便可以使多種版本的庫共存在同一環(huán)境下進行測試,同名也無所謂。
 *********************************************************************

環(huán)境變量LD_LIBRARY_PATH用來指定查找共享庫時除了默認路徑之外的其他路徑。(該路徑在默認路徑之前查找)
移植程序時的經(jīng)常碰到需要使用一些特定的動態(tài)庫,而這些編譯好的動態(tài)庫放在我們自己建立的目錄里,這時我們可以設(shè)置LD_LIBRARY_PATH
例:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/work/lib/
這樣就可以使用/work/lib/下的庫文件了,運行程序后系統(tǒng)會自動到環(huán)境變量LD_LIBRARY_PATH指定的路徑中查找其所需的庫。
系統(tǒng)查找動態(tài)庫的順序
系統(tǒng)先找LD_LIBRARY_PATH下的庫再找/lib and /usr/lib等路徑下的庫,還有/etc/ld.so.conf里指定的路徑(如果ld.so.conf存在),man ldconfig for more information
[url=http://infomax/bbs/misc.php?action=viewratings&tid=111&pid=228][/url]
使Linux啟動之后就加載LD_LIBRARY_PATH的路徑
/etc/rc.d/rc.local文件中加入export   LD_LIBRARY_PATH="xxxxx"  即可
如果在鏈接時使用了"-R"和"-L"選項,則相關(guān)動態(tài)庫的路徑將保存在ELF文件中,于
是以后的運行中不再需要設(shè)置環(huán)境變量去定位動態(tài)庫。比如,有一個
/usr/local/lib/libfoo.so,而你的bar程序需要這個libfoo.so,編譯、鏈接時最好
這樣 :gcc -Wall -pipe -O3 -o bar -R/usr/local/lib -L/usr/local/lib bar.c -lfoo
(#man gcc ,沒發(fā)現(xiàn)-R或-rpath選項,待查)


posted @ 2015-08-18 17:42 Enic 閱讀(1142) | 評論 (0)編輯 收藏

require("wx")
--文檔需要結(jié)合wxWidget和wxLua來看,wxLua中明確的指定的導出的接口名字有些和wxWidget中不一樣
--wx.wxFrame只有一個子空間的時候會自動拉伸,所以用DLG把
dlg = wx.wxDialog(wx.NULL, wx.wxID_ANY, "wxLua例子",
                   wx.wxDefaultPosition, wx.wxSize(450,450),
                   wx.wxDEFAULT_FRAME_STYLE)
--創(chuàng)建新的ID
local ID_BTN_0 = wx.wxNewId();
local ID_BTN_1 = wx.wxNewId();
--使用ID創(chuàng)建button
btn = wx.wxButton(dlg, ID_BTN_0, "Button", wx.wxPoint(90,0), wx.wxSize(30,60))
btn:SetSize(wx.wxSize(30,60))
--btn:SetPosition(wx.wxPoint(0,0))
--設(shè)置按鈕事件
dlg:Connect(ID_BTN_1, wx.wxEVT_COMMAND_BUTTON_CLICKED,
    function(event) 
        wx.wxMessageBox("", "1")
    end
)
--C++版sdk是SetPositon,這里必須用move,很奇怪
btn1 = wx.wxButton(dlg, ID_BTN_1, "Button1", wx.wxPoint(0,0), wx.wxSize(30,60))
btn1:Move(wx.wxPoint(99,99))
dlg:Move(wx.wxPoint(99,99))
dlg:Show(true)
wx.wxGetApp():MainLoop()
posted @ 2015-08-14 15:43 Enic 閱讀(644) | 評論 (0)編輯 收藏

TCP之選項TCP_KETEPALIVE
 
KEEPALIVE機制,是TCP協(xié)議規(guī)定的TCP層(非應(yīng)用層業(yè)務(wù)代碼實現(xiàn)的)檢測TCP本端到對方主機的TCP連接的連通性的行為。避免服務(wù)器在客戶端出現(xiàn)各種不良狀況時無法感知,而永遠等在這條TCP連接上。
 
該選項可以設(shè)置這個檢測行為的細節(jié),如下代碼所示:
int keepAlive = 1;    // 非0值,開啟keepalive屬性
int keepIdle = 60;    // 如該連接在60秒內(nèi)沒有任何數(shù)據(jù)往來,則進行此TCP層的探測
int keepInterval = 5; // 探測發(fā)包間隔為5秒
int keepCount = 3;        // 嘗試探測的次數(shù).如果第1次探測包就收到響應(yīng)了,則后2次的不再發(fā)
setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepAlive, sizeof(keepAlive));
setsockopt(sockfd, SOL_TCP, TCP_KEEPIDLE, (void*)&keepIdle, sizeof(keepIdle));
setsockopt(sockfd, SOL_TCP, TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval));
setsockopt(sockfd, SOL_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCount));
 
設(shè)置該選項后,如果60秒內(nèi)在此套接口所對應(yīng)連接的任一方向都沒有數(shù)據(jù)交換,TCP層就自動給對方發(fā)一個保活探測分節(jié)(keepalive probe)。這是一個對方必須響應(yīng)的TCP分節(jié)。它會導致以下三種情況:
    對方接收一切正常:以期望的ACK響應(yīng)。60秒后,TCP將重新開始下一輪探測。
    對方已崩潰且已重新啟動:以RST響應(yīng)。套接口的待處理錯誤被置為ECONNRESET。
    對方無任何響應(yīng):比如客戶端那邊已經(jīng)斷網(wǎng),或者客戶端直接死機。以設(shè)定的時間間隔嘗試3次,無響應(yīng)就放棄。套接口的待處理錯誤被置為ETIMEOUT。
 
全局設(shè)置可更改/etc/sysctl.conf,加上:
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_time = 60
 
在程序中表現(xiàn)為:
阻塞模型下,當TCP層檢測到對端socket不再可用時,內(nèi)核無法主動通知應(yīng)用層出錯,只有應(yīng)用層主動調(diào)用read()或者write()這樣的IO系統(tǒng)調(diào)用時,內(nèi)核才會利用出錯來通知應(yīng)用層。
非阻塞模型下,select或者epoll會返回sockfd可讀,應(yīng)用層對其進行讀取時,read()會報錯。
 
一點經(jīng)驗:
實際上我們在做服務(wù)器程序的時候,對客戶端的保活探測基本上不依賴于這個TCP層的keepalive探測機制。
而是我們自己做一套應(yīng)用層的請求應(yīng)答消息,在應(yīng)用層實現(xiàn)這樣一個功能。



在Window上遇到這個問題,最后發(fā)現(xiàn)貌似只支持:
               // 設(shè)置KEEPALIVE (開啟檢測)
int optval = 1;
setsockopt(m_hSocket, SOL_SOCKET, SO_KEEPALIVE, (char *) &optval, sizeof(optval));


然后實際斷開是在主動Recv或者Send調(diào)用后才觸發(fā)的
posted @ 2015-07-22 17:48 Enic 閱讀(242) | 評論 (0)編輯 收藏

FileUtils::setPopupNotify()  // 圖片加載失敗后,彈出message box提示
xpcall(main, __G__TRACKBACK__)   // xpcall( 調(diào)用函數(shù), 錯誤捕獲函數(shù) ); 
package.path = package.path .. ";src/"  // ..是連字符,和win path一樣;風格,表示添加目錄src
require("app.MyApp").new():run()  // 加載app目錄的MyApp文件,類似dofile,然后調(diào)用new方法調(diào)用默認的構(gòu)造函數(shù)MyApp:ctor()在調(diào)用成員函數(shù)run
cc.FileUtils:getInstance():addSearchPath("res/")  // 添加搜索路徑
self:enterScene("MainScene")  // 調(diào)用 AppBase:enterScene相當于 
//self.packageRoot = packageRoot or "app"   -- 這里的or類似C語言的?:用法,所以默認是app
//self.packageRoot .. ".scenes." .. sceneNamelocal 
//sceneClass = require(scenePackageName)
cc.ui.UILabel看源代碼,發(fā)現(xiàn)lua是“動態(tài)類型,必須轉(zhuǎn)變cpp的思想”。cc.ui.UILabel.new實際的基類是根據(jù)參數(shù)決定的,lua代碼提供若然擴展方法,基類根據(jù)參數(shù)決定了以后還可以擁有基類的方法
最終是通過display.newBMFontLabel等函數(shù)創(chuàng)建的。
class("UILabel", function(options) return XX end),表示類UILabel繼承于后面的函數(shù)返回的對象。相當于給后面函數(shù)產(chǎn)生的原表附加當前給定的原表信息
 

printInfo('run')  -- cocos也有分級日志,
printLog(tag, fmt, ...)
printError(fmt, ...)
dump_value_(v)


dump(self)  --類似php的dump函數(shù),用于輸出復雜變量
posted @ 2015-07-17 18:54 Enic 閱讀(228) | 評論 (0)編輯 收藏

大神的解釋:

Immediate Mode GUI (IMGUI)。這種類型的更多的適用于顯示區(qū)域?qū)崟r刷新的程序里面,例如游戲和CAD等。
Retained Mode GUI (RMGUI)


用一個傳統(tǒng)RMGUI庫的時候,用戶往往需要顯式的初始化每一個控件對象。每個控件都是存在內(nèi)存中的實體,并且每個控件都需要自己保存一部分數(shù)據(jù)(例如一個slider需要保存一個數(shù)值,Button要保存一個回調(diào)事件等),用戶還需要在一個回調(diào)函數(shù)里將控件里的數(shù)據(jù)拷貝回程序本身中(MVC模式)。

IMGUI模式在使用上會更簡單粗暴一些。控件沒有自己的對象,不保存任何狀態(tài),不用單獨的去實現(xiàn)UI和程序間數(shù)據(jù)的交換,甚至都不需要單獨為事件寫回調(diào)函數(shù)。每個控件就是一個函數(shù),直接在程序的Draw()函數(shù)里要哪個控件就調(diào)用哪個函數(shù)就好了。



posted @ 2015-06-25 13:49 Enic 閱讀(1002) | 評論 (0)編輯 收藏

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "c:\windows\system32\cmd.exe" /d "RUNASADMIN" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" /d "RUNASADMIN" /f


問題描述:

  打開VS2012項目時,提示保存“devenv.sln”

 

解決方法:

  找到文件:C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\vslauncher.exe

  鼠標右鍵設(shè)置“兼容性”->“以管理員身份運行此程序”即可

posted @ 2015-06-20 13:03 Enic 閱讀(239) | 評論 (0)編輯 收藏

理解三個函數(shù):release  retain  autorelease
對應(yīng)的有兩個計數(shù)器:ref  autoref
autorelease是委托pool管理器在某個時候執(zhí)行release

話說cocos默認的create方法會創(chuàng)建完成以后立刻、馬上執(zhí)行一次autorelease,行為有點詭異,而且new出來只有ref值是1
作為規(guī)范,create以后應(yīng)該馬上autorelease和init否則坑爹
 1  
 2 template <typename TVal>
 3 xcc::RefPtr<TVal> TMakeRefPtr()
 4 {
 5     TVal* pRefTem = new TVal;
 6     xcc::RefPtr<TVal> rpTem = pRefTem;
 7     rpTem->init();
 8     rpTem->autorelease();
 9 
10     return rpTem;
11 }

順便放一個用于cocos的智能指針: 1 // cocos2d
 2 template<typename TCocosRefVal>
 3 class RefPtr
 4 {
 5 public:
 6     RefPtr(TCocosRefVal* pRefVal = NULL)
 7     {
 8         m_pRefVal = pRefVal;
 9         __IncRef();
10     }
11 
12     RefPtr(const RefPtr<TCocosRefVal>& refVal)
13     {
14         m_pRefVal = pRefVal;
15         __IncRef();
16     }
17 
18     RefPtr(RefPtr<TCocosRefVal>&& refVal)
19     {
20         m_pRefVal = refVal.m_pRefVal;
21 
22         refVal.m_pRefVal = NULL;
23     }
24 
25     virtual ~RefPtr()
26     {
27         __DecRef();
28     }
29 
30     virtual const RefPtr& operator = (const RefPtr<TCocosRefVal>& refVal)
31     {
32         if (m_pRefVal != refVal.m_pRefVal)
33         {
34             Reset(refVal.m_pRefVal);
35         }
36 
37         return *this;
38     }
39 
40     virtual void Reset(TCocosRefVal* pRefVal = NULL)
41     {
42         __DecRef();
43         m_pRefVal = pRefVal;
44         __IncRef();
45     }
46 
47     virtual bool operator == (const RefPtr<TCocosRefVal>& refVal)
48     {
49         return (m_pRefVal != refVal.m_pRefVal);
50     }
51 
52     virtual TCocosRefVal* Get() const 
53     {
54         return m_pRefVal;
55     }
56 
57     virtual operator TCocosRefVal*() const
58     {
59         return m_pRefVal;
60     }
61 
62     virtual TCocosRefVal* operator -> () const
63     {
64         return m_pRefVal;
65     }
66 
67     virtual TCocosRefVal& operator * () const
68     {
69         return *m_pRefVal;
70     }
71 
72 protected:
73     void __IncRef()
74     {
75         if (NULL != m_pRefVal)
76         {
77             m_pRefVal->retain();
78         }
79     }
80 
81     void __DecRef()
82     {
83         if (NULL != m_pRefVal)
84         {
85             CCAssert(m_pRefVal->retainCount() >= 1, "");
86             m_pRefVal->release();
87         }
88     }
89 
90 private:
91     TCocosRefVal* m_pRefVal;
92 };
posted @ 2015-06-06 21:28 Enic 閱讀(198) | 評論 (0)編輯 收藏

void FixWorkingDir()
{
HANDLE hCurrentExe = ::GetModuleHandle(NULL);
std::tstring strFileName;
std::tstring strPath;
strFileName.resize(MAX_PATH*2, 0);
::GetModuleFileName((HMODULE)hCurrentExe, const_cast<TCHAR*>(strFileName.data()), strFileName.size());
auto nPosEnd = strFileName.find_last_of(_T('\\'));
if (std::tstring::npos != nPosEnd)
{
strPath = strFileName.substr(0, nPosEnd);
::SetCurrentDirectory(strPath.c_str());
}
else
{
XASSERT_MSG(false, _T("windows did not have root path, \\ must be found"));
}
}
posted @ 2015-06-06 20:58 Enic 閱讀(630) | 評論 (0)編輯 收藏

在sqlserver 下想復制一張表的,想到oracle下直接create table xxx as select * from ....即可。
但是結(jié)果卻是錯誤的,baidu一下發(fā)現(xiàn)。
sqlserver的語法是 : select * into tablenew from tableold



CREATE TABLE #TemTable AS SELECT * FROM PlatformCoinExchangeRecord;
SELECT * INTO #TemTable FROM PlatformCoinExchangeRecord;
SELECT * FROM #TemTable;
DROP TABLE #TemTable;


CREATE TABLE #TemTable 
(TotalOnlineDuration bigint, 
ByPlayDuration int, 
TotalPlayTimes int, 
Task30 int, 
Task60 int, 
Task120 int);
INSERT INTO #TemTable exec NET_PW_GetPlayDurationTask 539;
SELECT * from #TemTable;
DROP TABLE #TemTable;
臨時表可能創(chuàng)建后可能應(yīng)為其他原因?qū)е聸]有執(zhí)行到drop,這樣下次執(zhí)行的時候臨時表還存在,所以創(chuàng)建臨時表以后最好會是做異常處理在catch中強制銷毀。
CONTINUE HANDLE mysql可以用這個東西

 CREATE TEMPORARY table IF NOT EXISTS alarmLeveltb
 (    devID bigint not null,
      alarmLevel bigint not null
 );

truncate TABLE alarmLeveltb;--清空表中的數(shù)據(jù)

如果不存在某個表就創(chuàng)建,mysql寫法

IF objectproperty(object_id(@DbTableFileName),'IsUserTable') IS NOT NULL
   PRINT 'EXISTS '
ELSE
   PRINT 'NOT EXISTS '


貌似沒有找到直接創(chuàng)建的辦法,所以要約定好結(jié)果集
posted @ 2015-05-26 11:37 Enic 閱讀(227) | 評論 (0)編輯 收藏

在同一個sql語句中寫不同條件的Count數(shù)量
select sum(case when Experience >= 218706 then 1 else 0 end) as '[25,+',
  sum(case when Experience >= 49065 and Experience < 218706 then 1 else 0 end) as '[20,25)',
       sum(case when Experience >= 11773 and Experience < 49065 then 1 else 0 end) as '[15,20)',
  sum(case when Experience >= 2171 and Experience < 11773 then 1 else 0 end) as '[10,15)'
from QPAccountsDB.dbo.AccountsInfo where IsAndroid = 0;

http://blog.csdn.net/wangziling100/article/details/7598873

posted @ 2015-05-20 15:49 Enic 閱讀(249) | 評論 (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>
            亚洲国产日韩欧美在线99| 狠狠综合久久av一区二区老牛| 久久久久久久高潮| 欧美精品一区二区蜜臀亚洲| 亚洲专区国产精品| 欧美成人精品不卡视频在线观看| 国产精品乱码一区二三区小蝌蚪 | 亚洲免费福利视频| 亚洲欧美影音先锋| 欧美黑人一区二区三区| 在线国产精品一区| 亚洲级视频在线观看免费1级| 性欧美长视频| 日韩亚洲一区二区| 你懂的视频一区二区| 狠狠综合久久| 欧美一区午夜视频在线观看| 日韩午夜三级在线| 欧美成人三级在线| 亚洲国产精品va在看黑人| 久久久青草婷婷精品综合日韩| 亚洲宅男天堂在线观看无病毒| 欧美性大战久久久久| 日韩午夜av| 亚洲三级观看| 久久久精品tv| 国色天香一区二区| 男女精品网站| 久久尤物电影视频在线观看| 国产一区二区无遮挡| 久久国内精品视频| 午夜精品免费| 国产亚洲激情视频在线| 欧美在线免费| 亚洲欧美日韩国产综合在线 | 亚洲午夜视频在线观看| 亚洲精品字幕| 欧美日韩另类视频| 亚洲视频在线观看视频| 欧美一区二区大片| 欧美伊人久久久久久午夜久久久久| 国产乱码精品一区二区三| 亚洲欧美日韩国产一区二区| 亚洲主播在线| 一区在线免费| 亚洲黄色成人| 欧美四级在线| 久久gogo国模啪啪人体图| 亚欧美中日韩视频| 国内精品免费午夜毛片| 欧美69视频| 欧美日韩伦理在线免费| 午夜免费电影一区在线观看| 欧美一区二区三区免费观看| 国产一区二区高清视频| 麻豆精品视频在线观看视频| 欧美va天堂| 中国成人在线视频| 亚洲免费婷婷| **网站欧美大片在线观看| 亚洲黄色片网站| 国产精品私拍pans大尺度在线| 久久精品最新地址| 欧美黑人国产人伦爽爽爽| 亚洲免费在线观看| 午夜精品久久久久久久| 最新高清无码专区| 亚洲欧美国产精品va在线观看| 久久综合网色—综合色88| 国产精品一区二区久久久| 玖玖在线精品| 欧美日韩直播| 美女精品自拍一二三四| 欧美日韩精品三区| 久久精品日产第一区二区三区| 免费视频亚洲| 亚洲欧美bt| 欧美成人精品影院| 久久久999| 欧美日本久久| 蜜臀av在线播放一区二区三区| 欧美日韩精品在线视频| 久久亚裔精品欧美| 国产精品a久久久久久| 免费毛片一区二区三区久久久| 国产精品hd| 欧美激情一区三区| 国产一区二区福利| 亚洲视频免费在线| 好吊妞这里只有精品| 亚洲狠狠婷婷| 在线观看一区| 香蕉成人久久| 一区二区三区成人精品| 久久亚洲国产成人| 亚洲欧美制服中文字幕| 欧美成人精精品一区二区频| 久久午夜精品一区二区| 国产日韩精品一区观看| 一区二区三区三区在线| 日韩视频一区二区三区在线播放免费观看| 久久成人一区二区| 午夜欧美不卡精品aaaaa| 欧美激情欧美狂野欧美精品| 欧美一区影院| 欧美丝袜第一区| 亚洲经典在线| 亚洲人成网站在线观看播放| 久久久久久久久久看片| 欧美专区日韩专区| 国产嫩草一区二区三区在线观看| 亚洲老司机av| 国产精品99久久久久久白浆小说| 欧美精品在线一区二区三区| 亚洲第一区在线观看| 亚洲国产经典视频| 六月婷婷久久| 亚洲高清av在线| 亚洲精品欧美| 欧美久久成人| 夜色激情一区二区| 99国产精品视频免费观看一公开| 欧美粗暴jizz性欧美20| 欧美xxxx在线观看| 在线免费精品视频| 久色婷婷小香蕉久久| 欧美电影免费观看高清| 亚洲高清在线视频| 麻豆av福利av久久av| 老司机午夜精品视频在线观看| 国产亚洲成年网址在线观看| avtt综合网| 性欧美精品高清| 国产精品无码专区在线观看| 亚洲综合日韩| 欧美不卡激情三级在线观看| 99精品国产高清一区二区| 宅男精品导航| 国产免费观看久久| 久久久久国产一区二区三区四区 | 久久午夜精品| 欧美大胆a视频| 国产一区二三区| 久久久av网站| 亚洲国产成人porn| 这里只有精品视频在线| 国产精品视频区| 欧美在线日韩| 亚洲电影免费观看高清| 亚洲国产裸拍裸体视频在线观看乱了| 午夜精品一区二区在线观看| 麻豆免费精品视频| 91久久夜色精品国产九色| 老色批av在线精品| 亚洲乱码一区二区| 欧美一区2区视频在线观看 | 99在线精品视频在线观看| 亚洲图片欧洲图片av| 国产免费成人av| 欧美88av| 午夜日韩电影| 亚洲欧洲精品一区二区三区不卡| 一区二区激情视频| 精品91在线| 国产精品草莓在线免费观看| 欧美一区二区三区在线观看| 麻豆av一区二区三区| 亚洲清纯自拍| 国产精品久久综合| 玖玖综合伊人| 羞羞视频在线观看欧美| 牛夜精品久久久久久久99黑人| 亚洲欧美激情一区二区| 激情欧美一区二区三区在线观看| 久久男人资源视频| 一区二区三区视频在线播放| 久久久91精品国产| 在线综合欧美| 亚洲第一区色| 国产乱人伦精品一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲黑丝在线| 免费欧美日韩国产三级电影| 欧美有码视频| 亚洲一区日本| 亚洲伦理自拍| 国产一区视频网站| 欧美特黄一区| 欧美看片网站| 久久久久九九九| 一本久道综合久久精品| 欧美高清不卡| 久热精品在线视频| 亚洲在线免费| 亚洲日本中文字幕免费在线不卡| 国产欧美日韩不卡免费| 国产精品国产三级国产专播品爱网| 欧美激情在线观看| 久久在线免费观看| 欧美亚洲一区三区|