日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

java

这10道Java面试题!大部分的人回答不出来

發布時間:2024/4/13 java 94 豆豆
生活随笔 收集整理的這篇文章主要介紹了 这10道Java面试题!大部分的人回答不出来 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.為什么等待和通知是在 Object 類而不是 Thread 中聲明的?

2.為什么Java中不支持多重繼承?

3.為什么Java不支持運算符重載?

4.為什么 String 在 Java 中是不可變的?

5.為什么 char 數組比 Java 中的 String 更適合存儲密碼?

6.如何使用雙重檢查鎖定在 Java 中創建線程安全的單例?

7. 編寫 Java 程序時, 如何在 Java 中創建死鎖并修復它?

8.如果你的Serializable類包含一個不可序列化的成員,會發生什么?你是如何解決的?

9.為什么Java中 wait 方法需要在 synchronized 的方法中調用?

10.你能用Java覆蓋靜態方法嗎?如果我在子類中創建相同的方法是編譯時錯誤?

這是我收集的10個最棘手的Java面試問題列表。這些問題主要來自 Java 核心部分 ,不涉及 Java EE 相關問題。你可能知道這些棘手的 Java 問題的答案,或者覺得這些不足以挑戰你的 Java 知識,但這些問題都是容易在各種 Java 面試中被問到的,而且包括我的朋友和同事在內的許多程序員都覺得很難回答。

1.為什么等待和通知是在 Object 類而不是 Thread 中聲明的?

一個棘手的 Java 問題,如果 Java編程語言不是你設計的,你怎么能回答這個問題呢。Java編程的常識和深入了解有助于回答這種棘手的 Java 核心方面的面試問題。

為什么 wait,notify 和 notifyAll 是在 Object 類中定義的而不是在 Thread 類中定義

這是有名的 Java 面試問題,招2~4年經驗的到高級 Java 開發人員面試都可能碰到。

這個問題的好在它能反映了面試者對等待通知機制的了解, 以及他對此主題的理解是否明確。就像為什么 Java 中不支持多繼承或者為什么 String 在 Java 中是 final 的問題一樣,這個問題也可能有多個答案。

為什么在 Object 類中定義 wait 和 notify 方法,每個人都能說出一些理由。從我的面試經驗來看, wait 和 nofity 仍然是大多數Java 程序員最困惑的,特別是2到3年的開發人員,如果他們要求使用 wait 和 notify, 他們會很困惑。因此,如果你去參加 Java 面試,請確保對 wait 和 notify 機制有充分的了解,并且可以輕松地使用 wait 來編寫代碼,并通過生產者-消費者問題或實現阻塞隊列等了解通知的機制。

為什么等待和通知需要從同步塊或方法中調用, 以及 Java 中的 wait,sleep 和 yield 方法之間的差異,如果你還沒有讀過,你會覺得有趣。為何 wait,notify 和 notifyAll 屬于 Object 類? 為什么它們不應該在 Thread 類中? 以下是我認為有意義的一些想法:

  • 1) wait 和 notify 不僅僅是普通方法或同步工具,更重要的是它們是 Java 中兩個線程之間的通信機制。對語言設計者而言, 如果不能通過 Java 關鍵字(例如 synchronized)實現通信此機制,同時又要確保這個機制對每個對象可用, 那么 Object 類則是的正確聲明位置。記住同步和等待通知是兩個不同的領域,不要把它們看成是相同的或相關的。同步是提供互斥并確保 Java 類的線程安全,而 wait 和 notify 是兩個線程之間的通信機制。
  • 2) 每個對象都可上鎖,這是在 Object 類而不是 Thread 類中聲明 wait 和 notify 的另一個原因。
  • 3) 在 Java 中為了進入代碼的臨界區,線程需要鎖定并等待鎖定,他們不知道哪些線程持有鎖,而只是知道鎖被某個線程持有, 并且他們應該等待取得鎖, 而不是去了解哪個線程在同步塊內,并請求它們釋放鎖定。
  • 4) Java 是基于 Hoare 的監視器的思想(http://en.wikipedia.org/wiki/…。在Java中,所有對象都有一個監視器。

線程在監視器上等待,為執行等待,我們需要2個參數:

  • 一個線程
  • 一個監視器(任何對象)

在 Java 設計中,線程不能被指定,它總是運行當前代碼的線程。但是,我們可以指定監視器(這是我們稱之為等待的對象)。這是一個很好的設計,因為如果我們可以讓任何其他線程在所需的監視器上等待,這將導致“入侵”,導致在設計并發程序時會遇到困難。請記住,在 Java 中,所有在另一個線程的執行中侵入的操作都被棄用了(例如 stop 方法)。

?

2.為什么Java中不支持多重繼承?

我發現這個 Java 核心問題很難回答,因為你的答案可能不會讓面試官滿意,在大多數情況下,面試官正在尋找答案中的關鍵點,如果你提到這些關鍵點,面試官會很高興。在 Java 中回答這種棘手問題的關鍵是準備好相關主題, 以應對后續的各種可能的問題。

這是非常經典的問題,與為什么 String 在 Java 中是不可變的很類似; 這兩個問題之間的相似之處在于它們主要是由 Java 創作者的設計決策使然。

為什么Java不支持多重繼承, 可以考慮以下兩點:

  • 1)第一個原因是圍繞鉆石形繼承問題產生的歧義,考慮一個類 A 有 foo() 方法, 然后 B 和 C 派生自 A, 并且有自己的 foo() 實現,現在 D 類使用多個繼承派生自 B 和C,如果我們只引用 foo(), 編譯器將無法決定它應該調用哪個 foo()。這也稱為 Diamond 問題,因為這個繼承方案的結構類似于菱形,見下圖:
A foo()/ / foo() B C foo()//D foo()
  • 即使我們刪除鉆石的頂部 A 類并允許多重繼承,我們也將看到這個問題含糊性的一面。如果你把這個理由告訴面試官,他會問為什么 C++ 可以支持多重繼承而 Java不行。嗯,在這種情況下,我會試著向他解釋我下面給出的第二個原因,它不是因為技術難度, 而是更多的可維護和更清晰的設計是驅動因素, 雖然這只能由 Java 言語設計師確認,我們只是推測。維基百科鏈接有一些很好的解釋,說明在使用多重繼承時,由于鉆石問題,不同的語言地址問題是如何產生的。
  • 2)對我來說第二個也是更有說服力的理由是,多重繼承確實使設計復雜化并在轉換、構造函數鏈接等過程中產生問題。假設你需要多重繼承的情況并不多,簡單起見,明智的決定是省略它。此外,Java 可以通過使用接口支持單繼承來避免這種歧義。由于接口只有方法聲明而且沒有提供任何實現,因此只有一個特定方法的實現,因此不會有任何歧義。

3.為什么Java不支持運算符重載?

另一個類似棘手的Java問題。為什么 C++ 支持運算符重載而 Java 不支持? 有人可能會說+運算符在 Java 中已被重載用于字符串連接,不要被這些論據所欺騙。

與 C++ 不同,Java 不支持運算符重載。Java 不能為程序員提供自由的標準算術運算符重載,例如+, - ,*和/等。如果你以前用過 C++,那么 Java 與 C++ 相比少了很多功能,例如 Java 不支持多重繼承,Java中沒有指針,Java中沒有引用傳遞。另一個類似的問題是關于 Java 通過引用傳遞,這主要表現為 Java 是通過值還是引用傳參。雖然我不知道背后的真正原因,但我認為以下說法有些道理,為什么 Java 不支持運算符重載。

  • 1)簡單性和清晰性。清晰性是Java設計者的目標之一。設計者不是只想復制語言,而是希望擁有一種清晰,真正面向對象的語言。添加運算符重載比沒有它肯定會使設計更復雜,并且它可能導致更復雜的編譯器, 或減慢 JVM,因為它需要做額外的工作來識別運算符的實際含義,并減少優化的機會, 以保證 Java 中運算符的行為。
  • 2)避免編程錯誤。Java 不允許用戶定義的運算符重載,因為如果允許程序員進行運算符重載,將為同一運算符賦予多種含義,這將使任何開發人員的學習曲線變得陡峭,事情變得更加混亂。據觀察,當語言支持運算符重載時,編程錯誤會增加,從而增加了開發和交付時間。由于 Java 和 JVM 已經承擔了大多數開發人員的責任,如在通過提供垃圾收集器進行內存管理時,因為這個功能增加污染代碼的機會, 成為編程錯誤之源, 因此沒有多大意義。
  • 3)JVM復雜性。從JVM的角度來看,支持運算符重載使問題變得更加困難。通過更直觀,更干凈的方式使用方法重載也能實現同樣的事情,因此不支持 Java 中的運算符重載是有意義的。與相對簡單的 JVM 相比,復雜的 JVM 可能導致 JVM 更慢,并為保證在 Java 中運算符行為的確定性從而減少了優化代碼的機會。
  • 4)讓開發工具處理更容易。這是在 Java 中不支持運算符重載的另一個好處。省略運算符重載使語言更容易處理,這反過來又更容易開發處理語言的工具,例如 IDE 或重構工具。Java 中的重構工具遠勝于 C++。

4.為什么 String 在 Java 中是不可變的?

我最喜歡的 Java 面試問題,很棘手,但同時也非常有用。一些面試者也常問這個問題,為什么 String 在 Java 中是 final 的。

字符串在 Java 中是不可變的,因為 String 對象緩存在 String 池中。由于緩存的字符串在多個客戶之間共享,因此始終存在風險,其中一個客戶的操作會影響所有其他客戶。例如,如果一段代碼將 String “Test” 的值更改為 “TEST”,則所有其他客戶也將看到該值。由于 String 對象的緩存性能是很重要的一方面,因此通過使 String 類不可變來避免這種風險。

同時,String 是 final 的,因此沒有人可以通過擴展和覆蓋行為來破壞 String 類的不變性、緩存、散列值的計算等。String 類不可變的另一個原因可能是由于 HashMap。

由于把字符串作為 HashMap 鍵很受歡迎。對于鍵值來說,重要的是它們是不可變的,以便用它們檢索存儲在 HashMap 中的值對象。由于 HashMap 的工作原理是散列,因此需要具有相同的值才能正常運行。如果在插入后修改了 String 的內容,可變的 String將在插入和檢索時生成兩個不同的哈希碼,可能會丟失 Map 中的值對象。

如果你是印度板球迷,你可能能夠與我的下一句話聯系起來。字符串是Java的 VVS Laxman,即非常特殊的類。我還沒有看到一個沒有使用 String 編寫的 Java 程序。這就是為什么對 String 的充分理解對于 Java 開發人員來說非常重要。

String 作為數據類型,傳輸對象和中間人角色的重要性和流行性也使這個問題在 Java 面試中很常見。

為什么 String 在 Java 中是不可變的是 Java 中最常被問到的字符串訪問問題之一,它首先討論了什么是 String,Java 中的 String 如何與 C 和 C++ 中的 String 不同,然后轉向在Java中什么是不可變對象,不可變對象有什么好處,為什么要使用它們以及應該使用哪些場景。這個問題有時也會問:“為什么 String 在 Java 中是 final 的”。在類似的說明中,如果你正在準備Java 面試,我建議你看看Java編程面試公開書,這是高級和中級Java程序員的優秀資源。它包含來自所有重要 Java 主題的問題,包括多線程,集合,GC,JVM內部以及 Spring和 Hibernate 框架等。

正如我所說,這個問題可能有很多可能的答案,而 String 類的唯一設計者可以放心地回答它。我在 Joshua Bloch 的 Effective Java 書中期待一些線索,但他也沒有提到它。我認為以下幾點解釋了為什么 String 類在 Java 中是不可變的或 final 的:

  • 1)想象字符串池沒有使字符串不可變,它根本不可能,因為在字符串池的情況下,一個字符串對象/文字,例如 “Test” 已被許多參考變量引用,因此如果其中任何一個更改了值,其他參數將自動受到影響,即假設
String A="Test"; String B="Test";

現在字符串 B 調用 "Test".toUpperCase(), 將同一個對象改為“TEST”,所以 A 也是 “TEST”,這不是期望的結果。

下圖顯示了如何在堆內存和字符串池中創建字符串。

?

  • 2)字符串已被廣泛用作許多 Java 類的參數,例如,為了打開網絡連接,你可以將主機名和端口號作為字符串傳遞,你可以將數據庫 URL 作為字符串傳遞, 以打開數據庫連接,你可以通過將文件名作為參數傳遞給 File I/O 類來打開 Java 中的任何文件。如果 String 不是不可變的,這將導致嚴重的安全威脅,我的意思是有人可以訪問他有權授權的任何文件,然后可以故意或意外地更改文件名并獲得對該文件的訪問權限。由于不變性,你無需擔心這種威脅。這個原因也說明了,為什么 String 在 Java 中是最終的,通過使java.lang.String final,Java設計者確保沒有人覆蓋 String 類的任何行為。
  • 3)由于 String 是不可變的,它可以安全地共享許多線程,這對于多線程編程非常重要. 并且避免了 Java 中的同步問題,不變性也使得String 實例在 Java 中是線程安全的,這意味著你不需要從外部同步 String 操作。關于 String 的另一個要點是由截取字符串 SubString 引起的內存泄漏,這不是與線程相關的問題,但也是需要注意的。
  • 4)為什么 String 在 Java 中是不可變的另一個原因是允許 String 緩存其哈希碼,Java 中的不可變 String 緩存其哈希碼,并且不會在每次調用 String 的 hashcode 方法時重新計算,這使得它在 Java 中的 HashMap 中使用的 HashMap 鍵非???。簡而言之,因為 String 是不可變的,所以沒有人可以在創建后更改其內容,這保證了 String 的 hashCode 在多次調用時是相同的。
  • 5)String 不可變的絕對最重要的原因是它被類加載機制使用,因此具有深刻和基本的安全考慮。如果 String 是可變的,加載“java.io.Writer” 的請求可能已被更改為加載 “mil.vogoon.DiskErasingWriter”. 安全性和字符串池是使字符串不可變的主要原因。順便說一句,上面的理由很好回答另一個Java面試問題: “為什么String在Java中是最終的”。要想是不可變的,你必須是最終的,這樣你的子類不會破壞不變性。你怎么看?

5.為什么 char 數組比 Java 中的 String 更適合存儲密碼?

另一個基于 String 的棘手 Java 問題,相信我只有很少的 Java 程序員可以正確回答這個問題。這是一個真正艱難的核心Java面試問題,并且需要對 String 的扎實知識才能回答這個問題。

這是最近在 Java 面試中向我的一位朋友詢問的問題。他正在接受技術主管職位的面試,并且有超過6年的經驗。如果你還沒有遇到過這種情況,那么字符數組和字符串可以用來存儲文本數據,但是選擇一個而不是另一個很難。但正如我的朋友所說,任何與 String相關的問題都必須對字符串的特殊屬性有一些線索,比如不變性,他用它來說服訪提問的人。在這里,我們將探討為什么你應該使用char[]存儲密碼而不是String的一些原因。

字符串:

  • 1)由于字符串在 Java 中是不可變的,如果你將密碼存儲為純文本,它將在內存中可用,直到垃圾收集器清除它. 并且為了可重用性,會存在 String在字符串池中, 它很可能會保留在內存中持續很長時間,從而構成安全威脅。
  • 由于任何有權訪問內存轉儲的人都可以以明文形式找到密碼,這是另一個原因,你應該始終使用加密密碼而不是純文本。由于字符串是不可變的,所以不能更改字符串的內容,因為任何更改都會產生新的字符串,而如果你使用char[],你就可以將所有元素設置為空白或零。因此,在字符數組中存儲密碼可以明顯降低竊取密碼的安全風險。
  • 2)Java 本身建議使用 JPasswordField 的 getPassword()方法,該方法返回一個 char[] 和不推薦使用的getTex()方法,該方法以明文形式返回密碼,由于安全原因。應遵循 Java 團隊的建議, 堅持標準而不是反對它。
  • 3)使用 String 時,總是存在在日志文件或控制臺中打印純文本的風險,但如果使用 Array,則不會打印數組的內容而是打印其內存位置。雖然不是一個真正的原因,但仍然有道理。
String strPassword =“Unknown”;char [] charPassword = new char [] {'U','n','k','w','o','n'};System.out.println(“字符密碼:”+ strPassword);System.out.println(“字符密碼:”+ charPassword);

輸出

字符串密碼:Unknown

字符密碼:[C @110b053

我還建議使用散列或加密的密碼而不是純文本,并在驗證完成后立即從內存中清除它。因此,在Java中,用字符數組用存儲密碼比字符串是更好的選擇。雖然僅使用char[]還不夠,還你需要擦除內容才能更安全。

6.如何使用雙重檢查鎖定在 Java 中創建線程安全的單例?

艱難的核心 Java 面試問題.這個 Java 問題也常被問: 什么是線程安全的單例,你怎么創建它。好吧,在Java 5之前的版本, 使用雙重檢查鎖定創建單例 Singleton 時,如果多個線程試圖同時創建 Singleton 實例,則可能有多個 Singleton 實例被創建。從 Java 5 開始,使用 Enum 創建線程安全的Singleton很容易。但如果面試官堅持雙重檢查鎖定,那么你必須為他們編寫代碼。記得使用volatile變量。

1.為什么枚舉單例在 Java 中更好

枚舉單例是使用一個實例在 Java 中實現單例模式的新方法。雖然Java中的單例模式存在很長時間,但枚舉單例是相對較新的概念,在引入Enum作為關鍵字和功能之后,從Java5開始在實踐中。本文與之前關于 Singleton 的內容有些相關, 其中討論了有關 Singleton 模式的面試中的常見問題, 以及 10 個 Java 枚舉示例, 其中我們看到了如何通用枚舉可以。這篇文章是關于為什么我們應該使用Eeame作為Java中的單例,它比傳統的單例方法相比有什么好處等等。

2.Java 枚舉和單例模式

Java 中的枚舉單例模式是使用枚舉在 Java 中實現單例模式。單例模式在 Java 中早有應用, 但使用枚舉類型創建單例模式時間卻不長. 如果感興趣, 你可以了解下構建者設計模式和裝飾器設計模式。

3.枚舉單例易于書寫

這是迄今為止最大的優勢,如果你在Java 5之前一直在編寫單例, 你知道, 即使雙檢查鎖定, 你仍可以有多個實例。雖然這個問題通過 Java 內存模型的改進已經解決了, 從 Java 5 開始的 volatile 類型變量提供了保證, 但是對于許多初學者來說, 編寫起來仍然很棘手。與同步雙檢查鎖定相比,枚舉單例實在是太簡單了。如果你不相信, 那就比較一下下面的傳統雙檢查鎖定單例和枚舉單例的代碼:

4.在 Java 中使用枚舉的單例

這是我們通常聲明枚舉的單例的方式,它可能包含實例變量和實例方法,但為了簡單起見,我沒有使用任何實例方法,只是要注意,如果你使用的實例方法且該方法能改變對象的狀態的話, 則需要確保該方法的線程安全。默認情況下,創建枚舉實例是線程安全的,但 Enum 上的任何其他方法是否線程安全都是程序員的責任。

/** * 使用 Java 枚舉的單例模式示例 */ public enum EasySingleton{INSTANCE; }

你可以通過EasySingleton.INSTANCE來處理它,這比在單例上調用getInstance()方法容易得多。

5.具有雙檢查鎖定的單例示例

下面的代碼是單例模式中雙重檢查鎖定的示例,此處的 getInstance() 方法檢查兩次,以查看 INSTANCE 是否為空,這就是為什么它被稱為雙檢查鎖定模式,請記住,雙檢查鎖定是代理之前Java 5,但Java5內存模型中易失變量的干擾,它應該工作完美。

/** * 單例模式示例,雙重鎖定檢查 */ public class DoubleCheckedLockingSingleton{private volatile DoubleCheckedLockingSingleton INSTANCE;private DoubleCheckedLockingSingleton(){}public DoubleCheckedLockingSingleton getInstance(){if(INSTANCE == null){synchronized(DoubleCheckedLockingSingleton.class){//double checking Singleton instanceif(INSTANCE == null){INSTANCE = new DoubleCheckedLockingSingleton();}}}return INSTANCE;} }

你可以調用DoubleCheckedLockingSingleton.getInstance() 來獲取此單例類的訪問權限。

現在,只需查看創建延遲加載的線程安全的 Singleton 所需的代碼量。使用枚舉單例模式, 你可以在一行中具有該模式, 因為創建枚舉實例是線程安全的, 并且由 JVM 進行。

人們可能會爭辯說,有更好的方法來編寫 Singleton 而不是雙檢查鎖定方法, 但每種方法都有自己的優點和缺點, 就像我最喜歡在類加載時創建的靜態字段 Singleton, 如下面所示, 但請記住, 這不是一個延遲加載單例:

6.單例模式用靜態工廠方法

這是我最喜歡的在 Java 中影響 Singleton 模式的方法之一,因為 Singleton 實例是靜態的,并且最后一個變量在類首次加載到內存時初始化,因此實例的創建本質上是線程安全的。

/** * 單例模式示例與靜態工廠方法 */ public class Singleton{//initailzed during class loadingprivate static final Singleton INSTANCE = new Singleton();//to prevent creating another instance of Singletonprivate Singleton(){}public static Singleton getSingleton(){return INSTANCE;} }

你可以調用 Singleton.getSingleton() 來獲取此類的訪問權限。

1) 枚舉單例自行處理序列化

傳統單例的另一個問題是,一旦實現可序列化接口,它們就不再是 Singleton, 因為 readObject() 方法總是返回一個新實例, 就像 Java 中的構造函數一樣。通過使用 readResolve() 方法, 通過在以下示例中替換 Singeton 來避免這種情況:

//readResolve to prevent another instance of Singleton private Object readResolve(){return INSTANCE; }

如果 Singleton 類保持內部狀態, 這將變得更加復雜, 因為你需要標記為 transient(不被序列化),但使用枚舉單例, 序列化由 JVM 進行。

2) 創建枚舉實例是線程安全的

如第 1 點所述,因為 Enum 實例的創建在默認情況下是線程安全的, 你無需擔心是否要做雙重檢查鎖定。

總之, 在保證序列化和線程安全的情況下,使用兩行代碼枚舉單例模式是在 Java 5 以后的世界中創建 Singleton 的最佳方式。你仍然可以使用其他流行的方法, 如你覺得更好, 歡迎討論。

7. 編寫 Java 程序時, 如何在 Java 中創建死鎖并修復它?

經典但核心Java面試問題之一。

如果你沒有參與過多線程并發 Java 應用程序的編碼,你可能會失敗。

1. 如何避免 Java 線程死鎖?

如何避免 Java 中的死鎖?是 Java 面試的熱門問題之一, 也是多線程的編程中的重口味之一, 主要在招高級程序員時容易被問到, 且有很多后續問題。盡管問題看起來非常基本, 但大多數 Java 開發人員一旦你開始深入, 就會陷入困境。

2.面試問題總是以“什么是死鎖?”開始

當兩個或多個線程在等待彼此釋放所需的資源(鎖定)并陷入無限等待即是死鎖。它僅在多任務或多線程的情況下發生。

3.如何檢測 Java 中的死鎖?

雖然這可以有很多答案, 但我的版本是首先我會看看代碼, 如果我看到一個嵌套的同步塊,或從一個同步的方法調用其他同步方法, 或試圖在不同的對象上獲取鎖, 如果開發人員不是非常小心,就很容易造成死鎖。

另一種方法是在運行應用程序時實際鎖定時找到它, 嘗試采取線程轉儲,在 Linux 中,你可以通過kill -3命令執行此操作, 這將打印應用程序日志文件中所有線程的狀態, 并且你可以看到哪個線程被鎖定在哪個線程對象上。

你可以使用 fastthread.io 網站等工具分析該線程轉儲, 這些工具允許你上載線程轉儲并對其進行分析。

另一種方法是使用 jConsole 或 VisualVM, 它將顯示哪些線程被鎖定以及哪些對象被鎖定。

如果你有興趣了解故障排除工具和分析線程轉儲的過程, 我建議你看看 Uriah Levy 在多元視覺(PluraIsight)上《分析 Java 線程轉儲》課程。旨在詳細了解 Java 線程轉儲, 并熟悉其他流行的高級故障排除工具。

4.編寫一個將導致死鎖的Java程序?

一旦你回答了前面的問題,他們可能會要求你編寫代碼,這將導致Java死鎖。

這是我的版本之一

/*** Java 程序通過強制循環等待來創建死鎖。***/ public class DeadLockDemo {/** 此方法請求兩個鎖,第一個字符串,然后整數*/public void method1() {synchronized (String.class) {System.out.println("Aquired lock on String.class object");synchronized (Integer.class) {System.out.println("Aquired lock on Integer.class object");}}}/** 此方法也請求相同的兩個鎖,但完全* 相反的順序,即首先整數,然后字符串。* 如果一個線程持有字符串鎖,則這會產生潛在的死鎖* 和其他持有整數鎖,他們等待對方,永遠。*/public void method2() {synchronized (Integer.class) {System.out.println("Aquired lock on Integer.class object");synchronized (String.class) {System.out.println("Aquired lock on String.class object");}}} }

?

如果 method1() 和 method2() 都由兩個或多個線程調用,則存在死鎖的可能性, 因為如果線程 1 在執行 method1() 時在 Sting 對象上獲取鎖, 線程 2 在執行 method2() 時在 Integer 對象上獲取鎖, 等待彼此釋放 Integer 和 String 上的鎖以繼續進行一步, 但這永遠不會發生。

?

此圖精確演示了我們的程序, 其中一個線程在一個對象上持有鎖, 并等待其他線程持有的其他對象鎖。

你可以看到, Thread1 需要 Thread2 持有的 Object2 上的鎖,而 Thread2 希望獲得 Thread1 持有的 Object1 上的鎖。由于沒有線程愿意放棄, 因此存在死鎖, Java 程序被卡住。

其理念是, 你應該知道使用常見并發模式的正確方法, 如果你不熟悉這些模式,那么 Jose Paumard 《應用于并發和多線程的常見 Java 模式》是學習的好起點。

5.如何避免Java中的死鎖?

現在面試官來到最后一部分, 在我看來, 最重要的部分之一; 如何修復代碼中的死鎖?或如何避免Java中的死鎖?

如果你仔細查看了上面的代碼,那么你可能已經發現死鎖的真正原因不是多個線程, 而是它們請求鎖的方式, 如果你提供有序訪問, 則問題將得到解決。

下面是我的修復版本,它通過避免循環等待,而避免死鎖, 而不需要搶占, 這是需要死鎖的四個條件之一。

public class DeadLockFixed {/*** 兩種方法現在都以相同的順序請求鎖,首先采用整數,然后是 String。* 你也可以做反向,例如,第一個字符串,然后整數,* 只要兩種方法都請求鎖定,兩者都能解決問題* 順序一致。*/public void method1() {synchronized (Integer.class) {System.out.println("Aquired lock on Integer.class object");synchronized (String.class) {System.out.println("Aquired lock on String.class object");}}}public void method2() {synchronized (Integer.class) {System.out.println("Aquired lock on Integer.class object");synchronized (String.class) {System.out.println("Aquired lock on String.class object");}}} }

?

現在沒有任何死鎖,因為兩種方法都按相同的順序訪問 Integer 和 String 類文本上的鎖。因此,如果線程 A 在 Integer 對象上獲取鎖, 則線程 B 不會繼續, 直到線程 A 釋放 Integer 鎖, 即使線程 B 持有 String 鎖, 線程 A 也不會被阻止, 因為現在線程 B 不會期望線程 A 釋放 Integer 鎖以繼續。

8.如果你的Serializable類包含一個不可序列化的成員,會發生什么?你是如何解決的?

任何序列化該類的嘗試都會因NotSerializableException而失敗,但這可以通過在 Java中 為 static 設置瞬態(trancient)變量來輕松解決。

1.Java 序列化相關的常見問題

Java 序列化是一個重要概念, 但它很少用作持久性解決方案, 開發人員大多忽略了 Java 序列化 API。根據我的經驗, Java 序列化在任何 Java核心內容面試中都是一個相當重要的話題, 在幾乎所有的網面試中, 我都遇到過一兩個 Java 序列化問題, 我看過一次面試, 在問幾個關于序列化的問題之后候選人開始感到不自在, 因為缺乏這方面的經驗。他們不知道如何在 Java 中序列化對象, 或者他們不熟悉任何 Java 示例來解釋序列化, 忘記了諸如序列化在 Java 中如何工作, 什么是標記接口, 標記接口的目的是什么, 瞬態變量和可變變量之間的差異, 可序列化接口具有多少種方法, 在 Java 中,Serializable 和 Externalizable 有什么區別, 或者在引入注解之后, 為什么不用 @Serializable 注解或替換 Serializalbe 接口。

?

在本文中,我們將從初學者和高級別進行提問, 這對新手和具有多年 Java 開發經驗的高級開發人員同樣有益。

2.關于Java序列化的10個面試問題

大多數商業項目使用數據庫或內存映射文件或只是普通文件, 來滿足持久性要求, 只有很少的項目依賴于 Java 中的序列化過程。無論如何,這篇文章不是 Java 序列化教程或如何序列化在 Java 的對象, 但有關序列化機制和序列化 API 的面試問題, 這是值得去任何 Java 面試前先看看以免讓一些未知的內容驚到自己。

對于那些不熟悉 Java 序列化的人, Java 序列化是用來通過將對象的狀態存儲到帶有.ser擴展名的文件來序列化 Java 中的對象的過程, 并且可以通過這個文件恢復重建 Java對象狀態, 這個逆過程稱為 deserialization。

3.什么是 Java 序列化

序列化是把對象改成可以存到磁盤或通過網絡發送到其他運行中的 Java 虛擬機的二進制格式的過程, 并可以通過反序列化恢復對象狀態. Java 序列化API給開發人員提供了一個標準機制, 通過 java.io.Serializable 和 java.io.Externalizable 接口,ObjectInputStream 及ObjectOutputStream處理對象序列化. Java 程序員可自由選擇基于類結構的標準序列化或是他們自定義的二進制格式, 通常認為后者才是最佳實踐, 因為序列化的二進制文件格式成為類輸出 API的一部分, 可能破壞 Java 中私有和包可見的屬性的封裝.

4.如何序列化

讓 Java 中的類可以序列化很簡單. 你的 Java 類只需要實現 java.io.Serializable接口, JVM 就會把 Object 對象按默認格式序列化. 讓一個類是可序列化的需要有意為之. 類可序列會可能為是一個長期代價, 可能會因此而限制你修改或改變其實現. 當你通過實現添加接口來更改類的結構時, 添加或刪除任何字段可能會破壞默認序列化, 這可以通過自定義二進制格式使不兼容的可能性最小化, 但仍需要大量的努力來確保向后兼容性。序列化如何限制你更改類的能力的一個示例是SerialVersionUID。如果不顯式聲明 SerialVersionUID, 則 JVM 會根據類結構生成其結構, 該結構依賴于類實現接口和可能更改的其他幾個因素。假設你新版本的類文件實現的另一個接口, JVM將生成一個不同的 SerialVersionUID 的, 當你嘗試加載舊版本的程序序列化的舊對象時, 你將獲得無效類異常 InvalidClassException。

問題 1) Java 中的可序列化接口和可外部接口之間的區別是什么?

這是 Java 序列化訪談中最常問的問題。下面是我的版本 Externalizable 給我們提供 writeExternal() 和 readExternal() 方法, 這讓我們靈活地控制 Java 序列化機制, 而不是依賴于 Java 的默認序列化。正確實現 Externalizable 接口可以顯著提高應用程序的性能。

問題 2) 可序列化的方法有多少?如果沒有方法,那么可序列化接口的用途是什么?

可序列化 Serializalbe 接口存在于java.io包中,構成了 Java 序列化機制的核心。它沒有任何方法, 在 Java 中也稱為標記接口。當類實現 java.io.Serializable 接口時, 它將在 Java 中變得可序列化, 并指示編譯器使用 Java 序列化機制序列化此對象。

問題 3) 什么是 serialVersionUID ?如果你不定義這個, 會發生什么?

我最喜歡的關于Java序列化的問題面試問題之一。serialVersionUID 是一個 private static final long 型 ID, 當它被印在對象上時, 它通常是對象的哈希碼,你可以使用 serialver 這個 JDK 工具來查看序列化對象的 serialVersionUID。SerialVerionUID 用于對象的版本控制。也可以在類文件中指定 serialVersionUID。不指定 serialVersionUID的后果是,當你添加或修改類中的任何字段時, 則已序列化類將無法恢復, 因為為新類和舊序列化對象生成的 serialVersionUID 將有所不同。Java 序列化過程依賴于正確的序列化對象恢復狀態的, ,并在序列化對象序列版本不匹配的情況下引發 java.io.InvalidClassException無效類異常,了解有關 serialVersionUID 詳細信息,請參閱這篇文章, 需要 FQ。

問題 4) 序列化時,你希望某些成員不要序列化?你如何實現它?

另一個經常被問到的序列化面試問題。這也是一些時候也問, 如什么是瞬態 trasient變量, 瞬態和靜態變量會不會得到序列化等,所以,如果你不希望任何字段是對象的狀態的一部分, 然后聲明它靜態或瞬態根據你的需要, 這樣就不會是在 Java 序列化過程中被包含在內。

問題 5) 如果類中的一個成員未實現可序列化接口, 會發生什么情況?

關于Java序列化過程的一個簡單問題。如果嘗試序列化實現可序列化的類的對象,但該對象包含對不可序列化類的引用,則在運行時將引發不可序列化異常 NotSerializableException, 這就是為什么我始終將一個可序列化警報(在我的代碼注釋部分中), 代碼注釋最佳實踐之一, 指示開發人員記住這一事實, 在可序列化類中添加新字段時要注意。

問題 6) 如果類是可序列化的, 但其超類不是, 則反序列化后從超級類繼承的實例變量的狀態如何?

Java 序列化過程僅在對象層次都是可序列化結構中繼續, 即實現 Java 中的可序列化接口, 并且從超級類繼承的實例變量的值將通過調用構造函數初始化, 在反序列化過程中不可序列化的超級類。一旦構造函數鏈接將啟動, 就不可能停止, 因此, 即使層次結構中較高的類實現可序列化接口, 也將執行構造函數。正如你從陳述中看到的, 這個序列化面試問題看起來非常棘手和有難度, 但如果你熟悉關鍵概念, 則并不難。

問題 7) 是否可以自定義序列化過程, 或者是否可以覆蓋 Java 中的默認序列化過程?

答案是肯定的, 你可以。我們都知道,對于序列化一個對象需調用 ObjectOutputStream.writeObject(saveThisObject), 并用 ObjectInputStream.readObject() 讀取對象, 但 Java 虛擬機為你提供的還有一件事, 是定義這兩個方法。如果在類中定義這兩種方法, 則 JVM 將調用這兩種方法, 而不是應用默認序列化機制。你可以在此處通過執行任何類型的預處理或后處理任務來自定義對象序列化和反序列化的行為。需要注意的重要一點是要聲明這些方法為私有方法, 以避免被繼承、重寫或重載。由于只有 Java 虛擬機可以調用類的私有方法, 你的類的完整性會得到保留, 并且 Java 序列化將正常工作。在我看來, 這是在任何 Java 序列化面試中可以問的最好問題之一, 一個很好的后續問題是, 為什么要為你的對象提供自定義序列化表單?

問題 8) 假設新類的超級類實現可序列化接口, 如何避免新類被序列化?

在 Java 序列化中一個棘手的面試問題。如果類的 Super 類已經在 Java 中實現了可序列化接口, 那么它在 Java 中已經可以序列化, 因為你不能取消接口, 它不可能真正使它無法序列化類, 但是有一種方法可以避免新類序列化。為了避免 Java 序列化,你需要在類中實現 writeObject() 和 readObject() 方法, 并且需要從該方法引發不序列化異常NotSerializableException。這是自定義 Java 序列化過程的另一個好處, 如上述序列化面試問題中所述, 并且通常隨著面試進度, 它作為后續問題提出。

問題 9) 在 Java 中的序列化和反序列化過程中使用哪些方法?

這是很常見的面試問題, 在序列化基本上面試官試圖知道: 你是否熟悉 readObject()的用法、writeObject()、readExternal() 和 writeExternal()。Java 序列化由java.io.ObjectOutputStream類完成。該類是一個篩選器流, 它封裝在較低級別的字節流中, 以處理序列化機制。要通過序列化機制存儲任何對象, 我們調用 ObjectOutputStream.writeObject(savethisobject), 并反序列化該對象, 我們稱之為 ObjectInputStream.readObject()方法。調用以 writeObject() 方法在 java 中觸發序列化過程。關于 readObject() 方法, 需要注意的一點很重要一點是, 它用于從持久性讀取字節, 并從這些字節創建對象, 并返回一個對象, 該對象需要類型強制轉換為正確的類型。

問題 10) 假設你有一個類,它序列化并存儲在持久性中, 然后修改了該類以添加新字段。如果對已序列化的對象進行反序列化, 會發生什么情況?

這取決于類是否具有其自己的 serialVersionUID。正如我們從上面的問題知道, 如果我們不提供 serialVersionUID, 則 Java 編譯器將生成它, 通常它等于對象的哈希代碼。通過添加任何新字段, 有可能為該類新版本生成的新 serialVersionUID與已序列化的對象不同, 在這種情況下, Java 序列化 API 將引發 java.io.InvalidClassException, 因此建議在代碼中擁有自己的 serialVersionUID, 并確保在單個類中始終保持不變。

11) Java序列化機制中的兼容更改和不兼容更改是什么?

真正的挑戰在于通過添加任何字段、方法或刪除任何字段或方法來更改類結構, 方法是使用已序列化的對象。根據 Java 序列化規范, 添加任何字段或方法都面臨兼容的更改和更改類層次結構或取消實現的可序列化接口, 有些接口在非兼容更改下。對于兼容和非兼容更改的完整列表, 我建議閱讀 Java 序列化規范。

12) 我們可以通過網絡傳輸一個序列化的對象嗎?

是的 ,你可以通過網絡傳輸序列化對象, 因為 Java 序列化對象仍以字節的形式保留, 字節可以通過網絡發送。你還可以將序列化對象存儲在磁盤或數據庫中作為 Blob。

13) 在 Java 序列化期間,哪些變量未序列化?

這個問題問得不同, 但目的還是一樣的, Java開發人員是否知道靜態和瞬態變量的細節。由于靜態變量屬于類, 而不是對象, 因此它們不是對象狀態的一部分, 因此在 Java 序列化過程中不會保存它們。由于 Java 序列化僅保留對象的狀態,而不是對象本身。瞬態變量也不包含在 Java 序列化過程中, 并且不是對象的序列化狀態的一部分。在提出這個問題之后,面試官會詢問后續內容, 如果你不存儲這些變量的值, 那么一旦對這些對象進行反序列化并重新創建這些變量, 這些變量的價值是多少?這是你們要考慮的。

9.為什么Java中 wait 方法需要在 synchronized 的方法中調用?

另一個棘手的核心 Java 問題,wait 和 notify。它們是在有 synchronized 標記的方法或 synchronized 塊中調用的,因為 wait 和 modify 需要監視對其上調用 wait 或 notify-get 的 Object。

為什么在 Java 中等待來自 synchronized 塊或方法的 notify 和 notifyAll大多數Java開發人員都知道對象類的 wait(),notify() 和 notifyAll()方法必須在Java中的 synchronized 方法或 synchronized 塊中調用但是我們想過多少次?最近這個問題在Java面試中被問到我的一位朋友,他思索了一下,并回答說如果我們不從同步上下文中調用 wait() 或 notify() 方法,我們將在 Java 中收到 IllegalMonitorStateException。他在語言行為方面是正確的,但就他而言,面試官對答案并不完全滿意,并希望向他解釋這個問題。面試結束后 他和我討論了同樣的問題,我認為他應該告訴采訪者關于 Java 中 wait()和 notify()之間的競爭條件,如果我們不在同步方法或塊中調用它們就可能存在。讓我們看看它如何在Java程序中發生。它也是流行的線程interivew問題之一,并經常在電話和面對面的Java開發人員訪談中詢問。因此,如果你正在準備Java面試,那么你應該準備這樣的問題,并且可以真正幫助你的一本書是Java Programming Interivew公開的。這是一本罕見的書,涵蓋了Java訪談的幾乎所有重要主題,例如核心Java,多線程,IO和NIO以及Spring和Hibernate等框架。你可以在這里查看。

?

為什么要等待來自 Java中的 synchronized 方法的 wait方法為什么必須從 Java 中的 synchronized 塊或方法調用 wait(),notify() 和 notifyAll() 我們主要使用 wait(),notify()或notifyAll()方法用于 Java 中的線程間通信。一個線程在檢查條件后正在等待,例如,在經典的生產者 - 消費者問題中,如果緩沖區已滿,則生產者線程等待,并且消費者線程通過使用元素在緩沖區中創建空間后通知生產者線程。調用notify()或notifyAll()方法向單個或多個線程發出一個條件已更改的通知,并且一旦通知線程離開synchronized塊,正在等待的所有線程正在等待它們正在等待的對象鎖定,幸運的線程在重新獲取鎖之后從wait()方法返回并繼續進行。

讓我們將整個操作分成幾步,以查看Java中wait()和notify()方法之間的競爭條件的可能性,我們將使用Produce Consumer線程示例更好地理解方案:

  • Producer線程測試條件(緩沖區是是否完整)并確認必須等待(找到緩沖區已滿)。
  • Consumer線程在使用緩沖區中的元素后設置條件。
  • Consumer線程調用notify()方法; 這是聞所未聞的,因為Producer線程還沒有等待。
  • Producer線程調用wait()方法并進入等待狀態。
  • 因此,由于競爭條件,我們可能會丟失通知,如果我們使用緩沖區或只使用一個元素,生產線程將永遠等待,你的程序將掛起?!霸趈ava同步中等待notify和notifyall現在讓我們考慮如何解決這個潛在的競爭條件?這個競爭條件通過使用Java提供的synchronized關鍵字和鎖定來解決。為了調用wait(),notify()或notifyAll(在Java中,我們必須獲得對我們調用方法的對象的鎖定。由于Java中的wait()方法在等待之前釋放鎖定并在從wait()返回之前重新獲取鎖定方法,我們必須使用這個鎖來確保檢查條件(緩沖區是否已滿)和設置條件(從緩沖區獲取元素)是原子的,這可以通過在Java中使用synchronized方法或塊來實現。

    我不確定這是否是面試官實際期待的,但這個我認為至少有意義,請糾正我如果我錯了,請告訴我們是否還有其他令人信服的理由調用wait(),notify()或Java中的notifyAll方法??偨Y一下,我們用Java中的synchronized方法或synchronized塊調用Java中的wait(),notify()或notifyAll方法來避免:

    • 1)Java中的IllegalMonitorStateException,如果我們不調用wait(),notify()或者來自同步上下文的notifyAll()方法。
    • 2)Java中wait和notify方法之間的任何潛在競爭條件。

    10.你能用Java覆蓋靜態方法嗎?如果我在子類中創建相同的方法是編譯時錯誤?

    不,你不能在Java中覆蓋靜態方法,但在子類中聲明一個完全相同的方法不是編譯時錯誤,這稱為隱藏在Java中的方法。

    你不能覆蓋Java中的靜態方法,因為方法覆蓋基于運行時的動態綁定,靜態方法在編譯時使用靜態綁定進行綁定。雖然可以在子類中聲明一個具有相同名稱和方法簽名的方法,看起來可以在Java中覆蓋靜態方法,但實際上這是方法隱藏。Java不會在運行時解析方法調用,并且根據用于調用靜態方法的 Object 類型,將調用相應的方法。這意味著如果你使用父類的類型來調用靜態方法,那么原始靜態將從父類中調用,另一方面如果你使用子類的類型來調用靜態方法,則會調用來自子類的方法。簡而言之,你無法在Java中覆蓋靜態方法。如果你使用像Eclipse或Netbeans這樣的Java IDE,它們將顯示警告靜態方法應該使用類名而不是使用對象來調用,因為靜態方法不能在Java中重寫。

    /**** Java program which demonstrate that we can not override static method in Java.* Had Static method can be overridden, with Super class type and sub class object* static method from sub class would be called in our example, which is not the case.*/ public class CanWeOverrideStaticMethod {public static void main(String args[]) {Screen scrn = new ColorScreen();//if we can override static , this should call method from Child classscrn.show(); //IDE will show warning, static method should be called from classname} } class Screen{/** public static method which can not be overridden in Java*/public static void show(){System.out.printf("Static method from parent class");} } class ColorScreen extends Screen{/** static method of same name and method signature as existed in super* class, this is not method overriding instead this is called* method hiding in Java*/public static void show(){System.err.println("Overridden static method in Child Class in Java");} }

    輸出:

    Static method from parent class

    此輸出確認你無法覆蓋Java中的靜態方法,并且靜態方法基于類型信息而不是基于Object進行綁定。如果要覆蓋靜態mehtod,則會調用子類或 ColorScreen 中的方法。這一切都在討論中我們可以覆蓋Java中的靜態方法。我們已經確認沒有,我們不能覆蓋靜態方法,我們只能在Java中隱藏靜態方法。創建具有相同名稱和mehtod簽名的靜態方法稱為Java隱藏方法。IDE將顯示警告:"靜態方法應該使用類名而不是使用對象來調用", 因為靜態方法不能在Java中重寫。

    總結

    以上是生活随笔為你收集整理的这10道Java面试题!大部分的人回答不出来的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    人人射人人 | 色综合久久99 | 久久伊人国产精品 | 欧美日韩亚洲在线观看 | 精品视频在线看 | 免费看黄色大全 | 日韩在线观看视频在线 | 久久成人麻豆午夜电影 | 中文字幕一区二区三 | 麻花豆传媒mv在线观看网站 | 成人四虎影院 | 久久天堂影院 | 久久99久久久久 | 丁香五月网久久综合 | av色影院 | 在线观看视频你懂 | 精品一区二区精品 | 国产一区二区三区 在线 | 日韩免费在线网站 | 亚洲精品久久久久中文字幕二区 | 国产精品麻豆三级一区视频 | 激情久久久久久久久久久久久久久久 | 国产亚洲亚洲 | 色婷婷国产精品 | 久久精品在线免费观看 | 欧美最新大片在线看 | 91一区啪爱嗯打偷拍欧美 | 五月香视频在线观看 | 日韩免费福利 | 久久人人97超碰com | 国产精品mm | 国产精品视频在线观看 | 一区二区三区国 | 国产精品日韩精品 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 高清美女视频 | 精品亚洲国产视频 | 久久午夜电影院 | 一个色综合网站 | 日韩网站视频 | 黄www在线观看 | 99免费在线播放99久久免费 | 国产一级片一区二区三区 | 丁香六月激情 | 在线观看亚洲专区 | 91大神精品视频在线观看 | 91视频在线看 | 在线观看久 | 麻豆精品视频在线 | 人人爽人人干 | 在线播放一区二区三区 | 综合网天天射 | 91福利视频网站 | 久久国产女人 | 午夜精品久久久久久久99无限制 | 久久福利影视 | 精品人妖videos欧美人妖 | 国产午夜亚洲精品 | 久久综合天天 | 国产精品美女毛片真酒店 | 四虎影视精品永久在线观看 | 色噜噜在线观看视频 | 色爱区综合激月婷婷 | 国产视频观看 | 久久黄色a级片 | 国产精品久久久久久久午夜片 | 国产精品免费在线播放 | 午夜久久久影院 | 国产免费三级在线观看 | 国产高潮久久 | 久久久久国产视频 | 国产成人一区二区三区电影 | 中文字幕av在线播放 | 波多野结衣电影久久 | 黄色免费大片 | 一区二区三区在线观看免费视频 | 久久久久久久久久亚洲精品 | 久久一区二区三区超碰国产精品 | 精品一区 在线 | 欧美九九九 | 久久视频国产精品免费视频在线 | 国产高h视频 | 超碰在线人人97 | 国内小视频 | 一区二区三区在线观看免费视频 | 亚洲 欧美 日韩 综合 | 久久99日韩 | 一区二区在线不卡 | 91麻豆网| 久久99精品国产麻豆婷婷 | 亚洲成人免费观看 | 天天干夜夜操视频 | 国产高清免费在线播放 | 黄色成人91| 最新国产精品拍自在线播放 | 欧美午夜理伦三级在线观看 | 国产99一区二区 | 日韩精品久久久免费观看夜色 | 国精产品999国精产品岳 | 97成人在线观看 | 久久91久久久久麻豆精品 | 岛国片在线 | 欧美午夜久久久 | 日韩三级不卡 | 国产精品午夜在线 | 亚洲一级在线观看 | 成人网中文字幕 | 中文国产成人精品久久一 | 国产亚洲精品美女久久 | 97在线播放 | 五月的婷婷 | 国产a国产a国产a | 国产日产高清dvd碟片 | 日日夜夜狠狠操 | av 一区 二区 久久 | 日韩av在线一区二区 | 国产成人精品久久亚洲高清不卡 | 久久国产亚洲 | 一区二区三区手机在线观看 | 日日夜夜亚洲 | 97视频中文字幕 | 国产一区免费 | 在线韩国电影免费观影完整版 | 一区二区视频在线观看免费 | 精品视频免费 | 亚洲理论电影网 | 国产精品一区二区白浆 | 色婷婷视频网 | 伊人婷婷综合 | 国产成人精品不卡 | 亚洲精品a区 | 日韩久久久久久久久久 | 99久久精品免费看国产免费软件 | 国产成人综合在线观看 | 超碰国产97 | 亚洲精品国产精品国自产在线 | 色网站在线免费 | 一区二区三区免费在线观看视频 | 久久久受www免费人成 | 色婷婷福利 | 欧美日韩高清一区二区三区 | 五月激情视频 | 高清av网 | 欧美电影在线观看 | 五月天伊人 | 精品一区二区久久久久久久网站 | 草久久久| 91麻豆精品国产午夜天堂 | 中文字幕一区二区三区在线播放 | 国产精品久久人 | 黄色av播放 | 96亚洲精品久久 | 狠狠天天 | 最新国产在线观看 | 天天爱天天舔 | 国产99久久九九精品 | 99久久免费看 | 日韩电影在线一区二区 | 婷婷九月丁香 | 国产精品va在线观看入 | 欧美精品乱码久久久久久按摩 | 国产色视频一区二区三区qq号 | 天天操天天干天天爱 | 免费91麻豆精品国产自产在线观看 | 激情欧美一区二区免费视频 | 日本精品视频在线观看 | 7777精品伊人久久久大香线蕉 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 丁香视频免费观看 | 亚洲专区视频在线观看 | 免费在线观看成人 | 日韩动漫免费观看高清完整版在线观看 | 久久精品—区二区三区 | 色婷婷综合久久久久 | 精品久久久久久久久久岛国gif | 色婷婷成人网 | 毛片精品免费在线观看 | 中文字幕一区二区三区乱码在线 | 日韩网站在线免费观看 | 精品主播网红福利资源观看 | 高清av免费观看 | 99视频在线看 | 一区二区三区中文字幕在线观看 | 亚洲精品小区久久久久久 | 国产精品网在线观看 | 午夜精品在线看 | 麻豆极品| 日韩视频一区二区三区在线播放免费观看 | 蜜臀精品久久久久久蜜臀 | 精品国产一区二区三区久久久蜜月 | 国产亚洲精品日韩在线tv黄 | 国产精品国产自产拍高清av | 中文字幕在线观看一区二区三区 | 久久综合久久久久88 | 在线色亚洲 | 97成人在线观看 | 亚洲精品视频免费看 | 亚洲三级网站 | 国产亚洲欧美一区 | 国产精品色视频 | 99精彩视频在线观看免费 | 黄色在线视频网址 | 日韩中文字幕91 | 久久中文精品视频 | 国产xxxx做受性欧美88 | 91丨九色丨蝌蚪丨对白 | 久久久影院一区二区三区 | 在线免费观看麻豆视频 | 九月婷婷人人澡人人添人人爽 | 91久久久久久国产精品 | 午夜精品视频在线 | 久久精品免费观看 | 欧美日韩中文国产一区发布 | 免费观看v片在线观看 | 九九久| 国产精品国产三级国产 | 日日爱视频 | 在线看av网址 | 日韩视频一区二区在线观看 | 久久色亚洲 | 国产色影院 | bbw av | 欧美福利视频一区 | 日日操日日插 | 成年人在线免费看片 | 波多野结衣一区二区三区中文字幕 | 成人亚洲精品久久久久 | 一级黄色片网站 | 国产 欧美 日产久久 | 丁香视频全集免费观看 | 91在线国内视频 | 偷拍精品一区二区三区 | a√天堂中文在线 | 婷婷丁香在线 | 亚洲欧美日韩精品久久久 | 久久在线精品 | 亚洲天堂毛片 | 不卡国产在线 | 亚洲精品黄色在线观看 | 亚洲精品动漫成人3d无尽在线 | 激情久久综合网 | 91中文字幕在线观看 | 欧美一级片免费观看 | 日日干天天操 | 一区二区成人国产精品 | 亚洲伊人成综合网 | 精品久久久久一区二区国产 | 欧美性色19p| www.夜夜| 日韩字幕 | 国产录像在线观看 | 国产欧美日韩精品一区二区免费 | 麻豆超碰 | 天天天天爱天天躁 | 久草在在线 | 一区二区三区www | 日韩在线无 | 丁香五月亚洲综合在线 | 午夜私人影院久久久久 | 国产麻豆电影 | 在线一区观看 | 欧美欧美| 黄色成年片 | 在线99热| 四虎国产精品成人免费4hu | 四虎天堂| www久久国产 | 日韩av免费在线电影 | 人人爽人人av | 久久理论影院 | 99自拍视频在线观看 | 国产精品第| 成人欧美一区二区三区在线观看 | 亚洲国产精品影院 | 骄小bbw搡bbbb揉bbbb | 久久99久久久久 | 黄色不卡av | 黄色精品久久 | 成人在线播放视频 | 天天爽综合网 | 免费a视频在线观看 | 中文字幕网站视频在线 | 久久国产精品久久久 | 成人动图 | 视频精品一区二区三区 | 在线免费黄色av | 色网影音先锋 | 中文字幕一区二区三区四区久久 | 亚洲欧洲日韩在线观看 | 在线国产91 | 亚洲免费av在线播放 | av中文字幕剧情 | 亚洲综合在线播放 | 97色se | 探花系列在线 | 男女激情网址 | www.成人精品 | 在线免费观看国产 | 在线观看国产成人av片 | 久久国产精品成人免费浪潮 | 国产综合视频在线观看 | 国产精品久久电影观看 | 中文在线字幕免 | 国产裸体无遮挡 | www国产亚洲| 成人午夜电影免费在线观看 | 国产综合91 | 日韩a在线看 | 日韩草比 | 亚洲资源网| 国产精品9999久久久久仙踪林 | 免费观看成人网 | 欧美精品第一 | 91亚洲国产成人久久精品网站 | 久久久久中文 | 久久不见久久见免费影院 | 国产视频美女 | 超碰九九 | 一区二区三区影院 | 国产亚洲一区二区在线观看 | 热久在线| av怡红院 | 国产成人黄色在线 | 色吧久久 | 国产99中文字幕 | 欧美天天综合 | 国产一区av在线 | 欧美一区二区三区不卡 | 亚洲香蕉在线观看 | 国产午夜三级一区二区三桃花影视 | 日韩美在线| 最新婷婷色 | av青草| 日韩伦理片hd | 午夜在线看 | 色欧美成人精品a∨在线观看 | 99久久www免费 | 国产成人久久av免费高清密臂 | 色多多污污在线观看 | 日韩啪啪小视频 | 久久久综合香蕉尹人综合网 | 成人在线观看网址 | 国产成人高清 | 国产视频资源在线观看 | 人人草在线视频 | 亚洲伦理中文字幕 | 91九色在线观看视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美精品一区二区三区四区在线 | 欧美一级特黄aaaaaa大片在线观看 | 日韩中文字幕电影 | 国产精品毛片一区 | 日本一区二区三区免费观看 | 丁香婷婷激情国产高清秒播 | 伊甸园av在线 | 超碰公开在线观看 | 婷婷久久网站 | 国产一线二线三线性视频 | 超碰在线国产 | 久久久免费精品 | 黄色a在线 | 精品久久久久久久久久岛国gif | 色婷婷综合视频在线观看 | 香蕉视频久久久 | 香蕉在线播放 | 国产精品久久久久久久久久久久午 | 中文字幕乱在线伦视频中文字幕乱码在线 | 免费视频久久久 | 亚洲精品播放 | 久久午夜精品 | bbw av| 亚洲永久国产精品 | 天天爽天天摸 | 久久视频在线观看中文字幕 | 六月丁香在线视频 | 国产精品字幕 | 成人av网址大全 | 岛国av在线 | 免费中文字幕视频 | 精品久久1 | 欧美激情奇米色 | 国产成人精品一区二区三区网站观看 | 91插插插网站 | 亚洲天天在线日亚洲洲精 | 狠狠干天天干 | 日韩一区二区免费在线观看 | 亚洲免费成人av电影 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 就要干b | 午夜精品一区二区三区在线视频 | 欧美国产日韩中文 | 欧美精品久久久久性色 | 98超碰在线观看 | 免费日韩av片 | 99九九视频| 免费看国产黄色 | 在线观看91 | 婷婷丁香视频 | 一级淫片a | 久草久草久草久草 | 日日夜夜精品视频天天综合网 | 999精品网| 女人魂免费观看 | 精品久久久久一区二区国产 | 成人在线观看资源 | 免费视频xnxx com | 日韩精品中文字幕一区二区 | 五月开心网| 91精品免费视频 | 国产一区二区在线播放视频 | 在线观看中文字幕2021 | 视频国产区| 美女激情影院 | 免费视频久久久 | 亚洲精品观看 | 亚洲成年人在线播放 | 婷婷 综合 色 | 丁香5月婷婷久久 | 国产一区二区三区四区大秀 | 国产亚洲片| 五月天色婷婷丁香 | 婷婷网五月天 | 超碰人人99| 中文字幕中文字幕 | 久久久99精品免费观看app | 欧美日韩在线观看视频 | 亚洲精品男人天堂 | 亚洲免费av电影 | 久久99国产精品免费 | 久久久国产精华液 | 久久久性 | 国产视频中文字幕 | av中文字幕在线观看网站 | 精品天堂av | 免费在线一区二区 | 人人玩人人弄 | 在线激情小视频 | 国产精品午夜免费福利视频 | 成人午夜精品久久久久久久3d | 激情五月婷婷综合 | 成人一区二区三区在线 | 精品国内自产拍在线观看视频 | 在线欧美a | 中文字幕丰满人伦在线 | 久久免费看 | 午夜 免费 | 欧美成人在线网站 | 久久久免费精品 | 国产精品久久久久久久久久久久冷 | 久草9视频 | 天天色天天色天天色 | 亚洲天堂网视频在线观看 | 日韩视频二区 | 日韩高清免费无专码区 | 日韩在线观看小视频 | 毛片无卡免费无播放器 | 男女免费av | 免费在线观看成年人视频 | 一区二区视频在线观看免费 | 一级片色播影院 | 欧美日韩久久不卡 | 日韩欧美一二三 | 日韩色综合网 | 久草在线免费资源站 | 久久视频免费 | 亚洲国产成人在线观看 | 免费高清在线视频一区· | 成人免费看片网址 | 三级毛片视频 | 婷婷久月 | 综合网天天射 | 456成人精品影院 | 亚洲日本韩国一区二区 | av中文天堂在线 | 欧美大片大全 | 500部大龄熟乱视频 欧美日本三级 | 三级av免费观看 | 一级片黄色片网站 | 久久99精品久久久久久久久久久久 | 97国产精品久久 | 菠萝菠萝在线精品视频 | 天天操天天干天天干 | 亚洲欧洲精品一区二区 | 久久手机免费观看 | av大全在线免费观看 | 日韩在线激情 | 97在线视频网站 | 最近能播放的中文字幕 | av黄网站| 超碰国产人人 | 麻豆视频在线观看免费 | 免费日韩电影 | 99久久99久久综合 | 欧美福利片在线观看 | 亚洲九九九在线观看 | 中文字幕亚洲欧美 | 91探花系列在线播放 | 99热只有精品在线观看 | 亚洲成人软件 | 制服丝袜天堂 | 超碰在线日韩 | 在线视频一二区 | 丁香狠狠| 国产黄色片一级 | 最新国产在线 | 国产福利精品在线观看 | 久久久国产一区 | 久久国产热 | 亚洲理论片在线观看 | 国产高清视频免费在线观看 | 在线导航av | 国产高清在线免费观看 | 国产精品美女久久久久aⅴ 干干夜夜 | 天天弄天天操 | 在线观看日韩一区 | 欧美成人性网 | 国产一级黄色免费看 | 视频一区视频二区在线观看 | 免费在线观看黄 | 亚洲美女精品 | 成人av一区二区在线观看 | av片子在线观看 | 欧美尹人 | 国产中文字幕视频在线观看 | 日韩大陆欧美高清视频区 | 国产又粗又猛又黄又爽视频 | 欧美日韩性视频 | 免费在线观看av片 | 欧美视频在线观看免费网址 | 婷婷综合五月天 | 手机看片99 | 午夜精品剧场 | 精品在线免费观看 | 免费亚洲视频 | 久久久国产精品麻豆 | 狠狠插天天干 | 国内精品美女在线观看 | 日本中文字幕在线一区 | 亚洲成人频道 | 精品国产美女 | 国产亚洲精品电影 | 亚洲aⅴ久久精品 | 一级a毛片高清视频 | 在线免费av播放 | 综合网婷婷 | 免费观看性生活大片3 | 午夜久久成人 | 中文一二区 | 国产精品久久久久久久免费观看 | 久久久午夜视频 | 欧美一级特黄aaaaaa大片在线观看 | 一区二区三区韩国免费中文网站 | 国产成在线观看免费视频 | 国产清纯在线 | 夜色资源站wwwcom | 天天综合色 | 亚洲精品免费视频 | 成人av一区二区兰花在线播放 | 国产黄a三级三级三级三级三级 | 久草精品视频 | 日韩在线视频一区二区三区 | 国产99久久久久久免费看 | 美女视频免费精品 | 日韩一区二区三区高清在线观看 | 91成人精品在线 | 99精品国产高清在线观看 | 久青草影院| 麻豆精品视频在线 | 精品欧美一区二区精品久久 | 欧美日韩91| 欧美激情精品久久久久久免费 | 久久综合毛片 | 人人插人人玩 | 国产精品自产拍在线观看蜜 | 亚洲免费av观看 | 麻豆一精品传二传媒短视频 | 国产精品欧美一区二区三区不卡 | 久久视频国产精品免费视频在线 | 亚洲精品一区二区精华 | 黄污网站在线 | 日韩a欧美 | 午夜精品导航 | 中文字幕中文字幕 | 国产精品久久久久久久妇 | 国产视频久 | 91欧美在线 | 欧美激情h| 麻豆成人精品视频 | 中文字幕亚洲在线观看 | 日韩av电影手机在线观看 | 97超级碰碰碰碰久久久久 | 国产一级特黄毛片在线毛片 | 日韩精品高清不卡 | 丝袜av网站 | 成年人天堂com | 日韩美精品视频 | 国产精品永久久久久久久久久 | avlulu久久精品 | 久久不射电影网 | 伊人宗合网 | 国产在线传媒 | 四虎成人免费观看 | 91av在线免费观看 | 婷婷色视频 | 久久精品美女 | 欧美成年人在线观看 | 亚洲最新av在线网站 | 国产精品在线看 | 2023天天干 | 91精品啪在线观看国产线免费 | 久久中文欧美 | 911在线| 一区二区三区在线观看 | 亚洲精品一区二区三区高潮 | 久久影视一区 | 四虎在线免费视频 | 97超碰免费在线 | 日本精品久久久久 | 午夜视频在线观看一区二区三区 | 亚欧日韩av | 女人魂免费观看 | 综合天天色 | 激情网站免费观看 | 国内精自线一二区永久 | 中文字幕精品在线 | 久久综合偷偷噜噜噜色 | 亚洲好视频| 蜜桃视频成人在线观看 | 伊甸园永久入口www 99热 精品在线 | 四虎影视4hu4虎成人 | 婷婷亚洲激情 | 欧美国产一区二区 | 色婷婷激情 | 91精品亚洲影视在线观看 | 91九色porn在线资源 | 草久电影| 日韩av手机在线观看 | 色窝资源 | 亚洲经典视频 | 美女网站视频免费都是黄 | 亚洲精品中文在线资源 | 又黄又刺激视频 | 久操视频在线观看 | 麻豆网站免费观看 | 国产精品美女久久久久久久久久久 | 午夜电影久久久 | 91色欧美| 伊人婷婷色| 亚洲免费精品视频 | 免费日韩av片 | 在线色亚洲 | 在线日韩av | 日韩在线观看精品 | 在线观看中文字幕亚洲 | 久久国产精品视频免费看 | 国产精品久久久久久久久久久久 | 婷婷久久精品 | 国产精品久久久久久久久久久久午夜 | 黄色软件大全网站 | 亚洲视频免费 | 国产午夜精品福利视频 | 婷婷在线精品视频 | 久草在线中文888 | 美女视频是黄的免费观看 | av黄色免费看 | 99热999| 天天操天天添 | 粉嫩av一区二区三区四区五区 | 精品国产成人 | 四月婷婷在线观看 | 国产黄在线看 | 99精品国产一区二区三区不卡 | 92国产精品久久久久首页 | 日韩xxxxxxxxx| 亚洲精品18p | 国产精品久久三 | 视频在线观看91 | 黄色91在线观看 | 国产精品电影一区 | 深夜成人av | 亚洲激情在线视频 | 久久精品男人的天堂 | 热99久久精品 | 国产精品久久久久久久免费观看 | 伊人手机在线 | 久久精品国产亚洲精品2020 | 国产高清精| 国产精品丝袜久久久久久久不卡 | 午夜av在线 | 婷婷精品视频 | 国产香蕉97碰碰久久人人 | 日韩综合视频在线观看 | 中文字幕乱视频 | 激情五月网站 | 安徽妇搡bbbb搡bbbb | 五月婷婷六月丁香在线观看 | 狠狠操夜夜| 99久久精品免费看国产麻豆 | 国产在线色 | 成人一区二区三区中文字幕 | 中文字幕二区 | 九九久久婷婷 | 日韩精品一区在线播放 | 国产剧情一区二区在线观看 | 五月婷婷激情综合 | 国产精品久久久久久久久久久久冷 | 亚洲人久久| 久久视频在线观看中文字幕 | 91亚洲精品久久久久图片蜜桃 | 亚洲精品久久久久999中文字幕 | 日本女人逼 | 精品久久久网 | 欧美午夜a | 69夜色精品国产69乱 | 国产视频一区二区三区在线 | 欧女人精69xxxxxx | 黄色大全在线观看 | 欧美成人影音 | 97影视 | 永久黄网站色视频免费观看w | av线上免费观看 | 免费午夜在线视频 | 久久精品永久免费 | 丁香六月婷婷 | 国产成人精品免费在线观看 | 奇米网在线观看 | 涩涩网站在线播放 | 日韩精品免费一区 | 亚洲欧美在线观看视频 | 一级免费av | 日韩欧美在线观看一区二区三区 | 日韩二区三区 | 亚洲精品xxx| 伊人五月婷 | 麻豆国产精品va在线观看不卡 | 色七七亚洲影院 | 婷婷六月天丁香 | 在线观看va | 国产剧情一区 | 91色在线观看 | 日韩欧三级 | 91免费高清在线观看 | 日韩欧美视频 | 激情www| 国产综合在线视频 | 美女一区网站 | 色瓜 | 久久xxxx| 成人影片在线播放 | 亚洲成人精品 | 亚洲不卡123 | 最近中文字幕 | 国产免费大片 | 五月天激情婷婷 | 成人福利av | 精品国产一区二区三区久久久久久 | 插插插色综合 | 在线观看av网 | 午夜免费视频网站 | 中文字幕成人一区 | 日韩区视频 | 欧美日韩观看 | 久久久久国产精品免费免费搜索 | 色噜噜噜噜 | 久久综合色天天久久综合图片 | 精品视频免费播放 | 91片黄在线观看 | 日本爽妇网 | 国产亚洲精品日韩在线tv黄 | 国产午夜精品理论片在线 | 黄色av一级片 | 国产特级毛片aaaaaa毛片 | 日本精品久久久久中文字幕5 | 国产又粗又猛又爽又黄的视频免费 | 国产精品成人自产拍在线观看 | 日韩xxxxxxxxx| 国产男女无遮挡猛进猛出在线观看 | 婷婷综合 | 欧洲精品视频一区二区 | 狠狠做深爱婷婷综合一区 | 国产乱老熟视频网88av | 国产精品久久一区二区三区不卡 | 日本视频久久久 | 国产精品二区在线观看 | 日韩精品一区在线播放 | 久黄色| 久久一区二区三区超碰国产精品 | 亚洲资源在线 | 99999精品| 日韩中文字幕在线看 | 成人午夜av电影 | 色五月色开心色婷婷色丁香 | 国产探花视频在线播放 | 欧美一区二区三区激情视频 | 啪一啪在线 | 最近最新mv字幕免费观看 | 国产麻豆精品一区 | 免费在线一区二区 | 国产视频日韩视频欧美视频 | 欧美视频xxx | 99热这里只有精品久久 | 一区 二区 精品 | 日韩精品中文字幕av | 超级碰碰碰碰 | 狠狠色婷婷丁香六月 | 99久久夜色精品国产亚洲 | 成年美女黄网站色大片免费看 | 97久久久免费福利网址 | 精品欧美一区二区三区久久久 | 婷婷精品在线视频 | 精品福利国产 | 亚洲 欧洲av | 国产不卡毛片 | 97色婷婷成人综合在线观看 | 日韩在线电影 | 人人添人人澡人人澡人人人爽 | 极品久久久 | 国产精品99久久久久久武松影视 | 日韩一区精品 | 久久久鲁 | 亚洲人在线视频 | 国产精品高 | 免费欧美精品 | 黄色片网站大全 | 毛片一级免费一级 | 久草综合在线观看 | 在线欧美小视频 | 亚洲国产成人精品在线 | 亚洲精品456在线播放第一页 | 九九九热精品免费视频观看网站 | 国产免费又黄又爽 | 成年人免费在线播放 | 日韩在线第一 | 久久精品久久久精品美女 | 婷婷久久婷婷 | 日日添夜夜添 | 国产成在线观看免费视频 | 久久99国产综合精品免费 | 91精品国自产在线偷拍蜜桃 | 国产高清中文字幕 | 日韩videos高潮hd| 91社区国产高清 | 五月天最新网址 | 国产在线高清视频 | 久久久黄色av | 91丨九色丨丝袜 | 玖玖爱国产在线 | 人人爽人人爽人人片av免 | 高潮久久久久久久久 | 人人射av| 丁香六月婷婷激情 | 国产亚洲精品久久久久久无几年桃 | 在线视频日韩一区 | 亚洲va在线va天堂va偷拍 | 少妇bbbb揉bbbb日本 | 久久不射电影院 | av免费在线网站 | 中文不卡视频在线 | 国产视频每日更新 | 国产人免费人成免费视频 | 国产精品一区电影 | 亚洲黄色一级大片 | 欧美精品久久人人躁人人爽 | 五月花激情 | 97成人资源站 | 成人福利av| 91.dizhi永久地址最新 | 免费视频区 | 69国产盗摄一区二区三区五区 | 国产精品一区二区在线播放 | 91成人免费看片 | 久久久国产精品一区二区三区 | 国产特级毛片aaaaaa | 黄色软件在线观看 | 日韩免费在线一区 | 27xxoo无遮挡动态视频 | 国产香蕉在线 | 五月天激情婷婷 | 91高清视频免费 | 日韩欧美在线免费观看 | 成年人免费在线 | 九九天堂| 不卡的av在线播放 | 国产一级黄色电影 | 欧美狠狠操| 人人干人人做 | 国产精品久久久久久久久久东京 | 国产精品一区一区三区 | 97超碰资源总站 | 97超碰资源总站 | 丝袜美腿亚洲 | 久久久久久久久久久免费av | 五月天激情电影 | 97在线观看免费高清完整版在线观看 | 国产精品福利无圣光在线一区 | 91超级碰碰 | 国产一区在线免费观看视频 | 少妇搡bbb| 日韩精品在线看 | av字幕在线 | 福利视频精品 | 91传媒在线播放 | 国产私拍在线 | 天天爽天天摸 | 日本在线视频网址 | 欧美一区视频 | 午夜视频播放 | 色婷婷综合在线 | 少妇bbw揉bbb欧美 | 在线观看va| 国产明星视频三级a三级点| 国产不卡免费 | 91视频高清完整版 | 久久人人爽爽人人爽人人片av | 最近中文字幕免费大全 | 欧美激情精品久久 | 黄色a视频免费 | 麻豆系列在线观看 | 超碰在线最新 | 91精品国产成人 | 综合伊人av| 久久免费在线观看视频 | 久久女同性恋中文字幕 | 国产精品视频最多的网站 | 国产涩涩在线观看 | 久久成人国产精品 | 五月婷香 | 国产黄色片久久久 | 中文字幕第一页在线 | 色综合天天色综合 | 91精品国自产拍天天拍 | 毛片1000部免费看 | 久久99久久精品 | 91av社区 | 欧美国产一区二区 | 美女免费网视频 | 欧美一级激情 | 国产精品剧情在线亚洲 | 欧美视屏一区二区 | 天天干天天做天天爱 | 国产精品久久中文字幕 | 99国产精品一区 | 天天操人 | 特级a毛片| 99久久精品免费看国产麻豆 | 久久成人在线视频 | 黄色三级免费看 | 国产高清免费视频 | 天天干天天拍天天操天天拍 | 国产亚洲91 | av电影免费在线看 | 91视频在线观看免费 | 日日爽视频 | 国产精品久久网 | 国产一区二区三区免费在线 | 久久麻豆精品 | 日本视频网 | 怡红院久久 | 麻豆视频免费入口 | 日本中文字幕在线视频 | 久久免费精品 | 偷拍精品一区二区三区 | 丁香在线视频 | 视频福利在线观看 | 久久精品看片 | 中文字幕一区二区三区乱码在线 | 国产一区二区在线免费视频 | 91精品国产综合久久久久久久 | 日韩一级黄色片 | 久久精品视频网站 | 亚洲欧美偷拍另类 | 天天爽夜夜爽人人爽曰av | 九九九九精品九九九九 | 国产99自拍 | 午夜精品久久久久久久久久 | 久久成年人视频 | 国产麻豆电影 | 91亚色视频| 亚洲精品456在线播放乱码 | 亚洲精品乱码久久久一二三 | 麻豆va一区二区三区久久浪 | 中文字幕一区二区三区久久蜜桃 | 午夜视频在线观看一区二区 | 久久精品香蕉视频 | 超碰97人人在线 | 久久99国产一区二区三区 | 在线看一区 | 在线看片日韩 | 久章草在线 | 天天操天天综合网 | 婷婷综合五月天 | 91福利试看| 欧美日韩国产在线一区 | 在线免费黄色av | 成人aaa毛片 | 欧美性久久久 | 一区二区视频电影在线观看 | 91一区二区三区久久久久国产乱 |