精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

并發與高并發系列第二集-Java內存區域劃分

開發 后端
我們會把查票信息和查詢電影推薦信息請求放在二個不同的線程池,查詢熱門電影推薦這個請求做成弱依賴,也就是查詢熱門電影推薦失敗或者超時也不會影響到查詢電影票信息。

[[405175]]

本文轉載自微信公眾號「安琪拉的博客」,作者安琪拉。轉載本文請聯系安琪拉的博客公眾號。

面試官:上次我們公司搞了個專場面試,來了一百多候選人,現場很熱鬧,你怎么沒來?

安琪拉: 天氣太熱,你們公司離地鐵站又比較遠,以我的能力,面完肯定是搶不到共享單車的,所以就不湊這個熱鬧了。

面試官:你這是什么意思?

安琪拉: 沒什么意思。。。哎,我等不及了,快開始吧。

面試官:你簡歷上寫熟悉多線程,你能給我講為什么要用多線程嗎?多線程有什么好處?最好能給我舉個你工作中的實際例子。

安琪拉: 比如: 用戶查看在支付寶買的電影票的時候,順便在頁面下半部分推薦給用戶一些最近的熱門電影。

比如安琪拉看自己買的“寂靜之地2”的時候,頁面底部同時推薦給我“速度與激情9”,放個預告片、影片介紹啥的。

面試官: 這就完了? 然后呢,詳細講講怎么用到多線程的?

安琪拉: 如果不使用多線程,支付寶服務端先查詢用戶的購票信息,查詢完之后再查詢熱門電影推薦信息,這樣串行效率很慢。

改成多線程,同時進行二個請求的查詢,查詢完成把結果組裝,展示給用戶。

面試官:那如果查詢熱門電影推薦失敗了,或者查詢推薦信息很慢,豈不是也很影響用戶查看自己買的票,如果這個時候用戶著急看電影,一直出不來,豈不是3.25啦。

安琪拉: 我們會把查票信息和查詢電影推薦信息請求放在二個不同的線程池,查詢熱門電影推薦這個請求做成弱依賴,也就是查詢熱門電影推薦失敗或者超時也不會影響到查詢電影票信息。

面試官:能寫個偽代碼說明下嗎?

安琪拉: 可以,幫我拿張A4紙,順便把你筆借我一下。(下面涉及Future、線程池的代碼看不懂沒關系,后面并發系列介紹完回過頭來看也可以)

  1. //查詢票信息 
  2. Future getTicketFuture = ticketHandlePool.submit(()->{ 
  3.     //查詢票信息 
  4.     doQuery(); 
  5. }); 
  6.  
  7. //查詢推薦電影 
  8. Future recMovieFuture = recMovieHandlePool.submit(()->{ 
  9.     //查詢推薦電影 
  10.     try { 
  11.       doQuery(); 
  12.     } catch (Exception ex) { 
  13.        //異常捕獲記錄 
  14.       logger.warn("信息", ex); 
  15.     } 
  16. }); 
  17. //獲取票查詢結果 
  18. try { 
  19.     recMovieFuture.get(2, TimeUnit.SECONDS); 
  20. } catch (Exception e) { 
  21.   //弱依賴: 超時、中斷等異常只是warn級別記錄,任務取消,不拋出異常 
  22.   logger.warn("信息", e); 
  23.   recMovieFuture.cancel(true); 
  24. //獲取推薦信息查詢結果強依賴 
  25. try { 
  26.     getTicketFuture.get(3, TimeUnit.SECONDS); 
  27. } catch (Exception e) { 
  28.   logger.error("信息", e); 
  29.   recMovieFuture.cancel(true); 
  30.   throw new ***Exception(e, "獲取票信息異常"); 

面試官:那你給我總結一下并發編程的優勢吧。

安琪拉: 【看來實踐環節過了,開始上八股文了。】

嗯,剛才我們也看到了,并發能提升程序執行的效率,充分利用CPU,特別是對于多核,IO密集型(經常需要等待I/O,多線程可以充分利用CPU資源),并發也是一種設計,在某些多任務處理,或者一個大任務需要拆分成很多個子任務的場景,并發一方面能提升執行效率,另一方面能清晰的表達程序設計者的意圖。

【這一波方法論應該能讓面試官抖一抖】

面試官:那并發編程有什么風險呢?

安琪拉: 總的來說有這么幾個:

  • 線程頻繁上下文切換,會有性能損耗;
  • 共享數據多線程訪問,如果不加控制,可能會出現線程安全問題;

面試官:關于線程安全相關的,你能我有幾個問題想問你。

安琪拉: 請出題。

面試官:你給我講講JVM運行時數據區域的劃分嗎?

安琪拉: 【它來了,它終于還是來了】

這個給個小提示,有時候我們會把JVM的運行時數據區域和Java內存模型搞混,面試題二個一般都會問到。

  • JVM的運行時數據區就是堆、棧這些,規定運行時內存(含寄存器) 分成哪幾塊,起什么作用;
  • Java內存模型是為了Java語言的跨平臺表現一致性,屏蔽硬件和操作系統實現提出的規范,例如規定了線程和主內存之間的抽象關系,既然是規范,只會規定概念,具體實現依賴不同平臺的JVM虛擬機的實現。

其實日常寫代碼心里有總體概念就好了,不需要像做研究一樣的深入實現細節,除非面試的是JVM虛擬機開發崗這種。

如下如所示,就是JVM運行時數據區

面試官:那我們來一塊一塊區域的講。你先給我講下什么是虛擬機棧(JVM Stacks)?

安琪拉: 要講虛擬機棧,我們先要知道棧是什么時候創建的?因為棧是線程私有的,棧的生命周期跟線程一致,所以記住棧是跟線程綁定在一起的就好了,棧中存的內容也是線程運行需要用到的,看我們上圖畫的,棧是由一個個棧幀組成的,棧幀里面存放局部變量表、操作棧、動態鏈接、方法返回地址。

面試官:詳細講講這四個玩意唄。

安琪拉: 我得寫段代碼演示一下。

  1. public static void main(String[] args) { 
  2.   String str = dance("angela", 3); 
  3.  
  4. private static String dance(String nameint count) { 
  5.   String result = name + ":" + count
  6.   return result; 

每個方法在執行的同時都會創建一個棧幀(Stack Frame),棧幀是方法運行時的基本數據單元,用于存儲局部變量表、操作數棧、動態鏈接、方法出口等信息。

每一個方法從調用直至執行完成的過程,就對應著一個棧幀在虛擬機棧中入棧到出棧的過程。

局部變量表

main方法執行,會啟動一個線程,這時候主線程的虛擬棧中會壓入一個棧幀,調用dance 方法時再會壓入一個棧幀,存放name、count 等數據,name、count、result就是存在在局部變量表中,局部變量表是存放方法參數和局部變量的區域。

如果是非靜態方法,則在局部變量表 index[0] 位置上存儲的是方法所屬對象實例的引用,一個引用變量占 4 個字節,隨后存儲的是方法參數和局部變量。

操作數棧

操作數非常有意思,這里要講到程序執行原理,String result = name + ":" + count; 這行代碼分成好幾個步驟,簡化就是:取數、執行、存數。取name壓入操作數棧、取count壓入操作數棧,然后彈棧2次,執行拼接動作,把結果壓棧,存入局部變量表。

所以為什么說JVM 的執行引擎是基于棧的執行引擎,就是這個原因,這里的棧就是操作數棧。

后面的系列講到volatile的時候會介紹load、store等相關指令。

字節碼指令中的 STORE 指令就是將操作棧中計算完成的結果寫回局部變量表的存儲空間內。

再說動態鏈接和方法返回地址。

動態鏈接

每個棧幀中包含一個在常量池中對當前方法的引用, 目的是支持方法調用過程的動態連接。

可能有點繞,這部分深入說要講類的編譯、加載、鏈接的過程,Class 文件中存放了大量的符號引用,字節碼中的方法調用指令就是以常量池中指向方法的符號引用作為參數。這些符號引用一部分會在類加載階段或第一次使用時轉化為直接引用,這種轉化稱為靜態解析。另一部分將在每一次運行期間轉化為直接引用,這部分稱為動態連接,比如反射時invokedynamic 調用的,在運行時常量池存放的當前方法的引用是動態生成的,運行時可以動態鏈接。

方法返回地址

方法執行完,執行彈棧操作,彈出當前棧幀,方法返回地址就是方法執行之后(彈棧之后)下一步要執行的地址。

面試官:那本地方法棧和你說的虛擬機棧什么區別?

安琪拉: 本地方法棧(Native Method Stack)與虛擬機棧很相似,它們之間的區別不過是虛擬機棧為虛擬機執行 Java 方法(也就是字節碼)服務,而本地方法棧則為虛擬機使用到的 Native 方法服務。

比如Thread類的 start0 方法,就是Native方法。

  1. private native void start0(); 

Sun HotSpot 虛擬機直接把本地方法棧和虛擬機棧合二為一。

面試官:那 Java 堆呢?

安琪拉: Java 堆是被所有線程共享的一塊內存區域,在虛擬機啟動時創建,幾乎所有的對象實例都在這里分配內存。

面試官:關于Java堆的內存回收你能講一下嗎?

安琪拉: 堆是垃圾收集器(GC)管理的主要區域,因此很多時候也被稱做“GC堆”(Garbage Collected Heap)。從內存回收的角度來看,由于現在收集器基本都采用分代收集算法,所以 Java 堆中還可以細分為:新生代和老年代;再細致一點的有 Eden 空間、From Survivor 空間、To Survivor 空間等。

面試官:方法區呢?你知道JVM規范中JDK8之前和之后方法區的變化嗎?

安琪拉: 方法區是JVM規范中的說話,具體到不同JVM,有不同的實現,以最流行的Sun Hotspot為例,JDK8 之前,Hotspot 中方法區的實現是永久代(Perm),JDK8 開始使用元空間(Metaspace),以前永久代的字符串常量移至堆內存,其他內容移至元空間,元空間直接在本地內存分配。

面試官:方法區,或者說它的實現元空間是做什么的?

安琪拉: 方法區(Method Area)與 Java 堆一樣,是各個線程共享的內存區域,它用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據。

其實從底層物理存儲來講,跟堆是都是在內存中,Java 虛擬機規范把方法區描述為堆的一個邏輯部分,但是它卻有一個別名叫做 Non-Heap(非堆),目的應該是與 Java 堆區分開來。

面試官:為什么要使用元空間取代永久代的實現?

安琪拉: 主要有幾點原因:

  • 字符串存在永久代中,容易出現性能問題和內存溢出。由于 PermGen(永久代) 經常會溢出,引發 java.lang.OutOfMemoryError: PermGen 問題,所以 JVM 的開發者希望這一塊內存可以更靈活地被管理,不要再經常出現這樣的 OOM;
  • 移除 PermGen 可以促進 HotSpot JVM 與 JRockit VM 的融合,因為 JRockit 沒有永久代。

面試官:我看你圖中畫了元數據區的常量池,JVM中常量池能詳細講講嗎?

安琪拉: 首先明確一點,JVM中有三種常量池:

  • JVM常量池
  • 運行時常量池

字符串常量池

然后我們分別說下三種的區別和聯系,JVM常量池也叫class文件常量池,是class文件的一部分,用于保存編譯時確定的數據。

最關鍵的是編譯期三個字。

這個我們寫個Java程序,反編譯一下,看字節碼就知道了,如下圖,常量池的符號引用都列出來了。

#1 引用 #5.#25 什么意思呢,我們看#5 是 java/lang/Object, #25 是 #8:#9 // "":()V

其實就是調用初始化方法,引用方法名稱、返回值和繼承的類(任何類都繼承Object類,所以引用了 java/lang/Object)

常量池存了一堆符號引用。

在Class編譯加載后Class常量池加載到運行時常量池,運行時常量池存儲在元空間。JVM在執行某個類的時候,會經過加載、連接、初始化,而連接又包括驗證、準備、解析三個階段。而當類加載到內存中后,jvm就會將class常量池中的內容存放到運行時常量池中。

最后一個就是字符串常量池(String Constant Pool),很多人以為上圖反編譯的Class常量池中的字符串就存儲在字符串常量池,網上很多博客二者也搞混了,Class常量池只在編譯期間起作用,編譯期間確定了一堆引用關系,比如: 類和方法的全限定名、字段的名稱和描述符 、方法的名稱和描述符、文本字符串。

存儲在哪?

字符串常量池存儲在堆上,在JDK6.0及之前版本,字符串常量池是放在Perm Gen區(也就是方法區)中。

怎么存儲?

在HotSpot VM里實現常量池的是一個StringTable類,它是一個Hash表,默認值大小長度是1009;這個StringTable只有一份,被所有的類共享。字符串常量由一個一個字符組成,放在了StringTable上。

存儲什么?

字符串常量池中的字符串只存在一份!

  • 在JDK6.0及之前版本中,字符串常量池(String Pool)里放的都是字符串常量;
  • 在JDK7.0中,字符串常量池(String Pool)中也可以存放放于堆內的字符串對象的引用。

面試官:你說JDK7.0后字符串常量池(String Pool)中也可以存放放于堆內的字符串對象的引用,能舉個例子嗎?

安琪拉: 在JDK 7下,當執行String.intern();時,因為常量池中沒有“like”這個字符串,所以會在常量池中生成一個對堆中的“like”的引用(注意這里是引用 ,就是這個區別于JDK 1.6的地方。在JDK1.6下是生成原字符串的拷貝)

  1. public void stringTest() { 
  2.      String str1 = "follow"
  3.      String str2 = "angela"
  4.      String str3 = new String("like"); 
  5.      str3.intern(); 

如下圖,JDK1.6 String.intern()的操作,生成原字符串“like”的拷貝。

JDK1.7 如下圖:生成一個對堆中的“like”的引用

面試官:那你給我講講前面說的Java內存模型吧,最好能寫點實際工程代碼,說明Java內存模型在實際項目的用處。

安琪拉: 要不還是下次吧,今天有點晚了,你們公司離地鐵遠,我要早點去搶共享單車,這題就留給二面面試官吧。

面試官:也行,那你先回去吧,有消息我通知你。

 

安琪拉: 好嘞,回見。

 

責任編輯:武曉燕 來源: 安琪拉的博客
相關推薦

2021-06-07 17:51:29

并發高并發編程

2013-04-25 14:15:53

Windows PhoWindows PhoWindows Pho

2016-09-26 17:09:28

Java并發編程內存模型

2022-05-13 14:16:05

云計算

2018-03-26 21:31:30

深度學習

2021-07-03 17:44:34

并發高并發原子性

2019-06-28 10:55:04

預熱高并發并發高

2010-04-27 09:17:23

內存屏障JVM

2020-04-21 22:18:20

MESI內存CPU

2025-03-10 10:00:00

Ollama高并發

2020-08-18 13:50:04

Tomcat高并發Java

2021-02-26 13:08:27

Java高并發AQS

2018-12-18 14:08:01

Java內存volatile

2021-11-26 00:00:48

JVM內存區域

2017-02-20 07:47:04

緩存HASH高并發

2018-09-15 04:59:01

2021-05-14 14:52:59

高并發TPSQPS

2023-12-08 18:01:25

Java關鍵字

2010-02-03 14:10:28

C++內存邏輯區域
點贊
收藏

51CTO技術棧公眾號

成人爽a毛片免费啪啪| 97在线公开视频| 亚洲精品动态| 欧美色区777第一页| 四虎免费在线观看视频| 天堂国产一区二区三区| 三级在线观看一区二区| 久久精品国产v日韩v亚洲| 色欲欲www成人网站| 国产精品迅雷| 亚洲欧美偷拍卡通变态| 精品综合在线| 国产女人高潮毛片| 久久国产精品久久久久久电车| 日韩在线中文字| 91丝袜在线观看| 福利一区在线| 精品久久久久久中文字幕一区奶水| 亚洲成人午夜在线| 天天摸天天碰天天爽天天弄| 蜜桃免费网站一区二区三区| 久久久久久亚洲精品| 欧美亚洲色综久久精品国产| 999在线精品| 欧美日韩亚洲综合在线 | 精品国产91久久久久久| 一区二区三区av在线| 日韩永久免费视频| 国产一区中文字幕| 国产精品入口尤物| 亚洲免费黄色网址| 精品电影一区| 久久国产精品偷| 少妇太紧太爽又黄又硬又爽小说| 激情小说一区| 精品久久久久久久久久久院品网| 人人干人人干人人| 亚洲综合在线电影| 精品久久久久久久久久久久久| 国产午夜精品视频一区二区三区| 尤物网址在线观看| 国产午夜一区二区三区| 久久国产精品 国产精品| 精品久久国产视频| 狠狠色2019综合网| 国产日韩中文字幕| 在线观看中文字幕码| 玖玖玖国产精品| 国产a∨精品一区二区三区不卡| 日韩精品手机在线| 国产婷婷精品| 欧美亚洲一级片| 日韩免费视频一区二区视频在线观看| 国产综合精品| 欧美韩国理论所午夜片917电影| 日日噜噜夜夜狠狠久久波多野| 日韩在线观看一区| 中文字幕v亚洲ⅴv天堂| 欧美福利在线视频| 久久大综合网| 久久艳片www.17c.com| 三上悠亚在线观看视频| 99精品在线| 欧美成aaa人片免费看| 日韩激情综合网| 中文字幕日韩一区二区不卡| 欧美另类交人妖| 久草视频在线免费看| 精品动漫3d一区二区三区免费版| 欧美激情精品久久久久久免费印度| 黄色一级片在线| 精品91久久久久| 2018日韩中文字幕| 国产女主播喷水视频在线观看| 老牛嫩草一区二区三区日本| 国产精品嫩草影院久久久| 一区二区日韩视频| 国产乱理伦片在线观看夜一区| 99久久免费国| 亚洲av成人精品一区二区三区在线播放| kk眼镜猥琐国模调教系列一区二区| 国产一区二区三区黄| 理论视频在线| 国产精品麻豆视频| 欧美黄网在线观看| 日韩影院在线| 欧美日韩精品电影| 美国黄色一级视频| 国产成人一区二区三区影院| 日韩小视频在线| 久久久久久蜜桃| 日韩国产在线一| 96精品久久久久中文字幕| 日本黄视频在线观看| 久久在线观看免费| 国产福利片一区二区| 8x8ⅹ拨牐拨牐拨牐在线观看| 一道本成人在线| 五月六月丁香婷婷| 色天下一区二区三区| www国产91| 天堂中文字幕在线观看| 激情综合色播激情啊| 久久久精品有限公司| 免费av网站在线观看| 五月婷婷久久综合| 狠狠操狠狠干视频| 日韩av网址大全| 久热精品视频在线观看| 丰满人妻老熟妇伦人精品| 久久精品国产**网站演员| 国产视色精品亚洲一区二区| 98在线视频| 黄网动漫久久久| www.久久久久久久久久久| 婷婷五月色综合香五月| 欧美成人亚洲成人| 中文字幕永久在线观看| 久久综合色之久久综合| 久操手机在线视频| 欧美一区二区三区婷婷| 精品五月天久久| 国产无套在线观看| 国产主播一区二区| 亚洲永久激情精品| 新片速递亚洲合集欧美合集| 日韩精品一区二区三区在线 | 蜜桃av中文字幕| 国产精品网站导航| 国产精品亚洲αv天堂无码| 天堂va欧美ⅴa亚洲va一国产| 国产一区二区三区视频在线观看| 国产无码精品视频| 国产精品一区二区久久不卡| 亚洲在线视频一区二区| 欧美福利在线播放| 亚洲网站在线看| 国产精品久久久久久久久久久久久久久久久 | 伦理片一区二区| 欧美女激情福利| 亚洲最大福利视频| 免费av在线网站| 在线播放/欧美激情| 山东少妇露脸刺激对白在线| 性欧美xxxx大乳国产app| 久久国产精品99久久久久久丝袜| 国产啊啊啊视频在线观看| 欧美一区二区三区成人| 潘金莲一级黄色片| 久久99精品国产麻豆婷婷| 午夜精品视频在线观看一区二区| 伊人久久视频| 亚洲男人的天堂在线| 丰满少妇xoxoxo视频| 久久只精品国产| 岛国大片在线播放| 成人看片黄a免费看视频| 久久乐国产精品| 天堂在线观看av| 欧美日韩在线视频首页| 日本一级片在线播放| 亚洲欧美日韩国产综合精品二区| 久久亚洲国产精品日日av夜夜| 国产精品蜜芽在线观看| 日韩成人在线网站| 国产熟妇一区二区三区四区| 久久青草国产手机看片福利盒子 | 精品无码久久久久久久| av网站免费线看精品| 青青草原av在线播放| 国产一区二区三区四区五区传媒| 国产精品久久久久久久电影| 毛片网站在线免费观看| 91精品麻豆日日躁夜夜躁| 久草成人在线视频| 91免费观看在线| 亚洲狼人综合干| 中文字幕日韩欧美精品高清在线| 国产经典一区二区三区 | 欧美 日韩 国产 一区| 国产99视频精品免费视频36| 日本а中文在线天堂| 中文字幕日韩视频| 国产黄色av片| 色综合天天狠狠| 麻豆网址在线观看| 粉嫩绯色av一区二区在线观看| 日本www在线播放| 日韩欧美午夜| 国内精品二区| 久久人人视频| 亚洲91av视频| 美女写真理伦片在线看| 精品av综合导航| 中文无码精品一区二区三区| 一区二区三区在线播放| 30一40一50老女人毛片| 激情久久五月天| 激情五月开心婷婷| 欧美人成在线| 亚洲精品中文综合第一页| 高潮按摩久久久久久av免费| 国产精品久久久久久影视| 蜜臀av在线| 在线视频国产日韩| 视频一区二区免费| 欧美精品1区2区3区| 日韩精品久久久久久久酒店| 一区在线中文字幕| 国产人妻大战黑人20p| 成人黄色网址在线观看| 色一情一区二区| 另类av一区二区| 黄色成人在线看| 欧美~级网站不卡| 亚洲 日韩 国产第一区| 国产极品模特精品一二| 成人午夜高潮视频| 视频在线日韩| 欧美中文字幕在线观看| 五月花成人网| 丝袜亚洲另类欧美重口| 日本啊v在线| 亚洲成人精品久久久| 国产强伦人妻毛片| 欧美日韩亚州综合| 人人妻人人爽人人澡人人精品| 亚洲成av人影院| 福利所第一导航| 国产精品不卡在线| 久久婷婷五月综合| 久久久一区二区三区捆绑**| 人妻互换一二三区激情视频| 老司机午夜精品| 国产wwwxx| 视频一区欧美精品| 日本精品一区在线观看| 一区二区三区福利| 极品粉嫩国产18尤物| 国产精品v欧美精品v日本精品动漫| 中文字幕日韩精品一区二区| 日韩免费在线| 杨幂一区欧美专区| 日韩专区精品| 自拍偷拍一区二区三区| 国产精品二区不卡| 最新国产精品久久| 亚洲一区 二区 三区| 天天爱天天做天天操| 亚洲自拍偷拍网| 99久热在线精品视频| 国内精品99| 欧美精品久久久久久久自慰 | 91高清视频在线免费观看| 91超碰在线| 欧美一级高清免费| 亚洲精品.com| 国产精自产拍久久久久久| 国产美女久久| 国产日韩精品在线播放| 国产视频一区二区在线播放| 亚洲精品日韩激情在线电影| 久久久久亚洲精品中文字幕| 亚洲综合av影视| 国产一区二区在线视频你懂的| 国内精品视频免费| 国产成人手机高清在线观看网站| 亚洲欧洲免费无码| 午夜片欧美伦| 男女激情免费视频| 久久久久久久高潮| 天天综合网久久| 国产成人亚洲综合色影视| 一起草在线视频| 国产视频一区在线播放| 亚洲女人久久久| 亚洲国产精品一区二区久久恐怖片 | 亚洲成av人**亚洲成av**| 日韩精品手机在线| 欧美日韩精品一二三区| 成人高潮片免费视频| 日韩第一页在线| 在线激情小视频| 久久久久久久久久久国产| 综合久久2023| 国产欧美va欧美va香蕉在线| 日韩欧美另类中文字幕| 韩国精品一区二区三区六区色诱| 中国av一区| 国产一二三四区在线观看| 99在线精品免费视频九九视| 波多野结衣天堂| 国产成人精品一区二区三区网站观看| 丰满少妇一区二区三区| 国产精品国产精品国产专区不蜜| 久草成人在线视频| 精品视频1区2区3区| 黄色av免费观看| 最近2019中文免费高清视频观看www99| 伊人春色在线观看| 国产精品91免费在线| 99精品国产高清一区二区麻豆| 欧美人xxxxx| 狠狠噜噜久久| 五月婷婷之婷婷| 久久人人97超碰com| 久久高清无码视频| 欧美视频一二三区| 午夜福利理论片在线观看| 久久精品久久精品亚洲人| 中文在线а√在线8| 91精品黄色| 欧美超碰在线| 日本在线观看a| 成人高清视频在线观看| 久久噜噜色综合一区二区| 欧美日韩在线一区| 少妇无码一区二区三区| 久久成年人免费电影| 国产第一精品| 蜜桃免费一区二区三区| 在线国产欧美| 日本少妇激三级做爰在线| 久久久精品综合| 日韩女优在线观看| 日韩午夜三级在线| 久操视频在线| 国产区精品视频| 欧美日韩国产高清电影| 欧美 日韩 国产一区| 97超碰欧美中文字幕| 久久高清无码视频| 欧美成人精品二区三区99精品| 黄色的网站在线观看| 国产精品一区二区性色av| 国产精品视频一区二区三区四蜜臂| 日韩免费一级视频| 99久久久精品| 全部毛片永久免费看| 亚洲电影免费观看高清完整版在线| 制服丝袜在线播放| 亚洲综合社区网| 综合久久久久| 亚洲国产欧美91| 一区二区三区资源| www.黄色小说.com| 欧美激情视频网站| 哺乳一区二区三区中文视频| a级黄色片免费| 成人免费视频视频| 日韩免费黄色片| 精品偷拍各种wc美女嘘嘘| 中国字幕a在线看韩国电影| 免费在线观看一区二区| 久久久噜噜噜久久狠狠50岁| 成人性生交大免费看| 欧美在线观看视频一区二区三区 | 欧美成人精品激情在线观看 | 亚洲私拍视频| 欧洲在线视频一区| 日本成人在线一区| 性生交大片免费全黄| 日韩欧美一二三四区| 999av小视频在线| 美脚丝袜一区二区三区在线观看| 久久精品1区| 精品视频第一页| 日韩精品一区二区三区三区免费 | 中文在线日韩| 国产xxxxxxxxx| 日本福利一区二区| 国产精品刘玥久久一区| 动漫一区二区在线| 欧美专区18| 日韩欧美视频免费观看| 日韩视频免费直播| 天堂电影一区| 一级做a爰片久久| 成人精品高清在线| 人妻中文字幕一区二区三区| 久久精品国产69国产精品亚洲| av动漫精品一区二区| 国产性xxxx18免费观看视频| 国产精品美日韩| 六月婷婷综合网| 国产精品青草久久久久福利99| 自拍偷拍欧美专区| mm131美女视频| 欧美一区二区二区| 久九九久频精品短视频| 吴梦梦av在线| 2021久久国产精品不只是精品| 一级特黄色大片| 欧美又大粗又爽又黄大片视频| 999成人网| 日本黄色网址大全| 欧美一级电影网站| 992tv国产精品成人影院| 日本人体一区二区| 亚洲欧洲色图综合|