• <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>
            面對現實,超越自己
            逆水行舟,不進則退
            posts - 269,comments - 32,trackbacks - 0
            本文轉自:http://blog.csdn.net/bao_qibiao/article/details/4528860

            在MFC程序中,可以用以下幾種方法來獲取命令行參數。
            為方便說明,我們假設執行了命令:C:/test/app.exe -1 -2

            方法一

            1 ::GetCommandLine ();
            2 //將獲取到 "C:/test/app.exe"  -1 -2 

            方法二

            1 for (int i=0;i<__argc ;i++)
            2 {
            3 __argv [i];
            4 //將依次得到C:/test/app.exe   -1   -2 
            5 }

            方法三

            1 AfxGetApp ()->m_lpCmdLine;
            2 //將獲取到 -1 -2 

             

            posted @ 2012-04-12 12:26 王海光 閱讀(641) | 評論 (0)編輯 收藏
            本文轉自:http://www.flighty.cn/html/bushu/20110322_114.html

            最新的WinVer.nsh下載:
            http://nsis.sourceforge.net/Include/WinVer.nsh(下載后置于\NSIS\Inclued中)

            AtLeastWin<version> 檢測是否高于指定版本
            IsWin<version> 檢測指定版本(唯一限定版本)
            AtMostWin<version> 檢測是否低于指定版本

            <version> 允許的值:
            95、98、ME、NT4、2000、XP、2003、Vista、2008、7、2008R2

            示例1:

            折疊NSIS 代碼
             1 !include "MUI.nsh"  
             2 !include "WinVer.nsh"  
             3 !insertmacro MUI_LANGUAGE "simpchinese"  
             4   
             5 Section     
             6 ${If} ${AtLeastWinVista}   
             7   MessageBox MB_OK "系統為 Vista 或 Vista 以上系統!"  
             8 ${EndIf}   
             9   
            10 ${If} ${IsWin2000}   
            11 ${OrIf} ${IsWinXP}   
            12   MessageBox MB_OK "系統為 2000 或 XP!"  
            13 ${EndIf}   
            14   
            15 ${If} ${AtMostWinXP}   
            16   MessageBox MB_OK "系統版本為 XP 或更低版本的系統!"  
            17 ${EndIf}
            18 SectionEnd    

            示例2:

            折疊NSIS 代碼
             1 !include "MUI.nsh"  
             2 !include "WinVer.nsh"  
             3 !insertmacro MUI_LANGUAGE "simpchinese"  
             4   
             5 Section     
             6 ${Unless} ${ISWinXP}   
             7 MessageBox MB_OK "本程序只能安裝在 Windows XP 系統上!"  
             8 Abort   
             9 ${EndIf}   
            10 SectionEnd 
            posted @ 2012-04-11 17:11 王海光 閱讀(3389) | 評論 (0)編輯 收藏
                創建一個新類用來隱藏主對話框閃爍問題

                注釋下段代碼:
             1   CPrinterMonitorExDlg dlg;
             2   m_pMainWnd = &dlg;
             3   INT_PTR nResponse = dlg.DoModal();
             4   if (nResponse == IDOK)
             5   {
             6    // TODO: Place code here to handle when the dialog is
             7    //  dismissed with OK
             8   }
             9   else if (nResponse == IDCANCEL)
            10   {
            11    // TODO: Place code here to handle when the dialog is
            12    //  dismissed with Cancel
            13   }

                替換成:
            1  CMainDialog dlg;  //新類對象
            2  m_pMainWnd = &dlg;
            3  dlg.Create(CMainDialog::IDD); 
            4  dlg.ShowWindow(SW_HIDE);      
            5  dlg.RunModalLoop();

                用對話框隱藏等待程序,在xp系統下會出現一個問題,就是:如果程序是system權限啟動,第一次注銷機器正常,但第二次注銷時就會出現注銷失敗的情況。隱藏的對話框在注銷時無法被關閉。
                可以用事件等待來代替上面的程序。
            1 CEvent    m_evtWait;
            2 if (WAIT_FAILED == ::WaitForSingleObject(m_evtWait, INFINITE))
            3     {
            4         DWORD wError = GetLastError();
            5         LOG("WaitForSingleObject函數出現錯誤,錯誤代碼:%d,程序退出", wError);
            6         return FALSE;
            7     }
            posted @ 2012-04-10 16:02 王海光 閱讀(610) | 評論 (0)編輯 收藏
            轉自:http://m.shnenglu.com/humanchao/archive/2008/08/29/60368.html

            問題找出整數1~N范圍和為M的所有集合,M<=N且M>1,集合里的數不允許重復。

            解答:這個問題用遞歸解決最簡單,代碼如下:

             1 #define MAX_NUM 20        //要足夠大
             2 int log[MAX_NUM];        //記錄和數
             3 int index = 0;            //log[]數組的當前指針
             4 
             5 void calc(int start, int n)
             6 {
             7     if (n == 0)  
             8     {
             9         for(int j = 0; j < index; j++)
            10             printf("%d ", log[j]);
            11         printf("\n");
            12     }
            13     else
            14     {
            15         for(int i = start; i<=n; i++)
            16         {
            17             log[index++= i;    
            18             calc(i + 1, n - i);
            19         }
            20     }
            21 
            22     index--;
            23 }

            如果允許重復只需要將上面第18條代碼改為:

            calc(i, n - i);

            即可。

            擴展問題在數組{5,1,7,9,2,10,11,4,13,14}中找到和為28的所有集合,集合中不允許有重復的數。

            解答:第一步要先對數組排序,然后按照上去的思路,對程序略做一些改動。
            代碼如下:

             1 #define MAX_NUM 20        //要足夠大
             2 int log[MAX_NUM];        //記錄和數
             3 int index = 0;            //log[]數組的當前指針
             4 
             5 void calc__(int *nArr     //數組, 
             6             int start    //數組起始元素下標, 
             7             int nArrLen    //數組長度, 
             8             int sum)
             9 {
            10     if (sum == 0)  
            11     {
            12         for(int j = 0; j < index; j++)
            13             printf("%d ", log[j]);
            14         printf("\n");
            15     }
            16     else
            17     {
            18         for(int i = start; i < nArrLen; i++)
            19         {
            20             log[index++= nArr[i];    
            21             calc__(nArr, i+1, nArrLen, sum - nArr[i]);
            22         }
            23     }
            24     
            25     index--;
            26 }

            posted @ 2012-04-10 12:37 王海光 閱讀(677) | 評論 (0)編輯 收藏
            轉自:http://m.shnenglu.com/humanchao/archive/2008/04/17/47357.html


            有一個單鏈表,其中可能有一個環,也就是某個節點的next指向的是鏈表中在它之前的節點,這樣在鏈表的尾部形成一環。

            問題:

            1、如何判斷一個鏈表是不是這類鏈表?
            2、如果鏈表為存在環,如何找到環的入口點?

            解答:

            一、判斷鏈表是否存在環,辦法為:

            設置兩個指針(fast, slow),初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鏈表存在環,則fast必定先進入環,而slow后進入環,兩個指針必定相遇。(當然,fast先行頭到尾部為NULL,則為無環鏈表)程序如下:

            bool IsExitsLoop(slist *head)
            {
                slist
            *slow = head*fast = head;

                while ( fast && fast->next ) 
                {
                    slow 
            = slow->next;
                    fast 
            = fast->next->next;
                   
            if ( slow == fast ) break;
                }

                return !(fast == NULL || fast->next == NULL);
            }

            二、找到環的入口點

            當fast若與slow相遇時,slow肯定沒有走遍歷完鏈表,而fast已經在環內循環了n圈(1<=n)。假設slow走了s步,則fast走了2s步(fast步數還等于s 加上在環上多轉的n圈),設環長為r,則:

            2s = s + nr
            s= nr

            設整個鏈表長L,入口環與相遇點距離為x,起點到環入口點的距離為a。
            a + x = nr
            a + x = (n – 1)r +r = (n-1)r + L - a
            a = (n-1)r + (L – a – x)

            (L – a – x)為相遇點到環入口點的距離,由此可知,從鏈表頭到環入口點等于(n-1)循環內環+相遇點到環入口點,于是我們從鏈表頭、與相遇點分別設一個指針,每次各走一步,兩個指針必定相遇,且相遇第一點為環入口點。程序描述如下:

            slist* FindLoopPort(slist *head)
            {
                slist
            *slow = head, *fast = head;

                while ( fast && fast->next ) 
                {
                    slow 
            = slow->next;
                    fast 
            = fast->next->next;
                   
            if ( slow == fast ) break;
                }

                if (fast == NULL || fast->next == NULL)
               
                return NULL;

                slow 
            = head;
                while (slow != fast)
                {
                     slow 
            = slow->next;
                     fast 
            = fast->next;
                }

                return slow;
            }


            擴展問題:

            判斷兩個單鏈表是否相交,如果相交,給出相交的第一個點(兩個鏈表都不存在環)。

            比較好的方法有兩個:

            一、將其中一個鏈表首尾相連,檢測另外一個鏈表是否存在環,如果存在,則兩個鏈表相交,而檢測出來的依賴環入口即為相交的第一個點。

            二、如果兩個鏈表相交,那個兩個鏈表從相交點到鏈表結束都是相同的節點,我們可以先遍歷一個鏈表,直到尾部,再遍歷另外一個鏈表,如果也可以走到同樣的結尾點,則兩個鏈表相交。

            這時我們記下兩個鏈表length,再遍歷一次,長鏈表節點先出發前進(lengthMax-lengthMin)步,之后兩個鏈表同時前進,每次一步,相遇的第一點即為兩個鏈表相交的第一個點。

            posted @ 2012-04-09 16:56 王海光 閱讀(758) | 評論 (0)編輯 收藏
            轉自:http://m.shnenglu.com/humanchao/archive/2008/02/29/43446.html


            void printSList(slist *pList)
            {
                assert(pList);
                
            if (pList == NULL)
                    
            return;

                string str;
                
            while (pList)
                {
                    str 
            = string(*pList) + str;
                    pList 
            = pList->next;
                }

                printf(
            "%s", str.c_str());
            }

            遞歸:

            void printSList(slist *pList)
            {
                assert(pList);
                
            if (pList == NULL)
                    
            return;
                
                
            if (pList->next == NULL)
                    printf(
            "%s"*pList);
                
            else
                {
                    printSList(pList
            ->next);
                    printf(
            "%s"*pList);
                }
            }

            分配一個數組,把指針放到數組中,然后for倒著打印
            Status display(LinkList &L)

                  printf("\n---------------------------顯示單鏈線性表----------------------\n"); 
                  LinkList p; 
                  int n[100]; 
                  int j=100; 
                  p=L->next; //打印的時候應該從頭結點的下一個結點開始打印,否則會出現亂碼 
                  printf("\n單鏈表為:\t"); 
                  if(p!=NULL) 
                  { 
                        for(;p!=NULL;--j) 
                        { 
                              n[j-1]=p->date; //j-1是因為100要存放頭結點的位置 
                              p=p->next; 
                        } 
                        for(;j<100;j++) 
                        { 
                              printf("%d",n[j]); 
                        } 
                  } 
                  free(p); 
                  return 1;
            }//display 
            posted @ 2012-04-09 16:41 王海光 閱讀(759) | 評論 (0)編輯 收藏

            轉自:http://m.shnenglu.com/humanchao/archive/2008/09/12/61708.html

            將字符串里詞順序倒置,如"Times New Roman"變為"Roman New Times"。以空格為分隔符。

            解決方案為:先將整個字串倒置,然后依次把倒置后串中的每一個單詞倒置。

            這個問題解答的思路很簡單,但是要考慮到很多種的情況,比如字符串的頭、尾有多余的空格怎么辦,如果字符串中只有空格,還有字符串中間可能會有兩個以上并列的空格。

            程序如下:

             1 void ReverseStr(char *pStr, int len)
             2 {
             3     assert(pStr);
             4     
             5     char ch;
             6     for (int i = 0; i < len/2 ; i++)
             7     {
             8         ch = pStr[i];
             9         pStr[i] = pStr[len-1-i];
            10         pStr[len-1-i] = ch;
            11     }
            12 }
            13 
            14 void ReverseStrWord(char *pStr, int len)
            15 {
            16     assert(pStr);
            17 
            18     if (len <= 1)
            19         return;
            20 
            21     // 倒置整個字符串
            22     ReverseStr(pStr, len);
            23 
            24     // 處理頭多余的空格
            25     int i = 0;
            26     if (pStr[0== ' ')            while (pStr[i] == ' ' && i < len)        i++;
            27 
            28     // 整個串都是空格
            29     if (i == len)
            30         return;
            31 
            32     // 處理尾多余的空格
            33     if (pStr[len - 1== ' ')    while (pStr[len - 1== ' ' && len - 1 > 0)    len--;
            34 
            35     for (int start = i; i < len; i++)
            36     {
            37         // 最后的end要+1
            38         if (i == len-1)
            39         {
            40             ReverseStr(pStr+start, i-start+1);
            41             break;
            42         }
            43 
            44         // 倒置一個單詞
            45         if (pStr[i] == ' ')
            46         {
            47             ReverseStr(pStr+start, i-start);
            48             start = i+1;
            49             // 處理內部并列的空格
            50             if (pStr[start] == ' ')
            51             {
            52                 while(pStr[start] == ' ') {i++;start++;};
            53             }
            54         }
            55     }
            56 }
            57 

             

            posted @ 2012-04-09 13:47 王海光 閱讀(412) | 評論 (0)編輯 收藏

            [轉]寫好代碼的10個秘密 收藏
            作者:飛哥 (百度)

            先給大家看一段據說是史上最強的程序:
            e100 33 f6 bf 0 20 b5 10 f3 a5 8c c8 5 0 2 50 68 13 1 cb e 1f be a1 1 bf 0 1
            e11b 6 57 b8 11 1 bb 21 13 89 7 4b 4b 48 79 f9 ad 86 e0 8b c8 bd ff ff e8 20
            e134 0 3d 0 1 74 1a 7f 3 aa eb f3 2d ff 0 50 e8 f 0 5a f7 d8 8b d8 26 8a 1 aa
            e14f 4a 75 f9 eb de cb 57 bb 21 13 8b c1 40 f7 27 f7 f5 8b fb ba 11 1 4f 4f 4a
            e168 39 5 7f f9 52 8b c5 f7 25 f7 37 2b c8 95 f7 65 2 f7 37 95 2b e8 fe e fe
            e181 10 79 6 c6 6 fe 10 7 46 d0 14 d1 d1 d1 e5 79 ec 5a b8 11 1 ff 7 4b 4b 48
            e19b 3b d0 75 f7 5f c3 83 f7 83 a6 5d 59 82 cd b2 8 42 46 9 57 a9 c5 ca aa 1b
            .............................................................................


            這段程序是1997年世界程序設計大賽的一等獎作品的部分代碼(完整的代碼下載,把代碼復制粘貼到cmd的debug命令中,回車看到效果)。這個程序運行后將是一個3D的且伴隨著音樂的動畫。震撼吧!
            是不是從事軟件開發的人員都希望成為這樣的武林高手呢?然而真要是用這樣的高手來設計、編寫我們的產品代碼,恐怕某一天,我們什么都不用干了,只能人手一本機器代碼,一句一句進行翻譯了;那么對于軟件產品開發而言,如何寫好代碼呢?一流的軟件產品的代碼具備哪些特征呢?


             

            一流代碼的特征


            1、穩定可靠(Robustness)
            代碼寫出來以后,一定要能夠運行得非常好,非常穩定可靠。在現今的IT行業,軟件產品都是是24*7,即要保證系統一天24小時,一星期7天中都可以無間斷的正常運行。比如我們百度的搜索引擎系統,比如我們的通信系統,等等。到了產品開發后期,大部分的成本都將投入到產品穩定性的提高。

            2、可維護且簡潔(Maintainable and Simple Code)
            在寫代碼時,首先要考慮的是:寫出來的代碼不但要自己可以讀懂,而且我們的同事、測試工程師都可能要修改這些代碼,對其進行增減。如果代碼很復雜,不容易讀懂,如程序中的遞歸一大堆、程序不知何時或從何地跳出,則會使程序的可維護性和簡潔性降低。所以必要的注釋、統一的編程規范等都是非常重要的。

            3、高效(Fast)
            在軟件行業中效率是非常重要的,比如搜索引擎。有些軟件的搜索效率就不高,搜索過程特別緩慢,讓人難以接受。當然這里面有一個帶寬的問題,但是程序效率不高也是一個重要的原因。而實際上程序的效率提高,有時候很簡單,并沒有什么神秘之處,如使用數組索引時候,可以用指針方式而不使用數組下標;數組的空間定義應該定義為2的N次冪等等。

            4、簡短(Small)
            這方面大家的感受可能不是很深,但是我的感受是很深的。配置過PSTN程控交換機、路由器、VoIP網關設備的人都知道,這些設備的軟件都是從PC機通過網口或串口下載到這些設備的Flash上(類似PC機的BIOS)再通過設備上的CPU啟動。如果程序寫的很羅嗦,隨著特性不斷增加,程序規模將變大的巨大,Flash空間告急、內存告急、下載升級變的不可忍受,等等,帶來的就是成本不斷增加,利潤不斷下降。

            5、共享性(Reusable)
            如果做大型產品開發,程序的共享性也是非常重要的。我們產品有那么多開發人員,如果每一個人都自己定義字符串、鏈表等數據結構,那么開發效率就會降低,我們的產品恐怕到今天也不能出臺。我所說的“共享”不是指將別人的代碼復制到自己的代碼中,而是指直接調用別人的代碼,拿來即可用。這一方面可以減少代碼的冗余性,另一方面可以增強代碼的可維護性。如果別人的代碼里有Bug,只需修改他的代碼,而調用此代碼的程序不用進行任何修改就可以達到同步。這同時要求我們在設計的時候,如何考慮系統的內聚和耦合的問題。

            6、可測試性(Testable)
            我們的產品開發里,除了軟件開發人員,還有一部分工程師負責軟件測試。軟件測試人員會將開發代碼拿來,一行一行地運行,看程序運行是否有錯。如果軟件開發人員的代碼不可測試,那測試工程師就沒有辦法進行工作。因此可測試性在大型軟件開發里是很重要的一點。可測試性有時候與可維護性是遙相呼應的,一個具有好的可測試性和可維護性的代碼,測試人員可以根據開發提供的維護手冊、debug信息手冊等就可以判斷出程序出錯在哪個模塊。

            7、可移植性(Portable)
            可移植性是指程序寫出來以后,不僅在windows 2000里可以運行,在NT/9X下可以運行,而且在Linux甚至Macintosh等系統下都可以運行。所有這些特性都是一流代碼所具備的特性。但是其中有些特性是會有沖突的。比如高效性,程序寫的效率很高,就可能變得很復雜,犧牲的就是簡潔。好的代碼要在這些特性中取得平衡。

             

            寫好代碼的10個秘密

            1、百家之長歸我所有(Follow Basic Coding Style)
            其實寫代碼的方式有很多,每個人都有自己的風格,但是眾多的風格中總有一些共性的、基本的寫代碼的風格,如為程序寫注釋、代碼對齊,等等。是不是編程規范?對就是編程規范。

            2、取個好名字(Use Naming Conventions)
            取個好的函數名、變量名,最好按照一定的規則起名。還是編程規范。

            3、凌波微步,未必摔跤(Evil goto's?Maybe Not...)
            這里我用“凌波微步”來形容goto語句。通常,goto語句使程序跳來跳去,不容易讀,而且不能優化,但是在某種情況下,goto語句反而可以增強程序的可讀性。Just go ahead,not go back。

            4、先發制人,后發制于人(Practic Defensive Coding)
            Defensive Coding指一些可能會出錯的情況,如變量的初始化等,要考慮到出現錯誤情況下的處理策略。測試時要多運行幾個線程。有些程序在一個線城下運行是正常的,但是在多個線程并行運行時就會出現問題;而有些程序在一個CPU下運行幾個線程是正常的,但是在多個CPU下運行時就會出現問題,因為單CPU運行線程只是狹義的并行,多CPU一起運行程序,才是真正的并行運算。

            5、見招拆招,滴水不漏(Handle The Error Cases:They Will Occur!)
            這里的Error Case(錯誤情況),是指那些不易重視的錯誤。如果不對Error Case進行處理,程序在多數情況下不會出錯,但是一旦出現異常,程序就會崩潰。 6、熟習劍法刀術,所向無敵(Learn Win32 API Seriously)
            用“劍法刀術”來形容一些API是因為它們都是經過了很多優秀開發人員的不斷開發、測試,其效率很高,而且簡潔易懂,希望大家能掌握它,熟悉它,使用它。是不是象我們的ULIB。

            7、雙手互搏,無堅不摧(Test,but don't stop there)
            這里的測試不是指別人來測試你的代碼,而是指自己去測試。因為你是寫代碼的原作者,對代碼的了解最深,別人不可能比你更了解,所以你自己在測試時,可以很好地去測試哪些邊界條件,以及一些意向不到的情況。

            8、活用斷言(Use,don't abuse,assertions)
            斷言(assertion)是個很好的調試工具和方法,希望大家能多用斷言,但是并不是所有的情況下都可以用到斷言。有些情況使用斷言反而不合適。

            9、草木皆兵,不可大意(Avoid Assumptions)
            是指在寫代碼時,要小心一些輸入的情況,比如輸入文件、TCP的sockets、函數的參數等等,不要認為使用我們的API的用戶都知道什么是正確的、什么是錯的,也就是說一定要考慮到對外接口的出錯處理問題。

            10、最高境界、無招勝有招(Stop writing so much code)
            意思就是說盡量避免寫太多的代碼,寫的越多,出錯的機會也越多。最好能重用別人開放的接口函數或直接調用別人的api。

             

            本文來自CSDN博客,轉載請標明出處:http://m.shnenglu.com/humanchao/archive/2010/08/05/122334.html

            posted @ 2012-04-09 13:36 王海光 閱讀(505) | 評論 (0)編輯 收藏
            使用插件:http://nsis.sourceforge.net/NsRandom_plug-in

            轉自:http://www.dreams8.com/thread-11726-1-1.html
             1 Function Random
             2 Exch $0
             3 Push $1
             4 System::Call 'kernel32::QueryPerformanceCounter(*l.r1)'
             5 System::Int64Op $1 % $0
             6 Pop $0
             7 Pop $1
             8 Exch $0
             9 FunctionEnd
            10 
            11 Push "100" 
            12 Call Random
            13 Pop $0


            posted @ 2012-04-06 17:13 王海光 閱讀(1323) | 評論 (0)編輯 收藏
             轉自:http://m.shnenglu.com/huangyi5209/articles/143171.html
             1 !include MUI.nsh
             2        
             3 Function GetDiskVolumeSerialNumber
             4 !define GetVolumeInformation "Kernel32::GetVolumeInformation(t,t,i,*i,*i,*i,t,i) i"
             5 System::Call '${GetVolumeInformation}("$0",,${NSIS_MAX_STRLEN},.r0,,,,${NSIS_MAX_STRLEN})'
             6 FunctionEnd
             7 
             8 Section
             9 StrCpy $0 "C:\"
            10 Call GetDiskVolumeSerialNumber
            11 IntFmt $0 "%08X" $0
            12 MessageBox MB_OK "$0"
            13 SectionEnd


            posted @ 2012-04-06 17:10 王海光 閱讀(818) | 評論 (0)編輯 收藏
            僅列出標題
            共27頁: First 19 20 21 22 23 24 25 26 27 
            国产精品久久久久a影院| 欧洲成人午夜精品无码区久久 | 久久久午夜精品| 久久久久久毛片免费看| 一级做a爰片久久毛片免费陪| 一日本道伊人久久综合影| 久久99精品久久久久久久久久 | 久久人妻少妇嫩草AV蜜桃| 亚洲va久久久噜噜噜久久狠狠 | 99久久无色码中文字幕人妻| 亚洲AV日韩精品久久久久久| 国产精品热久久毛片| 亚洲国产精品无码成人片久久| 久久亚洲精品视频| 久久久久久久精品妇女99| 国产精品久久久久久| 久久精品视频一| 亚洲国产成人久久精品影视| 久久99精品国产麻豆宅宅| 久久国产影院| av无码久久久久久不卡网站| 手机看片久久高清国产日韩| 国产精品久久久久久影院 | 国产亚洲精品自在久久| 久久精品夜色噜噜亚洲A∨ | 国产成人综合久久精品尤物| 久久精品国产亚洲AV无码娇色 | 99精品久久久久久久婷婷| 精品久久久无码中文字幕天天| 无码精品久久久天天影视 | 国产精品久久久久久| 伊人久久精品无码二区麻豆| 婷婷久久综合九色综合绿巨人| 精品亚洲综合久久中文字幕| 久久99亚洲网美利坚合众国| 99久久国产宗和精品1上映| 精品国产乱码久久久久软件| 99久久香蕉国产线看观香| 国产精品99久久久精品无码| 亚洲午夜无码久久久久小说| 久久99九九国产免费看小说|