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

chenglong7997

1.軟件p4, vs, vim, cscope. 
fix step:
先reproduce
再確定出現(xiàn)問題的函數(shù),行號(hào)
分析原因
fix 


vs中遠(yuǎn)程調(diào)試,指定ip,port, 同時(shí)在遠(yuǎn)程主機(jī)上要同意遠(yuǎn)程調(diào)試,接受指定user。要保證code與exe文件一致。
設(shè)定斷點(diǎn),觀察debug輸入,與預(yù)想的有什么不同。觀察bt,thread stack 找到出現(xiàn)問題的函數(shù)或者行號(hào)。

p4 中的check out, commit, diff, opened, edit, sync命令和作用。
submit step:merge changlist (from branch) (to branch)
check diff
resolve
make (so make sure the code is right)
submit (add comments)
set the bug state in Web

vim:熟悉了各種命令。

cscope,ctag:在linux中瀏覽代碼很有用,可以找到function definition, struct definition, calling function, called function. 

在一個(gè)目錄中建立cscope database, 可以再主目錄建立,之后只在這里使用cscope,就能找到全部引用。

linux, lib 文件的使用。 有.a 和.o的lib文件。

2.code style.
文件命名要有層次感。例如,snape_webserver_msg.c, snape_webserver_thread.c, snape_webserver_log.c, snape_client_msg.c,,,
函數(shù)命名也要有層次感, 例如,snape_webserver_msg_set_connection(), snape_webserver_thread_create(),snape_client_request_get_pic().
變量命名也要有層次感和意義。
出錯(cuò)處理的專門函數(shù)。
debug level:debug,info, basic, webserver, client,,,

3.函數(shù)的定義與瀏覽。
call graph definition.
函數(shù)名字最好能夠顯示出函數(shù)調(diào)用的graph。
使用hash table 保存大量類型的數(shù)據(jù)。
使用內(nèi)容的md5作為這個(gè)內(nèi)容的id,就可以完美配合hash table。

4.thread, process
windows 中, object , event, cs
cs同步速度較快,但是使用cs容易進(jìn)入deadlock狀態(tài)。因?yàn)樵诘却M(jìn)入cs時(shí),無(wú)法設(shè)定超時(shí)值。
互斥對(duì)象與內(nèi)核對(duì)象屬于內(nèi)核對(duì)象,利用內(nèi)核對(duì)象進(jìn)行線程同步,同步速度較慢,但這種方式可在多個(gè)進(jìn)程的各個(gè)對(duì)象之間進(jìn)行同步。
event分為人工重置與自動(dòng)重置事件,兩者在細(xì)節(jié)上,不同。

5.cache implementation
client端可以使用類似os中,cache 與 虛擬內(nèi)存的方法。b_modified表示是否經(jīng)過更改,從而是否需要更新。每次只去拿新的東西。
而在server端,可以使用內(nèi)容的MD5判斷是否需要處理來(lái)到的內(nèi)容,可以用多層次的MD5來(lái)更加去improve performance。例如用總體的md5,和各個(gè)部分的md5.
先判斷總體MD5,如果改變,在去檢查部分md5.如果沒有改變,就整個(gè)都可以丟棄,不去處理。
design is very important. 代碼的執(zhí)行過程要完全依賴design。

6.select function
異步select, 可以讓線程不去busy waiting。
但是如果需要傳輸內(nèi)容,需要trigger signal,讓它不用等到timeout,就能發(fā)送數(shù)據(jù)。

7.timestamp/timeout/ ts_diff
可以用ts_diff去同步時(shí)間。
使用timeout來(lái)防止任意操作的無(wú)限制等待
使用timestamp來(lái)決定哪一個(gè)更新。不要用counter。(無(wú)法同步,無(wú)法控制單一性)

8.xml api
在傳送數(shù)據(jù)方面,可以使用xml

9.performace/memory usage
mm tools.






























posted @ 2012-09-02 01:16 Snape 閱讀(1292) | 評(píng)論 (0)編輯 收藏

Suppose I have the following C code.

unsigned int u = 1234;
int i = -5678;

unsigned int result = u + i;

What implicit conversions are going on here, and is this code safe for all values of u and i? (Safe, in the sense that even though result in this example will overflow to some huge positive number, I could cast it back to an int and get the real result.)

Answer:

Short Answer

Your i will be converted to an unsigned integer by adding UINT_MAX + 1, then the addition will be carried out with the unsigned values, resulting in a large result (depending on the values of u andi).

Long Answer

According to the C99 Standard:

6.3.1.8 Usual arithmetic conversions

  1. If both operands have the same type, then no further conversion is needed.
  2. Otherwise, if both operands have signed integer types or both have unsigned integer types, the operand with the type of lesser integer conversion rank is converted to the type of the operand with greater rank.
  3. Otherwise, if the operand that has unsigned integer type has rank greater or equal to the rank of the type of the other operand, then the operand with signed integer type is converted to the type of the operand with unsigned integer type.
  4. Otherwise, if the type of the operand with signed integer type can represent all of the values of the type of the operand with unsigned integer type, then the operand with unsigned integer type is converted to the type of the operand with signed integer type.
  5. Otherwise, both operands are converted to the unsigned integer type corresponding to the type of the operand with signed integer type.

In your case, we have one unsigned int (u) and signed int (i). Referring to (3) above, since both operands have the same rank, your i will need to be converted to an unsigned integer.

6.3.1.3 Signed and unsigned integers

  1. When a value with integer type is converted to another integer type other than _Bool, if the value can be represented by the new type, it is unchanged.
  2. Otherwise, if the new type is unsigned, the value is converted by repeatedly adding or subtracting one more than the maximum value that can be represented in the new type until the value is in the range of the new type.
  3. Otherwise, the new type is signed and the value cannot be represented in it; either the result is implementation-defined or an implementation-defined signal is raised.

Now we need to refer to (2) above. Your i will be converted to an unsigned value by adding UINT_MAX + 1. So the result will depend on how UINT_MAX is defined on your implementation. It will be large, but it will not overflow, because:

6.2.5 (9)

A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type.

Bonus: Arithmetic Conversion Semi-WTF

#include <stdio.h>

int main(void)
{
 
unsigned int plus_one = 1;
 
int minus_one = -1;

 
if(plus_one < minus_one)
    printf
("1 < -1");
 
else
    printf
("boring");

 
return 0;
}

You can use this link to try this online: http://codepad.org/yPhYCMFO

Bonus: Arithmetic Conversion Side Effect

Arithmetic conversion rules can be used to get the value of UINT_MAX by initializing an unsigned value to -1, ie:

unsigned int umax = -1; // umax set to UINT_MAX

This is guaranteed to be portable regardless of the signed number representation of the system because of the conversion rules described above. See this SO question for more information: Is it safe to use -1 to set all bits to true?

posted @ 2012-08-17 02:32 Snape 閱讀(818) | 評(píng)論 (0)編輯 收藏
1.標(biāo)示符名稱的限制

ANSI C標(biāo)準(zhǔn)只保證了C實(shí)現(xiàn)必須能夠區(qū)別出前6個(gè)字符不同的外部名稱。而且這個(gè)定義中并沒有區(qū)分大寫字母與其對(duì)應(yīng)的小寫字母。
因此,編寫可移植程序必須小心這一點(diǎn)。

2.字符是有符號(hào)的整數(shù),還是無(wú)符號(hào)的整數(shù)
只有把一個(gè)字符值轉(zhuǎn)換為一個(gè)較大的整數(shù)時(shí),才重要。在其他情況下,結(jié)果都是:多余的位被簡(jiǎn)單的“丟棄”。

在轉(zhuǎn)換過程中:應(yīng)該將字符作為有符號(hào)數(shù)還是無(wú)符號(hào)數(shù)?
如果有符號(hào),編譯器將char數(shù)據(jù),擴(kuò)展到int時(shí)候,應(yīng)該復(fù)制符號(hào)位。
如果無(wú)符號(hào),編譯器只需在多余的位上填充0.
#include <stdio.h>

int main()
{
    char c='a';
    c=c+40;
//    printf("%c\n", -1); 
    printf("c %d\n", c);
    printf("unsigned c %u\n", (unsigned char)c);
}
結(jié)果:
c -119
unsigned c 137
說(shuō)明在gcc中,將char當(dāng)做有符號(hào)數(shù)。在c+40的時(shí)候,超過了-128~127范圍,因此溢出。如果是無(wú)符號(hào)char,范圍是0~255.應(yīng)該是輸出137.

如果編程者關(guān)注一個(gè)最高位是1的字符是正還是負(fù),可以設(shè)置為無(wú)符號(hào)字符數(shù)。這樣所有編譯器都會(huì)轉(zhuǎn)換為整數(shù)時(shí)候,填充為0.


3.一個(gè)常見錯(cuò)誤是:如果c是一個(gè)字符變量,使用(unsigned)c可以得到與c等價(jià)的無(wú)符號(hào)整數(shù)。這是會(huì)失敗的。因?yàn)樵趯轉(zhuǎn)換為無(wú)符號(hào)整數(shù)時(shí)候,c將首先首先被轉(zhuǎn)換為int型整數(shù)。而此時(shí)可能得到非預(yù)期的結(jié)果。
正確方法是:(unsigned char )c,直接進(jìn)行轉(zhuǎn)換。

例如上個(gè)例子中,最后一句改為:
printf("unsigned c %u\n", (unsigned )c);

那么結(jié)果是:
c -119
unsigned c 4294967177
c被先轉(zhuǎn)換為int型-119,再求他的無(wú)符號(hào)表達(dá)形式,4294967177 

4.移位運(yùn)算符
   1.向右移位時(shí),空出的位由0填充,還是由符號(hào)位的副本填充。
   2.如果是無(wú)符號(hào)數(shù),用0填充。如果是有符號(hào)數(shù),既可以用0也可以用符號(hào)位的副本。(如果關(guān)注右移時(shí)候空出的位,可以聲明為無(wú)符號(hào)類型,那么空出的位都會(huì)被設(shè)置為0)

   如果被移位對(duì)象為n位,那么移位計(jì)數(shù)必須大于或等于0,而嚴(yán)格小于n.
即使C實(shí)現(xiàn)將符號(hào)位復(fù)制到空出的位中,有符號(hào)數(shù)的向右移位,也并不等于除以2的某次冪。例如(-1)>>1結(jié)果為-1,而不是-1/2 == 0

5.隨機(jī)數(shù)最大值,RAND_MAX在limits中定義。我測(cè)試結(jié)果等于INT_MAX

6.除法運(yùn)算的截?cái)?br />q=a/b;
r=a%b;
假定b>0.
C語(yǔ)言定義只保證q*b+r=a,以及a>=0 且 b>0時(shí),保證|r|<|b|以及r>=0.
(如果a<0, 那么r也可能小于0)
例如:
int main() {
    // Start typing your code here
    
    cout<<(-3)/2<<endl;
    return 0;
}
結(jié)果商為-1,余數(shù)也為-1
posted @ 2012-06-25 07:10 Snape 閱讀(330) | 評(píng)論 (0)編輯 收藏
使用預(yù)處理器的兩個(gè)主要原因:
1.一次修改變量,出現(xiàn)的所有的值都會(huì)修改。
講所有常量定義集中在一起。

2.避免函數(shù)調(diào)用開銷。

3.宏定義注意點(diǎn)
    1.不能忽視定義中的空格
    2.最好將宏定義中每個(gè)參數(shù)都用括號(hào)括起來(lái)。整個(gè)表達(dá)式的結(jié)果頁(yè)用括號(hào)括起來(lái)。
    3.確保調(diào)用宏的參數(shù)中,不存在有副作用的代碼

4.assert宏??梢栽诔鲥e(cuò)信息中包含文件名和斷言失敗處的行號(hào)。很有用。

5.宏并不是類型定義。
#define T1 struct foo *
typedef struct foo * T2;
T1 a,b; //struct foo * a, b;
T2 a,b; //a ,b都是指向結(jié)構(gòu)的指針。
posted @ 2012-06-25 02:26 Snape 閱讀(259) | 評(píng)論 (0)編輯 收藏
1.getchar

getchar返回整形

#include <stdio.h>

int main()
{
    char c;
    while( (c=getchar())!=EOF )
        putchar(c);
}

應(yīng)該將c聲明為int。否則,c可能無(wú)法容下EOF

2.更新文件
讀操作之后,文件指針會(huì)偏移一段。這時(shí)候,講文件更新后,寫入源文件之前,應(yīng)該fseek講文件指針調(diào)回去。

3.使用setbuf設(shè)置輸出的緩沖區(qū)大小。可以是stdout和file

4.正確使用errno檢測(cè)錯(cuò)誤
errno=0;
/*調(diào)用庫(kù)函數(shù)*/
if(返回的錯(cuò)誤值)   //這個(gè)錯(cuò)誤值可能不是由當(dāng)前這個(gè)函數(shù)引起的。而是由當(dāng)前函數(shù),又調(diào)用的另外一個(gè)函數(shù)引起的。
   檢查errno;

5.signal處理函數(shù)唯一安全,可移植的操作就是打印一條錯(cuò)誤信息,然后使用longjmp或者exit立即退出程序。
posted @ 2012-06-25 02:10 Snape 閱讀(315) | 評(píng)論 (0)編輯 收藏
1.如果一個(gè)函數(shù)僅僅被同一個(gè)源文件中的其他函數(shù)調(diào)用,我們就應(yīng)該聲明該函數(shù)為static

2.extern int n;
在兩外一個(gè)文件中: long n;
這是一個(gè)無(wú)效的程序,因?yàn)橥粋€(gè)外部變量名在兩個(gè)不同的文件中被聲明為不同的類型。然后大多數(shù)c語(yǔ)言實(shí)現(xiàn)不能檢測(cè)出這種錯(cuò)誤。

3.一個(gè)程序由多個(gè)模塊組成,每個(gè)模塊都需要知道一個(gè)特定的文件名。我們希望能夠做到只在一處改動(dòng)這個(gè)文件名,所有模塊中的文件名就能同時(shí)得到更新。
可以,先創(chuàng)建一個(gè)文件,叫做file.h,它包含了聲明extern char filename[];
需要用到外部對(duì)象filename的每個(gè)c源文件都應(yīng)該加上: #include "file.h";
最后選擇一個(gè)C源文件,在其中給出filename的初始值。如在file.c中
#include "file.h";
char filename[]="/etc/passwd";

這樣就保證了filename的類型是正確的。解決了2中的問題。
posted @ 2012-06-25 01:41 Snape 閱讀(250) | 評(píng)論 (0)編輯 收藏

 整數(shù)溢出
c語(yǔ)言中存在兩類整數(shù)算術(shù)運(yùn)算,有符號(hào)運(yùn)算和無(wú)符號(hào)運(yùn)算。在無(wú)符號(hào)運(yùn)算里,沒有了符號(hào)位,所以是沒有溢出的概念的

所有的無(wú)符號(hào)運(yùn)算都是以2的n次方為模。如果算術(shù)運(yùn)算符的一個(gè)操作數(shù)是有符號(hào)書,另一個(gè)是無(wú)符號(hào)數(shù),那么有符號(hào)數(shù)

會(huì)被轉(zhuǎn)換為無(wú)符號(hào)數(shù)(表示范圍小的總是被轉(zhuǎn)換為表示范圍大的),那么溢出也不會(huì)發(fā)生。但是,當(dāng)兩個(gè)操作數(shù)都是有符號(hào)數(shù)

時(shí),溢出就有可能發(fā)生。而且溢出的結(jié)果是未定義的。當(dāng)一個(gè)運(yùn)算的結(jié)果發(fā)生溢出時(shí),任何假設(shè)都是不安全的。

例如,假定a和b是兩個(gè)非負(fù)的整型變量(有符號(hào)),我們需要檢查a+b是否溢出,一種想當(dāng)然的方式是:

if (a + b < 0)

      溢出;

實(shí)際上,在現(xiàn)實(shí)世界里,這并不能正常運(yùn)行。當(dāng)a+b確實(shí)發(fā)生溢出時(shí),所有關(guān)于結(jié)果如何的假設(shè)均不可靠。比如,在某些

機(jī)器的cpu,加法運(yùn)算將設(shè)置一個(gè)內(nèi)部寄存器為四種狀態(tài):正,負(fù),零和溢出。在這種機(jī)器上,c編譯器完全有理由實(shí)現(xiàn)以上

的例子,使得a+b返回的不是負(fù),而是這個(gè)內(nèi)存寄存器的溢出狀態(tài)。顯然,if的判斷會(huì)失敗。

一種正確的方式是將a和b都強(qiáng)制轉(zhuǎn)換為無(wú)符號(hào)整數(shù):

if ( (unsigned)a + (unsigned)b  > INT_MAX)

      溢出;

這里的int_max值為有符號(hào)整型的最大值。在一般的編譯器里是一個(gè)預(yù)定義的常量。ANSI C在limits里定義了INT_MAX,值為

2的31次方-1.

不需要用到無(wú)符號(hào)算數(shù)運(yùn)算的另一種可行方法是:

if (a > INT_MAX - b )

     溢出; 

posted @ 2012-06-25 01:15 Snape 閱讀(1009) | 評(píng)論 (0)編輯 收藏

posted @ 2012-06-25 01:11 Snape 閱讀(439) | 評(píng)論 (0)編輯 收藏
1.int a[10]; 除了a被用作運(yùn)算符sizeof()的參數(shù)這一情況,在其他所有的情形中,數(shù)組名a都代表指向數(shù)組a中下標(biāo)為0的元素的指針。
因此,int *p=a; //right
int  *p=&a; //error, (&a已經(jīng)是一個(gè)指向整個(gè)數(shù)組的指針)

2.為main函數(shù)提供返回值
main()
{}
隱含著main返回整數(shù),一個(gè)返回整數(shù)的函數(shù)如果返回失敗,實(shí)際上隱含返回某個(gè)“垃圾”整數(shù),只要該值不被用到,就無(wú)關(guān)緊要。
然而,在某些情況下,main的返回值卻并非無(wú)關(guān)緊要,大多數(shù)C語(yǔ)言實(shí)現(xiàn)通過main的返回值,來(lái)告知操作系統(tǒng)該函數(shù)的執(zhí)行是成功還是失。如果一個(gè)程序的main函數(shù)并不返回任何值,那么有可能看上去執(zhí)行失敗。所以最好提供返回值

3.邊界計(jì)算與不對(duì)稱邊界。
適合c中以下標(biāo)為0開始的計(jì)算。
posted @ 2012-06-24 23:53 Snape 閱讀(316) | 評(píng)論 (0)編輯 收藏
1.y=x/*p;   //p指向除數(shù)
error.
/*會(huì)被當(dāng)做注釋的開始。應(yīng)該y=x / *p;
或者y = x/(*p); 

2.如果一個(gè)整形常量第一個(gè)字符為數(shù)字0.那么這個(gè)常量會(huì)被當(dāng)做8進(jìn)制數(shù)。
posted @ 2012-06-23 06:21 Snape 閱讀(210) | 評(píng)論 (0)編輯 收藏
僅列出標(biāo)題
共2頁(yè): 1 2 

導(dǎo)航

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章分類

文章檔案

my

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲无亚洲人成网站77777| 亚洲国产日本| 亚洲国产成人精品久久久国产成人一区 | 亚洲视频精品| 欧美大片一区| 亚洲毛片在线免费观看| 久久性色av| 久久久国产精品一区二区中文| 亚洲精品1区2区| 亚洲精品久久久久久久久久久| 亚洲国产1区| 亚洲免费观看高清完整版在线观看熊| 欧美激情a∨在线视频播放| 免费久久99精品国产自在现线| 久久人人精品| 99视频在线观看一区三区| 在线亚洲激情| 久久成人18免费观看| 另类成人小视频在线| 欧美日本视频在线| 国产精品推荐精品| 午夜精品久久| 制服丝袜激情欧洲亚洲| 亚洲欧美日韩另类精品一区二区三区| 亚洲第一色中文字幕| 91久久精品国产91久久| 亚洲午夜免费福利视频| 久久精品亚洲一区二区| 欧美黑人在线播放| 国产在线高清精品| 一区二区三区日韩精品视频| 久久精品电影| 日韩亚洲视频| 欧美大成色www永久网站婷| 亚洲精品久久| 欧美一区精品| 国产乱肥老妇国产一区二 | 亚洲欧美久久| 免费在线国产精品| 国产无一区二区| 欧美亚洲网站| 亚洲女优在线| 国产精品久久久久久久第一福利| 亚洲国产裸拍裸体视频在线观看乱了| 午夜亚洲福利在线老司机| 99综合在线| 国产欧美日韩一区二区三区在线| 一二三区精品福利视频| 亚洲黄色视屏| 欧美日韩在线不卡一区| 一区二区精品国产| 亚洲一区二区在线看| 国产欧美一区二区在线观看| 久久久久久国产精品一区| 老司机免费视频一区二区| 欧美二区在线播放| 欧美午夜精品久久久久久人妖| 亚洲欧美偷拍卡通变态| 欧美一级艳片视频免费观看| 国产综合色产| 亚洲啪啪91| 国户精品久久久久久久久久久不卡 | 久久精品国产一区二区三| 在线播放国产一区中文字幕剧情欧美 | 欧美成年视频| 国产一区亚洲| 91久久极品少妇xxxxⅹ软件| 亚洲国产网站| 国产一在线精品一区在线观看| 欧美h视频在线| 国产偷自视频区视频一区二区| 欧美成年人网站| 国产亚洲一级| 欧美在线视频播放| 亚洲欧美日韩一区二区| 欧美精品久久久久久久久久| 久久综合色一综合色88| 国产日韩欧美精品综合| av成人手机在线| 亚洲私人影院| 欧美亚洲第一页| 亚洲无线视频| 亚洲麻豆av| 欧美视频免费在线| 亚洲视频免费在线| 亚洲一区不卡| 欧美午夜国产| 欧美一区二区视频观看视频| 欧美在线免费一级片| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 欧美日韩国产综合视频在线观看| 亚洲电影免费观看高清完整版| 亚洲国产综合在线看不卡| 欧美国产日产韩国视频| 亚洲日本欧美在线| 香蕉久久一区二区不卡无毒影院 | 欧美中在线观看| 国内精品久久久久影院薰衣草| 欧美中文字幕在线播放| 香蕉久久国产| 国产在线播放一区二区三区| 久久阴道视频| 性欧美精品高清| 亚洲第一网站免费视频| 欧美在线视频网站| 一本色道久久88综合亚洲精品ⅰ| 国产精品一区二区三区观看 | 久久久亚洲一区| 99在线|亚洲一区二区| 国产日韩精品电影| 欧美视频在线视频| 蜜桃av噜噜一区| 久久精品二区三区| 欧美一区二区三区视频| 亚洲视频你懂的| 亚洲视频一区二区免费在线观看| 午夜综合激情| 亚洲欧洲一区二区天堂久久| 国产一区二区观看| 国产视频一区在线| 国内自拍视频一区二区三区| 国产欧美精品在线播放| 国产精品护士白丝一区av| 欧美日韩免费在线视频| 欧美日韩久久不卡| 欧美午夜欧美| 国产综合在线看| 亚洲精品人人| 久久国产乱子精品免费女 | 狠狠色丁香婷婷综合| 国产亚洲va综合人人澡精品| 一区二区三区四区蜜桃| 99国产精品99久久久久久粉嫩| 日韩天堂在线观看| 午夜精品亚洲| 欧美福利在线| 欧美视频中文一区二区三区在线观看| 欧美午夜免费影院| 在线观看日产精品| 亚洲欧美国产高清| 欧美xart系列在线观看| 日韩亚洲欧美综合| 久久久视频精品| 欧美午夜不卡在线观看免费| 激情欧美日韩| 欧美在线你懂的| 亚洲视频在线观看| 欧美精品入口| 亚洲啪啪91| 欧美二区在线| 另类亚洲自拍| 国产综合色精品一区二区三区| 一区二区黄色| 亚洲美洲欧洲综合国产一区| 久久综合色影院| 黄色亚洲精品| 欧美国产先锋| 欧美一级在线视频| 国产精品v亚洲精品v日韩精品| 亚洲精品一二| 亚洲精品在线免费| 麻豆精品视频| 一区二区高清| 亚洲男人的天堂在线观看| 国产精品久久久久aaaa九色| 亚洲欧美福利一区二区| 亚洲女性裸体视频| **网站欧美大片在线观看| 米奇777在线欧美播放| 男男成人高潮片免费网站| 99精品国产在热久久下载| 日韩一级在线观看| 国产欧美日本一区二区三区| 久久频这里精品99香蕉| 欧美精品乱码久久久久久按摩| 欧美电影免费观看大全| 亚洲视频精品| 久久久av水蜜桃| 亚洲欧美国产视频| 久久都是精品| 在线视频成人| 先锋影音网一区二区| 亚洲精品国久久99热| 亚洲在线不卡| 一区二区三区 在线观看视| 欧美亚洲免费在线| 亚洲一区二区三区免费视频| 久久精品最新地址| 欧美在线免费看| 国产精品夫妻自拍| av成人毛片| 亚洲天堂av高清| 欧美日韩国产在线播放网站| 狂野欧美性猛交xxxx巴西| 国产日韩欧美精品| 亚洲欧美日韩在线高清直播| 亚洲免费一在线| 国产精品电影观看| 亚洲女女女同性video| 午夜精品理论片|