3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

[转]白话阿里巴巴Java开发手册高级篇

發布時間:2023/12/4 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]白话阿里巴巴Java开发手册高级篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

不久前,阿里巴巴發布了《阿里巴巴Java開發手冊》,總結了阿里巴巴內部實際項目開發過程中開發人員應該遵守的研發流程規范,這些流程規范在一定程度上能夠保證最終的項目交付質量,通過在時間中總結模式,并推廣給廣大開發人員,來避免研發人員在實踐中容易犯的錯誤,確保最終在大規模協作的項目中達成既定目標。

?

無獨有偶,筆者去年在公司里負責升級和制定研發流程、設計模板、設計標準、代碼標準等規范,并在實際工作中進行了應用和推廣,收效頗豐,也總結了適合支付平臺的技術規范,由于阿里巴巴Java開發手冊本身定位為規約和規范,語言簡單、精煉,沒有太多的解讀和示例,有些條款對于一般開發人員理解起來比較困難,本文借著阿里巴巴發布的Java開發手冊,詳細解讀Java平臺下開發規范和標準的制定和實施,強調那些在開發過程中需要重點關注的技術點,特別是解決某類已識別問題的模式和反模式。

?

異常處理

?

【強制】Java 類庫中定義的一類 RuntimeException 可以通過預先檢查進行規避,而不應該通過 catch 來處理,比如: IndexOutOfBoundsException,NullPointerException等等。

?

說明: 無法通過預檢查的異常除外,如在解析一個外部傳來的字符串形式數字時,通過 catch NumberFormatException 來實現。

?

正例: if (obj != null) {…}

?

反例: try { obj.method() } catch (NullPointerException e) {…}

?

白話:判空是一個永恒的話題,只要你不確定變量是否為空,都應該判空,否則后患無窮。

?

【強制】異常不要用來做流程控制,條件控制,因為異常的處理效率比條件分支低。

?

白話:禁止使用異常來封裝業務邏輯,業務異常應該用錯誤碼來表示,系統異常則使用Java原生異常。異常處理是通過異常表查詢來實現的,肯定沒有跳轉語句性能高。

?

【強制】對大段代碼進行 try-catch,這是不負責任的表現。catch 時請分清穩定代碼和非穩定代碼,穩定代碼指的是無論如何不會出錯的代碼。對于非穩定代碼的catch盡可能進行區分異常類型,再做對應的異常處理。

?

白話:做事要直切主題,不能一概而論。不能簡單的catch Throwable,然后打印日志,這是不負責任的表現,應該有針對的抓住和處理異常。

?

【強制】捕獲異常是為了處理它,不要捕獲了卻什么都不處理而拋棄之,如果不想處理它,請 將該異常拋給它的調用者。最外層的業務使用者,必須處理異常,將其轉化為用戶可以理解的內容。

?

白話: 禁止吃掉異常,吃掉異常就是捕獲異常什么都沒做,也沒拋出,這也是不負責任的表現。是在不能處理的異常拋出去,但是得讓使用方知道這種情況,這是編程提供方契約的一種方式。

?

【強制】有 try 塊放到了事務代碼中,catch 異常后,如果需要回滾事務,一定要注意手動回滾事務。

?

白話:我們基本采用聲明式事務,出現異常需要回滾的情況,建議繼續拋出異常讓聲明式事務自動回滾,不建議代碼中手工控制事務。

?

【強制】finally 塊必須對資源對象、流對象進行關閉,有異常也要做 try-catch。 說明:如果 JDK7 及以上,可以使用 try-with-resources 方式。

?

白話:永恒的資源關閉原則。

?

【強制】不能在 finally 塊中使用 return,finally 塊中的 return 返回后方法結束執行,不會再執行 try 塊中的 return 語句。

?

白話:確實會覆蓋try塊里面的return語句。思維不混亂的話,沒人會把return語句寫在finally語句里。

?

【強制】捕獲異常與拋異常,必須是完全匹配,或者捕獲異常是拋異常的父類。

?

如果預期對方拋的是繡球,實際接到的是鉛球,就會產生意外情況。

?

白話:異常處理后,讓異常變得更小,而不是變大,大而化小,小而化了。

?


【推薦】方法的返回值可以為 null,不強制返回空集合,或者空對象等,必須添加注釋充分 說明什么情況下會返回 null 值。調用方需要進行 null 判斷防止 NPE 問題。

?

說明: 本規約明確防止 NPE 是調用者的責任。即使被調用方法返回空集合或者空對象,對調用 者來說,也并非高枕無憂,必須考慮到遠程調用失敗,運行時異常等場景返回 null 的情況。

?

白話:如前面所說,只要不確定的變量,一定要判空,別自找麻煩。

?

【推薦】防止 NPE,是程序員的基本修養,注意 NPE 產生的場景:

?

  • 返回類型為包裝數據類型,有可能是null,返回int值時注意判空。

    反例: public int f() { return Integer 對象}; 如果為 null,自動解箱拋 NPE。

  • 數據庫的查詢結果可能為null。

  • 集合里的元素即使isNotEmpty,取出的數據元素也可能為null。

  • 遠程調用返回對象,一律要求進行NPE判斷。

  • 對于Session中獲取的數據,建議NPE檢查,避免空指針。

  • 級聯調用obj.getA().getB().getC();一連串調用,易產生NPE。

?

正例: 可以使用 JDK8 的 Optional 類來防止 NPE 問題。

?

白話:判空,判空,緩存的數據,別人的數據,都要判空。

?

【推薦】在代碼中使用“拋異?!边€是“返回錯誤碼”,對于公司外的 http/api 開放接口必須 使用“錯誤碼”;而應用內部推薦異常拋出;跨應用間 RPC 調用優先考慮使用 Result 方式,封 裝 isSuccess、“錯誤碼”、“錯誤簡短信息”。

?

說明: 關于 RPC 方法返回方式使用 Result 方式的理由:

?

使用拋異常返回方式,調用方如果沒有捕獲到就會產生運行時錯誤。

?

如果不加棧信息,只是new自定義異常,加入自己的理解的error message,對于調用端解決問題的幫助不會太多。如果加了棧信息,在頻繁調用出錯的情況下,數據序列化和傳輸的性能損耗也是問題。

?

白話:業務異常使用Result模式,系統異常用Java原生異常。RPC建議使用Result模式,不想讓一個異常在系統間跳來跳去的,異常是包含調用棧的。

?

【推薦】定義時區分unchecked/checked 異常,避免直接使用RuntimeException拋出, 更不允許拋出 Exception 或者 Throwable,應使用有業務含義的自定義異常。推薦業界已定義 過的自定義異常,如:DAOException / ServiceException 等。

?

白話:不要所有異常都集成自Runtime異常,希望調用方處理的異常一定用checked異常。

?

【參考】避免出現重復的代碼(Don’t Repeat Yourself),即DRY原則。

?

說明: 隨意復制和粘貼代碼,必然會導致代碼的重復,在以后需要修改時,需要修改所有的副 本,容易遺漏。必要時抽取共性方法,或者抽象公共類,甚至是共用模塊。

?

正例: 一個類中有多個 public 方法,都需要進行數行相同的參數校驗操作,這個時候請抽取:
private boolean checkParam(DTO dto) {...}

?

白話:如果不知道DRY原則,但是回顧你以前寫的代碼都是這樣寫的,那么恭喜你,你是個好程序員,也為你發愁。

?

并發處理

?

【強制】獲取單例對象需要保證線程安全,其中的方法也要保證線程安全。

?

說明: 資源驅動類、工具類、單例工廠類都需要注意。

?

白話:如果延遲加載實現的單例需要并發控制;如果初始化的時候new單例對象,本身是線程安全的,取得實例方法不需要同步。

?

【強制】創建線程或線程池時請指定有意義的線程名稱,方便出錯時回溯。

?

正例:

?

public class TimerTaskThread extends Thread { public TimerTaskThread() {super.setName("TimerTaskThread"); ... } }

?

白話:寫代碼的時候就要想到查bug的時候要用到什么信息,然后決定如何命名、打印日志等。

?

【強制】線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。

?

說明: 使用線程池的好處是減少在創建和銷毀線程上所花的時間以及系統資源的開銷,解決資 源不足的問題。如果不使用線程池,有可能造成系統創建大量同類線程而導致消耗完內存或者 “過度切換”的問題。

?

白話:一個是使用線程池緩存線程可以提高效率,另外線程池幫我們做了管理線程的事情,提供了優雅關機、interrupt等待IO的線程,飽和策略等功能。

?

【強制】線程池不允許使用 Executors 去創建,而是通過 ThreadPoolExecutor 的方式,這樣的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。

?

說明: Executors 返回的線程池對象的弊端如下:

?

  • FixedThreadPool 和 SingleThreadPool: 允許的請求隊列長度為 Integer.MAX_VALUE,可能會堆積大量的請求,從而導致 OOM。

  • CachedThreadPool 和 ScheduledThreadPool: 允許的創建線程數量為 Integer.MAX_VALUE,可能會創建大量的線程,從而導致 OOM。

    白話:

    線程池如果沒有限制最大數量,線程池撐開的時候,由于內存不夠或者系統配置的最大線程數超出,都會產生oom: unalbe to create native thread。

?

一個組件的核心參數最好要顯式的傳入,不要默認,就像你交給屬下一個任務,任務的目標、原則、時間點、邊界都要明確,不能模糊處理一樣,免得扯皮。

?

【強制】SimpleDateFormat 是線程不安全的類,一般不要定義為static變量,如果定義為
static,必須加鎖,或者使用 DateUtils 工具類。

?

正例: 注意線程安全,使用 DateUtils。亦推薦如下處理:

?

private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() { @Overrideprotected DateFormat initialValue() {return new SimpleDateFormat("yyyy-MM-dd");} };

?

說明: 如果是 JDK8 的應用,可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar, DateTimeFormatter 代替 Simpledateformatter,官方給出的解釋: simple beautiful strong immutable thread-safe。

?

白話:記住,打死你,我也不會把SimpleDateFormat共享到類中。

?

【強制】高并發時,同步調用應該去考量鎖的性能損耗。能用無鎖數據結構,就不要用鎖; 能鎖區塊,就不要鎖整個方法體; 能用對象鎖,就不要用類鎖。

?

白話:優先無鎖,不用鎖能解決的一定不要用鎖,即使用鎖也要控制粒度,越細越好。

?

【強制】對多個資源、數據庫表、對象同時加鎖時,需要保持一致的加鎖順序,否則可能會造 成死鎖。

?

說明: 線程一需要對表 A、B、C 依次全部加鎖后才可以進行更新操作,那么線程二的加鎖順序也必須是 A、B、C,否則可能出現死鎖。

?

白話:解決死鎖的方法:按順序鎖資源、超時、優先級、死鎖檢測等??蓞⒖颊軐W家進餐問題學習更深入的并發機制。

?

【強制】并發修改同一記錄時,避免更新丟失,需要加鎖。要么在應用層加鎖,要么在緩存加 鎖,要么在數據庫層使用樂觀鎖,使用 version 作為更新依據。

?

說明: 如果每次訪問沖突概率小于 20%,推薦使用樂觀鎖,否則使用悲觀鎖。樂觀鎖的重試次 數不得小于 3 次。

?

白話:狀態流轉、維護可用余額等最好直接利用數據庫的行級鎖,不需要顯式的加鎖。

?

【強制】多線程并行處理定時任務時,Timer 運行多個 TimerTask 時,只要其中之一沒有捕獲拋出的異常,其它任務便會自動終止運行,使用 ScheduledExecutorService 則沒有這個問題。

?

白話:線程執行體、任務最上層等一定要抓住Throwable并進行相應的處理,否則會使線程終止。

?

【推薦】使用 CountDownLatch 進行異步轉同步操作,每個線程退出前必須調用 countDown 方法,線程執行代碼注意 catch 異常,確保 countDown 方法可以執行,避免主線程無法執行至 await 方法,直到超時才返回結果。

?

說明: 注意,子線程拋出異常堆棧,不能在主線程 try-catch 到。

?

白話:請在try...finally語句里執行countDown方法,與關閉資源類似。

?

【推薦】避免 Random 實例被多線程使用,雖然共享該實例是線程安全的,但會因競爭同一 seed 導致的性能下降。

?

說明: Random 實例包括 java.util.Random 的實例或者 Math.random()實例。

?

正例: 在 JDK7 之后,可以直接使用 API ThreadLocalRandom,在 JDK7 之前,可以做到每個線程一個實例。

?

白話:可以把Random放在ThreadLocal里,只在本線程中使用。

?

【推薦】在并發場景下,通過雙重檢查鎖(double-checked locking)實現延遲初始化的優 化問題隱患(可參考 The “Double-Checked Locking is Broken” Declaration),推薦問 題解決方案中較為簡單一種(適用于 JDK5 及以上版本),將目標屬性聲明為 volatile 型。

?

反例:

?

class Foo {private Helper helper = null; public Helper getHelper() {if (helper == null) synchronized(this) { if (helper == null)helper = new Helper();}return helper; }// other functions and members... }

?

白話:網上對雙檢鎖有N多討論,這里很負責任的告訴大家,只要不是特別老的JDK版本(1.4以下),雙檢鎖是沒問題的。

?

【參考】volatile 解決多線程內存不可見問題。對于一寫多讀,是可以解決變量同步問題, 但是如果多寫,同樣無法解決線程安全問題。如果是 count++操作,使用如下類實現: AtomicInteger count = new AtomicInteger(); count.addAndGet(1); 如果是 JDK8,推薦使用 LongAdder 對象,比 AtomicLong 性能更好(減少樂觀鎖的重試次數)。

?

白話:volatile只有內存可見性語義,synchronized有互斥語義,一寫多讀使用volatile就可以,多寫就必須使用synchronized,fetch-mod-get也必須使用synchronized。

?

【參考】 HashMap 在容量不夠進行 resize 時由于高并發可能出現死鏈,導致 CPU 飆升,在開發過程中注意規避此風險。

?

白話:開發程序的時候要預估使用量,根據使用量來設置初始值。resize需要重建hash表,嚴重影響性能,會讓程序產生長尾的響應時間。

?

【參考】ThreadLocal 無法解決共享對象的更新問題,ThreadLocal 對象建議使用 static 修飾。這個變量是針對一個線程內所有操作共有的,所以設置為靜態變量,所有此類實例共享此靜態變量 ,也就是說在類第一次被使用時裝載,只分配一塊存儲空間,所有此類的對象(只 要是這個線程內定義的)都可以操控這個變量。

?

白話:ThreadLocal實際上是一個從線程ID到變量的Map,每次取得ThreadLocal變量,實際上是先取得當前線程ID,再用當前線程ID取得關聯的變量。ThreadLocal使用了WeakHashMap,在key被回收的時候,value也被回收了,不用擔心內存泄露。

?

日志規約

?

【強制】應用中不可直接使用日志系統(Log4j、Logback)中的 API,而應依賴使用日志框架
SLF4J中的API,使用門面模式的日志框架,有利于維護和各個類的日志處理方式統一。

?

java import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static final Logger logger = LoggerFactory.getLogger(Abc.class);

?

白話:使用slf4jAPI更爽更清新。通過占位符的方式不但代碼清晰,對象的toString等方法也是根據日志等級來調用的。

?

【強制】日志文件推薦至少保存 15 天,因為有些異常具備以“周”為頻次發生的特點。

?

白話:其實需要更長,有的線上事故復盤周期更長,需要更長的日志保存。這其實不是開發的職責,應該構建大數據日志系統,比如:ELK等。

?

【強制】應用中的擴展日志(如打點、臨時監控、訪問日志等)命名方式:
appName_logType_logName.log。

?

logType: 日志類型,推薦分類有stats/desc/monitor/visit 等;

?

logName: 日志描述。

?

這種命名的好處: 通過文件名就可知道日志文件屬于什么應用,什么類型,什么目的,也有利于歸類查找。

?

正例: mppserver 應用中單獨監控時區轉換異常,如: mppserver_monitor_timeZoneConvert.log

?

說明: 推薦對日志進行分類,錯誤日志和業務日志盡量分開存放,便于開發人員查看,也便于 通過日志對系統進行及時監控。

?

白話:邏輯上分開更利于日志管理。性能上,機械硬盤如果是單文件寫可以一定程度利用磁盤順序寫提高性能。

?

【強制】對 trace/debug/info 級別的日志輸出,必須使用條件輸出形式或者使用占位符的方 式。

?

說明: logger.debug("Processing trade with id: " + id + " symbol: " + symbol); 如果日志級別是 warn,上述日志不會打印,但是會執行字符串拼接操作,如果 symbol 是對象, 會執行 toString()方法,浪費了系統資源,執行了上述操作,最終日志卻沒有打印。

?

正例: (條件)

?

java if (logger.isDebugEnabled()) { logger.debug("Processing trade with id: " + id + " symbol: " + symbol); }

?

正例: (占位符)

?

logger.debug("Processing trade with id: {} symbol : {} ", id, symbol);

?

白話:一定不要用字符串相加,一定要用占位符。

?

【強制】避免重復打印日志,浪費磁盤空間,務必在 log4j.xml 中設置additivity=false。

?

正例: <logger name="com.taobao.dubbo.config" additivity="false">

?

白話:日志需要CPU處理,緩存的時候需要占用內存,打印過程中要占用IO帶寬,存儲到磁盤又需要存儲空間,要綠色環保。

?

【強制】異常信息應該包括兩類信息: 案發現場信息和異常堆棧信息。如果不處理,那么通過 關鍵字 throws 往上拋出。

?

正例: logger.error(各類參數或者對象 toString + "_" + e.getMessage(), e);

?

白話:打印日志一定要包含環境,否則找bug的時候日志對不上,勤奮愛干活的人一下就聽懂我在說啥了。

?

【推薦】謹慎地記錄日志。生產環境禁止輸出 debug 日志;有選擇地輸出 info 日志;如果使 用 warn 來記錄剛上線時的業務行為信息,一定要注意日志輸出量的問題,避免把服務器磁盤撐爆,并記得及時刪除這些觀察日志。

?

說明: 大量地輸出無效日志,不利于系統性能升,也不利于快速定位錯誤點。記錄日志時請思考:這些日志真的有人看嗎?看到這條日志你能做什么?能不能給問題排查帶來好處?

?

白話:我常常和小伙伴們說,寫代碼的時候就要想到查bug的時候怎么查,需要哪些日志,打印日志只需要打印核心內容,不要隨便就把對象json序列化打印出來,如果是列表會很大。

?

【參考】可以使用 warn 日志級別來記錄用戶輸入參數錯誤的情況,避免用戶投訴時,無所適 從。注意日志輸出的級別,error 級別只記錄系統邏輯出錯、異常等重要的錯誤信息。如非必要,請不要在此場景打出 error 級別。

?

白話:合理利用warn級別日志,error級別日志最重要,理想情況下生產上產生的error和warn日志開發要定期的梳理。

?

安全規約

?

【強制】隸屬于用戶個人的頁面或者功能必須進行權限控制校驗。

?

說明: 防止沒有做水平權限校驗就可隨意訪問、修改、刪除別人的數據,比如查看他人的私信內容、修改他人的訂單。

?

白話:面向用戶的所有服務都要有權限校驗。后端服務沒有權限校驗,也要有服務化平臺下的調用權限管理。

?

【強制】用戶敏感數據禁止直接展示,必須對展示數據脫敏。

?

說明: 查看個人手機號碼會顯示成:158****9119,隱藏中間 4 位,防止隱私泄露。

?

白話:除了手機號,在金融領域會有更多的敏感信息。防泄露必須加密,防篡改必須簽名,防抵賴必須非對稱簽名。

?

【強制】用戶輸入的 SQL 參數嚴格使用參數綁定或者 METADATA 字段值限定,防止 SQL 注入, 禁止字符串拼接 SQL 訪問數據庫。

?

白話:這條一般用代碼檢查工具都會檢查出來。開發人員千萬不要做字符串連接SQL。

?

【強制】用戶請求傳入的任何參數必須做有效性驗證。

?

說明:

?

忽略參數校驗可能導致:

?

  • page size過大導致內存溢出。

  • 惡意order by導致數據庫慢查詢。

  • 任意重定向。

  • SQL注入。

  • 反序列化注入。

  • 正則輸入源串拒絕服務ReDoS.

?

說明: Java 代碼用正則來驗證客戶端的輸入,有些正則寫法驗證普通用戶輸入沒有問題, 但是如果攻擊人員使用的是特殊構造的字符串來驗證,有可能導致死循環的結果。

?

白話:一般在框架層都要做特殊字符的過濾,包括:大于號、小于號、單引號等。任何使用集合的時候,輸入參數是集合的時候,返回是集合的時候,一定要有條數的限制,不能無限大。

?

【強制】禁止向 HTML 頁面輸出未經安全過濾或未正確轉義的用戶數據。

?

白話:系統的入口要堵住特殊字符,入口可能是web界面,也可能是開發的接口。系統的出口也要堵住特殊字符,出口一般指的是web界面。

?

【強制】表單、AJAX 提交必須執行 CSRF 安全過濾。

?

說明: CSRF(Cross-site request forgery)跨站請求偽造是一類常見編程漏洞。對于存在 CSRF 漏洞的應用/網站,攻擊者可以事先構造好 URL,只要受害者用戶一訪問,后臺便在用戶 不知情情況下對數據庫中用戶參數進行相應修改。

?

白話:堵住系統的入口!

?

【強制】在使用平臺資源,譬如短信、郵件、電話、下單、支付,必須實現正確的防重放限制, 如數量限制、疲勞度控制、驗證碼校驗,避免被濫刷、資損。

?

說明: 如注冊時發送驗證碼到手機,如果沒有限制次數和頻率,那么可以利用此功能騷擾到其它用戶,并造成短信平臺資源浪費。

?

白話:針對用戶輸入,一定要做防御式編程。

?

【推薦】發貼、評論、發送即時消息等用戶生成內容的場景必須實現防刷、文本內容違禁詞過濾等風控策略。

?

白話:這個一般是大數據部門提供決策數據,各個業務方埋點。

?

OOP 規約

?

【強制】避免通過一個類的對象引用訪問此類的靜態變量或靜態方法,無謂增加編譯器解析成
本,直接用類名來訪問即可。

?

白話:也不直觀,看調用代碼看不出來是靜態方法,容易誤解。

?

【強制】所有的覆寫方法,必須加@Override 注解。

?

反例:getObject()與 get0bject()的問題。一個是字母的 O,一個是數字的 0,加@Override 可以準確判斷是否覆蓋成功。另外,如果在抽象類中對方法簽名進行修改,其實現類會馬上編譯報錯。

?

白話:Java和C++不一樣,C++是在父類先聲明虛擬函數子類才覆寫,Java是任何方法都能覆寫,也可以不覆寫,所以覆寫不覆寫是沒有編譯器檢查的,除非接口中某一個方法完全沒有被實現才會編譯報錯。

?

【強制】相同參數類型,相同業務含義,才可以使用 Java 的可變參數,避免使用 Object。

?

說明: 可變參數必須放置在參數列表的最后。(提倡同學們盡量不用可變參數編程)

?

正例: public User getUsers(String type, Integer... ids)

?

白話:用處不大,可以用重載方法或者數組參數代替。

?

一般應用在日志的 API 定義上,用于傳不定的日志參數。

?

【強制】外部正在調用或者二方庫依賴的接口,不允許修改方法簽名,避免對接口調用方產生 影響。接口過時必須加@Deprecated 注解,并清晰地說明采用的新接口或者新服務是什么。

?

白話:設計時沒有考慮周全,需要改造接口,需要通過增加新接口,遷移后下線老接口的方式實現。REST接口只能增加參數,不能減少參數,返回值的內容也是只增不減。

?

【強制】不能使用過時的類或方法。

?

說明: java.net.URLDecoder 中的方法 decode(String encodeStr) 這個方法已經過時,應該使用雙參數 decode(String source, String encode)。接口提供方既然明確是過時接口,那么有義務同時提供新的接口; 作為調用方來說,有義務去考證過時方法的新實現是什么。

?

白話:明確了責任和義務,接口提供方也有義務推動接口使用方盡早遷移,不要積累技術負債。

?

【強制】Object 的 equals 方法容易拋空指針異常,應使用常量或確定有值的對象來調用 equals。

?

正例: "test".equals(object);

?

反例: object.equals("test");

?

說明: 推薦使用java.util.Objects#equals (JDK7引入的工具類)

?

白話:常量比變量,永遠都不變的原則。

?

【強制】所有的相同類型的包裝類對象之間值的比較,全部使用 equals 方法比較。

?

說明: 對于Integer var = ?在-128至127之間的賦值,Integer對象是在 IntegerCache.cache 產生,會復用已有對象,這個區間內的 Integer 值可以直接使用==進行 判斷,但是這個區間之外的所有數據,都會在堆上產生,并不會復用已有對象,這是一個大坑, 推薦使用 equals 方法進行判斷。

?

白話:Java世界里相等請用equals方法,==表示對象相等,一般在框架開發中會用到。

?

關于基本數據類型與包裝數據類型的使用標準如下:

?

  • 【強制】所有的POJO類屬性必須使用包裝數據類型。

  • 【強制】RPC方法的返回值和參數必須使用包裝數據類型。

  • 【推薦】所有的局部變量使用基本數據類型。

?

說明: POJO 類屬性沒有初值是提醒使用者在需要使用時,必須自己顯式地進行賦值,任何
NPE 問題,或者入庫檢查,都由使用者來保證。

?

正例: 數據庫的查詢結果可能是 null,因為自動拆箱,用基本數據類型接收有 NPE 風險。

?

反例: 比如顯示成交總額漲跌情況,即正負 x%,x 為基本數據類型,調用的 RPC 服務,調用不成功時,返回的是默認值,頁面顯示:0%,這是不合理的,應該顯示成中劃線-。所以包裝數據類型的 null 值,能夠表示額外的信息,如:遠程調用失敗,異常退出。

?

白話:其實包裝數據類型與基本數據類型相比,增加了一個null的狀態,可以攜帶更多的語義。

?

【強制】定義 DO/DTO/VO 等 POJO 類時,不要設定任何屬性默認值。

?

反例: POJO類的gmtCreate默認值為new Date(); 但是這個屬性在數據提取時并沒有置入具體值,在更新其它字段時又附帶更新了此字段,導致創建時間被修改成當前時間。

?

白話: 雖然這里反例不太容易看懂,但是要記得持久領域對象之前由應用層統一賦值gmtCreate和gmtModify字段。

?

【強制】序列化類新增屬性時,請不要修改 serialVersionUID 字段,避免反序列失敗; 如 果完全不兼容升級,避免反序列化混亂,那么請修改 serialVersionUID 值。

?

說明:注意 serialVersionUID 不一致會拋出序列化運行時異常。

?

白話: 不到萬不得已不要使用JDK自身的序列化,機制很重,信息冗余有版本。

?

【強制】構造方法里面禁止加入任何業務邏輯,如果有初始化邏輯,請放在 init 方法中。

?

白話: 這樣做一種是規范,代碼清晰,還有就是異常堆棧上更容易識別出錯的方法和語句。

?

【強制】POJO 類必須寫 toString 方法。使用 IDE 的中工具:source> generate toString 時,如果繼承了另一個 POJO 類,注意在前面加一下 super.toString。

?

說明: 在方法執行拋出異常時,可以直接調用 POJO 的 toString()方法打印其屬性值,便于排 查問題。

?

白話:這里還有一個大坑,寫toString的時候要保證不會發生NPE,有的時候toString調用實例變量的toString,實例變量由于某些原因為null,導致NPE,代碼沒有處理好就終止,這個問題坑了好多次。

?

【推薦】使用索引訪問用 String 的 split 方法得到的數組時,需做最后一個分隔符后有無內容的檢查,否則會有拋 IndexOutOfBoundsException 的風險。

?

說明:

?

String str = "a,b,c,,"; String[] ary = str.split(","); //預期大于 3,結果是 3 System.out.println(ary.length);

?

白話: 編程要留心眼,任何不確定的地方都要判斷、處理,否則掉到坑里了自己爬出來很費勁。Java編程判空的思想要實施縈繞在每個開發人員的腦海里。

?

【推薦】當一個類有多個構造方法,或者多個同名方法,這些方法應該按順序放置在一起, 便于閱讀。

?

白話: 這規范說的咋就和我的習慣一模一樣呢!

?

【推薦】 類內方法定義順序依次是: 公有方法或保護方法 > 私有方法 > getter/setter
方法。

?

說明: 公有方法是類的調用者和維護者最關心的方法,首屏展示最好; 保護方法雖然只是子類 關心,也可能是“模板設計模式”下的核心方法; 而私有方法外部一般不需要特別關心,是一個黑盒實現; 因為方法信息價值較低,所有 Service 和 DAO 的 getter/setter 方法放在類體最 后。

?

白話:我推薦把一套邏輯的共有方法、保護方法、私有方法放在一起,所有getter/setter放在最后,這樣感覺更有邏輯!

?

【推薦】setter 方法中,參數名稱與類成員變量名稱一致,this.成員名 = 參數名。在
getter/setter 方法中,盡量不要增加業務邏輯,增加排查問題的難度。

?

反例:

?

public Integer getData() { if (true) {return data + 100; } else {return data - 100; }}

?

白話:雙手贊成。

?

【推薦】循環體內,字符串的連接方式,使用 StringBuilder 的 append 方法進行擴展。

?

反例:

?

String str = "start";for (int I = 0; I < 100; i++) {str = str + "hello"; }

?

說明: 反編譯出的字節碼文件顯示每次循環都會 new 出一個 StringBuilder 對象,然后進行 append 操作,最后通過 toString 方法返回 String 對象,造成內存資源浪費。

?

白話:一定使用StringBuilder,不要使用StringBuffer,StringBuffer是線程安全的,太重。我就一直想不明白Java編譯器為什么不做個優化呢?

?

【推薦】下列情況,聲明成 final 會更有提示性:

?

  • 不需要重新賦值的變量,包括類屬性、局部變量。

  • 對象參數前加final,表示不允許修改引用的指向。

  • 類方法確定不允許被重寫。

    白話:

    盡量多使用final關鍵字,保證編譯器的校驗機制起作用,也體現了“契約式編程”的思想。

?

【推薦】慎用 Object 的 clone 方法來拷貝對象。

?

說明: 對象的 clone 方法默認是淺拷貝,若想實現深拷貝需要重寫 clone 方法實現屬性對象的拷貝。

?

白話: 最好是使用構造函數來重新構造對象,使用clone淺拷貝的時候,對象引用關系可能很復雜,不直觀,不好理解。

?

【推薦】類成員與方法訪問控制從嚴:

?

  • 如果不允許外部直接通過new來創建對象,那么構造方法必須是private.

  • 工具類不允許有public或default構造方法。

  • 類非static成員變量并且與子類共享,必須是protected.

  • 類非static成員變量并且僅在本類使用,必須是private.

  • 類static成員變量如果僅在本類使用,必須是private.

  • 若是static成員變量,必須考慮是否為final.

  • 類成員方法只供類內部調用,必須是private.

  • 類成員方法只對繼承類公開,那么限制為protected.

?

說明: 任何類、方法、參數、變量,嚴控訪問范圍。過寬泛的訪問范圍,不利于模塊解耦。

?

思考: 如果是一個 private 的方法,想刪除就刪除,可是一個 public 的 Service 方法,或者一個 public 的成員變量,刪除一下,不得手心冒點汗嗎?變量像自己的小孩,盡量在自己的視 線內,變量作用域太大,如果無限制的到處跑,那么你會擔心的。

?

白話:沒什么好說的,兩個詞,高內聚,低耦合,功能模塊閉包,哦,是三個詞。

?

###集合處理

?

【強制】關于 hashCode 和 equals 的處理,遵循如下規則:

?

  • 只要重寫equals,就必須重寫hashCode.

  • 因為Set存儲的是不重復的對象,依據hashCode和equals進行判斷,所以Set存儲的對象必須重寫這兩個方法。

  • 如果自定義對象做為Map的鍵,那么必須重寫hashCode和equals.

?

說明: String 重寫了 hashCode 和 equals 方法,所以我們可以非常愉快地使用 String 對象作為 key 來使用。

?

白話: Hash是個永恒的話題,大家可以看下times33和Murmurhash算法。

?

【強制】ArrayList的subList結果不可強轉成ArrayList,否則會拋出ClassCastException.

?

異常: java.util.RandomAccessSubList cannot be cast to java.util.ArrayList .

?

說明: subList 返回的是 ArrayList 的內部類 SubList,并不是 ArrayList ,而是 ArrayList 的一個視圖,對于SubList子列表的所有操作最終會反映到原列表上。

?

白話: 這種問題本來測試可以測試到,但是開發永遠都不要有依賴測試的想法,一切靠自己,當然我們的測試人員都是很靠譜的。

?

【強制】 在 subList 場景中,高度注意對原集合元素個數的修改,會導致子列表的遍歷、增 加、刪除均產生ConcurrentModificationException 異常。

?

白話: 如果一定要更改子列表,重新構造新的ArrayList,使用`public ArrayList(Collection<? extends E> c)`。

?

【強制】使用集合轉數組的方法,必須使用集合的toArray(T[] array),傳入的是類型完全 一樣的數組,大小就是 list.size()。

?

說明: 使用 toArray 帶參方法,入參分配的數組空間不夠大時,toArray 方法內部將重新分配內存空間,并返回新數組地址; 如果數組元素大于實際所需,下標為[ list.size() ]的數組元素將被置為 null,其它數組元素保持原值,因此最好將方法入參數組大小定義與集合元素個數一致。

?

正例:

?

java List<String> list = new ArrayList<String>(2); list.add("guan");list.add("bao");String[] array = new String[list.size()]; array = list.toArray(array);

?

反例: 直接使用 toArray 無參方法存在問題,此方法返回值只能是 Object[]類,若強轉其它類型數組將出現 ClassCastException 錯誤。

?

白話:搞不懂Java編譯器為什么不做優化,人用邏輯能推導的,程序一定可以自動實現。

?

【強制】使用工具類 Arrays.asList()把數組轉換成集合時,不能使用其修改集合相關的方 法,它的 add/remove/clear 方法會拋出 UnsupportedOperationException 異常。

?

說明: asList 的返回對象是一個 Arrays 內部類,并沒有實現集合的修改方法。Arrays.asList 體現的是適配器模式,只是轉換接口,后臺的數據仍是數組。

?

String[] str = new String[] { "a", "b" }; List list = Arrays.asList(str);

?

第一種情況: list.add("c"); 運行時異常。

?

第二種情況: str[0] = "gujin"; 那么list.get(0)也會隨之修改。

?

白話:如果需要對asList返回的List做更改,可以構造新的ArrayList,使用`public ArrayList(Collection<? extends E> c)`構造器。

?

【強制】泛型通配符 < extends T> 來接收返回的數據,此寫法的泛型集合不能使用add方 法,而< super T>不能使用get方法,做為接口調用賦值時易出錯。

?

說明: 擴展說一下PECS(Producer Extends Consumer Super)原則: 1)頻繁往外讀取內容的,適合用上界 Extends。 2)經常往里插入的,適合用下界 Super。

?

白話: `<extends T>`,必須是T或T的子類。

?

集合寫(add): 因為不能確定集合實例化時用的是T或T的子類,所以沒有辦法寫。例如:List<? extends Number> foo = new ArrayList<Number/Integer/Double>(),你不能add Number,因為也可能是Integer或Double的List, 同理也不能add Integer或Double,即,extends T, 不能集合add。集合讀(get): 只能讀出T類型的數據。< super T>, 必須是T或T的父類。集合寫(add): 可以add T或T的子類。集合讀(get): 不能確定從集合里讀出的是哪個類型(可能是T也可能是T的父類,或者Object),所以沒有辦法使用get。例如:List<? super Integer> foo3 = new ArrayList<Integer/Number/Object>(); 只能保證get出來是Object。

?

下面是示例,test1和test2在編譯時都有錯誤提示。

?

package com.robert.javaspec;import java.util.LinkedList; import java.util.List;/*** Created by WangMeng on 2017-04-13.* FIX ME*/ public class Main {public static void main(String[] args) {}public void test1(){List<? extends A> childofa=new LinkedList<>();B b=new B();A a=new A();childofa.add(a);childofa.add(b);A ta= childofa.get(0);}public void test2(){List<? super B> superOfb = new LinkedList<>();B b = new B();A a = new A();superOfb.add(a);superOfb.add(b);A ta = superOfb.get(0);B tb = superOfb.get(0);} }class A {@Overridepublic String toString() {return "A";} }class B extends A {@Overridepublic String toString() {return "B";} }

?

【強制】不要在 foreach 循環里進行元素的 remove/add 操作。remove 元素請使用 Iterator 方式,如果并發操作,需要對 Iterator 對象加鎖。

?

反例:

?

List<String> a = new ArrayList<String>(); a.add("1"); a.add("2"); for (String temp : a) {if ("1".equals(temp)) { a.remove(temp);} }

?

說明: 以上代碼的執行結果肯定會出乎大家的意料,那么試一下把“1”換成“2”,會是同樣的結果嗎?

?

正例:

?

Iterator<String> it = a.iterator(); while (it.hasNext()) {String temp = it.next(); if (刪除元素的條件) {it.remove();} }

?

白話:修改一定要使用Iterator。

?

反例中改成2,拋出ConcurrentModificationException,因為2是數組的結束邊界。

?

【強制】 在 JDK7 版本及以上,Comparator 要滿足如下三個條件,不然 Arrays.sort, Collections.sort 會報 IllegalArgumentException 異常。

?

說明:

?

x,y的比較結果和y,x的比較結果相反。

?

x>y,y>z,則x>z。

?

x=y,則x,z比較結果和y,z比較結果相同。

?

反例: 下例中沒有處理相等的情況,實際使用中可能會出現異常:

?

new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.getId() > o2.getId() ? 1 : -1; } }

?

白話:除非邏輯混亂,否則這些條件都能滿足。

?

【推薦】集合初始化時,盡量指定集合初始值大小。

?

說明: ArrayList盡量使用ArrayList(int initialCapacity) 初始化。

?

白話:預估數組大小,能夠提高程序效率,寫代碼的時候腦袋里面要有運行的思想。

?

想了解性能和容量評估,請參考互聯網性能與容量評估的方法論和典型案例。

?

【推薦】使用 entrySet 遍歷 Map 類集合 KV,而不是 keySet 方式進行遍歷。

?

說明: keySet 其實是遍歷了 2 次,一次是轉為 Iterator 對象,另一次是從 hashMap 中取出 key 所對應的 value。而 entrySet 只是遍歷了一次就把 key 和 value 都放到了 entry 中,效率更高。如果是 JDK8,使用 Map.foreach 方法。

?

正例: values()返回的是 V 值集合,是一個 list 集合對象;keySet()返回的是 K 值集合,是一個 Set 集合對象; entrySet()返回的是 K-V 值組合集合。

?

白話: 寫代碼其實就是在程序員腦袋里執行代碼的過程,直覺就是兩次肯定不如一次做完事更快。

?

【推薦】高度注意 Map 類集合 K/V 能不能存儲 null 值的情況,如下表格:

?

集合類KeyValueSuper說明
Hashtable不允許為 null不允許為 nullDictionary線程安全
ConcurrentHashMap不允許為 null不允許為 nullAbstractMap分段鎖技術
TreeMap不允許為 null允許為 nullAbstractMap線程不安全
HashMap允許為 null允許為 nullAbstractMap線程不安全

反例: 由于 HashMap 的干擾,很多人認為 ConcurrentHashMap 是可以置入 null 值,注意存儲 null 值時會拋出 NPE 異常。

?

白話:存儲null值場景不多,在防止緩存穿透的情況下,有的時候會緩存null key。

?

【參考】合理利用好集合的有序性(sort)和穩定性(order),避免集合的無序性(unsort)和 不穩定性(unorder)帶來的負面影響。

?

說明: 有序性是指遍歷的結果是按某種比較規則依次排列的。穩定性指集合每次遍歷的元素次 序是一定的。如:ArrayList 是 order/unsort;HashMap 是 unorder/unsort;TreeSet 是 order/sort。

?

白話:對于HashMap理論上是無序的,我做了個試驗,每次輸出都是穩定的。

?

數值:

?

HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();map.put(3, 3); map.put(1, 1); map.put(2, 2); map.put(4, 4);for (Entry<Integer, Integer> entry : map.entrySet()) {System.out.println(entry.getKey()); }

?

事實證明,每次輸出也是1、2、3、4,有序并且穩定的。

?

字符串值:

?

HashMap<String, String> map = new HashMap<String, String>();map.put("3000", "3"); map.put("1000", "1"); map.put("2000", "2"); map.put("4000", "4");for (Entry<Integer, Integer> entry : map.entrySet()) {System.out.println(entry.getKey()); }

?

事實證明,每次輸出也是4000、1000、2000、3000,無序但是穩定的。

?

與阿里專家咨詢,這里HashMap不穩定性是指rehash后輸出順序則會變化。

?

【參考】利用 Set 元素唯一的特性,可以快速對一個集合進行去重操作,避免使用 List 的 contains 方法進行遍歷、對比、去重操作。

?

白話:如果不需要精確去重,參考布隆過濾器(Bloom Filter)。

?

控制語句

?

【強制】在一個 switch 塊內,每個 case 要么通過 break/return 等來終止,要么注釋說明程序將繼續執行到哪一個 case 為止;在一個 switch 塊內,都必須包含一個 default 語句并且放在最后,即使它什么代碼也沒有。

?

白話:最好每個case都用break結束,不要組合幾個分支到一個邏輯,太不直觀。

?

【強制】在 if/else/for/while/do 語句中必須使用大括號,即使只有一行代碼,避免使用 下面的形式:if (condition) statements;

?

白話:這條有歧義,個人認為有的時候就一行語句不加也可以。

?

【推薦】推薦盡量少用 else, if-else 的方式可以改寫成:

?

if (condition) { ...return obj; } // 接著寫 else 的業務邏輯代碼;

?

說明: 如果非得使用if()…else if()…else…方式表達邏輯,【強制】請勿超過3層, 超過請使用狀態設計模式。

?

正例: 邏輯上超過 3 層的 if-else 代碼可以使用衛語句,或者狀態模式來實現。

?

白話:朋友說超過三層考慮狀態設計模式也不完全正確,大概可以理解為多層的邏輯嵌套不是好的代碼風格,需要使用對應的重構方法做出優化,而每種壞味都有對應的優化方法和步驟,以及優缺點限制條件。

?

寫程序一定要遵守紅花綠葉原則,主邏輯放在主方法中,這是紅花,子邏輯封裝成小方法調用,這是綠葉,不要把不同層次的邏輯寫在一個大方法體里,很難理解,就像綠葉把紅花擋住了,誰還能看到。舉例說明:

?

public void handleProcess() {// 骨架邏輯validate();doProcess();declareResource(); }

?

普及一下,如下類似排比句的代碼就是衛語句,以前每天都這么寫但是還真是剛剛知道這叫衛語句:)

?

public double getPayAmount() { if (isDead()) return deadPayAmount(); if (isSeparated()) return separatedPayAmount(); if (isRetired()) return retiredPayAmount(); return normalPayAmount(); }

?

不提倡的寫法:

?

public double getPayAmount() { if (isDead()) return deadPayAmount(); else if (isSeparated()) return separatedPayAmount(); else if (isRetired())return retiredPayAmount(); else return normalPayAmount(); }

?

【推薦】除常用方法(如 getXxx/isXxx)等外,不要在條件判斷中執行其它復雜的語句,將復 雜邏輯判斷的結果賦值給一個有意義的布爾變量名,以提高可讀性。

?

說明: 很多 if 語句內的邏輯相當復雜,閱讀者需要分析條件表達式的最終結果,才能明確什么 樣的條件執行什么樣的語句,那么,如果閱讀者分析邏輯表達式錯誤呢?

?

正例:

?

//偽代碼如下 boolean existed = (file.open(fileName, "w") != null) && (...) || (...); if (existed) {... }

?

反例:

?

if ((file.open(fileName, "w") != null) && (...) || (...)) { ...}

?

白話:這個反例真的經常見到,寫這個代碼的人自己不覺得這樣很難看嗎?

?

【推薦】循環體中的語句要考量性能,以下操作盡量移至循環體外處理,如定義對象、變量、
獲取數據庫連接,進行不必要的 try-catch 操作(這個 try-catch 是否可以移至循環體外)。

?

白話:切記,循環體內盡量不要獲取資源、不要處理異常。

?

【推薦】接口入參保護,這種場景常見的是用于做批量操作的接口。

?

白話:用白話說,就是控制批量參數的數量,一次不能太多,否則內存溢出。

?

【參考】方法中需要進行參數校驗的場景:

?

  • 調用頻次低的方法。

  • 執行時間開銷很大的方法,參數校驗時間幾乎可以忽略不計,但如果因為參數錯誤導致中間執行回退,或者錯誤,那得不償失。

  • 需要極高穩定性和可用性的方法。

  • 對外提供的開放接口,不管是RPC/API/HTTP接口。

  • 敏感權限入口。

    白話:

    在這個框框內,根據業務適當調整是可以的。

  • ?

    【參考】方法中不需要參數校驗的場景:

    ?

  • 極有可能被循環調用的方法,不建議對參數進行校驗。但在方法說明里必須注明外部參
    數檢查要求。

  • 底層的方法調用頻度都比較高,一般不校驗。畢竟是像純凈水過濾的最后一道,參數錯誤不太可能到底層才會暴露問題。一般 DAO 層與 Service 層都在同一個應用中,部署在同一 臺服務器中,所以 DAO 的參數校驗,可以省略。

  • 被聲明成private只會被自己代碼所調用的方法,如果能夠確定調用方法的代碼傳入參數已經做過檢查或者肯定不會有問題,此時可以不校驗參數。

    白話:

    在這個框框里,根據業務適當調整是可以的。

  • ?

    命名規約

    ?

    【強制】 代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。

    ?

    反例: _name / __name / $Object / name_ / name$ / Object$

    ?

    白話:這條不夠嚴格,普通的變量、類名、方法名必須使用駝峰式命名,最好不要使用下劃線和美元符號,否則看起來像腳本語言似得,常量可以使用下劃線,但是也不要放在常量開頭和結尾。

    ?

    【強制】 代碼中的命名嚴禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。

    ?

    說明: 正確的英文拼寫和語法可以讓閱讀者易于理解,避免歧義。注意,即使純拼音命名方式 也要避免采用。

    ?

    反例: DaZhePromotion [打折] / getPingfenByName() [評分] / int 某變量 = 3

    ?

    正例: alibaba / taobao / youku / hangzhou 等國際通用的名稱,可視同英文。

    ?

    有英文快。

    ?

    英文!英文起名,洋氣、大方、高大上…

    ?

    【強制】類名使用 UpperCamelCase 風格,必須遵從駝峰形式,但以下情形例外:(領域模型 的相關命名)DO / BO / DTO / VO等。

    ?

    正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion

    ?

    反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

    ?

    白話:約定俗成的名稱或者縮寫例外。

    ?

    【強制】方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格,必須遵從駝峰形式。

    ?

    正例: localValue / getHttpMessage() / inputUserId

    ?

    白話:約定俗稱的名稱或者縮寫例外。

    ?

    ID為簡寫,Id和ID均可。

    ?

    【強制】常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。

    ?

    正例: MAX_STOCK_COUNT

    ?

    反例: MAX_COUNT

    ?

    白話:必須全部大寫,除了字母數字只可以使用下劃線,并且不能用在開頭和結尾。

    ?

    【強制】抽象類命名使用 Abstract 或 Base 開頭;異常類命名使用 Exception 結尾;測試類命名以它要測試的類的名稱開始,以 Test 結尾。

    ?

    白話:家里放一瓶敵敵畏,上面不寫標簽,萬一喝大了、渴了、喝了、就慘了,你懂的。

    ?

    【強制】中括號是數組類型的一部分,數組定義如下:String[] args;

    ?

    反例: 使用String args[]的方式來定義。

    ?

    白話:這種語法編譯器也認,但是我們畢竟寫Java程序,而不是寫C/C++程序。這怪Java編譯器小組,一開始就不應該支持這種語法。

    ?

    【強制】POJO 類中布爾類型的變量,都不要加 is,否則部分框架解析會引起序列化錯誤。

    ?

    反例: 定義為基本數據類型Boolean isSuccess;的屬性,它的方法也是isSuccess(),RPC 框架在反向解析的時候,“以為”對應的屬性名稱是 success,導致屬性獲取不到,進而拋出異常。

    ?

    白話:一些框架使用getter和setter做序列化,有的根據屬性本身取值,帶了is前綴就找不到了,變量名不要帶be動詞,語法不對,英文補考!

    ?

    【強制】包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。包名統一使用 單數形式,但是類名如果有復數含義,類名可以使用復數形式。

    ?

    正例: 應用工具類包名為com.alibaba.open.util、類名為MessageUtils(此規則參考 spring 的框架結構)

    ?

    白話:包名大寫、帶下劃線等,不專業、難看、不高大上。

    ?

    【強制】杜絕完全不規范的縮寫,避免望文不知義。

    ?

    反例: AbstractClass“縮寫”命名成 AbsClass;condition“縮寫”命名成 condi,此類 隨意縮寫嚴重降低了代碼的可閱讀性。

    ?

    白話:不要太摳,不是太長的名字直接寫上就好,編譯器編譯優化后變量名將不存在,會編譯成相對于方法堆棧bp指針地址的相對地址,長變量名不會占用更多空間。英文中的縮寫有個慣例,去掉元音留下輔音即可,不能亂縮寫。

    ?

    【推薦】如果使用到了設計模式,建議在類名中體現出具體模式。

    ?

    說明: 將設計模式體現在名字中,有利于閱讀者快速理解架構設計思想。

    ?

    正例:

    ?

    public class OrderFactory;

    ?

    public class LoginProxy;

    ?

    public class ResourceObserver;

    ?

    白話:讓全世界都知道你會設計模式,這是個崇尚顯擺的社會。

    ?

    【推薦】接口類中的方法和屬性不要加任何修飾符號(public 也不要加),保持代碼的簡潔 性,并加上有效的 Javadoc 注釋。盡量不要在接口里定義變量,如果一定要定義變量,肯定是與接口方法相關,并且是整個應用的基礎常量。

    ?

    正例: 接口方法簽名:void f();接口基礎常量表示:String COMPANY = “alibaba”;

    ?

    反例: 接口方法定義:public abstract void f();

    ?

    說明:JDK8 中接口允許有默認實現,那么這個 default 方法,是對所有實現類都有價值的默 認實現。

    ?

    白話:脫了褲子放屁始終有點麻煩。

    ?

    接口和實現類的命名有兩套規則:

    ?

    【強制】對于 Service 和 DAO 類,基于 SOA 的理念,暴露出來的服務一定是接口,內部的實現類用 Impl 的后綴與接口區別。

    ?

    正例: CacheServiceImpl 實現 CacheService 接口。

    ?

    【推薦】 如果是形容能力的接口名稱,取對應的形容詞做接口名(通常是–able 的形式)。

    ?

    正例: AbstractTranslator 實現 Translatable。

    ?

    白話:嚴重同意!可是想想Observer和Observable,我就不說話了。

    ?

    【參考】枚舉類名建議帶上 Enum 后綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。

    ?

    說明: 枚舉其實就是特殊的常量類,且構造方法被默認強制是私有。

    ?

    正例: 枚舉名字:DealStatusEnum,成員名稱: SUCCESS / UNKOWN_REASON。

    ?

    白話:不要駝峰!記住枚舉不要駝峰!總是有好多人枚舉用駝峰。

    ?

    【參考】各層命名規約:

    ?

    • Service/DAO層方法命名規約:

    • 獲取單個對象的方法用get做前綴。

    • 獲取多個對象的方法用list做前綴。

    • 獲取統計值的方法用count做前綴。

    • 插入的方法用save(推薦)或insert做前綴。

    • 刪除的方法用remove(推薦)或delete做前綴。

    • 修改的方法用update做前綴。

    • 領域模型命名規約:

    • 數據對象:xxxDO,xxx即為數據表名。

    • 數據傳輸對象:xxxDTO,xxx為業務領域相關的名稱。

    • 展示對象:xxxVO,xxx一般為網頁名稱。

    • POJO是DO/DTO/BO/VO的統稱,禁止命名成xxxPOJO。

      白話:大家都這么認為很重要。

    ?

    常量定義

    ?

    【強制】不允許出現任何魔法值(即未經定義的常量)直接出現在代碼中。

    ?

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

    ?

    白話:這個不用說了,隨地吐痰和隨地大小便是不應該的,新加坡是要鞭刑的!

    ?

    【強制】long 或者 Long 初始賦值時,必須使用大寫的 L,不能是小寫的 l,小寫容易跟數字 1 混淆,造成誤解。

    ?

    說明: Long a = 2l; 寫的是數字的21,還是Long型的2?

    ?

    白話:看看區塊鏈中用了base58,而不是base64,秒懂什么是從用戶角度考慮產品設計!

    ?

    【推薦】不要使用一個常量類維護所有常量,應該按常量功能進行歸類,分開維護。如:緩存相關的常量放在類: CacheConsts 下; 系統配置相關的常量放在類: ConfigConsts 下。

    ?

    說明: 大而全的常量類,非得使用查找功能才能定位到修改的常量,不利于理解和維護。

    ?

    白話:盡量讓功能自閉包,標準是一個小模塊拷貝出去直接就能用,而不是缺這缺那的,是不是讀者很多時候拷貝了一套類,運行時候發現不能用,缺常量,把常量類拷貝過來,發現常量類中有很多不相關的常量,還得清理。

    ?

    【推薦】常量的復用層次有五層: 跨應用共享常量、應用內共享常量、子工程內共享常量、包內共享常量、類內共享常量。

    ?

    跨應用共享常量: 放置在二方庫中,通常是client.jar中的constant目錄下。

    ?

    應用內共享常量: 放置在一方庫的modules中的constant目錄下。

    ?

    反例: 易懂變量也要統一定義成應用內共享常量,兩位攻城師在兩個類中分別定義了表示 “是”的變量:

    ?

    類A中: public static final String YES = "yes";

    ?

    類B中: public static final String YES = "y"; A.YES.equals(B.YES),預期是 true,但實際返回為 false,導致產生線上問題。

    ?

    子工程內部共享常量: 即在當前子工程的constant目錄下。

    ?

    包內共享常量: 即在當前包下單獨的constant目錄下。

    ?

    類內共享常量: 直接在類內部private static final定義。

    ?

    白話:一方庫、二方庫、三方庫,叫法很專業,放在離自己最近的上面一個層次即可。

    ?

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

    ?

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

    ?

    白話:枚舉值需要定義延伸屬性的場景通常是要持久數據庫,或者顯示在界面上。

    ?

    格式規約

    ?

    【強制】大括號的使用約定。如果是大括號內為空,則簡潔地寫成{}即可,不需要換行; 如果 是非空代碼塊則:

    ?

    • 左大括號前不換行。

    • 左大括號后換行。

    • 右大括號前換行。

    • 右大括號后還有else等代碼則不換行;表示終止右大括號后必須換行。

      白話:

      好風格,討厭那種左大括號前換行的,看不慣。

    ?

    【強制】 左括號和后一個字符之間不出現空格; 同樣,右括號和前一個字符之間也不出現空 格。詳見第 5 條下方正例提示。

    ?

    白話:程序寫完可以用編輯器的格式化功能格式化,Eclipse中快捷鍵是shift+alt+f,筆者寫程序的時候有個習慣,每次謝了一段代碼都會按ctrl+alt+o、ctrl+alt+f、ctrl+s,相信會有相同習慣的同行。

    ?

    【強制】if/for/while/switch/do 等保留字與左右括號之間都必須加空格。

    ?

    白話:程序寫完可以用編輯器的格式化功能格式化,Eclipse中快捷鍵是shift+alt+f,筆者寫程序的時候有個習慣,每次謝了一段代碼都會按ctrl+alt+o、ctrl+alt+f、ctrl+s,相信會有相同習慣的同行。

    ?

    【強制】任何運算符左右必須加一個空格。

    ?

    說明: 運算符包括賦值運算符=、邏輯運算符&&、加減乘除符號、三目運算符等。

    ?

    白話:程序寫完可以用編輯器的格式化功能格式化,Eclipse中快捷鍵是shift+alt+f,筆者寫程序的時候有個習慣,每次謝了一段代碼都會按ctrl+alt+o、ctrl+alt+f、ctrl+s,相信會有相同習慣的同行。

    ?

    【強制】縮進采用 4 個空格,禁止使用 tab 字符。

    ?

    說明: 如果使用 tab 縮進,必須設置 1 個 tab 為 4 個空格。IDEA 設置 tab 為 4 個空格時,請勿勾選Use tab character; 而在 eclipse 中,必須勾選 insert spaces for tabs。

    ?

    正例: (涉及1-5點)

    ?

    public static void main(String[] args) {// 縮進 4 個空格String say = "hello";// 運算符的左右必須有一個空格int flag = 0;// 關鍵詞 if 與括號之間必須有一個空格,括號內的 f 與左括號,0 與右括號不需要空格 if (flag == 0) {System.out.println(say);}// 左大括號前加空格且不換行;左大括號后換行 if (flag == 1) {System.out.println("world");// 右大括號前換行,右大括號后有 else,不用換行} else { System.out.println("ok");// 在右大括號后直接結束,則必須換行} }

    ?

    白話:這樣看慣了,怎么看怎么清晰。

    ?

    【強制】單行字符數限制不超過 120 個,超出需要換行,換行時遵循如下原則:

    ?

    • 第二行相對第一行縮進 4 個空格,從第三行開始,不再繼續縮進,參考示例。

    • 運算符與下文一起換行。

    • 方法調用的點符號與下文一起換行。

    • 在多個參數超長,逗號后進行換行。

    • 在括號前不要換行,見反例。

    ?

    正例:

    ?

    StringBuffer sb = new StringBuffer(); //超過 120 個字符的情況下,換行縮進 4 個空格,并且方法前的點符號一起換行 sb.append("zi").append("xin")....append("huang")....append("huang")....append("huang");

    ?

    反例:

    ?

    StringBuffer sb = new StringBuffer(); //超過 120 個字符的情況下,不要在括號前換行 sb.append("zi").append("xin")...append("huang");//參數很多的方法調用可能超過 120 個字符,不要在逗號前換行 method(args1, args2, args3, ... , argsX);

    ?

    白話:一行代碼盡量不要寫太長,長了拆開不就得了。

    ?

    【強制】方法參數在定義和傳入時,多個參數逗號后邊必須加空格。

    ?

    正例: 下例中實參的"a", 后邊必須要有一個空格。

    ?

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

    ?

    白話:不加空格太擠了,就像人沒長開似得。

    ?

    【強制】IDE的text file encoding設置為UTF-8; IDE中文件的換行符使用Unix格式, 不要使用 windows 格式。

    ?

    白話:請不要用GB字符集,換了環境總有問題,Java程序多數跑在Linux上,當然要用Unix換行符。

    ?

    【推薦】沒有必要增加若干空格來使某一行的字符與上一行的相應字符對齊。

    ?

    正例:

    ?

    int a = 3; long b = 4L; float c = 5F; StringBuffer sb = new StringBuffer();

    ?

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

    ?

    白話:沒必要,沒必要,那樣反而不好看。

    ?

    【推薦】方法體內的執行語句組、變量的定義語句組、不同的業務邏輯之間或者不同的語義
    之間插入一個空行。相同業務邏輯和語義之間不需要插入空行。

    ?

    說明: 沒有必要插入多行空格進行隔開。

    ?

    白話:和我的習慣一樣一樣的,一段邏輯空一行。

    ?


    ---------------------
    作者:CSDN官方博客
    來源:CSDN
    原文:https://blog.csdn.net/blogdevteam/article/details/102975554
    版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
    內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

    總結

    以上是生活随笔為你收集整理的[转]白话阿里巴巴Java开发手册高级篇的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产麻豆精品精东影业av网站 | 激情综合激情五月俺也去 | 综合激情五月综合激情五月激情1 | 少妇厨房愉情理9仑片视频 | 精品乱码久久久久久久 | 亚洲成a人片在线观看无码3d | 97无码免费人妻超级碰碰夜夜 | 67194成是人免费无码 | 亚洲精品国产a久久久久久 | 久久精品国产大片免费观看 | 久久精品99久久香蕉国产色戒 | 99久久婷婷国产综合精品青草免费 | 亚洲熟妇色xxxxx亚洲 | 人妻少妇精品无码专区二区 | 女人被爽到呻吟gif动态图视看 | 国产精品亚洲一区二区三区喷水 | 曰韩少妇内射免费播放 | 国产凸凹视频一区二区 | 亚洲熟妇自偷自拍另类 | 亚洲国产成人av在线观看 | 亚洲国精产品一二二线 | 欧美黑人乱大交 | 97久久精品无码一区二区 | 激情爆乳一区二区三区 | 美女张开腿让人桶 | 亚洲国产精品无码一区二区三区 | 成人性做爰aaa片免费看 | 国产精品高潮呻吟av久久4虎 | 精品国产麻豆免费人成网站 | 国产精品久久久久无码av色戒 | 亚洲乱亚洲乱妇50p | 欧美肥老太牲交大战 | 黑人玩弄人妻中文在线 | 麻豆国产人妻欲求不满 | 国产香蕉尹人视频在线 | 国产精品无码一区二区桃花视频 | 日韩欧美群交p片內射中文 | 欧洲熟妇精品视频 | 亚洲人交乣女bbw | 色综合久久久久综合一本到桃花网 | 色偷偷人人澡人人爽人人模 | 国产绳艺sm调教室论坛 | 无码av岛国片在线播放 | 欧美freesex黑人又粗又大 | 国产精品国产自线拍免费软件 | 中文字幕人妻无码一区二区三区 | 99精品国产综合久久久久五月天 | 我要看www免费看插插视频 | 亚洲成在人网站无码天堂 | 日韩亚洲欧美精品综合 | 无遮挡国产高潮视频免费观看 | 国产午夜福利100集发布 | 亚洲精品久久久久久久久久久 | 亚洲爆乳无码专区 | 色情久久久av熟女人妻网站 | 老子影院午夜精品无码 | 老子影院午夜精品无码 | 日日天干夜夜狠狠爱 | yw尤物av无码国产在线观看 | 激情内射亚州一区二区三区爱妻 | 亚欧洲精品在线视频免费观看 | 亚洲中文无码av永久不收费 | 亚洲爆乳大丰满无码专区 | 九九久久精品国产免费看小说 | 一本久久a久久精品vr综合 | 亚洲精品午夜国产va久久成人 | 亚洲娇小与黑人巨大交 | 精品国产一区二区三区av 性色 | 老熟妇乱子伦牲交视频 | 水蜜桃色314在线观看 | 伊人久久大香线蕉av一区二区 | 国产精品久久福利网站 | 久久久成人毛片无码 | 亚洲熟妇色xxxxx欧美老妇y | 欧美 亚洲 国产 另类 | 久久综合九色综合97网 | 午夜时刻免费入口 | 色噜噜亚洲男人的天堂 | 亚洲欧美日韩综合久久久 | 中文无码精品a∨在线观看不卡 | 亚洲春色在线视频 | 亚洲中文字幕在线观看 | 丰满少妇熟乱xxxxx视频 | 精品成人av一区二区三区 | 国产精品无码一区二区三区不卡 | 人妻少妇被猛烈进入中文字幕 | 久久综合狠狠综合久久综合88 | 免费国产成人高清在线观看网站 | 最近的中文字幕在线看视频 | 国产午夜精品一区二区三区嫩草 | 色欲人妻aaaaaaa无码 | 亚洲成色在线综合网站 | 久久人人爽人人人人片 | 国产午夜福利100集发布 | 亚洲精品一区国产 | 亚洲理论电影在线观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 人妻少妇精品无码专区动漫 | 亚欧洲精品在线视频免费观看 | 亚洲精品综合五月久久小说 | 国产热a欧美热a在线视频 | 婷婷综合久久中文字幕蜜桃三电影 | 精品无人区无码乱码毛片国产 | 粉嫩少妇内射浓精videos | 亚洲中文字幕乱码av波多ji | 国产成人精品三级麻豆 | 国产女主播喷水视频在线观看 | 国产精品内射视频免费 | 久久人人爽人人爽人人片ⅴ | 中文字幕无码视频专区 | 人人妻人人澡人人爽欧美一区 | 中文字幕人成乱码熟女app | 婷婷五月综合缴情在线视频 | 亚洲综合久久一区二区 | 国产精品香蕉在线观看 | 亚拍精品一区二区三区探花 | 国产人妻精品一区二区三区不卡 | 波多野结衣av一区二区全免费观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产精品毛多多水多 | 精品人妻av区 | av无码电影一区二区三区 | 美女极度色诱视频国产 | 99精品无人区乱码1区2区3区 | 亚洲成a人片在线观看无码 | 久久久久av无码免费网 | 大乳丰满人妻中文字幕日本 | 午夜精品久久久内射近拍高清 | 狠狠色欧美亚洲狠狠色www | 丰满少妇女裸体bbw | 日日噜噜噜噜夜夜爽亚洲精品 | 蜜臀aⅴ国产精品久久久国产老师 | 色综合天天综合狠狠爱 | 麻豆精品国产精华精华液好用吗 | 亚洲va中文字幕无码久久不卡 | 久久aⅴ免费观看 | 内射老妇bbwx0c0ck | 国产午夜福利100集发布 | 久久人人97超碰a片精品 | 日本熟妇浓毛 | 台湾无码一区二区 | 日韩欧美群交p片內射中文 | 国产网红无码精品视频 | 无码国内精品人妻少妇 | 人妻插b视频一区二区三区 | 亚欧洲精品在线视频免费观看 | 性生交大片免费看女人按摩摩 | 日本大香伊一区二区三区 | 亚洲日本va午夜在线电影 | 狠狠噜狠狠狠狠丁香五月 | 久久99精品久久久久久 | 亚洲国产精品无码一区二区三区 | 久久午夜无码鲁丝片秋霞 | 国产乱子伦视频在线播放 | 久久亚洲中文字幕无码 | 在线看片无码永久免费视频 | 中国女人内谢69xxxx | 亚洲一区二区三区 | 国产艳妇av在线观看果冻传媒 | 国产乡下妇女做爰 | 国产精品久久久久无码av色戒 | 麻豆成人精品国产免费 | 亚洲综合另类小说色区 | 中文字幕乱码人妻无码久久 | 国产偷自视频区视频 | 97久久国产亚洲精品超碰热 | 成人无码视频免费播放 | 97色伦图片97综合影院 | 人妻少妇精品视频专区 | 亚洲欧美日韩成人高清在线一区 | 曰本女人与公拘交酡免费视频 | 55夜色66夜色国产精品视频 | 日韩人妻无码一区二区三区久久99 | 国产精品鲁鲁鲁 | 黑人巨大精品欧美黑寡妇 | 国产亚洲美女精品久久久2020 | 亚洲理论电影在线观看 | 色一情一乱一伦一区二区三欧美 | 久久综合给合久久狠狠狠97色 | 爽爽影院免费观看 | 无码一区二区三区在线 | 捆绑白丝粉色jk震动捧喷白浆 | 女人高潮内射99精品 | 亚洲春色在线视频 | 少妇性荡欲午夜性开放视频剧场 | 极品嫩模高潮叫床 | 国产成人一区二区三区在线观看 | 99视频精品全部免费免费观看 | 18禁黄网站男男禁片免费观看 | 久久久www成人免费毛片 | 3d动漫精品啪啪一区二区中 | 亚洲成熟女人毛毛耸耸多 | 亚洲精品一区二区三区大桥未久 | 久久人人爽人人爽人人片av高清 | 国产偷抇久久精品a片69 | 久久无码中文字幕免费影院蜜桃 | 亚洲精品国产精品乱码不卡 | 国产凸凹视频一区二区 | 麻豆成人精品国产免费 | 无码免费一区二区三区 | 精品国产一区二区三区四区 | 国产乱人无码伦av在线a | 玩弄人妻少妇500系列视频 | 一本大道伊人av久久综合 | 精品欧洲av无码一区二区三区 | 成人免费视频视频在线观看 免费 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 欧美老熟妇乱xxxxx | 九九久久精品国产免费看小说 | 内射老妇bbwx0c0ck | 亚洲一区av无码专区在线观看 | 久久综合九色综合欧美狠狠 | 红桃av一区二区三区在线无码av | 乱人伦中文视频在线观看 | 久久97精品久久久久久久不卡 | 欧美freesex黑人又粗又大 | 99精品无人区乱码1区2区3区 | 少妇性荡欲午夜性开放视频剧场 | 精品aⅴ一区二区三区 | 99久久精品国产一区二区蜜芽 | 亚洲国产成人av在线观看 | 少妇无套内谢久久久久 | 乱人伦人妻中文字幕无码久久网 | 国产精品无码成人午夜电影 | 亚洲中文字幕在线无码一区二区 | 双乳奶水饱满少妇呻吟 | 兔费看少妇性l交大片免费 | 无码毛片视频一区二区本码 | 亚洲日韩精品欧美一区二区 | 成人女人看片免费视频放人 | 人人妻人人澡人人爽欧美精品 | 一本久道高清无码视频 | 成年美女黄网站色大免费视频 | 天天爽夜夜爽夜夜爽 | 亚洲s码欧洲m码国产av | 亚洲欧美日韩综合久久久 | 无码人妻丰满熟妇区毛片18 | 欧美日韩在线亚洲综合国产人 | 亚洲欧美日韩综合久久久 | 国产精品丝袜黑色高跟鞋 | 国产精品高潮呻吟av久久 | 成人无码精品1区2区3区免费看 | 午夜精品久久久久久久 | 日韩av激情在线观看 | 亚洲国产成人av在线观看 | 两性色午夜免费视频 | 少妇激情av一区二区 | 无遮挡国产高潮视频免费观看 | 日韩人妻无码一区二区三区久久99 | 欧美日韩人成综合在线播放 | 日韩精品成人一区二区三区 | 亚洲精品国产精品乱码不卡 | 亚洲欧美国产精品久久 | av无码久久久久不卡免费网站 | 国产99久久精品一区二区 | 欧美人与动性行为视频 | 国产在热线精品视频 | 女高中生第一次破苞av | 久久久久国色av免费观看性色 | 成熟女人特级毛片www免费 | 欧美精品无码一区二区三区 | 丁香花在线影院观看在线播放 | 丰腴饱满的极品熟妇 | 牲欲强的熟妇农村老妇女视频 | 国产香蕉97碰碰久久人人 | 亚洲s色大片在线观看 | 无码av最新清无码专区吞精 | 日韩无套无码精品 | 大肉大捧一进一出视频出来呀 | 亚洲综合久久一区二区 | 国精品人妻无码一区二区三区蜜柚 | 亚洲精品综合五月久久小说 | 人人爽人人爽人人片av亚洲 | 女人被男人爽到呻吟的视频 | 兔费看少妇性l交大片免费 | 久久99国产综合精品 | 丁香啪啪综合成人亚洲 | 欧美激情一区二区三区成人 | 乱码av麻豆丝袜熟女系列 | 成 人 网 站国产免费观看 | 无码人妻少妇伦在线电影 | 99久久婷婷国产综合精品青草免费 | 精品人妻人人做人人爽夜夜爽 | 麻花豆传媒剧国产免费mv在线 | 无码人妻精品一区二区三区不卡 | 精品午夜福利在线观看 | 国产亚洲视频中文字幕97精品 | 一本大道久久东京热无码av | 中文字幕无码日韩专区 | 日韩精品无码一区二区中文字幕 | 我要看www免费看插插视频 | 中文字幕乱码人妻无码久久 | 熟妇人妻无乱码中文字幕 | 亚洲精品美女久久久久久久 | 国精品人妻无码一区二区三区蜜柚 | 中国大陆精品视频xxxx | 国产精品美女久久久久av爽李琼 | 中文字幕乱码人妻无码久久 | 美女张开腿让人桶 | 少妇高潮喷潮久久久影院 | 激情综合激情五月俺也去 | 午夜福利电影 | 亚洲一区av无码专区在线观看 | 97夜夜澡人人爽人人喊中国片 | 又粗又大又硬毛片免费看 | 99精品视频在线观看免费 | 熟妇激情内射com | 狂野欧美性猛交免费视频 | 成人aaa片一区国产精品 | 无遮挡国产高潮视频免费观看 | 午夜精品一区二区三区的区别 | 性欧美熟妇videofreesex | 国产九九九九九九九a片 | 乱人伦中文视频在线观看 | 亚洲七七久久桃花影院 | 少妇无码吹潮 | 国产精品igao视频网 | 中文无码伦av中文字幕 | 乌克兰少妇xxxx做受 | 国产三级精品三级男人的天堂 | 国产一区二区三区精品视频 | 亚洲国产高清在线观看视频 | 一本无码人妻在中文字幕免费 | 久久这里只有精品视频9 | 一本久道久久综合婷婷五月 | 男人的天堂av网站 | 亚洲国产精品毛片av不卡在线 | 人人爽人人澡人人人妻 | 中文字幕乱码中文乱码51精品 | 婷婷综合久久中文字幕蜜桃三电影 | 国产精品国产自线拍免费软件 | 亚欧洲精品在线视频免费观看 | 娇妻被黑人粗大高潮白浆 | 久久精品99久久香蕉国产色戒 | 日韩无码专区 | 亚洲熟妇自偷自拍另类 | 88国产精品欧美一区二区三区 | 激情内射亚州一区二区三区爱妻 | 丰满人妻翻云覆雨呻吟视频 | 男人的天堂2018无码 | 国产av一区二区精品久久凹凸 | 亚洲日本va中文字幕 | 日本一卡2卡3卡四卡精品网站 | 俺去俺来也www色官网 | 日本大香伊一区二区三区 | 精品 日韩 国产 欧美 视频 | 天堂亚洲2017在线观看 | 中文无码精品a∨在线观看不卡 | 国产一区二区三区四区五区加勒比 | 一本大道伊人av久久综合 | 国产亚洲tv在线观看 | 波多野结衣一区二区三区av免费 | 久久久久成人片免费观看蜜芽 | www国产亚洲精品久久网站 | 免费无码肉片在线观看 | 98国产精品综合一区二区三区 | 日日躁夜夜躁狠狠躁 | 亚洲中文字幕va福利 | 丰满少妇弄高潮了www | 欧美丰满少妇xxxx性 | 99精品国产综合久久久久五月天 | 67194成是人免费无码 | 国产亚洲人成在线播放 | 中文字幕无码人妻少妇免费 | 狠狠综合久久久久综合网 | 四虎国产精品一区二区 | 成人免费视频在线观看 | 牲欲强的熟妇农村老妇女 | 国产亚洲精品久久久久久 | 国产av一区二区精品久久凹凸 | 99精品久久毛片a片 | 又湿又紧又大又爽a视频国产 | 麻豆md0077饥渴少妇 | 成人无码精品1区2区3区免费看 | 国产成人综合美国十次 | 又大又黄又粗又爽的免费视频 | 欧美猛少妇色xxxxx | 亚洲欧美精品伊人久久 | 日韩精品乱码av一区二区 | 国产精品亚洲а∨无码播放麻豆 | 少妇高潮喷潮久久久影院 | 国内精品九九久久久精品 | 久久亚洲a片com人成 | 国产av剧情md精品麻豆 | 人妻互换免费中文字幕 | 国产av久久久久精东av | 亚洲理论电影在线观看 | 久久97精品久久久久久久不卡 | 国产两女互慰高潮视频在线观看 | 欧洲精品码一区二区三区免费看 | 水蜜桃色314在线观看 | 一区二区三区高清视频一 | 久久精品女人的天堂av | 综合网日日天干夜夜久久 | 久久久久成人精品免费播放动漫 | 久久久久成人精品免费播放动漫 | 久久成人a毛片免费观看网站 | 97资源共享在线视频 | 国产亚洲tv在线观看 | 无码一区二区三区在线 | 内射后入在线观看一区 | 黄网在线观看免费网站 | 久久99精品久久久久久动态图 | 性欧美疯狂xxxxbbbb | 亚洲欧美精品伊人久久 | 午夜精品一区二区三区在线观看 | 色窝窝无码一区二区三区色欲 | 精品国偷自产在线 | 野狼第一精品社区 | 四虎影视成人永久免费观看视频 | 日本肉体xxxx裸交 | 午夜不卡av免费 一本久久a久久精品vr综合 | 捆绑白丝粉色jk震动捧喷白浆 | 激情人妻另类人妻伦 | 国产福利视频一区二区 | 国产 精品 自在自线 | 精品厕所偷拍各类美女tp嘘嘘 | 激情内射亚州一区二区三区爱妻 | 久久99精品国产麻豆蜜芽 | 无码毛片视频一区二区本码 | 乱码av麻豆丝袜熟女系列 | 麻豆果冻传媒2021精品传媒一区下载 | 欧美精品无码一区二区三区 | 中文无码成人免费视频在线观看 | 女人被男人爽到呻吟的视频 | 亚洲欧洲中文日韩av乱码 | 亚洲国产精品一区二区第一页 | 日本大香伊一区二区三区 | 亚洲国产精品久久人人爱 | 国产成人无码a区在线观看视频app | 熟女体下毛毛黑森林 | 性做久久久久久久久 | 亚洲成av人影院在线观看 | 黄网在线观看免费网站 | 女人被男人爽到呻吟的视频 | 麻豆国产人妻欲求不满谁演的 | 亚洲精品国偷拍自产在线麻豆 | 天堂а√在线中文在线 | 国产亚洲精品久久久久久大师 | 色欲综合久久中文字幕网 | 美女张开腿让人桶 | 久久这里只有精品视频9 | 漂亮人妻洗澡被公强 日日躁 | 人人妻在人人 | 国产精品鲁鲁鲁 | 乌克兰少妇xxxx做受 | 人人妻人人藻人人爽欧美一区 | 国产免费无码一区二区视频 | 亚洲国产精品久久久天堂 | 高清国产亚洲精品自在久久 | 丁香花在线影院观看在线播放 | 日本精品人妻无码免费大全 | 久久99精品国产麻豆蜜芽 | 国产亚洲美女精品久久久2020 | 日韩人妻无码一区二区三区久久99 | 国产精品无码一区二区三区不卡 | 亚洲国产精品美女久久久久 | 国产亚洲精品久久久久久久 | 桃花色综合影院 | 亚洲 高清 成人 动漫 | 中文无码成人免费视频在线观看 | 久久久久久亚洲精品a片成人 | 无码国产激情在线观看 | 天海翼激烈高潮到腰振不止 | 亚洲色在线无码国产精品不卡 | 99久久精品国产一区二区蜜芽 | 久久精品成人欧美大片 | 日本一卡二卡不卡视频查询 | 国产 浪潮av性色四虎 | 人人澡人摸人人添 | 久久久久人妻一区精品色欧美 | 成 人 免费观看网站 | 欧美日韩精品 | 国产精品久久久久久无码 | 日本饥渴人妻欲求不满 | 最近中文2019字幕第二页 | 精品一区二区三区无码免费视频 | 久9re热视频这里只有精品 | 日日噜噜噜噜夜夜爽亚洲精品 | 日欧一片内射va在线影院 | aⅴ在线视频男人的天堂 | 国产av无码专区亚洲awww | 秋霞成人午夜鲁丝一区二区三区 | 麻豆国产人妻欲求不满谁演的 | 亚洲乱亚洲乱妇50p | 国产真实乱对白精彩久久 | 又大又黄又粗又爽的免费视频 | 亚洲综合久久一区二区 | а√天堂www在线天堂小说 | 国产精品久久久久久久影院 | 亚洲国产精品一区二区第一页 | 亚洲精品一区二区三区婷婷月 | 久久精品一区二区三区四区 | 伊人色综合久久天天小片 | 女人色极品影院 | 国产精品理论片在线观看 | 女人被爽到呻吟gif动态图视看 | 午夜精品久久久内射近拍高清 | 亚洲精品一区二区三区婷婷月 | 精品一二三区久久aaa片 | 久激情内射婷内射蜜桃人妖 | 蜜桃无码一区二区三区 | 成人免费视频在线观看 | 国产一区二区三区日韩精品 | 国内综合精品午夜久久资源 | 国产乱人伦av在线无码 | 国产成人精品久久亚洲高清不卡 | 精品偷拍一区二区三区在线看 | 少妇久久久久久人妻无码 | 国产av无码专区亚洲awww | 亚洲日韩乱码中文无码蜜桃臀网站 | 无码吃奶揉捏奶头高潮视频 | 99麻豆久久久国产精品免费 | 装睡被陌生人摸出水好爽 | 精品久久久无码中文字幕 | 日本高清一区免费中文视频 | 天堂а√在线中文在线 | 国产三级精品三级男人的天堂 | 亚洲日韩av片在线观看 | 亚洲中文字幕成人无码 | 国产人妻久久精品二区三区老狼 | 人人妻人人澡人人爽人人精品 | 国产精品va在线观看无码 | 黑人巨大精品欧美一区二区 | 中国女人内谢69xxxxxa片 | 精品无码av一区二区三区 | 久久久国产一区二区三区 | 日韩少妇白浆无码系列 | 久久久久久国产精品无码下载 | 亚洲精品中文字幕久久久久 | 无码精品国产va在线观看dvd | 东京热一精品无码av | 人妻体内射精一区二区三四 | 国内精品人妻无码久久久影院蜜桃 | 极品嫩模高潮叫床 | 无遮挡啪啪摇乳动态图 | 在线播放免费人成毛片乱码 | 中文字幕无线码 | 老司机亚洲精品影院 | 精品乱子伦一区二区三区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 日日天日日夜日日摸 | 国产激情综合五月久久 | 永久黄网站色视频免费直播 | 亚洲啪av永久无码精品放毛片 | 亚洲国精产品一二二线 | 蜜桃无码一区二区三区 | 欧美性黑人极品hd | 亚洲 高清 成人 动漫 | 久久精品国产99精品亚洲 | 荡女精品导航 | 97精品人妻一区二区三区香蕉 | 人妻无码久久精品人妻 | 又色又爽又黄的美女裸体网站 | 强伦人妻一区二区三区视频18 | 国产精品无码永久免费888 | 久久综合香蕉国产蜜臀av | 国产亚洲精品久久久ai换 | 无套内谢的新婚少妇国语播放 | 国产日产欧产精品精品app | 日本护士毛茸茸高潮 | 激情人妻另类人妻伦 | 欧美高清在线精品一区 | 久久国产36精品色熟妇 | 日本爽爽爽爽爽爽在线观看免 | 中文精品无码中文字幕无码专区 | 内射爽无广熟女亚洲 | 亚洲爆乳精品无码一区二区三区 | 欧美人与善在线com | 久久久精品国产sm最大网站 | 亚洲日韩精品欧美一区二区 | 1000部啪啪未满十八勿入下载 | 亚洲男女内射在线播放 | 丝袜 中出 制服 人妻 美腿 | 欧美精品国产综合久久 | 欧美老熟妇乱xxxxx | 精品人妻av区 | 成人一在线视频日韩国产 | 蜜臀av无码人妻精品 | 内射后入在线观看一区 | а√天堂www在线天堂小说 | 亚洲国产一区二区三区在线观看 | 又黄又爽又色的视频 | 亚洲日韩一区二区 | 午夜无码区在线观看 | 极品尤物被啪到呻吟喷水 | 一区二区传媒有限公司 | 国产精品第一国产精品 | 国产成人精品久久亚洲高清不卡 | 伊人久久大香线焦av综合影院 | 日韩亚洲欧美精品综合 | 日本一区二区三区免费播放 | 久久精品丝袜高跟鞋 | 久久综合九色综合欧美狠狠 | 中文字幕中文有码在线 | 色婷婷香蕉在线一区二区 | 精品无码成人片一区二区98 | 丰满诱人的人妻3 | 欧美放荡的少妇 | 国产成人无码区免费内射一片色欲 | 一本大道伊人av久久综合 | 久久久久国色av免费观看性色 | 波多野结衣 黑人 | 国产成人无码区免费内射一片色欲 | 欧美激情一区二区三区成人 | 久久99精品久久久久久动态图 | yw尤物av无码国产在线观看 | 中文字幕无码乱人伦 | aⅴ在线视频男人的天堂 | 成人aaa片一区国产精品 | 131美女爱做视频 | 国内少妇偷人精品视频免费 | 国产综合在线观看 | 久久久中文久久久无码 | 极品尤物被啪到呻吟喷水 | 色欲久久久天天天综合网精品 | 国模大胆一区二区三区 | 少妇性俱乐部纵欲狂欢电影 | 精品乱子伦一区二区三区 | 国产sm调教视频在线观看 | 亚洲精品成人av在线 | 永久免费精品精品永久-夜色 | 女人被男人躁得好爽免费视频 | 色综合久久中文娱乐网 | 夜夜高潮次次欢爽av女 | 色综合久久久无码网中文 | 亚洲无人区午夜福利码高清完整版 | 亚洲精品久久久久avwww潮水 | 精品熟女少妇av免费观看 | 人妻体内射精一区二区三四 | 日韩精品成人一区二区三区 | 亚洲精品欧美二区三区中文字幕 | 久久久亚洲欧洲日产国码αv | 在线播放无码字幕亚洲 | 性史性农村dvd毛片 | 小泽玛莉亚一区二区视频在线 | 国产精品a成v人在线播放 | √天堂资源地址中文在线 | 水蜜桃av无码 | 丝袜足控一区二区三区 | 国产精品人人爽人人做我的可爱 | 久精品国产欧美亚洲色aⅴ大片 | 欧美人与物videos另类 | 亚洲国产精品无码久久久久高潮 | 福利一区二区三区视频在线观看 | 国产乱人伦av在线无码 | 乌克兰少妇xxxx做受 | 中文无码成人免费视频在线观看 | 亚洲人成网站色7799 | 久久婷婷五月综合色国产香蕉 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 老司机亚洲精品影院无码 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产福利视频一区二区 | 亚洲成a人片在线观看无码3d | 十八禁真人啪啪免费网站 | 成熟女人特级毛片www免费 | 少妇人妻大乳在线视频 | 亚洲精品无码人妻无码 | 99久久婷婷国产综合精品青草免费 | 精品亚洲韩国一区二区三区 | 久久综合狠狠综合久久综合88 | 国产av一区二区精品久久凹凸 | 亚洲中文字幕久久无码 | 国产精品久久久久久亚洲毛片 | 麻豆国产人妻欲求不满 | 国产精品亚洲综合色区韩国 | 国产真人无遮挡作爱免费视频 | 老头边吃奶边弄进去呻吟 | 色欲久久久天天天综合网精品 | 天堂а√在线中文在线 | 国产精品无码永久免费888 | 国产偷抇久久精品a片69 | 中文字幕无码av激情不卡 | 天堂久久天堂av色综合 | 欧美日韩视频无码一区二区三 | 亚洲国产av精品一区二区蜜芽 | 曰韩无码二三区中文字幕 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产免费久久久久久无码 | 四虎永久在线精品免费网址 | 中文字幕人妻丝袜二区 | 国产口爆吞精在线视频 | 思思久久99热只有频精品66 | 成人aaa片一区国产精品 | 国产无套内射久久久国产 | 亚洲区小说区激情区图片区 | av小次郎收藏 | 国产绳艺sm调教室论坛 | 乱码av麻豆丝袜熟女系列 | 国产午夜亚洲精品不卡下载 | 天天躁夜夜躁狠狠是什么心态 | 又粗又大又硬又长又爽 | 少妇一晚三次一区二区三区 | 亚洲精品久久久久avwww潮水 | 18禁止看的免费污网站 | 久久久久久久久蜜桃 | 国产美女精品一区二区三区 | 97精品人妻一区二区三区香蕉 | 水蜜桃av无码 | 中文毛片无遮挡高清免费 | 少妇被黑人到高潮喷出白浆 | 女人和拘做爰正片视频 | 性色av无码免费一区二区三区 | 国产精品久久久久7777 | 久久熟妇人妻午夜寂寞影院 | 青青青手机频在线观看 | 中文久久乱码一区二区 | 人人爽人人爽人人片av亚洲 | 久久久久成人片免费观看蜜芽 | 大肉大捧一进一出视频出来呀 | 人人超人人超碰超国产 | av在线亚洲欧洲日产一区二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 中文字幕无线码免费人妻 | 亚洲成a人一区二区三区 | 好屌草这里只有精品 | 成人女人看片免费视频放人 | 国产电影无码午夜在线播放 | 夜夜影院未满十八勿进 | 国产高清不卡无码视频 | 国产福利视频一区二区 | 色五月五月丁香亚洲综合网 | 国内揄拍国内精品少妇国语 | 免费无码的av片在线观看 | 国产手机在线αⅴ片无码观看 | 亚洲国产av精品一区二区蜜芽 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲色偷偷偷综合网 | 无码国内精品人妻少妇 | 亚洲精品午夜无码电影网 | 少妇被粗大的猛进出69影院 | 亚洲一区二区三区偷拍女厕 | 东北女人啪啪对白 | 亚洲精品一区二区三区四区五区 | 黑人巨大精品欧美黑寡妇 | 国产午夜手机精彩视频 | 综合激情五月综合激情五月激情1 | 国产手机在线αⅴ片无码观看 | 亚洲精品一区三区三区在线观看 | 欧美 日韩 亚洲 在线 | 麻豆人妻少妇精品无码专区 | 香蕉久久久久久av成人 | 正在播放东北夫妻内射 | 中文字幕人妻无码一夲道 | 亚洲精品国产第一综合99久久 | 大肉大捧一进一出好爽视频 | 亚洲成a人片在线观看无码3d | 天堂亚洲免费视频 | 国产后入清纯学生妹 | 一本大道久久东京热无码av | 久久天天躁狠狠躁夜夜免费观看 | 日产精品高潮呻吟av久久 | 少妇被黑人到高潮喷出白浆 | 国产尤物精品视频 | 三级4级全黄60分钟 | 久久国产精品精品国产色婷婷 | 国产精品亚洲五月天高清 | 领导边摸边吃奶边做爽在线观看 | 男人和女人高潮免费网站 | 亚洲成在人网站无码天堂 | 领导边摸边吃奶边做爽在线观看 | 在线视频网站www色 | 久久www免费人成人片 | 内射后入在线观看一区 | 精品熟女少妇av免费观看 | 网友自拍区视频精品 | 4hu四虎永久在线观看 | 日日鲁鲁鲁夜夜爽爽狠狠 | 老熟妇仑乱视频一区二区 | 色综合久久中文娱乐网 | 欧美freesex黑人又粗又大 | 夜精品a片一区二区三区无码白浆 | 日韩亚洲欧美中文高清在线 | 一二三四在线观看免费视频 | 免费无码一区二区三区蜜桃大 | 自拍偷自拍亚洲精品10p | 精品国偷自产在线视频 | 国产精品久久久午夜夜伦鲁鲁 | 日韩欧美成人免费观看 | 西西人体www44rt大胆高清 | 少妇厨房愉情理9仑片视频 | 免费国产黄网站在线观看 | 国语精品一区二区三区 | 久久人人爽人人爽人人片ⅴ | 精品午夜福利在线观看 | 国产真实乱对白精彩久久 | 国内精品久久毛片一区二区 | 精品国产福利一区二区 | 好爽又高潮了毛片免费下载 | 国产亚av手机在线观看 | 久久久久亚洲精品中文字幕 | 久久精品无码一区二区三区 | av人摸人人人澡人人超碰下载 | 丰满肥臀大屁股熟妇激情视频 | 狠狠噜狠狠狠狠丁香五月 | 波多野结衣av一区二区全免费观看 | 久青草影院在线观看国产 | 亚洲一区二区三区在线观看网站 | 无码免费一区二区三区 | 色偷偷人人澡人人爽人人模 | 久久亚洲中文字幕无码 | 久久久久99精品成人片 | 欧美日韩在线亚洲综合国产人 | 99久久精品午夜一区二区 | 少妇高潮喷潮久久久影院 | 精品一区二区三区无码免费视频 | 久久天天躁夜夜躁狠狠 | 丰满少妇弄高潮了www | 波多野结衣av在线观看 | 欧美一区二区三区视频在线观看 | 午夜精品久久久内射近拍高清 | 99视频精品全部免费免费观看 | 精品无码国产一区二区三区av | 久久99精品国产麻豆 | 色婷婷久久一区二区三区麻豆 | 国产后入清纯学生妹 | 久久人人爽人人爽人人片ⅴ | 爽爽影院免费观看 | 欧美性生交活xxxxxdddd | 国产精品二区一区二区aⅴ污介绍 | 男人和女人高潮免费网站 | 97精品人妻一区二区三区香蕉 | 97夜夜澡人人爽人人喊中国片 | 精品一区二区三区波多野结衣 | 麻花豆传媒剧国产免费mv在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产精品怡红院永久免费 | 色综合天天综合狠狠爱 | 99麻豆久久久国产精品免费 | 55夜色66夜色国产精品视频 | 中文字幕无线码免费人妻 | 任你躁国产自任一区二区三区 | 美女扒开屁股让男人桶 | 国产两女互慰高潮视频在线观看 | 少妇性l交大片欧洲热妇乱xxx | 国产午夜无码视频在线观看 | 真人与拘做受免费视频一 | 国产亚洲人成在线播放 | 国产麻豆精品一区二区三区v视界 | 日本在线高清不卡免费播放 | 亚洲无人区午夜福利码高清完整版 | 东京热男人av天堂 | 丰满少妇弄高潮了www | 亚洲乱码中文字幕在线 | 人人妻人人澡人人爽人人精品浪潮 | 在线 国产 欧美 亚洲 天堂 | 亚洲啪av永久无码精品放毛片 | 国产亚洲精品久久久闺蜜 | 青春草在线视频免费观看 | 日韩精品成人一区二区三区 | 熟女少妇人妻中文字幕 | 女人被男人躁得好爽免费视频 | 蜜桃视频韩日免费播放 | 欧美变态另类xxxx | 久久久久亚洲精品中文字幕 | 六十路熟妇乱子伦 | 免费国产黄网站在线观看 | 国产精品嫩草久久久久 | 中文字幕日韩精品一区二区三区 | 亚洲最大成人网站 | 国产精品丝袜黑色高跟鞋 | 欧美猛少妇色xxxxx | 亚洲日韩av一区二区三区中文 | 国产suv精品一区二区五 | 久久综合给久久狠狠97色 | 亚洲伊人久久精品影院 | 国产美女精品一区二区三区 | 熟女体下毛毛黑森林 | 四虎国产精品免费久久 | 一本一道久久综合久久 | 亚洲一区二区三区无码久久 | 无遮无挡爽爽免费视频 | 奇米影视7777久久精品人人爽 | 亚洲综合无码一区二区三区 | 亚洲熟妇自偷自拍另类 | 精品人妻中文字幕有码在线 | 欧美老人巨大xxxx做受 | 天天综合网天天综合色 | 一本色道久久综合狠狠躁 | 日韩欧美成人免费观看 | 精品少妇爆乳无码av无码专区 | 色综合久久网 | 人妻少妇被猛烈进入中文字幕 | 露脸叫床粗话东北少妇 | 久精品国产欧美亚洲色aⅴ大片 | 精品一区二区不卡无码av | 激情内射日本一区二区三区 | 性欧美牲交在线视频 | 国产一区二区三区四区五区加勒比 | 久久精品女人天堂av免费观看 | 国产精品爱久久久久久久 | 日欧一片内射va在线影院 | 图片小说视频一区二区 | 久久久婷婷五月亚洲97号色 | 天天做天天爱天天爽综合网 | 国产真人无遮挡作爱免费视频 | 精品日本一区二区三区在线观看 | 日本熟妇人妻xxxxx人hd | 亚洲欧洲无卡二区视頻 | 国产手机在线αⅴ片无码观看 | 无码国模国产在线观看 | 午夜嘿嘿嘿影院 | 亚洲综合精品香蕉久久网 | 牲欲强的熟妇农村老妇女 | 国产无套粉嫩白浆在线 | 国产人成高清在线视频99最全资源 | 人人妻人人澡人人爽欧美精品 | 伊人久久大香线焦av综合影院 | 国产免费观看黄av片 | 扒开双腿吃奶呻吟做受视频 | 国产综合久久久久鬼色 | 国产亚洲欧美日韩亚洲中文色 | 国产精品美女久久久久av爽李琼 | 中文字幕乱码亚洲无线三区 | 六十路熟妇乱子伦 | 国产suv精品一区二区五 | 亚洲精品成a人在线观看 | 国产精品99爱免费视频 | 日本成熟视频免费视频 | 亚洲午夜久久久影院 | а√天堂www在线天堂小说 | 日韩精品一区二区av在线 | 色欲人妻aaaaaaa无码 | 国产亚洲人成在线播放 | 亚洲乱码日产精品bd | 亚洲精品一区二区三区大桥未久 | 亚洲爆乳无码专区 | 国产绳艺sm调教室论坛 | 久久久久久久人妻无码中文字幕爆 | 国产偷国产偷精品高清尤物 | 中文字幕无码免费久久9一区9 | 色情久久久av熟女人妻网站 | 亚洲精品久久久久久一区二区 | 亚洲精品欧美二区三区中文字幕 | 成人欧美一区二区三区黑人免费 | 久久久婷婷五月亚洲97号色 | 日产国产精品亚洲系列 | 欧美日韩一区二区综合 | 亚洲の无码国产の无码影院 | 高潮毛片无遮挡高清免费视频 | 久久久av男人的天堂 | 亚洲另类伦春色综合小说 | 东京热男人av天堂 | 四虎永久在线精品免费网址 | 亚洲精品久久久久久久久久久 | 日本一区二区三区免费播放 | 熟妇激情内射com | 欧美三级a做爰在线观看 | 国内精品九九久久久精品 | 亚洲人成网站色7799 | 中文字幕无码日韩欧毛 | 国产在线精品一区二区三区直播 | 午夜精品一区二区三区在线观看 | av无码不卡在线观看免费 | 内射老妇bbwx0c0ck | 国产国语老龄妇女a片 | 日本一区二区更新不卡 | 欧美高清在线精品一区 | 欧美人与牲动交xxxx | 天天av天天av天天透 | 国产精品无码一区二区桃花视频 | 国精产品一品二品国精品69xx | 人妻体内射精一区二区三四 | 欧美丰满少妇xxxx性 | 亚洲自偷自拍另类第1页 | 黑人巨大精品欧美一区二区 | 精品熟女少妇av免费观看 | 狠狠cao日日穞夜夜穞av | 久久久久99精品国产片 | 国产成人精品无码播放 | 熟女俱乐部五十路六十路av | 一本久道久久综合狠狠爱 | 荫蒂被男人添的好舒服爽免费视频 | 秋霞成人午夜鲁丝一区二区三区 | 国产成人无码av在线影院 | 国产激情无码一区二区app | 国产区女主播在线观看 | 久久亚洲日韩精品一区二区三区 | 国产精品美女久久久网av | 亚洲精品久久久久久一区二区 | 少妇高潮喷潮久久久影院 | 爱做久久久久久 | 亚洲国产精品一区二区第一页 | 欧美熟妇另类久久久久久不卡 | 中文精品久久久久人妻不卡 | 国产国产精品人在线视 | 国产精品无码一区二区桃花视频 | 一区二区三区乱码在线 | 欧洲 | 熟妇人妻无码xxx视频 | 欧美xxxx黑人又粗又长 | www成人国产高清内射 | 色婷婷综合激情综在线播放 | 午夜理论片yy44880影院 | 日欧一片内射va在线影院 | 欧美熟妇另类久久久久久多毛 | 日日摸天天摸爽爽狠狠97 | 国产午夜视频在线观看 | 东京无码熟妇人妻av在线网址 | 正在播放老肥熟妇露脸 | 国精品人妻无码一区二区三区蜜柚 | 国产成人无码区免费内射一片色欲 | 久久综合色之久久综合 | 国产精品a成v人在线播放 | 久久亚洲日韩精品一区二区三区 | 欧美性猛交xxxx富婆 | 亚洲日韩一区二区三区 | 日韩亚洲欧美中文高清在线 | 国产成人精品必看 | 亚洲国产av美女网站 | 成人aaa片一区国产精品 | 亚洲国精产品一二二线 | 亚洲色偷偷偷综合网 | 狠狠色欧美亚洲狠狠色www | 97无码免费人妻超级碰碰夜夜 | 精品国产乱码久久久久乱码 | 亚洲一区二区三区在线观看网站 | 国产超碰人人爽人人做人人添 | 国产人成高清在线视频99最全资源 | 西西人体www44rt大胆高清 | 日韩在线不卡免费视频一区 | 无码毛片视频一区二区本码 | 国产精品美女久久久 | 曰韩无码二三区中文字幕 | 性啪啪chinese东北女人 | 亚洲 a v无 码免 费 成 人 a v | 日本又色又爽又黄的a片18禁 | 久久无码中文字幕免费影院蜜桃 | 精品午夜福利在线观看 | 老司机亚洲精品影院 | 乱码av麻豆丝袜熟女系列 | 欧美精品在线观看 | 国产亚洲欧美日韩亚洲中文色 | 国产人妻精品午夜福利免费 | 清纯唯美经典一区二区 | 日本在线高清不卡免费播放 | 中文字幕无码视频专区 | 欧美三级不卡在线观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 日韩人妻无码中文字幕视频 | 娇妻被黑人粗大高潮白浆 | 精品久久久无码人妻字幂 | 一本精品99久久精品77 | 内射欧美老妇wbb | 国产乱人伦av在线无码 | 少妇被黑人到高潮喷出白浆 | 国产精品亚洲专区无码不卡 | 亚洲自偷自拍另类第1页 | 国产在线aaa片一区二区99 | 国产精品久久久久无码av色戒 | 未满成年国产在线观看 | 久久综合九色综合欧美狠狠 | 日本大乳高潮视频在线观看 | 成人女人看片免费视频放人 | 黑人粗大猛烈进出高潮视频 | 国产精品久久久久久无码 | 精品国产av色一区二区深夜久久 | 午夜精品一区二区三区在线观看 | 精品久久久无码中文字幕 | 狂野欧美激情性xxxx | 纯爱无遮挡h肉动漫在线播放 | 性欧美熟妇videofreesex | 日本又色又爽又黄的a片18禁 | 男女下面进入的视频免费午夜 | 7777奇米四色成人眼影 | 国产精品久久久一区二区三区 | 亚洲国产精品无码久久久久高潮 | 久久人人97超碰a片精品 | 黑人玩弄人妻中文在线 | 久青草影院在线观看国产 | 色婷婷综合中文久久一本 | 激情亚洲一区国产精品 | 99麻豆久久久国产精品免费 | 成人免费视频视频在线观看 免费 | 亚洲精品综合五月久久小说 | 色老头在线一区二区三区 | 色五月丁香五月综合五月 | 亚洲中文字幕成人无码 | 亚洲综合无码一区二区三区 | 日韩精品久久久肉伦网站 | 波多野结衣 黑人 | 欧美国产日韩久久mv | 亚洲一区二区观看播放 | 美女张开腿让人桶 | 国产成人精品久久亚洲高清不卡 | 亚无码乱人伦一区二区 | 中文精品久久久久人妻不卡 | 一本久道久久综合狠狠爱 | 精品久久久无码中文字幕 | 国产精品国产三级国产专播 | 国产成人人人97超碰超爽8 | 欧美精品免费观看二区 | 丰满少妇高潮惨叫视频 | 亚洲国产精品一区二区美利坚 | 天堂无码人妻精品一区二区三区 | 无遮无挡爽爽免费视频 | 国产热a欧美热a在线视频 | 狠狠噜狠狠狠狠丁香五月 | 久久精品人妻少妇一区二区三区 | 亚洲精品久久久久avwww潮水 | 在线播放亚洲第一字幕 | 成人一在线视频日韩国产 | 免费播放一区二区三区 | 久久亚洲国产成人精品性色 | 天堂亚洲2017在线观看 | 2019午夜福利不卡片在线 | 国产精品久久久久久无码 | 国产精品美女久久久网av | 中文字幕无码av波多野吉衣 | 强开小婷嫩苞又嫩又紧视频 | 欧美放荡的少妇 | 亚洲第一无码av无码专区 | 欧美肥老太牲交大战 | 性开放的女人aaa片 | 亚洲性无码av中文字幕 | 亚洲精品鲁一鲁一区二区三区 | 精品无码国产一区二区三区av | 国产激情综合五月久久 | 兔费看少妇性l交大片免费 | 精品久久久久久亚洲精品 | 未满小14洗澡无码视频网站 | 东京无码熟妇人妻av在线网址 | 蜜桃视频插满18在线观看 | 日产精品99久久久久久 | 国产人妻精品一区二区三区不卡 | 亚洲国产一区二区三区在线观看 | 欧美猛少妇色xxxxx | 大胆欧美熟妇xx | 青青青爽视频在线观看 | 精品无码国产一区二区三区av | 香港三级日本三级妇三级 | 水蜜桃色314在线观看 | 无码人妻精品一区二区三区下载 | 99精品久久毛片a片 | 亚洲中文无码av永久不收费 | 精品水蜜桃久久久久久久 | 俺去俺来也在线www色官网 | 人人妻人人澡人人爽欧美一区 | 免费视频欧美无人区码 | 国产精品久久国产三级国 | 风流少妇按摩来高潮 | 国产亚洲精品久久久久久国模美 | 人人妻人人澡人人爽人人精品 | 国产精品第一国产精品 | 国产午夜视频在线观看 | 无码人妻av免费一区二区三区 | 无码成人精品区在线观看 | 久久精品中文字幕一区 | 精品国产一区二区三区四区 | 国产午夜无码视频在线观看 | 日本精品久久久久中文字幕 | 丰满少妇弄高潮了www | 图片小说视频一区二区 | 国产精品久久久久7777 | 国产亚洲精品久久久ai换 | 丰满人妻精品国产99aⅴ | 亚洲色偷偷偷综合网 | 亚洲狠狠婷婷综合久久 | 亚洲国产精品久久久久久 | 日本一本二本三区免费 | 中文字幕人妻丝袜二区 | 粗大的内捧猛烈进出视频 | 清纯唯美经典一区二区 | 中文字幕人妻无码一区二区三区 | 国产高清不卡无码视频 | 欧美精品免费观看二区 | 荫蒂被男人添的好舒服爽免费视频 | √8天堂资源地址中文在线 | 亚洲精品国产品国语在线观看 | 国产偷国产偷精品高清尤物 | 国产精品二区一区二区aⅴ污介绍 | 婷婷综合久久中文字幕蜜桃三电影 | 国产电影无码午夜在线播放 | 无码午夜成人1000部免费视频 | 丰满人妻精品国产99aⅴ | 国内精品人妻无码久久久影院 | 丰满诱人的人妻3 | 成人精品视频一区二区三区尤物 | 中文字幕无码人妻少妇免费 | 激情内射亚州一区二区三区爱妻 | 久久综合九色综合欧美狠狠 | 亚洲精品午夜无码电影网 | 国产无遮挡吃胸膜奶免费看 | 亚洲欧美日韩综合久久久 | 国产女主播喷水视频在线观看 | 色婷婷香蕉在线一区二区 | 国产精品a成v人在线播放 | 国产一区二区不卡老阿姨 | 一区二区三区乱码在线 | 欧洲 | 国产肉丝袜在线观看 | 亚洲色偷偷男人的天堂 | 久久久久成人精品免费播放动漫 | 98国产精品综合一区二区三区 | 荫蒂被男人添的好舒服爽免费视频 | 欧美激情综合亚洲一二区 | 思思久久99热只有频精品66 | 国产色精品久久人妻 | 国产亚洲精品久久久久久国模美 | 亚洲欧洲中文日韩av乱码 | 久久午夜无码鲁丝片午夜精品 | 麻豆精品国产精华精华液好用吗 | 国产又粗又硬又大爽黄老大爷视 | 老熟妇仑乱视频一区二区 | 亚洲国产精品成人久久蜜臀 | 国产精品手机免费 | 无码人妻少妇伦在线电影 | 欧美喷潮久久久xxxxx | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品无码永久免费888 | 国产美女精品一区二区三区 | 久久97精品久久久久久久不卡 | 久久精品国产亚洲精品 | 国产精品鲁鲁鲁 | 女人被爽到呻吟gif动态图视看 | 男女性色大片免费网站 | 国产成人无码a区在线观看视频app | 亚洲精品一区国产 | 亚洲va中文字幕无码久久不卡 | 国产精品18久久久久久麻辣 | 国产午夜亚洲精品不卡下载 | 中文字幕人妻丝袜二区 | 日日摸夜夜摸狠狠摸婷婷 | 美女极度色诱视频国产 | 性生交片免费无码看人 | 亚洲成av人片在线观看无码不卡 | 成人精品视频一区二区三区尤物 | 乱码午夜-极国产极内射 | 2019nv天堂香蕉在线观看 | 网友自拍区视频精品 | 乌克兰少妇xxxx做受 | 国产精品高潮呻吟av久久 | 亚洲中文字幕va福利 | 狂野欧美性猛xxxx乱大交 | 国产亚洲人成在线播放 | 少妇性l交大片 | 亚洲第一网站男人都懂 | 国产绳艺sm调教室论坛 | 国产精品亚洲综合色区韩国 | 亚洲大尺度无码无码专区 | 久久综合九色综合97网 | 日产精品99久久久久久 | 正在播放东北夫妻内射 | 无码精品人妻一区二区三区av | 激情爆乳一区二区三区 | 成人亚洲精品久久久久软件 | 免费网站看v片在线18禁无码 | 国产一区二区三区精品视频 | 欧美人与动性行为视频 | aⅴ在线视频男人的天堂 | 人妻少妇精品视频专区 | 久久亚洲a片com人成 | 色诱久久久久综合网ywww | 亚洲欧美日韩国产精品一区二区 | 免费人成在线观看网站 | 久久综合狠狠综合久久综合88 | 一区二区三区高清视频一 | 亚洲国产av美女网站 | 天天躁夜夜躁狠狠是什么心态 | 熟女俱乐部五十路六十路av | 青春草在线视频免费观看 | 中文无码伦av中文字幕 | 久久综合给合久久狠狠狠97色 | 中文无码成人免费视频在线观看 | 一本久道久久综合婷婷五月 | 欧美freesex黑人又粗又大 | 国产精品对白交换视频 | 水蜜桃av无码 | 人妻尝试又大又粗久久 | 99久久精品日本一区二区免费 | 网友自拍区视频精品 | 精品久久久无码中文字幕 | 无码av岛国片在线播放 | 亚洲国产精品美女久久久久 | 欧美成人高清在线播放 | 99久久亚洲精品无码毛片 | 女人被爽到呻吟gif动态图视看 | 久久国语露脸国产精品电影 | 亚洲成在人网站无码天堂 | 国产亚洲人成a在线v网站 | 正在播放东北夫妻内射 | 欧美丰满熟妇xxxx | 国产精品福利视频导航 | 天天做天天爱天天爽综合网 | 国产亚洲欧美日韩亚洲中文色 | 大胆欧美熟妇xx | 国产精品亚洲综合色区韩国 | 午夜福利试看120秒体验区 | 国产精品对白交换视频 | 亚洲国产精品无码久久久久高潮 | 国产成人综合色在线观看网站 | 牲交欧美兽交欧美 | 一本一道久久综合久久 | 久久久久免费精品国产 | 欧美喷潮久久久xxxxx | 久久久精品国产sm最大网站 | 成人试看120秒体验区 | 风流少妇按摩来高潮 | 无码人妻久久一区二区三区不卡 | 欧美日韩精品 | 国产美女极度色诱视频www | 人妻有码中文字幕在线 | 国产成人无码av片在线观看不卡 | 两性色午夜免费视频 | 国产国语老龄妇女a片 | 亚洲午夜无码久久 | 无码人妻出轨黑人中文字幕 | 久久精品一区二区三区四区 | 欧美精品一区二区精品久久 | 伊在人天堂亚洲香蕉精品区 | 熟妇女人妻丰满少妇中文字幕 | 久久国产自偷自偷免费一区调 | 亚洲色大成网站www国产 | 九九久久精品国产免费看小说 | 日日摸夜夜摸狠狠摸婷婷 | 大地资源中文第3页 | 国产无套内射久久久国产 | 亚洲精品一区二区三区在线观看 | 亚洲人成网站免费播放 | 大屁股大乳丰满人妻 | 沈阳熟女露脸对白视频 | 亚洲男女内射在线播放 | 无码国产色欲xxxxx视频 | 久久精品一区二区三区四区 | 午夜精品一区二区三区的区别 | 2020久久超碰国产精品最新 | 成熟妇人a片免费看网站 | 日日天干夜夜狠狠爱 | 又湿又紧又大又爽a视频国产 | 无码人妻出轨黑人中文字幕 | 亚洲欧洲中文日韩av乱码 | 久久精品女人的天堂av | 国产国语老龄妇女a片 | 色 综合 欧美 亚洲 国产 | 成人无码影片精品久久久 | 大地资源网第二页免费观看 | 四虎影视成人永久免费观看视频 | 黑人玩弄人妻中文在线 | 亚洲成av人片天堂网无码】 | 18黄暴禁片在线观看 | 国产精品无码成人午夜电影 | 欧美自拍另类欧美综合图片区 | 国産精品久久久久久久 | 无码精品人妻一区二区三区av | 成人精品天堂一区二区三区 | 国产精品人人妻人人爽 | 国产成人综合美国十次 | 亚洲伊人久久精品影院 | 成人欧美一区二区三区黑人免费 | 在线a亚洲视频播放在线观看 | 成人性做爰aaa片免费看不忠 | 台湾无码一区二区 | 久久久久成人精品免费播放动漫 | 色婷婷av一区二区三区之红樱桃 | 国产av人人夜夜澡人人爽麻豆 | 国产精品成人av在线观看 | 4hu四虎永久在线观看 | 欧美激情综合亚洲一二区 | 欧美日韩一区二区综合 | 内射老妇bbwx0c0ck | www国产亚洲精品久久久日本 | 激情国产av做激情国产爱 | 精品无码一区二区三区爱欲 | 亚洲熟悉妇女xxx妇女av | 高清不卡一区二区三区 | 日本一卡2卡3卡四卡精品网站 | 少妇太爽了在线观看 | v一区无码内射国产 | 少妇性l交大片欧洲热妇乱xxx | 国产高清av在线播放 | 国产精品福利视频导航 | 亚洲午夜福利在线观看 | 日韩精品a片一区二区三区妖精 | 国产精品久久久一区二区三区 | 久久久久久亚洲精品a片成人 | 国产另类ts人妖一区二区 | 亚洲欧美中文字幕5发布 | 国产成人精品优优av | 久久国产精品偷任你爽任你 | 奇米影视888欧美在线观看 | 国产乱人伦偷精品视频 | 国产成人无码av片在线观看不卡 | 国产精品亚洲lv粉色 | 无码福利日韩神码福利片 | 丰满护士巨好爽好大乳 | 麻豆国产人妻欲求不满谁演的 | 思思久久99热只有频精品66 | 国产性生交xxxxx无码 | 老司机亚洲精品影院 | 国产精品第一国产精品 | 无码人中文字幕 | 婷婷色婷婷开心五月四房播播 | 小sao货水好多真紧h无码视频 | 国产凸凹视频一区二区 | 久久国产精品萌白酱免费 | 中文字幕av无码一区二区三区电影 | 中文字幕av日韩精品一区二区 | 成人片黄网站色大片免费观看 | 大肉大捧一进一出视频出来呀 | 亚洲无人区午夜福利码高清完整版 | 国产偷自视频区视频 | 红桃av一区二区三区在线无码av | 麻豆国产人妻欲求不满谁演的 | 无码人妻黑人中文字幕 | 精品偷自拍另类在线观看 | 麻豆国产97在线 | 欧洲 | 国产小呦泬泬99精品 | 成年美女黄网站色大免费视频 | 一本久久a久久精品vr综合 | 曰韩无码二三区中文字幕 | 东京热一精品无码av | 又大又硬又爽免费视频 | 76少妇精品导航 | 国产精品理论片在线观看 | 一本久道久久综合婷婷五月 | 疯狂三人交性欧美 | 亚洲爆乳大丰满无码专区 | 亚洲精品久久久久久一区二区 | 无码国产色欲xxxxx视频 | 日日天日日夜日日摸 | 丰满少妇熟乱xxxxx视频 | 国产又爽又黄又刺激的视频 | 欧美高清在线精品一区 | 中文字幕人妻无码一夲道 | 国产精品无码永久免费888 | 在线播放免费人成毛片乱码 | 成人免费视频一区二区 | 曰韩无码二三区中文字幕 | 国产深夜福利视频在线 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 久久久成人毛片无码 | 熟女少妇人妻中文字幕 | 国产精华av午夜在线观看 | 久久无码中文字幕免费影院蜜桃 | 久久久久免费精品国产 | 人妻无码αv中文字幕久久琪琪布 | 国产三级久久久精品麻豆三级 | 亚洲成av人在线观看网址 | 久激情内射婷内射蜜桃人妖 | 国产黄在线观看免费观看不卡 | 国产成人无码午夜视频在线观看 | 色窝窝无码一区二区三区色欲 | 国产精品99久久精品爆乳 | 亚洲а∨天堂久久精品2021 | 欧美日本免费一区二区三区 | 亚洲乱码中文字幕在线 | av无码久久久久不卡免费网站 | 久久久久免费精品国产 | 欧美大屁股xxxxhd黑色 | 亚洲国产午夜精品理论片 | 国产人妖乱国产精品人妖 | 亚洲va中文字幕无码久久不卡 | 国产偷国产偷精品高清尤物 | 精品人妻中文字幕有码在线 | 亚洲国产精品久久人人爱 | 高清无码午夜福利视频 | 国产精品自产拍在线观看 | 少妇高潮一区二区三区99 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲精品一区二区三区在线观看 | 51国偷自产一区二区三区 | 特大黑人娇小亚洲女 | 18无码粉嫩小泬无套在线观看 | 国产办公室秘书无码精品99 | 无码播放一区二区三区 | 精品国产青草久久久久福利 | 国产精品亚洲一区二区三区喷水 | 精品成在人线av无码免费看 | 扒开双腿疯狂进出爽爽爽视频 | 九九热爱视频精品 | 少妇的肉体aa片免费 | 1000部啪啪未满十八勿入下载 | 日韩欧美群交p片內射中文 | 国产卡一卡二卡三 | 少妇无码吹潮 | 久久久久久九九精品久 | 欧美35页视频在线观看 | 中国女人内谢69xxxx | 无码精品人妻一区二区三区av | 国精产品一品二品国精品69xx | 国产舌乚八伦偷品w中 | 亚洲精品综合一区二区三区在线 | 正在播放东北夫妻内射 | 亚洲综合色区中文字幕 | 精品 日韩 国产 欧美 视频 | 亚洲精品成人av在线 | 娇妻被黑人粗大高潮白浆 | 丰满人妻一区二区三区免费视频 | 久久综合狠狠综合久久综合88 | 色五月丁香五月综合五月 | 丝袜足控一区二区三区 | 成人免费视频视频在线观看 免费 | 日本熟妇浓毛 | 免费无码午夜福利片69 | 国产午夜无码精品免费看 | aa片在线观看视频在线播放 | 秋霞成人午夜鲁丝一区二区三区 | 精品国产国产综合精品 | 中文字幕av无码一区二区三区电影 | 国产无套内射久久久国产 | 天堂а√在线地址中文在线 | 免费播放一区二区三区 | 亚洲精品一区二区三区在线观看 | 久久久久免费精品国产 | 久久久精品成人免费观看 | 99麻豆久久久国产精品免费 | 久在线观看福利视频 | 夜夜躁日日躁狠狠久久av | 国内精品久久久久久中文字幕 | 亚洲无人区一区二区三区 | 波多野结衣av一区二区全免费观看 | 丰满诱人的人妻3 | 亚洲一区二区三区播放 | 亚洲成av人片在线观看无码不卡 | 中文无码伦av中文字幕 | 99久久精品午夜一区二区 | 久久精品国产精品国产精品污 | 亚洲小说春色综合另类 | 国产精品久久久久影院嫩草 | 久久99精品国产麻豆 | 无码av中文字幕免费放 | 精品乱子伦一区二区三区 | 欧美 日韩 亚洲 在线 | 乱码午夜-极国产极内射 | 99久久99久久免费精品蜜桃 | 一本加勒比波多野结衣 | 亚洲经典千人经典日产 | 3d动漫精品啪啪一区二区中 | 欧美精品无码一区二区三区 | 国产超碰人人爽人人做人人添 | 波多野结衣av一区二区全免费观看 | 免费观看的无遮挡av | av人摸人人人澡人人超碰下载 | 黑人巨大精品欧美一区二区 | 国产九九九九九九九a片 | 日本护士xxxxhd少妇 | 午夜丰满少妇性开放视频 | 国产精品无码成人午夜电影 | 国精品人妻无码一区二区三区蜜柚 | 国产成人av免费观看 | 又大又硬又爽免费视频 | 一区二区三区高清视频一 | 亚洲国产午夜精品理论片 | 无码av免费一区二区三区试看 | 在线天堂新版最新版在线8 | 美女扒开屁股让男人桶 | 精品无人区无码乱码毛片国产 | 久久无码专区国产精品s | 国内精品人妻无码久久久影院 | 欧美阿v高清资源不卡在线播放 | 午夜免费福利小电影 | yw尤物av无码国产在线观看 | 久久久精品国产sm最大网站 | 亚洲爆乳大丰满无码专区 | 精品久久久久香蕉网 | 18精品久久久无码午夜福利 | 欧美三级a做爰在线观看 | 中文无码成人免费视频在线观看 | 国产乱子伦视频在线播放 | 国产成人无码区免费内射一片色欲 | 亚洲爆乳无码专区 | 奇米影视888欧美在线观看 | 男女下面进入的视频免费午夜 | 亚洲毛片av日韩av无码 | 久久精品女人天堂av免费观看 | 久久精品国产99精品亚洲 | 欧美丰满少妇xxxx性 | 国产成人综合色在线观看网站 | 国产网红无码精品视频 | 熟女俱乐部五十路六十路av | 无码中文字幕色专区 | a片在线免费观看 | 欧美成人午夜精品久久久 | 鲁大师影院在线观看 | 精品国产aⅴ无码一区二区 | 97精品国产97久久久久久免费 | 红桃av一区二区三区在线无码av | 久久精品国产99精品亚洲 | 欧美xxxx黑人又粗又长 | 久久亚洲精品中文字幕无男同 | 麻豆人妻少妇精品无码专区 | 国产偷自视频区视频 | 国产女主播喷水视频在线观看 | aa片在线观看视频在线播放 | 天堂а√在线地址中文在线 | 久久99久久99精品中文字幕 | 特级做a爰片毛片免费69 | 欧美第一黄网免费网站 | 国产人妻精品一区二区三区不卡 | 国产美女精品一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 国产成人无码区免费内射一片色欲 | 麻豆av传媒蜜桃天美传媒 | 激情五月综合色婷婷一区二区 | 亚洲毛片av日韩av无码 | 婷婷色婷婷开心五月四房播播 | 日本xxxx色视频在线观看免费 | 国产成人无码a区在线观看视频app | 麻豆蜜桃av蜜臀av色欲av | 中文字幕乱码亚洲无线三区 | 亚洲一区二区观看播放 | 亚洲午夜无码久久 | 欧美精品免费观看二区 | 亚洲精品无码人妻无码 | 成年女人永久免费看片 | 精品国产一区二区三区四区在线看 | 熟妇人妻无乱码中文字幕 | 小鲜肉自慰网站xnxx | 性生交大片免费看女人按摩摩 | 撕开奶罩揉吮奶头视频 | 在教室伦流澡到高潮hnp视频 | 377p欧洲日本亚洲大胆 | 国产真人无遮挡作爱免费视频 | 99久久亚洲精品无码毛片 | 九九热爱视频精品 | 精品夜夜澡人妻无码av蜜桃 | 久久无码中文字幕免费影院蜜桃 | 国产成人一区二区三区在线观看 | 玩弄少妇高潮ⅹxxxyw | 亚洲热妇无码av在线播放 | 在线视频网站www色 | 青草青草久热国产精品 | 性欧美牲交在线视频 | 午夜无码人妻av大片色欲 | 青青草原综合久久大伊人精品 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产一区二区三区日韩精品 | 欧美性猛交xxxx富婆 | 久久国语露脸国产精品电影 | 久久五月精品中文字幕 | 纯爱无遮挡h肉动漫在线播放 | 国产97色在线 | 免 | 中文字幕人妻无码一区二区三区 | 激情内射亚州一区二区三区爱妻 | 无码人妻精品一区二区三区下载 | 欧美日韩久久久精品a片 | 少妇高潮一区二区三区99 | 日本一区二区三区免费播放 | 大乳丰满人妻中文字幕日本 | 亚洲无人区午夜福利码高清完整版 | 亚洲另类伦春色综合小说 | 麻豆蜜桃av蜜臀av色欲av | 精品乱子伦一区二区三区 | 丰满肥臀大屁股熟妇激情视频 | 亚洲精品一区二区三区大桥未久 | 中文字幕乱码人妻无码久久 | 亚洲人亚洲人成电影网站色 | 国产精品美女久久久久av爽李琼 | 久久综合网欧美色妞网 | 国产农村乱对白刺激视频 | 亚洲最大成人网站 | 噜噜噜亚洲色成人网站 | 丝袜美腿亚洲一区二区 | 无码福利日韩神码福利片 | 成人欧美一区二区三区 | 伊人久久大香线蕉午夜 | av无码电影一区二区三区 | 在线天堂新版最新版在线8 | 久久久久av无码免费网 | 亚洲男人av香蕉爽爽爽爽 | 国产精品无码mv在线观看 | 少妇无码一区二区二三区 | 亚洲成在人网站无码天堂 | 久精品国产欧美亚洲色aⅴ大片 | 国产免费久久久久久无码 | 国产精品高潮呻吟av久久4虎 | 在线精品亚洲一区二区 | 人妻尝试又大又粗久久 | 99久久精品午夜一区二区 | 东京一本一道一二三区 | 人妻少妇精品无码专区二区 | 无码国产色欲xxxxx视频 | 少妇性荡欲午夜性开放视频剧场 | 人人妻人人澡人人爽欧美一区 | 国产精品无码永久免费888 | 久久久久99精品国产片 | 亚洲国产av精品一区二区蜜芽 |