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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java面试题(转载其他人,方便日常看)

發布時間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java面试题(转载其他人,方便日常看) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

序言

在本篇文章開始之前,我想先來回答一個問題:我為什么要寫這樣一篇關于面試的文章?原因有三個:第一,我想為每一個為夢想時刻準備著的“有心人”,盡一份自己的力量,提供一份高度精華的 Java 面試清單;第二,目前市面上的面試題不是答案不準確就是內容覆蓋面太窄,所以提供一份經典而又準確的面試題是非常有必要的;第三,本文會對部分面試題提供詳細解讀和代碼案例,讓讀者知其然并知其所以然,從而學到更多的知識。

或許這份面試題還不足以囊括所有 Java 問題,但有了它,我相信你一定不會“敗”的很慘,因為有了它,足以應對目前市面上絕大部分的 Java 面試了,因為這篇文章不論是從深度還是廣度上來講,都已經囊括了非常多的知識點了。

凡事預則立,不預則廢。能讀到這里的人,我相信都是這個世界上的“有心人”,還是那句老話:上天不負有心人!我相信你的每一步努力,都會收獲意想不到的回報。

適宜閱讀人群

  • 需要面試的初/中/高級 Java 程序員
  • 想要查漏補缺的人
  • 想要不斷完善和擴充自己 Java 技術棧的人
  • Java 面試官

閱讀建議

本文會按技能模塊劃分文章段落,每個模塊里的內容,從易到難依次進行排序,各模塊之間不存在互相關聯的關系,讀者可選擇文章順序閱讀或者跳躍式閱讀。

包含的模塊

本文分為十九個模塊,分別是:?Java 基礎、容器、多線程、反射、對象拷貝、Java Web 、異常、網絡、設計模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM?,如下圖所示:

共包含 208 道面試題,本文的宗旨是為讀者朋友們整理一份詳實而又權威的面試清單,下面一起進入主題吧。

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 的區別是什么?

== 解讀

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

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

代碼示例:

?
  • String x = "string";

  • String y = "string";

  • String z = new String("string");

  • System.out.println(x==y); // true

  • System.out.println(x==z); // false

  • System.out.println(x.equals(y)); // true

  • System.out.println(x.equals(z)); // true

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

    equals 解讀

    equals 本質上就是 ==,只不過 String 和 Integer 等重寫了 equals 方法,把它變成了值比較。看下面的代碼就明白了。

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

    ?
  • class Cat {

  • public Cat(String name) {

  • this.name = name;

  • }

  • ?
  • private String name;

  • ?
  • public String getName() {

  • return name;

  • }

  • ?
  • public void setName(String name) {

  • this.name = name;

  • }

  • }

  • ?
  • Cat c1 = new Cat("王磊");

  • Cat c2 = new Cat("王磊");

  • System.out.println(c1.equals(c2)); // false

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

    ?
  • public boolean equals(Object obj) {

  • return (this == obj);

  • }

  • 原來 equals 本質上就是 ==。

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

    ?
  • String s1 = new String("老王");

  • String s2 = new String("老王");

  • System.out.println(s1.equals(s2)); // true

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

    ?
  • public boolean equals(Object anObject) {

  • if (this == anObject) {

  • return true;

  • }

  • if (anObject instanceof String) {

  • String anotherString = (String)anObject;

  • int n = value.length;

  • if (n == anotherString.value.length) {

  • char v1[] = value;

  • char v2[] = anotherString.value;

  • int i = 0;

  • while (n-- != 0) {

  • if (v1[i] != v2[i])

  • return false;

  • i++;

  • }

  • return true;

  • }

  • }

  • return false;

  • }

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

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

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

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

    代碼示例:

    ?
  • String str1 = "通話";

  • String str2 = "重地";

  • System. out. println(String. format("str1:%d | str2:%d", str1. hashCode(),str2. hashCode()));

  • 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() 方法。

    示例代碼:

    ?
  • // StringBuffer reverse

  • StringBuffer stringBuffer = new StringBuffer();

  • stringBuffer. append("abcdefg");

  • System. out. println(stringBuffer. reverse()); // gfedcba

  • // StringBuilder reverse

  • StringBuilder stringBuilder = new StringBuilder();

  • stringBuilder. append("abcdefg");

  • System. out. println(stringBuilder. reverse()); // gfedcba

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

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

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

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

    示例代碼:

    ?
  • abstract class Cat {

  • public static void sayHi() {

  • System. out. println("hi~");

  • }

  • }

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

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

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

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

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

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

    • 實現:抽象類的子類使用 extends 來繼承;接口必須使用 implements 來實現接口。
    • 構造函數:抽象類可以有構造函數;接口不能有。
    • 實現數量:類可以實現很多個接口;但是只能繼承一個抽象類。
    • 訪問修飾符:接口中的方法默認使用 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 容器都有哪些?

    Java 容器分為 Collection 和 Map 兩大類,其下又有很多子類,如下所示:

    • Collection
    • List
      • ArrayList
      • LinkedList
      • Vector
      • Stack
    • Set
      • HashSet
      • LinkedHashSet
      • TreeSet
    • Map
    • HashMap
      • LinkedHashMap
    • TreeMap
    • ConcurrentHashMap
    • Hashtable

    19. Collection 和 Collections 有什么區別?

    • Collection 是一個集合接口,它提供了對集合對象進行基本操作的通用接口方法,所有集合都是它的子類,比如 List、Set 等。
    • Collections 是一個包裝類,包含了很多靜態方法,不能被實例化,就像一個工具類,比如提供的排序方法: Collections. sort(list)。

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

    List、Set、Map 的區別主要體現在兩個方面:元素是否有序、是否允許元素重復。

    三者之間的區別,如下表:

    21. HashMap 和 Hashtable 有什么區別?

    • 存儲:HashMap 運行 key 和 value 為 null,而 Hashtable 不允許。
    • 線程安全:Hashtable 是線程安全的,而 HashMap 是非線程安全的。
    • 推薦使用:在 Hashtable 的類注釋可以看到,Hashtable 是保留類不建議使用,推薦在單線程環境下使用 HashMap 替代,如果需要多線程使用則用 ConcurrentHashMap 替代。

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

    對于在 Map 中插入、刪除、定位一個元素這類操作,HashMap 是最好的選擇,因為相對而言 HashMap 的插入會更快,但如果你要對一個 key 集合進行有序的遍歷,那 TreeMap 是更好的選擇。

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

    HashMap 基于 Hash 算法實現的,我們通過 put(key,value)存儲,get(key)來獲取。當傳入 key 時,HashMap 會根據 key. hashCode() 計算出 hash 值,根據 hash 值將 value 保存在 bucket 里。當計算出的 hash 值相同時,我們稱之為 hash 沖突,HashMap 的做法是用鏈表和紅黑樹存儲相同 hash 值的 value。當 hash 沖突的個數比較少時,使用鏈表否則使用紅黑樹。

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

    HashSet 是基于 HashMap 實現的,HashSet 底層使用 HashMap 來保存所有元素,因此 HashSet 的實現比較簡單,相關 HashSet 的操作,基本上都是直接調用底層 HashMap 的相關方法來完成,HashSet 不允許重復的值。

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

    • 數據結構實現:ArrayList 是動態數組的數據結構實現,而 LinkedList 是雙向鏈表的數據結構實現。
    • 隨機訪問效率:ArrayList 比 LinkedList 在隨機訪問的時候效率要高,因為 LinkedList 是線性的數據存儲方式,所以需要移動指針從前往后依次查找。
    • 增加和刪除效率:在非首尾的增加和刪除操作,LinkedList 要比 ArrayList 效率要高,因為 ArrayList 增刪操作要影響數組內的其他數據的下標。

    綜合來說,在需要頻繁讀取集合中的元素時,更推薦使用 ArrayList,而在插入和刪除操作較多時,更推薦使用 LinkedList。

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

    • 數組轉 List:使用 Arrays. asList(array) 進行轉換。
    • List 轉數組:使用 List 自帶的 toArray() 方法。

    代碼示例:

    ?
  • // list to array

  • List<String> list = new ArrayList<String>();

  • list. add("王磊");

  • list. add("的博客");

  • list. toArray();

  • // array to list

  • String[] array = new String[]{"王磊","的博客"};

  • Arrays. asList(array);

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

    • 線程安全:Vector 使用了 Synchronized 來實現線程同步,是線程安全的,而 ArrayList 是非線程安全的。
    • 性能:ArrayList 在性能方面要優于 Vector。
    • 擴容:ArrayList 和 Vector 都會根據實際的需要動態的調整容量,只不過在 Vector 擴容每次會增加 1 倍,而 ArrayList 只會增加 50%。

    28. Array 和 ArrayList 有何區別?

    • Array 可以存儲基本數據類型和對象,ArrayList 只能存儲對象。
    • Array 是指定固定大小的,而 ArrayList 大小是自動擴展的。
    • Array 內置方法沒有 ArrayList 多,比如 addAll、removeAll、iteration 等方法只有 ArrayList 有。

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

    • 相同點:都是返回第一個元素,并在隊列中刪除返回的對象。
    • 不同點:如果沒有元素 poll()會返回 null,而 remove()會直接拋出 NoSuchElementException 異常。

    代碼示例:

    ?
  • Queue<String> queue = new LinkedList<String>();

  • queue. offer("string"); // add

  • System. out. println(queue. poll());

  • System. out. println(queue. remove());

  • System. out. println(queue. size());

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

    Vector、Hashtable、Stack 都是線程安全的,而像 HashMap 則是非線程安全的,不過在 JDK 1.5 之后隨著 Java. util. concurrent 并發包的出現,它們也有了自己對應的線程安全類,比如 HashMap 對應的線程安全類就是 ConcurrentHashMap。

    31. 迭代器 Iterator 是什么?

    Iterator 接口提供遍歷任何 Collection 的接口。我們可以從一個 Collection 中使用迭代器方法來獲取迭代器實例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允許調用者在迭代過程中移除元素。

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

    Iterator 使用代碼如下:

    ?
  • List<String> list = new ArrayList<>();

  • Iterator<String> it = list. iterator();

  • while(it. hasNext()){

  • String obj = it. next();

  • System. out. println(obj);

  • }

  • Iterator 的特點是更加安全,因為它可以確保,在當前遍歷的集合元素被更改的時候,就會拋出 ConcurrentModificationException 異常。

    33. Iterator 和 ListIterator 有什么區別?

    • Iterator 可以遍歷 Set 和 List 集合,而 ListIterator 只能遍歷 List。
    • Iterator 只能單向遍歷,而 ListIterator 可以雙向遍歷(向前/后遍歷)。
    • ListIterator 從 Iterator 接口繼承,然后添加了一些額外的功能,比如添加一個元素、替換一個元素、獲取前面或后面元素的索引位置。

    34. 怎么確保一個集合不能被修改?

    可以使用 Collections. unmodifiableCollection(Collection c) 方法來創建一個只讀集合,這樣改變集合的任何操作都會拋出 Java. lang. UnsupportedOperationException 異常。

    示例代碼如下:

    ?
  • List<String> list = new ArrayList<>();

  • list. add("x");

  • Collection<String> clist = Collections. unmodifiableCollection(list);

  • clist. add("y"); // 運行時此行報錯

  • System. out. println(list. size());

  • 多線程

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

    • 并行:多個處理器或多核處理器同時處理多個任務。
    • 并發:多個任務在同一個 CPU 核上,按細分的時間片輪流(交替)執行,從邏輯上來看那些任務是同時執行。

    如下圖:

    并發 = 兩個隊列和一臺咖啡機。

    并行 = 兩個隊列和兩臺咖啡機。

    36. 線程和進程的區別?

    一個程序下至少有一個進程,一個進程下至少有一個線程,一個進程下也可以有多個線程來增加程序的執行速度。

    37. 守護線程是什么?

    守護線程是運行在后臺的一種特殊進程。它獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。在 Java 中垃圾回收線程就是特殊的守護線程。

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

    創建線程有三種方式:

    • 繼承 Thread 重新 run 方法;
    • 實現 Runnable 接口;
    • 實現 Callable 接口。

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

    runnable 沒有返回值,callable 可以拿到有返回值,callable 可以看作是 runnable 的補充。

    40. 線程有哪些狀態?

    線程的狀態:

    • NEW 尚未啟動
    • RUNNABLE 正在執行中
    • BLOCKED 阻塞的(被同步鎖或者IO鎖阻塞)
    • WAITING 永久等待狀態
    • TIMED_WAITING 等待指定的時間重新被喚醒的狀態
    • TERMINATED 執行完成

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

    • 類的不同:sleep() 來自 Thread,wait() 來自 Object。
    • 釋放鎖:sleep() 不釋放鎖;wait() 釋放鎖。
    • 用法不同:sleep() 時間到會自動恢復;wait() 可以使用 notify()/notifyAll()直接喚醒。

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

    notifyAll()會喚醒所有的線程,notify()之后喚醒一個線程。notifyAll() 調用后,會將全部線程由等待池移到鎖池,然后參與鎖的競爭,競爭成功則繼續執行,如果不成功則留在鎖池等待鎖被釋放后再次參與競爭。而 notify()只會喚醒一個線程,具體喚醒哪一個線程由虛擬機控制。

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

    start() 方法用于啟動線程,run() 方法用于執行線程的運行時代碼。run() 可以重復調用,而 start() 只能調用一次。

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

    線程池創建有七種方式,最核心的是最后一種:

    • newSingleThreadExecutor():它的特點在于工作線程數目被限制為 1,操作一個無界的工作隊列,所以它保證了所有任務的都是被順序執行,最多會有一個任務處于活動狀態,并且不允許使用者改動線程池實例,因此可以避免其改變線程數目;

    • newCachedThreadPool():它是一種用來處理大量短時間工作任務的線程池,具有幾個鮮明特點:它會試圖緩存線程并重用,當無緩存線程可用時,就會創建新的工作線程;如果線程閑置的時間超過 60 秒,則被終止并移出緩存;長時間閑置時,這種線程池,不會消耗什么資源。其內部使用 SynchronousQueue 作為工作隊列;

    • newFixedThreadPool(int nThreads):重用指定數目(nThreads)的線程,其背后使用的是無界的工作隊列,任何時候最多有 nThreads 個工作線程是活動的。這意味著,如果任務數量超過了活動隊列數目,將在工作隊列中等待空閑線程出現;如果有工作線程退出,將會有新的工作線程被創建,以補足指定的數目 nThreads;

    • newSingleThreadScheduledExecutor():創建單線程池,返回 ScheduledExecutorService,可以進行定時或周期性的工作調度;

    • newScheduledThreadPool(int corePoolSize):和newSingleThreadScheduledExecutor()類似,創建的是個 ScheduledExecutorService,可以進行定時或周期性的工作調度,區別在于單一工作線程還是多個工作線程;

    • newWorkStealingPool(int parallelism):這是一個經常被人忽略的線程池,Java 8 才加入這個創建方法,其內部會構建ForkJoinPool,利用Work-Stealing算法,并行地處理任務,不保證處理順序;

    • ThreadPoolExecutor():是最原始的線程池創建,上面1-3創建方式都是對ThreadPoolExecutor的封裝。

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

    • RUNNING:這是最正常的狀態,接受新的任務,處理等待隊列中的任務。
    • SHUTDOWN:不接受新的任務提交,但是會繼續處理等待隊列中的任務。
    • STOP:不接受新的任務提交,不再處理等待隊列中的任務,中斷正在執行任務的線程。
    • TIDYING:所有的任務都銷毀了,workCount 為 0,線程池的狀態在轉換為 TIDYING 狀態時,會執行鉤子方法 terminated()。
    • TERMINATED:terminated()方法結束后,線程池的狀態就會變成這個。

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

    • execute():只能執行 Runnable 類型的任務。
    • submit():可以執行 Runnable 和 Callable 類型的任務。

    Callable 類型的任務可以獲取執行的返回值,而 Runnable 執行無返回值。

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

    • 方法一:使用安全類,比如 Java. util. concurrent 下的類。
    • 方法二:使用自動鎖 synchronized。
    • 方法三:使用手動鎖 Lock。

    手動鎖 Java 示例代碼如下:

    ?
  • Lock lock = new ReentrantLock();

  • lock. lock();

  • try {

  • System. out. println("獲得鎖");

  • } catch (Exception e) {

  • // TODO: handle exception

  • } finally {

  • System. out. println("釋放鎖");

  • lock. unlock();

  • }

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

    synchronized 鎖升級原理:在鎖對象的對象頭里面有一個 threadid 字段,在第一次訪問的時候 threadid 為空,jvm 讓其持有偏向鎖,并將 threadid 設置為其線程 id,再次進入的時候會先判斷 threadid 是否與其線程 id 一致,如果一致則可以直接使用此對象,如果不一致,則升級偏向鎖為輕量級鎖,通過自旋循環一定次數來獲取鎖,執行一定次數之后,如果還沒有正常獲取到要使用的對象,此時就會把鎖從輕量級升級為重量級鎖,此過程就構成了 synchronized 鎖的升級。

    鎖的升級的目的:鎖升級是為了減低了鎖帶來的性能消耗。在 Java 6 之后優化 synchronized 的實現方式,使用了偏向鎖升級為輕量級鎖再升級到重量級鎖的方式,從而減低了鎖帶來的性能消耗。

    49. 什么是死鎖?

    當線程 A 持有獨占鎖a,并嘗試去獲取獨占鎖 b 的同時,線程 B 持有獨占鎖 b,并嘗試獲取獨占鎖 a 的情況下,就會發生 AB 兩個線程由于互相持有對方需要的鎖,而發生的阻塞現象,我們稱為死鎖。

    50. 怎么防止死鎖?

    • 盡量使用 tryLock(long timeout, TimeUnit unit)的方法(ReentrantLock、ReentrantReadWriteLock),設置超時時間,超時可以退出防止死鎖。
    • 盡量使用 Java. util. concurrent 并發類代替自己手寫鎖。
    • 盡量降低鎖的使用粒度,盡量不要幾個功能用同一把鎖。
    • 盡量減少同步的代碼塊。

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

    ThreadLocal 為每個使用該變量的線程提供獨立的變量副本,所以每一個線程都可以獨立地改變自己的副本,而不會影響其它線程所對應的副本。

    ThreadLocal 的經典使用場景是數據庫連接和 session 管理等。

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

    synchronized 是由一對 monitorenter/monitorexit 指令實現的,monitor 對象是同步的基本實現單元。在 Java 6 之前,monitor 的實現完全是依靠操作系統內部的互斥鎖,因為需要進行用戶態到內核態的切換,所以同步操作是一個無差別的重量級操作,性能也很低。但在 Java 6 的時候,Java 虛擬機 對此進行了大刀闊斧地改進,提供了三種不同的 monitor 實現,也就是常說的三種不同的鎖:偏向鎖(Biased Locking)、輕量級鎖和重量級鎖,大大改進了其性能。

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

    • volatile 是變量修飾符;synchronized 是修飾類、方法、代碼段。
    • volatile 僅能實現變量的修改可見性,不能保證原子性;而 synchronized 則可以保證變量的修改可見性和原子性。
    • volatile 不會造成線程的阻塞;synchronized 可能會造成線程的阻塞。

    54. synchronized 和 Lock 有什么區別?

    • synchronized 可以給類、方法、代碼塊加鎖;而 lock 只能給代碼塊加鎖。
    • synchronized 不需要手動獲取鎖和釋放鎖,使用簡單,發生異常會自動釋放鎖,不會造成死鎖;而 lock 需要自己加鎖和釋放鎖,如果使用不當沒有 unLock()去釋放鎖就會造成死鎖。
    • 通過 Lock 可以知道有沒有成功獲取鎖,而 synchronized 卻無法辦到。

    55. synchronized 和 ReentrantLock 區別是什么?

    synchronized 早期的實現比較低效,對比 ReentrantLock,大多數場景性能都相差較大,但是在 Java 6 中對 synchronized 進行了非常多的改進。

    主要區別如下:

    • ReentrantLock 使用起來比較靈活,但是必須有釋放鎖的配合動作;
    • ReentrantLock 必須手動獲取與釋放鎖,而 synchronized 不需要手動釋放和開啟鎖;
    • ReentrantLock 只適用于代碼塊鎖,而 synchronized 可用于修飾方法、代碼塊等。
    • volatile 標記的變量不會被編譯器優化;synchronized 標記的變量可以被編譯器優化。

    56. 說一下 atomic 的原理?

    atomic 主要利用 CAS (Compare And Wwap) 和 volatile 和 native 方法來保證原子操作,從而避免 synchronized 的高開銷,執行效率大為提升。

    反射

    57. 什么是反射?

    反射是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為 Java 語言的反射機制。

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

    Java 序列化是為了保存各種對象在內存中的狀態,并且可以把保存的對象狀態再讀出來。

    以下情況需要使用 Java 序列化:

    • 想把的內存中的對象狀態保存到一個文件中或者數據庫中時候;
    • 想用套接字在網絡上傳送對象的時候;
    • 想通過RMI(遠程方法調用)傳輸對象的時候。

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

    動態代理是運行時動態生成代理類。

    動態代理的應用有 spring aop、hibernate 數據查詢、測試框架的后端 mock、rpc,Java注解對象獲取等。

    60. 怎么實現動態代理?

    JDK 原生動態代理和 cglib 動態代理。JDK 原生動態代理是基于接口實現的,而 cglib 是基于繼承當前類的子類實現的。

    對象拷貝

    61. 為什么要使用克隆?

    克隆的對象可能包含一些已經修改過的屬性,而 new 出來的對象的屬性都還是初始化時候的值,所以當需要一個新的對象來保存當前對象的“狀態”就靠克隆方法了。

    62. 如何實現對象克隆?

    • 實現 Cloneable 接口并重寫 Object 類中的 clone() 方法。
    • 實現 Serializable 接口,通過對象的序列化和反序列化實現克隆,可以實現真正的深度克隆。

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

    • 淺克隆:當對象被復制時只復制它本身和其中包含的值類型的成員變量,而引用類型的成員對象并沒有復制。
    • 深克隆:除了對象本身被復制外,對象所包含的所有成員變量也將復制。

    Java Web

    64. JSP 和 servlet 有什么區別?

    JSP 是 servlet 技術的擴展,本質上就是 servlet 的簡易方式。servlet 和 JSP 最主要的不同點在于,servlet 的應用邏輯是在 Java 文件中,并且完全從表示層中的 html 里分離開來,而 JSP 的情況是 Java 和 html 可以組合成一個擴展名為 JSP 的文件。JSP 側重于視圖,servlet 主要用于控制邏輯。

    65. JSP 有哪些內置對象?作用分別是什么?

    JSP 有 9 大內置對象:

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

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

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

    67. session 和 cookie 有什么區別?

    • 存儲位置不同:session 存儲在服務器端;cookie 存儲在瀏覽器端。
    • 安全性不同:cookie 安全性一般,在瀏覽器存儲,可以被偽造和修改。
    • 容量和個數限制:cookie 有容量限制,每個站點下的 cookie 也有個數限制。
    • 存儲的多樣性:session 可以存儲在 Redis 中、數據庫中、應用程序中;而 cookie 只能存儲在瀏覽器中。

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

    session 的工作原理是客戶端登錄完成之后,服務器會創建對應的 session,session 創建完之后,會把 session 的 id 發送給客戶端,客戶端再存儲到瀏覽器中。這樣客戶端每次訪問服務器時,都會帶著 sessionid,服務器拿到 sessionid 之后,在內存找到與之對應的 session 這樣就可以正常工作了。

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

    可以用,session 只是依賴 cookie 存儲 sessionid,如果 cookie 被禁用了,可以使用 url 中添加 sessionid 的方式保證 session 能正常使用。

    70. spring mvc 和 struts 的區別是什么?

    • 攔截級別:struts2 是類級別的攔截;spring mvc 是方法級別的攔截。
    • 數據獨立性:spring mvc 的方法之間基本上獨立的,獨享 request 和 response 數據,請求數據通過參數獲取,處理結果通過 ModelMap 交回給框架,方法之間不共享變量;而 struts2 雖然方法之間也是獨立的,但其所有 action 變量是共享的,這不會影響程序運行,卻給我們編碼和讀程序時帶來了一定的麻煩。
    • 攔截機制:struts2 有以自己的 interceptor 機制,spring mvc 用的是獨立的 aop 方式,這樣導致struts2 的配置文件量比 spring mvc 大。
    • 對 ajax 的支持:spring mvc 集成了ajax,所有 ajax 使用很方便,只需要一個注解 @ResponseBody 就可以實現了;而 struts2 一般需要安裝插件或者自己寫代碼才行。

    71. 如何避免 SQL 注入?

    • 使用預處理 PreparedStatement。
    • 使用正則表達式過濾掉字符中的特殊字符。

    72. 什么是 XSS 攻擊,如何避免?

    XSS 攻擊:即跨站腳本攻擊,它是 Web 程序中常見的漏洞。原理是攻擊者往 Web 頁面里插入惡意的腳本代碼(css 代碼、Javascript 代碼等),當用戶瀏覽該頁面時,嵌入其中的腳本代碼會被執行,從而達到惡意攻擊用戶的目的,如盜取用戶 cookie、破壞頁面結構、重定向到其他網站等。

    預防 XSS 的核心是必須對輸入的數據做過濾處理。

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

    CSRF:Cross-Site Request Forgery(中文:跨站請求偽造),可以理解為攻擊者盜用了你的身份,以你的名義發送惡意請求,比如:以你名義發送郵件、發消息、購買商品,虛擬貨幣轉賬等。

    防御手段:

    • 驗證請求來源地址;
    • 關鍵操作添加驗證碼;
    • 在請求地址添加 token 并驗證。

    異常

    74. throw 和 throws 的區別?

    • throw:是真實拋出一個異常。
    • throws:是聲明可能會拋出一個異常。

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

    • final:是修飾符,如果修飾類,此類不能被繼承;如果修飾方法和變量,則表示此方法和此變量不能在被改變,只能使用。
    • finally:是 try{} catch{} finally{} 最后一部分,表示不論發生任何情況都會執行,finally 部分可以省略,但如果 finally 部分存在,則一定會執行 finally 里面的代碼。
    • finalize: 是 Object 類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法。

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

    try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同時省略,也就是說有 try 的時候,必須后面跟一個 catch 或者 finally。

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

    finally 一定會執行,即使是 catch 中 return 了,catch 中的 return 會等 finally 中的代碼執行完之后,才會執行。

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

    • NullPointerException 空指針異常
    • ClassNotFoundException 指定類不存在
    • NumberFormatException 字符串轉換為數字異常
    • IndexOutOfBoundsException 數組下標越界異常
    • ClassCastException 數據類型轉換異常
    • FileNotFoundException 文件未找到異常
    • NoSuchMethodException 方法不存在異常
    • IOException IO 異常
    • SocketException Socket 異常

    網絡

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

    301:永久重定向。

    302:暫時重定向。

    它們的區別是,301 對搜索引擎優化(SEO)更加有利;302 有被提示為網絡攔截的風險。

    80. forward 和 redirect 的區別?

    forward 是轉發 和 redirect 是重定向:

    • 地址欄 url 顯示:foward url 不會發生改變,redirect url 會發生改變;
    • 數據共享:forward 可以共享 request 里的數據,redirect 不能共享;
    • 效率:forward 比 redirect 效率高。

    81. 簡述 tcp 和 udp的區別?

    tcp 和 udp 是 OSI 模型中的運輸層中的協議。tcp 提供可靠的通信傳輸,而 udp 則常被用于讓廣播和細節控制交給應用的通信傳輸。

    兩者的區別大致如下:

    • tcp 面向連接,udp 面向非連接即發送數據前不需要建立鏈接;
    • tcp 提供可靠的服務(數據傳輸),udp 無法保證;
    • tcp 面向字節流,udp 面向報文;
    • tcp 數據傳輸慢,udp 數據傳輸快;

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

    如果采用兩次握手,那么只要服務器發出確認數據包就會建立連接,但由于客戶端此時并未響應服務器端的請求,那此時服務器端就會一直在等待客戶端,這樣服務器端就白白浪費了一定的資源。若采用三次握手,服務器端沒有收到來自客戶端的再此確認,則就會知道客戶端并沒有要求建立請求,就不會浪費服務器的資源。

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

    tcp 粘包可能發生在發送端或者接收端,分別來看兩端各種產生粘包的原因:

    • 發送端粘包:發送端需要等緩沖區滿才發送出去,造成粘包;
    • 接收方粘包:接收方不及時接收緩沖區的包,造成多個包接收。

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

    • 物理層:利用傳輸介質為數據鏈路層提供物理連接,實現比特流的透明傳輸。
    • 數據鏈路層:負責建立和管理節點間的鏈路。
    • 網絡層:通過路由選擇算法,為報文或分組通過通信子網選擇最適當的路徑。
    • 傳輸層:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。
    • 會話層:向兩個實體的表示層提供建立和使用連接的方法。
    • 表示層:處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密等。
    • 應用層:直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。

    85. get 和 post 請求有哪些區別?

    • get 請求會被瀏覽器主動緩存,而 post 不會。
    • get 傳遞參數有大小限制,而 post 沒有。
    • post 參數傳輸更安全,get 的參數會明文限制在 url 上,post 不會。

    86. 如何實現跨域?

    實現跨域有以下幾種方案:

    • 服務器端運行跨域 設置 CORS 等于 *;
    • 在單個接口使用注解 @CrossOrigin 運行跨域;
    • 使用 jsonp 跨域;

    87. 說一下 JSONP 實現原理?

    jsonp:JSON with Padding,它是利用script標簽的 src 連接可以訪問不同源的特性,加載遠程返回的“JS 函數”來執行的。

    設計模式

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

    • 單例模式:保證被創建一次,節省系統開銷。
    • 工廠模式(簡單工廠、抽象工廠):解耦代碼。
    • 觀察者模式:定義了對象之間的一對多的依賴,這樣一來,當一個對象改變時,它的所有的依賴者都會收到通知并自動更新。
    • 外觀模式:提供一個統一的接口,用來訪問子系統中的一群接口,外觀定義了一個高層的接口,讓子系統更容易使用。
    • 模版方法模式:定義了一個算法的骨架,而將一些步驟延遲到子類中,模版方法使得子類可以在不改變算法結構的情況下,重新定義算法的步驟。
    • 狀態模式:允許對象在內部狀態改變時改變它的行為,對象看起來好像修改了它的類。

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

    • 簡單工廠:用來生產同一等級結構中的任意產品,對于增加新的產品,無能為力。
    • 工廠方法:用來生產同一等級結構中的固定產品,支持增加任意產品。
    • 抽象工廠:用來生產不同產品族的全部產品,對于增加新的產品,無能為力;支持增加產品族。

    Spring/Spring MVC

    90. 為什么要使用 spring?

    • spring 提供 ioc 技術,容器會幫你管理依賴的對象,從而不需要自己創建和管理依賴對象了,更輕松的實現了程序的解耦。
    • spring 提供了事務支持,使得事務操作變的更加方便。
    • spring 提供了面向切片編程,這樣可以更方便的處理某一類的問題。
    • 更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。

    91. 解釋一下什么是 aop?

    aop 是面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。

    簡單來說就是統一處理某一“切面”(類)的問題的編程思想,比如統一處理日志、異常等。

    92. 解釋一下什么是 ioc?

    ioc:Inversionof Control(中文:控制反轉)是 spring 的核心,對于 spring 框架來說,就是由 spring 來負責控制對象的生命周期和對象間的關系。

    簡單來說,控制指的是當前對象對內部成員的控制權;控制反轉指的是,這種控制權不由當前對象管理了,由其他(類,第三方容器)來管理。

    93. spring 有哪些主要模塊?

    • spring core:框架的最基礎部分,提供 ioc 和依賴注入特性。
    • spring context:構建于 core 封裝包基礎上的 context 封裝包,提供了一種框架式的對象訪問方法。
    • spring dao:Data Access Object 提供了JDBC的抽象層。
    • spring aop:提供了面向切面的編程實現,讓你可以自定義攔截器、切點等。
    • spring Web:提供了針對 Web 開發的集成特性,例如文件上傳,利用 servlet listeners 進行 ioc 容器初始化和針對 Web 的 ApplicationContext。
    • spring Web mvc:spring 中的 mvc 封裝包提供了 Web 應用的 Model-View-Controller(MVC)的實現。

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

    • setter 屬性注入
    • 構造方法注入
    • 注解方式注入

    95. spring 中的 bean 是線程安全的嗎?

    spring 中的 bean 默認是單例模式,spring 框架并沒有對單例 bean 進行多線程的封裝處理。

    實際上大部分時候 spring bean 無狀態的(比如 dao 類),所有某種程度上來說 bean 也是安全的,但如果 bean 有狀態的話(比如 view model 對象),那就要開發者自己去保證線程安全了,最簡單的就是改變 bean 的作用域,把“singleton”變更為“prototype”,這樣請求 bean 相當于 new Bean()了,所以就可以保證線程安全了。

    • 有狀態就是有數據存儲功能。
    • 無狀態就是不會保存數據。

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

    spring 支持 5 種作用域,如下:

    • singleton:spring ioc 容器中只存在一個 bean 實例,bean 以單例模式存在,是系統默認值;
    • prototype:每次從容器調用 bean 時都會創建一個新的示例,既每次 getBean()相當于執行 new Bean()操作;
    • Web 環境下的作用域:
    • request:每次 http 請求都會創建一個 bean;
    • session:同一個 http session 共享一個 bean 實例;
    • global-session:用于 portlet 容器,因為每個 portlet 有單獨的 session,globalsession 提供一個全局性的 http session。

    注意:?使用 prototype 作用域需要慎重的思考,因為頻繁創建和銷毀 bean 會帶來很大的性能開銷。

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

    • no:默認值,表示沒有自動裝配,應使用顯式 bean 引用進行裝配。
    • byName:它根據 bean 的名稱注入對象依賴項。
    • byType:它根據類型注入對象依賴項。
    • 構造函數:通過構造函數來注入依賴項,需要設置大量的參數。
    • autodetect:容器首先通過構造函數使用 autowire 裝配,如果不能,則通過 byType 自動裝配。

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

    • 聲明式事務:聲明式事務也有兩種實現方式,基于 xml 配置文件的方式和注解方式(在類上添加 @Transaction 注解)。
    • 編碼方式:提供編碼的形式管理和維護事務。

    99. 說一下 spring 的事務隔離?

    spring 有五大隔離級別,默認值為 ISOLATION_DEFAULT(使用數據庫的設置),其他四個隔離級別和數據庫的隔離級別一致:

    ISOLATION_DEFAULT:用底層數據庫的設置隔離級別,數據庫設置的是什么我就用什么;

    ISOLATIONREADUNCOMMITTED:未提交讀,最低隔離級別、事務未提交前,就可被其他事務讀取(會出現幻讀、臟讀、不可重復讀);

    ISOLATIONREADCOMMITTED:提交讀,一個事務提交后才能被其他事務讀取到(會造成幻讀、不可重復讀),SQL server 的默認級別;

    ISOLATIONREPEATABLEREAD:可重復讀,保證多次讀取同一個數據時,其值都和事務開始時候的內容是一致,禁止讀取到別的事務未提交的數據(會造成幻讀),MySQL 的默認級別;

    ISOLATION_SERIALIZABLE:序列化,代價最高最可靠的隔離級別,該隔離級別能防止臟讀、不可重復讀、幻讀。

    臟讀?:表示一個事務能夠讀取另一個事務中還未提交的數據。比如,某個事務嘗試插入記錄 A,此時該事務還未提交,然后另一個事務嘗試讀取到了記錄 A。

    不可重復讀?:是指在一個事務內,多次讀同一數據。

    幻讀?:指同一個事務內多次查詢返回的結果集不一樣。比如同一個事務 A 第一次查詢時候有 n 條記錄,但是第二次同等條件下查詢卻有 n+1 條記錄,這就好像產生了幻覺。發生幻讀的原因也是另外一個事務新增或者刪除或者修改了第一個事務結果集里面的數據,同一個記錄的數據內容被修改了,所有數據行的記錄就變多或者變少了。

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

    • spring mvc 先將請求發送給 DispatcherServlet。
    • DispatcherServlet 查詢一個或多個 HandlerMapping,找到處理請求的 Controller。
    • DispatcherServlet 再把請求提交到對應的 Controller。
    • Controller 進行業務邏輯處理后,會返回一個ModelAndView。
    • Dispathcher 查詢一個或多個 ViewResolver 視圖解析器,找到 ModelAndView 對象指定的視圖對象。
    • 視圖對象負責渲染返回給客戶端。

    101. spring mvc 有哪些組件?

    • 前置控制器 DispatcherServlet。
    • 映射控制器 HandlerMapping。
    • 處理器 Controller。
    • 模型和視圖 ModelAndView。
    • 視圖解析器 ViewResolver。

    102. @RequestMapping 的作用是什么?

    將 http 請求映射到相應的類/方法上。

    103. @Autowired 的作用是什么?

    @Autowired 它可以對類成員變量、方法及構造函數進行標注,完成自動裝配的工作,通過@Autowired 的使用來消除 set/get 方法。

    Spring Boot/Spring Cloud

    104. 什么是 spring boot?

    spring boot 是為 spring 服務的,是用來簡化新 spring 應用的初始搭建以及開發過程的。

    105. 為什么要用 spring boot?

    • 配置簡單
    • 獨立運行
    • 自動裝配
    • 無代碼生成和 xml 配置
    • 提供應用監控
    • 易上手
    • 提升開發效率

    106. spring boot 核心配置文件是什么?

    spring boot 核心的兩個配置文件:

    • bootstrap (. yml 或者 . properties):boostrap 由父 ApplicationContext 加載的,比 applicaton 優先加載,且 boostrap 里面的屬性不能被覆蓋;
    • application (. yml 或者 . properties):用于 spring boot 項目的自動化配置。

    107. spring boot 配置文件有哪幾種類型?它們有什么區別?

    配置文件有 . properties 格式和 . yml 格式,它們主要的區別是書法風格不同。

    . properties 配置如下:

    spring. RabbitMQ. port=5672

    . yml 配置如下:

    ?
  • spring:

  • RabbitMQ:

  • port: 5672

  • . yml 格式不支持 @PropertySource 注解導入。

    108. spring boot 有哪些方式可以實現熱部署?

    • 使用 devtools 啟動熱部署,添加 devtools 庫,在配置文件中把 spring. devtools. restart. enabled 設置為 true;
    • 使用 Intellij Idea 編輯器,勾上自動編譯或手動重新編譯。

    109. jpa 和 hibernate 有什么區別?

    jpa 全稱 Java Persistence API,是 Java 持久化接口規范,hibernate 屬于 jpa 的具體實現。

    110. 什么是 spring cloud?

    spring cloud 是一系列框架的有序集合。它利用 spring boot 的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用 spring boot 的開發風格做到一鍵啟動和部署。

    111. spring cloud 斷路器的作用是什么?

    在分布式架構中,斷路器模式的作用也是類似的,當某個服務單元發生故障(類似用電器發生短路)之后,通過斷路器的故障監控(類似熔斷保險絲),向調用方返回一個錯誤響應,而不是長時間的等待。這樣就不會使得線程因調用故障服務被長時間占用不釋放,避免了故障在分布式系統中的蔓延。

    112. spring cloud 的核心組件有哪些?

    • Eureka:服務注冊于發現。
    • Feign:基于動態代理機制,根據注解和選擇的機器,拼接請求 url 地址,發起請求。
    • Ribbon:實現負載均衡,從一個服務的多臺機器中選擇一臺。
    • Hystrix:提供線程池,不同的服務走不同的線程池,實現了不同服務調用的隔離,避免了服務雪崩的問題。
    • Zuul:網關管理,由 Zuul 網關轉發請求給對應的服務。

    Hibernate

    113. 為什么要使用 hibernate?

    • hibernate 是對 jdbc 的封裝,大大簡化了數據訪問層的繁瑣的重復性代碼。
    • hibernate 是一個優秀的 ORM 實現,很多程度上簡化了 DAO 層的編碼功能。
    • 可以很方便的進行數據庫的移植工作。
    • 提供了緩存機制,是程序執行更改的高效。

    114. 什么是 ORM 框架?

    ORM(Object Relation Mapping)對象關系映射,是把數據庫中的關系數據映射成為程序中的對象。

    使用 ORM 的優點:提高了開發效率降低了開發成本、開發更簡單更對象化、可移植更強。

    115. hibernate 中如何在控制臺查看打印的 SQL 語句?

    在 Config 里面把 hibernate. show_SQL 設置為 true 就可以。但不建議開啟,開啟之后會降低程序的運行效率。

    116. hibernate 有幾種查詢方式?

    三種:hql、原生 SQL、條件查詢 Criteria。

    117. hibernate 實體類可以被定義為 final 嗎?

    實體類可以定義為 final 類,但這樣的話就不能使用 hibernate 代理模式下的延遲關聯提供性能了,所以不建議定義實體類為 final。

    118. 在 hibernate 中使用 Integer 和 int 做映射有什么區別?

    Integer 類型為對象,它的值允許為 null,而 int 屬于基礎數據類型,值不能為 null。

    119. hibernate 是如何工作的?

    • 讀取并解析配置文件。
    • 讀取并解析映射文件,創建 SessionFactory。
    • 打開 Session。
    • 創建事務。
    • 進行持久化操作。
    • 提交事務。
    • 關閉 Session。
    • 關閉 SessionFactory。

    120. get()和 load()的區別?

    • 數據查詢時,沒有 OID 指定的對象,get() 返回 null;load() 返回一個代理對象。
    • load()支持延遲加載;get() 不支持延遲加載。

    121. 說一下 hibernate 的緩存機制?

    hibernate 常用的緩存有一級緩存和二級緩存:

    一級緩存:也叫 Session 緩存,只在 Session 作用范圍內有效,不需要用戶干涉,由 hibernate 自身維護,可以通過:evict(object)清除 object 的緩存;clear()清除一級緩存中的所有緩存;flush()刷出緩存;

    二級緩存:應用級別的緩存,在所有 Session 中都有效,支持配置第三方的緩存,如:EhCache。

    122. hibernate 對象有哪些狀態?

    • 臨時/瞬時狀態:直接 new 出來的對象,該對象還沒被持久化(沒保存在數據庫中),不受 Session 管理。
    • 持久化狀態:當調用 Session 的 save/saveOrupdate/get/load/list 等方法的時候,對象就是持久化狀態。
    • 游離狀態:Session 關閉之后對象就是游離狀態。

    123. 在 hibernate 中 getCurrentSession 和 openSession 的區別是什么?

    • getCurrentSession 會綁定當前線程,而 openSession 則不會。
    • getCurrentSession 事務是 Spring 控制的,并且不需要手動關閉,而 openSession 需要我們自己手動開啟和提交事務。

    124. hibernate 實體類必須要有無參構造函數嗎?為什么?

    hibernate 中每個實體類必須提供一個無參構造函數,因為 hibernate 框架要使用 reflection api,通過調用 ClassnewInstance() 來創建實體類的實例,如果沒有無參的構造函數就會拋出異常。

    MyBatis

    125. MyBatis 中 #{}和 ${}的區別是什么?

    \#{}是預編譯處理,${}是字符替換。 在使用?#{}時,MyBatis 會將 SQL 中的?#{}替換成“?”,配合 PreparedStatement 的 set 方法賦值,這樣可以有效的防止 SQL 注入,保證程序的運行安全。

    126. MyBatis 有幾種分頁方式?

    分頁方式:邏輯分頁和物理分頁。

    邏輯分頁:?使用 MyBatis 自帶的 RowBounds 進行分頁,它是一次性查詢很多數據,然后在數據中再進行檢索。

    物理分頁:?自己手寫 SQL 分頁或使用分頁插件 PageHelper,去數據庫查詢指定條數的分頁數據的形式。

    127. RowBounds 是一次性查詢全部結果嗎?為什么?

    RowBounds 表面是在“所有”數據中檢索數據,其實并非是一次性查詢出所有數據,因為 MyBatis 是對 jdbc 的封裝,在 jdbc 驅動中有一個 Fetch Size 的配置,它規定了每次最多從數據庫查詢多少條數據,假如你要查詢更多數據,它會在你執行 next()的時候,去查詢更多的數據。就好比你去自動取款機取 10000 元,但取款機每次最多能取 2500 元,所以你要取 4 次才能把錢取完。只是對于 jdbc 來說,當你調用 next()的時候會自動幫你完成查詢工作。這樣做的好處可以有效的防止內存溢出。

    Fetch Size 官方相關文檔:http://t. cn/EfSE2g3

    128. MyBatis 邏輯分頁和物理分頁的區別是什么?

    • 邏輯分頁是一次性查詢很多數據,然后再在結果中檢索分頁的數據。這樣做弊端是需要消耗大量的內存、有內存溢出的風險、對數據庫壓力較大。
    • 物理分頁是從數據庫查詢指定條數的數據,彌補了一次性全部查出的所有數據的種種缺點,比如需要大量的內存,對數據庫查詢壓力較大等問題。

    129. MyBatis 是否支持延遲加載?延遲加載的原理是什么?

    MyBatis 支持延遲加載,設置 lazyLoadingEnabled=true 即可。

    延遲加載的原理的是調用的時候觸發加載,而不是在初始化的時候就加載信息。比如調用 a. getB(). getName(),這個時候發現 a. getB() 的值為 null,此時會單獨觸發事先保存好的關聯 B 對象的 SQL,先查詢出來 B,然后再調用 a. setB(b),而這時候再調用 a. getB(). getName() 就有值了,這就是延遲加載的基本原理。

    130. 說一下 MyBatis 的一級緩存和二級緩存?

    • 一級緩存:基于 PerpetualCache 的 HashMap 本地緩存,它的聲明周期是和 SQLSession 一致的,有多個 SQLSession 或者分布式的環境中數據庫操作,可能會出現臟數據。當 Session flush 或 close 之后,該 Session 中的所有 Cache 就將清空,默認一級緩存是開啟的。
    • 二級緩存:也是基于 PerpetualCache 的 HashMap 本地緩存,不同在于其存儲作用域為 Mapper 級別的,如果多個SQLSession之間需要共享緩存,則需要使用到二級緩存,并且二級緩存可自定義存儲源,如 Ehcache。默認不打開二級緩存,要開啟二級緩存,使用二級緩存屬性類需要實現 Serializable 序列化接口(可用來保存對象的狀態)。

    開啟二級緩存數據查詢流程:二級緩存 -> 一級緩存 -> 數據庫。

    緩存更新機制:當某一個作用域(一級緩存 Session/二級緩存 Mapper)進行了C/U/D 操作后,默認該作用域下所有 select 中的緩存將被 clear。

    131. MyBatis 和 hibernate 的區別有哪些?

    • 靈活性:MyBatis 更加靈活,自己可以寫 SQL 語句,使用起來比較方便。
    • 可移植性:MyBatis 有很多自己寫的 SQL,因為每個數據庫的 SQL 可以不相同,所以可移植性比較差。
    • 學習和使用門檻:MyBatis 入門比較簡單,使用門檻也更低。
    • 二級緩存:hibernate 擁有更好的二級緩存,它的二級緩存可以自行更換為第三方的二級緩存。

    132. MyBatis 有哪些執行器(Executor)?

    MyBatis 有三種基本的Executor執行器:

    • SimpleExecutor:每執行一次 update 或 select 就開啟一個 Statement 對象,用完立刻關閉 Statement 對象;
    • ReuseExecutor:執行 update 或 select,以 SQL 作為 key 查找 Statement 對象,存在就使用,不存在就創建,用完后不關閉 Statement 對象,而是放置于 Map 內供下一次使用。簡言之,就是重復使用 Statement 對象;
    • BatchExecutor:執行 update(沒有 select,jdbc 批處理不支持 select),將所有 SQL 都添加到批處理中(addBatch()),等待統一執行(executeBatch()),它緩存了多個 Statement 對象,每個 Statement 對象都是 addBatch()完畢后,等待逐一執行 executeBatch()批處理,與 jdbc 批處理相同。

    133. MyBatis 分頁插件的實現原理是什么?

    分頁插件的基本原理是使用 MyBatis 提供的插件接口,實現自定義插件,在插件的攔截方法內攔截待執行的 SQL,然后重寫 SQL,根據 dialect 方言,添加對應的物理分頁語句和物理分頁參數。

    134. MyBatis 如何編寫一個自定義插件?

    自定義插件實現原理

    MyBatis 自定義插件針對 MyBatis 四大對象(Executor、StatementHandler、ParameterHandler、ResultSetHandler)進行攔截:

    • Executor:攔截內部執行器,它負責調用 StatementHandler 操作數據庫,并把結果集通過 ResultSetHandler 進行自動映射,另外它還處理了二級緩存的操作;
    • StatementHandler:攔截 SQL 語法構建的處理,它是 MyBatis 直接和數據庫執行 SQL 腳本的對象,另外它也實現了 MyBatis 的一級緩存;
    • ParameterHandler:攔截參數的處理;
    • ResultSetHandler:攔截結果集的處理。

    自定義插件實現關鍵

    MyBatis 插件要實現 Interceptor 接口,接口包含的方法,如下:

    ?
  • public interface Interceptor {

  • Object intercept(Invocation invocation) throws Throwable;

  • Object plugin(Object target);

  • void setProperties(Properties properties);

  • }

    • setProperties 方法是在 MyBatis 進行配置插件的時候可以配置自定義相關屬性,即:接口實現對象的參數配置;
    • plugin 方法是插件用于封裝目標對象的,通過該方法我們可以返回目標對象本身,也可以返回一個它的代理,可以決定是否要進行攔截進而決定要返回一個什么樣的目標對象,官方提供了示例:return Plugin. wrap(target, this);
    • intercept 方法就是要進行攔截的時候要執行的方法。

    自定義插件實現示例

    官方插件實現:

    ?
  • @Intercepts({@Signature(type = Executor. class, method = "query",

  • args = {MappedStatement. class, Object. class, RowBounds. class, ResultHandler. class})})

  • public class TestInterceptor implements Interceptor {

  • public Object intercept(Invocation invocation) throws Throwable {

  • Object target = invocation. getTarget(); //被代理對象

  • Method method = invocation. getMethod(); //代理方法

  • Object[] args = invocation. getArgs(); //方法參數

  • // do something . . . . . . 方法攔截前執行代碼塊

  • Object result = invocation. proceed();

  • // do something . . . . . . . 方法攔截后執行代碼塊

  • return result;

  • }

  • public Object plugin(Object target) {

  • return Plugin. wrap(target, this);

  • }

  • }

  • RabbitMQ

    135. RabbitMQ 的使用場景有哪些?

    • 搶購活動,削峰填谷,防止系統崩塌。
    • 延遲信息處理,比如 10 分鐘之后給下單未付款的用戶發送郵件提醒。
    • 解耦系統,對于新增的功能可以單獨寫模塊擴展,比如用戶確認評價之后,新增了給用戶返積分的功能,這個時候不用在業務代碼里添加新增積分的功能,只需要把新增積分的接口訂閱確認評價的消息隊列即可,后面再添加任何功能只需要訂閱對應的消息隊列即可。

    136. RabbitMQ 有哪些重要的角色?

    RabbitMQ 中重要的角色有:生產者、消費者和代理:

    • 生產者:消息的創建者,負責創建和推送數據到消息服務器;
    • 消費者:消息的接收方,用于處理數據和確認消息;
    • 代理:就是 RabbitMQ 本身,用于扮演“快遞”的角色,本身不生產消息,只是扮演“快遞”的角色。

    137. RabbitMQ 有哪些重要的組件?

    • ConnectionFactory(連接管理器):應用程序與Rabbit之間建立連接的管理器,程序代碼中使用。
    • Channel(信道):消息推送使用的通道。
    • Exchange(交換器):用于接受、分配消息。
    • Queue(隊列):用于存儲生產者的消息。
    • RoutingKey(路由鍵):用于把生成者的數據分配到交換器上。
    • BindingKey(綁定鍵):用于把交換器的消息綁定到隊列上。

    138. RabbitMQ 中 vhost 的作用是什么?

    vhost:每個 RabbitMQ 都能創建很多 vhost,我們稱之為虛擬主機,每個虛擬主機其實都是 mini 版的RabbitMQ,它擁有自己的隊列,交換器和綁定,擁有自己的權限機制。

    139. RabbitMQ 的消息是怎么發送的?

    首先客戶端必須連接到 RabbitMQ 服務器才能發布和消費消息,客戶端和 rabbit server 之間會創建一個 tcp 連接,一旦 tcp 打開并通過了認證(認證就是你發送給 rabbit 服務器的用戶名和密碼),你的客戶端和 RabbitMQ 就創建了一條 amqp 信道(channel),信道是創建在“真實” tcp 上的虛擬連接,amqp 命令都是通過信道發送出去的,每個信道都會有一個唯一的 id,不論是發布消息,訂閱隊列都是通過這個信道完成的。

    140. RabbitMQ 怎么保證消息的穩定性?

    • 提供了事務的功能。
    • 通過將 channel 設置為 confirm(確認)模式。

    141. RabbitMQ 怎么避免消息丟失?

    • 把消息持久化磁盤,保證服務器重啟消息不丟失。
    • 每個集群中至少有一個物理磁盤,保證消息落入磁盤。

    142. 要保證消息持久化成功的條件有哪些?

    • 聲明隊列必須設置持久化 durable 設置為 true.
    • 消息推送投遞模式必須設置持久化,deliveryMode 設置為 2(持久)。
    • 消息已經到達持久化交換器。
    • 消息已經到達持久化隊列。

    以上四個條件都滿足才能保證消息持久化成功。

    143. RabbitMQ 持久化有什么缺點?

    持久化的缺地就是降低了服務器的吞吐量,因為使用的是磁盤而非內存存儲,從而降低了吞吐量。可盡量使用 ssd 硬盤來緩解吞吐量的問題。

    144. RabbitMQ 有幾種廣播類型?

    • direct(默認方式):最基礎最簡單的模式,發送方把消息發送給訂閱方,如果有多個訂閱者,默認采取輪詢的方式進行消息發送。
    • headers:與 direct 類似,只是性能很差,此類型幾乎用不到。
    • fanout:分發模式,把消費分發給所有訂閱者。
    • topic:匹配訂閱模式,使用正則匹配到消息隊列,能匹配到的都能接收到。

    145. RabbitMQ 怎么實現延遲消息隊列?

    延遲隊列的實現有兩種方式:

    • 通過消息過期后進入死信交換器,再由交換器轉發到延遲消費隊列,實現延遲功能;
    • 使用 RabbitMQ-delayed-message-exchange 插件實現延遲功能。

    146. RabbitMQ 集群有什么用?

    集群主要有以下兩個用途:

    • 高可用:某個服務器出現問題,整個 RabbitMQ 還可以繼續使用;
    • 高容量:集群可以承載更多的消息量。

    147. RabbitMQ 節點的類型有哪些?

    • 磁盤節點:消息會存儲到磁盤。
    • 內存節點:消息都存儲在內存中,重啟服務器消息丟失,性能高于磁盤類型。

    148. RabbitMQ 集群搭建需要注意哪些問題?

    • 各節點之間使用“--link”連接,此屬性不能忽略。
    • 各節點使用的 erlang cookie 值必須相同,此值相當于“秘鑰”的功能,用于各節點的認證。
    • 整個集群中必須包含一個磁盤節點。

    149. RabbitMQ 每個節點是其他節點的完整拷貝嗎?為什么?

    不是,原因有以下兩個:

    • 存儲空間的考慮:如果每個節點都擁有所有隊列的完全拷貝,這樣新增節點不但沒有新增存儲空間,反而增加了更多的冗余數據;
    • 性能的考慮:如果每條消息都需要完整拷貝到每一個集群節點,那新增節點并沒有提升處理消息的能力,最多是保持和單節點相同的性能甚至是更糟。

    150. RabbitMQ 集群中唯一一個磁盤節點崩潰了會發生什么情況?

    如果唯一磁盤的磁盤節點崩潰了,不能進行以下操作:

    • 不能創建隊列
    • 不能創建交換器
    • 不能創建綁定
    • 不能添加用戶
    • 不能更改權限
    • 不能添加和刪除集群節點

    唯一磁盤節點崩潰了,集群是可以保持運行的,但你不能更改任何東西。

    151. RabbitMQ 對集群節點停止順序有要求嗎?

    RabbitMQ 對集群的停止的順序是有要求的,應該先關閉內存節點,最后再關閉磁盤節點。如果順序恰好相反的話,可能會造成消息的丟失。

    Kafka

    152. kafka 可以脫離 zookeeper 單獨使用嗎?為什么?

    kafka 不能脫離 zookeeper 單獨使用,因為 kafka 使用 zookeeper 管理和協調 kafka 的節點服務器。

    153. kafka 有幾種數據保留的策略?

    kafka 有兩種數據保存策略:按照過期時間保留和按照存儲的消息大小保留。

    154. kafka 同時設置了 7 天和 10G 清除數據,到第五天的時候消息達到了 10G,這個時候 kafka 將如何處理?

    這個時候 kafka 會執行數據清除工作,時間和大小不論那個滿足條件,都會清空數據。

    155. 什么情況會導致 kafka 運行變慢?

    • cpu 性能瓶頸
    • 磁盤讀寫瓶頸
    • 網絡瓶頸

    156. 使用 kafka 集群需要注意什么?

    • 集群的數量不是越多越好,最好不要超過 7 個,因為節點越多,消息復制需要的時間就越長,整個群組的吞吐量就越低。
    • 集群數量最好是單數,因為超過一半故障集群就不能用了,設置為單數容錯率更高。

    Zookeeper

    157. zookeeper 是什么?

    zookeeper 是一個分布式的,開放源碼的分布式應用程序協調服務,是 google chubby 的開源實現,是 hadoop 和 hbase 的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。

    158. zookeeper 都有哪些功能?

    • 集群管理:監控節點存活狀態、運行請求等。
    • 主節點選舉:主節點掛掉了之后可以從備用的節點開始新一輪選主,主節點選舉說的就是這個選舉的過程,使用 zookeeper 可以協助完成這個過程。
    • 分布式鎖:zookeeper 提供兩種鎖:獨占鎖、共享鎖。獨占鎖即一次只能有一個線程使用資源,共享鎖是讀鎖共享,讀寫互斥,即可以有多線線程同時讀同一個資源,如果要使用寫鎖也只能有一個線程使用。zookeeper可以對分布式鎖進行控制。
    • 命名服務:在分布式系統中,通過使用命名服務,客戶端應用能夠根據指定名字來獲取資源或服務的地址,提供者等信息。

    159. zookeeper 有幾種部署模式?

    zookeeper 有三種部署模式:

    • 單機部署:一臺集群上運行;
    • 集群部署:多臺集群運行;
    • 偽集群部署:一臺集群啟動多個 zookeeper 實例運行。

    160. zookeeper 怎么保證主從節點的狀態同步?

    zookeeper 的核心是原子廣播,這個機制保證了各個 server 之間的同步。實現這個機制的協議叫做 zab 協議。 zab 協議有兩種模式,分別是恢復模式(選主)和廣播模式(同步)。當服務啟動或者在領導者崩潰后,zab 就進入了恢復模式,當領導者被選舉出來,且大多數 server 完成了和 leader 的狀態同步以后,恢復模式就結束了。狀態同步保證了 leader 和 server 具有相同的系統狀態。

    161. 集群中為什么要有主節點?

    在分布式環境中,有些業務邏輯只需要集群中的某一臺機器進行執行,其他的機器可以共享這個結果,這樣可以大大減少重復計算,提高性能,所以就需要主節點。

    162. 集群中有 3 臺服務器,其中一個節點宕機,這個時候 zookeeper 還可以使用嗎?

    可以繼續使用,單數服務器只要沒超過一半的服務器宕機就可以繼續使用。

    163. 說一下 zookeeper 的通知機制?

    客戶端端會對某個 znode 建立一個 watcher 事件,當該 znode 發生變化時,這些客戶端會收到 zookeeper 的通知,然后客戶端可以根據 znode 變化來做出業務上的改變。

    MySQL

    164. 數據庫的三范式是什么?

    • 第一范式:強調的是列的原子性,即數據庫表的每一列都是不可分割的原子數據項。
    • 第二范式:要求實體的屬性完全依賴于主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性。
    • 第三范式:任何非主屬性不依賴于其它非主屬性。

    165. 一張自增表里面總共有 7 條數據,刪除了最后 2 條數據,重啟 MySQL 數據庫,又插入了一條數據,此時 id 是幾?

    • 表類型如果是 MyISAM ,那 id 就是 8。
    • 表類型如果是 InnoDB,那 id 就是 6。

    InnoDB 表只會把自增主鍵的最大 id 記錄在內存中,所以重啟之后會導致最大 id 丟失。

    166. 如何獲取當前數據庫版本?

    使用 select version() 獲取當前 MySQL 數據庫版本。

    167. 說一下 ACID 是什么?

    • Atomicity(原子性):一個事務(transaction)中的所有操作,或者全部完成,或者全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被恢復(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。即,事務不可分割、不可約簡。
    • Consistency(一致性):在事務開始之前和事務結束以后,數據庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設約束、觸發器、級聯回滾等。
    • Isolation(隔離性):數據庫允許多個并發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務并發執行時由于交叉執行而導致數據的不一致。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。
    • Durability(持久性):事務處理結束后,對數據的修改就是永久的,即便系統故障也不會丟失。

    168. char 和 varchar 的區別是什么?

    • char(n)?:固定長度類型,比如訂閱 char(10),當你輸入"abc"三個字符的時候,它們占的空間還是 10 個字節,其他 7 個是空字節。

    chat 優點:效率高;缺點:占用空間;適用場景:存儲密碼的 md5 值,固定長度的,使用 char 非常合適。

    • varchar(n)?:可變長度,存儲的值是每個值占用的字節再加上一個用來記錄其長度的字節的長度。

    所以,從空間上考慮 varcahr 比較合適;從效率上考慮 char 比較合適,二者使用需要權衡。

    169. float 和 double 的區別是什么?

    • float 最多可以存儲 8 位的十進制數,并在內存中占 4 字節。
    • double 最可可以存儲 16 位的十進制數,并在內存中占 8 字節。

    170. MySQL 的內連接、左連接、右連接有什么區別?

    內連接關鍵字:inner join;左連接:left join;右連接:right join。

    內連接是把匹配的關聯數據顯示出來;左連接是左邊的表全部顯示出來,右邊的表顯示出符合條件的數據;右連接正好相反。

    171. MySQL 索引是怎么實現的?

    索引是滿足某種特定查找算法的數據結構,而這些數據結構會以某種方式指向數據,從而實現高效查找數據。

    具體來說 MySQL 中的索引,不同的數據引擎實現有所不同,但目前主流的數據庫引擎的索引都是 B+ 樹實現的,B+ 樹的搜索效率,可以到達二分法的性能,找到數據區域之后就找到了完整的數據結構了,所有索引的性能也是更好的。

    172. 怎么驗證 MySQL 的索引是否滿足需求?

    使用 explain 查看 SQL 是如何執行查詢語句的,從而分析你的索引是否滿足需求。

    explain 語法:explain select * from table where type=1。

    173. 說一下數據庫的事務隔離?

    MySQL 的事務隔離是在 MySQL. ini 配置文件里添加的,在文件的最后添加:

    transaction-isolation = REPEATABLE-READ

    可用的配置值:READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE。

    • READ-UNCOMMITTED:未提交讀,最低隔離級別、事務未提交前,就可被其他事務讀取(會出現幻讀、臟讀、不可重復讀)。
    • READ-COMMITTED:提交讀,一個事務提交后才能被其他事務讀取到(會造成幻讀、不可重復讀)。
    • REPEATABLE-READ:可重復讀,默認級別,保證多次讀取同一個數據時,其值都和事務開始時候的內容是一致,禁止讀取到別的事務未提交的數據(會造成幻讀)。
    • SERIALIZABLE:序列化,代價最高最可靠的隔離級別,該隔離級別能防止臟讀、不可重復讀、幻讀。

    臟讀?:表示一個事務能夠讀取另一個事務中還未提交的數據。比如,某個事務嘗試插入記錄 A,此時該事務還未提交,然后另一個事務嘗試讀取到了記錄 A。

    不可重復讀?:是指在一個事務內,多次讀同一數據。

    幻讀?:指同一個事務內多次查詢返回的結果集不一樣。比如同一個事務 A 第一次查詢時候有 n 條記錄,但是第二次同等條件下查詢卻有 n+1 條記錄,這就好像產生了幻覺。發生幻讀的原因也是另外一個事務新增或者刪除或者修改了第一個事務結果集里面的數據,同一個記錄的數據內容被修改了,所有數據行的記錄就變多或者變少了。

    174. 說一下 MySQL 常用的引擎?

    • InnoDB 引擎:InnoDB 引擎提供了對數據庫 acid 事務的支持,并且還提供了行級鎖和外鍵的約束,它的設計的目標就是處理大數據容量的數據庫系統。MySQL 運行的時候,InnoDB 會在內存中建立緩沖池,用于緩沖數據和索引。但是該引擎是不支持全文搜索,同時啟動也比較的慢,它是不會保存表的行數的,所以當進行 select count(*) from table 指令的時候,需要進行掃描全表。由于鎖的粒度小,寫操作是不會鎖定全表的,所以在并發度較高的場景下使用會提升效率的。

    • MyIASM 引擎:MySQL 的默認引擎,但不提供事務的支持,也不支持行級鎖和外鍵。因此當執行插入和更新語句時,即執行寫操作的時候需要鎖定這個表,所以會導致效率會降低。不過和 InnoDB 不同的是,MyIASM 引擎是保存了表的行數,于是當進行 select count(*) from table 語句時,可以直接的讀取已經保存的值而不需要進行掃描全表。所以,如果表的讀操作遠遠多于寫操作時,并且不需要事務的支持的,可以將 MyIASM 作為數據庫引擎的首選。

    175. 說一下 MySQL 的行鎖和表鎖?

    MyISAM 只支持表鎖,InnoDB 支持表鎖和行鎖,默認為行鎖。

    • 表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖沖突的概率最高,并發量最低。
    • 行級鎖:開銷大,加鎖慢,會出現死鎖。鎖力度小,發生鎖沖突的概率小,并發度最高。

    176. 說一下樂觀鎖和悲觀鎖?

    • 樂觀鎖:每次去拿數據的時候都認為別人不會修改,所以不會上鎖,但是在提交更新的時候會判斷一下在此期間別人有沒有去更新這個數據。
    • 悲觀鎖:每次去拿數據的時候都認為別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會阻止,直到這個鎖被釋放。

    數據庫的樂觀鎖需要自己實現,在表里面添加一個 version 字段,每次修改成功值加 1,這樣每次修改的時候先對比一下,自己擁有的 version 和數據庫現在的 version 是否一致,如果不一致就不修改,這樣就實現了樂觀鎖。

    177. MySQL 問題排查都有哪些手段?

    • 使用 show processlist 命令查看當前所有連接信息。
    • 使用 explain 命令查詢 SQL 語句執行計劃。
    • 開啟慢查詢日志,查看慢查詢的 SQL。

    178. 如何做 MySQL 的性能優化?

    • 為搜索字段創建索引。
    • 避免使用 select *,列出需要查詢的字段。
    • 垂直分割分表。
    • 選擇正確的存儲引擎。

    Redis

    179. Redis 是什么?都有哪些使用場景?

    Redis 是一個使用 C 語言開發的高速緩存數據庫。

    Redis 使用場景:

    • 記錄帖子點贊數、點擊數、評論數;
    • 緩存近期熱帖;
    • 緩存文章詳情信息;
    • 記錄用戶會話信息。

    180. Redis 有哪些功能?

    • 數據緩存功能
    • 分布式鎖的功能
    • 支持數據持久化
    • 支持事務
    • 支持消息隊列

    181. Redis 和 memcache 有什么區別?

    • 存儲方式不同:memcache 把數據全部存在內存之中,斷電后會掛掉,數據不能超過內存大小;Redis 有部份存在硬盤上,這樣能保證數據的持久性。
    • 數據支持類型:memcache 對數據類型支持相對簡單;Redis 有復雜的數據類型。
    • 使用底層模型不同:它們之間底層實現方式,以及與客戶端之間通信的應用協議不一樣,Redis 自己構建了 vm 機制,因為一般的系統調用系統函數的話,會浪費一定的時間去移動和請求。
    • value 值大小不同:Redis 最大可以達到 1gb;memcache 只有 1mb。

    182. Redis 為什么是單線程的?

    因為 cpu 不是 Redis 的瓶頸,Redis 的瓶頸最有可能是機器內存或者網絡帶寬。既然單線程容易實現,而且 cpu 又不會成為瓶頸,那就順理成章地采用單線程的方案了。

    關于 Redis 的性能,官方網站也有,普通筆記本輕松處理每秒幾十萬的請求。

    而且單線程并不代表就慢 nginx 和 nodejs 也都是高性能單線程的代表。

    183. 什么是緩存穿透?怎么解決?

    緩存穿透:指查詢一個一定不存在的數據,由于緩存是不命中時需要從數據庫查詢,查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到數據庫去查詢,造成緩存穿透。

    解決方案:最簡單粗暴的方法如果一個查詢返回的數據為空(不管是數據不存在,還是系統故障),我們就把這個空結果進行緩存,但它的過期時間會很短,最長不超過五分鐘。

    184. Redis 支持的數據類型有哪些?

    Redis 支持的數據類型:string(字符串)、list(列表)、hash(字典)、set(集合)、zset(有序集合)。

    185. Redis 支持的 Java 客戶端都有哪些?

    支持的 Java 客戶端有 Redisson、jedis、lettuce 等。

    186. jedis 和 Redisson 有哪些區別?

    • jedis:提供了比較全面的 Redis 命令的支持。
    • Redisson:實現了分布式和可擴展的 Java 數據結構,與 jedis 相比 Redisson 的功能相對簡單,不支持排序、事務、管道、分區等 Redis 特性。

    187. 怎么保證緩存和數據庫數據的一致性?

    • 合理設置緩存的過期時間。
    • 新增、更改、刪除數據庫操作時同步更新 Redis,可以使用事物機制來保證數據的一致性。

    188. Redis 持久化有幾種方式?

    Redis 的持久化有兩種方式,或者說有兩種策略:

    • RDB(Redis Database):指定的時間間隔能對你的數據進行快照存儲。
    • AOF(Append Only File):每一個收到的寫命令都通過write函數追加到文件中。

    189. Redis 怎么實現分布式鎖?

    Redis 分布式鎖其實就是在系統里面占一個“坑”,其他程序也要占“坑”的時候,占用成功了就可以繼續執行,失敗了就只能放棄或稍后重試。

    占坑一般使用 setnx(set if not exists)指令,只允許被一個程序占有,使用完調用 del 釋放鎖。

    190. Redis 分布式鎖有什么缺陷?

    Redis 分布式鎖不能解決超時的問題,分布式鎖有一個超時時間,程序的執行如果超出了鎖的超時時間就會出現問題。

    191. Redis 如何做內存優化?

    盡量使用 Redis 的散列表,把相關的信息放到散列表里面存儲,而不是把每個字段單獨存儲,這樣可以有效的減少內存使用。比如將 Web 系統的用戶對象,應該放到散列表里面再整體存儲到 Redis,而不是把用戶的姓名、年齡、密碼、郵箱等字段分別設置 key 進行存儲。

    192. Redis 淘汰策略有哪些?

    • volatile-lru:從已設置過期時間的數據集(server. db[i]. expires)中挑選最近最少使用的數據淘汰。

    • volatile-ttl:從已設置過期時間的數據集(server. db[i]. expires)中挑選將要過期的數據淘汰。

    • volatile-random:從已設置過期時間的數據集(server. db[i]. expires)中任意選擇數據淘汰。

    • allkeys-lru:從數據集(server. db[i]. dict)中挑選最近最少使用的數據淘汰。

    • allkeys-random:從數據集(server. db[i]. dict)中任意選擇數據淘汰。

    • no-enviction(驅逐):禁止驅逐數據。

    193. Redis 常見的性能問題有哪些?該如何解決?

    • 主服務器寫內存快照,會阻塞主線程的工作,當快照比較大時對性能影響是非常大的,會間斷性暫停服務,所以主服務器最好不要寫內存快照。
    • Redis 主從復制的性能問題,為了主從復制的速度和連接的穩定性,主從庫最好在同一個局域網內。

    JVM

    194. 說一下 JVM 的主要組成部分?及其作用?

    • 類加載器(ClassLoader)
    • 運行時數據區(Runtime Data Area)
    • 執行引擎(Execution Engine)
    • 本地庫接口(Native Interface)

    組件的作用:?首先通過類加載器(ClassLoader)會把 Java 代碼轉換成字節碼,運行時數據區(Runtime Data Area)再把字節碼加載到內存中,而字節碼文件只是 JVM 的一套指令集規范,并不能直接交個底層操作系統去執行,因此需要特定的命令解析器執行引擎(Execution Engine),將字節碼翻譯成底層系統指令,再交由 CPU 去執行,而這個過程中需要調用其他語言的本地庫接口(Native Interface)來實現整個程序的功能。

    195. 說一下 JVM 運行時數據區?

    不同虛擬機的運行時數據區可能略微有所不同,但都會遵從 Java 虛擬機規范, Java 虛擬機規范規定的區域分為以下 5 個部分:

    • 程序計數器(Program Counter Register):當前線程所執行的字節碼的行號指示器,字節碼解析器的工作是通過改變這個計數器的值,來選取下一條需要執行的字節碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能,都需要依賴這個計數器來完成;

    • Java 虛擬機棧(Java Virtual Machine Stacks):用于存儲局部變量表、操作數棧、動態鏈接、方法出口等信息;

    • 本地方法棧(Native Method Stack):與虛擬機棧的作用是一樣的,只不過虛擬機棧是服務 Java 方法的,而本地方法棧是為虛擬機調用 Native 方法服務的;

    • Java 堆(Java Heap):Java 虛擬機中內存最大的一塊,是被所有線程共享的,幾乎所有的對象實例都在這里分配內存;

    • 方法區(Methed Area):用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯后的代碼等數據。

    196. 說一下堆棧的區別?

    • 功能方面:堆是用來存放對象的,棧是用來執行程序的。
    • 共享性:堆是線程共享的,棧是線程私有的。
    • 空間大小:堆大小遠遠大于棧。

    197. 隊列和棧是什么?有什么區別?

    隊列和棧都是被用來預存儲數據的。

    隊列允許先進先出檢索元素,但也有例外的情況,Deque 接口允許從兩端檢索元素。

    棧和隊列很相似,但它運行對元素進行后進先出進行檢索。

    198. 什么是雙親委派模型?

    在介紹雙親委派模型之前先說下類加載器。對于任意一個類,都需要由加載它的類加載器和這個類本身一同確立在 JVM 中的唯一性,每一個類加載器,都有一個獨立的類名稱空間。類加載器就是根據指定全限定名稱將 class 文件加載到 JVM 內存,然后再轉化為 class 對象。

    類加載器分類:

    • 啟動類加載器(Bootstrap ClassLoader),是虛擬機自身的一部分,用來加載Java_HOME/lib/目錄中的,或者被 -Xbootclasspath 參數所指定的路徑中并且被虛擬機識別的類庫;
    • 其他類加載器:
    • 擴展類加載器(Extension ClassLoader):負責加載\lib\ext目錄或Java. ext. dirs系統變量指定的路徑中的所有類庫;
    • 應用程序類加載器(Application ClassLoader)。負責加載用戶類路徑(classpath)上的指定類庫,我們可以直接使用這個類加載器。一般情況,如果我們沒有自定義類加載器默認就是用這個加載器。

    雙親委派模型:如果一個類加載器收到了類加載的請求,它首先不會自己去加載這個類,而是把這個請求委派給父類加載器去完成,每一層的類加載器都是如此,這樣所有的加載請求都會被傳送到頂層的啟動類加載器中,只有當父加載無法完成加載請求(它的搜索范圍中沒找到所需的類)時,子加載器才會嘗試去加載類。

    199. 說一下類裝載的執行過程?

    類裝載分為以下 5 個步驟:

    • 加載:根據查找路徑找到相應的 class 文件然后導入;
    • 檢查:檢查加載的 class 文件的正確性;
    • 準備:給類中的靜態變量分配內存空間;
    • 解析:虛擬機將常量池中的符號引用替換成直接引用的過程。符號引用就理解為一個標示,而在直接引用直接指向內存中的地址;
    • 初始化:對靜態變量和靜態代碼塊執行初始化工作。

    200. 怎么判斷對象是否可以被回收?

    一般有兩種方法來判斷:

    • 引用計數器:為每個對象創建一個引用計數,有對象引用時計數器 +1,引用被釋放時計數 -1,當計數器為 0 時就可以被回收。它有一個缺點不能解決循環引用的問題;
    • 可達性分析:從 GC Roots 開始向下搜索,搜索所走過的路徑稱為引用鏈。當一個對象到 GC Roots 沒有任何引用鏈相連時,則證明此對象是可以被回收的。

    201. Java 中都有哪些引用類型?

    • 強引用:發生 gc 的時候不會被回收。
    • 軟引用:有用但不是必須的對象,在發生內存溢出之前會被回收。
    • 弱引用:有用但不是必須的對象,在下一次GC時會被回收。
    • 虛引用(幽靈引用/幻影引用):無法通過虛引用獲得對象,用 PhantomReference 實現虛引用,虛引用的用途是在 gc 時返回一個通知。

    202. 說一下 JVM 有哪些垃圾回收算法?

    • 標記-清除算法:標記無用對象,然后進行清除回收。缺點:效率不高,無法清除垃圾碎片。
    • 標記-整理算法:標記無用對象,讓所有存活的對象都向一端移動,然后直接清除掉端邊界以外的內存。
    • 復制算法:按照容量劃分二個大小相等的內存區域,當一塊用完的時候將活著的對象復制到另一塊上,然后再把已使用的內存空間一次清理掉。缺點:內存使用率不高,只有原來的一半。
    • 分代算法:根據對象存活周期的不同將內存劃分為幾塊,一般是新生代和老年代,新生代基本采用復制算法,老年代采用標記整理算法。

    203. 說一下 JVM 有哪些垃圾回收器?

    • Serial:最早的單線程串行垃圾回收器。
    • Serial Old:Serial 垃圾回收器的老年版本,同樣也是單線程的,可以作為 CMS 垃圾回收器的備選預案。
    • ParNew:是 Serial 的多線程版本。
    • Parallel 和 ParNew 收集器類似是多線程的,但 Parallel 是吞吐量優先的收集器,可以犧牲等待時間換取系統的吞吐量。
    • Parallel Old 是 Parallel 老生代版本,Parallel 使用的是復制的內存回收算法,Parallel Old 使用的是標記-整理的內存回收算法。
    • CMS:一種以獲得最短停頓時間為目標的收集器,非常適用 B/S 系統。
    • G1:一種兼顧吞吐量和停頓時間的 GC 實現,是 JDK 9 以后的默認 GC 選項。

    204. 詳細介紹一下 CMS 垃圾回收器?

    CMS 是英文 Concurrent Mark-Sweep 的簡稱,是以犧牲吞吐量為代價來獲得最短回收停頓時間的垃圾回收器。對于要求服務器響應速度的應用上,這種垃圾回收器非常適合。在啟動 JVM 的參數加上“-XX:+UseConcMarkSweepGC”來指定使用 CMS 垃圾回收器。

    CMS 使用的是標記-清除的算法實現的,所以在 gc 的時候回產生大量的內存碎片,當剩余內存不能滿足程序運行要求時,系統將會出現 Concurrent Mode Failure,臨時 CMS 會采用 Serial Old 回收器進行垃圾清除,此時的性能將會被降低。

    205. 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么區別?

    • 新生代回收器:Serial、ParNew、Parallel Scavenge
    • 老年代回收器:Serial Old、Parallel Old、CMS
    • 整堆回收器:G1

    新生代垃圾回收器一般采用的是復制算法,復制算法的優點是效率高,缺點是內存利用率低;老年代回收器一般采用的是標記-整理的算法進行垃圾回收。

    206. 簡述分代垃圾回收器是怎么工作的?

    分代回收器有兩個分區:老生代和新生代,新生代默認的空間占比總空間的 1/3,老生代的默認占比是 2/3。

    新生代使用的是復制算法,新生代里有 3 個分區:Eden、To Survivor、From Survivor,它們的默認占比是 8:1:1,它的執行流程如下:

    • 把 Eden + From Survivor 存活的對象放入 To Survivor 區;
    • 清空 Eden 和 From Survivor 分區;
    • From Survivor 和 To Survivor 分區交換,From Survivor 變 To Survivor,To Survivor 變 From Survivor。

    每次在 From Survivor 到 To Survivor 移動時都存活的對象,年齡就 +1,當年齡到達 15(默認配置是 15)時,升級為老生代。大對象也會直接進入老生代。

    老生代當空間占用到達某個值之后就會觸發全局垃圾收回,一般使用標記整理的執行算法。以上這些循環往復就構成了整個分代垃圾回收的整體執行流程。

    207. 說一下 JVM 調優的工具?

    JDK 自帶了很多監控工具,都位于 JDK 的 bin 目錄下,其中最常用的是 jconsole 和 jvisualvm 這兩款視圖監控工具。

    • jconsole:用于對 JVM 中的內存、線程和類等進行監控;
    • jvisualvm:JDK 自帶的全能分析工具,可以分析:內存快照、線程快照、程序死鎖、監控內存的變化、gc 變化等。

    208. 常用的 JVM 調優的參數都有哪些?

    • -Xms2g:初始化推大小為 2g;
    • -Xmx2g:堆最大內存為 2g;
    • -XX:NewRatio=4:設置年輕的和老年代的內存比例為 1:4;
    • -XX:SurvivorRatio=8:設置新生代 Eden 和 Survivor 比例為 8:2;
    • –XX:+UseParNewGC:指定使用 ParNew + Serial Old 垃圾回收器組合;
    • -XX:+UseParallelOldGC:指定使用 ParNew + ParNew Old 垃圾回收器組合;
    • -XX:+UseConcMarkSweepGC:指定使用 CMS + Serial Old 垃圾回收器組合;
    • -XX:+PrintGC:開啟打印 gc 信息;
    • -XX:+PrintGCDetails:打印 gc 詳細信息。

    結尾

    這不止是一份面試清單,更是一種“被期望的責任”,因為有無數個待面試著,希望從這篇文章中,找出通往期望公司的“鑰匙”,所以上面的每道選題都是結合我自身的經驗,于千萬個面試題中經過艱辛的兩周,一個題一個題篩選出來再校對好答案和格式做出來的,面試的答案也是再三斟酌,生怕誤人子弟是小,影響他人的“仕途”才是大過,所以如有紕漏,還請讀者朋友們在評論區不吝指出。

    也希望您能把這篇文章分享給更多的朋友,讓它幫助更多的人。

    幫助他人,快樂自己,最后,感謝您的閱讀。

    總結

    以上是生活随笔為你收集整理的java面试题(转载其他人,方便日常看)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    国产黑色丝袜在线播放 | 欧美人与动性行为视频 | 久久人人97超碰a片精品 | 亚洲成av人综合在线观看 | 性欧美牲交xxxxx视频 | 亚洲小说图区综合在线 | 国产精品无码成人午夜电影 | 成人aaa片一区国产精品 | 久久综合激激的五月天 | 亚洲阿v天堂在线 | 久久综合色之久久综合 | 熟妇人妻中文av无码 | 国产婷婷色一区二区三区在线 | 久久亚洲a片com人成 | 久久人人爽人人爽人人片av高清 | 国产免费无码一区二区视频 | 人妻少妇精品无码专区二区 | 亚洲欧美国产精品久久 | 欧美freesex黑人又粗又大 | 97无码免费人妻超级碰碰夜夜 | 精品人妻中文字幕有码在线 | 成人无码精品1区2区3区免费看 | 99精品无人区乱码1区2区3区 | 中文字幕人妻无码一区二区三区 | 亚洲成a人片在线观看无码 | 理论片87福利理论电影 | 丝袜美腿亚洲一区二区 | 国产乱人偷精品人妻a片 | 伊人色综合久久天天小片 | 午夜成人1000部免费视频 | 最新国产麻豆aⅴ精品无码 | 中文字幕无码热在线视频 | 欧美亚洲国产一区二区三区 | 玩弄人妻少妇500系列视频 | 无码中文字幕色专区 | 99久久精品日本一区二区免费 | 青青草原综合久久大伊人精品 | 永久免费精品精品永久-夜色 | 无码国内精品人妻少妇 | 亚洲国产精品毛片av不卡在线 | 亚洲欧美精品aaaaaa片 | 欧美黑人巨大xxxxx | 国产麻豆精品精东影业av网站 | 国产成人无码a区在线观看视频app | 色婷婷久久一区二区三区麻豆 | 国产情侣作爱视频免费观看 | 久久久久久久人妻无码中文字幕爆 | 国产极品视觉盛宴 | 未满小14洗澡无码视频网站 | 午夜精品一区二区三区在线观看 | 人人爽人人爽人人片av亚洲 | 中文字幕 亚洲精品 第1页 | 在线观看免费人成视频 | 麻豆果冻传媒2021精品传媒一区下载 | 日本精品久久久久中文字幕 | 未满小14洗澡无码视频网站 | 正在播放老肥熟妇露脸 | 天干天干啦夜天干天2017 | 久久久国产精品无码免费专区 | 少妇厨房愉情理9仑片视频 | aⅴ在线视频男人的天堂 | 人妻无码αv中文字幕久久琪琪布 | 国产免费观看黄av片 | 日韩欧美中文字幕公布 | 麻豆成人精品国产免费 | 日本一本二本三区免费 | 无码一区二区三区在线观看 | 波多野结衣 黑人 | 蜜臀aⅴ国产精品久久久国产老师 | 精品亚洲成av人在线观看 | 亚洲另类伦春色综合小说 | 国产av无码专区亚洲awww | 精品成人av一区二区三区 | 国产农村乱对白刺激视频 | 国产特级毛片aaaaaa高潮流水 | 高清不卡一区二区三区 | av无码久久久久不卡免费网站 | 欧美性生交活xxxxxdddd | 无套内谢老熟女 | 岛国片人妻三上悠亚 | 久久国产精品精品国产色婷婷 | 久久国内精品自在自线 | 2020久久香蕉国产线看观看 | 国产精品爱久久久久久久 | 欧美人妻一区二区三区 | 亚洲天堂2017无码中文 | 无人区乱码一区二区三区 | 日韩少妇白浆无码系列 | 日日摸日日碰夜夜爽av | 亚洲一区二区三区播放 | 精品无码国产自产拍在线观看蜜 | 99久久人妻精品免费二区 | 女人高潮内射99精品 | 午夜精品一区二区三区在线观看 | 久久精品国产99精品亚洲 | 国产免费久久久久久无码 | 色狠狠av一区二区三区 | 国产乱码精品一品二品 | 最近的中文字幕在线看视频 | 免费无码的av片在线观看 | 男女下面进入的视频免费午夜 | 亚洲精品欧美二区三区中文字幕 | 俺去俺来也在线www色官网 | 最新版天堂资源中文官网 | 免费人成在线视频无码 | 台湾无码一区二区 | 欧美人与物videos另类 | 久9re热视频这里只有精品 | 内射老妇bbwx0c0ck | 老太婆性杂交欧美肥老太 | 久久人人爽人人爽人人片ⅴ | 丰满少妇弄高潮了www | 久久99精品久久久久婷婷 | 国产成人综合美国十次 | 露脸叫床粗话东北少妇 | 东京一本一道一二三区 | 亚洲人亚洲人成电影网站色 | 精品偷自拍另类在线观看 | 亚洲国产精品久久人人爱 | 亚洲中文字幕在线观看 | 又紧又大又爽精品一区二区 | 日韩亚洲欧美中文高清在线 | 日韩av无码一区二区三区不卡 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 亚洲 高清 成人 动漫 | 强开小婷嫩苞又嫩又紧视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产午夜手机精彩视频 | 一本精品99久久精品77 | 成熟女人特级毛片www免费 | 又大又紧又粉嫩18p少妇 | 无码人妻出轨黑人中文字幕 | 国产人妻精品一区二区三区不卡 | 国产亚av手机在线观看 | 国产精品成人av在线观看 | 18黄暴禁片在线观看 | 久久亚洲国产成人精品性色 | 国色天香社区在线视频 | 亚洲狠狠婷婷综合久久 | 成人综合网亚洲伊人 | 一个人看的www免费视频在线观看 | 国产精品久久国产精品99 | 岛国片人妻三上悠亚 | 国内精品九九久久久精品 | 性欧美大战久久久久久久 | 国产精品丝袜黑色高跟鞋 | 乱人伦人妻中文字幕无码 | 中文字幕无码日韩欧毛 | 成人免费视频视频在线观看 免费 | 国产人妻大战黑人第1集 | 东京无码熟妇人妻av在线网址 | 欧美阿v高清资源不卡在线播放 | 日本熟妇大屁股人妻 | 久久久精品456亚洲影院 | 色综合久久久久综合一本到桃花网 | 久9re热视频这里只有精品 | 国产精品自产拍在线观看 | 久久久精品成人免费观看 | 国产成人无码av在线影院 | 无码人妻精品一区二区三区下载 | 国产成人无码av在线影院 | 最近的中文字幕在线看视频 | 国产精品亚洲综合色区韩国 | 色欲av亚洲一区无码少妇 | 西西人体www44rt大胆高清 | 国产成人精品无码播放 | 67194成是人免费无码 | 亚洲男人av香蕉爽爽爽爽 | 色窝窝无码一区二区三区色欲 | 伊人久久婷婷五月综合97色 | 粉嫩少妇内射浓精videos | 国产一精品一av一免费 | 在线精品亚洲一区二区 | 无码一区二区三区在线 | 国产精品无码永久免费888 | 亚洲成av人片在线观看无码不卡 | 夜夜躁日日躁狠狠久久av | 国产精品无码一区二区三区不卡 | 伊人久久大香线蕉午夜 | 999久久久国产精品消防器材 | 精品一区二区三区无码免费视频 | 国产精品手机免费 | 国产精品亚洲专区无码不卡 | 日日摸天天摸爽爽狠狠97 | 国产人成高清在线视频99最全资源 | 青青草原综合久久大伊人精品 | 亚洲精品久久久久avwww潮水 | 日韩人妻系列无码专区 | 久久精品人妻少妇一区二区三区 | 国产人妻人伦精品1国产丝袜 | 亚洲最大成人网站 | 在线观看免费人成视频 | 精品夜夜澡人妻无码av蜜桃 | 日本xxxx色视频在线观看免费 | 粉嫩少妇内射浓精videos | 日本爽爽爽爽爽爽在线观看免 | 精品无码一区二区三区爱欲 | 亚洲自偷自拍另类第1页 | 天干天干啦夜天干天2017 | 中文无码成人免费视频在线观看 | 西西人体www44rt大胆高清 | 亚洲欧美国产精品专区久久 | 免费无码一区二区三区蜜桃大 | 老熟女重囗味hdxx69 | 日本肉体xxxx裸交 | 性欧美牲交xxxxx视频 | 色一情一乱一伦一视频免费看 | 中文字幕无码乱人伦 | 精品国产精品久久一区免费式 | 亚洲国产精品无码一区二区三区 | 亚洲国产精品一区二区美利坚 | 婷婷色婷婷开心五月四房播播 | av无码电影一区二区三区 | 三级4级全黄60分钟 | 国产精品爱久久久久久久 | 漂亮人妻洗澡被公强 日日躁 | 日本护士毛茸茸高潮 | 亚洲日本va中文字幕 | 国产色视频一区二区三区 | 欧美日本免费一区二区三区 | 无遮挡国产高潮视频免费观看 | 少妇无码av无码专区在线观看 | 亚洲精品久久久久中文第一幕 | √8天堂资源地址中文在线 | а天堂中文在线官网 | 国产av久久久久精东av | 亚洲精品国偷拍自产在线麻豆 | 久久国产精品萌白酱免费 | 四虎4hu永久免费 | 亚洲色欲久久久综合网东京热 | 国产av一区二区三区最新精品 | 国内老熟妇对白xxxxhd | 国产精品无码成人午夜电影 | 免费看男女做好爽好硬视频 | 色欲av亚洲一区无码少妇 | 久久久久人妻一区精品色欧美 | 国产免费无码一区二区视频 | 国产真实乱对白精彩久久 | 久久久精品456亚洲影院 | 国产成人精品无码播放 | 少妇无码av无码专区在线观看 | 国产精品a成v人在线播放 | 秋霞成人午夜鲁丝一区二区三区 | 波多野结衣aⅴ在线 | 精品成在人线av无码免费看 | 人妻与老人中文字幕 | 成在人线av无码免费 | 未满小14洗澡无码视频网站 | 亚洲色偷偷男人的天堂 | 无码人妻出轨黑人中文字幕 | 亚洲男女内射在线播放 | 熟妇激情内射com | 人人妻人人澡人人爽人人精品 | 日日干夜夜干 | 国内精品一区二区三区不卡 | 国产成人亚洲综合无码 | 国产亚洲精品久久久久久国模美 | 久久久久久亚洲精品a片成人 | 久久aⅴ免费观看 | 国产艳妇av在线观看果冻传媒 | 丝袜美腿亚洲一区二区 | 久久99精品国产.久久久久 | 男人的天堂av网站 | 免费国产黄网站在线观看 | 丁香花在线影院观看在线播放 | 真人与拘做受免费视频一 | 捆绑白丝粉色jk震动捧喷白浆 | 1000部夫妻午夜免费 | 日本精品人妻无码免费大全 | 小sao货水好多真紧h无码视频 | 国产午夜精品一区二区三区嫩草 | 夜夜影院未满十八勿进 | 熟妇人妻无码xxx视频 | 内射后入在线观看一区 | 蜜桃av抽搐高潮一区二区 | 中文字幕日产无线码一区 | 国产精品人妻一区二区三区四 | 麻豆果冻传媒2021精品传媒一区下载 | 99精品视频在线观看免费 | 欧美兽交xxxx×视频 | 亚洲日韩精品欧美一区二区 | 中文字幕乱妇无码av在线 | 美女毛片一区二区三区四区 | 国产内射爽爽大片视频社区在线 | 国产精品手机免费 | 成年女人永久免费看片 | 老头边吃奶边弄进去呻吟 | 老子影院午夜精品无码 | 成人无码视频免费播放 | 人人澡人人妻人人爽人人蜜桃 | 天天av天天av天天透 | 久热国产vs视频在线观看 | 牲欲强的熟妇农村老妇女 | 亚洲a无码综合a国产av中文 | 无码国产乱人伦偷精品视频 | 亚洲欧洲日本无在线码 | 国产激情精品一区二区三区 | 亚洲成a人片在线观看无码3d | 无码帝国www无码专区色综合 | 国产精品免费大片 | 九九在线中文字幕无码 | 天干天干啦夜天干天2017 | 中文字幕日韩精品一区二区三区 | 国精产品一品二品国精品69xx | 亚洲区小说区激情区图片区 | 无码精品国产va在线观看dvd | 国产成人精品三级麻豆 | 丰满妇女强制高潮18xxxx | 综合网日日天干夜夜久久 | 福利一区二区三区视频在线观看 | 国色天香社区在线视频 | 色欲人妻aaaaaaa无码 | 国产精品久久久久无码av色戒 | 欧美人与牲动交xxxx | 国产无av码在线观看 | 内射后入在线观看一区 | 国产明星裸体无码xxxx视频 | 亚洲人成无码网www | 亚洲精品一区国产 | 无码人妻av免费一区二区三区 | 中文字幕无码日韩欧毛 | 永久免费精品精品永久-夜色 | 99精品无人区乱码1区2区3区 | 狠狠综合久久久久综合网 | 伊人久久大香线蕉午夜 | 天干天干啦夜天干天2017 | 蜜臀aⅴ国产精品久久久国产老师 | 久久久www成人免费毛片 | 99久久婷婷国产综合精品青草免费 | 国产另类ts人妖一区二区 | 四十如虎的丰满熟妇啪啪 | 亚洲精品欧美二区三区中文字幕 | 纯爱无遮挡h肉动漫在线播放 | 亚欧洲精品在线视频免费观看 | 一本加勒比波多野结衣 | 荫蒂被男人添的好舒服爽免费视频 | 丁香花在线影院观看在线播放 | 亚洲性无码av中文字幕 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲中文字幕久久无码 | 福利一区二区三区视频在线观看 | 人妻夜夜爽天天爽三区 | 男女下面进入的视频免费午夜 | 成人精品视频一区二区三区尤物 | 好屌草这里只有精品 | 中文字幕无码av激情不卡 | 少妇激情av一区二区 | 久久99精品久久久久婷婷 | 婷婷六月久久综合丁香 | 99久久精品国产一区二区蜜芽 | 亚洲一区二区三区香蕉 | 久久婷婷五月综合色国产香蕉 | 大乳丰满人妻中文字幕日本 | 精品国产青草久久久久福利 | 久精品国产欧美亚洲色aⅴ大片 | 一本精品99久久精品77 | 精品国产成人一区二区三区 | 国产精品第一国产精品 | 无码人妻丰满熟妇区五十路百度 | 久久精品女人天堂av免费观看 | 真人与拘做受免费视频一 | 天堂а√在线地址中文在线 | 欧美国产亚洲日韩在线二区 | 欧美成人高清在线播放 | 99精品无人区乱码1区2区3区 | 奇米影视7777久久精品人人爽 | 极品尤物被啪到呻吟喷水 | 六十路熟妇乱子伦 | 亚洲爆乳无码专区 | 婷婷丁香六月激情综合啪 | 国产亚洲欧美在线专区 | а√资源新版在线天堂 | 色婷婷久久一区二区三区麻豆 | 欧美老妇交乱视频在线观看 | 丝袜人妻一区二区三区 | 国产精品成人av在线观看 | 久久综合激激的五月天 | 久久亚洲国产成人精品性色 | 人妻无码久久精品人妻 | 人人妻人人澡人人爽欧美精品 | 亚洲国产一区二区三区在线观看 | 国产成人无码av片在线观看不卡 | 日本丰满熟妇videos | 国产成人精品一区二区在线小狼 | 日日橹狠狠爱欧美视频 | 亚洲成熟女人毛毛耸耸多 | 爆乳一区二区三区无码 | 亚洲乱码日产精品bd | 久久综合激激的五月天 | 欧美freesex黑人又粗又大 | 大地资源网第二页免费观看 | 久精品国产欧美亚洲色aⅴ大片 | 久久午夜夜伦鲁鲁片无码免费 | 日本乱偷人妻中文字幕 | 免费网站看v片在线18禁无码 | 久久99精品国产.久久久久 | 亚洲精品成人av在线 | 成熟妇人a片免费看网站 | 色综合久久中文娱乐网 | 日日摸天天摸爽爽狠狠97 | 国产精品多人p群无码 | 国产内射爽爽大片视频社区在线 | 国产人妻久久精品二区三区老狼 | 精品国产aⅴ无码一区二区 | 亚洲精品国产a久久久久久 | 亚洲第一网站男人都懂 | 亚洲s色大片在线观看 | 少妇一晚三次一区二区三区 | 久久久精品欧美一区二区免费 | 国产精品毛片一区二区 | 亚洲国产精品毛片av不卡在线 | 国产成人人人97超碰超爽8 | 秋霞成人午夜鲁丝一区二区三区 | 日韩亚洲欧美中文高清在线 | 一二三四社区在线中文视频 | 亚洲欧美日韩综合久久久 | 三级4级全黄60分钟 | 麻豆成人精品国产免费 | 日本免费一区二区三区最新 | 久久精品一区二区三区四区 | 丝袜 中出 制服 人妻 美腿 | 国产在线精品一区二区三区直播 | 亚洲精品中文字幕久久久久 | 国产精品毛片一区二区 | 牲欲强的熟妇农村老妇女 | 天干天干啦夜天干天2017 | 国产福利视频一区二区 | 日韩欧美中文字幕在线三区 | 精品亚洲韩国一区二区三区 | 久久综合九色综合97网 | 国产在线精品一区二区高清不卡 | 久久精品无码一区二区三区 | 欧美黑人性暴力猛交喷水 | 国产三级精品三级男人的天堂 | 国产成人综合色在线观看网站 | 亚洲日本va中文字幕 | 1000部夫妻午夜免费 | 97无码免费人妻超级碰碰夜夜 | 国产人妻人伦精品 | 福利一区二区三区视频在线观看 | 久久伊人色av天堂九九小黄鸭 | 波多野结衣av一区二区全免费观看 | 99久久无码一区人妻 | 久久国语露脸国产精品电影 | 熟妇人妻无码xxx视频 | 丰满少妇高潮惨叫视频 | 国产亚洲精品久久久ai换 | 精品国产av色一区二区深夜久久 | 国产精品第一区揄拍无码 | 香港三级日本三级妇三级 | 欧美freesex黑人又粗又大 | 婷婷五月综合缴情在线视频 | 乱人伦人妻中文字幕无码 | 97精品人妻一区二区三区香蕉 | 牛和人交xxxx欧美 | 国产办公室秘书无码精品99 | 天堂无码人妻精品一区二区三区 | 蜜臀aⅴ国产精品久久久国产老师 | 欧美阿v高清资源不卡在线播放 | 欧美zoozzooz性欧美 | 99久久99久久免费精品蜜桃 | 亚洲一区av无码专区在线观看 | 十八禁真人啪啪免费网站 | 亚洲七七久久桃花影院 | 欧美肥老太牲交大战 | 天海翼激烈高潮到腰振不止 | 日韩欧美中文字幕公布 | 国产精品久久国产精品99 | 中文字幕人妻丝袜二区 | 性色欲网站人妻丰满中文久久不卡 | 国产在线精品一区二区高清不卡 | 国产麻豆精品精东影业av网站 | 少妇性俱乐部纵欲狂欢电影 | 性生交大片免费看l | www成人国产高清内射 | 亚洲色欲色欲欲www在线 | 熟妇人妻中文av无码 | 俄罗斯老熟妇色xxxx | 欧美freesex黑人又粗又大 | 色一情一乱一伦一区二区三欧美 | 极品尤物被啪到呻吟喷水 | 午夜福利一区二区三区在线观看 | 男女作爱免费网站 | 久久精品丝袜高跟鞋 | √8天堂资源地址中文在线 | 国产成人一区二区三区在线观看 | 久久久久成人精品免费播放动漫 | 日日麻批免费40分钟无码 | 日日天干夜夜狠狠爱 | 久久亚洲中文字幕精品一区 | yw尤物av无码国产在线观看 | 日韩无码专区 | 久久久精品欧美一区二区免费 | 国产成人人人97超碰超爽8 | 亚洲成a人片在线观看无码3d | 性做久久久久久久免费看 | 亚洲国产成人av在线观看 | 午夜熟女插插xx免费视频 | 在线欧美精品一区二区三区 | 欧美人与动性行为视频 | 日韩精品久久久肉伦网站 | 强奷人妻日本中文字幕 | 国产精品久久久久9999小说 | 在线精品亚洲一区二区 | 十八禁视频网站在线观看 | 99精品无人区乱码1区2区3区 | 成人无码视频在线观看网站 | 内射巨臀欧美在线视频 | 亚洲欧美日韩成人高清在线一区 | 欧洲熟妇精品视频 | 樱花草在线播放免费中文 | 中文字幕av无码一区二区三区电影 | 精品欧洲av无码一区二区三区 | 欧美人与善在线com | 一个人免费观看的www视频 | 久久国产劲爆∧v内射 | 亚洲精品一区二区三区在线 | 无码精品人妻一区二区三区av | 亚洲欧美日韩综合久久久 | 国产精品第一国产精品 | 色噜噜亚洲男人的天堂 | 亚洲精品一区三区三区在线观看 | 麻豆人妻少妇精品无码专区 | 一本色道久久综合狠狠躁 | 国产激情综合五月久久 | 日日鲁鲁鲁夜夜爽爽狠狠 | 成人欧美一区二区三区黑人 | 精品人妻人人做人人爽 | 无码人妻黑人中文字幕 | 国产精品a成v人在线播放 | 狂野欧美性猛交免费视频 | 亚洲国产精品成人久久蜜臀 | 永久免费精品精品永久-夜色 | 亚洲熟女一区二区三区 | 亚洲精品一区二区三区婷婷月 | 亚洲码国产精品高潮在线 | 国产网红无码精品视频 | 成人综合网亚洲伊人 | 欧洲熟妇精品视频 | 免费无码午夜福利片69 | 成人欧美一区二区三区黑人 | 麻豆国产丝袜白领秘书在线观看 | 久久综合久久自在自线精品自 | 久久人人97超碰a片精品 | 成人欧美一区二区三区黑人 | 日本熟妇大屁股人妻 | www一区二区www免费 | 无遮无挡爽爽免费视频 | 亚洲中文字幕久久无码 | 亚洲成av人在线观看网址 | 无码一区二区三区在线 | 国产三级精品三级男人的天堂 | 国产熟女一区二区三区四区五区 | 少妇人妻av毛片在线看 | 国产乱子伦视频在线播放 | 精品无人国产偷自产在线 | 四虎国产精品一区二区 | 国产精品久久国产三级国 | 亚洲性无码av中文字幕 | 国产另类ts人妖一区二区 | 国产成人综合在线女婷五月99播放 | 国产精品视频免费播放 | 久久综合给久久狠狠97色 | 久久久中文久久久无码 | 无码福利日韩神码福利片 | 99er热精品视频 | 无码帝国www无码专区色综合 | 骚片av蜜桃精品一区 | 日韩人妻无码一区二区三区久久99 | 偷窥日本少妇撒尿chinese | 99久久人妻精品免费二区 | 国产精品亚洲五月天高清 | 男人和女人高潮免费网站 | 精品熟女少妇av免费观看 | 99久久久国产精品无码免费 | 荡女精品导航 | 久久精品女人的天堂av | 亚洲国产精品无码久久久久高潮 | 欧美日韩一区二区免费视频 | 特大黑人娇小亚洲女 | 无遮挡国产高潮视频免费观看 | 任你躁国产自任一区二区三区 | 亚洲色欲久久久综合网东京热 | 无套内谢老熟女 | 亚洲码国产精品高潮在线 | 无码人妻丰满熟妇区毛片18 | 又湿又紧又大又爽a视频国产 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 成人一区二区免费视频 | 国产亚洲精品久久久久久久久动漫 | 国产做国产爱免费视频 | 自拍偷自拍亚洲精品被多人伦好爽 | 丰满少妇高潮惨叫视频 | av人摸人人人澡人人超碰下载 | 少妇太爽了在线观看 | 精品国精品国产自在久国产87 | 麻豆国产丝袜白领秘书在线观看 | 巨爆乳无码视频在线观看 | 欧美性生交活xxxxxdddd | 午夜精品一区二区三区在线观看 | 亚洲国产精品久久人人爱 | 55夜色66夜色国产精品视频 | 精品亚洲成av人在线观看 | 夜精品a片一区二区三区无码白浆 | 乱码av麻豆丝袜熟女系列 | 国产精品久久久久久亚洲毛片 | 国产成人一区二区三区别 | 国产亚洲欧美在线专区 | 日韩 欧美 动漫 国产 制服 | 午夜福利电影 | 奇米影视7777久久精品人人爽 | 男女超爽视频免费播放 | 国产无遮挡又黄又爽免费视频 | 色综合久久中文娱乐网 | 日日麻批免费40分钟无码 | 人妻体内射精一区二区三四 | 成人无码影片精品久久久 | 国产精品久久久午夜夜伦鲁鲁 | 久热国产vs视频在线观看 | 国产成人精品优优av | 一二三四在线观看免费视频 | 欧美三级a做爰在线观看 | 亚洲人成网站色7799 | 99精品无人区乱码1区2区3区 | 99久久久无码国产aaa精品 | 夜夜影院未满十八勿进 | 中文字幕+乱码+中文字幕一区 | 欧洲vodafone精品性 | 粉嫩少妇内射浓精videos | 四虎国产精品一区二区 | 精品 日韩 国产 欧美 视频 | 久久人妻内射无码一区三区 | 99久久精品国产一区二区蜜芽 | 熟女体下毛毛黑森林 | 极品嫩模高潮叫床 | 久久国产36精品色熟妇 | 在线 国产 欧美 亚洲 天堂 | 水蜜桃av无码 | 国产又粗又硬又大爽黄老大爷视 | 欧美日韩亚洲国产精品 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 丝袜美腿亚洲一区二区 | 国产成人精品一区二区在线小狼 | 无码精品人妻一区二区三区av | 亚洲精品国偷拍自产在线麻豆 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国语精品一区二区三区 | 午夜福利试看120秒体验区 | 乱人伦人妻中文字幕无码久久网 | 野狼第一精品社区 | 国产熟女一区二区三区四区五区 | 999久久久国产精品消防器材 | 日日天日日夜日日摸 | 成熟妇人a片免费看网站 | 国产在线aaa片一区二区99 | 国产精品亚洲lv粉色 | 午夜成人1000部免费视频 | 国产麻豆精品一区二区三区v视界 | 国产猛烈高潮尖叫视频免费 | 久久综合给合久久狠狠狠97色 | 亚洲日韩精品欧美一区二区 | 亚洲区小说区激情区图片区 | 午夜男女很黄的视频 | 久久97精品久久久久久久不卡 | 国产无套粉嫩白浆在线 | 亚洲成a人一区二区三区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 日本大乳高潮视频在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 东京一本一道一二三区 | 亚洲中文无码av永久不收费 | 中文字幕无码热在线视频 | 国产成人午夜福利在线播放 | av人摸人人人澡人人超碰下载 | 乱人伦人妻中文字幕无码 | 一本久久伊人热热精品中文字幕 | 一个人免费观看的www视频 | 成人无码精品一区二区三区 | 日韩精品一区二区av在线 | 7777奇米四色成人眼影 | 在线播放亚洲第一字幕 | 蜜桃av抽搐高潮一区二区 | 国产黑色丝袜在线播放 | 无码吃奶揉捏奶头高潮视频 | 精品国产乱码久久久久乱码 | 国产成人午夜福利在线播放 | 东京无码熟妇人妻av在线网址 | 国精品人妻无码一区二区三区蜜柚 | 97夜夜澡人人双人人人喊 | 在线亚洲高清揄拍自拍一品区 | 国产亚洲人成在线播放 | 黑森林福利视频导航 | 丰满妇女强制高潮18xxxx | 波多野结衣av一区二区全免费观看 | 久久伊人色av天堂九九小黄鸭 | 日日碰狠狠丁香久燥 | 久久视频在线观看精品 | 亚洲日韩av一区二区三区四区 | 国产又粗又硬又大爽黄老大爷视 | 亚洲熟熟妇xxxx | 少妇人妻大乳在线视频 | 免费无码av一区二区 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲人成影院在线观看 | 强辱丰满人妻hd中文字幕 | 亚洲a无码综合a国产av中文 | 夜精品a片一区二区三区无码白浆 | 人人妻人人澡人人爽欧美一区 | aⅴ在线视频男人的天堂 | 国产真人无遮挡作爱免费视频 | 欧美日韩在线亚洲综合国产人 | 婷婷色婷婷开心五月四房播播 | 未满成年国产在线观看 | 亚洲成av人影院在线观看 | 51国偷自产一区二区三区 | 一本久道久久综合狠狠爱 | 久久久精品成人免费观看 | 精品厕所偷拍各类美女tp嘘嘘 | 无码人妻精品一区二区三区下载 | 99久久精品国产一区二区蜜芽 | 又湿又紧又大又爽a视频国产 | 国产亚洲精品久久久久久久 | 狂野欧美性猛xxxx乱大交 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产精品鲁鲁鲁 | 麻豆蜜桃av蜜臀av色欲av | 国产精品久久久久久亚洲毛片 | 国产亚洲精品久久久闺蜜 | 国产又爽又黄又刺激的视频 | 97资源共享在线视频 | 人人妻人人澡人人爽人人精品浪潮 | 国产激情一区二区三区 | 中文字幕无码视频专区 | 99麻豆久久久国产精品免费 | 西西人体www44rt大胆高清 | 亚洲人成网站在线播放942 | 窝窝午夜理论片影院 | 中文无码精品a∨在线观看不卡 | 国产婷婷色一区二区三区在线 | 国产亚洲日韩欧美另类第八页 | 午夜肉伦伦影院 | 乱码av麻豆丝袜熟女系列 | 一本大道久久东京热无码av | 日日碰狠狠躁久久躁蜜桃 | 少妇人妻偷人精品无码视频 | 正在播放老肥熟妇露脸 | 男女下面进入的视频免费午夜 | 国产av一区二区三区最新精品 | 高清不卡一区二区三区 | 欧美自拍另类欧美综合图片区 | 熟女少妇在线视频播放 | 欧美人妻一区二区三区 | aⅴ在线视频男人的天堂 | 欧美丰满熟妇xxxx性ppx人交 | 国产亚洲欧美在线专区 | 国产做国产爱免费视频 | 国产午夜精品一区二区三区嫩草 | 中文字幕人妻无码一区二区三区 | 嫩b人妻精品一区二区三区 | 国产成人综合色在线观看网站 | 小泽玛莉亚一区二区视频在线 | 国产av一区二区三区最新精品 | 国产在热线精品视频 | 妺妺窝人体色www在线小说 | 一本久道久久综合狠狠爱 | 色综合久久久久综合一本到桃花网 | 暴力强奷在线播放无码 | 久久 国产 尿 小便 嘘嘘 | 国产精品免费大片 | 国产亚洲视频中文字幕97精品 | 女人被男人躁得好爽免费视频 | 亚洲一区二区三区国产精华液 | 中文字幕乱码亚洲无线三区 | 国产日产欧产精品精品app | 在线а√天堂中文官网 | 国产精品美女久久久久av爽李琼 | 人妻少妇被猛烈进入中文字幕 | 精品久久综合1区2区3区激情 | 精品一二三区久久aaa片 | 久久久久se色偷偷亚洲精品av | 日日摸夜夜摸狠狠摸婷婷 | 色婷婷av一区二区三区之红樱桃 | 日产精品高潮呻吟av久久 | 国产精品久久久av久久久 | 67194成是人免费无码 | 三上悠亚人妻中文字幕在线 | 午夜精品久久久内射近拍高清 | 四虎永久在线精品免费网址 | 最近的中文字幕在线看视频 | 成年美女黄网站色大免费全看 | 国产超碰人人爽人人做人人添 | 免费国产成人高清在线观看网站 | 亚洲综合在线一区二区三区 | 精品久久久中文字幕人妻 | 熟妇人妻中文av无码 | 亚洲自偷精品视频自拍 | 欧美激情一区二区三区成人 | 亚洲中文字幕av在天堂 | 久久久精品成人免费观看 | 国产精品久久精品三级 | 女人和拘做爰正片视频 | 露脸叫床粗话东北少妇 | 成熟妇人a片免费看网站 | 国产精品视频免费播放 | 日日摸天天摸爽爽狠狠97 | 亚洲欧美色中文字幕在线 | 亚洲精品综合五月久久小说 | 丝袜人妻一区二区三区 | 欧美肥老太牲交大战 | 亚洲性无码av中文字幕 | 亚洲综合无码一区二区三区 | 少女韩国电视剧在线观看完整 | 欧美 日韩 人妻 高清 中文 | 国产三级久久久精品麻豆三级 | 亚洲人成影院在线无码按摩店 | yw尤物av无码国产在线观看 | 宝宝好涨水快流出来免费视频 | 国产乱人无码伦av在线a | 日产精品99久久久久久 | √8天堂资源地址中文在线 | 夜夜高潮次次欢爽av女 | 青青青爽视频在线观看 | 丰腴饱满的极品熟妇 | 国产偷国产偷精品高清尤物 | 小泽玛莉亚一区二区视频在线 | 国产av无码专区亚洲awww | 国产成人无码av一区二区 | 图片小说视频一区二区 | 午夜熟女插插xx免费视频 | 老熟妇乱子伦牲交视频 | 精品一区二区三区无码免费视频 | 亚洲色偷偷男人的天堂 | 午夜无码人妻av大片色欲 | 中文字幕无码av波多野吉衣 | 色情久久久av熟女人妻网站 | 亚洲国产一区二区三区在线观看 | 国产手机在线αⅴ片无码观看 | 久久亚洲国产成人精品性色 | 中文字幕av日韩精品一区二区 | 久久国语露脸国产精品电影 | 日本饥渴人妻欲求不满 | 永久免费观看国产裸体美女 | 国产艳妇av在线观看果冻传媒 | 欧美三级a做爰在线观看 | 国产精品久久久久久无码 | 性生交大片免费看l | 久久久久免费精品国产 | 女人被男人爽到呻吟的视频 | 国产亚洲视频中文字幕97精品 | 欧美 亚洲 国产 另类 | 国产小呦泬泬99精品 | 日本欧美一区二区三区乱码 | 欧美黑人性暴力猛交喷水 | 99久久精品日本一区二区免费 | 色综合视频一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 99久久久国产精品无码免费 | 老子影院午夜精品无码 | 99久久人妻精品免费二区 | 免费人成在线观看网站 | 成人亚洲精品久久久久 | 成 人 免费观看网站 | 日韩欧美中文字幕在线三区 | 免费无码一区二区三区蜜桃大 | 免费人成在线视频无码 | 人妻少妇精品无码专区动漫 | 最近免费中文字幕中文高清百度 | 国产后入清纯学生妹 | 久久午夜无码鲁丝片午夜精品 | 丰满肥臀大屁股熟妇激情视频 | 亚洲乱码中文字幕在线 | 欧美日本免费一区二区三区 | 丰满诱人的人妻3 | 国产特级毛片aaaaaaa高清 | 色一情一乱一伦一视频免费看 | 55夜色66夜色国产精品视频 | 国产精品第一区揄拍无码 | 牲欲强的熟妇农村老妇女视频 | 国产一区二区三区日韩精品 | 国产成人无码a区在线观看视频app | 波多野结衣一区二区三区av免费 | 97夜夜澡人人爽人人喊中国片 | 毛片内射-百度 | 377p欧洲日本亚洲大胆 | 久久伊人色av天堂九九小黄鸭 | 伊人色综合久久天天小片 | 亚洲色成人中文字幕网站 | 97久久国产亚洲精品超碰热 | 亚洲人交乣女bbw | 欧美一区二区三区视频在线观看 | 中国大陆精品视频xxxx | 人妻少妇精品无码专区动漫 | 国产精品无码永久免费888 | 人妻人人添人妻人人爱 | www国产亚洲精品久久网站 | 秋霞成人午夜鲁丝一区二区三区 | 激情五月综合色婷婷一区二区 | 亚洲乱码国产乱码精品精 | 亚洲精品无码人妻无码 | 欧美人与禽zoz0性伦交 | 人人爽人人澡人人人妻 | 欧美大屁股xxxxhd黑色 | 强开小婷嫩苞又嫩又紧视频 | 欧美精品无码一区二区三区 | 久久久久免费精品国产 | 日产精品99久久久久久 | 亚洲色大成网站www | 2020久久香蕉国产线看观看 | 伊人久久大香线蕉亚洲 | 亚洲啪av永久无码精品放毛片 | 亚洲中文无码av永久不收费 | 又大又硬又爽免费视频 | 乌克兰少妇性做爰 | 人人妻人人澡人人爽人人精品浪潮 | 六十路熟妇乱子伦 | 久久熟妇人妻午夜寂寞影院 | 国产明星裸体无码xxxx视频 | 国产suv精品一区二区五 | 亚洲熟妇自偷自拍另类 | 装睡被陌生人摸出水好爽 | 一区二区三区高清视频一 | 亚洲伊人久久精品影院 | 午夜精品久久久久久久 | 亚洲成色www久久网站 | 久久亚洲国产成人精品性色 | 欧洲美熟女乱又伦 | 日日噜噜噜噜夜夜爽亚洲精品 | 色妞www精品免费视频 | 夜夜夜高潮夜夜爽夜夜爰爰 | 午夜无码区在线观看 | 日韩精品乱码av一区二区 | 中文字幕日产无线码一区 | 在线播放免费人成毛片乱码 | 国产三级久久久精品麻豆三级 | 久久无码专区国产精品s | www国产亚洲精品久久网站 | 麻豆国产人妻欲求不满 | 亚洲娇小与黑人巨大交 | 精品 日韩 国产 欧美 视频 | av小次郎收藏 | 国产亚洲视频中文字幕97精品 | 女人被爽到呻吟gif动态图视看 | 国产人妻精品一区二区三区不卡 | 精品少妇爆乳无码av无码专区 | 日本www一道久久久免费榴莲 | 国产免费久久久久久无码 | 欧美老人巨大xxxx做受 | 国产精品igao视频网 | 影音先锋中文字幕无码 | 亚洲熟熟妇xxxx | 黑人玩弄人妻中文在线 | 露脸叫床粗话东北少妇 | 欧美日韩亚洲国产精品 | 亚洲精品一区二区三区四区五区 | 麻豆成人精品国产免费 | 黑人巨大精品欧美黑寡妇 | 欧美人与禽猛交狂配 | 亚洲精品鲁一鲁一区二区三区 | 日本高清一区免费中文视频 | 日欧一片内射va在线影院 | 欧美大屁股xxxxhd黑色 | 亚洲色www成人永久网址 | 亚洲日本一区二区三区在线 | 无码国产激情在线观看 | 高清无码午夜福利视频 | 成人aaa片一区国产精品 | 97久久精品无码一区二区 | 无码精品国产va在线观看dvd | 中文字幕无码日韩欧毛 | 久久久久久九九精品久 | 国产在热线精品视频 | 国产精品无套呻吟在线 | 久久五月精品中文字幕 | 色综合久久久无码中文字幕 | 麻花豆传媒剧国产免费mv在线 | 午夜精品一区二区三区在线观看 | 久久国产精品二国产精品 | 亚洲一区二区三区 | 亚洲熟妇色xxxxx亚洲 | 欧美人妻一区二区三区 | 欧美黑人乱大交 | 国产无遮挡又黄又爽免费视频 | 青青久在线视频免费观看 | 亚洲精品久久久久中文第一幕 | 人人爽人人澡人人高潮 | 久久久久亚洲精品男人的天堂 | 亚洲欧美日韩综合久久久 | 亚洲午夜久久久影院 | 久久精品人人做人人综合试看 | www国产亚洲精品久久久日本 | 欧美性猛交内射兽交老熟妇 | 国产精品丝袜黑色高跟鞋 | 亚洲 高清 成人 动漫 | 欧美丰满熟妇xxxx | 久久亚洲中文字幕精品一区 | 中文字幕 亚洲精品 第1页 | 久久久av男人的天堂 | 大肉大捧一进一出视频出来呀 | 少妇性荡欲午夜性开放视频剧场 | 天干天干啦夜天干天2017 | 欧美freesex黑人又粗又大 | 一个人看的www免费视频在线观看 | 日本在线高清不卡免费播放 | 亚洲 另类 在线 欧美 制服 | 亚洲の无码国产の无码影院 | 精品国产一区二区三区av 性色 | 国产精品久久福利网站 | 国产成人综合在线女婷五月99播放 | 国产熟妇另类久久久久 | 免费观看的无遮挡av | 久9re热视频这里只有精品 | 精品国产一区二区三区av 性色 | 亚洲伊人久久精品影院 | 亚洲一区二区三区播放 | 亚洲精品美女久久久久久久 | 清纯唯美经典一区二区 | 欧美人与动性行为视频 | 国产性生交xxxxx无码 | av无码不卡在线观看免费 | 麻豆精品国产精华精华液好用吗 | av无码电影一区二区三区 | 一本色道久久综合狠狠躁 | 麻豆精产国品 | av香港经典三级级 在线 | 精品久久久久久亚洲精品 | 精品国产青草久久久久福利 | 99久久婷婷国产综合精品青草免费 | 国产欧美精品一区二区三区 | 国产成人人人97超碰超爽8 | 欧洲美熟女乱又伦 | 免费看男女做好爽好硬视频 | 亚洲国产高清在线观看视频 | 免费无码午夜福利片69 | 欧美丰满少妇xxxx性 | 丰满岳乱妇在线观看中字无码 | 乱人伦中文视频在线观看 | 骚片av蜜桃精品一区 | 国产成人久久精品流白浆 | 欧美 亚洲 国产 另类 | 亚洲成色www久久网站 | 成人av无码一区二区三区 | 中文字幕av无码一区二区三区电影 | 少妇的肉体aa片免费 | 男人扒开女人内裤强吻桶进去 | 久在线观看福利视频 | 国产精品久久精品三级 | 精品一区二区三区波多野结衣 | 噜噜噜亚洲色成人网站 | 欧美成人免费全部网站 | 久久综合九色综合97网 | 一本加勒比波多野结衣 | 亚洲成av人在线观看网址 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产精品99爱免费视频 | 国产在线精品一区二区高清不卡 | 色情久久久av熟女人妻网站 | 欧美激情内射喷水高潮 | 久久久久人妻一区精品色欧美 | 爱做久久久久久 | 国产内射爽爽大片视频社区在线 | 日本精品久久久久中文字幕 | 装睡被陌生人摸出水好爽 | 波多野结衣乳巨码无在线观看 | 亚洲区欧美区综合区自拍区 | 玩弄少妇高潮ⅹxxxyw | 理论片87福利理论电影 | 国产精品无码永久免费888 | 精品无码国产一区二区三区av | 成人无码精品一区二区三区 | 亚洲精品欧美二区三区中文字幕 | 亚洲中文无码av永久不收费 | 午夜福利不卡在线视频 | 精品欧洲av无码一区二区三区 | 久久久久久久久888 | 国产色xx群视频射精 | 女人被爽到呻吟gif动态图视看 | 国产午夜亚洲精品不卡 | 精品亚洲成av人在线观看 | 成熟妇人a片免费看网站 | 亚洲色偷偷男人的天堂 | 奇米影视7777久久精品人人爽 | av人摸人人人澡人人超碰下载 | 欧美freesex黑人又粗又大 | 国产午夜亚洲精品不卡下载 | 老司机亚洲精品影院无码 | 久久国产劲爆∧v内射 | 色欲久久久天天天综合网精品 | 18黄暴禁片在线观看 | 99久久久无码国产aaa精品 | 一本久久a久久精品亚洲 | 亚洲色欲色欲欲www在线 | 精品久久8x国产免费观看 | 欧美三级不卡在线观看 | 成人影院yy111111在线观看 | 国精产品一品二品国精品69xx | 国产av无码专区亚洲a∨毛片 | 人妻互换免费中文字幕 | 久久综合狠狠综合久久综合88 | 久久精品国产99精品亚洲 | 六十路熟妇乱子伦 | 久久久久久国产精品无码下载 | 亚洲小说图区综合在线 | 国产成人一区二区三区在线观看 | 蜜桃av抽搐高潮一区二区 | 国产偷自视频区视频 | 国产女主播喷水视频在线观看 | 国产凸凹视频一区二区 | 免费无码午夜福利片69 | 永久免费观看美女裸体的网站 | 日本精品人妻无码免费大全 | 国产综合色产在线精品 | 亚洲熟熟妇xxxx | 免费无码av一区二区 | 国产乱人伦av在线无码 | 国产一区二区三区影院 | 无码毛片视频一区二区本码 | 久久精品99久久香蕉国产色戒 | 国产精品a成v人在线播放 | 国产色视频一区二区三区 | 波多野结衣一区二区三区av免费 | 色综合久久久久综合一本到桃花网 | 国产精品亚洲一区二区三区喷水 | 内射巨臀欧美在线视频 | 一个人看的视频www在线 | 一本一道久久综合久久 | 欧美三级不卡在线观看 | 欧美熟妇另类久久久久久不卡 | 亚洲中文字幕乱码av波多ji | 2019午夜福利不卡片在线 | 亚洲综合另类小说色区 | 免费人成在线观看网站 | aa片在线观看视频在线播放 | 波多野结衣乳巨码无在线观看 | 亚洲国产精品久久人人爱 | 99久久人妻精品免费一区 | 欧美一区二区三区 | 亚洲欧美色中文字幕在线 | 欧美激情内射喷水高潮 | 亚洲欧美中文字幕5发布 | a在线观看免费网站大全 | 黑森林福利视频导航 | 欧美高清在线精品一区 | 午夜熟女插插xx免费视频 | 成人欧美一区二区三区黑人免费 | 2020最新国产自产精品 | 成人亚洲精品久久久久软件 | 亚洲国产欧美日韩精品一区二区三区 | 国产成人无码一二三区视频 | 日韩少妇内射免费播放 | 久久综合狠狠综合久久综合88 | 国产成人无码区免费内射一片色欲 | 99国产精品白浆在线观看免费 | 成人免费视频视频在线观看 免费 | 国产色视频一区二区三区 | 亚洲成a人片在线观看无码3d | 国产精品久久久久久亚洲影视内衣 | 日产国产精品亚洲系列 | 亚洲熟女一区二区三区 | 无码人妻久久一区二区三区不卡 | 亚洲大尺度无码无码专区 | 国产黄在线观看免费观看不卡 | 日韩精品无码免费一区二区三区 | 宝宝好涨水快流出来免费视频 | 久久99精品国产.久久久久 | 成人片黄网站色大片免费观看 | 东京无码熟妇人妻av在线网址 | av在线亚洲欧洲日产一区二区 | 亚洲va中文字幕无码久久不卡 | 国产热a欧美热a在线视频 | 纯爱无遮挡h肉动漫在线播放 | 国产九九九九九九九a片 | 中文字幕无码视频专区 | 中文字幕无码av波多野吉衣 | 久久精品中文字幕一区 | 精品厕所偷拍各类美女tp嘘嘘 | a国产一区二区免费入口 | 欧美成人午夜精品久久久 | 一区二区三区乱码在线 | 欧洲 | 久久综合九色综合欧美狠狠 | 精品午夜福利在线观看 | 中文字幕乱码亚洲无线三区 | 久久无码中文字幕免费影院蜜桃 | 水蜜桃亚洲一二三四在线 | 天天躁夜夜躁狠狠是什么心态 | 扒开双腿吃奶呻吟做受视频 | 久久午夜夜伦鲁鲁片无码免费 | 最近的中文字幕在线看视频 | 精品国产精品久久一区免费式 | 国精产品一品二品国精品69xx | 亚洲日韩av一区二区三区四区 | 人人爽人人爽人人片av亚洲 | 欧美人妻一区二区三区 | 理论片87福利理论电影 | 久久无码中文字幕免费影院蜜桃 | 亚洲中文字幕在线观看 | 国产黑色丝袜在线播放 | 国产激情综合五月久久 | 国产无套粉嫩白浆在线 | 免费人成网站视频在线观看 | 成人无码视频免费播放 | 国产高潮视频在线观看 | 精品国产青草久久久久福利 | 性欧美牲交xxxxx视频 | 2020最新国产自产精品 | 中文字幕+乱码+中文字幕一区 | 国产sm调教视频在线观看 | 亚洲精品鲁一鲁一区二区三区 | 日韩av无码一区二区三区不卡 | 2019午夜福利不卡片在线 | 亚洲无人区一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | 中文字幕乱码亚洲无线三区 | 国产精品va在线观看无码 | 任你躁在线精品免费 | 久久天天躁狠狠躁夜夜免费观看 | 成人aaa片一区国产精品 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 久久综合狠狠综合久久综合88 | 久久人人爽人人爽人人片av高清 | 美女黄网站人色视频免费国产 | 国产精品久久久久久亚洲影视内衣 | 国产香蕉尹人视频在线 | 国产色xx群视频射精 | 成人亚洲精品久久久久软件 | 国产真实伦对白全集 | 亚洲 高清 成人 动漫 | 日本乱偷人妻中文字幕 | 日本一区二区更新不卡 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美肥老太牲交大战 | 久久人人爽人人爽人人片ⅴ | 久久久无码中文字幕久... | 亚洲男人av香蕉爽爽爽爽 | 国产亚洲精品久久久久久久久动漫 | 2019nv天堂香蕉在线观看 | 亚洲の无码国产の无码步美 | 久久精品国产精品国产精品污 | 两性色午夜视频免费播放 | 特大黑人娇小亚洲女 | 丝袜美腿亚洲一区二区 | 一本久道久久综合狠狠爱 | 久9re热视频这里只有精品 | 在线精品亚洲一区二区 | 熟妇女人妻丰满少妇中文字幕 | 欧美野外疯狂做受xxxx高潮 | 男女作爱免费网站 | 我要看www免费看插插视频 | 精品国精品国产自在久国产87 | 色综合久久久久综合一本到桃花网 | 成人欧美一区二区三区黑人免费 | 97色伦图片97综合影院 | 亚洲欧美国产精品专区久久 | 无码中文字幕色专区 | 亚洲娇小与黑人巨大交 | 国产成人无码a区在线观看视频app | 久久久精品国产sm最大网站 | 思思久久99热只有频精品66 | 国产av剧情md精品麻豆 | 国产av无码专区亚洲a∨毛片 | 日韩欧美中文字幕在线三区 | 国产做国产爱免费视频 | 7777奇米四色成人眼影 | 67194成是人免费无码 | 欧美人与动性行为视频 | 无码人妻av免费一区二区三区 | 色老头在线一区二区三区 | 97精品人妻一区二区三区香蕉 | 天堂а√在线地址中文在线 | 久久五月精品中文字幕 | 国产精品无码一区二区三区不卡 | 亚洲一区二区三区含羞草 | 粗大的内捧猛烈进出视频 | 国产成人精品优优av | 国产两女互慰高潮视频在线观看 | 欧美日本免费一区二区三区 | 亚洲人成无码网www | 欧美黑人乱大交 | 久久精品成人欧美大片 | 国产农村妇女高潮大叫 | 在线a亚洲视频播放在线观看 | 日本乱偷人妻中文字幕 | 天干天干啦夜天干天2017 | 国产在线精品一区二区三区直播 | 久久精品国产99久久6动漫 | 少妇人妻大乳在线视频 | 99麻豆久久久国产精品免费 | 日本熟妇人妻xxxxx人hd | 内射后入在线观看一区 | 亚洲欧洲日本无在线码 | 精品国产麻豆免费人成网站 | 中文字幕精品av一区二区五区 | 亚洲精品国产精品乱码不卡 | 99精品久久毛片a片 | 天天综合网天天综合色 | 婷婷色婷婷开心五月四房播播 | 国产在线一区二区三区四区五区 | 亚洲区欧美区综合区自拍区 | 中文字幕无码免费久久99 | aa片在线观看视频在线播放 | 国产人成高清在线视频99最全资源 | 国产激情综合五月久久 | 搡女人真爽免费视频大全 | 亚洲午夜福利在线观看 | 国产乱人偷精品人妻a片 | 国产精品毛多多水多 | 99国产精品白浆在线观看免费 | 人人爽人人澡人人人妻 | 99久久久无码国产精品免费 | 久久综合给合久久狠狠狠97色 | 精品人人妻人人澡人人爽人人 | 国产明星裸体无码xxxx视频 | 久久精品人人做人人综合 | 一本精品99久久精品77 | 精品夜夜澡人妻无码av蜜桃 | 亚洲の无码国产の无码步美 | 正在播放东北夫妻内射 | 一本加勒比波多野结衣 | 国产精品无套呻吟在线 | 天堂一区人妻无码 | 国产女主播喷水视频在线观看 | 久久99国产综合精品 | 成人试看120秒体验区 | 亚洲呦女专区 | 无码成人精品区在线观看 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲国产精品无码久久久久高潮 | av无码电影一区二区三区 | 性生交大片免费看女人按摩摩 | 欧美日韩一区二区免费视频 | 四虎4hu永久免费 | 欧美怡红院免费全部视频 | 亚洲熟熟妇xxxx | 国产精品人人爽人人做我的可爱 | 国产亚洲欧美在线专区 | 无码人妻精品一区二区三区下载 | 久久天天躁夜夜躁狠狠 | 欧美阿v高清资源不卡在线播放 | 黑森林福利视频导航 | 亚洲国产成人av在线观看 | 日韩少妇白浆无码系列 | 色婷婷香蕉在线一区二区 | 夫妻免费无码v看片 | 377p欧洲日本亚洲大胆 | 免费视频欧美无人区码 | 亚洲综合色区中文字幕 | 亚洲s色大片在线观看 | 午夜福利试看120秒体验区 | 欧美freesex黑人又粗又大 | 亚洲国产精品毛片av不卡在线 | 天堂а√在线地址中文在线 | 久久久中文字幕日本无吗 | 国产极品视觉盛宴 | 欧美xxxx黑人又粗又长 | 日韩av激情在线观看 | 无遮挡国产高潮视频免费观看 | 男女猛烈xx00免费视频试看 | 一本久久伊人热热精品中文字幕 | 东京热男人av天堂 | 午夜男女很黄的视频 | 亚洲国产成人av在线观看 | 99久久久无码国产精品免费 | 国产高清av在线播放 | 中文字幕乱码中文乱码51精品 | 亚洲国产精品成人久久蜜臀 | 野狼第一精品社区 | 男人的天堂2018无码 | 国产亚洲欧美日韩亚洲中文色 | 三上悠亚人妻中文字幕在线 | av在线亚洲欧洲日产一区二区 | 中文字幕无码人妻少妇免费 | 欧美日韩视频无码一区二区三 | 亚洲成a人一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 日日麻批免费40分钟无码 | 一本久久a久久精品vr综合 | 初尝人妻少妇中文字幕 | 亚洲一区二区三区无码久久 | 大乳丰满人妻中文字幕日本 | 欧美成人家庭影院 | 无码吃奶揉捏奶头高潮视频 | 亚洲精品午夜国产va久久成人 | 午夜精品久久久久久久久 | 在线欧美精品一区二区三区 | 丝袜美腿亚洲一区二区 | 乱人伦人妻中文字幕无码久久网 | 亚洲a无码综合a国产av中文 | 国产欧美精品一区二区三区 | 色欲人妻aaaaaaa无码 | 少妇高潮一区二区三区99 | 久久精品国产99精品亚洲 | 亚洲成av人片在线观看无码不卡 | 国产肉丝袜在线观看 | 国产艳妇av在线观看果冻传媒 | 午夜福利试看120秒体验区 | 久久人人爽人人爽人人片av高清 | 四虎影视成人永久免费观看视频 | 欧美日韩一区二区免费视频 | 中文字幕乱码中文乱码51精品 | 精品一区二区不卡无码av | 巨爆乳无码视频在线观看 | 日本成熟视频免费视频 | 亚洲精品国产a久久久久久 | 国产成人无码a区在线观看视频app | 人人澡人人妻人人爽人人蜜桃 | 在线观看免费人成视频 | 国产成人精品优优av | 国产又爽又黄又刺激的视频 | 亚洲成a人一区二区三区 | 午夜免费福利小电影 | 亚洲精品无码国产 | 成人影院yy111111在线观看 | 日本精品久久久久中文字幕 | 中文字幕乱码人妻无码久久 | 中文无码伦av中文字幕 | 未满成年国产在线观看 | 中国大陆精品视频xxxx | 荡女精品导航 | 日本xxxx色视频在线观看免费 | 5858s亚洲色大成网站www | 十八禁视频网站在线观看 | 日韩少妇白浆无码系列 | 午夜男女很黄的视频 | 亚洲狠狠婷婷综合久久 | 久久久精品456亚洲影院 | 综合激情五月综合激情五月激情1 | 午夜精品久久久内射近拍高清 | 最近的中文字幕在线看视频 | 久久99精品国产麻豆蜜芽 | 国内精品久久毛片一区二区 | 欧美精品国产综合久久 | 奇米影视888欧美在线观看 | 成熟妇人a片免费看网站 | 丰腴饱满的极品熟妇 | 亚洲精品一区二区三区四区五区 | 精品厕所偷拍各类美女tp嘘嘘 | 国产做国产爱免费视频 | 亚洲精品午夜国产va久久成人 | 中文字幕人成乱码熟女app | 欧美真人作爱免费视频 | 天堂久久天堂av色综合 | 久久国语露脸国产精品电影 | 色一情一乱一伦一视频免费看 | 窝窝午夜理论片影院 | www成人国产高清内射 | 夫妻免费无码v看片 | 欧美性猛交内射兽交老熟妇 | 中文字幕人成乱码熟女app | 精品久久综合1区2区3区激情 | 高清无码午夜福利视频 | 国产精品久久久久久亚洲影视内衣 | 一二三四社区在线中文视频 | 捆绑白丝粉色jk震动捧喷白浆 | 麻豆精品国产精华精华液好用吗 | 女人被男人爽到呻吟的视频 | 久青草影院在线观看国产 | 欧美人与禽zoz0性伦交 | 亚洲日韩av一区二区三区中文 | 亚洲熟妇自偷自拍另类 | 欧美日韩色另类综合 | 澳门永久av免费网站 | 免费无码午夜福利片69 | 亚洲综合色区中文字幕 | 国产午夜福利100集发布 | 午夜福利不卡在线视频 | 久久97精品久久久久久久不卡 | 亚洲精品国产a久久久久久 | 六十路熟妇乱子伦 | 无码福利日韩神码福利片 | 1000部啪啪未满十八勿入下载 | 亚洲s码欧洲m码国产av | 国产人成高清在线视频99最全资源 | 牲欲强的熟妇农村老妇女 | 无码av免费一区二区三区试看 | 亚洲日韩精品欧美一区二区 | av香港经典三级级 在线 | 成人毛片一区二区 | 爽爽影院免费观看 | 巨爆乳无码视频在线观看 | 永久免费观看国产裸体美女 | 永久免费观看美女裸体的网站 | 日本一区二区三区免费高清 | 国产精品亚洲lv粉色 | 亚洲精品一区三区三区在线观看 | 无遮挡啪啪摇乳动态图 | 精品无码成人片一区二区98 | 青草青草久热国产精品 | 性生交大片免费看女人按摩摩 | 日韩精品a片一区二区三区妖精 | 亚洲第一网站男人都懂 | 成人无码精品一区二区三区 | 国产精品国产三级国产专播 | 亚洲欧美国产精品专区久久 | 露脸叫床粗话东北少妇 | 少妇厨房愉情理9仑片视频 | 欧美老妇交乱视频在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 久久国产精品偷任你爽任你 | 一本久道久久综合狠狠爱 | 久久精品一区二区三区四区 | 鲁鲁鲁爽爽爽在线视频观看 | 日日麻批免费40分钟无码 | 亚洲 a v无 码免 费 成 人 a v | 国产精品永久免费视频 | 中文字幕无码视频专区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 欧美日韩一区二区三区自拍 | 精品午夜福利在线观看 | 久久国产36精品色熟妇 | 久久精品中文字幕大胸 | 欧美人与牲动交xxxx | 波多野结衣av在线观看 | a国产一区二区免费入口 | 真人与拘做受免费视频一 | 亚洲精品久久久久中文第一幕 | 国产婷婷色一区二区三区在线 | 成人一区二区免费视频 | 18精品久久久无码午夜福利 | 给我免费的视频在线观看 | 蜜桃臀无码内射一区二区三区 | 亚洲国产精品成人久久蜜臀 | 人妻少妇精品无码专区二区 | 东京热一精品无码av | 久久无码中文字幕免费影院蜜桃 | 午夜丰满少妇性开放视频 | 大肉大捧一进一出好爽视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲区欧美区综合区自拍区 | 久久人人爽人人人人片 | 成人免费视频一区二区 | 97无码免费人妻超级碰碰夜夜 | 亚洲一区二区观看播放 | 55夜色66夜色国产精品视频 | 国产激情综合五月久久 | 激情亚洲一区国产精品 | 中文字幕无码免费久久9一区9 | 波多野结衣乳巨码无在线观看 | 丰满人妻翻云覆雨呻吟视频 | 亚洲日韩一区二区三区 | 亚洲人成网站色7799 | 牲交欧美兽交欧美 | 无码人妻久久一区二区三区不卡 | 国产成人综合色在线观看网站 | 捆绑白丝粉色jk震动捧喷白浆 | 无码播放一区二区三区 | 亚洲热妇无码av在线播放 | 日本www一道久久久免费榴莲 | 国产精品理论片在线观看 | 日本爽爽爽爽爽爽在线观看免 | 美女极度色诱视频国产 | 久久视频在线观看精品 | 伊在人天堂亚洲香蕉精品区 | 国产色在线 | 国产 | 性生交大片免费看l | 国产亚洲精品精品国产亚洲综合 | 玩弄中年熟妇正在播放 | 亚洲欧美国产精品久久 | 欧洲欧美人成视频在线 | 风流少妇按摩来高潮 | 一本久道久久综合狠狠爱 | 岛国片人妻三上悠亚 | 少妇激情av一区二区 | 九九在线中文字幕无码 | 久久久久久av无码免费看大片 | 久久这里只有精品视频9 | 欧美野外疯狂做受xxxx高潮 | 又大又硬又黄的免费视频 | 老子影院午夜伦不卡 | 天天做天天爱天天爽综合网 | www国产亚洲精品久久久日本 | 波多野42部无码喷潮在线 | 日韩av无码一区二区三区不卡 | 丰满岳乱妇在线观看中字无码 | 久久99精品久久久久婷婷 | a国产一区二区免费入口 | 免费网站看v片在线18禁无码 | 欧美日韩人成综合在线播放 | 欧美日韩在线亚洲综合国产人 | 一本久久a久久精品vr综合 | www成人国产高清内射 | 色婷婷欧美在线播放内射 | 强辱丰满人妻hd中文字幕 | 亚洲国产午夜精品理论片 | 亚洲色大成网站www国产 | 激情五月综合色婷婷一区二区 | 亚洲爆乳精品无码一区二区三区 | 婷婷六月久久综合丁香 | 国产性生大片免费观看性 | 又紧又大又爽精品一区二区 | 免费看男女做好爽好硬视频 | 国产成人综合色在线观看网站 | v一区无码内射国产 | 高潮毛片无遮挡高清免费视频 | 蜜桃视频韩日免费播放 | 国产精品va在线观看无码 | 亚洲国产精品美女久久久久 | 欧美一区二区三区视频在线观看 | 中文字幕无码日韩欧毛 | 亚洲人成网站免费播放 | 国产精品美女久久久 | 人人妻人人澡人人爽人人精品浪潮 | 强伦人妻一区二区三区视频18 | 丰满护士巨好爽好大乳 | 免费观看又污又黄的网站 | 少妇厨房愉情理9仑片视频 | 亚洲熟悉妇女xxx妇女av | 特黄特色大片免费播放器图片 | 国产成人精品一区二区在线小狼 | 久久亚洲精品中文字幕无男同 | 亚无码乱人伦一区二区 | 亚洲熟妇色xxxxx亚洲 | 亚洲精品一区三区三区在线观看 | 欧美激情综合亚洲一二区 | 久久精品一区二区三区四区 | 中文字幕人妻无码一夲道 | 久久aⅴ免费观看 | 亚洲精品中文字幕久久久久 | 中文字幕日韩精品一区二区三区 | 中文字幕无码日韩专区 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲精品中文字幕乱码 | 亚洲精品成人av在线 | 亚洲综合精品香蕉久久网 | 国产婷婷色一区二区三区在线 | 日韩在线不卡免费视频一区 | 国产人妻精品一区二区三区不卡 | 性做久久久久久久免费看 | 亚洲日韩精品欧美一区二区 | 亚洲国产精品美女久久久久 | 久久久精品456亚洲影院 | 夜夜高潮次次欢爽av女 | 久久99国产综合精品 | 精品人妻人人做人人爽夜夜爽 | 无码av中文字幕免费放 | 精品日本一区二区三区在线观看 | 亚洲精品午夜国产va久久成人 | 精品无人区无码乱码毛片国产 | 久久久久se色偷偷亚洲精品av | 成人性做爰aaa片免费看不忠 | 粉嫩少妇内射浓精videos | 人人妻人人澡人人爽人人精品浪潮 | 亚洲精品国偷拍自产在线观看蜜桃 | 无码人妻av免费一区二区三区 | 国产熟妇另类久久久久 | 久久久久亚洲精品男人的天堂 | 未满成年国产在线观看 | 日韩欧美中文字幕公布 | 亚洲乱码日产精品bd | 亚洲国产精品一区二区美利坚 | 精品国产一区二区三区四区 | 丰满妇女强制高潮18xxxx | 亚洲成av人综合在线观看 | 亚洲精品鲁一鲁一区二区三区 | 精品 日韩 国产 欧美 视频 | 亚洲精品国偷拍自产在线麻豆 | 亚洲日韩av一区二区三区中文 | 美女黄网站人色视频免费国产 | 未满小14洗澡无码视频网站 | 国产热a欧美热a在线视频 | 久久精品视频在线看15 | 亚洲国产欧美国产综合一区 | 夜夜躁日日躁狠狠久久av | 内射老妇bbwx0c0ck | 东京热男人av天堂 | 精品厕所偷拍各类美女tp嘘嘘 | 九一九色国产 | 国产成人无码a区在线观看视频app | 国产精品亚洲а∨无码播放麻豆 | 精品水蜜桃久久久久久久 | 精品熟女少妇av免费观看 | 撕开奶罩揉吮奶头视频 | 人妻插b视频一区二区三区 | 中文无码伦av中文字幕 | 狠狠色欧美亚洲狠狠色www | 少妇性l交大片欧洲热妇乱xxx | 色噜噜亚洲男人的天堂 | 成在人线av无码免观看麻豆 |