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

終生求職之 ArrayList 篇

開發 后端
ArrayList構造函數,除非賦值,否則初始化后內部數組都是空數組,而第一次擴容則發生在添加元素的時候。

[[439233]]

本文轉載自微信公眾號「稀飯下雪」,作者帥氣的小飯飯 。轉載本文請聯系稀飯下雪公眾號。

最近又到了適合交配的季節了,不對,跳槽的季節了,發現好多之前看的知識點都忘記了,為此我做了面壁思過,最終總結如下。

問題的根本:

  • 不是不懂,而是記不住。
  • 一次性了解的東西可能不夠深入。

針對這兩種情況,解決方案也不難:

  • 每隔一段時間都要重新看回以前的東西,加深記憶力
  • 一次性了解的不夠深入,那就多來幾次,然后加上備忘錄

為此,我定了一個終生求職計劃

終生求職是一種狀態,讓自己一直保持隨時可以面試的狀態,目前行業越來越卷,這種狀態很有必要

我這邊預計是每兩個月都會回顧一次筆記,然后不定期發文章。

好了,接下來繼續聊聊 ArrayList。

ArrayList參數和構造函數

  1. // 存儲數組元素的緩沖區 
  2. transient Object[] elementData; 
  3. // 默認空數組元素 
  4. private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 
  5. // 默認初始化容量 
  6. private static final int DEFAULT_CAPACITY = 10; 
  7. // 數組的大小 
  8. private int size
  9. // 記錄被修改的次數 
  10. protected transient int modCount = 0; 
  11. // 數組的最大值 
  12. private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8 

底層ArrayList使用數組實現

構造函數的幾種情況:

  • 空構造函數
  1. public ArrayList() { 
  2.     this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; // 空數組 
  • 有參構造函數
  1. public ArrayList(int initialCapacity) { 
  2.     if (initialCapacity > 0) { 
  3.         this.elementData = new Object[initialCapacity]; // 數組的大小為參數的大小 
  4.     } else if (initialCapacity == 0) { 
  5.         this.elementData = EMPTY_ELEMENTDATA; // 空數組 
  6.     } else { 
  7.         throw new IllegalArgumentException("Illegal Capacity: "
  8.                                            initialCapacity); 
  9.     } 

Collection轉Arraylist

  1. public ArrayList(Collection<? extends E> c) { 
  2.     elementData = c.toArray(); 
  3.     if ((size = elementData.length) != 0) { 
  4.         // c.toArray might (incorrectly) not return Object[] (see 6260652) 
  5.         if (elementData.getClass() != Object[].class) 
  6.             elementData = Arrays.copyOf(elementData, size, Object[].class); 
  7.     } else { 
  8.         // replace with empty array. 
  9.         this.elementData = EMPTY_ELEMENTDATA; 
  10.     } 

參數collection個數不為0的直接轉成Arraylist,但是用的是system.copy

202112留言: ArrayList構造函數,除非賦值,否則初始化后內部數組都是空數組,而第一次擴容則發生在添加元素的時候。

ArrayList添加元素與擴容

ArrayList.add(E e)源碼:

可以看到底層使用的是System.arraycopy,而這個copy的過程是比較耗性能的,因此建議初始化時預估一個容量大小。

202112留言: 用無參構造函數創建ArrayList后進行第一次擴容容量是10,后續則是1.5倍,底層調用的是System.arraycopy,而這個copy的過程是比較耗性能的,因此建議初始化時預估一個容量大小。

ArrayList刪除元素

ArrayList提供兩種刪除元素的方法,可以通過索引和元素進行刪除。兩種刪除大同小異,刪除元素后,將后面的元素一次向前移動。

ArrayList.remove(int index)源碼:

  1. public E remove(int index) { 
  2.     rangeCheck(index); 
  3.  
  4.     modCount++; 
  5.     E oldValue = elementData(index); 
  6.  
  7.     int numMoved = size - index - 1; 
  8.     if (numMoved > 0) 
  9.         System.arraycopy(elementData, index+1, elementData, index
  10.                          numMoved); 
  11.     elementData[--size] = null; // clear to let GC do its work 
  12.  
  13.     return oldValue; 

刪除元素時,首先會判斷索引是否大于ArrayList的大小,如果索引范圍正確,則將索引位置的下一個元素賦值到索引位置,將ArrayList的大小-1,最后返回移除的元素。

這里也可以看到modCount++,正如前面所說,就是為了做并發處理,不允許其他線程在這個的同時做修改,同時也不允許自身線程在同時遍歷修改。

elementData[--size] = null;可以看到,就是將最后一個值置空,方便GC掉。

202112備注: 刪除后底層調用的依舊是System.arraycopy,而這個copy的過程是比較耗性能的,因此才說頻繁增刪的盡量別用ArrayList。

ArrayList遍歷

  1. @Override 
  2. public void forEach(Consumer<? super E> action) { 
  3.     Objects.requireNonNull(action); 
  4.     // 預設值了一個expectedModCount值 
  5.     final int expectedModCount = modCount; 
  6.     @SuppressWarnings("unchecked"
  7.     final E[] elementData = (E[]) this.elementData; 
  8.     final int size = this.size
  9.     // 遍歷過程中拿出來判斷 
  10.     for (int i=0; modCount == expectedModCount && i < size; i++) { 
  11.         action.accept(elementData[i]); 
  12.     } 
  13.     // 如果對不上則報錯 
  14.     if (modCount != expectedModCount) { 
  15.         throw new ConcurrentModificationException(); 
  16.     } 

從代碼就可以看出來了,在遍歷的時候會率先 預設值了一個expectedModCount值,然后再遍歷拿出來判斷,如果不一樣了,則中斷流程并且報錯,而這個過程則涉及到了快速失敗機制了,正常來說,ArrayList不允許遍歷刪除。

202112備注: ArrayList通過預設值expectedModCount實現了快速失敗機制,避免了多線程遍歷刪除或者增加,以及遍歷過程中增刪元素。

集合的快速失敗(fail-fast)

它是 Java 集合的一種錯誤檢測機制,當多個線程對集合進行結構上的改變操作時,有可能會產生 fail-fast 機制。

迭代器在遍歷時直接訪問集合中的內容,并且在遍歷過程中使用一個 modCount 變量。

集合在被遍歷期間如果內容發生變化,就會改變modCount的值。

每當迭代器使用hashNext()/next()遍歷下一個元素之前,都會檢測modCount變量是否為expectedmodCount值,是的話就返回遍歷;否則拋出異常,終止遍歷。

注意:這里異常的拋出條件是檢測到 modCount!=expectedmodCount 這個條件。

如果集合發生變化時修改modCount值剛好又設置為了expectedmodCount值,則異常不會拋出。

因此,不能依賴于這個異常是否拋出而進行并發操作的編程,這個異常只建議用于檢測并發修改的bug。

場景:java.util包下的集合類都是快速失敗的,不能在多線程下發生并發修改(迭代過程中被修改)。

202112備注: 我們日常看到的Concurrent Modification Exception,其實就是觸發了快速失敗機制的表現,做法也很簡單:

在遍歷的時候給你給modCount設置個備份expectedModCount,如果有多線程在搞,那么必定會導致modCount被改,那么就容易了,每次遍歷的時候都檢測下modCount變量是否為expectedModCount就可以了,如果不是意味著被改了,那我就不管,我就要報錯。

集合的安全失敗(fail-safe)

采用安全失敗機制的集合容器,在遍歷時不是直接在集合內容上訪問的,而是先復制原有集合內容,在拷貝的集合上進行遍歷。

原理:由于迭代時是對原集合的拷貝進行遍歷,所以在遍歷過程中對原集合所作的修改并不能被迭代器檢測到,所以不會觸發Concurrent Modification Exception。

缺點:基于拷貝內容的優點是避免了Concurrent Modification Exception,但同樣地,迭代器并不能訪問到修改后的內容,即:迭代器遍歷的是開始遍歷那一刻拿到的集合拷貝,在遍歷期間原集合發生的修改迭代器是不知道的。

場景:java.util.concurrent包下的容器都是安全失敗,可以在多線程下并發使用,并發修改。

202112備注: 那么為啥并發容器的時候不怕呢?簡單,因為采用了安全失敗機制,在遍歷的時候直接拷貝了一份出來,這樣就不會觸發了。

使用ArrayList的subList()需要注意的地方

  1. public List<E> subList(int fromIndex, int toIndex) { 
  2.         subListRangeCheck(fromIndex, toIndex, size); 
  3.         return new SubList(this, 0, fromIndex, toIndex); 
  1. SubList(AbstractList<E> parent,int offset,int fromIndex,int toIndex) { 
  2.             this.parent = parent; 
  3.             this.parentOffset = fromIndex; 
  4.             this.offset = offset + fromIndex; 
  5.             this.size = toIndex - fromIndex; 
  6.             this.modCount = ArrayList.this.modCount; 

subList()返回結果不可強制轉為ArrayList類型,因為該方法實質是創建一個內部類SubList實例,這個SubList是AbstractList的實現類,并不繼承于ArrayList。

通過上面源碼可以看出,通過parent屬性指定父類并直接引用了原有的List,并返回該父類的部分視圖,只是指定了他要使用的元素的范圍fromIndex(包含),endIndex(不包含)。

那么,如果對其原有或者子List做數據性修改,則會互相影響。如果對原有List進行結構性修改,則會踩坑Fast-fail,報錯會拋出異常ConcurrentModification Exception。

202112備注: XList.subList()不能當作ArrayList來使用,但是內部其實是引用了實際上XList的部分元素,所以如果引用內的對象被改,也會直接影響XList。

ArrayList迭代器

看下迭代器的遍歷和刪除相關的源碼

  1. public boolean hasNext() { 
  2.     return cursor != size
  3.  
  4. @SuppressWarnings("unchecked"
  5. public E next() { 
  6.     // 同樣判斷modCount != expectedModCount,不同則報錯 
  7.     checkForComodification(); 
  8.     int i = cursor
  9.     if (i >= size
  10.         throw new NoSuchElementException(); 
  11.     Object[] elementData = ArrayList.this.elementData; 
  12.     if (i >= elementData.length) 
  13.         throw new ConcurrentModificationException(); 
  14.     cursor = i + 1; 
  15.     return (E) elementData[lastRet = i]; 
  16.  
  17. public void remove() { 
  18.     if (lastRet < 0) 
  19.         throw new IllegalStateException(); 
  20.     checkForComodification(); 
  21.  
  22.     try { 
  23.         ArrayList.this.remove(lastRet); 
  24.         cursor = lastRet; 
  25.         lastRet = -1; 
  26.         // 這里刪除后會重新復制一次 
  27.         expectedModCount = modCount; 
  28.     } catch (IndexOutOfBoundsException ex) { 
  29.         throw new ConcurrentModificationException(); 
  30.     } 

202112備注: 為什么ArrayList的迭代器是支持遍歷刪除的,原因很簡單,因為在刪除后會重新賦一次值給expectedModCount。

ArrayList和LinkedList的優劣

其實就是數組和鏈表的優劣勢,ArrayList優點,支持隨機訪問,get(i)的時間復雜度為O(1),而缺點就是需要擴容,要復制數組,而且內部插入數據需要移動數據,插入刪除的性能差;

對于LinkedList來說,優點就是容量理論上來說是無限,不存在擴容,而且可以很方便的插入和刪除數據(性能損失在查找),而缺點就是不能隨機訪問,get(i)需要遍歷。

貌似就是反過來的,所以在實際開發中也很容易區別,看是查找頻繁、還是增刪頻繁,如果是查找頻繁就用ArrayList,如果增刪頻繁就用LinkedList即可。

202112備注: :ArrayList和LinkedList的優劣可以從數組和鏈表的結構上來回答,額外補充擴容問題,再回答索引查找頻繁還是增刪頻繁。

原文鏈接:https://mp.weixin.qq.com/s/QEzHmLNj-uUytOsikpBf7g

 

責任編輯:武曉燕 來源: 稀飯下雪
相關推薦

2021-06-11 07:52:19

網絡分層協議

2012-02-22 14:14:43

Java

2010-05-25 10:41:57

求職簡歷

2011-02-25 10:36:12

Proftpd

2011-02-25 10:25:07

Proftpd

2009-03-16 09:39:01

函數詞法作用域Javascript

2019-05-16 15:35:36

2010-11-16 10:51:55

求職

2021-09-06 06:45:06

Webpack優化MindMaster

2014-06-09 14:18:24

2014-09-01 10:36:35

個推推送

2009-11-06 16:48:03

WCF簡介

2011-03-02 14:07:24

Pureftpd

2014-08-01 14:01:28

Android UI

2021-09-06 06:45:06

WebpackMindMasterEntry

2018-03-12 13:32:02

編程語言程序員語言

2010-07-19 15:49:22

求職陷阱

2022-03-01 13:55:27

TektonKubernetes集群

2022-08-15 08:00:00

物聯網智慧城市停車場

2020-03-31 10:18:57

網絡命令kalilinux
點贊
收藏

51CTO技術棧公眾號

久久看人人爽人人| 亚洲国内自拍| 91精品国产91久久久久久一区二区 | 日本肉肉一区| 亚洲综合在线免费观看| 美女主播视频一区| 国产精品一级视频| 宅男噜噜噜66国产日韩在线观看| 亚洲一区www| 亚洲精品乱码久久久久久蜜桃欧美| 久九九久频精品短视频| 日韩一区中文字幕| 欧美日韩一区综合| 国产成人精品无码高潮| 国产黄色免费观看| 大桥未久在线视频| 一区在线观看免费| 欧美亚洲爱爱另类综合| 国产强伦人妻毛片| 日本免费新一区视频| 欧美高清视频免费观看| 在线观看免费小视频| 国产精品自在| 日韩午夜激情av| 一道本视频在线观看| 蜜桃视频在线网站| 一区二区三区蜜桃网| 亚洲国产婷婷香蕉久久久久久99| 欧美综合视频在线| 国产精品 欧美精品| 国产美女精彩久久| 波多野结衣高清在线| 亚洲国产国产亚洲一二三| 久久夜精品香蕉| 手机毛片在线观看| 久久91精品| 亚洲精品综合久久中文字幕| 天堂www中文在线资源| 国产精品色婷婷在线观看| 91成人国产精品| 国产精品-区区久久久狼| 大香伊人久久| 亚洲午夜电影在线| 日韩精品久久一区二区| а√天堂资源地址在线下载| 国产精品久久久久永久免费观看 | 黄色成人在线播放| 欧美一区二区激情| 国产福利视频在线| 亚洲免费在线看| 在线观看av的网址| 亚洲色图美国十次| 亚洲精品高清在线| 国产免费裸体视频| 男人天堂亚洲天堂| 亚洲午夜久久久久久久久电影院 | 日韩免费高清一区二区| 粉嫩av国产一区二区三区| 欧美视频在线观看一区| 欧美黄色性生活| 久久国产三级| 欧美狂野另类xxxxoooo| www.欧美激情.com| 日本一区影院| 亚洲成人精品久久久| 中出视频在线观看| 亚洲伊人春色| 中文字幕日韩欧美在线 | 一区二区三区成人在线视频| 91传媒免费视频| 福利小视频在线| 天天免费综合色| 男人插女人下面免费视频| 久久伊人国产| 日韩欧美成人激情| 亚洲调教欧美在线| 精品日韩一区| 久久亚洲国产精品| 国产精品成人国产乱| 亚洲欧美卡通另类91av| 国产精品一区久久| 国产黄色片免费观看| 成人黄色大片在线观看| 欧美xxxx黑人又粗又长密月| 自拍视频在线播放| 一区二区三区欧美日| 波多野结衣50连登视频| 黄色成人小视频| 欧美精品一区二区三区在线播放| 深爱五月激情网| 亚洲精品午夜av福利久久蜜桃| 欧美激情第1页| 中文字幕在线天堂| 国产精品一二一区| 牛人盗摄一区二区三区视频| 日本不卡不卡| 精品久久久国产精品999| 五月婷婷之综合激情| 中文字幕一区日韩精品| 国产一区二区三区在线| 欧美黑人一级片| 久热综合在线亚洲精品| 99re国产| 日韩久久久久久久| 亚洲第一区av| 丁香啪啪综合成人亚洲小说| 日韩在线第一区| 爱情岛亚洲播放路线| 欧美美女黄视频| 狠狠人妻久久久久久综合蜜桃| 小小影院久久| 日本精品视频在线| 亚洲国产www| 国产精品网站一区| 国产精品丝袜久久久久久消防器材| 日韩国产一二三区| 亚洲欧美日韩中文在线| 久久久久噜噜噜亚洲熟女综合| 免费亚洲电影在线| 久久精品女人的天堂av| 免费在线国产视频| 在线不卡免费av| 久久久久久国产免费a片| 99国产精品| 成人综合色站| 成人日韩欧美| 欧美日韩国产电影| 在线国产视频一区| 国产精品视频| 国产伦精品一区二区三区在线 | 亚洲精品国产一区二区三区| 久草精品在线| 日本中文字幕久久看| 手机看片一区二区| 亚洲国产cao| 自拍视频第一页| 自拍日韩欧美| 91亚洲一区精品| 久操免费在线| 在线成人小视频| 黑人操日本美女| 麻豆国产一区二区| 一区二区三区视频| 欧洲亚洲精品久久久久| 中文字幕精品国产| 中文字幕在线播放不卡| 亚洲国产精品t66y| 亚洲欧美自拍另类日韩| 四虎成人av| 国产在线拍偷自揄拍精品| 91美女视频在线| 亚洲欧洲日本韩国| 亚洲成a天堂v人片| 蜜桃视频无码区在线观看| 亚洲精品一区二区妖精| 91亚洲国产精品| 日本aa在线| 精品奇米国产一区二区三区| 国产精品变态另类虐交| av不卡在线观看| 欧美性大战久久久久xxx| 欧美一级色片| 国产99久久久欧美黑人 | 中文字幕在线播放日韩| 国产精品看片你懂得 | 成人av在线资源| 性欧美大战久久久久久久| 久久动漫网址| 国产成人精品视频在线| 欧美激情二区| 影视亚洲一区二区三区| 日韩欧美中文字幕在线观看| 草草影院第一页| 日韩成人一区二区三区在线观看| 亚洲图片在线观看| 亚洲第一二区| 国产91ⅴ在线精品免费观看| 成人动漫在线播放| 欧美一区二区三区日韩| 精品处破女学生| 久久综合久久99| 日本中文字幕精品—区二区| 欧美福利一区| 久久久久se| 激情久久99| 国产综合在线看| 成人一区二区不卡免费| 欧美一二三在线| 日韩欧美三级视频| 国产精品久久久久aaaa樱花 | 久久久91精品国产一区二区精品| 国产又黄又猛又粗又爽的视频| 欧美淫片网站| 欧美三级网色| 91精品久久久久久综合五月天| 日韩美女av在线免费观看| 麻豆tv入口在线看| 亚洲理论在线a中文字幕| 97久久人国产精品婷婷 | 曰批又黄又爽免费视频| 亚洲另类在线视频| 少妇无套高潮一二三区| 高清不卡一区二区在线| 亚洲老女人av| 亚洲美女黄色| 五月天在线免费视频| 亚洲理论电影| 99理论电影网| 亚洲一区二区三区久久久| 欧洲成人性视频| 第四色日韩影片| 久热99视频在线观看| 精品久久av| 亚洲国产精品大全| 国产精品主播一区二区| 91国产免费看| av资源免费观看| 一级中文字幕一区二区| 熟女少妇a性色生活片毛片| 久久综合九色综合欧美98| 亚洲成人精品在线播放| 蜜桃视频第一区免费观看| 国产午夜大地久久| 亚洲性色视频| a级黄色片免费| 91成人网在线观看| 亚洲欧洲日夜超级视频| 天堂一区二区三区四区| 狠狠色噜噜狠狠狠狠色吗综合| 韩国一区二区三区视频| 国产精品夜色7777狼人| 国产 日韩 欧美一区| 欧美一级在线亚洲天堂| 草草影院在线| 久久久久久久香蕉网| 色呦呦视频在线观看| 久久精品国产精品| 午夜在线视频| 色av中文字幕一区| 成年网站在线| 色999日韩欧美国产| 五月天婷婷在线视频| 日韩中文字幕在线看| av大片在线播放| 日韩在线观看你懂的| 在线日本视频| 日韩一区二区欧美| 色网站在线看| 精品国内产的精品视频在线观看| www.亚洲免费| www.久久色.com| 黄色网页在线免费观看| 久久高清视频免费| av毛片在线免费| 色综合老司机第九色激情 | 亚洲一区欧美一区| 国产一级在线观看视频| 天天操天天干天天综合网| 精品国产乱码一区二区| 亚洲成人午夜电影| 特一级黄色大片| 在线日韩国产精品| 中文字幕人妻一区二区在线视频 | 亚洲欧美高清视频| 亚洲国产精品va在看黑人| 性xxxx视频| 国产亚洲欧美日韩美女| 久热国产在线| 欧美激情亚洲国产| av高清不卡| 国产欧美精品日韩| 日韩精品三级| 明星裸体视频一区二区| 日韩午夜电影网| 欧美a级免费视频| 午夜在线精品偷拍| 日韩不卡一二三| 国产91精品在线观看| 中文人妻一区二区三区| 国产精品美女久久久久av爽李琼 | 3d精品h动漫啪啪一区二区| 亚洲一区二区电影| 欧美亚洲丝袜| 午夜日韩在线| 日本中文字幕片| 国产综合一区二区| 东京热av一区| 国产精品美日韩| 国产精品7777777| 欧美三级日本三级少妇99| 99国产精品欲| 精品一区二区三区四区| 视频免费一区| 午夜精品在线视频| 欧美黄页免费| 快播亚洲色图| 重囗味另类老妇506070| 日本va中文字幕| 国产凹凸在线观看一区二区| 妺妺窝人体色WWW精品| 亚洲另类一区二区| 亚洲国产精品无码久久久| 日韩欧美激情四射| 成人免费黄色网页| 韩日欧美一区二区| www.久久99| 日韩妆和欧美的一区二区| 欧美日韩精品一本二本三本 | 成人app下载| 欧美手机在线观看| 色www精品视频在线观看| www.久久久久久| 夜夜嗨av色综合久久久综合网 | 国产精品日韩专区| 开心激情综合| 国产成a人亚洲精v品在线观看| 美女一区二区久久| 久久精品一区二区免费播放| 一区二区久久久久久| 国产精品一区二区黑人巨大 | 国产三级aaa| 日本高清成人免费播放| 天堂国产一区二区三区| 欧美精品在线网站| 婷婷久久免费视频| 性欧美精品一区二区三区在线播放 | www.五月婷婷.com| 日韩成人中文字幕| 高清电影在线观看免费| 99c视频在线| 午夜久久黄色| 免费观看黄网站| 久久久不卡影院| 亚洲影院在线播放| 日韩av综合网| 涩涩av在线| 久久精品第九区免费观看| 亚洲精品国产日韩| 成人区人妻精品一区二| 亚洲不卡一区二区三区| 亚洲欧美激情另类| 久久久噜噜噜久久中文字免| 成人资源在线播放| 日韩一级片免费视频| 国产xxx精品视频大全| 免费在线视频观看| 日韩美女一区二区三区四区| 欧美6一10sex性hd| 国产98在线|日韩| 国产一区亚洲| 香蕉视频污视频| 欧美日韩亚洲系列| 人人妻人人澡人人爽久久av| 97久久久久久| 亚洲婷婷丁香| 国产性生交xxxxx免费| 国产欧美一区二区精品忘忧草| 欧美另类高清videos的特点| 日韩中文字幕网址| 午夜精品在线| 国产在线精品91| 久久精品人人做人人爽人人| 欧美日韩 一区二区三区| 中文字幕日韩电影| 欧美一区在线观看视频| 欧美激情 国产精品| 国产人久久人人人人爽| 一级片一区二区三区| 欧美成人性生活| 免费成人三级| 色免费在线视频| 亚洲激情图片一区| 五月婷婷伊人网| 国产精品视频精品| 欧美成熟视频| 男生草女生视频| 欧美丰满高潮xxxx喷水动漫| 色帝国亚洲欧美在线| 精品在线一区| 久久99蜜桃精品| 国产精品美女毛片真酒店| 亚洲男人的天堂网站| 日本久久久久| 5月婷婷6月丁香| 国产精品成人免费在线| 欧美一级淫片免费视频魅影视频| 日韩av第一页| 亚洲欧美文学| 中文字幕一区二区三区人妻电影| 欧美日韩精品三区| freexxx性亚洲精品| 亚洲ai欧洲av| 成人av中文字幕| 国产精品爽爽久久久久久| 91国偷自产一区二区三区的观看方式 | 欧美一级日韩不卡播放免费| 欧美久久天堂| 路边理发店露脸熟妇泻火| 久久久久久久久久久久久女国产乱| 99久久免费国产精精品|