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

歡迎訪問 生活随笔!

生活随笔

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

java

Java面试宝典(超级详细)

發布時間:2023/12/10 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java面试宝典(超级详细) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Java 基礎

1. JDK 和 JRE 有什么區別?

  • JDK:Java Development Kit 的簡稱,java 開發工具包,提供了 java 的開發環境和運行環境。
  • JRE:Java Runtime Environment 的簡稱,java 運行環境,為 java 的運行提供了所需環境。

具體來說 JDK 其實包含了 JRE,同時還包含了編譯 java 源碼的編譯器 javac,還包含了很多 java 程序調試和分析的工具。簡單來說:如果你需要運行 java 程序,只需安裝 JRE 就可以了,如果你需要編寫 java 程序,需要安裝 JDK。

2. == 和 equals 的區別是什么?

== 解讀

對于基本類型和引用類型 == 的作用效果是不同的,如下所示:

  • 基本類型:比較的是值是否相同;
  • 引用類型:比較的是引用是否相同;

代碼示例:

[](javascript:void(0)😉

1 String x = "string"; 2 String y = "string"; 3 String z = new String("string"); 4 System.out.println(x==y); // true 5 System.out.println(x==z); // false 6 System.out.println(x.equals(y)); // true 7 System.out.println(x.equals(z)); // true

[](javascript:void(0)😉

代碼解讀:因為 x 和 y 指向的是同一個引用,所以 == 也是 true,而 new String()方法則重寫開辟了內存空間,所以 == 結果為 false,而 equals 比較的一直是值,所以結果都為 true。

equals 解讀

equals 本質上就是 ==,只不過 String 和 Integer 等重寫了 equals 方法,把它變成了值比較??聪旅娴拇a就明白了。

首先來看默認情況下 equals 比較一個有相同值的對象,代碼如下:

[](javascript:void(0)😉

1 class Cat {2 public Cat(String name) {3 this.name = name;4 }5 6 private String name;7 8 public String getName() {9 return name; 10 } 11 12 public void setName(String name) { 13 this.name = name; 14 } 15 } 16 17 Cat c1 = new Cat("王磊"); 18 Cat c2 = new Cat("王磊"); 19 System.out.println(c1.equals(c2)); // false

[](javascript:void(0)😉

輸出結果出乎我們的意料,竟然是 false?這是怎么回事,看了 equals 源碼就知道了,源碼如下:

1 public boolean equals(Object obj) { 2 return (this == obj); 3 }

原來 equals 本質上就是 ==。

那問題來了,兩個相同值的 String 對象,為什么返回的是 true?代碼如下:

1 String s1 = new String("老王"); 2 String s2 = new String("老王"); 3 System.out.println(s1.equals(s2)); // true

同樣的,當我們進入 String 的 equals 方法,找到了答案,代碼如下:

[](javascript:void(0)😉

1 public boolean equals(Object anObject) {2 if (this == anObject) {3 return true;4 }5 if (anObject instanceof String) {6 String anotherString = (String)anObject;7 int n = value.length;8 if (n == anotherString.value.length) {9 char v1[] = value; 10 char v2[] = anotherString.value; 11 int i = 0; 12 while (n-- != 0) { 13 if (v1[i] != v2[i]) 14 return false; 15 i++; 16 } 17 return true; 18 } 19 } 20 return false; 21 }

[](javascript:void(0)😉

原來是 String 重寫了 Object 的 equals 方法,把引用比較改成了值比較。

總結 :== 對于基本類型來說是值比較,對于引用類型來說是比較的是引用;而 equals 默認情況下是引用比較,只是很多類重新了 equals 方法,比如 String、Integer 等把它變成了值比較,所以一般情況下 equals 比較的是值是否相等。

3. 兩個對象的 hashCode()相同,則 equals()也一定為 true,對嗎?

不對,兩個對象的 hashCode()相同,equals()不一定 true。

代碼示例:

1 String str1 = "通話"; 2 String str2 = "重地"; 3 System.out.println(String.format("str1:%d | str2:%d", str1.hashCode(),str2.hashCode())); 4 System.out.println(str1.equals(str2));

執行的結果:

str1:1179395 | str2:1179395

false

代碼解讀:很顯然“通話”和“重地”的 hashCode() 相同,然而 equals() 則為 false,因為在散列表中,hashCode()相等即兩個鍵值對的哈希值相等,然而哈希值相等,并不一定能得出鍵值對相等。

4. final 在 java 中有什么作用?

  • final 修飾的類叫最終類,該類不能被繼承。
  • final 修飾的方法不能被重寫。
  • final 修飾的變量叫常量,常量必須初始化,初始化之后值就不能被修改。

5. java 中的 Math.round(-1.5) 等于多少?

等于 -1,因為在數軸上取值時,中間值(0.5)向右取整,所以正 0.5 是往上取整,負 0.5 是直接舍棄。

6. String 屬于基礎的數據類型嗎?

String 不屬于基礎類型,基礎類型有 8 種:byte、boolean、char、short、int、float、long、double,而 String 屬于對象。

7. java 中操作字符串都有哪些類?它們之間有什么區別?

操作字符串的類有:String、StringBuffer、StringBuilder。

String 和 StringBuffer、StringBuilder 的區別在于 String 聲明的是不可變的對象,每次操作都會生成新的 String 對象,然后將指針指向新的 String 對象,而 StringBuffer、StringBuilder 可以在原有對象的基礎上進行操作,所以在經常改變字符串內容的情況下最好不要使用 String。

StringBuffer 和 StringBuilder 最大的區別在于,StringBuffer 是線程安全的,而 StringBuilder 是非線程安全的,但 StringBuilder 的性能卻高于 StringBuffer,所以在單線程環境下推薦使用 StringBuilder,多線程環境下推薦使用 StringBuffer。

8. String str="i"與 String str=new String(“i”)一樣嗎?

不一樣,因為內存的分配方式不一樣。String str="i"的方式,java 虛擬機會將其分配到常量池中;而 String str=new String(“i”) 則會被分到堆內存中。

9. 如何將字符串反轉?

使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。

示例代碼:

[](javascript:void(0)😉

1 // StringBuffer reverse 2 StringBuffer stringBuffer = new StringBuffer(); 3 stringBuffer.append("abcdefg"); 4 System.out.println(stringBuffer.reverse()); // gfedcba 5 // StringBuilder reverse 6 StringBuilder stringBuilder = new StringBuilder(); 7 stringBuilder.append("abcdefg"); 8 System.out.println(stringBuilder.reverse()); // gfedcba

[](javascript:void(0)😉

10. String 類的常用方法都有那些?

  • indexOf():返回指定字符的索引。
  • charAt():返回指定索引處的字符。
  • replace():字符串替換。
  • trim():去除字符串兩端空白。
  • split():分割字符串,返回一個分割后的字符串數組。
  • getBytes():返回字符串的 byte 類型數組。
  • length():返回字符串長度。
  • toLowerCase():將字符串轉成小寫字母。
  • toUpperCase():將字符串轉成大寫字符。
  • substring():截取字符串。
  • equals():字符串比較。

11. 抽象類必須要有抽象方法嗎?

不需要,抽象類不一定非要有抽象方法。

示例代碼:

1 abstract class Cat { 2 public static void sayHi() { 3 System.out.println("hi~"); 4 } 5 }

上面代碼,抽象類并沒有抽象方法但完全可以正常運行。

12. 普通類和抽象類有哪些區別?

  • 普通類不能包含抽象方法,抽象類可以包含抽象方法。
  • 抽象類不能直接實例化,普通類可以直接實例化。

13. 抽象類能使用 final 修飾嗎?

不能,定義抽象類就是讓其他類繼承的,如果定義為 final 該類就不能被繼承,這樣彼此就會產生矛盾,所以 final 不能修飾抽象類,如下圖所示,編輯器也會提示錯誤信息:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Rfa7e3kj-1618031589662)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

14. 接口和抽象類有什么區別?

  • 實現:抽象類的子類使用 extends 來繼承;接口必須使用 implements 來實現接口。
  • 構造函數:抽象類可以有構造函數;接口不能有。
  • main 方法:抽象類可以有 main 方法,并且我們能運行它;接口不能有 main 方法。
  • 實現數量:類可以實現很多個接口;但是只能繼承一個抽象類。
  • 訪問修飾符:接口中的方法默認使用 public 修飾;抽象類中的方法可以是任意訪問修飾符。

15. java 中 IO 流分為幾種?

按功能來分:輸入流(input)、輸出流(output)。

按類型來分:字節流和字符流。

字節流和字符流的區別是:字節流按 8 位傳輸以字節為單位輸入輸出數據,字符流按 16 位傳輸以字符為單位輸入輸出數據。

16. BIO、NIO、AIO 有什么區別?

  • BIO:Block IO 同步阻塞式 IO,就是我們平常使用的傳統 IO,它的特點是模式簡單使用方便,并發處理能力低。
  • NIO:New IO 同步非阻塞 IO,是傳統 IO 的升級,客戶端和服務器端通過 Channel(通道)通訊,實現了多路復用。
  • AIO:Asynchronous IO 是 NIO 的升級,也叫 NIO2,實現了異步非堵塞 IO ,異步 IO 的操作基于事件和回調機制。

17. Files的常用方法都有哪些?

  • Files.exists():檢測文件路徑是否存在。
  • Files.createFile():創建文件。
  • Files.createDirectory():創建文件夾。
  • Files.delete():刪除一個文件或目錄。
  • Files.copy():復制文件。
  • Files.move():移動文件。
  • Files.size():查看文件個數。
  • Files.read():讀取文件。
  • Files.write():寫入文件。

二、容器

18. java 容器都有哪些?

常用容器的圖錄:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NWFSVc1H-1618031589664)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

19. Collection 和 Collections 有什么區別?

  • java.util.Collection 是一個集合接口(集合類的一個頂級接口)。它提供了對集合對象進行基本操作的通用接口方法。Collection接口在Java 類庫中有很多具體的實現。Collection接口的意義是為各種具體的集合提供了最大化的統一操作方式,其直接繼承接口有List與Set。
  • Collections則是集合類的一個工具類/幫助類,其中提供了一系列靜態方法,用于對集合中元素進行排序、搜索以及線程安全等各種操作。

20. List、Set、Map 之間的區別是什么?

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8Uqi2dET-1618031589666)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

21. HashMap 和 Hashtable 有什么區別?

  • hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
  • hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
  • hashMap允許空鍵值,而hashTable不允許。

22. 如何決定使用 HashMap 還是 TreeMap?

對于在Map中插入、刪除和定位元素這類操作,HashMap是最好的選擇。然而,假如你需要對一個有序的key集合進行遍歷,TreeMap是更好的選擇?;谀愕腸ollection的大小,也許向HashMap中添加元素會更快,將map換為TreeMap進行有序key的遍歷。

23. 說一下 HashMap 的實現原理?

HashMap概述: HashMap是基于哈希表的Map接口的非同步實現。此實現提供所有可選的映射操作,并允許使用null值和null鍵。此類不保證映射的順序,特別是它不保證該順序恒久不變。

HashMap的數據結構: 在java編程語言中,最基本的結構就是兩種,一個是數組,另外一個是模擬指針(引用),所有的數據結構都可以用這兩個基本結構來構造的,HashMap也不例外。HashMap實際上是一個“鏈表散列”的數據結構,即數組和鏈表的結合體。

當我們往Hashmap中put元素時,首先根據key的hashcode重新計算hash值,根絕hash值得到這個元素在數組中的位置(下標),如果該數組在該位置上已經存放了其他元素,那么在這個位置上的元素將以鏈表的形式存放,新加入的放在鏈頭,最先加入的放入鏈尾.如果數組中該位置沒有元素,就直接將該元素放到數組的該位置上。

需要注意Jdk 1.8中對HashMap的實現做了優化,當鏈表中的節點數據超過八個之后,該鏈表會轉為紅黑樹來提高查詢效率,從原來的O(n)到O(logn)

24. 說一下 HashSet 的實現原理?

  • HashSet底層由HashMap實現
  • HashSet的值存放于HashMap的key上
  • HashMap的value統一為PRESENT

25. ArrayList 和 LinkedList 的區別是什么?

最明顯的區別是 ArrrayList底層的數據結構是數組,支持隨機訪問,而 LinkedList 的底層數據結構是雙向循環鏈表,不支持隨機訪問。使用下標訪問一個元素,ArrayList 的時間復雜度是 O(1),而 LinkedList 是 O(n)。

26. 如何實現數組和 List 之間的轉換?

  • List轉換成為數組:調用ArrayList的toArray方法。
  • 數組轉換成為List:調用Arrays的asList方法。

27. ArrayList 和 Vector 的區別是什么?

  • Vector是同步的,而ArrayList不是。然而,如果你尋求在迭代的時候對列表進行改變,你應該使用CopyOnWriteArrayList。
  • ArrayList比Vector快,它因為有同步,不會過載。
  • ArrayList更加通用,因為我們可以使用Collections工具類輕易地獲取同步列表和只讀列表。

28. Array 和 ArrayList 有何區別?

  • Array可以容納基本類型和對象,而ArrayList只能容納對象。
  • Array是指定大小的,而ArrayList大小是固定的。
  • Array沒有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。

29. 在 Queue 中 poll()和 remove()有什么區別?

poll() 和 remove() 都是從隊列中取出一個元素,但是 poll() 在獲取元素失敗的時候會返回空,但是 remove() 失敗的時候會拋出異常。

30. 哪些集合類是線程安全的?

  • vector:就比arraylist多了個同步化機制(線程安全),因為效率較低,現在已經不太建議使用。在web應用中,特別是前臺頁面,往往效率(頁面響應速度)是優先考慮的。
  • statck:堆棧類,先進后出。
  • hashtable:就比hashmap多了個線程安全。
  • enumeration:枚舉,相當于迭代器。

31. 迭代器 Iterator 是什么?

迭代器是一種設計模式,它是一個對象,它可以遍歷并選擇序列中的對象,而開發人員不需要了解該序列的底層結構。迭代器通常被稱為“輕量級”對象,因為創建它的代價小。

32. Iterator 怎么使用?有什么特點?

Java中的Iterator功能比較簡單,并且只能單向移動:

(1) 使用方法iterator()要求容器返回一個Iterator。第一次調用Iterator的next()方法時,它返回序列的第一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。

(2) 使用next()獲得序列中的下一個元素。

(3) 使用hasNext()檢查序列中是否還有元素。

(4) 使用remove()將迭代器新返回的元素刪除。

Iterator是Java迭代器最簡單的實現,為List設計的ListIterator具有更多的功能,它可以從兩個方向遍歷List,也可以從List中插入和刪除元素。

33. Iterator 和 ListIterator 有什么區別?

  • Iterator可用來遍歷Set和List集合,但是ListIterator只能用來遍歷List。
  • Iterator對集合只能是前向遍歷,ListIterator既可以前向也可以后向。
  • ListIterator實現了Iterator接口,并包含其他的功能,比如:增加元素,替換元素,獲取前一個和后一個元素的索引,等等。

三、多線程

35. 并行和并發有什么區別?

  • 并行是指兩個或者多個事件在同一時刻發生;而并發是指兩個或多個事件在同一時間間隔發生。
  • 并行是在不同實體上的多個事件,并發是在同一實體上的多個事件。
  • 在一臺處理器上“同時”處理多個任務,在多臺處理器上同時處理多個任務。如hadoop分布式集群。

所以并發編程的目標是充分的利用處理器的每一個核,以達到最高的處理性能。

36. 線程和進程的區別?

簡而言之,進程是程序運行和資源分配的基本單位,一個程序至少有一個進程,一個進程至少有一個線程。進程在執行過程中擁有獨立的內存單元,而多個線程共享內存資源,減少切換次數,從而效率更高。線程是進程的一個實體,是cpu調度和分派的基本單位,是比程序更小的能獨立運行的基本單位。同一進程中的多個線程之間可以并發執行。

37. 守護線程是什么?

守護線程(即daemon thread),是個服務線程,準確地來說就是服務其他的線程。

38. 創建線程有哪幾種方式?

①. 繼承Thread類創建線程類

  • 定義Thread類的子類,并重寫該類的run方法,該run方法的方法體就代表了線程要完成的任務。因此把run()方法稱為執行體。
  • 創建Thread子類的實例,即創建了線程對象。
  • 調用線程對象的start()方法來啟動該線程。

②. 通過Runnable接口創建線程類

  • 定義runnable接口的實現類,并重寫該接口的run()方法,該run()方法的方法體同樣是該線程的線程執行體。
  • 創建 Runnable實現類的實例,并依此實例作為Thread的target來創建Thread對象,該Thread對象才是真正的線程對象。
  • 調用線程對象的start()方法來啟動該線程。

③. 通過Callable和Future創建線程

  • 創建Callable接口的實現類,并實現call()方法,該call()方法將作為線程執行體,并且有返回值。
  • 創建Callable實現類的實例,使用FutureTask類來包裝Callable對象,該FutureTask對象封裝了該Callable對象的call()方法的返回值。
  • 使用FutureTask對象作為Thread對象的target創建并啟動新線程。
  • 調用FutureTask對象的get()方法來獲得子線程執行結束后的返回值。

39. 說一下 runnable 和 callable 有什么區別?

有點深的問題了,也看出一個Java程序員學習知識的廣度。

  • Runnable接口中的run()方法的返回值是void,它做的事情只是純粹地去執行run()方法中的代碼而已;
  • Callable接口中的call()方法是有返回值的,是一個泛型,和Future、FutureTask配合可以用來獲取異步執行的結果。

40. 線程有哪些狀態?

線程通常都有五種狀態,創建、就緒、運行、阻塞和死亡。

  • 創建狀態。在生成線程對象,并沒有調用該對象的start方法,這是線程處于創建狀態。
  • 就緒狀態。當調用了線程對象的start方法之后,該線程就進入了就緒狀態,但是此時線程調度程序還沒有把該線程設置為當前線程,此時處于就緒狀態。在線程運行之后,從等待或者睡眠中回來之后,也會處于就緒狀態。
  • 運行狀態。線程調度程序將處于就緒狀態的線程設置為當前線程,此時線程就進入了運行狀態,開始運行run函數當中的代碼。
  • 阻塞狀態。線程正在運行的時候,被暫停,通常是為了等待某個時間的發生(比如說某項資源就緒)之后再繼續運行。sleep,suspend,wait等方法都可以導致線程阻塞。
  • 死亡狀態。如果一個線程的run方法執行結束或者調用stop方法后,該線程就會死亡。對于已經死亡的線程,無法再使用start方法令其進入就緒

41. sleep() 和 wait() 有什么區別?

sleep():方法是線程類(Thread)的靜態方法,讓調用線程進入睡眠狀態,讓出執行機會給其他線程,等到休眠時間結束后,線程進入就緒狀態和其他線程一起競爭cpu的執行時間。因為sleep() 是static靜態的方法,他不能改變對象的機鎖,當一個synchronized塊中調用了sleep() 方法,線程雖然進入休眠,但是對象的機鎖沒有被釋放,其他線程依然無法訪問這個對象。

wait():wait()是Object類的方法,當一個線程執行到wait方法時,它就進入到一個和該對象相關的等待池,同時釋放對象的機鎖,使得其他線程能夠訪問,可以通過notify,notifyAll方法來喚醒等待的線程。

42. notify()和 notifyAll()有什么區別?

  • 如果線程調用了對象的 wait()方法,那么線程便會處于該對象的等待池中,等待池中的線程不會去競爭該對象的鎖。
  • 當有線程調用了對象的 notifyAll()方法(喚醒所有 wait 線程)或 notify()方法(只隨機喚醒一個 wait 線程),被喚醒的的線程便會進入該對象的鎖池中,鎖池中的線程會去競爭該對象鎖。也就是說,調用了notify后只要一個線程會由等待池進入鎖池,而notifyAll會將該對象等待池內的所有線程移動到鎖池中,等待鎖競爭。
  • 優先級高的線程競爭到對象鎖的概率大,假若某線程沒有競爭到該對象鎖,它還會留在鎖池中,唯有線程再次調用 wait()方法,它才會重新回到等待池中。而競爭到對象鎖的線程則繼續往下執行,直到執行完了 synchronized 代碼塊,它會釋放掉該對象鎖,這時鎖池中的線程會繼續競爭該對象鎖。

43. 線程的 run()和 start()有什么區別?

每個線程都是通過某個特定Thread對象所對應的方法run()來完成其操作的,方法run()稱為線程體。通過調用Thread類的start()方法來啟動一個線程。

start()方法來啟動一個線程,真正實現了多線程運行。這時無需等待run方法體代碼執行完畢,可以直接繼續執行下面的代碼; 這時此線程是處于就緒狀態, 并沒有運行。 然后通過此Thread類調用方法run()來完成其運行狀態, 這里方法run()稱為線程體,它包含了要執行的這個線程的內容, Run方法運行結束, 此線程終止。然后CPU再調度其它線程。

run()方法是在本線程里的,只是線程里的一個函數,而不是多線程的。 如果直接調用run(),其實就相當于是調用了一個普通函數而已,直接待用run()方法必須等待run()方法執行完畢才能執行下面的代碼,所以執行路徑還是只有一條,根本就沒有線程的特征,所以在多線程執行時要使用start()方法而不是run()方法。

44. 創建線程池有哪幾種方式?

①. newFixedThreadPool(int nThreads)

創建一個固定長度的線程池,每當提交一個任務就創建一個線程,直到達到線程池的最大數量,這時線程規模將不再變化,當線程發生未預期的錯誤而結束時,線程池會補充一個新的線程。

②. newCachedThreadPool()

創建一個可緩存的線程池,如果線程池的規模超過了處理需求,將自動回收空閑線程,而當需求增加時,則可以自動添加新線程,線程池的規模不存在任何限制。

③. newSingleThreadExecutor()

這是一個單線程的Executor,它創建單個工作線程來執行任務,如果這個線程異常結束,會創建一個新的來替代它;它的特點是能確保依照任務在隊列中的順序來串行執行。

④. newScheduledThreadPool(int corePoolSize)

創建了一個固定長度的線程池,而且以延遲或定時的方式來執行任務,類似于Timer。

45. 線程池都有哪些狀態?

線程池有5種狀態:Running、ShutDown、Stop、Tidying、Terminated。

線程池各個狀態切換框架圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7NK52bat-1618031589668)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

46. 線程池中 submit()和 execute()方法有什么區別?

  • 接收的參數不一樣
  • submit有返回值,而execute沒有
  • submit方便Exception處理

47. 在 java 程序中怎么保證多線程的運行安全?

線程安全在三個方面體現:

  • 原子性:提供互斥訪問,同一時刻只能有一個線程對數據進行操作,(atomic,synchronized);
  • 可見性:一個線程對主內存的修改可以及時地被其他線程看到,(synchronized,volatile);
  • 有序性:一個線程觀察其他線程中的指令執行順序,由于指令重排序,該觀察結果一般雜亂無序,(happens-before原則)。

48. 多線程鎖的升級原理是什么?

在Java中,鎖共有4種狀態,級別從低到高依次為:無狀態鎖,偏向鎖,輕量級鎖和重量級鎖狀態,這幾個狀態會隨著競爭情況逐漸升級。鎖可以升級但不能降級。

鎖升級的圖示過程:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fs5JvVgQ-1618031589669)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

49. 什么是死鎖?

死鎖是指兩個或兩個以上的進程在執行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。是操作系統層面的一個錯誤,是進程死鎖的簡稱,最早在 1965 年由 Dijkstra 在研究銀行家算法時提出的,它是計算機操作系統乃至整個并發程序設計領域最難處理的問題之一。

50. 怎么防止死鎖?

死鎖的四個必要條件:

  • 互斥條件:進程對所分配到的資源不允許其他進程進行訪問,若其他進程訪問該資源,只能等待,直至占有該資源的進程使用完成后釋放該資源
  • 請求和保持條件:進程獲得一定的資源之后,又對其他資源發出請求,但是該資源可能被其他進程占有,此事請求阻塞,但又對自己獲得的資源保持不放
  • 不可剝奪條件:是指進程已獲得的資源,在未完成使用之前,不可被剝奪,只能在使用完后自己釋放
  • 環路等待條件:是指進程發生死鎖后,若干進程之間形成一種頭尾相接的循環等待資源關系

這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之 一不滿足,就不會發生死鎖。

理解了死鎖的原因,尤其是產生死鎖的四個必要條件,就可以最大可能地避免、預防和 解除死鎖。

所以,在系統設計、進程調度等方面注意如何不讓這四個必要條件成立,如何確 定資源的合理分配算法,避免進程永久占據系統資源。

此外,也要防止進程在處于等待狀態的情況下占用資源。因此,對資源的分配要給予合理的規劃。

51. ThreadLocal 是什么?有哪些使用場景?

線程局部變量是局限于線程內部的變量,屬于線程自身所有,不在多個線程間共享。Java提供ThreadLocal類來支持線程局部變量,是一種實現線程安全的方式。但是在管理環境下(如 web 服務器)使用線程局部變量的時候要特別小心,在這種情況下,工作線程的生命周期比任何應用變量的生命周期都要長。任何線程局部變量一旦在工作完成后沒有釋放,Java 應用就存在內存泄露的風險。

52.說一下 synchronized 底層實現原理?

synchronized可以保證方法或者代碼塊在運行時,同一時刻只有一個方法可以進入到臨界區,同時它還可以保證共享變量的內存可見性。

Java中每一個對象都可以作為鎖,這是synchronized實現同步的基礎:

  • 普通同步方法,鎖是當前實例對象
  • 靜態同步方法,鎖是當前類的class對象
  • 同步方法塊,鎖是括號里面的對象

53. synchronized 和 volatile 的區別是什么?

  • volatile本質是在告訴jvm當前變量在寄存器(工作內存)中的值是不確定的,需要從主存中讀取; synchronized則是鎖定當前變量,只有當前線程可以訪問該變量,其他線程被阻塞住。
  • volatile僅能使用在變量級別;synchronized則可以使用在變量、方法、和類級別的。
  • volatile僅能實現變量的修改可見性,不能保證原子性;而synchronized則可以保證變量的修改可見性和原子性。
  • volatile不會造成線程的阻塞;synchronized可能會造成線程的阻塞。
  • volatile標記的變量不會被編譯器優化;synchronized標記的變量可以被編譯器優化。

54. synchronized 和 Lock 有什么區別?

  • 首先synchronized是java內置關鍵字,在jvm層面,Lock是個java類;
  • synchronized無法判斷是否獲取鎖的狀態,Lock可以判斷是否獲取到鎖;
  • synchronized會自動釋放鎖(a 線程執行完同步代碼會釋放鎖 ;b 線程執行過程中發生異常會釋放鎖),Lock需在finally中手工釋放鎖(unlock()方法釋放鎖),否則容易造成線程死鎖;
  • 用synchronized關鍵字的兩個線程1和線程2,如果當前線程1獲得鎖,線程2線程等待。如果線程1阻塞,線程2則會一直等待下去,而Lock鎖就不一定會等待下去,如果嘗試獲取不到鎖,線程可以不用一直等待就結束了;
  • synchronized的鎖可重入、不可中斷、非公平,而Lock鎖可重入、可判斷、可公平(兩者皆可);
  • Lock鎖適合大量同步的代碼的同步問題,synchronized鎖適合代碼少量的同步問題。

55. synchronized 和 ReentrantLock 區別是什么?

synchronized是和if、else、for、while一樣的關鍵字,ReentrantLock是類,這是二者的本質區別。既然ReentrantLock是類,那么它就提供了比synchronized更多更靈活的特性,可以被繼承、可以有方法、可以有各種各樣的類變量,ReentrantLock比synchronized的擴展性體現在幾點上:

  • ReentrantLock可以對獲取鎖的等待時間進行設置,這樣就避免了死鎖
  • ReentrantLock可以獲取各種鎖的信息
  • ReentrantLock可以靈活地實現多路通知

另外,二者的鎖機制其實也是不一樣的:ReentrantLock底層調用的是Unsafe的park方法加鎖,synchronized操作的應該是對象頭中mark word。

56. 說一下 atomic 的原理?

Atomic包中的類基本的特性就是在多線程環境下,當有多個線程同時對單個(包括基本類型及引用類型)變量進行操作時,具有排他性,即當多個線程同時對該變量的值進行更新時,僅有一個線程能成功,而未成功的線程可以向自旋鎖一樣,繼續嘗試,一直等到執行成功。

Atomic系列的類中的核心方法都會調用unsafe類中的幾個本地方法。我們需要先知道一個東西就是Unsafe類,全名為:sun.misc.Unsafe,這個類包含了大量的對C代碼的操作,包括很多直接內存分配以及原子操作的調用,而它之所以標記為非安全的,是告訴你這個里面大量的方法調用都會存在安全隱患,需要小心使用,否則會導致嚴重的后果,例如在通過unsafe分配內存的時候,如果自己指定某些區域可能會導致一些類似C++一樣的指針越界到其他進程的問題。


四、反射

57. 什么是反射?

反射主要是指程序可以訪問、檢測和修改它本身狀態或行為的一種能力

Java反射:

在Java運行時環境中,對于任意一個類,能否知道這個類有哪些屬性和方法?對于任意一個對象,能否調用它的任意一個方法

Java反射機制主要提供了以下功能:

  • 在運行時判斷任意一個對象所屬的類。
  • 在運行時構造任意一個類的對象。
  • 在運行時判斷任意一個類所具有的成員變量和方法。
  • 在運行時調用任意一個對象的方法。

58. 什么是 java 序列化?什么情況下需要序列化?

簡單說就是為了保存在內存中的各種對象的狀態(也就是實例變量,不是方法),并且可以把保存的對象狀態再讀出來。雖然你可以用你自己的各種各樣的方法來保存object states,但是Java給你提供一種應該比你自己好的保存對象狀態的機制,那就是序列化。

什么情況下需要序列化:

a)當你想把的內存中的對象狀態保存到一個文件中或者數據庫中時候;
b)當你想用套接字在網絡上傳送對象的時候;
c)當你想通過RMI傳輸對象的時候;

59. 動態代理是什么?有哪些應用?

動態代理:

當想要給實現了某個接口的類中的方法,加一些額外的處理。比如說加日志,加事務等??梢越o這個類創建一個代理,故名思議就是創建一個新的類,這個類不僅包含原來類方法的功能,而且還在原來的基礎上添加了額外處理的新類。這個代理類并不是定義好的,是動態生成的。具有解耦意義,靈活,擴展性強。

動態代理的應用:

  • Spring的AOP
  • 加事務
  • 加權限
  • 加日志

60. 怎么實現動態代理?

首先必須定義一個接口,還要有一個InvocationHandler(將實現接口的類的對象傳遞給它)處理類。再有一個工具類Proxy(習慣性將其稱為代理類,因為調用他的newInstance()可以產生代理對象,其實他只是一個產生代理對象的工具類)。利用到InvocationHandler,拼接代理類源碼,將其編譯生成代理類的二進制碼,利用加載器加載,并將其實例化產生代理對象,最后返回。


五、對象拷貝

61. 為什么要使用克隆?

想對一個對象進行處理,又想保留原有的數據進行接下來的操作,就需要克隆了,Java語言中克隆針對的是類的實例。

62. 如何實現對象克隆?

有兩種方式:

1). 實現Cloneable接口并重寫Object類中的clone()方法;

2). 實現Serializable接口,通過對象的序列化和反序列化實現克隆,可以實現真正的深度克隆,代碼如下:

[](javascript:void(0)😉

1 import java.io.ByteArrayInputStream;2 import java.io.ByteArrayOutputStream;3 import java.io.ObjectInputStream;4 import java.io.ObjectOutputStream;5 import java.io.Serializable;6 7 public class MyUtil {8 9 private MyUtil() { 10 throw new AssertionError(); 11 } 12 13 @SuppressWarnings("unchecked") 14 public static <T extends Serializable> T clone(T obj) throws Exception { 15 ByteArrayOutputStream bout = new ByteArrayOutputStream(); 16 ObjectOutputStream oos = new ObjectOutputStream(bout); 17 oos.writeObject(obj); 18 19 ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray()); 20 ObjectInputStream ois = new ObjectInputStream(bin); 21 return (T) ois.readObject(); 22 23 // 說明:調用ByteArrayInputStream或ByteArrayOutputStream對象的close方法沒有任何意義 24 // 這兩個基于內存的流只要垃圾回收器清理對象就能夠釋放資源,這一點不同于對外部資源(如文件流)的釋放 25 } 26 }

[](javascript:void(0)😉

下面是測試代碼:

[](javascript:void(0)😉

1 2 import java.io.Serializable;3 4 /**5 * 人類6 * @author nnngu7 *8 */9 class Person implements Serializable { 10 private static final long serialVersionUID = -9102017020286042305L; 11 12 private String name; // 姓名 13 private int age; // 年齡 14 private Car car; // 座駕 15 16 public Person(String name, int age, Car car) { 17 this.name = name; 18 this.age = age; 19 this.car = car; 20 } 21 22 public String getName() { 23 return name; 24 } 25 26 public void setName(String name) { 27 this.name = name; 28 } 29 30 public int getAge() { 31 return age; 32 } 33 34 public void setAge(int age) { 35 this.age = age; 36 } 37 38 public Car getCar() { 39 return car; 40 } 41 42 public void setCar(Car car) { 43 this.car = car; 44 } 45 46 @Override 47 public String toString() { 48 return "Person [name=" + name + ", age=" + age + ", car=" + car + "]"; 49 } 50 51 }

[](javascript:void(0)😉

[](javascript:void(0)😉

1 2 /**3 * 小汽車類4 * @author nnngu5 *6 */7 class Car implements Serializable {8 private static final long serialVersionUID = -5713945027627603702L;9 10 private String brand; // 品牌 11 private int maxSpeed; // 最高時速 12 13 public Car(String brand, int maxSpeed) { 14 this.brand = brand; 15 this.maxSpeed = maxSpeed; 16 } 17 18 public String getBrand() { 19 return brand; 20 } 21 22 public void setBrand(String brand) { 23 this.brand = brand; 24 } 25 26 public int getMaxSpeed() { 27 return maxSpeed; 28 } 29 30 public void setMaxSpeed(int maxSpeed) { 31 this.maxSpeed = maxSpeed; 32 } 33 34 @Override 35 public String toString() { 36 return "Car [brand=" + brand + ", maxSpeed=" + maxSpeed + "]"; 37 } 38 39 }

[](javascript:void(0)😉

[](javascript:void(0)😉

1 class CloneTest {2 3 public static void main(String[] args) {4 try {5 Person p1 = new Person("郭靖", 33, new Car("Benz", 300));6 Person p2 = MyUtil.clone(p1); // 深度克隆7 p2.getCar().setBrand("BYD");8 // 修改克隆的Person對象p2關聯的汽車對象的品牌屬性9 // 原來的Person對象p1關聯的汽車不會受到任何影響 10 // 因為在克隆Person對象時其關聯的汽車對象也被克隆了 11 System.out.println(p1); 12 } catch (Exception e) { 13 e.printStackTrace(); 14 } 15 } 16 }

[](javascript:void(0)😉

注意:基于序列化和反序列化實現的克隆不僅僅是深度克隆,更重要的是通過泛型限定,可以檢查出要克隆的對象是否支持序列化,這項檢查是編譯器完成的,不是在運行時拋出異常,這種是方案明顯優于使用Object類的clone方法克隆對象。讓問題在編譯的時候暴露出來總是好過把問題留到運行時。

63. 深拷貝和淺拷貝區別是什么?

  • 淺拷貝只是復制了對象的引用地址,兩個對象指向同一個內存地址,所以修改其中任意的值,另一個值都會隨之變化,這就是淺拷貝(例:assign())
  • 深拷貝是將對象及值復制過來,兩個對象修改其中任意的值另一個值不會改變,這就是深拷貝(例:JSON.parse()和JSON.stringify(),但是此方法無法復制函數類型)

六、Java Web

64. jsp 和 servlet 有什么區別?

  • jsp經編譯后就變成了Servlet.(JSP的本質就是Servlet,JVM只能識別java的類,不能識別JSP的代碼,Web容器將JSP的代碼編譯成JVM能夠識別的java類)
  • jsp更擅長表現于頁面顯示,servlet更擅長于邏輯控制。
  • Servlet中沒有內置對象,Jsp中的內置對象都是必須通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到。
  • Jsp是Servlet的一種簡化,使用Jsp只需要完成程序員需要輸出到客戶端的內容,Jsp中的Java腳本如何鑲嵌到一個類中,由Jsp容器完成。而Servlet則是個完整的Java類,這個類的Service方法用于生成對客戶端的響應。
  • 65. jsp 有哪些內置對象?作用分別是什么?

    JSP有9個內置對象:

    • request:封裝客戶端的請求,其中包含來自GET或POST請求的參數;
    • response:封裝服務器對客戶端的響應;
    • pageContext:通過該對象可以獲取其他對象;
    • session:封裝用戶會話的對象;
    • application:封裝服務器運行環境的對象;
    • out:輸出服務器響應的輸出流對象;
    • config:Web應用的配置對象;
    • page:JSP頁面本身(相當于Java程序中的this);
    • exception:封裝頁面拋出異常的對象。

    66. 說一下 jsp 的 4 種作用域?

    JSP中的四種作用域包括page、request、session和application,具體來說:

    • page代表與一個頁面相關的對象和屬性。
    • request代表與Web客戶機發出的一個請求相關的對象和屬性。一個請求可能跨越多個頁面,涉及多個Web組件;需要在頁面顯示的臨時數據可以置于此作用域。
    • session代表與某個用戶與服務器建立的一次會話相關的對象和屬性。跟某個用戶相關的數據應該放在用戶自己的session中。
    • application代表與整個Web應用程序相關的對象和屬性,它實質上是跨越整個Web應用程序,包括多個頁面、請求和會話的一個全局作用域。

    67. session 和 cookie 有什么區別?

    • 由于HTTP協議是無狀態的協議,所以服務端需要記錄用戶的狀態時,就需要用某種機制來識具體的用戶,這個機制就是Session.典型的場景比如購物車,當你點擊下單按鈕時,由于HTTP協議無狀態,所以并不知道是哪個用戶操作的,所以服務端要為特定的用戶創建了特定的Session,用用于標識這個用戶,并且跟蹤用戶,這樣才知道購物車里面有幾本書。這個Session是保存在服務端的,有一個唯一標識。在服務端保存Session的方法很多,內存、數據庫、文件都有。集群的時候也要考慮Session的轉移,在大型的網站,一般會有專門的Session服務器集群,用來保存用戶會話,這個時候 Session 信息都是放在內存的,使用一些緩存服務比如Memcached之類的來放 Session。
    • 思考一下服務端如何識別特定的客戶?這個時候Cookie就登場了。每次HTTP請求的時候,客戶端都會發送相應的Cookie信息到服務端。實際上大多數的應用都是用 Cookie 來實現Session跟蹤的,第一次創建Session的時候,服務端會在HTTP協議中告訴客戶端,需要在 Cookie 里面記錄一個Session ID,以后每次請求把這個會話ID發送到服務器,我就知道你是誰了。有人問,如果客戶端的瀏覽器禁用了 Cookie 怎么辦?一般這種情況下,會使用一種叫做URL重寫的技術來進行會話跟蹤,即每次HTTP交互,URL后面都會被附加上一個諸如 sid=xxxxx 這樣的參數,服務端據此來識別用戶。
    • Cookie其實還可以用在一些方便用戶的場景下,設想你某次登陸過一個網站,下次登錄的時候不想再次輸入賬號了,怎么辦?這個信息可以寫到Cookie里面,訪問網站的時候,網站頁面的腳本可以讀取這個信息,就自動幫你把用戶名給填了,能夠方便一下用戶。這也是Cookie名稱的由來,給用戶的一點甜頭。所以,總結一下:Session是在服務端保存的一個數據結構,用來跟蹤用戶的狀態,這個數據可以保存在集群、數據庫、文件中;Cookie是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息,也是實現Session的一種方式。

    68. 說一下 session 的工作原理?

    其實session是一個存在服務器上的類似于一個散列表格的文件。里面存有我們需要的信息,在我們需要用的時候可以從里面取出來。類似于一個大號的map吧,里面的鍵存儲的是用戶的sessionid,用戶向服務器發送請求的時候會帶上這個sessionid。這時就可以從中取出對應的值了。

    69. 如果客戶端禁止 cookie 能實現 session 還能用嗎?

    Cookie與 Session,一般認為是兩個獨立的東西,Session采用的是在服務器端保持狀態的方案,而Cookie采用的是在客戶端保持狀態的方案。但為什么禁用Cookie就不能得到Session呢?因為Session是用Session ID來確定當前對話所對應的服務器Session,而Session ID是通過Cookie來傳遞的,禁用Cookie相當于失去了Session ID,也就得不到Session了。

    假定用戶關閉Cookie的情況下使用Session,其實現途徑有以下幾種:

  • 設置php.ini配置文件中的“session.use_trans_sid = 1”,或者編譯時打開打開了“–enable-trans-sid”選項,讓PHP自動跨頁傳遞Session ID。
  • 手動通過URL傳值、隱藏表單傳遞Session ID。
  • 用文件、數據庫等形式保存Session ID,在跨頁過程中手動調用。
  • 70. spring mvc 和 struts 的區別是什么?

    • 攔截機制的不同

    Struts2是類級別的攔截,每次請求就會創建一個Action,和Spring整合時Struts2的ActionBean注入作用域是原型模式prototype,然后通過setter,getter吧request數據注入到屬性。Struts2中,一個Action對應一個request,response上下文,在接收參數時,可以通過屬性接收,這說明屬性參數是讓多個方法共享的。Struts2中Action的一個方法可以對應一個url,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標識其所屬方法了,只能設計為多例。

    SpringMVC是方法級別的攔截,一個方法對應一個Request上下文,所以方法直接基本上是獨立的,獨享request,response數據。而每個方法同時又何一個url對應,參數的傳遞是直接注入到方法中的,是方法所獨有的。處理結果通過ModeMap返回給框架。在Spring整合時,SpringMVC的Controller Bean默認單例模式Singleton,所以默認對所有的請求,只會創建一個Controller,有應為沒有共享的屬性,所以是線程安全的,如果要改變默認的作用域,需要添加@Scope注解修改。

    Struts2有自己的攔截Interceptor機制,SpringMVC這是用的是獨立的Aop方式,這樣導致Struts2的配置文件量還是比SpringMVC大。

    • 底層框架的不同

    Struts2采用Filter(StrutsPrepareAndExecuteFilter)實現,SpringMVC(DispatcherServlet)則采用Servlet實現。Filter在容器啟動之后即初始化;服務停止以后墜毀,晚于Servlet。Servlet在是在調用時初始化,先于Filter調用,服務停止后銷毀。

    • 性能方面

    Struts2是類級別的攔截,每次請求對應實例一個新的Action,需要加載所有的屬性值注入,SpringMVC實現了零配置,由于SpringMVC基于方法的攔截,有加載一次單例模式bean注入。所以,SpringMVC開發效率和性能高于Struts2。

    • 配置方面

    spring MVC和Spring是無縫的。從這個項目的管理和安全上也比Struts2高。

    71. 如何避免 sql 注入?

  • PreparedStatement(簡單又有效的方法)
  • 使用正則表達式過濾傳入的參數
  • 字符串過濾
  • JSP中調用該函數檢查是否包函非法字符
  • JSP頁面判斷代碼
  • 72. 什么是 XSS 攻擊,如何避免?

    XSS攻擊又稱CSS,全稱Cross Site Script (跨站腳本攻擊),其原理是攻擊者向有XSS漏洞的網站中輸入惡意的 HTML 代碼,當用戶瀏覽該網站時,這段 HTML 代碼會自動執行,從而達到攻擊的目的。XSS 攻擊類似于 SQL 注入攻擊,SQL注入攻擊中以SQL語句作為用戶輸入,從而達到查詢/修改/刪除數據的目的,而在xss攻擊中,通過插入惡意腳本,實現對用戶游覽器的控制,獲取用戶的一些信息。 XSS是 Web 程序中常見的漏洞,XSS 屬于被動式且用于客戶端的攻擊方式。

    XSS防范的總體思路是:對輸入(和URL參數)進行過濾,對輸出進行編碼。

    73. 什么是 CSRF 攻擊,如何避免?

    CSRF(Cross-site request forgery)也被稱為 one-click attack或者 session riding,中文全稱是叫跨站請求偽造。一般來說,攻擊者通過偽造用戶的瀏覽器的請求,向訪問一個用戶自己曾經認證訪問過的網站發送出去,使目標網站接收并誤以為是用戶的真實操作而去執行命令。常用于盜取賬號、轉賬、發送虛假消息等。攻擊者利用網站對請求的驗證漏洞而實現這樣的攻擊行為,網站能夠確認請求來源于用戶的瀏覽器,卻不能驗證請求是否源于用戶的真實意愿下的操作行為。

    如何避免:

    \1. 驗證 HTTP Referer 字段

    HTTP頭中的Referer字段記錄了該 HTTP 請求的來源地址。在通常情況下,訪問一個安全受限頁面的請求來自于同一個網站,而如果黑客要對其實施 CSRF
    攻擊,他一般只能在他自己的網站構造請求。因此,可以通過驗證Referer值來防御CSRF 攻擊。

    \2. 使用驗證碼

    關鍵操作頁面加上驗證碼,后臺收到請求后通過判斷驗證碼可以防御CSRF。但這種方法對用戶不太友好。

    \3. 在請求地址中添加token并驗證

    CSRF 攻擊之所以能夠成功,是因為黑客可以完全偽造用戶的請求,該請求中所有的用戶驗證信息都是存在于cookie中,因此黑客可以在不知道這些驗證信息的情況下直接利用用戶自己的cookie 來通過安全驗證。要抵御 CSRF,關鍵在于在請求中放入黑客所不能偽造的信息,并且該信息不存在于 cookie 之中??梢栽?HTTP 請求中以參數的形式加入一個隨機產生的 token,并在服務器端建立一個攔截器來驗證這個 token,如果請求中沒有token或者 token 內容不正確,則認為可能是 CSRF 攻擊而拒絕該請求。這種方法要比檢查 Referer 要安全一些,token 可以在用戶登陸后產生并放于session之中,然后在每次請求時把token 從 session 中拿出,與請求中的 token 進行比對,但這種方法的難點在于如何把 token 以參數的形式加入請求。
    對于 GET 請求,token 將附在請求地址之后,這樣 URL 就變成 http://url?csrftoken=tokenvalue。
    而對于 POST 請求來說,要在 form 的最后加上 ,這樣就把token以參數的形式加入請求了。

    \4. 在HTTP 頭中自定義屬性并驗證

    這種方法也是使用 token 并進行驗證,和上一種方法不同的是,這里并不是把 token 以參數的形式置于 HTTP 請求之中,而是把它放到 HTTP 頭中自定義的屬性里。通過 XMLHttpRequest 這個類,可以一次性給所有該類請求加上 csrftoken 這個 HTTP 頭屬性,并把 token 值放入其中。這樣解決了上種方法在請求中加入 token 的不便,同時,通過 XMLHttpRequest 請求的地址不會被記錄到瀏覽器的地址欄,也不用擔心 token 會透過 Referer 泄露到其他網站中去。


    七、異常

    74. throw 和 throws 的區別?

    throws是用來聲明一個方法可能拋出的所有異常信息,throws是將異常聲明但是不處理,而是將異常往上傳,誰調用我就交給誰處理。而throw則是指拋出的一個具體的異常類型。

    75. final、finally、finalize 有什么區別?

    • final可以修飾類、變量、方法,修飾類表示該類不能被繼承、修飾方法表示該方法不能被重寫、修飾變量表示該變量是一個常量不能被重新賦值。
    • finally一般作用在try-catch代碼塊中,在處理異常的時候,通常我們將一定要執行的代碼方法finally代碼塊中,表示不管是否出現異常,該代碼塊都會執行,一般用來存放一些關閉資源的代碼。
    • finalize是一個方法,屬于Object類的一個方法,而Object類是所有類的父類,該方法一般由垃圾回收器來調用,當我們調用System的gc()方法的時候,由垃圾回收器調用finalize(),回收垃圾。

    76. try-catch-finally 中哪個部分可以省略?

    答:catch 可以省略

    原因:

    更為嚴格的說法其實是:try只適合處理運行時異常,try+catch適合處理運行時異常+普通異常。也就是說,如果你只用try去處理普通異常卻不加以catch處理,編譯是通不過的,因為編譯器硬性規定,普通異常如果選擇捕獲,則必須用catch顯示聲明以便進一步處理。而運行時異常在編譯時沒有如此規定,所以catch可以省略,你加上catch編譯器也覺得無可厚非。

    理論上,編譯器看任何代碼都不順眼,都覺得可能有潛在的問題,所以你即使對所有代碼加上try,代碼在運行期時也只不過是在正常運行的基礎上加一層皮。但是你一旦對一段代碼加上try,就等于顯示地承諾編譯器,對這段代碼可能拋出的異常進行捕獲而非向上拋出處理。如果是普通異常,編譯器要求必須用catch捕獲以便進一步處理;如果運行時異常,捕獲然后丟棄并且+finally掃尾處理,或者加上catch捕獲以便進一步處理。

    至于加上finally,則是在不管有沒捕獲異常,都要進行的“掃尾”處理。

    77. try-catch-finally 中,如果 catch 中 return 了,finally 還會執行嗎?

    答:會執行,在 return 前執行。

    代碼示例1:

    [](javascript:void(0)😉

    1 /*2 * java面試題--如果catch里面有return語句,finally里面的代碼還會執行嗎?3 */4 public class FinallyDemo2 {5 public static void main(String[] args) {6 System.out.println(getInt());7 }8 9 public static int getInt() { 10 int a = 10; 11 try { 12 System.out.println(a / 0); 13 a = 20; 14 } catch (ArithmeticException e) { 15 a = 30; 16 return a; 17 /* 18 * return a 在程序執行到這一步的時候,這里不是return a 而是 return 30;這個返回路徑就形成了 19 * 但是呢,它發現后面還有finally,所以繼續執行finally的內容,a=40 20 * 再次回到以前的路徑,繼續走return 30,形成返回路徑之后,這里的a就不是a變量了,而是常量30 21 */ 22 } finally { 23 a = 40; 24 } 25 26 // return a; 27 } 28 }

    [](javascript:void(0)😉

    執行結果:30

    代碼示例2:

    [](javascript:void(0)😉

    1 package com.java_02;2 3 /*4 * java面試題--如果catch里面有return語句,finally里面的代碼還會執行嗎?5 */6 public class FinallyDemo2 {7 public static void main(String[] args) {8 System.out.println(getInt());9 } 10 11 public static int getInt() { 12 int a = 10; 13 try { 14 System.out.println(a / 0); 15 a = 20; 16 } catch (ArithmeticException e) { 17 a = 30; 18 return a; 19 /* 20 * return a 在程序執行到這一步的時候,這里不是return a 而是 return 30;這個返回路徑就形成了 21 * 但是呢,它發現后面還有finally,所以繼續執行finally的內容,a=40 22 * 再次回到以前的路徑,繼續走return 30,形成返回路徑之后,這里的a就不是a變量了,而是常量30 23 */ 24 } finally { 25 a = 40; 26 return a; //如果這樣,就又重新形成了一條返回路徑,由于只能通過1個return返回,所以這里直接返回40 27 } 28 29 // return a; 30 } 31 }

    [](javascript:void(0)😉

    執行結果:40

    78. 常見的異常類有哪些?

    • NullPointerException:當應用程序試圖訪問空對象時,則拋出該異常。
    • SQLException:提供關于數據庫訪問錯誤或其他錯誤信息的異常。
    • IndexOutOfBoundsException:指示某排序索引(例如對數組、字符串或向量的排序)超出范圍時拋出。
    • NumberFormatException:當應用程序試圖將字符串轉換成一種數值類型,但該字符串不能轉換為適當格式時,拋出該異常。
    • FileNotFoundException:當試圖打開指定路徑名表示的文件失敗時,拋出此異常。
    • IOException:當發生某種I/O異常時,拋出此異常。此類是失敗或中斷的I/O操作生成的異常的通用類。
    • ClassCastException:當試圖將對象強制轉換為不是實例的子類時,拋出該異常。
    • ArrayStoreException:試圖將錯誤類型的對象存儲到一個對象數組時拋出的異常。
    • IllegalArgumentException:拋出的異常表明向方法傳遞了一個不合法或不正確的參數。
    • ArithmeticException:當出現異常的運算條件時,拋出此異常。例如,一個整數“除以零”時,拋出此類的一個實例。
    • NegativeArraySizeException:如果應用程序試圖創建大小為負的數組,則拋出該異常。
    • NoSuchMethodException:無法找到某一特定方法時,拋出該異常。
    • SecurityException:由安全管理器拋出的異常,指示存在安全侵犯。
    • UnsupportedOperationException:當不支持請求的操作時,拋出該異常。
    • RuntimeExceptionRuntimeException:是那些可能在Java虛擬機正常運行期間拋出的異常的超類。

    八、網絡

    79. http 響應碼 301 和 302 代表的是什么?有什么區別?

    答:301,302 都是HTTP狀態的編碼,都代表著某個URL發生了轉移。

    區別:

    • 301 redirect: 301 代表永久性轉移(Permanently Moved)。
    • 302 redirect: 302 代表暫時性轉移(Temporarily Moved )。

    80. forward 和 redirect 的區別?

    Forward和Redirect代表了兩種請求轉發方式:直接轉發和間接轉發。

    直接轉發方式(Forward),客戶端和瀏覽器只發出一次請求,Servlet、HTML、JSP或其它信息資源,由第二個信息資源響應該請求,在請求對象request中,保存的對象對于每個信息資源是共享的。

    **間接轉發方式(Redirect)**實際是兩次HTTP請求,服務器端在響應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。

    舉個通俗的例子:

    直接轉發就相當于:“A找B借錢,B說沒有,B去找C借,借到借不到都會把消息傳遞給A”;

    間接轉發就相當于:“A找B借錢,B說沒有,讓A去找C借”。

    81. 簡述 tcp 和 udp的區別?

    • TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接。
    • TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付。
    • Tcp通過校驗和,重傳控制,序號標識,滑動窗口、確認應答實現可靠傳輸。如丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。
    • UDP具有較好的實時性,工作效率比TCP高,適用于對高速傳輸和實時性有較高的通信或廣播通信。
    • 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信。
    • TCP對系統資源要求較多,UDP對系統資源要求較少。

    82. tcp 為什么要三次握手,兩次不行嗎?為什么?

    為了實現可靠數據傳輸, TCP 協議的通信雙方, 都必須維護一個序列號, 以標識發送出去的數據包中, 哪些是已經被對方收到的。 三次握手的過程即是通信雙方相互告知序列號起始值, 并確認對方已經收到了序列號起始值的必經步驟。

    如果只是兩次握手, 至多只有連接發起方的起始序列號能被確認, 另一方選擇的序列號則得不到確認。

    83. 說一下 tcp 粘包是怎么產生的?

    ①. 發送方產生粘包

    采用TCP協議傳輸數據的客戶端與服務器經常是保持一個長連接的狀態(一次連接發一次數據不存在粘包),雙方在連接不斷開的情況下,可以一直傳輸數據;但當發送的數據包過于的小時,那么TCP協議默認的會啟用Nagle算法,將這些較小的數據包進行合并發送(緩沖區數據發送是一個堆壓的過程);這個合并過程就是在發送緩沖區中進行的,也就是說數據發送出來它已經是粘包的狀態了。

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xOQa767T-1618031589684)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

    ②. 接收方產生粘包

    接收方采用TCP協議接收數據時的過程是這樣的:數據到底接收方,從網絡模型的下方傳遞至傳輸層,傳輸層的TCP協議處理是將其放置接收緩沖區,然后由應用層來主動獲取(C語言用recv、read等函數);這時會出現一個問題,就是我們在程序中調用的讀取數據函數不能及時的把緩沖區中的數據拿出來,而下一個數據又到來并有一部分放入的緩沖區末尾,等我們讀取數據時就是一個粘包。(放數據的速度 > 應用層拿數據速度)

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hiU5CJEH-1618031589685)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

    84. OSI 的七層模型都有哪些?

  • 應用層:網絡服務與最終用戶的一個接口。
  • 表示層:數據的表示、安全、壓縮。
  • 會話層:建立、管理、終止會話。
  • 傳輸層:定義傳輸數據的協議端口號,以及流控和差錯校驗。
  • 網絡層:進行邏輯地址尋址,實現不同網絡之間的路徑選擇。
  • 數據鏈路層:建立邏輯連接、進行硬件地址尋址、差錯校驗等功能。
  • 物理層:建立、維護、斷開物理連接。
  • 85. get 和 post 請求有哪些區別?

    • GET在瀏覽器回退時是無害的,而POST會再次提交請求。
    • GET產生的URL地址可以被Bookmark,而POST不可以。
    • GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。
    • GET請求只能進行url編碼,而POST支持多種編碼方式。
    • GET請求參數會被完整保留在瀏覽器歷史記錄里,而POST中的參數不會被保留。
    • GET請求在URL中傳送的參數是有長度限制的,而POST么有。
    • 對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。
    • GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感信息。
    • GET參數通過URL傳遞,POST放在Request body中。

    86. 如何實現跨域?

    方式一:圖片ping或script標簽跨域

    圖片ping常用于跟蹤用戶點擊頁面或動態廣告曝光次數。
    script標簽可以得到從其他來源數據,這也是JSONP依賴的根據。

    方式二:JSONP跨域

    JSONP(JSON with Padding)是數據格式JSON的一種“使用模式”,可以讓網頁從別的網域要數據。根據 XmlHttpRequest 對象受到同源策略的影響,而利用

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AO85NRAI-1618031589686)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

    缺點:

    • 只能使用Get請求
    • 不能注冊success、error等事件監聽函數,不能很容易的確定JSONP請求是否失敗
    • JSONP是從其他域中加載代碼執行,容易受到跨站請求偽造的攻擊,其安全性無法確保

    方式三:CORS

    Cross-Origin Resource Sharing(CORS)跨域資源共享是一份瀏覽器技術的規范,提供了 Web 服務從不同域傳來沙盒腳本的方法,以避開瀏覽器的同源策略,確保安全的跨域數據傳輸?,F代瀏覽器使用CORS在API容器如XMLHttpRequest來減少HTTP請求的風險來源。與 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。服務器一般需要增加如下響應頭的一種或幾種:

    1 Access-Control-Allow-Origin: * 2 Access-Control-Allow-Methods: POST, GET, OPTIONS 3 Access-Control-Allow-Headers: X-PINGOTHER, Content-Type 4 Access-Control-Max-Age: 86400

    跨域請求默認不會攜帶Cookie信息,如果需要攜帶,請配置下述參數:

    1 "Access-Control-Allow-Credentials": true 2 // Ajax設置 3 "withCredentials": true

    方式四:window.name+iframe

    window.name通過在iframe(一般動態創建i)中加載跨域HTML文件來起作用。然后,HTML文件將傳遞給請求者的字符串內容賦值給window.name。然后,請求者可以檢索window.name值作為響應。

    • iframe標簽的跨域能力;
    • window.name屬性值在文檔刷新后依舊存在的能力(且最大允許2M左右)。

    每個iframe都有包裹它的window,而這個window是top window的子窗口。contentWindow屬性返回元素的Window對象。你可以使用這個Window對象來訪問iframe的文檔及其內部DOM。

    [](javascript:void(0)😉

    1 <!-- 2 下述用端口 3 10000表示:domainA4 10001表示:domainB5 -->6 7 <!-- localhost:10000 -->8 <script>9 var iframe = document.createElement('iframe'); 10 iframe.style.display = 'none'; // 隱藏 11 12 var state = 0; // 防止頁面無限刷新 13 iframe.onload = function() { 14 if(state === 1) { 15 console.log(JSON.parse(iframe.contentWindow.name)); 16 // 清除創建的iframe 17 iframe.contentWindow.document.write(''); 18 iframe.contentWindow.close(); 19 document.body.removeChild(iframe); 20 } else if(state === 0) { 21 state = 1; 22 // 加載完成,指向當前域,防止錯誤(proxy.html為空白頁面) 23 // Blocked a frame with origin "http://localhost:10000" from accessing a cross-origin frame. 24 iframe.contentWindow.location = 'http://localhost:10000/proxy.html'; 25 } 26 }; 27 28 iframe.src = 'http://localhost:10001'; 29 document.body.appendChild(iframe); 30 </script> 31 32 <!-- localhost:10001 --> 33 <!DOCTYPE html> 34 ... 35 <script> 36 window.name = JSON.stringify({a: 1, b: 2}); 37 </script> 38 </html>

    [](javascript:void(0)😉

    方式五:window.postMessage()

    HTML5新特性,可以用來向其他所有的 window 對象發送消息。需要注意的是我們必須要保證所有的腳本執行完才發送 MessageEvent,如果在函數執行的過程中調用了它,就會讓后面的函數超時無法執行。

    下述代碼實現了跨域存儲localStorage

    [](javascript:void(0)😉

    1 <!-- 2 下述用端口 3 10000表示:domainA4 10001表示:domainB5 -->6 7 <!-- localhost:10000 -->8 <iframe src="http://localhost:10001/msg.html" name="myPostMessage" style="display:none;">9 </iframe> 10 11 <script> 12 function main() { 13 LSsetItem('test', 'Test: ' + new Date()); 14 LSgetItem('test', function(value) { 15 console.log('value: ' + value); 16 }); 17 LSremoveItem('test'); 18 } 19 20 var callbacks = {}; 21 window.addEventListener('message', function(event) { 22 if (event.source === frames['myPostMessage']) { 23 console.log(event) 24 var data = /^#localStorage#(\d+)(null)?#([\S\s]*)/.exec(event.data); 25 if (data) { 26 if (callbacks[data[1]]) { 27 callbacks[data[1]](data[2] === 'null' ? null : data[3]); 28 } 29 delete callbacks[data[1]]; 30 } 31 } 32 }, false); 33 34 var domain = '*'; 35 // 增加 36 function LSsetItem(key, value) { 37 var obj = { 38 setItem: key, 39 value: value 40 }; 41 frames['myPostMessage'].postMessage(JSON.stringify(obj), domain); 42 } 43 // 獲取 44 function LSgetItem(key, callback) { 45 var identifier = new Date().getTime(); 46 var obj = { 47 identifier: identifier, 48 getItem: key 49 }; 50 callbacks[identifier] = callback; 51 frames['myPostMessage'].postMessage(JSON.stringify(obj), domain); 52 } 53 // 刪除 54 function LSremoveItem(key) { 55 var obj = { 56 removeItem: key 57 }; 58 frames['myPostMessage'].postMessage(JSON.stringify(obj), domain); 59 } 60 </script> 61 62 <!-- localhost:10001 --> 63 <script> 64 window.addEventListener('message', function(event) { 65 console.log('Receiver debugging', event); 66 if (event.origin == 'http://localhost:10000') { 67 var data = JSON.parse(event.data); 68 if ('setItem' in data) { 69 localStorage.setItem(data.setItem, data.value); 70 } else if ('getItem' in data) { 71 var gotItem = localStorage.getItem(data.getItem); 72 event.source.postMessage( 73 '#localStorage#' + data.identifier + 74 (gotItem === null ? 'null#' : '#' + gotItem), 75 event.origin 76 ); 77 } else if ('removeItem' in data) { 78 localStorage.removeItem(data.removeItem); 79 } 80 } 81 }, false); 82 </script>

    [](javascript:void(0)😉

    注意Safari一下,會報錯:

    Blocked a frame with origin “http://localhost:10001” from accessing a frame with origin “http://localhost:10000“. Protocols, domains, and ports must match.

    避免該錯誤,可以在Safari瀏覽器中勾選開發菜單==>停用跨域限制?;蛘咧荒苁褂梅掌鞫宿D存的方式實現,因為Safari瀏覽器默認只支持CORS跨域請求。

    方式六:修改document.domain跨子域

    前提條件:這兩個域名必須屬于同一個基礎域名!而且所用的協議,端口都要一致,否則無法利用document.domain進行跨域,所以只能跨子域

    在根域范圍內,允許把domain屬性的值設置為它的上一級域。例如,在”aaa.xxx.com”域內,可以把domain設置為 “xxx.com” 但不能設置為 “xxx.org” 或者”com”。

    現在存在兩個域名aaa.xxx.com和bbb.xxx.com。在aaa下嵌入bbb的頁面,由于其document.name不一致,無法在aaa下操作bbb的js。可以在aaa和bbb下通過js將document.name = ‘xxx.com’;設置一致,來達到互相訪問的作用。

    方式七:WebSocket

    WebSocket protocol 是HTML5一種新的協議。它實現了瀏覽器與服務器全雙工通信,同時允許跨域通訊,是server push技術的一種很棒的實現。相關文章,請查看:WebSocket、WebSocket-SockJS

    需要注意:WebSocket對象不支持DOM 2級事件偵聽器,必須使用DOM 0級語法分別定義各個事件。

    方式八:代理

    同源策略是針對瀏覽器端進行的限制,可以通過服務器端來解決該問題

    DomainA客戶端(瀏覽器) ==> DomainA服務器 ==> DomainB服務器 ==> DomainA客戶端(瀏覽器)

    來源:blog.csdn.net/ligang2585116/article/details/73072868

    87.說一下 JSONP 實現原理?

    jsonp 即 json+padding,動態創建script標簽,利用script標簽的src屬性可以獲取任何域下的js腳本,通過這個特性(也可以說漏洞),服務器端不在返貨json格式,而是返回一段調用某個函數的js代碼,在src中進行了調用,這樣實現了跨域。


    九、設計模式

    88. 說一下你熟悉的設計模式?

    參考:常用的設計模式匯總,超詳細!

    89. 簡單工廠和抽象工廠有什么區別?

    簡單工廠模式

    這個模式本身很簡單而且使用在業務較簡單的情況下。一般用于小項目或者具體產品很少擴展的情況(這樣工廠類才不用經常更改)。

    它由三種角色組成:

    • 工廠類角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯,根據邏輯不同,產生具體的工廠產品。如例子中的Driver類。
    • 抽象產品角色:它一般是具體產品繼承的父類或者實現的接口。由接口或者抽象類來實現。如例中的Car接口。
    • 具體產品角色:工廠類所創建的對象就是此角色的實例。在java中由一個具體類實現,如例子中的Benz、Bmw類。

    來用類圖來清晰的表示下的它們之間的關系:
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MSquVcc0-1618031589692)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]?

    抽象工廠模式:

    先來認識下什么是產品族: 位于不同產品等級結構中,功能相關聯的產品組成的家族。

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-h0Vu4oAM-1618031589693)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

    圖中的BmwCar和BenzCar就是兩個產品樹(產品層次結構);而如圖所示的BenzSportsCar和BmwSportsCar就是一個產品族。他們都可以放到跑車家族中,因此功能有所關聯。同理BmwBussinessCar和BenzBusinessCar也是一個產品族。

    可以這么說,它和工廠方法模式的區別就在于需要創建對象的復雜程度上。而且抽象工廠模式是三個里面最為抽象、最具一般性的。抽象工廠模式的用意為:給客戶端提供一個接口,可以創建多個產品族中的產品對象。

    而且使用抽象工廠模式還要滿足一下條件:

  • 系統中有多個產品族,而系統一次只可能消費其中一族產品
  • 同屬于同一個產品族的產品以其使用。
  • 來看看抽象工廠模式的各個角色(和工廠方法的如出一轍):

    • 抽象工廠角色: 這是工廠方法模式的核心,它與應用程序無關。是具體工廠角色必須實現的接口或者必須繼承的父類。在java中它由抽象類或者接口來實現。
    • 具體工廠角色:它含有和具體業務邏輯有關的代碼。由應用程序調用以創建對應的具體產品的對象。在java中它由具體的類來實現。
    • 抽象產品角色:它是具體產品繼承的父類或者是實現的接口。在java中一般有抽象類或者接口來實現。
    • 具體產品角色:具體工廠角色所創建的對象就是此角色的實例。在java中由具體的類來實現。

    十、Spring / Spring MVC

    90. 為什么要使用 spring?

    1.簡介

    • 目的:解決企業應用開發的復雜性
    • 功能:使用基本的JavaBean代替EJB,并提供了更多的企業應用功能
    • 范圍:任何Java應用

    簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。

    2.輕量

    從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴于Spring的特定類。

    3.控制反轉

    Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。

    4.面向切面

    Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。

    5.容器

    Spring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基于一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同于傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。

    6.框架

    Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。

    所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。

    91. 解釋一下什么是 aop?

    AOP(Aspect-Oriented Programming,面向方面編程),可以說是OOP(Object-Oriented Programing,面向對象編程)的補充和完善。OOP引入封裝、繼承和多態性等概念來建立一種對象層次結構,用以模擬公共行為的一個集合。當我們需要為分散的對象引入公共行為的時候,OOP則顯得無能為力。也就是說,OOP允許你定義從上到下的關系,但并不適合定義從左到右的關系。例如日志功能。日志代碼往往水平地散布在所有對象層次中,而與它所散布到的對象的核心功能毫無關系。對于其他類型的代碼,如安全性、異常處理和透明的持續性也是如此。這種散布在各處的無關的代碼被稱為橫切(cross-cutting)代碼,在OOP設計中,它導致了大量代碼的重復,而不利于各個模塊的重用。

    而AOP技術則恰恰相反,它利用一種稱為“橫切”的技術,剖解開封裝的對象內部,并將那些影響了多個類的公共行為封裝到一個可重用模塊,并將其名為“Aspect”,即方面。所謂“方面”,簡單地說,就是將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便于減少系統的重復代碼,降低模塊間的耦合度,并有利于未來的可操作性和可維護性。AOP代表的是一個橫向的關系,如果說“對象”是一個空心的圓柱體,其中封裝的是對象的屬性和行為;那么面向方面編程的方法,就仿佛一把利刃,將這些空心圓柱體剖開,以獲得其內部的消息。而剖開的切面,也就是所謂的“方面”了。然后它又以巧奪天功的妙手將這些剖開的切面復原,不留痕跡。

    使用“橫切”技術,AOP把軟件系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關系不大的部分是橫切關注點。橫切關注點的一個特點是,他們經常發生在核心關注點的多處,而各處都基本相似。比如權限認證、日志、事務處理。Aop 的作用在于分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。正如Avanade公司的高級方案構架師Adam Magee所說,AOP的核心思想就是“將應用程序中的商業邏輯同對其提供支持的通用服務進行分離?!?/p>

    92. 解釋一下什么是 ioc?

    IOC是Inversion of Control的縮寫,多數書籍翻譯成“控制反轉”。

    1996年,Michael Mattson在一篇有關探討面向對象框架的文章中,首先提出了IOC 這個概念。對于面向對象設計及編程的基本思想,前面我們已經講了很多了,不再贅述,簡單來說就是把復雜系統分解成相互合作的對象,這些對象類通過封裝以后,內部實現對外部是透明的,從而降低了解決問題的復雜度,而且可以靈活地被重用和擴展。

    IOC理論提出的觀點大體是這樣的:借助于“第三方”實現具有依賴關系的對象之間的解耦。如下圖:

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fXpvgUmo-1618031589694)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

    大家看到了吧,由于引進了中間位置的“第三方”,也就是IOC容器,使得A、B、C、D這4個對象沒有了耦合關系,齒輪之間的傳動全部依靠“第三方”了,全部對象的控制權全部上繳給“第三方”IOC容器,所以,IOC容器成了整個系統的關鍵核心,它起到了一種類似“粘合劑”的作用,把系統中的所有對象粘合在一起發揮作用,如果沒有這個“粘合劑”,對象與對象之間會彼此失去聯系,這就是有人把IOC容器比喻成“粘合劑”的由來。

    我們再來做個試驗:把上圖中間的IOC容器拿掉,然后再來看看這套系統:

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mP7f32S3-1618031589695)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

    我們現在看到的畫面,就是我們要實現整個系統所需要完成的全部內容。這時候,A、B、C、D這4個對象之間已經沒有了耦合關系,彼此毫無聯系,這樣的話,當你在實現A的時候,根本無須再去考慮B、C和D了,對象之間的依賴關系已經降低到了最低程度。所以,如果真能實現IOC容器,對于系統開發而言,這將是一件多么美好的事情,參與開發的每一成員只要實現自己的類就可以了,跟別人沒有任何關系!

    我們再來看看,控制反轉(IOC)到底為什么要起這么個名字?我們來對比一下:

    軟件系統在沒有引入IOC容器之前,如圖1所示,對象A依賴于對象B,那么對象A在初始化或者運行到某一點的時候,自己必須主動去創建對象B或者使用已經創建的對象B。無論是創建還是使用對象B,控制權都在自己手上。

    軟件系統在引入IOC容器之后,這種情形就完全改變了,如圖3所示,由于IOC容器的加入,對象A與對象B之間失去了直接聯系,所以,當對象A運行到需要對象B的時候,IOC容器會主動創建一個對象B注入到對象A需要的地方。

    通過前后的對比,我們不難看出來:對象A獲得依賴對象B的過程,由主動行為變為了被動行為,控制權顛倒過來了,這就是“控制反轉”這個名稱的由來。

    93. spring 有哪些主要模塊?

    Spring框架至今已集成了20多個模塊。這些模塊主要被分如下圖所示的核心容器、數據訪問/集成,、Web、AOP(面向切面編程)、工具、消息和測試模塊。

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DgADftXM-1618031589697)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

    更多信息:howtodoinjava.com/java-spring-framework-tutorials/

    94. spring 常用的注入方式有哪些?

    Spring通過DI(依賴注入)實現IOC(控制反轉),常用的注入方式主要有三種:

  • 構造方法注入
  • setter注入
  • 基于注解的注入
  • 95. spring 中的 bean 是線程安全的嗎?

    Spring容器中的Bean是否線程安全,容器本身并沒有提供Bean的線程安全策略,因此可以說spring容器中的Bean本身不具備線程安全的特性,但是具體還是要結合具體scope的Bean去研究。

    96. spring 支持幾種 bean 的作用域?

    當通過spring容器創建一個Bean實例時,不僅可以完成Bean實例的實例化,還可以為Bean指定特定的作用域。Spring支持如下5種作用域:

    • singleton:單例模式,在整個Spring IoC容器中,使用singleton定義的Bean將只有一個實例
    • prototype:原型模式,每次通過容器的getBean方法獲取prototype定義的Bean時,都將產生一個新的Bean實例
    • request:對于每次HTTP請求,使用request定義的Bean都將產生一個新實例,即每次HTTP請求將會產生不同的Bean實例。只有在Web應用中使用Spring時,該作用域才有效
    • session:對于每次HTTP Session,使用session定義的Bean豆漿產生一個新實例。同樣只有在Web應用中使用Spring時,該作用域才有效
    • globalsession:每個全局的HTTP Session,使用session定義的Bean都將產生一個新實例。典型情況下,僅在使用portlet context的時候有效。同樣只有在Web應用中使用Spring時,該作用域才有效

    其中比較常用的是singleton和prototype兩種作用域。對于singleton作用域的Bean,每次請求該Bean都將獲得相同的實例。容器負責跟蹤Bean實例的狀態,負責維護Bean實例的生命周期行為;如果一個Bean被設置成prototype作用域,程序每次請求該id的Bean,Spring都會新建一個Bean實例,然后返回給程序。在這種情況下,Spring容器僅僅使用new 關鍵字創建Bean實例,一旦創建成功,容器不在跟蹤實例,也不會維護Bean實例的狀態。

    如果不指定Bean的作用域,Spring默認使用singleton作用域。Java在創建Java實例時,需要進行內存申請;銷毀實例時,需要完成垃圾回收,這些工作都會導致系統開銷的增加。因此,prototype作用域Bean的創建、銷毀代價比較大。而singleton作用域的Bean實例一旦創建成功,可以重復使用。因此,除非必要,否則盡量避免將Bean被設置成prototype作用域。

    97. spring 自動裝配 bean 有哪些方式?

    Spring容器負責創建應用程序中的bean同時通過ID來協調這些對象之間的關系。作為開發人員,我們需要告訴Spring要創建哪些bean并且如何將其裝配到一起。

    spring中bean裝配有兩種方式:

    • 隱式的bean發現機制和自動裝配
    • 在java代碼或者XML中進行顯示配置

    當然這些方式也可以配合使用。

    98. spring 事務實現方式有哪些?

  • 編程式事務管理對基于 POJO 的應用來說是唯一選擇。我們需要在代碼中調用beginTransaction()、commit()、rollback()等事務管理相關的方法,這就是編程式事務管理。
  • 基于 TransactionProxyFactoryBean 的聲明式事務管理
  • 基于 @Transactional 的聲明式事務管理
  • 基于 Aspectj AOP 配置事務
  • 99. 說一下 spring 的事務隔離?

    事務隔離級別指的是一個事務對數據的修改與另一個并行的事務的隔離程度,當多個事務同時訪問相同數據時,如果沒有采取必要的隔離機制,就可能發生以下問題:

    • 臟讀:一個事務讀到另一個事務未提交的更新數據。
    • 幻讀:例如第一個事務對一個表中的數據進行了修改,比如這種修改涉及到表中的“全部數據行”。同時,第二個事務也修改這個表中的數據,這種修改是向表中插入“一行新數據”。那么,以后就會發生操作第一個事務的用戶發現表中還存在沒有修改的數據行,就好象發生了幻覺一樣。
    • 不可重復讀:比方說在同一個事務中先后執行兩條一模一樣的select語句,期間在此次事務中沒有執行過任何DDL語句,但先后得到的結果不一致,這就是不可重復讀。

    100. 說一下 spring mvc 運行流程?

    Spring MVC運行流程圖:

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7PzRbLIE-1618031589698)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

    Spring運行流程描述:

    \1. 用戶向服務器發送請求,請求被Spring 前端控制Servelt DispatcherServlet捕獲;

    \2. DispatcherServlet對請求URL進行解析,得到請求資源標識符(URI)。然后根據該URI,調用HandlerMapping獲得該Handler配置的所有相關的對象(包括Handler對象以及Handler對象對應的攔截器),最后以HandlerExecutionChain對象的形式返回;

    \3. DispatcherServlet 根據獲得的Handler,選擇一個合適的HandlerAdapter;(附注:如果成功獲得HandlerAdapter后,此時將開始執行攔截器的preHandler(…)方法)

    \4. 提取Request中的模型數據,填充Handler入參,開始執行Handler(Controller)。 在填充Handler的入參過程中,根據你的配置,Spring將幫你做一些額外的工作:

    • HttpMessageConveter: 將請求消息(如Json、xml等數據)轉換成一個對象,將對象轉換為指定的響應信息
    • 數據轉換:對請求消息進行數據轉換。如String轉換成Integer、Double等
    • 數據根式化:對請求消息進行數據格式化。 如將字符串轉換成格式化數字或格式化日期等
    • 數據驗證: 驗證數據的有效性(長度、格式等),驗證結果存儲到BindingResult或Error中

    \5. Handler執行完成后,向DispatcherServlet 返回一個ModelAndView對象;

    \6. 根據返回的ModelAndView,選擇一個適合的ViewResolver(必須是已經注冊到Spring容器中的ViewResolver)返回給DispatcherServlet ;

    \7. ViewResolver 結合Model和View,來渲染視圖;

    \8. 將渲染結果返回給客戶端。

    101. spring mvc 有哪些組件?

    Spring MVC的核心組件:

  • DispatcherServlet:中央控制器,把請求給轉發到具體的控制類
  • Controller:具體處理請求的控制器
  • HandlerMapping:映射處理器,負責映射中央處理器轉發給controller時的映射策略
  • ModelAndView:服務層返回的數據和視圖層的封裝類
  • ViewResolver:視圖解析器,解析具體的視圖
  • Interceptors :攔截器,負責攔截我們定義的請求然后做處理工作
  • 102. @RequestMapping 的作用是什么?

    RequestMapping是一個用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

    RequestMapping注解有六個屬性,下面我們把她分成三類進行說明。

    value, method:

    • value:指定請求的實際地址,指定的地址可以是URI Template 模式(后面將會說明);
    • method:指定請求的method類型, GET、POST、PUT、DELETE等;

    consumes,produces

    • consumes:指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;
    • produces:指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;

    params,headers

    • params: 指定request中必須包含某些參數值是,才讓該方法處理。
    • headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求。

    未完待續…

    總結

    以上是生活随笔為你收集整理的Java面试宝典(超级详细)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    18禁黄网站男男禁片免费观看 | 精品午夜福利在线观看 | 人妻尝试又大又粗久久 | 亚洲精品综合五月久久小说 | 大胆欧美熟妇xx | 久久久久久亚洲精品a片成人 | 久久99精品久久久久久动态图 | 久久综合九色综合97网 | 熟女少妇在线视频播放 | 国产人妻精品一区二区三区不卡 | 日本www一道久久久免费榴莲 | 午夜福利不卡在线视频 | 精品无码成人片一区二区98 | 丁香啪啪综合成人亚洲 | 鲁大师影院在线观看 | 国产真人无遮挡作爱免费视频 | 国产乱子伦视频在线播放 | 特级做a爰片毛片免费69 | 欧美人与物videos另类 | 亚洲精品一区国产 | 久久亚洲中文字幕无码 | 久久精品中文字幕大胸 | 水蜜桃亚洲一二三四在线 | 天堂а√在线中文在线 | 亚洲区小说区激情区图片区 | 国产午夜亚洲精品不卡下载 | 女人被男人躁得好爽免费视频 | 国产香蕉尹人综合在线观看 | 红桃av一区二区三区在线无码av | 无码精品国产va在线观看dvd | 欧美日本精品一区二区三区 | 欧洲熟妇色 欧美 | 一本久久a久久精品亚洲 | 在线播放无码字幕亚洲 | 无套内谢老熟女 | 一本久道久久综合婷婷五月 | 伊人久久大香线蕉亚洲 | 一本久久伊人热热精品中文字幕 | 中文亚洲成a人片在线观看 | 日韩精品无码一区二区中文字幕 | 亚洲熟妇自偷自拍另类 | 久久99精品久久久久久动态图 | 97se亚洲精品一区 | 无码纯肉视频在线观看 | 国内少妇偷人精品视频免费 | 自拍偷自拍亚洲精品被多人伦好爽 | 狠狠色噜噜狠狠狠7777奇米 | 99久久人妻精品免费一区 | 亚洲精品久久久久久久久久久 | 国产麻豆精品精东影业av网站 | 人妻少妇精品视频专区 | 精品欧美一区二区三区久久久 | 午夜精品久久久久久久 | 亚洲精品久久久久久久久久久 | 国产亚av手机在线观看 | 国产人妻人伦精品1国产丝袜 | aⅴ在线视频男人的天堂 | 欧美日本免费一区二区三区 | 奇米影视888欧美在线观看 | 狠狠噜狠狠狠狠丁香五月 | 久久99精品国产.久久久久 | 日本丰满护士爆乳xxxx | 久久亚洲国产成人精品性色 | 日日鲁鲁鲁夜夜爽爽狠狠 | 大肉大捧一进一出好爽视频 | 大胆欧美熟妇xx | 精品国产aⅴ无码一区二区 | 日本大乳高潮视频在线观看 | 成人性做爰aaa片免费看不忠 | 少妇高潮喷潮久久久影院 | 亚洲精品鲁一鲁一区二区三区 | 激情内射亚州一区二区三区爱妻 | 国产真实伦对白全集 | 国产成人久久精品流白浆 | 亚洲精品国产精品乱码不卡 | 成人片黄网站色大片免费观看 | 欧美国产日韩亚洲中文 | 国产熟妇另类久久久久 | 福利一区二区三区视频在线观看 | 亚洲精品久久久久avwww潮水 | 人妻无码久久精品人妻 | 小泽玛莉亚一区二区视频在线 | 性色av无码免费一区二区三区 | 娇妻被黑人粗大高潮白浆 | 欧美丰满熟妇xxxx | 高潮喷水的毛片 | 真人与拘做受免费视频 | 国产亚洲精品久久久久久 | 一本无码人妻在中文字幕免费 | 丝袜 中出 制服 人妻 美腿 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲精品综合一区二区三区在线 | 大地资源网第二页免费观看 | av香港经典三级级 在线 | 一二三四在线观看免费视频 | 日韩人妻少妇一区二区三区 | 97夜夜澡人人爽人人喊中国片 | 少妇人妻大乳在线视频 | 亚洲综合伊人久久大杳蕉 | 97无码免费人妻超级碰碰夜夜 | 久久精品女人天堂av免费观看 | 日韩av无码一区二区三区 | 国产精品久久久一区二区三区 | 精品一区二区三区无码免费视频 | 人妻有码中文字幕在线 | 中文字幕无线码免费人妻 | 天天躁夜夜躁狠狠是什么心态 | 国产熟妇高潮叫床视频播放 | 日韩精品成人一区二区三区 | 国产凸凹视频一区二区 | 国产97色在线 | 免 | 美女极度色诱视频国产 | 俺去俺来也www色官网 | 国产熟妇高潮叫床视频播放 | 丰满妇女强制高潮18xxxx | 永久黄网站色视频免费直播 | 伊人久久大香线蕉亚洲 | 日韩精品成人一区二区三区 | 丁香花在线影院观看在线播放 | 色一情一乱一伦一视频免费看 | 2020最新国产自产精品 | 国产另类ts人妖一区二区 | 牲欲强的熟妇农村老妇女视频 | 波多野结衣av一区二区全免费观看 | 永久黄网站色视频免费直播 | 久久99精品久久久久久动态图 | 国产精品无码永久免费888 | 亚洲国产成人av在线观看 | 激情爆乳一区二区三区 | 中文毛片无遮挡高清免费 | 97久久国产亚洲精品超碰热 | 性色欲网站人妻丰满中文久久不卡 | 亚洲小说春色综合另类 | 久久精品国产亚洲精品 | 午夜福利一区二区三区在线观看 | 日日摸日日碰夜夜爽av | 偷窥日本少妇撒尿chinese | 激情综合激情五月俺也去 | 欧美性生交活xxxxxdddd | av人摸人人人澡人人超碰下载 | 亚洲日韩一区二区 | 美女黄网站人色视频免费国产 | 日本免费一区二区三区最新 | 久久综合九色综合欧美狠狠 | 国产精品久久久久影院嫩草 | 亚洲精品久久久久久一区二区 | 国产av人人夜夜澡人人爽麻豆 | 蜜桃无码一区二区三区 | 香港三级日本三级妇三级 | 无码人妻黑人中文字幕 | 久久视频在线观看精品 | 亚洲中文无码av永久不收费 | 亚洲另类伦春色综合小说 | 欧美日韩久久久精品a片 | 奇米影视7777久久精品人人爽 | 性欧美牲交xxxxx视频 | 国产在线精品一区二区三区直播 | 少妇人妻偷人精品无码视频 | 一本加勒比波多野结衣 | 亚洲va中文字幕无码久久不卡 | 亚洲春色在线视频 | 乱码午夜-极国产极内射 | 久9re热视频这里只有精品 | 成人一区二区免费视频 | 在线 国产 欧美 亚洲 天堂 | 婷婷色婷婷开心五月四房播播 | 国产69精品久久久久app下载 | 一个人免费观看的www视频 | 久久国产精品精品国产色婷婷 | 亚洲精品一区二区三区大桥未久 | 亚洲精品中文字幕久久久久 | 日韩人妻无码一区二区三区久久99 | 久久精品丝袜高跟鞋 | 日韩av无码中文无码电影 | 欧美人与善在线com | 亚洲成av人片在线观看无码不卡 | √天堂中文官网8在线 | 午夜熟女插插xx免费视频 | 最新版天堂资源中文官网 | 免费国产黄网站在线观看 | 日韩少妇内射免费播放 | 女人被爽到呻吟gif动态图视看 | 欧美一区二区三区 | 久久精品一区二区三区四区 | 高潮毛片无遮挡高清免费视频 | 国产精品人人妻人人爽 | 国产精品.xx视频.xxtv | 无码av免费一区二区三区试看 | 亚洲精品国产品国语在线观看 | 成年美女黄网站色大免费视频 | 中文字幕无码免费久久99 | 国产在线无码精品电影网 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲熟妇色xxxxx欧美老妇y | 偷窥日本少妇撒尿chinese | 激情爆乳一区二区三区 | 成人片黄网站色大片免费观看 | 成人无码影片精品久久久 | 久久99精品国产麻豆蜜芽 | 波多野结衣av一区二区全免费观看 | 狠狠亚洲超碰狼人久久 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 免费观看黄网站 | 色偷偷人人澡人人爽人人模 | 亚洲天堂2017无码 | 亚洲狠狠色丁香婷婷综合 | 国产精品无码成人午夜电影 | 国产精品-区区久久久狼 | 午夜福利一区二区三区在线观看 | 欧美野外疯狂做受xxxx高潮 | 国产成人精品优优av | 亚洲精品成人福利网站 | 欧美丰满熟妇xxxx性ppx人交 | 成人亚洲精品久久久久软件 | 亚洲成av人在线观看网址 | 亚洲va欧美va天堂v国产综合 | 欧美午夜特黄aaaaaa片 | 亚洲区小说区激情区图片区 | 国内精品一区二区三区不卡 | 欧美35页视频在线观看 | www一区二区www免费 | 国产精品.xx视频.xxtv | 性色av无码免费一区二区三区 | 精品无码一区二区三区爱欲 | 波多野结衣 黑人 | 任你躁在线精品免费 | 久久精品人人做人人综合 | 亚洲国产精品久久久天堂 | 一本精品99久久精品77 | 国产97在线 | 亚洲 | 无码福利日韩神码福利片 | 精品国产麻豆免费人成网站 | 亚洲狠狠婷婷综合久久 | 2020久久香蕉国产线看观看 | 久久国产精品精品国产色婷婷 | 国产高清不卡无码视频 | 国产精品高潮呻吟av久久4虎 | 国产综合色产在线精品 | 天堂亚洲免费视频 | 亚洲男人av天堂午夜在 | 丝袜足控一区二区三区 | 男女下面进入的视频免费午夜 | 亚洲午夜福利在线观看 | 又大又紧又粉嫩18p少妇 | 亚洲色大成网站www | 亚洲欧洲日本综合aⅴ在线 | 亚洲成色www久久网站 | 日本xxxx色视频在线观看免费 | 国产偷国产偷精品高清尤物 | 男女作爱免费网站 | 无码人妻丰满熟妇区毛片18 | 丝袜足控一区二区三区 | 亚洲一区二区三区香蕉 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲爆乳无码专区 | 日韩少妇内射免费播放 | 99久久久国产精品无码免费 | 午夜肉伦伦影院 | 国色天香社区在线视频 | 国产另类ts人妖一区二区 | 在线天堂新版最新版在线8 | 精品亚洲成av人在线观看 | 88国产精品欧美一区二区三区 | 九九久久精品国产免费看小说 | 欧美日韩一区二区三区自拍 | 中文字幕av日韩精品一区二区 | 日日摸天天摸爽爽狠狠97 | 国产精品高潮呻吟av久久4虎 | 国产精品第一区揄拍无码 | 亚洲国产精品久久人人爱 | 国内精品人妻无码久久久影院蜜桃 | 日日躁夜夜躁狠狠躁 | 18黄暴禁片在线观看 | 亚洲中文字幕成人无码 | 人人妻人人澡人人爽精品欧美 | 精品偷自拍另类在线观看 | 图片区 小说区 区 亚洲五月 | 亚洲国产精品一区二区美利坚 | 亚洲熟妇自偷自拍另类 | 成在人线av无码免费 | 色五月丁香五月综合五月 | 2019nv天堂香蕉在线观看 | 久久国产精品萌白酱免费 | 国产精品视频免费播放 | 蜜臀av无码人妻精品 | 人人妻人人澡人人爽欧美精品 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲精品美女久久久久久久 | 欧美zoozzooz性欧美 | 欧美日韩在线亚洲综合国产人 | 亚洲精品鲁一鲁一区二区三区 | 久久久久se色偷偷亚洲精品av | 熟妇人妻无码xxx视频 | 亚洲成av人片天堂网无码】 | 国产婷婷色一区二区三区在线 | 精品人妻人人做人人爽夜夜爽 | 18禁止看的免费污网站 | 亚洲国产午夜精品理论片 | 人妻少妇精品视频专区 | 人妻少妇精品无码专区动漫 | 无码人妻丰满熟妇区五十路百度 | 国产综合在线观看 | 久久久久成人精品免费播放动漫 | 大胆欧美熟妇xx | 欧美性猛交内射兽交老熟妇 | 99久久精品国产一区二区蜜芽 | 伊人久久大香线蕉午夜 | aa片在线观看视频在线播放 | 免费观看的无遮挡av | 久久久久成人片免费观看蜜芽 | 久久国产36精品色熟妇 | 丰满人妻翻云覆雨呻吟视频 | 亚洲欧美日韩综合久久久 | 亚洲欧美综合区丁香五月小说 | 国产精品亚洲一区二区三区喷水 | 国产高清av在线播放 | 女人被男人爽到呻吟的视频 | 黑人大群体交免费视频 | 精品厕所偷拍各类美女tp嘘嘘 | 国产成人av免费观看 | 免费国产黄网站在线观看 | 久久精品女人天堂av免费观看 | 妺妺窝人体色www在线小说 | 99久久无码一区人妻 | 狠狠躁日日躁夜夜躁2020 | 久久久久久亚洲精品a片成人 | 伊人色综合久久天天小片 | 99精品久久毛片a片 | 天堂久久天堂av色综合 | 好男人社区资源 | 亚洲性无码av中文字幕 | 人妻少妇精品视频专区 | 亚洲综合在线一区二区三区 | 老太婆性杂交欧美肥老太 | 爆乳一区二区三区无码 | 亚洲色www成人永久网址 | 300部国产真实乱 | 西西人体www44rt大胆高清 | 日韩人妻无码中文字幕视频 | 色 综合 欧美 亚洲 国产 | 亚洲精品成人av在线 | 国内精品久久久久久中文字幕 | 欧美成人免费全部网站 | 日本爽爽爽爽爽爽在线观看免 | 麻豆国产97在线 | 欧洲 | 永久免费观看国产裸体美女 | 亚无码乱人伦一区二区 | 久久综合久久自在自线精品自 | 精品无码一区二区三区的天堂 | 99久久人妻精品免费一区 | www国产亚洲精品久久久日本 | 少妇的肉体aa片免费 | 色婷婷久久一区二区三区麻豆 | 男女作爱免费网站 | 久久99精品国产.久久久久 | 亚洲日韩av片在线观看 | 久久久中文久久久无码 | 久久综合激激的五月天 | 国产一区二区三区四区五区加勒比 | 亚洲欧洲无卡二区视頻 | 亚洲小说图区综合在线 | 日韩 欧美 动漫 国产 制服 | 国产免费无码一区二区视频 | 在线观看国产午夜福利片 | 亚洲成av人综合在线观看 | 人妻与老人中文字幕 | 扒开双腿疯狂进出爽爽爽视频 | 大肉大捧一进一出视频出来呀 | 亚洲欧美精品伊人久久 | 日本精品人妻无码免费大全 | 97色伦图片97综合影院 | 强开小婷嫩苞又嫩又紧视频 | 蜜臀av无码人妻精品 | 蜜桃av抽搐高潮一区二区 | 日本乱偷人妻中文字幕 | 欧美老人巨大xxxx做受 | 欧美性猛交内射兽交老熟妇 | 俄罗斯老熟妇色xxxx | 精品 日韩 国产 欧美 视频 | 国产成人一区二区三区在线观看 | 国产人妻精品一区二区三区 | 无码精品国产va在线观看dvd | 搡女人真爽免费视频大全 | 亚洲色偷偷偷综合网 | 人妻人人添人妻人人爱 | 亚洲成色www久久网站 | 人妻天天爽夜夜爽一区二区 | 亚洲毛片av日韩av无码 | 无码毛片视频一区二区本码 | 国产成人精品久久亚洲高清不卡 | 激情内射日本一区二区三区 | 日韩人妻无码一区二区三区久久99 | 女人高潮内射99精品 | 国产欧美熟妇另类久久久 | 亚洲自偷精品视频自拍 | 蜜臀av无码人妻精品 | 久久久久人妻一区精品色欧美 | 久久久婷婷五月亚洲97号色 | 午夜福利试看120秒体验区 | 永久免费观看美女裸体的网站 | 99精品久久毛片a片 | 成人无码精品一区二区三区 | 天堂亚洲2017在线观看 | 久久人人97超碰a片精品 | 日本免费一区二区三区最新 | 色婷婷av一区二区三区之红樱桃 | 亚洲色偷偷男人的天堂 | 欧美老妇交乱视频在线观看 | 娇妻被黑人粗大高潮白浆 | 少妇人妻偷人精品无码视频 | aa片在线观看视频在线播放 | 亚洲日韩乱码中文无码蜜桃臀网站 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲欧美日韩国产精品一区二区 | 日韩av无码中文无码电影 | 丰满人妻翻云覆雨呻吟视频 | 久久久久99精品国产片 | 日日躁夜夜躁狠狠躁 | 55夜色66夜色国产精品视频 | 爱做久久久久久 | 亚洲日韩一区二区三区 | 7777奇米四色成人眼影 | 一本色道久久综合亚洲精品不卡 | 最新国产麻豆aⅴ精品无码 | 国产一区二区不卡老阿姨 | 久久亚洲中文字幕精品一区 | 少妇愉情理伦片bd | 在线视频网站www色 | 国产人妻大战黑人第1集 | 国产午夜福利亚洲第一 | 久久99精品国产.久久久久 | 久久久久久九九精品久 | 国产va免费精品观看 | 精品一区二区三区无码免费视频 | 网友自拍区视频精品 | 国产无遮挡又黄又爽又色 | 国产超级va在线观看视频 | 国产在热线精品视频 | aⅴ亚洲 日韩 色 图网站 播放 | 日本欧美一区二区三区乱码 | 日韩在线不卡免费视频一区 | 免费无码午夜福利片69 | 国产免费久久精品国产传媒 | 中文字幕av伊人av无码av | 午夜理论片yy44880影院 | 久久精品女人的天堂av | 美女毛片一区二区三区四区 | 亚洲人成影院在线无码按摩店 | 图片小说视频一区二区 | 99久久精品国产一区二区蜜芽 | 成人无码影片精品久久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产在热线精品视频 | 国内老熟妇对白xxxxhd | 国产在线精品一区二区三区直播 | 在线а√天堂中文官网 | 日韩无套无码精品 | 男女超爽视频免费播放 | 久久综合网欧美色妞网 | 无遮无挡爽爽免费视频 | 国产精品-区区久久久狼 | 日韩人妻系列无码专区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 午夜精品一区二区三区在线观看 | 亚洲码国产精品高潮在线 | 人妻插b视频一区二区三区 | 亚洲国产午夜精品理论片 | 青春草在线视频免费观看 | 日日碰狠狠丁香久燥 | 久久久久成人精品免费播放动漫 | 人人爽人人爽人人片av亚洲 | 久久视频在线观看精品 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久久久久九九精品久 | 少妇性荡欲午夜性开放视频剧场 | 高清无码午夜福利视频 | 日本爽爽爽爽爽爽在线观看免 | 精品日本一区二区三区在线观看 | 伊人久久大香线焦av综合影院 | 日本欧美一区二区三区乱码 | 亚洲第一无码av无码专区 | 老司机亚洲精品影院无码 | 国产成人精品视频ⅴa片软件竹菊 | 国产亚洲人成a在线v网站 | 特黄特色大片免费播放器图片 | 色婷婷综合激情综在线播放 | 在线看片无码永久免费视频 | 性欧美videos高清精品 | 精品人妻中文字幕有码在线 | 亚洲精品成人av在线 | 亚洲狠狠婷婷综合久久 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 日产精品高潮呻吟av久久 | 国产在热线精品视频 | 自拍偷自拍亚洲精品10p | 国产免费久久精品国产传媒 | 午夜时刻免费入口 | 国产精品久久国产三级国 | 67194成是人免费无码 | 一本久道高清无码视频 | 国产精品va在线播放 | 亚洲熟悉妇女xxx妇女av | 欧美猛少妇色xxxxx | 两性色午夜视频免费播放 | 骚片av蜜桃精品一区 | 清纯唯美经典一区二区 | 欧美人与牲动交xxxx | 中文字幕人妻无码一夲道 | 自拍偷自拍亚洲精品被多人伦好爽 | www成人国产高清内射 | 国产香蕉尹人综合在线观看 | 丝袜人妻一区二区三区 | 欧美日韩一区二区免费视频 | 国产成人精品三级麻豆 | 久久精品成人欧美大片 | 一本色道久久综合亚洲精品不卡 | 麻豆精产国品 | 免费人成在线观看网站 | 亚洲日本在线电影 | 美女黄网站人色视频免费国产 | 狠狠亚洲超碰狼人久久 | 午夜丰满少妇性开放视频 | 图片小说视频一区二区 | 中文无码伦av中文字幕 | 婷婷五月综合缴情在线视频 | 双乳奶水饱满少妇呻吟 | 国产精品第一区揄拍无码 | 熟女少妇人妻中文字幕 | 六十路熟妇乱子伦 | 欧美乱妇无乱码大黄a片 | 学生妹亚洲一区二区 | 欧美日本日韩 | 夫妻免费无码v看片 | 亚洲精品成a人在线观看 | 欧美 日韩 亚洲 在线 | 久久久亚洲欧洲日产国码αv | yw尤物av无码国产在线观看 | 精品熟女少妇av免费观看 | 亚洲熟熟妇xxxx | 成年美女黄网站色大免费视频 | 欧美三级不卡在线观看 | 综合网日日天干夜夜久久 | 黄网在线观看免费网站 | 精品久久8x国产免费观看 | 久久久精品欧美一区二区免费 | 无码人妻久久一区二区三区不卡 | 毛片内射-百度 | 国产内射老熟女aaaa | 欧美丰满熟妇xxxx性ppx人交 | 国产熟女一区二区三区四区五区 | 久久无码中文字幕免费影院蜜桃 | 国产无遮挡又黄又爽免费视频 | 丝袜足控一区二区三区 | 十八禁真人啪啪免费网站 | 亚洲成av人片在线观看无码不卡 | 老太婆性杂交欧美肥老太 | 55夜色66夜色国产精品视频 | 老司机亚洲精品影院无码 | √8天堂资源地址中文在线 | 麻豆国产丝袜白领秘书在线观看 | 人妻aⅴ无码一区二区三区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 亚洲成a人一区二区三区 | 亚洲 激情 小说 另类 欧美 | 国产成人无码a区在线观看视频app | 久久精品国产日本波多野结衣 | 国产特级毛片aaaaaaa高清 | 九月婷婷人人澡人人添人人爽 | 精品一区二区不卡无码av | 亚洲va中文字幕无码久久不卡 | 一本精品99久久精品77 | 少妇久久久久久人妻无码 | 熟妇女人妻丰满少妇中文字幕 | 亚洲va中文字幕无码久久不卡 | 大乳丰满人妻中文字幕日本 | 国产99久久精品一区二区 | 精品夜夜澡人妻无码av蜜桃 | 国内精品久久久久久中文字幕 | 国产99久久精品一区二区 | 伊人久久大香线蕉av一区二区 | 乱人伦人妻中文字幕无码 | 亚洲国产精品久久人人爱 | 日韩少妇内射免费播放 | 日韩av无码中文无码电影 | 国产精品无码一区二区三区不卡 | 亚洲综合伊人久久大杳蕉 | 亚洲成av人片天堂网无码】 | 麻豆国产丝袜白领秘书在线观看 | 亚洲国产av精品一区二区蜜芽 | 亚洲一区二区三区在线观看网站 | 蜜桃视频插满18在线观看 | 精品偷自拍另类在线观看 | 无码帝国www无码专区色综合 | 精品日本一区二区三区在线观看 | 日韩精品无码一区二区中文字幕 | www一区二区www免费 | 精品水蜜桃久久久久久久 | 色偷偷人人澡人人爽人人模 | 午夜精品一区二区三区在线观看 | 宝宝好涨水快流出来免费视频 | 99久久精品午夜一区二区 | 精品国产一区二区三区四区在线看 | 国产精品久久久久影院嫩草 | 国产美女精品一区二区三区 | 丰满人妻翻云覆雨呻吟视频 | 97久久国产亚洲精品超碰热 | 亚洲色大成网站www国产 | 国产精品久久久久9999小说 | 色妞www精品免费视频 | 亚洲aⅴ无码成人网站国产app | 国产特级毛片aaaaaaa高清 | 一本久久伊人热热精品中文字幕 | 精品国产乱码久久久久乱码 | 国产成人精品久久亚洲高清不卡 | 国产免费久久久久久无码 | 大地资源中文第3页 | 激情人妻另类人妻伦 | 亚洲爆乳大丰满无码专区 | 国产超碰人人爽人人做人人添 | 国产精品亚洲lv粉色 | 久久精品中文字幕大胸 | 西西人体www44rt大胆高清 | 国产人妻精品午夜福利免费 | 亚洲春色在线视频 | 中文字幕av伊人av无码av | 无码任你躁久久久久久久 | 又大又黄又粗又爽的免费视频 | 国产真实夫妇视频 | 久久久精品人妻久久影视 | 小sao货水好多真紧h无码视频 | 澳门永久av免费网站 | 色欲人妻aaaaaaa无码 | 国产亚洲人成在线播放 | 久激情内射婷内射蜜桃人妖 | 欧美性色19p | ass日本丰满熟妇pics | 亚洲国产精品一区二区第一页 | 天天拍夜夜添久久精品 | 国产av一区二区精品久久凹凸 | 国产精品鲁鲁鲁 | 狠狠色噜噜狠狠狠狠7777米奇 | 免费无码av一区二区 | 国语精品一区二区三区 | 久久久久99精品成人片 | 粗大的内捧猛烈进出视频 | 丰满少妇人妻久久久久久 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 成人三级无码视频在线观看 | 天天躁日日躁狠狠躁免费麻豆 | 99麻豆久久久国产精品免费 | 永久免费精品精品永久-夜色 | 亚洲小说图区综合在线 | 男女爱爱好爽视频免费看 | 人妻少妇精品视频专区 | 久久精品人人做人人综合试看 | 99久久久无码国产aaa精品 | 欧美人妻一区二区三区 | 内射欧美老妇wbb | 国产三级久久久精品麻豆三级 | 国内精品人妻无码久久久影院 | 国产成人无码专区 | 天天躁夜夜躁狠狠是什么心态 | 色婷婷av一区二区三区之红樱桃 | 纯爱无遮挡h肉动漫在线播放 | 日韩人妻无码一区二区三区久久99 | 欧美日韩色另类综合 | 1000部啪啪未满十八勿入下载 | 亚洲精品成a人在线观看 | 西西人体www44rt大胆高清 | 久久 国产 尿 小便 嘘嘘 | 亚洲色无码一区二区三区 | 成人精品视频一区二区 | 性啪啪chinese东北女人 | 久久久婷婷五月亚洲97号色 | 精品人妻中文字幕有码在线 | 狂野欧美激情性xxxx | 狠狠亚洲超碰狼人久久 | 7777奇米四色成人眼影 | 国产在线aaa片一区二区99 | 精品国产一区二区三区四区在线看 | 一本一道久久综合久久 | 国产日产欧产精品精品app | 国产激情精品一区二区三区 | 亚洲欧美精品伊人久久 | 国产成人无码av片在线观看不卡 | 黑人大群体交免费视频 | 成人女人看片免费视频放人 | 日产国产精品亚洲系列 | 一本无码人妻在中文字幕免费 | 欧美亚洲国产一区二区三区 | 国产精品无码mv在线观看 | 最近的中文字幕在线看视频 | 日韩欧美中文字幕公布 | 九九在线中文字幕无码 | 亚洲色偷偷偷综合网 | 少妇性l交大片欧洲热妇乱xxx | 亚拍精品一区二区三区探花 | 久久精品国产一区二区三区肥胖 | 欧美黑人乱大交 | 老熟妇乱子伦牲交视频 | 天堂а√在线地址中文在线 | 国产区女主播在线观看 | 国产乡下妇女做爰 | 久久久久99精品成人片 | 国产成人无码a区在线观看视频app | 又紧又大又爽精品一区二区 | 日日摸夜夜摸狠狠摸婷婷 | 人人妻人人澡人人爽欧美精品 | 荫蒂添的好舒服视频囗交 | 一本久道久久综合狠狠爱 | 久久久精品人妻久久影视 | 波多野42部无码喷潮在线 | 丰满岳乱妇在线观看中字无码 | 红桃av一区二区三区在线无码av | 55夜色66夜色国产精品视频 | 欧美阿v高清资源不卡在线播放 | 亚洲精品鲁一鲁一区二区三区 | 国产成人无码a区在线观看视频app | 亚洲人成人无码网www国产 | 亚洲人成人无码网www国产 | 国产精品人人妻人人爽 | 97色伦图片97综合影院 | 日本成熟视频免费视频 | 美女黄网站人色视频免费国产 | 影音先锋中文字幕无码 | 大地资源中文第3页 | 强奷人妻日本中文字幕 | 亚洲国产av美女网站 | 久久精品女人的天堂av | 乱人伦人妻中文字幕无码久久网 | 日韩精品乱码av一区二区 | 伊人久久大香线焦av综合影院 | 天干天干啦夜天干天2017 | 日本乱人伦片中文三区 | 亚洲欧美国产精品专区久久 | 丁香啪啪综合成人亚洲 | 久久97精品久久久久久久不卡 | 麻豆国产97在线 | 欧洲 | 97精品人妻一区二区三区香蕉 | av香港经典三级级 在线 | 午夜性刺激在线视频免费 | 综合激情五月综合激情五月激情1 | 国产午夜视频在线观看 | 天天做天天爱天天爽综合网 | 亚洲国产精华液网站w | 亚洲精品国产品国语在线观看 | 久久亚洲日韩精品一区二区三区 | 国产三级精品三级男人的天堂 | 久久久精品欧美一区二区免费 | 国产精品久久久久久亚洲影视内衣 | 粗大的内捧猛烈进出视频 | 久久伊人色av天堂九九小黄鸭 | 久久精品国产一区二区三区 | 永久黄网站色视频免费直播 | 色诱久久久久综合网ywww | 对白脏话肉麻粗话av | 亚洲一区二区三区 | 国产乱人伦偷精品视频 | 一本精品99久久精品77 | 国产va免费精品观看 | 国产美女极度色诱视频www | а√天堂www在线天堂小说 | 久精品国产欧美亚洲色aⅴ大片 | 色噜噜亚洲男人的天堂 | 在线播放无码字幕亚洲 | 国产午夜视频在线观看 | 免费观看又污又黄的网站 | 国产网红无码精品视频 | 99精品国产综合久久久久五月天 | 久久国内精品自在自线 | 亚洲国产精品久久人人爱 | 成人一在线视频日韩国产 | 国产精品办公室沙发 | 国产精品二区一区二区aⅴ污介绍 | 国产免费久久精品国产传媒 | 免费乱码人妻系列无码专区 | 免费观看激色视频网站 | 午夜肉伦伦影院 | 性史性农村dvd毛片 | 女高中生第一次破苞av | 装睡被陌生人摸出水好爽 | 国产午夜精品一区二区三区嫩草 | 午夜精品久久久久久久久 | 荫蒂添的好舒服视频囗交 | 国产精品成人av在线观看 | 又大又紧又粉嫩18p少妇 | 亚洲天堂2017无码中文 | 精品无人国产偷自产在线 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲成av人影院在线观看 | 国产精品久久国产精品99 | 中文字幕无码日韩专区 | 波多野结衣乳巨码无在线观看 | 网友自拍区视频精品 | 一本久久a久久精品亚洲 | 又黄又爽又色的视频 | 中文字幕乱码人妻无码久久 | 成人试看120秒体验区 | 一本久久a久久精品亚洲 | 黑人粗大猛烈进出高潮视频 | 99久久精品午夜一区二区 | 免费无码一区二区三区蜜桃大 | 在线播放免费人成毛片乱码 | 中文精品无码中文字幕无码专区 | 精品亚洲成av人在线观看 | 亚洲性无码av中文字幕 | 青春草在线视频免费观看 | 黑人巨大精品欧美黑寡妇 | 日韩av无码中文无码电影 | 国产一区二区三区影院 | 牛和人交xxxx欧美 | 国精品人妻无码一区二区三区蜜柚 | 日韩人妻无码中文字幕视频 | 国色天香社区在线视频 | 色五月丁香五月综合五月 | 国产乱人无码伦av在线a | 久久久精品成人免费观看 | 女人被男人躁得好爽免费视频 | 最近免费中文字幕中文高清百度 | 亚洲综合色区中文字幕 | 成人动漫在线观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 一本久久伊人热热精品中文字幕 | 99久久人妻精品免费一区 | 亚洲色欲色欲欲www在线 | 欧美怡红院免费全部视频 | 国产亚洲精品久久久久久久久动漫 | 亚洲区欧美区综合区自拍区 | 5858s亚洲色大成网站www | 97久久国产亚洲精品超碰热 | 亚洲中文字幕在线无码一区二区 | 在线亚洲高清揄拍自拍一品区 | 色婷婷欧美在线播放内射 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲区小说区激情区图片区 | 国产内射老熟女aaaa | 欧美日本精品一区二区三区 | 国产精品久久久久7777 | 国产亚洲tv在线观看 | 亚洲第一网站男人都懂 | 久久国内精品自在自线 | 亚洲男女内射在线播放 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲色成人中文字幕网站 | 久久久久成人片免费观看蜜芽 | 国产特级毛片aaaaaaa高清 | 性啪啪chinese东北女人 | 无遮无挡爽爽免费视频 | 欧美日韩一区二区免费视频 | 超碰97人人做人人爱少妇 | 中文字幕人成乱码熟女app | 免费无码av一区二区 | 日本一区二区三区免费高清 | 亚洲毛片av日韩av无码 | 亚洲自偷精品视频自拍 | 97资源共享在线视频 | 婷婷六月久久综合丁香 | 久久99久久99精品中文字幕 | 十八禁真人啪啪免费网站 | 亚洲 a v无 码免 费 成 人 a v | 内射巨臀欧美在线视频 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲精品无码国产 | 国产两女互慰高潮视频在线观看 | 免费无码的av片在线观看 | 色综合久久中文娱乐网 | 又紧又大又爽精品一区二区 | 国产超级va在线观看视频 | 天堂在线观看www | 欧美人与牲动交xxxx | 中文字幕人妻无码一夲道 | 岛国片人妻三上悠亚 | 亚洲 a v无 码免 费 成 人 a v | 草草网站影院白丝内射 | 人人妻人人藻人人爽欧美一区 | 无码乱肉视频免费大全合集 | 欧美三级a做爰在线观看 | 日产精品高潮呻吟av久久 | 男女爱爱好爽视频免费看 | 大肉大捧一进一出视频出来呀 | 国内精品一区二区三区不卡 | 人妻少妇被猛烈进入中文字幕 | 精品少妇爆乳无码av无码专区 | 亚洲码国产精品高潮在线 | 黄网在线观看免费网站 | 一个人看的视频www在线 | 色妞www精品免费视频 | 欧美老熟妇乱xxxxx | 国产精品内射视频免费 | 一二三四社区在线中文视频 | 久久精品中文闷骚内射 | 国产av无码专区亚洲a∨毛片 | 人妻天天爽夜夜爽一区二区 | 国产精品视频免费播放 | 亚洲国产欧美日韩精品一区二区三区 | 国精产品一区二区三区 | 天天爽夜夜爽夜夜爽 | 激情内射亚州一区二区三区爱妻 | 国产精品18久久久久久麻辣 | 欧美自拍另类欧美综合图片区 | 欧美喷潮久久久xxxxx | 中文字幕人妻无码一区二区三区 | 久久国产精品精品国产色婷婷 | 国産精品久久久久久久 | 少妇高潮喷潮久久久影院 | 久久亚洲精品中文字幕无男同 | 成人免费视频在线观看 | 高清国产亚洲精品自在久久 | 熟妇人妻中文av无码 | 暴力强奷在线播放无码 | 亚洲成av人片在线观看无码不卡 | 波多野结衣av在线观看 | 国产精品国产三级国产专播 | 国产无遮挡吃胸膜奶免费看 | 性欧美videos高清精品 | 亲嘴扒胸摸屁股激烈网站 | 亚洲日韩av一区二区三区四区 | 国产香蕉尹人综合在线观看 | 伊人久久大香线蕉午夜 | 亚洲日韩av一区二区三区中文 | 人妻少妇精品无码专区二区 | 成人精品视频一区二区 | 欧美成人午夜精品久久久 | 九一九色国产 | 亚洲日韩av一区二区三区中文 | 性色欲网站人妻丰满中文久久不卡 | 漂亮人妻洗澡被公强 日日躁 | 国产精品毛片一区二区 | 亚洲s色大片在线观看 | 久久久精品456亚洲影院 | 最近中文2019字幕第二页 | 任你躁在线精品免费 | 成人精品视频一区二区三区尤物 | 精品乱子伦一区二区三区 | 亚拍精品一区二区三区探花 | 强伦人妻一区二区三区视频18 | 久久人人爽人人爽人人片ⅴ | 婷婷六月久久综合丁香 | 蜜桃av抽搐高潮一区二区 | 精品日本一区二区三区在线观看 | 亚洲日本在线电影 | 日本又色又爽又黄的a片18禁 | 欧美日韩一区二区三区自拍 | 人妻天天爽夜夜爽一区二区 | 欧美一区二区三区 | 在线天堂新版最新版在线8 | ass日本丰满熟妇pics | 欧美激情内射喷水高潮 | 男人的天堂2018无码 | 99久久亚洲精品无码毛片 | 色综合久久88色综合天天 | 亚洲国产精品久久久久久 | 色一情一乱一伦一视频免费看 | 国产在线精品一区二区三区直播 | 亚洲 欧美 激情 小说 另类 | 国产九九九九九九九a片 | 精品久久久久久亚洲精品 | 中文字幕无码人妻少妇免费 | 无码国产乱人伦偷精品视频 | 日韩欧美中文字幕公布 | 中文字幕无码热在线视频 | 综合人妻久久一区二区精品 | 欧洲美熟女乱又伦 | 欧美一区二区三区视频在线观看 | 少妇厨房愉情理9仑片视频 | 一本久久a久久精品亚洲 | 成人免费视频视频在线观看 免费 | 免费观看黄网站 | 大肉大捧一进一出好爽视频 | 日产精品99久久久久久 | √天堂中文官网8在线 | 国产热a欧美热a在线视频 | 国内揄拍国内精品人妻 | 亚洲国产精品毛片av不卡在线 | 久久99热只有频精品8 | 中文字幕av伊人av无码av | 国精品人妻无码一区二区三区蜜柚 | 免费国产成人高清在线观看网站 | 亚洲日韩av一区二区三区中文 | 1000部啪啪未满十八勿入下载 | 99久久99久久免费精品蜜桃 | 永久免费观看美女裸体的网站 | 成人精品天堂一区二区三区 | 亚洲日韩av一区二区三区中文 | 日韩欧美中文字幕在线三区 | 国产在线aaa片一区二区99 | 国产精品久久国产三级国 | 51国偷自产一区二区三区 | 亚洲人亚洲人成电影网站色 | 欧美激情内射喷水高潮 | 国产97色在线 | 免 | 精品无码av一区二区三区 | 色五月五月丁香亚洲综合网 | 强开小婷嫩苞又嫩又紧视频 | 丁香花在线影院观看在线播放 | 纯爱无遮挡h肉动漫在线播放 | 久久精品国产一区二区三区肥胖 | 丰满人妻被黑人猛烈进入 | 色婷婷综合中文久久一本 | 中文字幕无码日韩专区 | 成人影院yy111111在线观看 | 久青草影院在线观看国产 | 亚洲自偷精品视频自拍 | 免费网站看v片在线18禁无码 | 九月婷婷人人澡人人添人人爽 | 欧洲精品码一区二区三区免费看 | 色欲人妻aaaaaaa无码 | 国产真实乱对白精彩久久 | 精品无码国产一区二区三区av | 内射欧美老妇wbb | 在线天堂新版最新版在线8 | 女人高潮内射99精品 | 日本又色又爽又黄的a片18禁 | 成人免费视频在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 狠狠色丁香久久婷婷综合五月 | 国产莉萝无码av在线播放 | 97精品人妻一区二区三区香蕉 | 无套内谢的新婚少妇国语播放 | 欧洲精品码一区二区三区免费看 | 日本乱人伦片中文三区 | 亚洲va欧美va天堂v国产综合 | 东京一本一道一二三区 | 99久久久无码国产aaa精品 | 夜精品a片一区二区三区无码白浆 | 亚洲国产精品一区二区美利坚 | 性欧美大战久久久久久久 | 国产99久久精品一区二区 | 国产无遮挡又黄又爽免费视频 | 午夜无码区在线观看 | 7777奇米四色成人眼影 | 日韩精品无码免费一区二区三区 | 色窝窝无码一区二区三区色欲 | 色综合天天综合狠狠爱 | 久久99国产综合精品 | 嫩b人妻精品一区二区三区 | 欧美日本日韩 | 国产又粗又硬又大爽黄老大爷视 | 日韩少妇白浆无码系列 | 久久婷婷五月综合色国产香蕉 | 亚洲欧美综合区丁香五月小说 | 亚洲国产欧美日韩精品一区二区三区 | 日本熟妇大屁股人妻 | 国产精品亚洲综合色区韩国 | 国产精品内射视频免费 | 欧美激情一区二区三区成人 | 国产一区二区不卡老阿姨 | √天堂中文官网8在线 | 丰满少妇人妻久久久久久 | 日韩欧美成人免费观看 | 国产精品高潮呻吟av久久4虎 | 日韩精品a片一区二区三区妖精 | 久久www免费人成人片 | 亚洲精品鲁一鲁一区二区三区 | 国产午夜亚洲精品不卡 | 88国产精品欧美一区二区三区 | 九九久久精品国产免费看小说 | 狠狠色丁香久久婷婷综合五月 | 综合网日日天干夜夜久久 | 久久久久成人片免费观看蜜芽 | 国产成人av免费观看 | 一个人免费观看的www视频 | 男女超爽视频免费播放 | 国产成人精品必看 | 亚洲色偷偷偷综合网 | 国产av人人夜夜澡人人爽麻豆 | 精品无人区无码乱码毛片国产 | 亚洲综合在线一区二区三区 | 亚洲综合在线一区二区三区 | 人妻aⅴ无码一区二区三区 | 无码免费一区二区三区 | 久久久久免费精品国产 | 午夜精品久久久久久久久 | 国产特级毛片aaaaaaa高清 | 一区二区传媒有限公司 | 欧美激情综合亚洲一二区 | 欧美日本日韩 | av无码久久久久不卡免费网站 | 台湾无码一区二区 | 日日干夜夜干 | 噜噜噜亚洲色成人网站 | 偷窥村妇洗澡毛毛多 | 国产亚洲欧美日韩亚洲中文色 | 亚洲精品国产a久久久久久 | 久久99精品国产麻豆蜜芽 | 精品一二三区久久aaa片 | 亚洲综合伊人久久大杳蕉 | 爽爽影院免费观看 | 亚洲大尺度无码无码专区 | 色妞www精品免费视频 | 人妻人人添人妻人人爱 | a片免费视频在线观看 | 国产精品第一国产精品 | 欧美精品在线观看 | 人妻少妇精品无码专区动漫 | 蜜桃av抽搐高潮一区二区 | 丝袜 中出 制服 人妻 美腿 | 欧美怡红院免费全部视频 | 精品少妇爆乳无码av无码专区 | 亚洲色www成人永久网址 | 高清无码午夜福利视频 | 清纯唯美经典一区二区 | 亚洲一区二区三区在线观看网站 | 国产片av国语在线观看 | 在线欧美精品一区二区三区 | 亚洲成在人网站无码天堂 | 娇妻被黑人粗大高潮白浆 | 久久天天躁狠狠躁夜夜免费观看 | 女人被爽到呻吟gif动态图视看 | 久久久久久国产精品无码下载 | 亚洲成av人在线观看网址 | 无套内谢老熟女 | 荡女精品导航 | 无码任你躁久久久久久久 | 永久免费观看国产裸体美女 | 色欲久久久天天天综合网精品 | 丰满人妻一区二区三区免费视频 | 天堂在线观看www | yw尤物av无码国产在线观看 | 无遮无挡爽爽免费视频 | 无码免费一区二区三区 | 国产精品香蕉在线观看 | 无码一区二区三区在线观看 | 草草网站影院白丝内射 | 人妻天天爽夜夜爽一区二区 | 久久国产自偷自偷免费一区调 | 99精品久久毛片a片 | 中文亚洲成a人片在线观看 | 亚洲天堂2017无码中文 | 久久精品国产日本波多野结衣 | 久久无码中文字幕免费影院蜜桃 | 国产av一区二区精品久久凹凸 | 国精品人妻无码一区二区三区蜜柚 | 成人一区二区免费视频 | 久久精品国产一区二区三区肥胖 | 爆乳一区二区三区无码 | 国产亚洲精品久久久久久久久动漫 | 国产xxx69麻豆国语对白 | 日本一本二本三区免费 | 国产成人无码av片在线观看不卡 | 性开放的女人aaa片 | 免费看男女做好爽好硬视频 | 曰韩无码二三区中文字幕 | 亚洲人成影院在线无码按摩店 | 亚拍精品一区二区三区探花 | 少妇人妻av毛片在线看 | 无码人妻av免费一区二区三区 | 美女扒开屁股让男人桶 | 荫蒂添的好舒服视频囗交 | 欧美成人高清在线播放 | 国产亚洲欧美在线专区 | 十八禁视频网站在线观看 | 中国女人内谢69xxxxxa片 | 精品久久久无码中文字幕 | 亚洲一区二区三区 | 久久精品国产99精品亚洲 | 中文字幕精品av一区二区五区 | 国产在线无码精品电影网 | 免费视频欧美无人区码 | 国产美女精品一区二区三区 | 亚洲小说春色综合另类 | 亚洲一区二区三区 | 欧美性生交xxxxx久久久 | 国产精品免费大片 | 波多野结衣高清一区二区三区 | 国产在线一区二区三区四区五区 | 欧美精品国产综合久久 | 天天躁日日躁狠狠躁免费麻豆 | 国产婷婷色一区二区三区在线 | 亚洲精品无码人妻无码 | 无码纯肉视频在线观看 | www一区二区www免费 | 97精品国产97久久久久久免费 | 中文字幕+乱码+中文字幕一区 | 亚洲人成人无码网www国产 | 激情人妻另类人妻伦 | 久久久久亚洲精品中文字幕 | 亚洲精品鲁一鲁一区二区三区 | 免费观看黄网站 | 日日天日日夜日日摸 | 中文字幕av无码一区二区三区电影 | 2019nv天堂香蕉在线观看 | 午夜无码区在线观看 | 亚洲欧洲日本综合aⅴ在线 | 国产精品久久久久无码av色戒 | 人妻插b视频一区二区三区 | а天堂中文在线官网 | 全黄性性激高免费视频 | 日欧一片内射va在线影院 | 国产av一区二区精品久久凹凸 | 狠狠色噜噜狠狠狠狠7777米奇 | 日本大香伊一区二区三区 | 欧美精品国产综合久久 | 人妻少妇精品无码专区二区 | 福利一区二区三区视频在线观看 | 狠狠色丁香久久婷婷综合五月 | 久久精品国产大片免费观看 | 精品一区二区三区波多野结衣 | 亚洲伊人久久精品影院 | 香港三级日本三级妇三级 | 精品久久久无码中文字幕 | 亚洲熟妇自偷自拍另类 | 少妇无码吹潮 | 中文无码成人免费视频在线观看 | 欧美黑人性暴力猛交喷水 | 又粗又大又硬毛片免费看 | 国产xxx69麻豆国语对白 | 日日碰狠狠躁久久躁蜜桃 | 国产成人无码av片在线观看不卡 | 377p欧洲日本亚洲大胆 | 久久精品女人天堂av免费观看 | 日本欧美一区二区三区乱码 | 最近的中文字幕在线看视频 | 国产香蕉尹人综合在线观看 | 国产无遮挡又黄又爽免费视频 | av香港经典三级级 在线 | 亚洲色偷偷男人的天堂 | 福利一区二区三区视频在线观看 | 亚洲精品www久久久 | 夜精品a片一区二区三区无码白浆 | 国产精品资源一区二区 | 久久99精品国产麻豆 | 久久久久久九九精品久 | 永久黄网站色视频免费直播 | 久久99精品久久久久久动态图 | 国产麻豆精品精东影业av网站 | 国产精品毛多多水多 | 女人被男人爽到呻吟的视频 | 亚洲一区二区三区在线观看网站 | 久久zyz资源站无码中文动漫 | 国产免费久久精品国产传媒 | 人人妻人人澡人人爽欧美精品 | 99久久精品国产一区二区蜜芽 | 亚洲大尺度无码无码专区 | 色欲人妻aaaaaaa无码 | 欧美 丝袜 自拍 制服 另类 | 成人欧美一区二区三区黑人免费 | 国精产品一品二品国精品69xx | 亲嘴扒胸摸屁股激烈网站 | 丰满人妻一区二区三区免费视频 | 精品少妇爆乳无码av无码专区 | 国产精品久久久久久久9999 | 亚洲国产av美女网站 | 亚洲日韩精品欧美一区二区 | 日日天日日夜日日摸 | 一本大道久久东京热无码av | 成人影院yy111111在线观看 | 久久综合狠狠综合久久综合88 | 欧美性猛交内射兽交老熟妇 | 久久99精品久久久久婷婷 | 免费乱码人妻系列无码专区 | 国产成人精品三级麻豆 | 沈阳熟女露脸对白视频 | 亚洲熟熟妇xxxx | 国产在线精品一区二区高清不卡 | 日本护士xxxxhd少妇 | 欧美日韩在线亚洲综合国产人 | 国产一区二区三区四区五区加勒比 | 欧美 日韩 亚洲 在线 | 亚洲精品国产精品乱码视色 | 无码午夜成人1000部免费视频 | 精品国产青草久久久久福利 | 99久久精品午夜一区二区 | 亚洲熟女一区二区三区 | 一本色道久久综合狠狠躁 | 天干天干啦夜天干天2017 | 精品人妻中文字幕有码在线 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲欧洲日本综合aⅴ在线 | 曰本女人与公拘交酡免费视频 | 国产成人精品视频ⅴa片软件竹菊 | 67194成是人免费无码 | www国产亚洲精品久久网站 | 熟妇人妻无乱码中文字幕 | 97久久国产亚洲精品超碰热 | 亚洲の无码国产の无码影院 | 久久午夜夜伦鲁鲁片无码免费 | 荫蒂被男人添的好舒服爽免费视频 | 精品厕所偷拍各类美女tp嘘嘘 | 日日躁夜夜躁狠狠躁 | 亚洲狠狠婷婷综合久久 | 欧美大屁股xxxxhd黑色 | 人妻有码中文字幕在线 | 在线精品亚洲一区二区 | 在线欧美精品一区二区三区 | 国产精品va在线播放 | 亚洲欧美精品aaaaaa片 | 老熟女乱子伦 | 理论片87福利理论电影 | 久久精品成人欧美大片 | 国产热a欧美热a在线视频 | 色窝窝无码一区二区三区色欲 | 99久久久国产精品无码免费 | 久9re热视频这里只有精品 | 大屁股大乳丰满人妻 | 精品偷自拍另类在线观看 | 欧美怡红院免费全部视频 | 成人亚洲精品久久久久软件 | 亚洲成a人片在线观看无码3d | 双乳奶水饱满少妇呻吟 | 男女猛烈xx00免费视频试看 | 一本加勒比波多野结衣 | 少妇无码av无码专区在线观看 | 精品少妇爆乳无码av无码专区 | 色一情一乱一伦一视频免费看 | 中文无码成人免费视频在线观看 | 人妻插b视频一区二区三区 | 激情内射日本一区二区三区 | 人人妻人人澡人人爽精品欧美 | 人妻少妇精品无码专区动漫 | 精品日本一区二区三区在线观看 | 久久无码中文字幕免费影院蜜桃 | 欧美日韩久久久精品a片 | 国产超级va在线观看视频 | 亚洲s色大片在线观看 | 亚洲色无码一区二区三区 | 欧美亚洲国产一区二区三区 | 亚洲色在线无码国产精品不卡 | 人人妻人人澡人人爽人人精品浪潮 | 久久午夜无码鲁丝片 | 成人精品视频一区二区三区尤物 | 野外少妇愉情中文字幕 | 一个人看的www免费视频在线观看 | 西西人体www44rt大胆高清 | 久久人妻内射无码一区三区 | 性欧美videos高清精品 | 欧美怡红院免费全部视频 | 亚洲色大成网站www | 无码av岛国片在线播放 | 亚洲 激情 小说 另类 欧美 | 亚洲国产精华液网站w | 免费无码av一区二区 | 久久成人a毛片免费观看网站 | 强开小婷嫩苞又嫩又紧视频 | 国产色在线 | 国产 | 牲欲强的熟妇农村老妇女 | 国产av久久久久精东av | 亚洲国产成人av在线观看 | 亚洲日本va午夜在线电影 | 黑人大群体交免费视频 | 麻花豆传媒剧国产免费mv在线 | 国产精品人人妻人人爽 | 久久这里只有精品视频9 | 一二三四在线观看免费视频 | 国产美女精品一区二区三区 | 欧美日韩人成综合在线播放 | 国产超级va在线观看视频 | 欧美丰满老熟妇xxxxx性 | 特大黑人娇小亚洲女 | 黄网在线观看免费网站 | 成人精品一区二区三区中文字幕 | 青青青爽视频在线观看 | 曰韩少妇内射免费播放 | 亚洲欧美日韩综合久久久 | 精品水蜜桃久久久久久久 | 漂亮人妻洗澡被公强 日日躁 | 男女猛烈xx00免费视频试看 | 日韩在线不卡免费视频一区 | 九九综合va免费看 | 色综合久久久久综合一本到桃花网 | 亚洲熟妇自偷自拍另类 | 精品一区二区三区波多野结衣 | 亚洲国精产品一二二线 | 国产精品无码久久av | 成年女人永久免费看片 | 久久99国产综合精品 | 欧美人与善在线com | 人人妻人人澡人人爽欧美一区九九 | 夜精品a片一区二区三区无码白浆 | 无码人妻精品一区二区三区下载 | 久久久av男人的天堂 | av人摸人人人澡人人超碰下载 | 中文字幕乱码人妻无码久久 | 熟妇女人妻丰满少妇中文字幕 | 55夜色66夜色国产精品视频 | 狂野欧美激情性xxxx | 无码国产激情在线观看 | 丰满人妻被黑人猛烈进入 | 国产午夜无码视频在线观看 | 无码国产乱人伦偷精品视频 | 久久精品女人天堂av免费观看 | 亚洲熟悉妇女xxx妇女av | 熟妇女人妻丰满少妇中文字幕 | 精品国产乱码久久久久乱码 | 国产成人无码av片在线观看不卡 | 成人亚洲精品久久久久软件 | 国产精品久久福利网站 | 亚洲综合无码一区二区三区 | 精品无码一区二区三区的天堂 | 亚洲熟女一区二区三区 | 亚洲天堂2017无码中文 | 午夜福利一区二区三区在线观看 | 日韩亚洲欧美中文高清在线 | 国产99久久精品一区二区 | 国产精品手机免费 | 色一情一乱一伦一区二区三欧美 | 男女下面进入的视频免费午夜 | 国产手机在线αⅴ片无码观看 | 亚洲一区二区三区在线观看网站 | 黑人玩弄人妻中文在线 | 少妇高潮一区二区三区99 | 98国产精品综合一区二区三区 | 青草视频在线播放 | 中文字幕 人妻熟女 | 成人无码影片精品久久久 | 欧美精品国产综合久久 | 国产精品福利视频导航 | 国产疯狂伦交大片 | 午夜福利试看120秒体验区 | 最新国产麻豆aⅴ精品无码 | 精品无人区无码乱码毛片国产 | 中文字幕无码免费久久99 | 久久久久亚洲精品男人的天堂 | 亚洲成熟女人毛毛耸耸多 | 欧美野外疯狂做受xxxx高潮 | 精品国产乱码久久久久乱码 | 亚洲中文字幕成人无码 | 精品人人妻人人澡人人爽人人 | 亚洲人亚洲人成电影网站色 | 97精品国产97久久久久久免费 | 在线观看欧美一区二区三区 | 女人被爽到呻吟gif动态图视看 | 色欲久久久天天天综合网精品 | 亚洲第一无码av无码专区 | 少妇一晚三次一区二区三区 | 高清不卡一区二区三区 | 国产精品.xx视频.xxtv | 欧美午夜特黄aaaaaa片 | 老子影院午夜精品无码 | 18禁止看的免费污网站 | 人人澡人摸人人添 | 无码免费一区二区三区 | 亚洲熟妇自偷自拍另类 | 荫蒂添的好舒服视频囗交 | 娇妻被黑人粗大高潮白浆 | 日日摸日日碰夜夜爽av | 三级4级全黄60分钟 | 亚洲国产av精品一区二区蜜芽 | 国产精品美女久久久久av爽李琼 | 亚洲一区二区三区在线观看网站 | 国产99久久精品一区二区 | 中文字幕精品av一区二区五区 | 国产人妻人伦精品1国产丝袜 | 丰满少妇高潮惨叫视频 | 久久国语露脸国产精品电影 | 欧美国产亚洲日韩在线二区 | 中文字幕人妻无码一区二区三区 | 精品国偷自产在线视频 | 无码人妻久久一区二区三区不卡 | 国产另类ts人妖一区二区 | 久久精品人人做人人综合试看 | 午夜丰满少妇性开放视频 | 午夜精品久久久内射近拍高清 | 99久久亚洲精品无码毛片 | 四虎国产精品免费久久 | 亚洲色无码一区二区三区 | 欧美xxxxx精品 | 波多野结衣乳巨码无在线观看 | 国产口爆吞精在线视频 | 国产又爽又黄又刺激的视频 | 亚洲区小说区激情区图片区 | 精品日本一区二区三区在线观看 | 红桃av一区二区三区在线无码av | 亚洲国产日韩a在线播放 | 强伦人妻一区二区三区视频18 | 色欲综合久久中文字幕网 | 久久zyz资源站无码中文动漫 | 成人av无码一区二区三区 | 高潮毛片无遮挡高清免费 | 亚洲国产成人av在线观看 | 成人av无码一区二区三区 | 一本色道久久综合亚洲精品不卡 | 亚洲一区二区三区偷拍女厕 | 麻豆果冻传媒2021精品传媒一区下载 | 又大又硬又黄的免费视频 | 日本一区二区更新不卡 | 亚洲 欧美 激情 小说 另类 | 国产97色在线 | 免 | 图片区 小说区 区 亚洲五月 | 久久久久亚洲精品男人的天堂 | 九九在线中文字幕无码 | 国产一区二区三区四区五区加勒比 | 爱做久久久久久 | 亚洲一区二区三区无码久久 | 思思久久99热只有频精品66 | 少妇无码av无码专区在线观看 | 西西人体www44rt大胆高清 | 日韩人妻无码一区二区三区久久99 | 天堂无码人妻精品一区二区三区 | 亚洲日本va午夜在线电影 | 亚洲精品国产第一综合99久久 | 国产人妻人伦精品1国产丝袜 | 99国产精品白浆在线观看免费 | 亚洲自偷自拍另类第1页 | 大屁股大乳丰满人妻 | 国产精品va在线播放 | 一本久道久久综合婷婷五月 | 亚洲成色在线综合网站 | 国产午夜无码视频在线观看 | 国产亚洲精品久久久闺蜜 | 大肉大捧一进一出视频出来呀 | 国产免费观看黄av片 | 国产激情综合五月久久 | 国产成人无码av在线影院 | v一区无码内射国产 | 99久久亚洲精品无码毛片 | 精品久久久中文字幕人妻 | 无码人妻黑人中文字幕 | 97se亚洲精品一区 | 久久久久久亚洲精品a片成人 | 国产偷自视频区视频 | 久久精品女人天堂av免费观看 | 精品国产一区二区三区av 性色 | ass日本丰满熟妇pics | 鲁鲁鲁爽爽爽在线视频观看 | аⅴ资源天堂资源库在线 | 国产suv精品一区二区五 | 天干天干啦夜天干天2017 | 中文字幕日产无线码一区 | 欧美 丝袜 自拍 制服 另类 | 日本肉体xxxx裸交 | 99精品国产综合久久久久五月天 | 国产精品久久久久9999小说 | 大乳丰满人妻中文字幕日本 | 在线 国产 欧美 亚洲 天堂 | 无码人妻精品一区二区三区不卡 | 东京无码熟妇人妻av在线网址 | 国产精品久免费的黄网站 | 在线精品国产一区二区三区 | 人人爽人人澡人人人妻 | 无码av免费一区二区三区试看 | 性欧美疯狂xxxxbbbb | 曰韩少妇内射免费播放 | 精品久久8x国产免费观看 | 亚洲中文字幕乱码av波多ji | 精品无人区无码乱码毛片国产 | 综合人妻久久一区二区精品 | 亚洲色欲色欲天天天www | 亚洲一区二区三区国产精华液 | 水蜜桃色314在线观看 | 鲁鲁鲁爽爽爽在线视频观看 | 乱码午夜-极国产极内射 | 色窝窝无码一区二区三区色欲 | 天堂亚洲2017在线观看 | 精品国产国产综合精品 | 日本大香伊一区二区三区 | 激情综合激情五月俺也去 | 日本乱偷人妻中文字幕 | 欧美真人作爱免费视频 | 99久久精品日本一区二区免费 | 亚洲一区二区三区在线观看网站 | 丰满少妇高潮惨叫视频 | 亚洲综合精品香蕉久久网 | 少妇高潮一区二区三区99 | 日本www一道久久久免费榴莲 | 老司机亚洲精品影院无码 | 2020最新国产自产精品 | 欧美一区二区三区视频在线观看 | 色婷婷综合中文久久一本 | 日本护士xxxxhd少妇 | 亚洲精品国偷拍自产在线麻豆 | 一个人看的www免费视频在线观看 | 欧美成人免费全部网站 | 日本熟妇浓毛 | 欧美成人午夜精品久久久 | 1000部夫妻午夜免费 | 日本乱人伦片中文三区 | 人人妻人人藻人人爽欧美一区 | 无遮挡国产高潮视频免费观看 | 亚洲中文字幕久久无码 | 好男人社区资源 | 麻豆果冻传媒2021精品传媒一区下载 | 东京热一精品无码av | 国语自产偷拍精品视频偷 | 97久久国产亚洲精品超碰热 | 国产精品美女久久久久av爽李琼 | 丰满少妇弄高潮了www | 无码国产色欲xxxxx视频 | 日本饥渴人妻欲求不满 | 18禁黄网站男男禁片免费观看 | 激情国产av做激情国产爱 | 秋霞成人午夜鲁丝一区二区三区 | 一本色道久久综合亚洲精品不卡 | 成人片黄网站色大片免费观看 | 欧美日韩视频无码一区二区三 | 亚洲日韩一区二区三区 | 色诱久久久久综合网ywww | 丰满岳乱妇在线观看中字无码 | 中文字幕乱妇无码av在线 | 国产手机在线αⅴ片无码观看 | 曰韩少妇内射免费播放 | 国产免费久久精品国产传媒 | 国产成人无码区免费内射一片色欲 | 国产区女主播在线观看 | 亚欧洲精品在线视频免费观看 | 无码人妻出轨黑人中文字幕 | 日本一卡2卡3卡四卡精品网站 | 国产精品永久免费视频 | 精品欧洲av无码一区二区三区 | 精品aⅴ一区二区三区 | 中文字幕精品av一区二区五区 | 51国偷自产一区二区三区 | 无码人妻出轨黑人中文字幕 | 亚洲大尺度无码无码专区 | 欧美自拍另类欧美综合图片区 | 欧美精品一区二区精品久久 | 内射爽无广熟女亚洲 | 国产精品无码成人午夜电影 | 精品国产乱码久久久久乱码 | 成人女人看片免费视频放人 | 亚洲精品www久久久 | 野外少妇愉情中文字幕 | 精品国产乱码久久久久乱码 | 午夜精品久久久久久久久 | 欧美精品一区二区精品久久 | 老熟妇乱子伦牲交视频 | 青春草在线视频免费观看 | 麻花豆传媒剧国产免费mv在线 | 精品厕所偷拍各类美女tp嘘嘘 | 最近中文2019字幕第二页 | 人妻中文无码久热丝袜 | 女人被男人躁得好爽免费视频 | 欧美成人免费全部网站 | 香蕉久久久久久av成人 | 东京一本一道一二三区 | 免费乱码人妻系列无码专区 | 国产午夜视频在线观看 | 一区二区三区乱码在线 | 欧洲 | 国产农村乱对白刺激视频 | 久久综合香蕉国产蜜臀av | 久久99精品久久久久久动态图 | 红桃av一区二区三区在线无码av | 亚洲狠狠婷婷综合久久 | 狠狠色噜噜狠狠狠7777奇米 | 3d动漫精品啪啪一区二区中 | 领导边摸边吃奶边做爽在线观看 | 日韩精品成人一区二区三区 | 国产亚洲美女精品久久久2020 | 美女黄网站人色视频免费国产 | 麻豆果冻传媒2021精品传媒一区下载 | 国产成人精品三级麻豆 | 日韩欧美中文字幕公布 | 熟女俱乐部五十路六十路av | 丝袜足控一区二区三区 | 亚洲欧美精品伊人久久 | av香港经典三级级 在线 | 成人精品视频一区二区 | 中文字幕色婷婷在线视频 | 日韩 欧美 动漫 国产 制服 | 亚洲中文字幕久久无码 | 国内精品九九久久久精品 | 人人妻人人澡人人爽人人精品浪潮 | 久久精品一区二区三区四区 | 亚洲乱码日产精品bd | 大色综合色综合网站 | 亚洲男女内射在线播放 | 亚洲国产精品久久久久久 | 99视频精品全部免费免费观看 | 国产成人无码午夜视频在线观看 | 成人免费视频一区二区 | 久久综合色之久久综合 | 丰满少妇熟乱xxxxx视频 | 最新版天堂资源中文官网 | 2019午夜福利不卡片在线 | 精品日本一区二区三区在线观看 | 麻豆精产国品 | 中文毛片无遮挡高清免费 | 国产成人精品必看 | 日欧一片内射va在线影院 | 精品国偷自产在线 | 内射白嫩少妇超碰 | 国产超级va在线观看视频 | 亚洲欧美中文字幕5发布 | 丰满少妇高潮惨叫视频 | 给我免费的视频在线观看 | 亚洲成a人片在线观看无码 |