国产无遮挡裸体免费直播视频,久久精品国产蜜臀av,动漫在线视频一区二区,欧亚日韩一区二区三区,久艹在线 免费视频,国产精品美女网站免费,正在播放 97超级视频在线观看,斗破苍穹年番在线观看免费,51最新乱码中文字幕

JAVA開(kāi)發(fā)中的一些規(guī)范講解(阿里巴巴Java開(kāi)發(fā)規(guī)范手冊(cè))

 更新時(shí)間:2018年04月05日 12:38:29   投稿:mdxy-dxy  
這篇文章主要介紹了JAVA開(kāi)發(fā)中的一些規(guī)范講解(阿里巴巴Java開(kāi)發(fā)規(guī)范手冊(cè)),需要的朋友可以參考下

一、編程規(guī)約

(一) 命名規(guī)約

1.   【強(qiáng)制】所有編程相關(guān)命名均不能以下劃線或美元符號(hào)開(kāi)始,也不能以下劃線或美元符號(hào)結(jié)束。反例: _name / __name / $Object / name_ / name$ / Object$

2.   【強(qiáng)制】所有編程相關(guān)的命名嚴(yán)禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。說(shuō)明:正確的英文拼寫和語(yǔ)法可以讓閱讀者易于理解,避免歧義。注意,即使純拼音命名方式也要避免采用。
反例: DaZhePromotion [打折] / getPingfenByName() [評(píng)分] / int 變量 = 3; 正例: ali / alibaba / taobao /cainiao / aliyun / youku / hangzhou 等國(guó)際通用的名稱,可視為英文。

3.   【強(qiáng)制】類名使用UpperCamelCase風(fēng)格,必須遵從駝峰形式,但以下情形例外:(領(lǐng)域模型的相關(guān)命名)DO / DTO / VO / DAO等。
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo /XMLService / TCPUDPDeal / TAPromotion

4.   【強(qiáng)制】方法名、參數(shù)名、成員變量、局部變量都統(tǒng)一使用lowerCamelCase風(fēng)格,必須遵從駝峰形式。
正例:localValue / getHttpMessage() / inputUserId

5.   【強(qiáng)制】常量命名全部大寫,單詞間用下劃線隔開(kāi),力求語(yǔ)義表達(dá)完整清楚,不要嫌名字長(zhǎng)。正例: MAX_STOCK_COUNT 反例: MAX_COUNT

6.    【強(qiáng)制】抽象類命名使用Abstract或Base開(kāi)頭;異常類命名使用Exception結(jié)尾;測(cè)試類命名以它要測(cè)試的類的名稱開(kāi)始,以Test結(jié)尾。

7.   【強(qiáng)制】中括號(hào)是數(shù)組類型的一部分,數(shù)組定義如下:String[] args; 反例:請(qǐng)勿使用String args[]的方式來(lái)定義

8.   【強(qiáng)制】POJO類中的任何布爾類型的變量,都不要加is,否則部分框架解析會(huì)引起序列化錯(cuò)誤。
反例:定義為基本數(shù)據(jù)類型boolean isSuccess;的屬性,它的方法也是isSuccess(),RPC
框架在反向解析的時(shí)候,“以為”對(duì)應(yīng)的屬性名稱是success,導(dǎo)致屬性獲取不到,進(jìn)而拋出異常。

9.   【強(qiáng)制】包名統(tǒng)一使用小寫,點(diǎn)分隔符之間有且僅有一個(gè)自然語(yǔ)義的英語(yǔ)單詞。包名統(tǒng)一使用單數(shù)形式,但是類名如果有復(fù)數(shù)含義,類名可以使用復(fù)數(shù)形式。
正例: 應(yīng)用工具類包名為com.alibaba.mpp.util、類名為MessageUtils(此規(guī)則參考spring 的框架結(jié)構(gòu))

10.【強(qiáng)制】杜絕完全不規(guī)范的縮寫,避免望文不知義。
反例:<某業(yè)務(wù)代碼>AbstractClass“縮寫”命名成AbsClass;condition“縮寫”命名成 condi,此類隨意縮寫嚴(yán)重降低了代碼的可閱讀性。

11.【推薦】如果使用到了設(shè)計(jì)模式,建議在類名中體現(xiàn)出具體模式。
說(shuō)明:將設(shè)計(jì)模式體現(xiàn)在名字中,有利于閱讀者快速理解架構(gòu)設(shè)計(jì)思想。
正例:public class OrderFactory;   public class LoginProxy;
   public classResourceObserver;

12.【推薦】接口類中的方法和屬性不要加任何修飾符號(hào)(public 也不要加),保持代碼的簡(jiǎn)潔性,并加上有效的javadoc注釋。盡量不要在接口里定義變量,如果一定要定義變量,肯定是與接口方法相關(guān),并且是整個(gè)應(yīng)用的基礎(chǔ)常量。
正例:接口方法簽名:void f();
   接口基礎(chǔ)常量表示:String COMPANY = "alibaba";
反例:接口方法定義:public abstract void f();
說(shuō)明:JDK8中接口允許有默認(rèn)實(shí)現(xiàn),那么這個(gè)default方法,是對(duì)所有實(shí)現(xiàn)類都有價(jià)值的默認(rèn)實(shí)現(xiàn)。

13.接口和實(shí)現(xiàn)類的命名有兩套規(guī)則:
1)   【強(qiáng)制】對(duì)于Service和DAO類,基于SOA的理念,暴露出來(lái)的服務(wù)一定是接口,內(nèi)部的實(shí)現(xiàn)類用Impl的后綴與接口區(qū)別。
正例:CacheServiceImpl實(shí)現(xiàn)CacheService接口。
2)   【推薦】 如果是形容能力的接口名稱,取對(duì)應(yīng)的形容詞做接口名(通常是–able的形式)。
正例:AbstractTranslator實(shí)現(xiàn) Translatable。

14.【參考】枚舉類名建議帶上Enum后綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開(kāi)。
說(shuō)明:枚舉其實(shí)就是特殊的常量類,且構(gòu)造方法被默認(rèn)強(qiáng)制是私有。
正例:枚舉名字:DealStatusEnum;成員名稱:SUCCESS / UNKOWN_REASON。

15.【參考】各層命名規(guī)約:
A)  Service/DAO層方法命名規(guī)約
1) 獲取單個(gè)對(duì)象的方法用get做前綴。
2) 獲取多個(gè)對(duì)象的方法用list做前綴。
3) 獲取統(tǒng)計(jì)值的方法用count做前綴。
4) 插入的方法用save(推薦)或insert做前綴。
5) 刪除的方法用remove(推薦)或delete做前綴。
6) 修改的方法用update做前綴。
B)  領(lǐng)域模型命名規(guī)約
1) 數(shù)據(jù)對(duì)象:xxxDO,xxx即為數(shù)據(jù)表名。
2) 數(shù)據(jù)傳輸對(duì)象:xxxDTO,xxx為業(yè)務(wù)領(lǐng)域相關(guān)的名稱。
3) 展示對(duì)象:xxxVO,xxx一般為網(wǎng)頁(yè)名稱。
4)  POJO是DO/DTO/BO/VO的統(tǒng)稱,禁止命名成xxxPOJO。

(二) 常量定義

1.   【強(qiáng)制】不允許出現(xiàn)任何魔法值(即未經(jīng)定義的常量)直接出現(xiàn)在代碼中。

反例: String key="Id#taobao_"+tradeId;    cache.put(key, value);

2.   【強(qiáng)制】long或者Long初始賦值時(shí),必須使用大寫的L,不能是小寫的l,小寫容易跟數(shù)字1 混淆,造成誤解。
說(shuō)明:Longa = 2l; 寫的是數(shù)字的21,還是Long型的2?

3.   【推薦】不要使用一個(gè)常量類維護(hù)所有常量,應(yīng)該按常量功能進(jìn)行歸類,分開(kāi)維護(hù)。如:緩存相關(guān)的常量放在類:CacheConsts下;系統(tǒng)配置相關(guān)的常量放在類:ConfigConsts下。
說(shuō)明:大而全的常量類,非得ctrl+f才定位到修改的常量,不利于理解,也不利于維護(hù)。

4.   【推薦】常量的復(fù)用層次有五層:跨應(yīng)用共享常量、應(yīng)用內(nèi)共享常量、子工程內(nèi)共享常量、包內(nèi)共享常量、類內(nèi)共享常量。

1) 跨應(yīng)用共享常量:放置在二方庫(kù)中,通常是client.jar中的const目錄下。
2) 應(yīng)用內(nèi)共享常量:放置在一方庫(kù)的modules中的const目錄下。
  反例:易懂變量也要統(tǒng)一定義成應(yīng)用內(nèi)共享常量,兩位攻城師在兩個(gè)類中分別定義了表示
“是”的變量:
    類A中:public static final String YES ="yes";     類B中:public static final String YES = "y";
   A.YES.equals(B.YES),預(yù)期是true,但實(shí)際返回為false,導(dǎo)致產(chǎn)生線上問(wèn)題。
3) 子工程內(nèi)部共享常量:即在當(dāng)前子工程的const目錄下。
4) 包內(nèi)共享常量:即在當(dāng)前包下單獨(dú)的const目錄下。
5)  類內(nèi)共享常量:直接在類內(nèi)部private static final定義。

5.   【推薦】如果變量值僅在一個(gè)范圍內(nèi)變化用Enum類。如果還帶有名稱之外的延伸屬性,必須使用Enum類,下面正例中的數(shù)字就是延伸信息,表示星期幾。

正例:public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4),FRIDAY(5),
SATURDAY(6), SUNDAY(7);}

(三) 格式規(guī)約

1.   【強(qiáng)制】大括號(hào)的使用約定。如果是大括號(hào)內(nèi)為空,則簡(jiǎn)潔地寫成{}即可,不需要換行;如果是非空代碼塊則:
1) 左大括號(hào)前不換行。
2) 左大括號(hào)后換行。
3) 右大括號(hào)前換行。
4)  右大括號(hào)后還有else等代碼則不換行;表示終止右大括號(hào)后必須換行。
2.   【強(qiáng)制】 左括號(hào)和后一個(gè)字符之間不出現(xiàn)空格;同樣,右括號(hào)和前一個(gè)字符之間也不出現(xiàn)空格。詳見(jiàn)第5條下方正例提示。
3.    【強(qiáng)制】if/for/while/switch/do等保留字與左右括號(hào)之間都必須加空格。
4.   【強(qiáng)制】任何運(yùn)算符左右必須加一個(gè)空格。
說(shuō)明:運(yùn)算符包括賦值運(yùn)算符=、邏輯運(yùn)算符&&、加減乘除符號(hào)、三目運(yùn)行符等。
5.   【強(qiáng)制】代碼塊縮進(jìn)4個(gè)空格,如果使用tab縮進(jìn),請(qǐng)?jiān)O(shè)置成1個(gè)tab為4個(gè)空格。

正例:(涉及1-5點(diǎn))

public static void main(String args[]){    
// 縮進(jìn)4個(gè)空格    
String say ="hello";    
// 運(yùn)算符的左右必須有一個(gè)空格    
int flag = 0;   
// 關(guān)鍵詞if與括號(hào)之間必須有一個(gè)空格,括號(hào)內(nèi)f與左括號(hào),1與右括號(hào)不需要空格     if(flag == 0) {        
System.out.println(say);    
}             
// 左大括號(hào)前加空格且不換行;左大括號(hào)后換行    
if (flag == 1){        
System.out.println("world");    
// 右大括號(hào)前換行,右大括號(hào)后有else,不用換行    
} else{          
System.out.println("ok");    
// 右大括號(hào)做為結(jié)束,必須換行     
}
}

6.【強(qiáng)制】單行字符數(shù)限制不超過(guò)120個(gè),超出需要換行,換行時(shí),遵循如下原則:  1) 換行時(shí)相對(duì)上一行縮進(jìn)4個(gè)空格。
2) 運(yùn)算符與下文一起換行。
3) 方法調(diào)用的點(diǎn)符號(hào)與下文一起換行。
4) 在多個(gè)參數(shù)超長(zhǎng),逗號(hào)后進(jìn)行換行。
5)  在括號(hào)前不要換行,見(jiàn)反例。正例:
StringBuffer sb = new StringBuffer();
//超過(guò)120個(gè)字符的情況下,換行縮進(jìn)4個(gè)空格,并且方法前的點(diǎn)符號(hào)一起換行  sb.append("zi").append("xin")…   
.append("huang");

反例:

StringBuffer sb = new StringBuffer();

//超過(guò)120個(gè)字符的情況下,不要在括號(hào)前換行

sb.append("zi").append("xin")…append

("huang");

//參數(shù)很多的方法調(diào)用也超過(guò)120個(gè)字符,逗號(hào)后才是換行處 method(args1,args2, args3, ...

, argsX);

7. 【強(qiáng)制】方法參數(shù)在定義和傳入時(shí),多個(gè)參數(shù)逗號(hào)后邊必須加空格。

正例:下例中實(shí)參的"a",后邊必須要有一個(gè)空格。

method("a", "b","c");

8. 【推薦】沒(méi)有必要增加若干空格來(lái)使某一行的字符與上一行的相應(yīng)字符對(duì)齊。

正例:
int a = 3;

long b = 4L;

float c = 5F;

StringBuffer sb = new StringBuffer();

說(shuō)明:增加sb這個(gè)變量,如果需要對(duì)齊,則給a、b、c都要增加幾個(gè)空格,在變量比較多的情況下,是一種累贅的事情。

9. 【強(qiáng)制】IDE的text file encoding設(shè)置為UTF-8; IDE中文件的換行符使用Unix格式,不要使用windows格式。

10.【推薦】方法體內(nèi)的執(zhí)行語(yǔ)句組、變量的定義語(yǔ)句組、不同的業(yè)務(wù)邏輯之間或者不同的語(yǔ)義之間插入一個(gè)空行。相同業(yè)務(wù)邏輯和語(yǔ)義之間不需要插入空行。

說(shuō)明:沒(méi)有必要插入多行空格進(jìn)行隔開(kāi)。

(四) OOP規(guī)約

1.   【強(qiáng)制】避免通過(guò)一個(gè)類的對(duì)象引用訪問(wèn)此類的靜態(tài)變量或靜態(tài)方法,無(wú)謂增加編譯器解析成本,直接用類名來(lái)訪問(wèn)即可。
2.   【強(qiáng)制】所有的覆寫方法,必須加@Override注解。
反例:getObject()與get0bject()的問(wèn)題。一個(gè)是字母的O,一個(gè)是數(shù)字的0,加@Override可以準(zhǔn)確判斷是否覆蓋成功。另外,如果在抽象類中對(duì)方法簽名進(jìn)行修改,其實(shí)現(xiàn)類會(huì)馬上編譯報(bào)錯(cuò)。
3.   【強(qiáng)制】相同參數(shù)類型,相同業(yè)務(wù)含義,才可以使用Java的可變參數(shù),避免使用Object。
說(shuō)明:可變參數(shù)必須放置在參數(shù)列表的最后。(提倡同學(xué)們盡量不用可變參數(shù)編程)
正例:public User getUsers(Stringtype, Integer... ids); 
4.   【強(qiáng)制】對(duì)外暴露的接口簽名,原則上不允許修改方法簽名,避免對(duì)接口調(diào)用方產(chǎn)生影響。接口過(guò)時(shí)必須加@Deprecated注解,并清晰地說(shuō)明采用的新接口或者新服務(wù)是什么。
5.   【強(qiáng)制】不能使用過(guò)時(shí)的類或方法。
說(shuō)明:java.net.URLDecoder 中的方法decode(StringencodeStr) 這個(gè)方法已經(jīng)過(guò)時(shí),應(yīng)該使用雙參數(shù)decode(String source, Stringencode)。接口提供方既然明確是過(guò)時(shí)接口,那么有義務(wù)同時(shí)提供新的接口;作為調(diào)用方來(lái)說(shuō),有義務(wù)去考證過(guò)時(shí)方法的新實(shí)現(xiàn)是什么。
6.   【強(qiáng)制】Object的equals方法容易拋空指針異常,應(yīng)使用常量或確定有值的對(duì)象來(lái)調(diào)用equals。
正例: "test".equals(object);
反例: object.equals("test");
說(shuō)明:推薦使用java.util.Objects#equals (JDK7引入的工具類)
7.   【強(qiáng)制】所有的相同類型的包裝類對(duì)象之間值的比較,全部使用equals方法比較。
說(shuō)明:對(duì)于Integer var=?在-128至127之間的賦值,Integer對(duì)象是在IntegerCache.cache 產(chǎn)生,會(huì)復(fù)用已有對(duì)象,這個(gè)區(qū)間內(nèi)的Integer值可以直接使用==進(jìn)行判斷,但是這個(gè)區(qū)間之外的所有數(shù)據(jù),都會(huì)在堆上產(chǎn)生,并不會(huì)復(fù)用已有對(duì)象,這是一個(gè)大坑,推薦使用equals方法進(jìn)行判斷。
8.   【強(qiáng)制】關(guān)于基本數(shù)據(jù)類型與包裝數(shù)據(jù)類型的使用標(biāo)準(zhǔn)如下:
1) 所有的POJO類屬性必須使用包裝數(shù)據(jù)類型。
2) RPC方法的返回值和參數(shù)必須使用包裝數(shù)據(jù)類型。
3) 所有的局部變量推薦使用基本數(shù)據(jù)類型。
 說(shuō)明:POJO類屬性沒(méi)有初值是提醒使用者在需要使用時(shí),必須自己顯式地進(jìn)行賦值,任何
NPE問(wèn)題,或者入庫(kù)檢查,都由使用者來(lái)保證。
 正例:數(shù)據(jù)庫(kù)的查詢結(jié)果可能是null,因?yàn)樽詣?dòng)拆箱,用基本數(shù)據(jù)類型接收有NPE風(fēng)險(xiǎn)。  反例:某業(yè)務(wù)的交易報(bào)表上顯示成交總額漲跌情況,即正負(fù)x%,x為基本數(shù)據(jù)類型,調(diào)用的 RPC服務(wù),調(diào)用不成功時(shí),返回的是默認(rèn)值,頁(yè)面顯示:0%,這是不合理的,應(yīng)該顯示成中劃線-。所以包裝數(shù)據(jù)類型的null值,能夠表示額外的信息,如:遠(yuǎn)程調(diào)用失敗,異常退出。
9.   【強(qiáng)制】定義DO/DTO/VO等POJO類時(shí),不要設(shè)定任何屬性默認(rèn)值。
反例:某業(yè)務(wù)的DO的gmtCreate默認(rèn)值為newDate();但是這個(gè)屬性在數(shù)據(jù)提取時(shí)并沒(méi)有置入具體值,在更新其它字段時(shí)又附帶更新了此字段,導(dǎo)致創(chuàng)建時(shí)間被修改成當(dāng)前時(shí)間。
10.【強(qiáng)制】序列化類新增屬性時(shí),請(qǐng)不要修改serialVersionUID字段,避免反序列失??;如果完全不兼容升級(jí),避免反序列化混亂,那么請(qǐng)修改serialVersionUID值。
說(shuō)明:注意serialVersionUID不一致會(huì)拋出序列化運(yùn)行時(shí)異常。
11.【強(qiáng)制】構(gòu)造方法里面禁止加入任何業(yè)務(wù)邏輯,如果有初始化邏輯,請(qǐng)放在init方法中。
12.【強(qiáng)制】POJO類必須寫toString方法。使用工具類source> generate toString時(shí),如果繼承了另一個(gè)POJO類,注意在前面加一下super.toString。
說(shuō)明:在方法執(zhí)行拋出異常時(shí),可以直接調(diào)用POJO的toString()方法打印其屬性值,便于排查問(wèn)題。

13. 【推薦】使用索引訪問(wèn)用String的split方法得到的數(shù)組時(shí),需做最后一個(gè)分隔符后有無(wú)內(nèi)容的檢查,否則會(huì)有拋IndexOutOfBoundsException的風(fēng)險(xiǎn)。
 
說(shuō)明:
String str = "a,b,c,,"; String[] ary =str.split(",");
//預(yù)期大于3,結(jié)果是3
System.out.println(ary.length);

14.【推薦】當(dāng)一個(gè)類有多個(gè)構(gòu)造方法,或者多個(gè)同名方法,這些方法應(yīng)該按順序放置在一起,便于閱讀。
15.【推薦】 類內(nèi)方法定義順序依次是:公有方法或保護(hù)方法 > 私有方法 > getter/setter方法。
說(shuō)明:公有方法是類的調(diào)用者和維護(hù)者最關(guān)心的方法,首屏展示最好;保護(hù)方法雖然只是子類關(guān)心,也可能是“模板設(shè)計(jì)模式”下的核心方法;而私有方法外部一般不需要特別關(guān)心,是一個(gè)黑盒實(shí)現(xiàn);因?yàn)榉椒ㄐ畔r(jià)值較低,所有Service和DAO的getter/setter方法放在類體最后。
16. 【推薦】setter方法中,參數(shù)名稱與類成員變量名稱一致,this.成員名=參數(shù)名。在 getter/setter方法中,盡量不要增加業(yè)務(wù)邏輯,增加排查問(wèn)題難度。
反例:
public IntegergetData(){      if(true)  {  return data +100;
} else  { return data- 100;
 }  }
17. 【推薦】循環(huán)體內(nèi),字符串的聯(lián)接方式,使用StringBuilder的append方法進(jìn)行擴(kuò)展。
反例:
String str ="start";      for(int i=0; i<100;i++){          str = str +"hello";    
}
說(shuō)明:反編譯出的字節(jié)碼文件顯示每次循環(huán)都會(huì)new出一個(gè)StringBuilder對(duì)象,然后進(jìn)行 append操作,最后通過(guò)toString方法返回String對(duì)象,造成內(nèi)存資源浪費(fèi)。
18.【推薦】final可提高程序響應(yīng)效率,聲明成final的情況:  1) 不需要重新賦值的變量,包括類屬性、局部變量。
2) 對(duì)象參數(shù)前加final,表示不允許修改引用的指向。
3)  類方法確定不允許被重寫。
19.【推薦】慎用Object的clone方法來(lái)拷貝對(duì)象。
說(shuō)明:對(duì)象的clone方法默認(rèn)是淺拷貝,若想實(shí)現(xiàn)深拷貝需要重寫clone方法實(shí)現(xiàn)屬性對(duì)象的拷貝。
20.【推薦】類成員與方法訪問(wèn)控制從嚴(yán):
1) 如果不允許外部直接通過(guò)new來(lái)創(chuàng)建對(duì)象,那么構(gòu)造方法必須是private。
2) 工具類不允許有public或default構(gòu)造方法。
3) 類非static成員變量并且與子類共享,必須是protected。
4) 類非static成員變量并且僅在本類使用,必須是private。
5) 類static成員變量如果僅在本類使用,必須是private。
6) 若是static成員變量,必須考慮是否為final。
7) 類成員方法只供類內(nèi)部調(diào)用,必須是private。
8) 類成員方法只對(duì)繼承類公開(kāi),那么限制為protected。
說(shuō)明:任何類、方法、參數(shù)、變量,嚴(yán)控訪問(wèn)范圍。過(guò)寬泛的訪問(wèn)范圍,不利于模塊解耦。思考:如果是一個(gè)private的方法,想刪除就刪除,可是一個(gè)public的Service方法,或者一個(gè)public的成員變量,刪除一下,不得手心冒點(diǎn)汗嗎?變量像自己的小孩,盡量在自己的視線內(nèi),變量作用域太大,如果無(wú)限制的到處跑,那么你會(huì)擔(dān)心的。

(五) 集合處理

1.   【強(qiáng)制】Map/Set的key為自定義對(duì)象時(shí),必須重寫hashCode和equals。
正例:String重寫了hashCode和equals方法,所以我們可以非常愉快地使用String對(duì)象作為key來(lái)使用。
2.   【強(qiáng)制】ArrayList的subList結(jié)果不可強(qiáng)轉(zhuǎn)成ArrayList,否則會(huì)拋出ClassCastException 異常:java.util.RandomAccessSubList cannot be cast to java.util.ArrayList; 說(shuō)明:subList 返回的是 ArrayList 的內(nèi)部類 SubList,并不是 ArrayList ,而是 ArrayList 的一個(gè)視圖,對(duì)于SubList子列表的所有操作最終會(huì)反映到原列表上。
3.   【強(qiáng)制】在subList場(chǎng)景中,高度注意對(duì)原集合元素個(gè)數(shù)的修改,會(huì)導(dǎo)致子列表的遍歷、增加、刪除均產(chǎn)生ConcurrentModificationException 異常。
4.   【強(qiáng)制】使用集合轉(zhuǎn)數(shù)組的方法,必須使用集合的toArray(T[] array),傳入的是類型完全一樣的數(shù)組,大小就是list.size()。
反例:直接使用toArray無(wú)參方法存在問(wèn)題,此方法返回值只能是Object[]類,若強(qiáng)轉(zhuǎn)其它類型數(shù)組將出現(xiàn)ClassCastException錯(cuò)誤。正例:
List<String> list = newArrayList<String>(2);     list.add("guan");     list.add("bao");     
String[] array = newString[list.size()];      array =list.toArray(array);
說(shuō)明:使用toArray帶參方法,入?yún)⒎峙涞臄?shù)組空間不夠大時(shí),toArray方法內(nèi)部將重新分配內(nèi)存空間,并返回新數(shù)組地址;如果數(shù)組元素大于實(shí)際所需,下標(biāo)為[ list.size() ]的數(shù)組元素將被置為null,其它數(shù)組元素保持原值,因此最好將方法入?yún)?shù)組大小定義與集合元素個(gè)數(shù)一致。
5.   【強(qiáng)制】使用工具類Arrays.asList()把數(shù)組轉(zhuǎn)換成集合時(shí),不能使用其修改集合相關(guān)的方法,它的add/remove/clear方法會(huì)拋出UnsupportedOperationException異常。
說(shuō)明:asList的返回對(duì)象是一個(gè)Arrays內(nèi)部類,并沒(méi)有實(shí)現(xiàn)集合的修改方法。Arrays.asList 體現(xiàn)的是適配器模式,只是轉(zhuǎn)換接口,后臺(tái)的數(shù)據(jù)仍是數(shù)組。
    String[] str = new String[] {"a", "b" };
    List list = Arrays.asList(str);
第一種情況:list.add("c");運(yùn)行時(shí)異常。第二種情況:str[0]= "gujin"; 那么list.get(0)也會(huì)隨之修改。
6.   【強(qiáng)制】泛型通配符<? extends T>來(lái)接收返回的數(shù)據(jù),此寫法的泛型集合不能使用add方法。說(shuō)明:蘋果裝箱后返回一個(gè)<? extends Fruits>對(duì)象,此對(duì)象就不能往里加任何水果,包括蘋果。
7.   【強(qiáng)制】不要在foreach循環(huán)里進(jìn)行元素的remove/add操作。remove元素請(qǐng)使用Iterator 方式,如果并發(fā)操作,需要對(duì)Iterator對(duì)象加鎖。

反例:

List<String> a = newArrayList<String>();    
a.add("1");    
a.add("2");      for(String temp : a) {         if("1".equals(temp)){            
a.remove(temp);        
}    
}
說(shuō)明:這個(gè)例子的執(zhí)行結(jié)果會(huì)出乎大家的意料,那么試一下把“1”換成“2”,會(huì)是同樣的結(jié)果嗎?正例:
Iterator<String> it = a.iterator(); while(it.hasNext()){            
String temp =  it.next();                       if(刪除元素的條件){                             it.remove();               
}    
}   

8. 【強(qiáng)制】在JDK7版本以上,Comparator要滿足自反性,傳遞性,對(duì)稱性,不然Arrays.sort,
Collections.sort會(huì)報(bào)IllegalArgumentException異常。
說(shuō)明:
1) 自反性:x,y的比較結(jié)果和y,x的比較結(jié)果相反。
2) 傳遞性:x>y,y>z,則x>z。
3) 對(duì)稱性:x=y,則x,z比較結(jié)果和y,z比較結(jié)果相同。反例:下例中沒(méi)有處理相等的情況,實(shí)際使用中可能會(huì)出現(xiàn)異常:
new Comparator<Student>(){         
@Override         publicint compare(Student o1, Student o2){             return o1.getId() > o2.getId() ? 1 :-1;         }    
}
9. 【推薦】集合初始化時(shí),盡量指定集合初始值大小。說(shuō)明:ArrayList盡量使用ArrayList(int initialCapacity) 初始化。
10.【推薦】使用entrySet遍歷Map類集合KV,而不是keySet方式進(jìn)行遍歷。
說(shuō)明:keySet其實(shí)是遍歷了2次,一次是轉(zhuǎn)為Iterator對(duì)象,另一次是從hashMap中取出key 所對(duì)應(yīng)的value。而entrySet只是遍歷了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。
正例:values()返回的是V值集合,是一個(gè)list集合對(duì)象;keySet()返回的是K值集合,是一個(gè)Set集合對(duì)象;entrySet()返回的是K-V值組合集合。
11.【推薦】高度注意Map類集合K/V能不能存儲(chǔ)null值的情況,如下表格:
 
12.【參考】合理利用好集合的有序性(sort)和穩(wěn)定性(order),避免集合的無(wú)序性(unsort)和不穩(wěn)定性(unorder)帶來(lái)的負(fù)面影響。

說(shuō)明:穩(wěn)定性指集合每次遍歷的元素次序是一定的。有序性是指遍歷的結(jié)果是按某種比較規(guī)則依次排列的。如:ArrayList是order/unsort;HashMap是unorder/unsort;TreeSet是 order/sort。
13.【參考】利用Set元素唯一的特性,可以快速對(duì)另一個(gè)集合進(jìn)行去重操作,避免使用List的 contains方法進(jìn)行遍歷去重操作。

(六) 并發(fā)處理

1.   【強(qiáng)制】獲取單例對(duì)象要線程安全。在單例對(duì)象里面做操作也要保證線程安全。
說(shuō)明:資源驅(qū)動(dòng)類、工具類、單例工廠類都需要注意。
2.   【強(qiáng)制】線程資源必須通過(guò)線程池提供,不允許在應(yīng)用中自行顯式創(chuàng)建線程。
說(shuō)明:使用線程池的好處是減少在創(chuàng)建和銷毀線程上所花的時(shí)間以及系統(tǒng)資源的開(kāi)銷,解決資源不足的問(wèn)題。如果不使用線程池,有可能造成系統(tǒng)創(chuàng)建大量同類線程而導(dǎo)致消耗完內(nèi)存或者
“過(guò)度切換”的問(wèn)題。
3.   【強(qiáng)制】SimpleDateFormat 是線程不安全的類,一般不要定義為static變量,如果定義為 static,必須加鎖,或者使用DateUtils工具類。
正例:注意線程安全,使用DateUtils。亦推薦如下處理:
private static final ThreadLocal<DateFormat> df =new ThreadLocal<DateFormat>() {     
 @Override      
protected DateFormat initialValue(){          
return newSimpleDateFormat("yyyy-MM-dd");      
}  
};  
說(shuō)明:如果是JDK8的應(yīng)用,可以使用instant代替Date,Localdatetime代替Calendar,
Datetimeformatter代替Simpledateformatter,官方給出的解釋:simple beautifulstrong immutable thread-safe。
4.   【強(qiáng)制】高并發(fā)時(shí),同步調(diào)用應(yīng)該去考量鎖的性能損耗。能用無(wú)鎖數(shù)據(jù)結(jié)構(gòu),就不要用鎖;能鎖區(qū)塊,就不要鎖整個(gè)方法體;能用對(duì)象鎖,就不要用類鎖。
5.   【強(qiáng)制】對(duì)多個(gè)資源、數(shù)據(jù)庫(kù)表、對(duì)象同時(shí)加鎖時(shí),需要保持一致的加鎖順序,否則可能會(huì)造成死鎖。
說(shuō)明:線程一需要對(duì)表A、B、C依次全部加鎖后才可以進(jìn)行更新操作,那么線程二的加鎖順序也必須是A、B、C,否則可能出現(xiàn)死鎖。
6.   【強(qiáng)制】并發(fā)修改同一記錄時(shí),避免更新丟失,要么在應(yīng)用層加鎖,要么在緩存加鎖,要么在數(shù)據(jù)庫(kù)層使用樂(lè)觀鎖,使用version作為更新依據(jù)。說(shuō)明:如果每次訪問(wèn)沖突概率小于20%,推薦使用樂(lè)觀鎖,否則使用悲觀鎖。樂(lè)觀鎖的重試次數(shù)不得小于3次。
7.   【強(qiáng)制】多線程并行處理定時(shí)任務(wù)時(shí),Timer運(yùn)行多個(gè)TimeTask時(shí),只要其中之一沒(méi)有捕獲拋出的異常,其它任務(wù)便會(huì)自動(dòng)終止運(yùn)行,使用ScheduledExecutorService則沒(méi)有這個(gè)問(wèn)題。
8.   【強(qiáng)制】線程池不允許使用Executors去創(chuàng)建,而是通過(guò)ThreadPoolExecutor的方式,這樣的處理方式讓寫的同學(xué)更加明確線程池的運(yùn)行規(guī)則,規(guī)避資源耗盡的風(fēng)險(xiǎn)。
說(shuō)明:Executors各個(gè)方法的弊端:
1)    newFixedThreadPool和newSingleThreadExecutor:  主要問(wèn)題是堆積的請(qǐng)求處理隊(duì)列可能會(huì)耗費(fèi)非常大的內(nèi)存,甚至OOM。
2)    newCachedThreadPool和newScheduledThreadPool:  主要問(wèn)題是線程數(shù)最大數(shù)是Integer.MAX_VALUE,可能會(huì)創(chuàng)建數(shù)量非常多的線程,甚至OOM。
9. 【強(qiáng)制】創(chuàng)建線程或線程池時(shí)請(qǐng)指定有意義的線程名稱,方便出錯(cuò)時(shí)回溯。
正例:
public class TimerTaskThread extends Thread{      publicTimerTaskThread(){         super.setName("TimerTaskThread"); …
}
10.【推薦】使用CountDownLatch進(jìn)行異步轉(zhuǎn)同步操作,每個(gè)線程退出前必須調(diào)用countDown方法,線程執(zhí)行代碼注意catch異常,確保countDown方法可以執(zhí)行,避免主線程無(wú)法執(zhí)行至 countDown方法,直到超時(shí)才返回結(jié)果。說(shuō)明:注意,子線程拋出異常堆棧,不能在主線程try-catch到。
11.【推薦】避免Random實(shí)例被多線程使用,雖然共享該實(shí)例是線程安全的,但會(huì)因競(jìng)爭(zhēng)同一seed 導(dǎo)致的性能下降。說(shuō)明:Random實(shí)例包括java.util.Random 的實(shí)例或者 Math.random()實(shí)例。
正例:在JDK7之后,可以直接使用API ThreadLocalRandom,在 JDK7之前,可以做到每個(gè)線程一個(gè)實(shí)例。
12. 【推薦】通過(guò)雙重檢查鎖(double-checked locking)(在并發(fā)場(chǎng)景)實(shí)現(xiàn)延遲初始化的優(yōu)化問(wèn)題隱患(可參考 The "Double-Checked Locking is Broken" Declaration),推薦問(wèn)題解決方
案中較為簡(jiǎn)單一種(適用于jdk5及以上版本),將目標(biāo)屬性聲明為 volatile型(比如反例
中修改helper的屬性聲明為private volatile Helper helper= null;);反例:
class Foo {  private Helper helper = null;  public Helper getHelper() {
if (helper ==null)   synchronized(this) {      if (helper== null)         helper = newHelper();  
}      return helper; }
// other functions and members...
}
13.【參考】volatile解決多線程內(nèi)存不可見(jiàn)問(wèn)題。對(duì)于一寫多讀,是可以解決變量同步問(wèn)題,但是如果多寫,同樣無(wú)法解決線程安全問(wèn)題。如果想取回count++數(shù)據(jù),使用如下類實(shí)現(xiàn):
AtomicIntegercount = new AtomicInteger(); count.addAndGet(1); count++操作如果是
JDK8,推薦使用LongAdder對(duì)象,比AtomicLong性能更好(減少樂(lè)觀鎖的重試次數(shù))。
14.【參考】注意HashMap的擴(kuò)容死鏈,導(dǎo)致CPU飆升的問(wèn)題。
15.【參考】ThreadLocal無(wú)法解決共享對(duì)象的更新問(wèn)題,ThreadLocal對(duì)象建議使用static修飾。這個(gè)變量是針對(duì)一個(gè)線程內(nèi)所有操作共有的,所以設(shè)置為靜態(tài)變量,所有此類實(shí)例共享此靜態(tài)變量 ,也就是說(shuō)在類第一次被使用時(shí)裝載,只分配一塊存儲(chǔ)空間,所有此類的對(duì)象(只要是這個(gè)線程內(nèi)定義的)都可以操控這個(gè)變量。

(七) 控制語(yǔ)句

1.   【強(qiáng)制】在一個(gè)switch塊內(nèi),每個(gè)case要么通過(guò)break/return來(lái)終止,要么注釋說(shuō)明程序?qū)⒗^續(xù)執(zhí)行到哪一個(gè)case為止;在一個(gè)switch塊內(nèi),都必須包含一個(gè)default語(yǔ)句并且放在最后,即使它什么代碼也沒(méi)有。
2.   【強(qiáng)制】在if/else/for/while/do語(yǔ)句中必須使用大括號(hào),即使只有一行代碼,避免使用下面的形式:if (condition) statements;
3.    【推薦】推薦盡量少用else, if-else的方式可以改寫成:
if(condition){             …            return obj;    } 
// 接著寫else的業(yè)務(wù)邏輯代碼;
說(shuō)明:如果使用要if-else if-else方式表達(dá)邏輯,【強(qiáng)制】請(qǐng)勿超過(guò)3層,超過(guò)請(qǐng)使用狀態(tài)設(shè)計(jì)模式。
4.   【推薦】除常用方法(如getXxx/isXxx)等外,不要在條件判斷中執(zhí)行復(fù)雜的語(yǔ)句,以提高可讀性。正例:
//偽代碼如下
InputStream stream = file.open(fileName,"w");

if (stream != null) {
        …
}    反例:
if (file.open(fileName, "w") != null)){

}
5.   【推薦】循環(huán)體中的語(yǔ)句要考量性能,以下操作盡量移至循環(huán)體外處理,如定義對(duì)象、變量、
獲取數(shù)據(jù)庫(kù)連接,進(jìn)行不必要的try-catch操作(這個(gè)try-catch是否可以移至循環(huán)體外)。
6.    【推薦】接口入?yún)⒈Wo(hù),這種場(chǎng)景常見(jiàn)的是用于做批量操作的接口。
7.   【參考】方法中需要進(jìn)行參數(shù)校驗(yàn)的場(chǎng)景:
1) 調(diào)用頻次低的方法。
2) 執(zhí)行時(shí)間開(kāi)銷很大的方法,參數(shù)校驗(yàn)時(shí)間幾乎可以忽略不計(jì),但如果因?yàn)閰?shù)錯(cuò)誤導(dǎo)致中間執(zhí)行回退,或者錯(cuò)誤,那得不償失。  3) 需要極高穩(wěn)定性和可用性的方法。
 4) 對(duì)外提供的開(kāi)放接口,不管是RPC/API/HTTP接口。
8.   【參考】方法中不需要參數(shù)校驗(yàn)的場(chǎng)景:
1) 極有可能被循環(huán)調(diào)用的方法,不建議對(duì)參數(shù)進(jìn)行校驗(yàn)。但在方法說(shuō)明里必須注明外部參數(shù)檢查。
2) 底層的方法調(diào)用頻度都比較高,一般不校驗(yàn)。畢竟是像純凈水過(guò)濾的最后一道,參數(shù)錯(cuò)誤不太可能到底層才會(huì)暴露問(wèn)題。一般DAO層與Service層都在同一個(gè)應(yīng)用中,部署在同一臺(tái)服務(wù)器中,所以DAO的參數(shù)校驗(yàn),可以省略。
3)  被聲明成private只會(huì)被自己代碼所調(diào)用的方法,如果能夠確定調(diào)用方法的代碼傳入?yún)?shù)已經(jīng)做過(guò)檢查或者肯定不會(huì)有問(wèn)題,此時(shí)可以不校驗(yàn)參數(shù)。

(八) 注釋規(guī)約

1.   【強(qiáng)制】類、類屬性、類方法的注釋必須使用javadoc規(guī)范,使用/**內(nèi)容*/格式,不得使用
//xxx方式。
說(shuō)明:在IDE編輯窗口中,javadoc方式會(huì)提示相關(guān)注釋,生成javadoc可以正確輸出相應(yīng)注釋;在IDE中,工程調(diào)用方法時(shí),不進(jìn)入方法即可懸浮提示方法、參數(shù)、返回值的意義,提高閱讀效率。
2.   【強(qiáng)制】所有的抽象方法(包括接口中的方法)必須要用javadoc注釋、除了返回值、參數(shù)、異常說(shuō)明外,還必須指出該方法做什么事情,實(shí)現(xiàn)什么功能。
說(shuō)明:如有實(shí)現(xiàn)和調(diào)用注意事項(xiàng),請(qǐng)一并說(shuō)明。
3.    【強(qiáng)制】所有的類都必須添加創(chuàng)建者信息。
4.   【強(qiáng)制】方法內(nèi)部單行注釋,在被注釋語(yǔ)句上方另起一行,使用//注釋。方法內(nèi)部多行注釋使用/* */注釋,注意與代碼對(duì)齊。
5.    【強(qiáng)制】所有的枚舉類型字段必須要有注釋,說(shuō)明每個(gè)數(shù)據(jù)項(xiàng)的用途。
6.   【推薦】與其“半吊子”英文來(lái)注釋,不如用中文注釋把問(wèn)題說(shuō)清楚。專有名詞、關(guān)鍵字,保持英文原文即可。
反例:“TCP連接超時(shí)”解釋成“傳輸控制協(xié)議連接超時(shí)”,理解反而費(fèi)腦筋。
7.   【推薦】代碼修改的同時(shí),注釋也要進(jìn)行相應(yīng)的修改,尤其是參數(shù)、返回值、異常、核心邏輯等的修改。
說(shuō)明:代碼與注釋更新不同步,就像路網(wǎng)與導(dǎo)航軟件更新不同步一樣,如果導(dǎo)航軟件嚴(yán)重滯后,就失去了導(dǎo)航的意義。
8.   【參考】注釋掉的代碼盡量要配合說(shuō)明,而不是簡(jiǎn)單的注釋掉。
說(shuō)明:代碼被注釋掉有兩種可能性:1)后續(xù)會(huì)恢復(fù)此段代碼邏輯。2)永久不用。前者如果沒(méi)有備注信息,難以知曉注釋動(dòng)機(jī)。后者建議直接刪掉(代碼倉(cāng)庫(kù)保存了歷史代碼)。
9.   【參考】對(duì)于注釋的要求:第一、能夠準(zhǔn)確反應(yīng)設(shè)計(jì)思想和代碼邏輯;第二、能夠描述業(yè)務(wù)含義,使別的程序員能夠迅速了解到代碼背后的信息。完全沒(méi)有注釋的大段代碼對(duì)于閱讀者形同天書,注釋是給自己看的,即使隔很長(zhǎng)時(shí)間,也能清晰理解當(dāng)時(shí)的思路;注釋也是給繼任者看的,使其能夠快速接替自己的工作。
10.【參考】好的命名、代碼結(jié)構(gòu)是自解釋的,注釋力求精簡(jiǎn)準(zhǔn)確、表達(dá)到位。避免出現(xiàn)注釋的一個(gè)極端:過(guò)多過(guò)濫的注釋,代碼的邏輯一旦修改,修改注釋是相當(dāng)大的負(fù)擔(dān)。
反例:
// put elephant into fridge  put(elephant,fridge);  
  方法名put,加上兩個(gè)有意義的變量名elephant和fridge,已經(jīng)說(shuō)明了這是在干什么,語(yǔ)義清晰的代碼不需要額外的注釋。
11.【參考】特殊注釋標(biāo)記,請(qǐng)注明標(biāo)記人與標(biāo)記時(shí)間。注意及時(shí)處理這些標(biāo)記,通過(guò)標(biāo)記掃描,經(jīng)常清理此類標(biāo)記。線上故障有時(shí)候就是來(lái)源于這些標(biāo)記處的代碼。  1) 待辦事宜(TODO):( 標(biāo)記人,標(biāo)記時(shí)間,[預(yù)計(jì)處理時(shí)間])
   表示需要實(shí)現(xiàn),但目前還未實(shí)現(xiàn)的功能。這實(shí)際上是一個(gè)javadoc的標(biāo)簽,目前的
javadoc還沒(méi)有實(shí)現(xiàn),但已經(jīng)被廣泛使用。只能應(yīng)用于類,接口和方法(因?yàn)樗且粋€(gè)javadoc標(biāo)簽)。
 2)錯(cuò)誤,不能工作(FIXME):(標(biāo)記人,標(biāo)記時(shí)間,[預(yù)計(jì)處理時(shí)間])
   在注釋中用FIXME標(biāo)記某代碼是錯(cuò)誤的,而且不能工作,需要及時(shí)糾正的情況。
 

(九) 其它

1.   【強(qiáng)制】在使用正則表達(dá)式時(shí),利用好其預(yù)編譯功能,可以有效加快正則匹配速度。
說(shuō)明:不要在方法體內(nèi)定義:Pattern pattern = Pattern.compile(規(guī)則);
2.   【強(qiáng)制】避免用Apache Beanutils進(jìn)行屬性的copy。
說(shuō)明:Apache BeanUtils性能較差,可以使用其他方案比如SpringBeanUtils, Cglib
BeanCopier。
3.   【強(qiáng)制】velocity調(diào)用POJO類的屬性時(shí),建議直接使用屬性名取值即可,模板引擎會(huì)自動(dòng)按規(guī)范調(diào)用POJO的getXxx(),如果是boolean基本數(shù)據(jù)類型變量(注意,boolean命名不需要加is前綴),會(huì)自動(dòng)調(diào)用isXxx()方法。
說(shuō)明:注意如果是Boolean包裝類對(duì)象,優(yōu)先調(diào)用getXxx()的方法。
4.   【強(qiáng)制】后臺(tái)輸送給頁(yè)面的變量必須加$!{var}——中間的感嘆號(hào)。
說(shuō)明:如果var=null或者不存在,那么${var}會(huì)直接顯示在頁(yè)面上。
5.   【強(qiáng)制】注意 Math.random() 這個(gè)方法返回是double類型,注意取值范圍 0≤x<1(能夠取到零值,注意除零異常),如果想獲取整數(shù)類型的隨機(jī)數(shù),不要將x放大10的若干倍然后取整,直接使用Random對(duì)象的nextInt或者nextLong方法。
6.   【強(qiáng)制】獲取當(dāng)前毫秒數(shù):System.currentTimeMillis(); 而不是new Date().getTime(); 說(shuō)明:如果想獲取更加精確的納秒級(jí)時(shí)間值,用System.nanoTime。在JDK8中,針對(duì)統(tǒng)計(jì)時(shí)間等場(chǎng)景,推薦使用Instant類。
7.   【推薦】盡量不要在vm中加入變量聲明、邏輯運(yùn)算符,更不要在vm模板中加入任何復(fù)雜的邏輯。
8.   【推薦】任何數(shù)據(jù)結(jié)構(gòu)的使用都應(yīng)限制大小。
說(shuō)明:這點(diǎn)很難完全做到,但很多次的故障都是因?yàn)閿?shù)據(jù)結(jié)構(gòu)自增長(zhǎng),結(jié)果造成內(nèi)存被吃光。
9.   【推薦】對(duì)于“明確停止使用的代碼和配置”,如方法、變量、類、配置文件、動(dòng)態(tài)配置屬性等要堅(jiān)決從程序中清理出去,避免造成過(guò)多垃圾。清理這類垃圾代碼是技術(shù)氣場(chǎng),不要有這樣的觀念:“不做不錯(cuò),多做多錯(cuò)”。

二、異常日志

(一) 異常處理

1.    【強(qiáng)制】不要捕獲Java類庫(kù)中定義的繼承自RuntimeException的運(yùn)行時(shí)異常類,如:
IndexOutOfBoundsException/ NullPointerException,這類異常由程序員預(yù)檢查來(lái)規(guī)避,保證程序健壯性。
正例:if(obj != null) {...}
反例:try { obj.method() }catch(NullPointerException e){…}
2.    【強(qiáng)制】異常不要用來(lái)做流程控制,條件控制,因?yàn)楫惓5奶幚硇时葪l件分支低。
3.    【強(qiáng)制】對(duì)大段代碼進(jìn)行try-catch,這是不負(fù)責(zé)任的表現(xiàn)。catch時(shí)請(qǐng)分清穩(wěn)定代碼和非穩(wěn)定代碼,穩(wěn)定代碼指的是無(wú)論如何不會(huì)出錯(cuò)的代碼。對(duì)于非穩(wěn)定代碼的catch盡可能進(jìn)行區(qū)分異常類型,再做對(duì)應(yīng)的異常處理。
4.    【強(qiáng)制】捕獲異常是為了處理它,不要捕獲了卻什么都不處理而拋棄之,如果不想處理它,請(qǐng)將該異常拋給它的調(diào)用者。最外層的業(yè)務(wù)使用者,必須處理異常,將其轉(zhuǎn)化為用戶可以理解的內(nèi)容。
5.    【強(qiáng)制】有try塊放到了事務(wù)代碼中,catch異常后,如果需要回滾事務(wù),一定要注意手動(dòng)回滾事務(wù)。
6.    【強(qiáng)制】finally塊必須對(duì)資源對(duì)象、流對(duì)象進(jìn)行關(guān)閉,有異常也要做try-catch。
說(shuō)明:如果JDK7,可以使用try-with-resources方法。
7.    【強(qiáng)制】不能在finally塊中使用return,finally塊中的return返回后方法結(jié)束執(zhí)行,不會(huì)再執(zhí)行try塊中的return語(yǔ)句。
8.    【強(qiáng)制】捕獲異常與拋異常,必須是完全匹配,或者捕獲異常是拋異常的父類。
說(shuō)明:如果預(yù)期拋的是繡球,實(shí)際接到的是鉛球,就會(huì)產(chǎn)生意外情況。
9.    【推薦】方法的返回值可以為null,不強(qiáng)制返回空集合,或者空對(duì)象等,必須添加注釋充分說(shuō)明什么情況下會(huì)返回null值。調(diào)用方需要進(jìn)行null判斷防止NPE問(wèn)題。
說(shuō)明:本規(guī)約明確防止NPE是調(diào)用者的責(zé)任。即使被調(diào)用方法返回空集合或者空對(duì)象,對(duì)調(diào)用
者來(lái)說(shuō),也并非高枕無(wú)憂,必須考慮到遠(yuǎn)程調(diào)用失敗,運(yùn)行時(shí)異常等場(chǎng)景返回null的情況。
10.【推薦】防止NPE,是程序員的基本修養(yǎng),注意NPE產(chǎn)生的場(chǎng)景:
1) 返回類型為包裝數(shù)據(jù)類型,有可能是null,返回int值時(shí)注意判空。
   反例:public int f(){return Integer對(duì)象},如果為null,自動(dòng)解箱拋NPE。
2) 數(shù)據(jù)庫(kù)的查詢結(jié)果可能為null。
3) 集合里的元素即使isNotEmpty,取出的數(shù)據(jù)元素也可能為null。
4) 遠(yuǎn)程調(diào)用返回對(duì)象,一律要求進(jìn)行NPE判斷。
5) 對(duì)于Session中獲取的數(shù)據(jù),建議NPE檢查,避免空指針。
6)  級(jí)聯(lián)調(diào)用obj.getA().getB().getC();一連串調(diào)用,易產(chǎn)生NPE。
11.【推薦】在代碼中使用“拋異?!边€是“返回錯(cuò)誤碼”,對(duì)于公司外的http/api開(kāi)放接口必須使用“錯(cuò)誤碼”;而應(yīng)用內(nèi)部推薦異常拋出;跨應(yīng)用間RPC調(diào)用優(yōu)先考慮使用Result方式,封裝isSuccess、“錯(cuò)誤碼”、“錯(cuò)誤簡(jiǎn)短信息”。
說(shuō)明:關(guān)于RPC方法返回方式使用Result方式的理由:
1)   使用拋異常返回方式,調(diào)用方如果沒(méi)有捕獲到就會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤。
2)   如果不加棧信息,只是new自定義異常,加入自己的理解的error message,對(duì)于調(diào)用端解決問(wèn)題的幫助不會(huì)太多。如果加了棧信息,在頻繁調(diào)用出錯(cuò)的情況下,數(shù)據(jù)序列化和傳輸?shù)男阅軗p耗也是問(wèn)題。
12.【推薦】定義時(shí)區(qū)分unchecked / checked 異常,避免直接使用RuntimeException拋出,更不允許拋出Exception或者Throwable,應(yīng)使用有業(yè)務(wù)含義的自定義異常。推薦業(yè)界已定義過(guò)的自定義異常,如:DaoException / ServiceException等。
13.【參考】避免出現(xiàn)重復(fù)的代碼(Don'tRepeat Yourself),即DRY原則。
說(shuō)明:隨意復(fù)制和粘貼代碼,必然會(huì)導(dǎo)致代碼的重復(fù),在以后需要修改時(shí),需要修改所有的副本,容易遺漏。必要時(shí)抽取共性方法,或者抽象公共類,甚至是共用模塊。
正例:一個(gè)類中有多個(gè)public方法,都需要進(jìn)行數(shù)行相同的參數(shù)校驗(yàn)操作,這個(gè)時(shí)候請(qǐng)抽?。?br /> private boolean checkParam(DTO dto){...}

(二) 日志規(guī)約

1.   【強(qiáng)制】應(yīng)用中不可直接使用日志系統(tǒng)(Log4j、Logback)中的API,而應(yīng)依賴使用日志框架
SLF4J中的API,使用門面模式的日志框架,有利于維護(hù)和各個(gè)類的日志處理方式統(tǒng)一。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 private static final Logger logger =LoggerFactory.getLogger(Abc.class);
2.    【強(qiáng)制】日志文件推薦至少保存15天,因?yàn)橛行┊惓>邆湟浴爸堋睘轭l次發(fā)生的特點(diǎn)。
3.   【強(qiáng)制】應(yīng)用中的擴(kuò)展日志(如打點(diǎn)、臨時(shí)監(jiān)控、訪問(wèn)日志等)命名方式:
appName_logType_logName.log。logType:日志類型,推薦分類有stats/desc/monitor/visit 等;logName:日志描述。這種命名的好處:通過(guò)文件名就可知道日志文件屬于什么應(yīng)用,什么

類型,什么目的,也有利于歸類查找。
正例:mppserver應(yīng)用中單獨(dú)監(jiān)控時(shí)區(qū)轉(zhuǎn)換異常,如:                  mppserver_monitor_timeZoneConvert.log
說(shuō)明:推薦對(duì)日志進(jìn)行分類,錯(cuò)誤日志和業(yè)務(wù)日志盡量分開(kāi)存放,便于開(kāi)發(fā)人員查看,也便于通過(guò)日志對(duì)系統(tǒng)進(jìn)行及時(shí)監(jiān)控。
4.   【強(qiáng)制】對(duì)trace/debug/info級(jí)別的日志輸出,必須使用條件輸出形式或者使用占位符的方式。
說(shuō)明:logger.debug("Processingtrade with id: " + id + " symbol: " + symbol); 如果日志級(jí)別是warn,上述日志不會(huì)打印,但是會(huì)執(zhí)行字符串拼接操作,如果symbol是對(duì)象,會(huì)執(zhí)行toString()方法,浪費(fèi)了系統(tǒng)資源,執(zhí)行了上述操作,最終日志卻沒(méi)有打印。
正例:(條件)
if (logger.isDebugEnabled()) {  
logger.debug("Processing trade with id: " +id + " symbol: " + symbol); 
}     
正例:(占位符)
logger.debug("Processing trade with id: {} andsymbol : {} ", id, symbol);
5.    【強(qiáng)制】避免重復(fù)打印日志,浪費(fèi)磁盤空間,務(wù)必在log4j.xml中設(shè)置additivity=false。
正例:<loggername="com.taobao.ecrm.member.config" additivity="false">
6.   【強(qiáng)制】異常信息應(yīng)該包括兩類信息:案發(fā)現(xiàn)場(chǎng)信息和異常堆棧信息。如果不處理,那么往上拋。
正例:logger.error(各類參數(shù)或者對(duì)象toString +"_" + e.getMessage(), e);
7.   輸出的POJO類必須重寫toString方法,否則只輸出此對(duì)象的hashCode值(地址值),沒(méi)啥參考意義。
8.   【推薦】可以使用warn日志級(jí)別來(lái)記錄用戶輸入?yún)?shù)錯(cuò)誤的情況,避免用戶投訴時(shí),無(wú)所適從。注意日志輸出的級(jí)別,error級(jí)別只記錄系統(tǒng)邏輯出錯(cuò)、異常、或者重要的錯(cuò)誤信息。如非必要,請(qǐng)不要在此場(chǎng)景打出error級(jí)別,避免頻繁報(bào)警。
9.   【推薦】謹(jǐn)慎地記錄日志。生產(chǎn)環(huán)境禁止輸出debug日志;有選擇地輸出info日志;如果使用warn來(lái)記錄剛上線時(shí)的業(yè)務(wù)行為信息,一定要注意日志輸出量的問(wèn)題,避免把服務(wù)器磁盤撐爆,并記得及時(shí)刪除這些觀察日志。
說(shuō)明:大量地輸出無(wú)效日志,不利于系統(tǒng)性能提升,也不利于快速定位錯(cuò)誤點(diǎn)。紀(jì)錄日志時(shí)請(qǐng)思考:這些日志真的有人看嗎?看到這條日志你能做什么?能不能給問(wèn)題排查帶來(lái)好處?
10.【參考】如果日志用英文描述不清楚,推薦使用中文注釋。對(duì)于中文UTF-8的日志,在secureCRT 中,set encoding=utf-8;如果中文字符還亂碼,請(qǐng)?jiān)O(shè)置:全局>默認(rèn)的會(huì)話設(shè)置>外觀>字體> 選擇字符集gb2312;如果還不行,執(zhí)行命令:set termencoding=gbk,并且直接使用中文來(lái)進(jìn)行檢索。

三、MYSQL規(guī)約

(一) 建表規(guī)約

1.   【強(qiáng)制】表達(dá)是與否概念的字段,必須使用is_xxx的方式命名,數(shù)據(jù)類型是unsigned tinyint
( 1表示是,0表示否),此規(guī)則同樣適用于odps建表。
說(shuō)明:任何字段如果為非負(fù)數(shù),必須是unsigned。
2.   【強(qiáng)制】表名、字段名必須使用小寫字母或數(shù)字;禁止出現(xiàn)數(shù)字開(kāi)頭,禁止兩個(gè)下劃線中間只出現(xiàn)數(shù)字。數(shù)據(jù)庫(kù)字段名的修改代價(jià)很大,因?yàn)闊o(wú)法進(jìn)行預(yù)發(fā)布,所以字段名稱需要慎重考慮。
正例:getter_admin,task_config,level3_name 反例:GetterAdmin,taskConfig,level_3_name
3.   【強(qiáng)制】表名不使用復(fù)數(shù)名詞。
說(shuō)明:表名應(yīng)該僅僅表示表里面的實(shí)體內(nèi)容,不應(yīng)該表示實(shí)體數(shù)量,對(duì)應(yīng)于DO類名也是單數(shù)形式,符合表達(dá)習(xí)慣。
4.    【強(qiáng)制】禁用保留字,如desc、range、match、delayed等,參考官方保留字。
5.   【強(qiáng)制】唯一索引名為uk_字段名;普通索引名則為idx_字段名。
說(shuō)明:uk_即 unique key;idx_ 即index的簡(jiǎn)稱。
6.   【強(qiáng)制】小數(shù)類型為decimal,禁止使用float和double。
說(shuō)明:float和double在存儲(chǔ)的時(shí)候,存在精度損失的問(wèn)題,很可能在值的比較時(shí),得到不
正確的結(jié)果。如果存儲(chǔ)的數(shù)據(jù)范圍超過(guò)decimal的范圍,建議將數(shù)據(jù)拆成整數(shù)和小數(shù)分開(kāi)存儲(chǔ)。
7.    【強(qiáng)制】如果存儲(chǔ)的字符串長(zhǎng)度幾乎相等,使用CHAR定長(zhǎng)字符串類型。
8.   【強(qiáng)制】varchar是可變長(zhǎng)字符串,不預(yù)先分配存儲(chǔ)空間,長(zhǎng)度不要超過(guò)5000,如果存儲(chǔ)長(zhǎng)度大于此值,定義字段類型為TEXT,獨(dú)立出來(lái)一張表,用主鍵來(lái)對(duì)應(yīng),避免影響其它字段索引效率。
9.   【強(qiáng)制】表必備三字段:id, gmt_create, gmt_modified。
說(shuō)明:其中id必為主鍵,類型為unsigned bigint、單表時(shí)自增、步長(zhǎng)為1;分表時(shí)改為從
TDDL Sequence取值,確保分表之間的全局唯一。gmt_create,gmt_modified的類型均為 date_time類型。
10.【推薦】表的命名最好是加上“業(yè)務(wù)名稱_表的作用”,避免上云梯后,再與其它業(yè)務(wù)表關(guān)聯(lián)時(shí)有混淆。
正例:tiger_task/ tiger_reader / mpp_config
11.【推薦】庫(kù)名與應(yīng)用名稱盡量一致。
12.【推薦】如果修改字段含義或?qū)ψ侄伪硎镜臓顟B(tài)追加時(shí),需要及時(shí)更新字段注釋。
13.【推薦】字段允許適當(dāng)冗余,以提高性能,但是必須考慮數(shù)據(jù)同步的情況。冗余字段應(yīng)遵循:
1)   不是頻繁修改的字段。
2)   不是varchar超長(zhǎng)字段,更不能是text字段。
正例:各業(yè)務(wù)線經(jīng)常冗余存儲(chǔ)商品名稱,避免查詢時(shí)需要調(diào)用IC服務(wù)獲取。
14.【推薦】單表行數(shù)超過(guò)500萬(wàn)行或者單表容量超過(guò)2GB,才推薦進(jìn)行分庫(kù)分表。
說(shuō)明:如果預(yù)計(jì)三年后的數(shù)據(jù)量根本達(dá)不到這個(gè)級(jí)別,請(qǐng)不要在創(chuàng)建表時(shí)就分庫(kù)分表。
反例:某業(yè)務(wù)三年總數(shù)據(jù)量才2萬(wàn)行,卻分成1024張表,問(wèn):你為什么這么設(shè)計(jì)?答:分1024 張表,不是標(biāo)配嗎?
15.【參考】合適的字符存儲(chǔ)長(zhǎng)度,不但節(jié)約數(shù)據(jù)庫(kù)表空間、節(jié)約索引存儲(chǔ),更重要的是提升檢索速度。
正例:人的年齡用unsigned tinyint(表示范圍0-255,人的壽命不會(huì)超過(guò)255歲);海龜就必須是smallint,但如果是太陽(yáng)的年齡,就必須是int;如果是所有恒星的年齡都加起來(lái),那么就必須使用bigint。

(二) 索引規(guī)約

1.   【強(qiáng)制】業(yè)務(wù)上具有唯一特性的字段,即使是組合字段,也必須建成唯一索引。
說(shuō)明:不要以為唯一索引影響了insert速度,這個(gè)速度損耗可以忽略,但提高查找速度是明顯的;另外,即使在應(yīng)用層做了非常完善的校驗(yàn)和控制,只要沒(méi)有唯一索引,根據(jù)墨菲定律,必然有臟數(shù)據(jù)產(chǎn)生。
2.   【強(qiáng)制】超過(guò)三個(gè)表禁止join。需要join的字段,數(shù)據(jù)類型保持絕對(duì)一致;多表關(guān)聯(lián)查詢時(shí),保證被關(guān)聯(lián)的字段需要有索引。
說(shuō)明:即使雙表join也要注意表索引、SQL性能。
3.   【強(qiáng)制】在varchar字段上建立索引時(shí),必須指定索引長(zhǎng)度,沒(méi)必要對(duì)全字段建立索引,根據(jù)實(shí)際文本區(qū)分度決定索引長(zhǎng)度。
說(shuō)明:索引的長(zhǎng)度與區(qū)分度是一對(duì)矛盾體,一般對(duì)字符串類型數(shù)據(jù),長(zhǎng)度為20的索引,區(qū)分度會(huì)高達(dá)90%以上,可以使用count(distinct left(列名, 索引長(zhǎng)度))/count(*)的區(qū)分度來(lái)確定。
4.   【強(qiáng)制】頁(yè)面搜索嚴(yán)禁左模糊或者全模糊,如果需要請(qǐng)走搜索引擎來(lái)解決。
說(shuō)明:索引文件具有B-Tree的最左前綴匹配特性,如果左邊的值未確定,那么無(wú)法使用此索引。
5.   【推薦】如果有order by的場(chǎng)景,請(qǐng)注意利用索引的有序性。order by 最后的字段是組合索引的一部分,并且放在索引組合順序的最后,避免出現(xiàn)file_sort的情況,影響查詢性能。
正例:where a=? and b=? order by c; 索引:a_b_c
反例:索引中有范圍查找,那么索引有序性無(wú)法利用,如:WHERE a>10 ORDER BY b; 索引a_b 無(wú)法排序。
6.   【推薦】利用覆蓋索引來(lái)進(jìn)行查詢操作,來(lái)避免回表操作。
說(shuō)明:如果一本書需要知道第11章是什么標(biāo)題,會(huì)翻開(kāi)第11章對(duì)應(yīng)的那一頁(yè)嗎?目錄瀏覽一下就好,這個(gè)目錄就是起到覆蓋索引的作用。
正例:IDB能夠建立索引的種類:主鍵索引、唯一索引、普通索引,而覆蓋索引是一種查詢的一種效果,用explain的結(jié)果,extra列會(huì)出現(xiàn):using index.
7.   【推薦】利用延遲關(guān)聯(lián)或者子查詢優(yōu)化超多分頁(yè)場(chǎng)景。
說(shuō)明:MySQL并不是跳過(guò)offset行,而是取offset+N行,然后返回放棄前offset行,返回N 行,那當(dāng)offset特別大的時(shí)候,效率就非常的低下,要么控制返回的總頁(yè)數(shù),要么對(duì)超過(guò)特定閾值的頁(yè)數(shù)進(jìn)行SQL改寫。
正例:先快速定位需要獲取的id段,然后再關(guān)聯(lián):
      SELECT a.* FROM 表1 a, (select id from表1 where 條件 LIMIT 100000,20 ) bwhere a.id=b.id
8.   【推薦】 SQL性能優(yōu)化的目標(biāo):至少要達(dá)到range 級(jí)別,要求是ref級(jí)別,如果可以是consts 最好。說(shuō)明:
1)   consts 單表中最多只有一個(gè)匹配行(主鍵或者唯一索引),在優(yōu)化階段即可讀取到數(shù)據(jù)。
2)   ref 指的是使用普通的索引。(normalindex)
3)   range 對(duì)索引進(jìn)范圍檢索。
反例:explain表的結(jié)果,type=index,索引物理文件全掃描,速度非常慢,這個(gè)index級(jí)別比較range還低,與全表掃描是小巫見(jiàn)大巫。
9.   【推薦】建組合索引的時(shí)候,區(qū)分度最高的在最左邊。
正例:如果where a=? and b=? ,a列的幾乎接近于唯一值,那么只需要單建idx_a索引即可。說(shuō)明:存在非等號(hào)和等號(hào)混合判斷條件時(shí),在建索引時(shí),請(qǐng)把等號(hào)條件的列前置。如:where a>?
and b=? 那么即使a的區(qū)分度更高,也必須把b放在索引的最前列。
10.【參考】創(chuàng)建索引時(shí)避免有如下極端誤解:
1)   誤認(rèn)為一個(gè)查詢就需要建一個(gè)索引。
2)   誤認(rèn)為索引會(huì)消耗空間、嚴(yán)重拖慢更新和新增速度。
3)    誤認(rèn)為唯一索引一律需要在應(yīng)用層通過(guò)“先查后插”方式解決。

(三) SQL規(guī)約

1.   【強(qiáng)制】不要使用count(列名)或count(常量)來(lái)替代count(*),count(*)就是SQL92定義的標(biāo)準(zhǔn)統(tǒng)計(jì)行數(shù)的語(yǔ)法,跟數(shù)據(jù)庫(kù)無(wú)關(guān),跟NULL和非NULL無(wú)關(guān)。
說(shuō)明:count(*)會(huì)統(tǒng)計(jì)值為NULL的行,而count(列名)不會(huì)統(tǒng)計(jì)此列為NULL值的行。
2.   【強(qiáng)制】count(distinct col) 計(jì)算該列除NULL之外的不重復(fù)數(shù)量。注意 count(distinct col1, col2) 如果其中一列全為NULL,那么即使另一列有不同的值,也返回為0。
3.   【強(qiáng)制】當(dāng)某一列的值全是NULL時(shí),count(col)的返回結(jié)果為0,但sum(col)的返回結(jié)果為
NULL,因此使用sum()時(shí)需注意NPE問(wèn)題。
正例:可以使用如下方式來(lái)避免sum的NPE問(wèn)題:SELECTIF(ISNULL(SUM(g)),0,SUM(g)) FROM table;
4.   【強(qiáng)制】使用ISNULL()來(lái)判斷是否為NULL值。注意:NULL與任何值的直接比較都為NULL。
說(shuō)明:
1)    NULL<>NULL的返回結(jié)果是NULL,不是false。
2)    NULL=NULL的返回結(jié)果是NULL,不是true。
3)    NULL<>1的返回結(jié)果是NULL,而不是true。
5.    【強(qiáng)制】在代碼中寫分頁(yè)查詢邏輯時(shí),若count為0應(yīng)直接返回,避免執(zhí)行后面的分頁(yè)語(yǔ)句。
6.   【強(qiáng)制】不得使用外鍵與級(jí)聯(lián),一切外鍵概念必須在應(yīng)用層解決。
說(shuō)明:(概念解釋)學(xué)生表中的student_id是主鍵,那么成績(jī)表中的student_id則為外鍵。
如果更新學(xué)生表中的student_id,同時(shí)觸發(fā)成績(jī)表中的student_id更新,則為級(jí)聯(lián)更新。外鍵與級(jí)聯(lián)更新適用于單機(jī)低并發(fā),不適合分布式、高并發(fā)集群;級(jí)聯(lián)更新是強(qiáng)阻塞,存在數(shù)據(jù)庫(kù)更新風(fēng)暴的風(fēng)險(xiǎn);外鍵影響數(shù)據(jù)庫(kù)的插入速度。
7.   【強(qiáng)制】禁止使用存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程難以調(diào)試和擴(kuò)展,更沒(méi)有移植性。
8.   【強(qiáng)制】IDB數(shù)據(jù)訂正時(shí),刪除和修改記錄時(shí),要先select,避免出現(xiàn)誤刪除,確認(rèn)無(wú)誤才能提交執(zhí)行。
9.   【推薦】in操作能避免則避免,若實(shí)在避免不了,需要仔細(xì)評(píng)估in后邊的集合元素?cái)?shù)量,控制在1000個(gè)之內(nèi)。
10.【參考】因阿里巴巴全球化需要,所有的字符存儲(chǔ)與表示,均以u(píng)tf-8編碼,那么字符計(jì)數(shù)方法注意:
說(shuō)明:
   SELECT LENGTH("阿里巴巴"); 返回為12
   SELECT CHARACTER_LENGTH("阿里巴巴"); 返回為4
    如果要使用表情,那么使用utfmb4來(lái)進(jìn)行存儲(chǔ),注意它與utf-8編碼。
11.【參考】TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少,但TRUNCATE 無(wú)事務(wù)且不觸發(fā)trigger,有可能造成事故,故不建議在開(kāi)發(fā)代碼中使用此語(yǔ)句。
說(shuō)明:TRUNCATETABLE 在功能上與不帶 WHERE 子句的 DELETE 語(yǔ)句相同。

(四) ORM規(guī)約

1.   【強(qiáng)制】在表查詢中,一律不要使用 * 作為查詢的字段列表,需要哪些字段必須明確寫明。
說(shuō)明:1)增加查詢分析器解析成本。2)增減字段容易與resultMap配置不一致。
2.   【強(qiáng)制】POJO類的boolean屬性不能加is,而數(shù)據(jù)庫(kù)字段必須加is_,要求在resultMap中進(jìn)行字段與屬性之間的映射。
說(shuō)明:參見(jiàn)定義POJO類以及數(shù)據(jù)庫(kù)字段定義規(guī)定,在sql.xml增加映射,是必須的。
3.   【強(qiáng)制】不要用resultClass當(dāng)返回參數(shù),即使所有類屬性名與數(shù)據(jù)庫(kù)字段一一對(duì)應(yīng),也需要定義;反過(guò)來(lái),每一個(gè)表也必然有一個(gè)與之對(duì)應(yīng)。
說(shuō)明:配置映射關(guān)系,使字段與DO類解耦,方便維護(hù)。
4.    【強(qiáng)制】xml配置中參數(shù)注意使用:#{},#param#不要使用${} 此種方式容易出現(xiàn)SQL注入。
5.   【強(qiáng)制】iBATIS自帶的queryForList(StringstatementName,int start,int size)不推薦使用。
說(shuō)明:其實(shí)現(xiàn)方式是在數(shù)據(jù)庫(kù)取到statementName對(duì)應(yīng)的SQL語(yǔ)句的所有記錄,再通過(guò)subList 取start,size的子集合,線上因?yàn)檫@個(gè)原因曾經(jīng)出現(xiàn)過(guò)OOM。
 
正例:在sqlmap.xml中引入 #start#, #size#
Map<String, Object> map = new HashMap<String,Object>();    map.put("start",start);    map.put("size", size);  
6.   【強(qiáng)制】不允許直接拿HashMap與HashTable作為查詢結(jié)果集的輸出。
反例:某同學(xué)為避免寫一個(gè)<resultMap>,直接使用HashTable來(lái)接收數(shù)據(jù)庫(kù)返回結(jié)果,結(jié)果出現(xiàn)日常是把bigint轉(zhuǎn)成Long值,而線上由于數(shù)據(jù)庫(kù)版本不一樣,解析成BigInteger,導(dǎo)致線上問(wèn)題。
7.    【強(qiáng)制】更新數(shù)據(jù)表記錄時(shí),必須同時(shí)更新記錄對(duì)應(yīng)的gmt_modified字段值為當(dāng)前時(shí)間。
8.   【推薦】不要寫一個(gè)大而全的數(shù)據(jù)更新接口,傳入為POJO類,不管是不是自己的目標(biāo)更新字段,都進(jìn)行update table set c1=value1,c2=value2,c3=value3; 這是不對(duì)的。執(zhí)行SQL時(shí),盡量不要更新無(wú)改動(dòng)的字段,一是易出錯(cuò);二是效率低;三是binlog增加存儲(chǔ)。
9.   【參考】@Transactional事務(wù)不要濫用。事務(wù)會(huì)影響數(shù)據(jù)庫(kù)的QPS,另外使用事務(wù)的地方需要考慮各方面的回滾方案,包括緩存回滾、搜索引擎回滾、消息補(bǔ)償、統(tǒng)計(jì)修正等。
10.【參考】<isEqual>中的compareValue是與屬性值對(duì)比的常量,一般是數(shù)字,表示相等時(shí)帶上此條件;<isNotEmpty>表示不為空且不為null時(shí)執(zhí)行;<isNotNull>表示不為null值時(shí)執(zhí)行。

四、工程規(guī)約

(一) 應(yīng)用分層

1. 【推薦】圖中默認(rèn)上層依賴于下層,箭頭關(guān)系表示可直接依賴,如:開(kāi)放接口層可以依賴于
Web層,也可以直接依賴于Service層,依此類推:
 
•       開(kāi)放接口層:可直接封裝Service接口暴露成RPC接口;通過(guò)Web封裝成http接口;網(wǎng)關(guān)控制層等。
•       終端顯示層:各個(gè)端的模板渲染并執(zhí)行顯示層。當(dāng)前主要是velocity渲染,JS渲染,JSP渲染,移動(dòng)端展示層等。
•       Web層:主要是對(duì)訪問(wèn)控制進(jìn)行轉(zhuǎn)發(fā),各類基本參數(shù)校驗(yàn),或者不復(fù)用的業(yè)務(wù)簡(jiǎn)單處理等。
•       Service層:相對(duì)具體的業(yè)務(wù)邏輯服務(wù)層。
•       Manager層:通用業(yè)務(wù)處理層,它有如下特征:
1) 對(duì)第三方平臺(tái)封裝的層,預(yù)處理返回結(jié)果及轉(zhuǎn)化異常信息;
2) 對(duì)Service層通用能力的下沉,如緩存方案、中間件通用處理;
3)  與DAO層交互,對(duì)DAO的業(yè)務(wù)通用能力的封裝。
•       DAO層:數(shù)據(jù)訪問(wèn)層,與底層Mysql、Oracle、Hbase、OB進(jìn)行數(shù)據(jù)交互。
•       外部接口或第三方平臺(tái):包括其它部門RPC開(kāi)放接口,基礎(chǔ)平臺(tái),其它公司的HTTP接口。
2.   【參考】(分層異常處理規(guī)約)在DAO層,產(chǎn)生的異常類型有很多,無(wú)法用細(xì)粒度異常進(jìn)行
catch,使用catch(Exception e)方式,并throw newDaoException(e),不需要打印日志,
因?yàn)槿罩驹贛anager/Service層一定需要捕獲并打到日志文件中去,如果同臺(tái)服務(wù)器再打日志,浪費(fèi)性能和存儲(chǔ)。在Service層出現(xiàn)異常時(shí),必須記錄日志信息到磁盤,盡可能帶上參數(shù)信息,相當(dāng)于保護(hù)案發(fā)現(xiàn)場(chǎng)。如果Manager層與Service同機(jī)部署,日志方式與DAO層處理一致,如果是單獨(dú)部署,則采用與Service一致的處理方式。Web層絕不應(yīng)該繼續(xù)往上拋異常,因?yàn)橐呀?jīng)處于頂層,無(wú)繼續(xù)處理異常的方式,如果意識(shí)到這個(gè)異常將導(dǎo)致頁(yè)面無(wú)法正常渲染,那么就應(yīng)該直接跳轉(zhuǎn)到友好錯(cuò)誤頁(yè)面,盡量加上友好的錯(cuò)誤提示信息。開(kāi)放接口層要將異常處理成錯(cuò)誤碼和錯(cuò)誤信息方式返回。
3.    【參考】分層領(lǐng)域模型規(guī)約:
•       DO(Data Object):與數(shù)據(jù)庫(kù)表結(jié)構(gòu)一一對(duì)應(yīng),通過(guò)DAO層向上傳輸數(shù)據(jù)源對(duì)象。
•       DTO(Data Transfer Object):數(shù)據(jù)傳輸對(duì)象,Service和Manager向外傳輸?shù)膶?duì)象。
•       BO(Business Object):業(yè)務(wù)對(duì)象??梢杂蒘ervice層輸出的封裝業(yè)務(wù)邏輯的對(duì)象。
•       QUERY:數(shù)據(jù)查詢對(duì)象,各層接收上層的查詢請(qǐng)求。注:超過(guò)2個(gè)參數(shù)的查詢封裝,禁止使用Map類來(lái)傳輸。
•       VO(View Object):顯示層對(duì)象,通常是Web向模板渲染引擎層傳輸?shù)膶?duì)象。

(二) 二方庫(kù)規(guī)約

1.   【強(qiáng)制】定義GAV遵從以下規(guī)則:
1)    GroupID格式:com.{公司/BU }.業(yè)務(wù)線.[子業(yè)務(wù)線],最多4級(jí)。
  說(shuō)明:{公司/BU}例如:alibaba/taobao/tmall/aliexpress等BU一級(jí);子業(yè)務(wù)線可選。
  正例:com.taobao.tddl 或 com.alibaba.sourcing.multilang
2)    ArtifactID格式:產(chǎn)品線名-模塊名。語(yǔ)義不重復(fù)不遺漏,先到倉(cāng)庫(kù)中心去查證一下。
  正例:tc-client / uic-api / tair-tool
3)     Version:詳細(xì)規(guī)定參考下方。
2.   【強(qiáng)制】二方庫(kù)版本號(hào)命名方式:主版本號(hào).次版本號(hào).修訂號(hào)
1)    主版本號(hào):當(dāng)做了不兼容的API 修改,或者增加了能改變產(chǎn)品方向的新功能。
2)    次版本號(hào):當(dāng)做了向下兼容的功能性新增(新增類、接口等)。
3)     修訂號(hào):修復(fù)bug,沒(méi)有修改方法簽名的功能加強(qiáng),保持 API 兼容性。
3.   【強(qiáng)制】線上應(yīng)用不要依賴SNAPSHOT版本(安全包除外);正式發(fā)布的類庫(kù)必須使用RELEASE 版本號(hào)升級(jí)+1的方式,且版本號(hào)不允許覆蓋升級(jí),必須去中央倉(cāng)庫(kù)進(jìn)行查證。
說(shuō)明:不依賴SNAPSHOT版本是保證應(yīng)用發(fā)布的冪等性。另外,也可以加快編譯時(shí)的打包構(gòu)建。
4.   【強(qiáng)制】二方庫(kù)的新增或升級(jí),保持除功能點(diǎn)之外的其它jar包仲裁結(jié)果不變。如果有改變,必須明確評(píng)估和驗(yàn)證,建議進(jìn)行dependency:resolve前后信息比對(duì),如果仲裁結(jié)果完全不一致,那么通過(guò)dependency:tree命令,找出差異點(diǎn),進(jìn)行<excludes>排除jar包。
5.   【強(qiáng)制】二方庫(kù)里可以定義枚舉類型,參數(shù)可以使用枚舉類型,但是接口返回值不允許使用枚舉類型或者包含枚舉類型的POJO對(duì)象。
6.   【強(qiáng)制】依賴于一個(gè)二方庫(kù)群時(shí),必須定義一個(gè)統(tǒng)一版本變量,避免版本號(hào)不一致。
說(shuō)明:依賴springframework-core,-context,-beans,它們都是同一個(gè)版本,可以定義一個(gè)變量來(lái)保存版本:${spring.version},定義依賴的時(shí)候,引用該版本。
7.   【強(qiáng)制】禁止在子項(xiàng)目的pom依賴中出現(xiàn)相同的GroupId,相同的ArtifactId,但是不同的
Version。
說(shuō)明:在本地調(diào)試時(shí)會(huì)使用各子項(xiàng)目指定的版本號(hào),但是合并成一個(gè)war,只能有一個(gè)版本號(hào)出現(xiàn)在最后的lib目錄中。曾經(jīng)出現(xiàn)過(guò)線下調(diào)試是正確的,發(fā)布到線上出故障的先例。
8.    【推薦】工具類二方庫(kù)已經(jīng)提供的,盡量不要在本應(yīng)用中編程實(shí)現(xiàn)。
l  json操作: fastjson

l md5操作:commons-codec
l 工具集合:Guava包
l 數(shù)組操作:ArrayUtils(org.apache.commons.lang3.ArrayUtils)
l 集合操作:CollectionUtils(org.apache.commons.collections4.CollectionUtils)
l  除上面以外還有NumberUtils、DateFormatUtils、DateUtils等優(yōu)先使用 org.apache.commons.lang3這個(gè)包下的,不要使用org.apache.commons.lang包下面的。原因是commons.lang這個(gè)包是從JDK1.2開(kāi)始支持的所以很多1.5/1.6的特性是不支持的,例如:泛型。
9.   【推薦】所有pom文件中的依賴聲明放在<dependencies>語(yǔ)句塊中,所有版本仲裁放在
<dependencyManagement>語(yǔ)句塊中。
說(shuō)明:<dependencyManagement>里只是聲明版本,并不實(shí)現(xiàn)引入,因此子項(xiàng)目需要顯式的聲明
依賴,version和scope都讀取自父pom。而<dependencies>所有聲明在主pom的<dependencies > 里的依賴都會(huì)自動(dòng)引入,并默認(rèn)被所有的子項(xiàng)目繼承。
10.【推薦】二方庫(kù)盡量不要有配置項(xiàng),最低限度不要再增加配置項(xiàng)。
11.【參考】為避免應(yīng)用二方庫(kù)的依賴沖突問(wèn)題,二方庫(kù)發(fā)布者應(yīng)當(dāng)遵循以下原則:
1)    精簡(jiǎn)可控原則。移除一切不必要的API和依賴,只包含 Service API、必要的領(lǐng)域模型對(duì)象、Utils類、常量、枚舉等。如果依賴其它二方庫(kù),盡量是provided引入,讓二方庫(kù)使用者去依賴具體版本號(hào);無(wú)log具體實(shí)現(xiàn),只依賴日志框架。
2)    穩(wěn)定可追溯原則。每個(gè)版本的變化應(yīng)該被記錄,二方庫(kù)由誰(shuí)維護(hù),源碼在哪里,都需要能方便查到。除非用戶主動(dòng)升級(jí)版本,否則公共二方庫(kù)的行為不應(yīng)該發(fā)生變化。

(三) 服務(wù)器規(guī)約

1.   【推薦】高并發(fā)服務(wù)器建議調(diào)小TCP協(xié)議的time_wait超時(shí)時(shí)間。
說(shuō)明:操作系統(tǒng)默認(rèn)240秒后,才會(huì)關(guān)閉處于time_wait狀態(tài)的連接,在高并發(fā)訪問(wèn)下,服務(wù)器端會(huì)因?yàn)樘幱趖ime_wait的連接數(shù)太多,可能無(wú)法建立新的連接,所以需要在服務(wù)器上調(diào)小此等待值。
正例:在linux服務(wù)器上請(qǐng)通過(guò)變更/etc/sysctl.conf文件去修改該缺省值(秒):     net.ipv4.tcp_fin_timeout = 30
2.   【推薦】調(diào)大服務(wù)器所支持的最大文件句柄數(shù)(File Descriptor,簡(jiǎn)寫為fd)。
說(shuō)明:主流操作系統(tǒng)的設(shè)計(jì)是將TCP/UDP連接采用與文件一樣的方式去管理,即一個(gè)連接對(duì)應(yīng)于一個(gè)fd。主流的linux服務(wù)器默認(rèn)所支持最大fd數(shù)量為1024,當(dāng)并發(fā)連接數(shù)很大時(shí)很容易因?yàn)閒d不足而出現(xiàn)“open too many files”錯(cuò)誤,導(dǎo)致新的連接無(wú)法建立。建議將linux 服務(wù)器所支持的最大句柄數(shù)調(diào)高數(shù)倍(與服務(wù)器的內(nèi)存數(shù)量相關(guān))。
3.   【推薦】給JVM設(shè)置-XX:+HeapDumpOnOutOfMemoryError參數(shù),讓JVM碰到OOM場(chǎng)景時(shí)輸出dump 信息。
說(shuō)明:OOM的發(fā)生是有概率的,甚至有規(guī)律地相隔數(shù)月才出現(xiàn)一例,出現(xiàn)時(shí)的現(xiàn)場(chǎng)信息對(duì)查錯(cuò)非常有價(jià)值。
4.   【參考】服務(wù)器內(nèi)部重定向必須使用forward;外部重定向地址必須使用URL Broker生成,否則因線上采用HTTPS協(xié)議而導(dǎo)致瀏覽器提示“不安全”。此外,還會(huì)帶來(lái)URL維護(hù)不一致的問(wèn)題。

五、安全規(guī)約

1.   【強(qiáng)制】可被用戶直接訪問(wèn)的功能必須進(jìn)行權(quán)限控制校驗(yàn)。說(shuō)明:防止沒(méi)有做權(quán)限控制就可隨意訪問(wèn)、操作別人的數(shù)據(jù),比如查看、修改別人的訂單。
2.   【強(qiáng)制】用戶敏感數(shù)據(jù)禁止直接展示,必須對(duì)展示數(shù)據(jù)脫敏。說(shuō)明:支付寶中查看個(gè)人手機(jī)號(hào)碼會(huì)顯示成:158****9119,隱藏中間4位,防止隱私泄露。
3.   【強(qiáng)制】用戶輸入的SQL參數(shù)嚴(yán)格使用參數(shù)綁定或者M(jìn)ETADATA字段值限定,防止SQL注入,禁止字符串拼接SQL訪問(wèn)數(shù)據(jù)庫(kù)。
4.   【強(qiáng)制】用戶請(qǐng)求傳入的任何參數(shù)必須做有效性驗(yàn)證。說(shuō)明:忽略參數(shù)校驗(yàn)可能導(dǎo)致:
l page size過(guò)大導(dǎo)致內(nèi)存溢出
l 惡意order by導(dǎo)致數(shù)據(jù)庫(kù)慢查詢
l 正則輸入源串拒絕服務(wù)ReDOS
l 任意重定向
l SQL注入
l Shell注入
l 反序列化注入
5.    【強(qiáng)制】禁止向HTML頁(yè)面輸出未經(jīng)安全過(guò)濾或未正確轉(zhuǎn)義的用戶數(shù)據(jù)。
6.   【強(qiáng)制】表單、AJAX提交必須執(zhí)行CSRF安全過(guò)濾。
說(shuō)明:CSRF(Cross-siterequest forgery)跨站請(qǐng)求偽造是一類常見(jiàn)編程漏洞。對(duì)于存在CSRF
漏洞的應(yīng)用/網(wǎng)站,攻擊者可以事先構(gòu)造好URL,只要受害者用戶一訪問(wèn),后臺(tái)便在用戶不知情情況下對(duì)數(shù)據(jù)庫(kù)中用戶參數(shù)進(jìn)行相應(yīng)修改。
7.   【強(qiáng)制】URL外部重定向傳入的目標(biāo)地址必須執(zhí)行白名單過(guò)濾。
正例:
try{         if(com.alibaba.fasttext.sec.url.CheckSafeUrl            
.getDefaultInstance().inWhiteList(targetUrl)){                 response.sendRedirect(targetUrl);       
  }    
} catch (IOException e){            logger.error("Check returnURL error! targetURL=" + targetURL,e);          throwe;    
8.    【強(qiáng)制】Web應(yīng)用必須正確配置Robots文件,非SEO URL必須配置為禁止爬蟲(chóng)訪問(wèn)。
User-agent: * Disallow: /
9.   【強(qiáng)制】在使用平臺(tái)資源,譬如短信、郵件、電話、下單、支付,必須實(shí)現(xiàn)正確的防重放限制,如數(shù)量限制、疲勞度控制、驗(yàn)證碼校驗(yàn),避免被濫刷、資損。
說(shuō)明:如注冊(cè)時(shí)發(fā)送驗(yàn)證碼到手機(jī),如果沒(méi)有限制次數(shù)和頻率,那么可以利用此功能騷擾到其它用戶,并造成短信平臺(tái)資源浪費(fèi)。
10.【推薦】發(fā)貼、評(píng)論、發(fā)送即時(shí)消息等用戶生成內(nèi)容的場(chǎng)景必須實(shí)現(xiàn)防刷、文本內(nèi)容違禁詞過(guò)濾等風(fēng)控策略。

建議下載官方的pdf格式更利于學(xué)習(xí)與閱讀:http://www.dhdzp.com/books/592610.html

相關(guān)文章

  • Java中兩個(gè)List之間的比較方法(差集、交集和并集)

    Java中兩個(gè)List之間的比較方法(差集、交集和并集)

    在業(yè)務(wù)的開(kāi)發(fā)過(guò)程中會(huì)經(jīng)常用到兩個(gè)List集合相互取值的情況,下面這篇文章主要給大家介紹了關(guān)于Java中兩個(gè)List之間的比較方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Java實(shí)現(xiàn)級(jí)聯(lián)下拉結(jié)構(gòu)的示例代碼

    Java實(shí)現(xiàn)級(jí)聯(lián)下拉結(jié)構(gòu)的示例代碼

    在開(kāi)發(fā)過(guò)程中,會(huì)遇到很多的實(shí)體需要將查出的數(shù)據(jù)處理為下拉或者級(jí)聯(lián)下拉的結(jié)構(gòu),提供給前端進(jìn)行展示。本文為大家介紹了java封裝下拉和級(jí)聯(lián)下拉的通用工具類,需要的可以參考一下
    2022-06-06
  • java 并發(fā)編程之共享變量的實(shí)現(xiàn)方法

    java 并發(fā)編程之共享變量的實(shí)現(xiàn)方法

    這篇文章主要介紹了java 并發(fā)編程之共享變量的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Collection stream使用示例詳解

    Collection stream使用示例詳解

    這篇文章主要介紹了Collection stream使用示例,stream流幾乎可以完成對(duì)集合的任意操作,映射、去重、分組、排序、過(guò)濾等
    2022-12-12
  • Java異常簡(jiǎn)介和架構(gòu)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java異常簡(jiǎn)介和架構(gòu)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要分享了Java異常簡(jiǎn)介和架構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 使用java實(shí)現(xiàn)Xmodem協(xié)議

    使用java實(shí)現(xiàn)Xmodem協(xié)議

    這篇文章主要介紹了使用java實(shí)現(xiàn)Xmodem協(xié)議的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • MyBatis實(shí)現(xiàn)數(shù)據(jù)庫(kù)類型和Java類型的轉(zhuǎn)換

    MyBatis實(shí)現(xiàn)數(shù)據(jù)庫(kù)類型和Java類型的轉(zhuǎn)換

    MyBatis 在處理數(shù)據(jù)庫(kù)查詢結(jié)果或傳遞參數(shù)時(shí),需要將數(shù)據(jù)庫(kù)類型與 Java 類型之間進(jìn)行轉(zhuǎn)換,本文就給大家介紹MyBatis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)類型和 Java 類型的轉(zhuǎn)換的,需要的朋友可以參考下
    2024-09-09
  • 詳解MyBatis中column屬性的總結(jié)

    詳解MyBatis中column屬性的總結(jié)

    在MyBatis的映射中有column這么一個(gè)屬性,我一直以為它映射的是數(shù)據(jù)庫(kù)表中的列名,但經(jīng)過(guò)學(xué)習(xí)發(fā)現(xiàn)他似乎映射的是SQL語(yǔ)句中的列名,或者說(shuō)是查詢結(jié)果所得到的表的列名,這篇文章主要介紹了MyBatis中column屬性的總結(jié),需要的朋友可以參考下
    2022-09-09
  • Java如何利用POI讀取Excel行數(shù)

    Java如何利用POI讀取Excel行數(shù)

    這篇文章主要介紹了java如何利用POI讀取Excel行數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java List接口與Iterator接口及foreach循環(huán)使用解析

    Java List接口與Iterator接口及foreach循環(huán)使用解析

    這篇文章主要介紹了Java List接口與Iterator接口及foreach循環(huán),主要包括List接口與Iterator接口及foreach循環(huán)具體的使用方法和代碼,需要的朋友可以參考下
    2022-04-04

最新評(píng)論

亚洲专区激情在线观看视频| 天天做天天干天天舔| 91九色porny国产蝌蚪视频| 成人在线欧美日韩国产| 97国产福利小视频合集| 亚洲第一伊人天堂网| 在线观看的a站 最新| 午夜美女少妇福利视频| 五月激情婷婷久久综合网| 亚洲乱码中文字幕在线| 99的爱精品免费视频| 亚洲精品色在线观看视频| 91桃色成人网络在线观看| 国产视频在线视频播放| 国产黄色大片在线免费播放| 国产在线免费观看成人| 少妇人妻真实精品视频| 国产又粗又黄又硬又爽| 精品国产乱码一区二区三区乱| 久久久久久97三级| 97精品视频在线观看| av日韩在线观看大全| 男人的天堂在线黄色| 日韩加勒比东京热二区| 五色婷婷综合狠狠爱| 亚洲av天堂在线播放| 蜜桃精品久久久一区二区| 亚洲国产中文字幕啊啊啊不行了 | 色婷婷综合激情五月免费观看| 天天干天天操天天爽天天摸| 新婚人妻聚会被中出| 精品视频一区二区三区四区五区| 亚洲无码一区在线影院| 青青尤物在线观看视频网站 | 亚洲男人让女人爽的视频| 成年人该看的视频黄免费| 午夜精品亚洲精品五月色| 欧美精品中文字幕久久二区| 天天日夜夜干天天操| 美女张开两腿让男人桶av| 亚洲麻豆一区二区三区| 中文字幕亚洲久久久| 欧美中国日韩久久精品| 国产aⅴ一线在线观看| 日本啪啪啪啪啪啪啪| 超碰97免费人妻麻豆| 亚洲av自拍天堂网| 亚洲2021av天堂| 国产综合高清在线观看| 免费人成黄页网站在线观看国产| 日韩中文字幕在线播放第二页| 97人妻总资源视频| 在线观看国产网站资源| 亚洲欧洲av天堂综合| 国产福利小视频免费观看| 男人的天堂一区二区在线观看| 91精品国产综合久久久蜜| 色噜噜噜噜18禁止观看| 精品美女在线观看视频在线观看| 绝色少妇高潮3在线观看| 日本免费视频午夜福利视频| 中文字幕一区二区亚洲一区| 日本少妇精品免费视频| 亚洲卡1卡2卡三卡四老狼| 第一福利视频在线观看| 国产精品亚洲а∨天堂免| 偷拍自拍亚洲视频在线观看| 一区二区三区日韩久久| 全国亚洲男人的天堂| 午夜毛片不卡免费观看视频| 天堂中文字幕翔田av| 不卡一不卡二不卡三| 日本a级视频老女人| 欧美一区二区三区久久久aaa| 天天躁日日躁狠狠躁躁欧美av | 亚洲熟色妇av日韩熟色妇在线| 经典国语激情内射视频| 欧美黄片精彩在线免费观看| 啊啊好慢点插舔我逼啊啊啊视频| 日韩人妻xxxxx| 国产变态另类在线观看| 亚洲天堂精品福利成人av| 韩国一级特黄大片做受| 人妻少妇性色欲欧美日韩| 综合激情网激情五月五月婷婷| 深田咏美亚洲一区二区| 亚洲一区二区人妻av| 亚洲午夜电影之麻豆| 亚洲精品国产在线电影| 精品久久久久久久久久久久人妻 | 美女少妇亚洲精选av| 天堂资源网av中文字幕| caoporn蜜桃视频| 亚洲成人av一区久久| 超级福利视频在线观看| 在线免费观看99视频| 亚洲免费视频欧洲免费视频| 久久永久免费精品人妻专区 | 免费国产性生活视频| 久久久久久久久久久久久97| 亚洲精品国偷自产在线观看蜜桃| 久久久麻豆精亚洲av麻花| 日本性感美女写真视频| 日本熟女精品一区二区三区| 天堂av中文在线最新版| 青草青永久在线视频18| 亚洲国产在人线放午夜| 天天操天天爽天天干| 少妇系列一区二区三区视频| 岛国免费大片在线观看 | 国产丰满熟女成人视频| 91精品视频在线观看免费| 国产在线拍揄自揄视频网站| 午夜影院在线观看视频羞羞羞| 久久这里有免费精品| 做爰视频毛片下载蜜桃视频1 | 中文字幕av第1页中文字幕| 国产午夜无码福利在线看| 欧美亚洲免费视频观看| 91综合久久亚洲综合| 热久久只有这里有精品| 日本女大学生的黄色小视频| 福利视频一区二区三区筱慧| 免费在线黄色观看网站| 色婷婷久久久久swag精品| 香港一级特黄大片在线播放| 亚洲伊人av天堂有码在线| 亚洲一区二区三区偷拍女厕91| 99热久久这里只有精品8| 欧美 亚洲 另类综合| aaa久久久久久久久| 亚洲成av人无码不卡影片一| 国产av国片精品一区二区| 视频久久久久久久人妻| 影音先锋女人av噜噜色| 绯色av蜜臀vs少妇| 亚洲av可乐操首页| 日韩a级精品一区二区| 红杏久久av人妻一区| 午夜精品一区二区三区4| 亚洲第17页国产精品| 女生自摸在线观看一区二区三区| 护士特殊服务久久久久久久| 青青青视频手机在线观看| 天天躁日日躁狠狠躁躁欧美av| 亚洲护士一区二区三区| 亚洲熟色妇av日韩熟色妇在线 | 中文字幕最新久久久| 无忧传媒在线观看视频| 久久久久久久亚洲午夜综合福利| 爱有来生高清在线中文字幕| 日本丰满熟妇BBXBBXHD| 老司机深夜免费福利视频在线观看| 不卡一区一区三区在线| 免费在线观看污污视频网站| 视频二区在线视频观看| 91麻豆精品久久久久| 51国产成人精品视频| 无码日韩人妻精品久久| 精产国品久久一二三产区区别| 亚洲图片欧美校园春色| 一区二区三区视频,福利一区二区| 人妻熟女在线一区二区| 热思思国产99re| 国产片免费观看在线观看| 大香蕉福利在线观看| 孕妇奶水仑乱A级毛片免费看| 国产精品福利小视频a| 国产欧美日韩第三页| 亚洲av可乐操首页| 黄色片黄色片wyaa| 视频久久久久久久人妻| 欧美精品免费aaaaaa| 亚洲2021av天堂| 中文字幕欧美日韩射射一| 日本少妇高清视频xxxxx | 黄色片一级美女黄色片| 一本一本久久a久久精品综合不卡| 国产又粗又猛又爽又黄的视频美国| 青青青青操在线观看免费| 欧美日韩一级黄片免费观看| gay gay男男瑟瑟在线网站| 青青草视频手机免费在线观看| 麻豆精品成人免费视频| 绝顶痉挛大潮喷高潮无码| 欧美老妇精品另类不卡片| 91‖亚洲‖国产熟女| 国产日韩欧美视频在线导航| 自拍偷拍 国产资源| 亚洲一区二区三区av网站| 日本欧美视频在线观看三区| 福利国产视频在线观看| 狠狠操操操操操操操操操| 欧美性感尤物人妻在线免费看| 激情五月婷婷免费视频| 天天日天天爽天天干| 日本韩国在线观看一区二区| 激情伦理欧美日韩中文字幕| 自拍偷拍一区二区三区图片| 亚洲va国产va欧美精品88| 青青青青青免费视频| 阿v天堂2014 一区亚洲| 中文字幕在线视频一区二区三区| 91久久国产成人免费网站| 中文字母永久播放1区2区3区 | 日韩美在线观看视频黄| 国产午夜无码福利在线看| 亚欧在线视频你懂的| 亚洲人一区二区中文字幕| 97精品成人一区二区三区| 美日韩在线视频免费看| 中文字幕人妻av在线观看| 欧美成人综合色在线噜噜| japanese日本熟妇另类| 国产日韩精品免费在线| 婷婷久久一区二区字幕网址你懂得| 熟女视频一区,二区,三区| 欧美一区二区三区高清不卡tv | 欧美va亚洲va天堂va| 国产精品久久久久网| 色婷婷精品大在线观看| 日韩精品电影亚洲一区| 日本熟妇色熟妇在线观看| 成人国产小视频在线观看| 亚洲av日韩精品久久久久久hd| 日韩a级精品一区二区| 亚洲激情av一区二区| 日本性感美女视频网站| 天天夜天天日天天日| 337p日本大胆欧美人| 精品成人啪啪18免费蜜臀| 在线观看欧美黄片一区二区三区| 成人av电影免费版| 午夜福利资源综合激情午夜福利资| 被大鸡吧操的好舒服视频免费| 亚洲伊人av天堂有码在线| 亚洲精品国偷自产在线观看蜜桃| 免费大片在线观看视频网站| 欧美黑人巨大性xxxxx猛交| 亚洲图片偷拍自拍区| 黄色成年网站午夜在线观看| 开心 色 六月 婷婷| 欲乱人妻少妇在线视频裸| 最新国产亚洲精品中文在线| 午夜91一区二区三区| 久久www免费人成一看片| 九色精品视频在线播放| 天天日天天舔天天射进去| 99精品视频之69精品视频 | 中文字幕日韩人妻在线三区| 中文字幕日韩无敌亚洲精品| 97人妻夜夜爽二区欧美极品| 成人影片高清在线观看| 1000部国产精品成人观看视频| 搞黄色在线免费观看| 日韩欧美亚洲熟女人妻| 欧美一区二区三区久久久aaa| 美女大bxxxx内射| 日韩欧美高清免费在线| 97超碰人人搞人人| 国产中文字幕四区在线观看| 亚洲天堂有码中文字幕视频| 亚洲av男人的天堂你懂的| 馒头大胆亚洲一区二区| 天天躁日日躁狠狠躁av麻豆| 久草福利电影在线观看| japanese五十路熟女熟妇| 亚洲成人av一区在线| 欧美韩国日本国产亚洲| 青青草国内在线视频精选| 久久久久久九九99精品| 在线观看av亚洲情色| 精品欧美一区二区vr在线观看 | 亚洲国产最大av综合| 国产精品视频欧美一区二区| 国产高清97在线观看视频| 日本阿v视频在线免费观看| 午夜激情高清在线观看| 国产janese在线播放| brazzers欧熟精品系列| 狠狠操狠狠操免费视频| 国产日韩精品免费在线| 国产麻豆国语对白露脸剧情 | 在线免费视频 自拍| 91啪国自产中文字幕在线| 亚洲精品国产久久久久久| 激情内射在线免费观看| 2022国产精品视频| 香蕉av影视在线观看| 最新97国产在线视频| 亚洲av日韩精品久久久| 成人18禁网站在线播放| 亚洲va欧美va人人爽3p| 国产精品久久久久久久女人18| 色伦色伦777国产精品| 亚洲嫩模一区二区三区| 久久午夜夜伦痒痒想咳嗽P| 春色激情网欧美成人| 国产精品中文av在线播放| 亚洲高清自偷揄拍自拍| 80电影天堂网官网| 国产乱子伦精品视频潮优女| 91香蕉成人app下载| 亚洲一级av大片免费观看| 成人国产小视频在线观看| 亚洲综合自拍视频一区| 午夜精品久久久久久99热| 国内资源最丰富的网站| 丝袜肉丝一区二区三区四区在线| 亚洲另类图片蜜臀av| 香蕉aⅴ一区二区三区| 欧洲黄页网免费观看| 国产一级精品综合av| 91麻豆精品久久久久| 亚洲欧美国产综合777| 最新中文字幕乱码在线| 亚洲一区二区久久久人妻| 视频久久久久久久人妻| 久久久91蜜桃精品ad| 美女骚逼日出水来了| 国产精彩对白一区二区三区| 老司机午夜精品视频资源| 天天爽夜夜爽人人爽QC| 色花堂在线av中文字幕九九| 岛国黄色大片在线观看| 国产成人小视频在线观看无遮挡| 一区二区三区四区视频| 99久久99一区二区三区| 日韩欧美在线观看不卡一区二区| 亚洲一区自拍高清免费视频| 亚洲女人的天堂av| 中出中文字幕在线观看 | 亚洲 欧美 自拍 偷拍 在线| 国产欧美日韩在线观看不卡| 免费人成黄页网站在线观看国产| 国产久久久精品毛片| 国产妇女自拍区在线观看| 欧美交性又色又爽又黄麻豆| 亚洲 人妻 激情 中文| 国产黄色a级三级三级三级| 免费观看污视频网站| 婷婷色中文亚洲网68| www久久久久久久久久久| 一本久久精品一区二区| 免费岛国喷水视频在线观看| 欧洲精品第一页欧洲精品亚洲| 大鸡吧插逼逼视频免费看 | 国产精品精品精品999| 中文字幕在线观看国产片| 国产超码片内射在线| 夜色17s精品人妻熟女| 亚洲视频在线视频看视频在线| 国产亚洲精品欧洲在线观看| 免费观看国产综合视频| 婷婷色国产黑丝少妇勾搭AV | 欧美天堂av无线av欧美| 国产精品入口麻豆啊啊啊| 在线观看欧美黄片一区二区三区| 老司机免费福利视频网| 阿v天堂2014 一区亚洲| 天天草天天色天天干| 亚洲av男人天堂久久| 久久麻豆亚洲精品av| 日韩av有码一区二区三区4| 女同性ⅹxx女同h偷拍| 国产午夜男女爽爽爽爽爽视频| 亚洲va天堂va国产va久| 早川濑里奈av黑人番号| 美日韩在线视频免费看| 女同性ⅹxx女同h偷拍| 播放日本一区二区三区电影| 91在线视频在线精品3| av森泽佳奈在线观看| 亚洲欧美另类手机在线| 91久久国产成人免费网站| 97超碰免费在线视频| 国产视频一区在线观看| 亚洲精品国偷自产在线观看蜜桃| 天天日夜夜操天天摸| 成年人啪啪视频在线观看| 66久久久久久久久久久| 欧美爆乳肉感大码在线观看| 国产成人综合一区2区| 国产麻豆精品人妻av| 精品欧美一区二区vr在线观看| 精品久久久久久久久久久a√国产 日本女大学生的黄色小视频 | 国产精品久久综合久久| 午夜精品福利一区二区三区p| 国产视频一区二区午夜| 日本阿v视频在线免费观看| 欧美日本国产自视大全| jiuse91九色视频| 一色桃子久久精品亚洲 | 精品国产成人亚洲午夜| 性色av一区二区三区久久久| 玖玖一区二区在线观看| 亚洲 欧美 精品 激情 偷拍| 亚洲精品在线资源站| 老司机福利精品免费视频一区二区 | 亚洲午夜福利中文乱码字幕| 欧美黑人巨大性xxxxx猛交| 日本高清撒尿pissing| 欧美一区二区三区激情啪啪啪| 欧美激情精品在线观看| 美女视频福利免费看| 亚洲精品中文字幕下载| 久久久久久久一区二区三| 国产精品亚洲在线观看| 国产在线91观看免费观看| 成人H精品动漫在线无码播放| 韩国爱爱视频中文字幕| rct470中文字幕在线| 大陆胖女人与丈夫操b国语高清| 无码国产精品一区二区高潮久久4| 午夜精品一区二区三区4| 又粗又硬又猛又爽又黄的| 黄色av网站免费在线| 边摸边做超爽毛片18禁色戒| av在线资源中文字幕| 日韩中文字幕精品淫| 婷婷色中文亚洲网68| 国产使劲操在线播放| 99亚洲美女一区二区三区| 香蕉aⅴ一区二区三区| 制服丝袜在线人妻中文字幕| 成人性黑人一级av| 偷拍3456eee| 亚洲国产精品黑丝美女| 宅男噜噜噜666国产| 插逼视频双插洞国产操逼插洞| 欧美一区二区三区在线资源| 欧美视频不卡一区四区| 国产aⅴ一线在线观看| 97超碰国语国产97超碰| 蜜桃视频17c在线一区二区| 一区二区三区日韩久久| 欧美视频中文一区二区三区| 丝袜美腿视频诱惑亚洲无 | 欧美3p在线观看一区二区三区| 午夜在线观看岛国av,com| 这里有精品成人国产99| 精内国产乱码久久久久久| 在线观看一区二区三级| 亚洲国产中文字幕啊啊啊不行了| 啪啪啪啪啪啪啪啪av| 天天操天天操天天碰| 99精品免费观看视频| 美洲精品一二三产区区别| 国产精品手机在线看片| aⅴ精产国品一二三产品| 久久综合老鸭窝色综合久久| 亚洲中文字幕人妻一区| 特级欧美插插插插插bbbbb| 久久三久久三久久三久久| 91九色国产porny蝌蚪| 久草视频首页在线观看| 2022国产精品视频| 欧美一区二区三区在线资源| 日本xx片在线观看| 韩国爱爱视频中文字幕| 2017亚洲男人天堂| 亚洲另类综合一区小说| 欧美黑人巨大性xxxxx猛交| 天天干天天操天天扣| 99精品视频之69精品视频| 日本韩国免费福利精品| 久草视频 久草视频2| 91麻豆精品传媒国产黄色片| 欧美激情电影免费在线| 日韩视频一区二区免费观看| 国产性生活中老年人视频网站| 大鸡巴后入爆操大屁股美女| 可以在线观看的av中文字幕| 免费岛国喷水视频在线观看 | 一区二区三区另类在线| 天堂av在线播放免费| 色婷婷综合激情五月免费观看| 操的小逼流水的文章| 三级黄色亚洲成人av| 日日摸夜夜添夜夜添毛片性色av| 一区二区三区av高清免费| 91‖亚洲‖国产熟女| 2020中文字幕在线播放| 亚洲国产中文字幕啊啊啊不行了| 久久久人妻一区二区| 午夜久久久久久久精品熟女| 日本韩国免费一区二区三区视频 | 蜜臀av久久久久蜜臀av麻豆| 硬鸡巴动态操女人逼视频| 男女啪啪啪啪啪的网站| 久精品人妻一区二区三区| 国产欧美精品免费观看视频| 93精品视频在线观看| 午夜精品一区二区三区4| www骚国产精品视频| 91 亚洲视频在线观看| 最新91九色国产在线观看| 日韩欧美一级黄片亚洲| 欧美伊人久久大香线蕉综合| 2012中文字幕在线高清| 免费大片在线观看视频网站| 夏目彩春在线中文字幕| 亚洲老熟妇日本老妇| 美女被肏内射视频网站| 欧美精品黑人性xxxx| 少妇人妻久久久久视频黄片| 国产实拍勾搭女技师av在线| 国语对白xxxx乱大交| 阿v天堂2014 一区亚洲| 日韩a级精品一区二区| 亚洲欧美自拍另类图片| 91‖亚洲‖国产熟女| 淫秽激情视频免费观看| 中文字幕av男人天堂| 人人妻人人爽人人添夜| 偷拍3456eee| 一区二区三区美女毛片| 特一级特级黄色网片| 阴茎插到阴道里面的视频| 91免费观看在线网站| 国产av一区2区3区| 午夜在线观看一区视频| 欧美日韩一区二区电影在线观看| 欧美精品一二三视频| 日韩欧美在线观看不卡一区二区 | 国产精品人妻一区二区三区网站 | 日韩二区视频一线天婷婷五| aⅴ五十路av熟女中出| 国产普通话插插视频| 精品91高清在线观看| 午夜国产福利在线观看| 国产在线拍揄自揄视频网站| 一区二区三区久久中文字幕| 夜夜嗨av一区二区三区中文字幕| 亚洲精品亚洲人成在线导航| 中文字幕在线免费第一页| 大鸡八强奸视频在线观看| 涩爱综合久久五月蜜臀| 亚洲欧美福利在线观看| 91麻豆精品久久久久| 国产一区二区在线欧美| 天天操天天射天天操天天天| 国产超码片内射在线| av破解版在线观看| 91九色porny蝌蚪国产成人| 欧亚乱色一区二区三区| 抽查舔水白紧大视频| 操人妻嗷嗷叫视频一区二区| 99精品视频在线观看免费播放| 夜夜骑夜夜操夜夜奸| 果冻传媒av一区二区三区| 一区二区熟女人妻视频| 成年人中文字幕在线观看| 天天插天天狠天天操| 狍和女人的王色毛片| 福利在线视频网址导航| 国产真实灌醉下药美女av福利| 久碰精品少妇中文字幕av | 岛国免费大片在线观看| 视频在线亚洲一区二区| 91精品综合久久久久3d动漫| 蜜桃色婷婷久久久福利在线| 日本人妻少妇18—xx| 亚洲国产在线精品国偷产拍| 国产精彩对白一区二区三区| 中文字幕视频一区二区在线观看| 婷婷综合蜜桃av在线| 成人午夜电影在线观看 久久| 含骚鸡巴玩逼逼视频| 国产1区,2区,3区| 午夜激情精品福利视频| 欧美在线偷拍视频免费看| 欧美另类z0z变态| 天天做天天干天天操天天射| 欧美黑人与人妻精品| 大肉大捧一进一出好爽在线视频 | 天天日天天鲁天天操| 精品黑人巨大在线一区| 天天色天天舔天天射天天爽| 亚洲国产成人在线一区| 521精品视频在线观看| 麻豆精品成人免费视频| nagger可以指黑人吗| 在线亚洲天堂色播av电影| 午夜精品一区二区三区城中村| 日本在线不卡免费视频| 日日夜夜精品一二三| 日韩美女搞黄视频免费| 偷拍3456eee| 一区二区三区四区视频| 99热色原网这里只有精品| huangse网站在线观看| 亚洲自拍偷拍精品网| 亚洲国产成人最新资源| av视屏免费在线播放| 亚洲欧美综合另类13p| 在线不卡成人黄色精品| 任你操任你干精品在线视频| 毛茸茸的大外阴中国视频| 婷婷综合亚洲爱久久| 伊人综合aⅴ在线网| 一区国内二区日韩三区欧美| 欧美精品资源在线观看| 人人在线视频一区二区| 国产亚洲视频在线二区| 丝袜长腿第一页在线| 国产性感美女福利视频| 成年人的在线免费视频| 99精品一区二区三区的区| 久久久久久99国产精品| 亚洲综合在线观看免费| 亚洲最大黄 嗯色 操 啊| 亚洲熟色妇av日韩熟色妇在线| 欧美一级片免费在线成人观看 | 加勒比视频在线免费观看| 久久久久久久精品成人热| 国产精品一二三不卡带免费视频| 色综合久久无码中文字幕波多| 老司机午夜精品视频资源| 97国产在线av精品| 欧美中国日韩久久精品| 日韩伦理短片在线观看| 国产午夜福利av导航| 国产极品精品免费视频| 视频 国产 精品 熟女 | 婷婷久久久综合中文字幕| 超级av免费观看一区二区三区| 超级福利视频在线观看| 天天干天天操天天玩天天射 | 日本少妇人妻xxxxxhd| 色狠狠av线不卡香蕉一区二区| 老司机深夜免费福利视频在线观看| 日本女大学生的黄色小视频| 黄色男人的天堂视频| 中文字幕1卡1区2区3区| 中文字幕在线视频一区二区三区| 成年女人免费播放视频| 亚洲国产第一页在线观看| 国产高清女主播在线| 国产精品久久久久久久精品视频 | 亚洲1069综合男同| 色吉吉影音天天干天天操| av俺也去在线播放| 红杏久久av人妻一区| 动色av一区二区三区| 中文字幕第1页av一天堂网| 青青草亚洲国产精品视频| 中文字幕视频一区二区在线观看| 姐姐的朋友2在线观看中文字幕| 东京干手机福利视频| 午夜免费观看精品视频| 巨乳人妻日下部加奈被邻居中出 | 韩国男女黄色在线观看| 综合一区二区三区蜜臀| 18禁网站一区二区三区四区 | 亚洲国产精品久久久久蜜桃| 亚洲一区自拍高清免费视频| 亚洲国产免费av一区二区三区| av黄色成人在线观看| 欧美黄色录像免费看的| 在线观看国产网站资源| 青青青青青青青在线播放视频| 国产精品三级三级三级| 啊用力插好舒服视频| 曰本无码人妻丰满熟妇啪啪| a v欧美一区=区三区| 欧美国产亚洲中英文字幕| 一区二区三区日本伦理| AV无码一区二区三区不卡| 久久这里只有精品热视频 | 18禁美女黄网站色大片下载| 伊人成人综合开心网| 91自产国产精品视频| 亚洲精品国品乱码久久久久| 快插进小逼里大鸡吧视频| 亚洲精品乱码久久久久久密桃明 | 日韩av中文在线免费观看| 日本xx片在线观看| 天天操天天插天天色| 成年人黄视频在线观看| 一二三区在线观看视频| 在线观看av2025| 黄页网视频在线免费观看| 在线网站你懂得老司机| 精品国产成人亚洲午夜| 色呦呦视频在线观看视频| 一区二区三区日本伦理| 99人妻视频免费在线| 岛国av高清在线成人在线| 91人妻精品久久久久久久网站| 韩国AV无码不卡在线播放| 精品高跟鞋丝袜一区二区| 中文字幕成人日韩欧美| 国产熟妇乱妇熟色T区| 99热色原网这里只有精品| 亚洲欧美在线视频第一页| 午夜在线观看岛国av,com| 亚洲精品在线资源站| 在线观看成人国产电影| 六月婷婷激情一区二区三区| 色天天天天射天天舔| av在线观看网址av| 久草视频中文字幕在线观看| 视频二区在线视频观看| 成年人午夜黄片视频资源| 久久丁香婷婷六月天| av乱码一区二区三区| 青青青青青青青青青青草青青| 天天艹天天干天天操| 91国产资源在线视频| 91欧美在线免费观看| 搞黄色在线免费观看| 国产黄色高清资源在线免费观看| 日韩美女搞黄视频免费| 日韩亚洲高清在线观看| asmr福利视频在线观看| 家庭女教师中文字幕在线播放| 亚洲国产在线精品国偷产拍| 狠狠嗨日韩综合久久| 欧美80老妇人性视频| 天天操天天干天天艹| 不戴胸罩引我诱的隔壁的人妻| 欧美麻豆av在线播放| 日韩人妻xxxxx| 内射久久久久综合网| 一区二区三区激情在线| 午夜精品亚洲精品五月色| 免费岛国喷水视频在线观看 | 国产成人午夜精品福利| 亚洲区欧美区另类最新章节| 9色在线视频免费观看| 在线国产精品一区二区三区| 中文字幕在线第一页成人| 国产精品久久久久久久女人18| 国产精品人妻一区二区三区网站| 丝袜长腿第一页在线| 欧美综合婷婷欧美综合| 伊人成人在线综合网| 国产一区成人在线观看视频| 日本性感美女写真视频| 九色视频在线观看免费| 欧美精品激情在线最新观看视频| 2012中文字幕在线高清| 888亚洲欧美国产va在线播放| 九九视频在线精品播放| 九色porny九色9l自拍视频| 精品一区二区亚洲欧美| 亚洲欧美日韩视频免费观看| 日韩午夜福利精品试看| 婷婷久久久综合中文字幕| 青青草国内在线视频精选| 男人天堂av天天操| 亚洲欧美日韩视频免费观看| 青青尤物在线观看视频网站 | 班长撕开乳罩揉我胸好爽| 2021年国产精品自拍| 中文字幕第三十八页久久| 中文字幕高清资源站| 国产美女精品福利在线| 欧美成人小视频在线免费看| 国产免费高清视频视频| 一区二区三区国产精选在线播放 | 沈阳熟妇28厘米大战黑人| 熟女91pooyn熟女| 免费国产性生活视频| 75国产综合在线视频| 99一区二区在线观看| 亚洲精品在线资源站| 在线观看欧美黄片一区二区三区| 国产高清在线观看1区2区| 麻豆精品成人免费视频| 国产精品三级三级三级| 午夜精品一区二区三区4| 亚洲成人熟妇一区二区三区| 国产1区,2区,3区| 福利在线视频网址导航| 日韩av免费观看一区| 中文字幕高清免费在线人妻| 2017亚洲男人天堂| 日日夜夜狠狠干视频| 久精品人妻一区二区三区 | 欲乱人妻少妇在线视频裸| 国产精品人久久久久久| 国产午夜无码福利在线看| 国产黄色大片在线免费播放| 人人妻人人澡欧美91精品| 美味人妻2在线播放| 天堂av在线播放免费| 100%美女蜜桃视频| 人妻少妇av在线观看| 日本黄在免费看视频| av完全免费在线观看av| 国产精品探花熟女在线观看| 一区二区三区国产精选在线播放| 超碰中文字幕免费观看| 涩爱综合久久五月蜜臀| 成人亚洲精品国产精品| 80电影天堂网官网| 夜鲁夜鲁狠鲁天天在线| 视频在线免费观看你懂得| 欧美在线精品一区二区三区视频| 韩国女主播精品视频网站| 免费一级特黄特色大片在线观看| 18禁精品网站久久| 亚洲熟女综合色一区二区三区四区 | 激情伦理欧美日韩中文字幕| 日曰摸日日碰夜夜爽歪歪| 91亚洲手机在线视频播放| 国产精品人妻66p| 东京干手机福利视频| 18禁美女黄网站色大片下载| 午夜在线观看岛国av,com| 男人的天堂在线黄色| 51国产成人精品视频| 五月激情婷婷久久综合网| 亚洲卡1卡2卡三卡四老狼| 青青青视频自偷自拍38碰| 漂亮 人妻被中出中文| 日韩一区二区电国产精品| 天天艹天天干天天操| h国产小视频福利在线观看| 午夜福利人人妻人人澡人人爽| 啊啊啊视频试看人妻| 哥哥姐姐综合激情小说| 国产精品日韩欧美一区二区| 午夜在线一区二区免费| 欧美日韩一级黄片免费观看| 啪啪啪啪啪啪啪啪av| 亚洲国产欧美一区二区丝袜黑人| 91综合久久亚洲综合| 老有所依在线观看完整版| 国产精品视频男人的天堂| av老司机精品在线观看| 亚洲一区二区三区在线高清| 亚洲国际青青操综合网站| 亚洲一级av大片免费观看| 亚洲成人三级在线播放 | av俺也去在线播放| 日韩中文字幕精品淫| 久草视频中文字幕在线观看| 天天插天天色天天日| 97超碰人人搞人人| 成年人啪啪视频在线观看| 欧美亚洲少妇福利视频| 日韩成人免费电影二区| 国产日韩欧美视频在线导航| 97人妻无码AV碰碰视频| 成年人午夜黄片视频资源| av天堂资源最新版在线看| 欧美va不卡视频在线观看| 亚洲免费视频欧洲免费视频| 100%美女蜜桃视频| 女同久久精品秋霞网| 免费人成黄页网站在线观看国产| 国产一区成人在线观看视频| 亚洲综合色在线免费观看| 91传媒一区二区三区| 日韩美女精品视频在线观看网站| 美女操逼免费短视频下载链接| 天天日夜夜操天天摸| 97超碰免费在线视频| 天天夜天天日天天日| 天天插天天狠天天操| 亚洲精品一区二区三区老狼| 国产日韩av一区二区在线| 久久机热/这里只有| 中文字幕 人妻精品| 久久亚洲天堂中文对白| 免费人成黄页网站在线观看国产| 国产黄色高清资源在线免费观看| 91高清成人在线视频| 国产av国片精品一区二区| 国产精品久久久黄网站| 男人的天堂av日韩亚洲| av天堂加勒比在线| 99久久久无码国产精品性出奶水| 中文字幕 码 在线视频| 在线观看的黄色免费网站| 青青在线视频性感少妇和隔壁黑丝| 含骚鸡巴玩逼逼视频| 扒开让我视频在线观看| 精品久久久久久久久久久a√国产| 欧亚乱色一区二区三区| 黄色片一级美女黄色片| xxx日本hd高清| 日韩影片一区二区三区不卡免费| 国产黄色片在线收看| 亚洲av人人澡人人爽人人爱| 青青青青青青青青青国产精品视频 | 欧美男人大鸡吧插女人视频| 激情小视频国产在线| 不卡日韩av在线观看| 欲乱人妻少妇在线视频裸| 天天干夜夜操天天舔| 日韩熟女av天堂系列| 精品久久久久久久久久久a√国产| 色97视频在线播放| 成人激情文学网人妻| 视频一区 视频二区 视频| 粉嫩av蜜乳av蜜臀| 国产美女精品福利在线| 涩涩的视频在线观看视频| 女生自摸在线观看一区二区三区| 老鸭窝日韩精品视频观看| 午夜精品一区二区三区城中村| 成人24小时免费视频| 欧美国品一二三产区区别| 青青青艹视频在线观看| 男人的网址你懂的亚洲欧洲av| 91福利视频免费在线观看| 美女大bxxxx内射| 97色视频在线观看| 久久久久久久久久久久久97| 久久丁香婷婷六月天| 亚洲成人情色电影在线观看| 在线观看的黄色免费网站| 综合精品久久久久97| 欧美精品一二三视频| 亚洲精品高清自拍av| 韩国AV无码不卡在线播放| 午夜精品一区二区三区福利视频| 久久久极品久久蜜桃| 国产精品久久久久久美女校花| av天堂中文字幕最新| 亚洲伊人久久精品影院一美女洗澡| 亚洲av色图18p| 国产日韩av一区二区在线| 五十路丰满人妻熟妇| 97色视频在线观看| 五月色婷婷综合开心网4438| 欧美视频综合第一页| 久久精品国产999| 日本免费视频午夜福利视频| 中文字幕 人妻精品| 91在线免费观看成人| 日韩美在线观看视频黄| 亚洲视频乱码在线观看| 黄色成年网站午夜在线观看| 老师啊太大了啊啊啊尻视频| 精品一区二区三区午夜| 姐姐的朋友2在线观看中文字幕 | av高潮迭起在线观看| 粉嫩av蜜乳av蜜臀| 精品一区二区三区三区色爱| 国产又色又刺激在线视频| 丝袜美腿欧美另类 中文字幕| 偷拍自拍 中文字幕| 狠狠躁狠狠爱网站视频| 福利视频一区二区三区筱慧| 一区二区三区蜜臀在线| 亚洲另类伦春色综合小| 精品久久久久久久久久久99| 粗大的内捧猛烈进出爽大牛汉子| 久久久超爽一二三av| 亚洲欧美国产麻豆综合| 国产va在线观看精品| 久久久91蜜桃精品ad| 欧美黄片精彩在线免费观看| 国产福利小视频大全| 欧美日本在线视频一区| 天堂女人av一区二区| 大胸性感美女羞爽操逼毛片| 黄色视频成年人免费观看| 人妻凌辱欧美丰满熟妇| 亚洲免费福利一区二区三区| 午夜精品亚洲精品五月色| 五十路人妻熟女av一区二区| 男女第一次视频在线观看| 美女视频福利免费看| 亚洲精品三级av在线免费观看| chinese国产盗摄一区二区| 老师啊太大了啊啊啊尻视频| 亚洲免费在线视频网站| 97少妇精品在线观看| 男生用鸡操女生视频动漫 | 人人超碰国字幕观看97| 国产三级片久久久久久久| gogo国模私拍视频| 中文字幕第一页国产在线| 福利午夜视频在线观看| 亚洲2021av天堂| xxx日本hd高清| 欧美一区二区三区啪啪同性| 中文字幕在线观看国产片| 免费av岛国天堂网站| 亚洲欧美久久久久久久久| 又粗又长 明星操逼小视频| av老司机亚洲一区二区| 亚洲精品在线资源站| 2021久久免费视频| 午夜在线精品偷拍一区二| 国产一区自拍黄视频免费观看| 91超碰青青中文字幕| 日本韩国在线观看一区二区| 人妻另类专区欧美制服| 日本在线不卡免费视频| 男人在床上插女人视频| 97色视频在线观看| 老司机深夜免费福利视频在线观看| 在线免费观看国产精品黄色| 午夜dv内射一区区| 四虎永久在线精品免费区二区| 午夜久久香蕉电影网| 男人操女人逼逼视频网站| 在线观看一区二区三级| 国产视频精品资源网站| 40道精品招牌菜特色| 国产av一区2区3区| 特黄老太婆aa毛毛片| 任你操视频免费在线观看| 亚洲精品福利网站图片| 视频一区 二区 三区 综合| 桃色视频在线观看一区二区| 初美沙希中文字幕在线| 日本一区精品视频在线观看| 阿v天堂2014 一区亚洲| 2019av在线视频| 五月精品丁香久久久久福利社 | 亚洲高清国产一区二区三区| 韩国黄色一级二级三级| 国产熟妇人妻ⅹxxxx麻豆| 成人精品视频99第一页| 日本最新一二三区不卡在线| 日本福利午夜电影在线观看| 开心 色 六月 婷婷| 一区二区三区综合视频| 蜜桃视频入口久久久| 亚洲国产精品中文字幕网站| 五月精品丁香久久久久福利社| 自拍偷拍日韩欧美亚洲| 青青擦在线视频国产在线| rct470中文字幕在线| 亚洲av无硬久久精品蜜桃| av破解版在线观看| 97人人模人人爽人人喊| 老司机欧美视频在线看| 欧美xxx成人在线| 97人妻总资源视频| 成年午夜免费无码区| yy96视频在线观看| 在线免费观看国产精品黄色| 少妇深喉口爆吞精韩国| 蜜桃视频在线欧美一区| 欧美在线偷拍视频免费看| 成人久久精品一区二区三区| 少妇被强干到高潮视频在线观看| 大鸡巴操娇小玲珑的女孩逼| 国产日韩一区二区在线看| 成人av中文字幕一区| 少妇人妻真实精品视频| 亚洲天天干 夜夜操| 激情人妻校园春色亚洲欧美| 亚洲少妇人妻无码精品| 成人精品在线观看视频| 丝袜肉丝一区二区三区四区在线| 91精品国产高清自在线看香蕉网| 亚洲欧美国产麻豆综合| 91精品激情五月婷婷在线| 在线观看免费视频色97| 天天日夜夜操天天摸| 国产熟妇一区二区三区av| av中文字幕在线导航| 日本韩国免费福利精品| 精品首页在线观看视频| 国产精彩福利精品视频| 亚洲午夜在线视频福利| 天天操天天干天天日狠狠插| 青青热久免费精品视频在线观看 | 欧美黑人性暴力猛交喷水| 美女福利视频网址导航| 精品一区二区三区午夜| 国产在线免费观看成人| 免费黄页网站4188| 中国老熟女偷拍第一页| 亚洲另类伦春色综合小| 人人妻人人人操人人人爽| 成人30分钟免费视频| 涩爱综合久久五月蜜臀| 人人妻人人人操人人人爽| 最近中文2019年在线看| 国产精品久久久久久久女人18| 日本阿v视频在线免费观看| 香蕉片在线观看av| 日韩国产乱码中文字幕| 久久丁香婷婷六月天| 亚洲国产精品久久久久久6| 男人操女人的逼免费视频| 91老师蜜桃臀大屁股| 午夜久久香蕉电影网| 超碰97人人澡人人| 国产一区二区欧美三区| 熟女少妇激情五十路| 免费在线播放a级片| 国产精品视频男人的天堂| 人妻久久无码中文成人| 亚洲av成人网在线观看| 久久久超爽一二三av| 制丝袜业一区二区三区| 天天日天天舔天天射进去| 男人天堂av天天操| 91精品激情五月婷婷在线| 天天射夜夜操狠狠干| 91亚洲国产成人精品性色| 国产精品自拍偷拍a| 国产中文字幕四区在线观看| 中出中文字幕在线观看| 91九色国产熟女一区二区| 国产又粗又黄又硬又爽| 亚洲精品一区二区三区老狼| weyvv5国产成人精品的视频| 国产综合高清在线观看| 天天做天天干天天舔| 成人免费公开视频无毒| 男人操女人逼逼视频网站| 国产精品黄片免费在线观看| 人妻激情图片视频小说| av在线免费资源站| 99久久中文字幕一本人| 青草久久视频在线观看| 午夜精品九一唐人麻豆嫩草成人| 亚洲色偷偷综合亚洲AV伊人| 午夜久久久久久久精品熟女| 国产高清在线观看1区2区| 成年人的在线免费视频| 亚洲天天干 夜夜操| 天天干天天爱天天色| 美味人妻2在线播放| AV天堂一区二区免费试看| 2022中文字幕在线| 老司机免费视频网站在线看| 亚洲国产中文字幕啊啊啊不行了| AV无码一区二区三区不卡| 夜色17s精品人妻熟女| 精品国产在线手机在线| av在线资源中文字幕| 久久综合老鸭窝色综合久久| 少妇高潮一区二区三区| 国产精品久久久久国产三级试频 | 91人妻人人做人人爽在线| 亚洲av日韩av网站| 日本真人性生活视频免费看| 亚洲熟女综合色一区二区三区四区| 中文字幕国产专区欧美激情| 中国黄片视频一区91| 日本av熟女在线视频| 人人爽亚洲av人人爽av| av视网站在线观看| 亚洲成人三级在线播放| 欧美一区二区三区在线资源| 天天日天天日天天射天天干 | 久久农村老妇乱69系列| 亚洲在线一区二区欧美| 大鸡吧插入女阴道黄色片| 337p日本大胆欧美人| 亚洲国产美女一区二区三区软件| 亚欧在线视频你懂的| 亚洲精品久久综合久| 午夜在线精品偷拍一区二| 日韩成人免费电影二区| 老司机欧美视频在线看| 大胆亚洲av日韩av| 国产亚洲四十路五十路| 亚洲av无码成人精品区辽| 国产又粗又猛又爽又黄的视频在线| 亚洲精品亚洲人成在线导航| 日日夜夜狠狠干视频| 日本精品一区二区三区在线视频。| 大鸡八强奸视频在线观看| 国产亚洲视频在线观看| 人妻丝袜精品中文字幕| 91精品资源免费观看| 天天夜天天日天天日| 97年大学生大白天操逼| 国产日韩av一区二区在线| 中文字幕av一区在线观看| 伊人日日日草夜夜草| 天天日天天摸天天爱| 国产日本精品久久久久久久 | 久久三久久三久久三久久| 五十路熟女av天堂| 精品一区二区三区三区色爱| 亚洲 欧美 精品 激情 偷拍 | 国产午夜亚洲精品麻豆| 狠狠嗨日韩综合久久| 亚洲高清国产拍青青草原| 在线 中文字幕 一区| 欧美另类重口味极品在线观看| 不卡一不卡二不卡三| 黑人借宿ntr人妻的沦陷2| 久碰精品少妇中文字幕av| 亚洲在线一区二区欧美| 欧美少妇性一区二区三区| 激情伦理欧美日韩中文字幕| 一区二区久久成人网| 四川乱子伦视频国产vip| 日本在线不卡免费视频| 青青热久免费精品视频在线观看 | 班长撕开乳罩揉我胸好爽| 国产精品日韩欧美一区二区| 欧美精品黑人性xxxx| 亚洲变态另类色图天堂网| 中文字幕乱码人妻电影| 天天日天天日天天射天天干| 日韩精品中文字幕在线| 一区二区在线视频中文字幕| 欧洲日韩亚洲一区二区三区| 粉嫩av懂色av蜜臀av| 福利在线视频网址导航| 亚洲区美熟妇久久久久| 国产精品自偷自拍啪啪啪| 黄色成年网站午夜在线观看 | 男人在床上插女人视频| 亚洲中文精品字幕在线观看| 绯色av蜜臀vs少妇| 91麻豆精品秘密入口在线观看| 天堂av中文在线最新版| 丝袜长腿第一页在线| 一个色综合男人天堂| 91国内视频在线观看| 91www一区二区三区| 99精品久久久久久久91蜜桃| 国产黄色大片在线免费播放 | 97国产在线av精品| 欧美va亚洲va天堂va| 日韩精品二区一区久久| 好吊视频—区二区三区| 日日操综合成人av| 做爰视频毛片下载蜜桃视频1| 午夜在线观看岛国av,com| 午夜精品一区二区三区更新| 青青青青青操视频在线观看| 五色婷婷综合狠狠爱| 黄页网视频在线免费观看| 青青尤物在线观看视频网站| 黑人乱偷人妻中文字幕| 东京热男人的av天堂| 午夜精品在线视频一区| 亚洲 图片 欧美 图片| 久久久91蜜桃精品ad| 免费男阳茎伸入女阳道视频| 男人插女人视频网站| 国产黄色高清资源在线免费观看 | 国产黄色a级三级三级三级| 骚货自慰被发现爆操| 动色av一区二区三区| 自拍 日韩 欧美激情| 日本av在线一区二区三区| 视频啪啪啪免费观看| 人人在线视频一区二区| 亚洲狠狠婷婷综合久久app| 日本午夜福利免费视频| 日本熟妇一区二区x x| 一级A一级a爰片免费免会员| 天天干天天搞天天摸| 亚洲 中文 自拍 无码| 性欧美日本大妈母与子| 97人妻无码AV碰碰视频| 日韩激情文学在线视频 | 国产亚洲精品品视频在线| 深夜男人福利在线观看| 人妻自拍视频中国大陆| 青青草原色片网站在线观看 | 国产日韩精品一二三区久久久| 亚洲精品麻豆免费在线观看 | 国产chinesehd精品麻豆| 丰满的子国产在线观看| 只有精品亚洲视频在线观看| 日韩精品啪啪视频一道免费| 红杏久久av人妻一区| 日本女大学生的黄色小视频| 午夜精彩视频免费一区| 超碰在线中文字幕一区二区| 欧美日韩亚洲国产无线码| 精品高跟鞋丝袜一区二区| 亚洲综合在线观看免费| 天天射夜夜操综合网| 青青青激情在线观看视频| 大鸡巴插入美女黑黑的阴毛| 精品亚洲中文字幕av| 国产V亚洲V天堂无码欠欠| 亚洲 清纯 国产com| 欧美性受xx黑人性猛交| 国产视频精品资源网站| 亚洲一区二区三区五区| 天天色天天爱天天爽| gogo国模私拍视频| 久久精品亚洲成在人线a| 69精品视频一区二区在线观看| 日韩人妻丝袜中文字幕| 极品性荡少妇一区二区色欲| 国产真实灌醉下药美女av福利| 亚洲欧美激情国产综合久久久| 黄色成年网站午夜在线观看| 中文字幕av熟女人妻| 亚洲欧美综合在线探花| heyzo蜜桃熟女人妻| 青青青国产免费视频| 日本a级视频老女人| 密臀av一区在线观看| 中文字幕一区二区三区蜜月| 99re6热在线精品| 国产欧美精品一区二区高清| 国产福利在线视频一区| 日本乱人一区二区三区| 日韩av中文在线免费观看| 欧美精品激情在线最新观看视频| 亚洲一区二区三区精品乱码| 日韩不卡中文在线视频网站| 男人的天堂在线黄色| 成熟熟女国产精品一区| 丁香花免费在线观看中文字幕| 天天干天天操天天扣| 免费看国产又粗又猛又爽又黄视频 | 日辽宁老肥女在线观看视频| 久久丁香花五月天色婷婷| 快点插进来操我逼啊视频| 99久久99一区二区三区| 国产亚洲欧美视频网站| 黄片色呦呦视频免费看| 啊啊好大好爽啊啊操我啊啊视频| 青青草原网站在线观看| 中文字幕亚洲中文字幕| 男人操女人逼逼视频网站| 亚洲一区二区激情在线| 人人人妻人人澡人人| 国产刺激激情美女网站| 亚洲伊人久久精品影院一美女洗澡| 日韩av熟妇在线观看| 日本三极片中文字幕| 午夜在线精品偷拍一区二| 午夜激情久久不卡一区二区| 欧洲亚洲欧美日韩综合| av手机在线免费观看日韩av| 天天插天天狠天天操| 2020av天堂网在线观看| 青青青青青青青青青国产精品视频| 亚洲一级 片内射视正片| 欧美亚洲偷拍自拍色图| 欧美专区第八页一区在线播放| 在线免费观看黄页视频| 欧美精品欧美极品欧美视频| 五十路老熟女码av| 国产激情av网站在线观看| 热久久只有这里有精品| 青青草在观免费国产精品| 在线观看亚洲人成免费网址| 大尺度激情四射网站| 日韩美女搞黄视频免费| 99精品亚洲av无码国产另类| 天天做天天干天天舔| 只有精品亚洲视频在线观看| 国产一区二区久久久裸臀| 欧洲欧美日韩国产在线| 北条麻妃高跟丝袜啪啪| 老司机在线精品福利视频| 亚洲av天堂在线播放| 男人天堂最新地址av| 国产av自拍偷拍盛宴| 制丝袜业一区二区三区| 欧美日韩熟女一区二区三区| 国产精品自拍在线视频| 制服丝袜在线人妻中文字幕| 欧美一区二区三区高清不卡tv| 99人妻视频免费在线| 社区自拍揄拍尻屁你懂的| 黑人巨大的吊bdsm| 亚洲午夜电影在线观看| 精内国产乱码久久久久久 | 蜜臀成人av在线播放| 偷偷玩弄新婚人妻h视频| 亚洲av一妻不如妾| 国产午夜亚洲精品不卡在线观看| 国产91精品拍在线观看| av手机在线免费观看日韩av| 天天干天天操天天摸天天射| 绯色av蜜臀vs少妇| 啪啪啪啪啪啪啪啪啪啪黄色| 美女 午夜 在线视频 | 成年人该看的视频黄免费| 97青青青手机在线视频 | 直接能看的国产av| 日本裸体熟妇区二区欧美| 欧美日本aⅴ免费视频| 熟女人妻三十路四十路人妻斩| 日日夜夜精品一二三| 99人妻视频免费在线| 最近中文字幕国产在线| 性感美女福利视频网站| 蜜桃精品久久久一区二区| 日韩精品二区一区久久| 中文字幕乱码人妻电影| 国产九色91在线视频| 久久精品视频一区二区三区四区 | 999热精品视频在线| 自拍 日韩 欧美激情| 午夜场射精嗯嗯啊啊视频| 天天日天天爽天天爽| 在线观看av亚洲情色| 中字幕人妻熟女人妻a62v网| www日韩毛片av| 日本黄色特一级视频| 99re久久这里都是精品视频| 99久久99一区二区三区| 小穴多水久久精品免费看| 国产精品久久久久国产三级试频| 一区二区熟女人妻视频| 亚洲乱码中文字幕在线| 午夜美女福利小视频| 亚洲 国产 成人 在线| 久久久极品久久蜜桃| 午夜频道成人在线91| 亚洲第17页国产精品| 亚洲国产欧美一区二区三区…| 国产又粗又硬又猛的毛片视频| 午夜场射精嗯嗯啊啊视频| 国产成人精品久久二区91| 夜夜嗨av一区二区三区中文字幕| 在线视频这里只有精品自拍| 天天射,天天操,天天说| 中文字幕AV在线免费看 | 欧美精品中文字幕久久二区| 亚洲国产最大av综合| 最新97国产在线视频| 人妻少妇亚洲精品中文字幕| 精品成人啪啪18免费蜜臀| 丝袜美腿欧美另类 中文字幕| 丰满的子国产在线观看| 亚洲一区二区三区精品视频在线| 亚洲日本一区二区三区| 亚洲成人黄色一区二区三区| 男大肉棒猛烈插女免费视频| 亚洲av可乐操首页| 99热这里只有精品中文| 在线观看av亚洲情色| 欧美日韩国产一区二区三区三州| 2021国产一区二区| 天堂av中文在线最新版| 午夜激情久久不卡一区二区| 在线免费观看av日韩| 日韩熟女av天堂系列| 久久永久免费精品人妻专区| 农村胖女人操逼视频| 在线观看的黄色免费网站| 无码国产精品一区二区高潮久久4 日韩欧美一级精品在线观看 | 日本裸体熟妇区二区欧美| 端庄人妻堕落挣扎沉沦| 18禁无翼鸟成人在线| 不卡一区一区三区在线| 午夜在线一区二区免费| 免费岛国喷水视频在线观看| 精品91高清在线观看| 日韩不卡中文在线视频网站| 91片黄在线观看喷潮| 亚国产成人精品久久久| 日韩一区二区电国产精品| 98精产国品一二三产区区别| 青草久久视频在线观看| 国产大学生援交正在播放| 婷婷综合亚洲爱久久| 欧美一区二区三区乱码在线播放| 日本黄在免费看视频| 91麻豆精品传媒国产黄色片| 动漫美女的小穴视频| 国产黄网站在线观看播放| 热久久只有这里有精品| 女同性ⅹxx女同hd| 美女 午夜 在线视频| 亚洲福利精品视频在线免费观看| 亚洲特黄aaaa片| 在线观看的a站 最新| 日韩无码国产精品强奸乱伦| 国产精品手机在线看片| 亚欧在线视频你懂的| 精品人人人妻人人玩日产欧| 蜜桃视频17c在线一区二区| 一级黄片久久久久久久久| 97精品成人一区二区三区| 福利视频广场一区二区| 国产精品久久久久网| 综合国产成人在线观看| 自拍偷拍亚洲精品第2页| 色综合久久五月色婷婷综合| 午夜极品美女福利视频| 丰满少妇翘臀后进式| 欧美va亚洲va天堂va| 适合午夜一个人看的视频| 国产卡一卡二卡三乱码手机| 亚洲激情,偷拍视频| 国产极品美女久久久久久| 国产亚洲国产av网站在线| 40道精品招牌菜特色| 成人精品视频99第一页| 中字幕人妻熟女人妻a62v网| 成人蜜桃美臀九一一区二区三区| 日本韩国免费福利精品| 一级A一级a爰片免费免会员| 中文字幕在线永久免费播放| 天天日天天敢天天干| 国产视频精品资源网站| 97国产在线av精品| 自拍偷拍亚洲精品第2页| gogo国模私拍视频| 日韩少妇人妻精品无码专区| 欧美黄片精彩在线免费观看| 一区二区视频在线观看免费观看 | 欧美成人综合色在线噜噜| 午夜的视频在线观看| 欧美特色aaa大片| 国产亚洲欧美45p| 黄色男人的天堂视频| 乱亲女秽乱长久久久| 小穴多水久久精品免费看| 不卡一区一区三区在线| 97人妻色免费视频| 可以免费看的www视频你懂的| 欧美老妇精品另类不卡片| 免费看国产又粗又猛又爽又黄视频 | 天天日夜夜操天天摸| 在线成人日韩av电影| 日本熟妇喷水xxx| 日韩欧美在线观看不卡一区二区| 老司机福利精品免费视频一区二区 | 在线观看免费视频色97| 日本女人一级免费片| 中文字幕免费福利视频6| 免费啪啪啪在线观看视频| 欧美精品国产综合久久| 国产日韩av一区二区在线| 国产精品女邻居小骚货| 内射久久久久综合网| 中文字幕之无码色多多| 在线观看视频 你懂的| 日本裸体熟妇区二区欧美| 青草亚洲视频在线观看| 制丝袜业一区二区三区| 98视频精品在线观看| 999九九久久久精品| 欧美一级色视频美日韩| av日韩在线免费播放| 亚洲最大黄了色网站| 国产高清精品极品美女| 成人伊人精品色xxxx视频| 一个色综合男人天堂| 亚洲午夜福利中文乱码字幕| 九一传媒制片厂视频在线免费观看| 欧美一级片免费在线成人观看| av手机在线免费观看日韩av| 日韩在线中文字幕色| 91大屁股国产一区二区| av天堂加勒比在线| 蜜臀av久久久久久久| 日韩一区二区三区三州| 欧美成人黄片一区二区三区| 亚洲综合另类精品小说| 亚洲色偷偷综合亚洲AV伊人| 亚洲成a人片777777| 中文字幕—97超碰网| 骚货自慰被发现爆操| 天天日天天玩天天摸| yy6080国产在线视频| 成人蜜臀午夜久久一区| 午夜频道成人在线91| 国产精品人妻一区二区三区网站| 人妻少妇中文有码精品| 亚洲欧美一卡二卡三卡| 91精品国产黑色丝袜| 午夜在线精品偷拍一区二| 91p0rny九色露脸熟女| 精品高跟鞋丝袜一区二区| 日本黄色特一级视频| 亚洲成人激情av在线| 超碰在线中文字幕一区二区| 91成人在线观看免费视频| 日韩北条麻妃一区在线| 午夜国产免费福利av| 成熟丰满熟妇高潮xx×xx| 中国黄色av一级片| 人人妻人人爽人人澡人人精品| 93精品视频在线观看| 欧美爆乳肉感大码在线观看| 三级av中文字幕在线观看| 亚洲成人熟妇一区二区三区| 天天日天天操天天摸天天舔| 亚洲精品精品国产综合| 亚洲综合在线视频可播放| av在线免费资源站| wwwxxx一级黄色片| 超碰中文字幕免费观看| 97欧洲一区二区精品免费| 老师啊太大了啊啊啊尻视频| 国产V亚洲V天堂无码欠欠| 中文字幕在线观看极品视频| 亚洲精品欧美日韩在线播放| 啪啪啪18禁一区二区三区| 男人和女人激情视频| av一区二区三区人妻| 韩国一级特黄大片做受| 中文 成人 在线 视频| 99的爱精品免费视频| 欧美成人一二三在线网| 国产第一美女一区二区三区四区| 亚洲欧美精品综合图片小说| 精品一区二区三区在线观看| 黑人巨大精品欧美视频| 欧美性感尤物人妻在线免费看| 欧美视频不卡一区四区| 一区二区三区四区五区性感视频| 又大又湿又爽又紧A视频| 99精品国产免费久久| 青青青视频手机在线观看| 国产熟妇一区二区三区av| 91免费观看在线网站| 最新91精品视频在线| 国产精品久久久久久久精品视频| 午夜dv内射一区区| 国产精品三级三级三级| 天天干天天操天天扣| 日韩精品中文字幕福利| www,久久久,com| 中文字幕亚洲久久久| 久久久超爽一二三av| 日本一道二三区视频久久| 偷拍美女一区二区三区| 91精品国产高清自在线看香蕉网 | 久久午夜夜伦痒痒想咳嗽P| 亚洲国产成人无码麻豆艾秋| 大陆av手机在线观看| 欧美交性又色又爽又黄麻豆| av老司机亚洲一区二区| 天堂av在线播放免费| 日韩av大胆在线观看| 亚洲熟妇x久久av久久| 激情综合治理六月婷婷| 国产成人综合一区2区| 97超碰人人搞人人| 中国熟女一区二区性xx| 天天操天天干天天艹| 国产精品久久久久久久女人18| 亚洲福利天堂久久久久久| 91亚洲国产成人精品性色| 欧美偷拍亚洲一区二区| 免费观看成年人视频在线观看| 和邻居少妇愉情中文字幕| 五十路熟女av天堂| 亚洲 欧美 精品 激情 偷拍 | 一区二区三区在线视频福利| 综合一区二区三区蜜臀| 日韩欧美在线观看不卡一区二区| 888欧美视频在线| 偷青青国产精品青青在线观看 | 欧美亚洲免费视频观看| 天天干天天啪天天舔| 亚洲一区二区三区偷拍女厕91| 中文字幕奴隷色的舞台50| 无码精品一区二区三区人| 国产一区二区神马久久| www天堂在线久久| 精品人妻每日一部精品| 久久三久久三久久三久久| 中文字幕乱码人妻电影| 天天操夜夜操天天操天天操| 3344免费偷拍视频| 蜜桃精品久久久一区二区| 久久久久国产成人精品亚洲午夜| 国产午夜亚洲精品不卡在线观看| 一区二区熟女人妻视频| 在线观看免费视频网| 2012中文字幕在线高清| huangse网站在线观看| 一区二区三区精品日本| 亚洲高清自偷揄拍自拍| 精品国产高潮中文字幕| 欧美成人精品欧美一级黄色| 最新国产亚洲精品中文在线| 欧美久久一区二区伊人| 国产亚洲精品欧洲在线观看| 亚洲免费视频欧洲免费视频| wwwxxx一级黄色片| 97小视频人妻一区二区| 少妇高潮一区二区三区| 色天天天天射天天舔| 国产欧美精品一区二区高清| 天堂av狠狠操蜜桃| 97人人模人人爽人人喊| 欧美亚洲免费视频观看| 国产一区av澳门在线观看| 2020国产在线不卡视频| 久久这里有免费精品| 国产午夜无码福利在线看| 亚洲一级 片内射视正片| 欧美一级视频一区二区| 国产一线二线三线的区别在哪| 97瑟瑟超碰在线香蕉| 亚洲特黄aaaa片| 久久久久久cao我的性感人妻 | 一区二区三区国产精选在线播放| 在线观看视频一区麻豆| 午夜大尺度无码福利视频| 美女日逼视频免费观看| 99久久超碰人妻国产| 中国熟女一区二区性xx| 老司机深夜免费福利视频在线观看| 2012中文字幕在线高清| 午夜dv内射一区区| 亚洲国产精品美女在线观看 | 大鸡巴后入爆操大屁股美女| 抽查舔水白紧大视频| 91精品国产91久久自产久强| 香港三日本三韩国三欧美三级| 亚洲av自拍天堂网| 亚洲欧美一区二区三区爱爱动图| 午夜婷婷在线观看视频| 熟妇一区二区三区高清版| 亚洲日本一区二区久久久精品| 日本一本午夜在线播放| 2021天天色天天干| 亚洲国产欧美一区二区三区久久| 亚洲成高清a人片在线观看| 免费在线福利小视频| 红杏久久av人妻一区| 中文字幕乱码人妻电影| 中文字幕熟女人妻久久久| 2018最新中文字幕在线观看| 任你操视频免费在线观看| 午夜成午夜成年片在线观看| eeuss鲁片一区二区三区| 国产欧美日韩第三页| 亚洲精品 欧美日韩| 亚洲男人在线天堂网| 亚洲午夜在线视频福利| 91 亚洲视频在线观看| 涩涩的视频在线观看视频| 日韩伦理短片在线观看| 国产在线观看免费人成短视频| 深夜男人福利在线观看| 精品欧美一区二区vr在线观看| 亚洲精品乱码久久久本| 国产一级麻豆精品免费| 黑人乱偷人妻中文字幕| 青青青青青青青在线播放视频| 国产午夜福利av导航| 大黑人性xxxxbbbb| 天天躁日日躁狠狠躁躁欧美av| 中文字幕第三十八页久久| 人妻无码色噜噜狠狠狠狠色| 国产精品人妻熟女毛片av久| 欧美国产亚洲中英文字幕| 成人动漫大肉棒插进去视频| 国产在线91观看免费观看| 成人午夜电影在线观看 久久| 人妻av无码专区久久绿巨人| 白白操白白色在线免费视频| 又黄又刺激的午夜小视频| 亚洲麻豆一区二区三区| 欧美亚洲自偷自拍 在线| 一区二区三区另类在线| 亚洲av日韩av第一区二区三区| 另类av十亚洲av| 少妇系列一区二区三区视频| 国产精品熟女久久久久浪潮| 1区2区3区不卡视频| 小穴多水久久精品免费看| 女同互舔一区二区三区| 在线播放 日韩 av| 在线观看成人国产电影| 国产性色生活片毛片春晓精品| 亚洲激情,偷拍视频| 国产 在线 免费 精品| 国产精品视频资源在线播放| avjpm亚洲伊人久久| v888av在线观看视频| 国内自拍第一页在线观看| 中文字幕高清资源站| 888欧美视频在线| 蜜桃专区一区二区在线观看| 国产丰满熟女成人视频| 成人资源在线观看免费官网| 欧美一区二区三区乱码在线播放| 国产麻豆精品人妻av| 视频一区 二区 三区 综合| 亚洲国产最大av综合| 视频一区 二区 三区 综合| 大香蕉大香蕉大香蕉大香蕉大香蕉| 在线免费视频 自拍| 婷婷综合蜜桃av在线| 蜜桃精品久久久一区二区| 日韩美女精品视频在线观看网站| 亚洲成人av在线一区二区| 国产福利小视频免费观看| 精品国产污污免费网站入口自 | 综合页自拍视频在线播放| 91欧美在线免费观看| 欧美日韩人妻久久精品高清国产 | 日日夜夜精品一二三| 最新日韩av传媒在线| 欧美久久久久久三级网| 精品日产卡一卡二卡国色天香 | 国产精品自拍在线视频| 亚洲欧美激情中文字幕| 国产一区二区三免费视频| 国产黄色高清资源在线免费观看| 精品美女在线观看视频在线观看| 不卡一不卡二不卡三| 一区二区视频视频视频| 淫秽激情视频免费观看| 中文字幕在线永久免费播放| 精品亚洲中文字幕av| 日韩欧美中文国产在线| 日韩无码国产精品强奸乱伦| 免费在线观看污污视频网站| 日本韩国免费福利精品| 成人影片高清在线观看| 亚洲一区二区三区五区| 又粗又硬又猛又黄免费30| 免费一级特黄特色大片在线观看| 狠狠操狠狠操免费视频| 亚洲 图片 欧美 图片| 亚洲欧美另类手机在线| 国产实拍勾搭女技师av在线| 国产在线免费观看成人| 97瑟瑟超碰在线香蕉| 亚洲人人妻一区二区三区| 午夜精品福利91av| 男人靠女人的逼视频| 丝袜长腿第一页在线| 大香蕉大香蕉在线有码 av| 99国内精品永久免费视频| 经典亚洲伊人第一页| 在线免费观看日本片| 亚洲综合一区成人在线| 都市家庭人妻激情自拍视频| 一级黄色片夫妻性生活| 日韩欧美国产一区不卡| 99久久99久国产黄毛片| www天堂在线久久| 青青草国内在线视频精选| 四川乱子伦视频国产vip| 欧美亚洲偷拍自拍色图| 人妻丝袜诱惑我操她视频| 欧美日韩不卡一区不区二区| 国产一级麻豆精品免费| 国产精品自拍偷拍a| av破解版在线观看| 亚洲天堂第一页中文字幕| 欧美亚洲牲夜夜综合久久| 精品suv一区二区69| 天天操天天插天天色| 免费看国产又粗又猛又爽又黄视频| 做爰视频毛片下载蜜桃视频1 | 亚洲中文字幕国产日韩| 日本精品一区二区三区在线视频。| 欧美成人小视频在线免费看| 国产成人精品亚洲男人的天堂| 男人操女人的逼免费视频| 一区二区三区四区五区性感视频| 国产中文字幕四区在线观看| 曰本无码人妻丰满熟妇啪啪| 男人插女人视频网站| 国产超码片内射在线| 天天干天天插天天谢| 欧美亚洲牲夜夜综合久久| caoporn蜜桃视频| 天天日天天干天天搡| 中文字幕一区二区三区人妻大片| 大学生A级毛片免费视频| 国产精品一区二区三区蜜臀av | 姐姐的朋友2在线观看中文字幕| 精品一区二区三区三区88| 日韩av免费观看一区| 视频一区二区三区高清在线| 青青伊人一精品视频| 超级碰碰在线视频免费观看| 亚洲一级特黄特黄黄色录像片| 亚洲一区二区激情在线| 任你操视频免费在线观看| 青青操免费日综合视频观看| 天天躁日日躁狠狠躁躁欧美av| 日本黄在免费看视频| 天天做天天干天天舔| 一区二区三区麻豆福利视频| 亚洲卡1卡2卡三卡四老狼| 人妻丝袜精品中文字幕| 欧美亚洲少妇福利视频| 最新国产精品拍在线观看| 涩涩的视频在线观看视频| 国产女人被做到高潮免费视频| 蜜桃精品久久久一区二区| 东京干手机福利视频| 国产亚洲精品视频合集| 久久免费看少妇高潮完整版| 国产熟妇乱妇熟色T区| 天天日天天干天天爱| 久久99久久99精品影院| 人妻激情图片视频小说| 日本性感美女三级视频| 久久午夜夜伦痒痒想咳嗽P| 91精品视频在线观看免费| 狠狠地躁夜夜躁日日躁| 欧美日韩情色在线观看| 自拍偷拍日韩欧美一区二区| 国产va精品免费观看| 天天做天天爽夜夜做少妇| 欧美aa一级一区三区四区| 55夜色66夜色国产精品站| 欧美特色aaa大片| ka0ri在线视频| 毛茸茸的大外阴中国视频| 亚洲偷自拍高清视频| 最新欧美一二三视频 | 噜噜色噜噜噜久色超碰| 日本啪啪啪啪啪啪啪| 综合激情网激情五月天| 亚洲综合另类精品小说| 在线播放国产黄色av| 日本av熟女在线视频| 免费岛国喷水视频在线观看 | 蜜桃久久久久久久人妻| 中文字幕乱码av资源| 无码日韩人妻精品久久| 国产大鸡巴大鸡巴操小骚逼小骚逼| 欧美伊人久久大香线蕉综合| 青青青青青青草国产| 激情人妻校园春色亚洲欧美 | 成人sm视频在线观看| 亚洲欧美自拍另类图片| 黑人巨大的吊bdsm| 青青青青青青青青青青草青青| 久久久精品精品视频视频| 少妇ww搡性bbb91| 55夜色66夜色国产精品站| 91极品大一女神正在播放| 18禁美女黄网站色大片下载| 亚洲色偷偷综合亚洲AV伊人| 欧美亚洲免费视频观看| 久青青草视频手机在线免费观看 | 男女啪啪啪啪啪的网站| 国产 在线 免费 精品| 亚洲欧美成人综合视频| 男生用鸡操女生视频动漫| 欧美va不卡视频在线观看| 岛国毛片视频免费在线观看| 成年人午夜黄片视频资源| 青青青aaaa免费| 久久久精品999精品日本| 一区二区视频视频视频| 国产又粗又黄又硬又爽| 精品国产高潮中文字幕| 欧美久久久久久三级网| 日本美女成人在线视频| 日韩三级黄色片网站| 国产揄拍高清国内精品对白| 国产在线免费观看成人| 三级av中文字幕在线观看| 午夜在线观看一区视频| 精品亚洲在线免费观看| 在线播放 日韩 av| 亚洲免费视频欧洲免费视频| 国产熟妇乱妇熟色T区| 白白操白白色在线免费视频| 自拍 日韩 欧美激情| 人人妻人人人操人人人爽| 天天干天天操天天爽天天摸| 日韩欧美一级黄片亚洲| 亚洲一区二区三区五区| 国产日韩欧美视频在线导航| 视频一区二区在线免费播放| 视频久久久久久久人妻| 日本一道二三区视频久久| 黑人性生活视频免费看| 亚洲精品成人网久久久久久小说| 精品av国产一区二区三区四区 | 中文字幕中文字幕 亚洲国产| 美女骚逼日出水来了| 大胆亚洲av日韩av| 亚洲精品 欧美日韩| 亚洲高清国产自产av| 成人国产激情自拍三区| 精品国产在线手机在线| 伊人综合免费在线视频| 巨乳人妻日下部加奈被邻居中出| 久久久精品999精品日本| 国产aⅴ一线在线观看| 91老师蜜桃臀大屁股| 亚洲推理片免费看网站| 日本在线不卡免费视频| 播放日本一区二区三区电影| 国产成人小视频在线观看无遮挡| 2020久久躁狠狠躁夜夜躁| 青青青青青青青青青青草青青| 大屁股肉感人妻中文字幕在线| 国产高清97在线观看视频| 成人在线欧美日韩国产| 粉嫩av蜜乳av蜜臀 | 青青伊人一精品视频| 欧美怡红院视频在线观看| 亚洲久久午夜av一区二区| 日本少妇的秘密免费视频| 老鸭窝日韩精品视频观看| 一区二区三区精品日本| aⅴ五十路av熟女中出| 狠狠躁夜夜躁人人爽天天天天97| 在线免费视频 自拍| 亚洲福利精品福利精品福利| 一色桃子人妻一区二区三区| 亚洲av香蕉一区区二区三区犇| 欧美第一页在线免费观看视频| 中文字幕高清免费在线人妻| 成人国产小视频在线观看| 久久这里只有精品热视频| 91国内精品久久久久精品一| 国产在线自在拍91国语自产精品| 成年美女黄网站18禁久久| 91p0rny九色露脸熟女| 亚洲综合色在线免费观看| 99久久99一区二区三区| 精品一区二区亚洲欧美| 欧美精品欧美极品欧美视频| 免费无码人妻日韩精品一区二区 | 在线可以看的视频你懂的| av日韩在线观看大全| 亚洲午夜福利中文乱码字幕| 亚洲 图片 欧美 图片| 大香蕉日本伊人中文在线| 99的爱精品免费视频| 久草视频福利在线首页| 自拍偷拍,中文字幕| 亚洲欧美福利在线观看| 自拍偷拍vs一区二区三区| 中文字幕+中文字幕| 香蕉91一区二区三区| 人妻激情图片视频小说| 亚洲女人的天堂av| 亚洲图库另类图片区| 狠狠鲁狠狠操天天晚上干干| 日本韩国免费一区二区三区视频| 在线观看操大逼视频| 久久久久久cao我的性感人妻| 亚洲av在线观看尤物| 这里只有精品双飞在线播放| 亚洲人成精品久久久久久久| 一区二区三区蜜臀在线| 93精品视频在线观看| 日本av高清免费网站| 欧洲国产成人精品91铁牛tv| 2018最新中文字幕在线观看| 亚洲高清国产拍青青草原| 日韩美在线观看视频黄| 五十路老熟女码av| 亚洲2021av天堂| 麻豆精品成人免费视频| 青青草精品在线视频观看| 亚洲国产中文字幕啊啊啊不行了| 丝袜肉丝一区二区三区四区在线| 91免费观看在线网站| 青青草国内在线视频精选| 人妻3p真实偷拍一二区| 在线观看免费视频色97| 鸡巴操逼一级黄色气| 亚洲综合另类欧美久久| 中文 成人 在线 视频| 欧美xxx成人在线| 亚洲高清免费在线观看视频| 久久久久国产成人精品亚洲午夜| 中国老熟女偷拍第一页| av线天堂在线观看| 国产97在线视频观看| 38av一区二区三区| 97人人模人人爽人人喊| 中文字幕第三十八页久久| 人妻熟女中文字幕aⅴ在线| 18禁网站一区二区三区四区| 女同性ⅹxx女同h偷拍| 人妻少妇亚洲精品中文字幕| 天堂va蜜桃一区入口| 日韩精品电影亚洲一区| 一区二区三区激情在线| 中文字幕在线欧美精品| 97资源人妻免费在线视频| 97精品综合久久在线| 福利在线视频网址导航| 国产美女午夜福利久久| 顶级尤物粉嫩小尤物网站| 自拍偷拍 国产资源| 免费看高清av的网站| 伊人成人在线综合网| 综合页自拍视频在线播放| 色婷婷六月亚洲综合香蕉| 含骚鸡巴玩逼逼视频| 人妻熟女中文字幕aⅴ在线| 婷婷午夜国产精品久久久| 欧美黑人巨大性xxxxx猛交| 亚洲av日韩高清hd| 啊用力插好舒服视频| 91精品国产91久久自产久强| 欧洲欧美日韩国产在线| 国产+亚洲+欧美+另类| 亚洲男人让女人爽的视频| 日本韩国免费福利精品| 日本乱人一区二区三区| 99热这里只有国产精品6| 一本一本久久a久久精品综合不卡| 在线免费91激情四射| 999热精品视频在线| 动色av一区二区三区| 亚洲1卡2卡三卡4卡在线观看 | 夜夜嗨av一区二区三区中文字幕| 国产亚洲欧美视频网站| 人妻最新视频在线免费观看| 成人动漫大肉棒插进去视频| 涩涩的视频在线观看视频| 免费在线看的黄网站| 五月天久久激情视频| 狠狠操操操操操操操操操| 青娱乐最新视频在线| wwwxxx一级黄色片| 日日夜夜大香蕉伊人| 中文字幕高清免费在线人妻| 曰本无码人妻丰满熟妇啪啪| 亚洲 中文字幕在线 日韩| 福利国产视频在线观看| 成人免费做爰高潮视频| 国产普通话插插视频| 天堂va蜜桃一区入口| 欧洲黄页网免费观看| 黑人乱偷人妻中文字幕| 日韩黄色片在线观看网站| 一二三中文乱码亚洲乱码one| 自拍偷拍日韩欧美亚洲| 狠狠躁夜夜躁人人爽天天久天啪| 日美女屁股黄邑视频| 黄片大全在线观看观看| 日韩美女福利视频网| 国产成人精品一区在线观看| 久久久久久9999久久久久| 国产大学生援交正在播放| 最后99天全集在线观看| av手机免费在线观看高潮| 啊啊啊想要被插进去视频| 秋霞午夜av福利经典影视| 一区二区三区蜜臀在线| 小泽玛利亚视频在线观看| 中文字幕午夜免费福利视频| 久草视频首页在线观看| 影音先锋女人av噜噜色| 日韩欧美亚洲熟女人妻| 九一传媒制片厂视频在线免费观看 | 国产三级片久久久久久久| 在线观看成人国产电影| 亚洲午夜福利中文乱码字幕| 成人高清在线观看视频| 色噜噜噜噜18禁止观看| 美女福利写真在线观看视频| 欧美女同性恋免费a| 国产亚洲成人免费在线观看| 熟妇一区二区三区高清版| 国产一区自拍黄视频免费观看| brazzers欧熟精品系列| 亚洲午夜电影之麻豆| 成人福利视频免费在线| 欧美特色aaa大片| 经典av尤物一区二区| 99久久久无码国产精品性出奶水 | 特一级特级黄色网片| 亚洲精品麻豆免费在线观看| 大学生A级毛片免费视频| 日韩人妻xxxxx| av新中文天堂在线网址| 久久这里有免费精品| 亚洲少妇人妻无码精品| 密臀av一区在线观看| 99视频精品全部15| 亚洲成人国产av在线| 91免费福利网91麻豆国产精品 | 精品久久久久久久久久久久人妻 | 这里只有精品双飞在线播放| 欧美伊人久久大香线蕉综合| 天天日天天操天天摸天天舔| 视频一区 二区 三区 综合| 亚洲精品高清自拍av| 丰满熟女午夜福利视频| 啪啪啪啪啪啪啪免费视频| 亚洲av一妻不如妾| 日韩影片一区二区三区不卡免费| 美女 午夜 在线视频| 啪啪啪啪啪啪啪啪啪啪黄色| 动漫黑丝美女的鸡巴| 少妇人妻二三区视频| 在线观看国产免费麻豆| 青青青青青青青青青青草青青| 欧美一级片免费在线成人观看| 五月天色婷婷在线观看视频免费| 欧美精品伦理三区四区| 亚洲一区二区三区在线高清| 午夜精彩视频免费一区| 97欧洲一区二区精品免费| 狠狠鲁狠狠操天天晚上干干| 蜜臀av久久久久蜜臀av麻豆| 巨乳人妻日下部加奈被邻居中出| 精品视频一区二区三区四区五区| 久久久久久cao我的性感人妻| 不卡一不卡二不卡三| caoporn蜜桃视频| 专门看国产熟妇的网站| 人妻自拍视频中国大陆| 婷婷色国产黑丝少妇勾搭AV| 黄色成年网站午夜在线观看| 大白屁股精品视频国产| 国产又粗又硬又大视频| 红桃av成人在线观看| 日本乱人一区二区三区| 在线播放一区二区三区Av无码| 一区二区三区蜜臀在线| 大肉大捧一进一出好爽在线视频 | 97香蕉碰碰人妻国产樱花| 99的爱精品免费视频| 久久久精品精品视频视频| 欧亚乱色一区二区三区| 国产一区二区视频观看| av欧美网站在线观看| 免费成人av中文字幕| 亚洲av男人的天堂你懂的| 国产精品人妻熟女毛片av久| 亚洲欧美激情中文字幕| 国产精品3p和黑人大战| 中国产一级黄片免费视频播放| av完全免费在线观看av| 国产一区二区三免费视频 | 亚洲成人线上免费视频观看| 国产V亚洲V天堂无码欠欠| 大学生A级毛片免费视频| 成人免费公开视频无毒| 亚洲一级美女啪啪啪| 视频一区二区三区高清在线| 国产综合精品久久久久蜜臀| 日本人竟这样玩学生妹| 又粗又硬又猛又爽又黄的| 国产精品国色综合久久| 亚洲Av无码国产综合色区| 亚洲一区二区三区在线高清| 亚洲嫩模一区二区三区| 免费在线看的黄网站| 一区二区三区 自拍偷拍| 一区二区三区久久中文字幕| aaa久久久久久久久| 久久久久久国产精品| 青青青青青免费视频| 精品日产卡一卡二卡国色天香 | 把腿张开让我插进去视频| 色伦色伦777国产精品| 做爰视频毛片下载蜜桃视频1| 色呦呦视频在线观看视频| 国产一区二区视频观看| 国产成人精品福利短视频| 天天干天天操天天插天天日| 农村胖女人操逼视频| av中文字幕在线观看第三页| 99久久99久国产黄毛片| 宅男噜噜噜666国产| 国产激情av网站在线观看| 爱有来生高清在线中文字幕| 婷婷久久久综合中文字幕| 欧美日本aⅴ免费视频| 日本熟妇丰满厨房55| 精品一区二区三四区| 成人av亚洲一区二区| 日本一本午夜在线播放| 熟女少妇激情五十路| 黄色成年网站午夜在线观看| 18禁精品网站久久| 青青青青青青青青青国产精品视频| 66久久久久久久久久久| 91自产国产精品视频| 午夜蜜桃一区二区三区| 一区二区三区的久久的蜜桃的视频| 青青青青青操视频在线观看| 99一区二区在线观看| 欧美一区二区三区四区性视频| 粉嫩av蜜乳av蜜臀| 亚洲免费在线视频网站| 日本黄在免费看视频| 成人福利视频免费在线| 岛国av高清在线成人在线| 青草久久视频在线观看| 国产午夜男女爽爽爽爽爽视频| 护士小嫩嫩又紧又爽20p| 快点插进来操我逼啊视频| 日本三极片中文字幕| 啊啊啊视频试看人妻| 亚洲人妻30pwc| 91久久国产成人免费网站| 天天艹天天干天天操| 做爰视频毛片下载蜜桃视频1| 老有所依在线观看完整版| 在线制服丝袜中文字幕| 天天操天天爽天天干| 午夜场射精嗯嗯啊啊视频| 青青青爽视频在线播放| 91老师蜜桃臀大屁股| 99精品一区二区三区的区| 91老师蜜桃臀大屁股| 亚洲欧美人精品高清| 2022国产综合在线干| v888av在线观看视频| 黄色成人在线中文字幕| 日本免费午夜视频网站| 成年人啪啪视频在线观看| 动漫精品视频在线观看| 日韩北条麻妃一区在线| 人妻少妇亚洲一区二区| 好了av中文字幕在线| 黑人大几巴狂插日本少妇| 国产精品人妻66p| 国产视频一区二区午夜| 中出中文字幕在线观看| 青草亚洲视频在线观看| 2025年人妻中文字幕乱码在线| 欧美男同性恋69视频| aiss午夜免费视频| 国产在线观看免费人成短视频| 天天操天天干天天日狠狠插 | 在线观看黄色成年人网站| 成人在线欧美日韩国产| 国际av大片在线免费观看| 天天日天天干天天舔天天射| 国产亚洲精品视频合集| 91香蕉成人app下载| 亚洲最大免费在线观看| 538精品在线观看视频| 天天干天天操天天扣| 国产亚洲精品欧洲在线观看| 自拍偷拍日韩欧美亚洲| 硬鸡巴动态操女人逼视频| 亚洲色偷偷综合亚洲AV伊人| 亚洲av日韩精品久久久久久hd| 少妇人妻真实精品视频| 国产亚洲精品欧洲在线观看| 亚洲精品国产在线电影| 国产又色又刺激在线视频 | 白白操白白色在线免费视频| 天堂v男人视频在线观看| 中文字幕一区二 区二三区四区| 中文 成人 在线 视频| 国产91嫩草久久成人在线视频| 日本xx片在线观看| 天天艹天天干天天操| 美女张开腿让男生操在线看| 欧美视频中文一区二区三区| 国产精品黄色的av| 亚洲高清国产自产av| 端庄人妻堕落挣扎沉沦| 成熟熟女国产精品一区| 天堂av在线播放免费| 日本啪啪啪啪啪啪啪| 天天操天天操天天碰| 亚洲av成人免费网站| 成熟丰满熟妇高潮xx×xx| 欧美专区第八页一区在线播放| 天天夜天天日天天日| 福利午夜视频在线合集| 欧美另类重口味极品在线观看| 国产精品人妻熟女毛片av久| 中国黄片视频一区91| 国产精品久久久久国产三级试频| 久久免看30视频口爆视频| 超污视频在线观看污污污| 伊人情人综合成人久久网小说| 国内自拍第一页在线观看| 天干天天天色天天日天天射| 天天干天天操天天摸天天射| 最近中文2019年在线看| 啪啪啪18禁一区二区三区| 五十路息与子猛烈交尾视频 | 国产成人无码精品久久久电影| 搡老妇人老女人老熟女| 好了av中文字幕在线| 欧美爆乳肉感大码在线观看| 国产真实乱子伦a视频| 大胸性感美女羞爽操逼毛片| 任我爽精品视频在线播放| 88成人免费av网站| 国产一区二区视频观看| 成人福利视频免费在线| 国产日本欧美亚洲精品视| 97精品综合久久在线| jiujiure精品视频在线| avjpm亚洲伊人久久| 久草视频在线看免费| 自拍偷拍日韩欧美亚洲| 成人在线欧美日韩国产| 骚货自慰被发现爆操| 午夜大尺度无码福利视频| 大香蕉伊人中文字幕| 好了av中文字幕在线| 最近中文字幕国产在线| 国产欧美日韩在线观看不卡| 在线观看免费av网址大全| 可以免费看的www视频你懂的| 1区2区3区不卡视频| 国产精品3p和黑人大战| 超污视频在线观看污污污| av天堂资源最新版在线看| 亚洲欧美福利在线观看| 久久久久久久精品成人热| 亚洲激情偷拍一区二区| 日本三极片中文字幕| 青草亚洲视频在线观看| 丝袜长腿第一页在线| 一区二区三区四区中文| 国产三级影院在线观看| 久久农村老妇乱69系列| 亚洲高清国产拍青青草原| 国产又大又黄免费观看| 午夜精品福利91av| 都市家庭人妻激情自拍视频| 夜夜骑夜夜操夜夜奸| 日本裸体熟妇区二区欧美| 国产一区自拍黄视频免费观看| 日本人妻精品久久久久久| 偷拍自拍福利视频在线观看| 四川乱子伦视频国产vip| 黄色视频在线观看高清无码| 深夜男人福利在线观看| 国产女人被做到高潮免费视频| 沈阳熟妇28厘米大战黑人| 99热这里只有国产精品6| 中文字幕高清在线免费播放| 中文字幕网站你懂的| 亚洲成人熟妇一区二区三区 | 日韩av免费观看一区|