久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Java 手寫LRU緩存淘汰算法

瀏覽:4日期:2022-08-11 16:11:59
目錄概述LRU 的原理LRU 算法的實現LRU 算法描述LRU 算法代碼實現方法一方法二方法三總結概述

LRU 算法全稱為 Least Recently Used 是一種常見的頁面緩存淘汰算法,當緩存空間達到達到預設空間的情況下會刪除那些最久沒有被使用的數據 。

常見的頁面緩存淘汰算法主要有一下幾種:

LRU 最近最久未使用 FIFO 先進先出置換算法 類似隊列 OPT 最佳置換算法 (理想中存在的) NRU Clock 置換算法 LFU 最少使用置換算法 PBA 頁面緩沖算法 LRU 的原理

LRU 算法的設計原理其實就是計算機的 局部性原理(這個 局部性原理 包含了 空間局部性 和 時間局部性 兩種策略)。LRU 算法主要是依據 時間局部性策略 來設計的。

這個策略簡單來說就是,如果一個數據被訪問了,那么在短時間內它還會被訪問。

Java 手寫LRU緩存淘汰算法

同樣的,針對一個緩存數據,如果其使用的時間越近,那么它被再次使用的概率就越大,反之一個緩存數據如果很長時間未被使用,那它會被再次使用的概率就會很小。因而當緩存空間不足時,我們優先刪除最久未被使用的緩存數據,進而提高緩存命中率。

LRU 算法的實現LRU 算法描述

緩存在使用時,核心 API 有兩個:

int get(int key) 如果關鍵字 key 存在于緩存中,則返回關鍵字的值,否則返回 -1 。 void put(int key, int value) 如果關鍵字已經存在,則變更其數據值;如果關鍵字不存在,則插入該組「關鍵字-值」。當緩存容量達到上限時,它應該在寫入新數據之前刪除最久未使用的數據值,從而為新的數據值留出空間。

具體使用的例子如下:

//初始化一個緩存,并將緩存空間設置為2LRUCache cache = new LRUCache(2);cache.put(1,1); // cache = [(1,1)]cache.put(2,2); // cache = [(2,2),(1,1)]cache.get(1); //返回1cache.put(3,3) //cache = [(3,3),(2,2)],緩存空間已滿,需要刪除空間騰出位置,因而刪除最久未被使用的(1,1)cache.get(1); //返回 -1 因為(1,1)已經被刪除,因而返回 -1LRU 算法代碼實現

分析上面的算法操作,如果想要讓 put 和 get 方法的時間復雜度位 O(1),cache 的數據結構應該具有如下特點:

cache 中的元素必須是具有時序的,這樣才能區分最近使用的和最久未使用的數據 在 cache 中能夠快速的通過 key 來找到對應的 val。 每次訪問 cache 的某個 key 時需要將這個元素變成最近使用的,也就是說 cache 要支持在任意位置快速插入和刪除元素。

那么有什么數據結構同時符合上邊所有的要求那?HashMap 可以根據某個 key 快速定位到對應的 val,但是它不具有時序性(存儲的數據沒有順序)。LinkedList 似乎支持快速插入和刪除元素,而且具有固定順序,但它并不支持快速查找。所以我們可以考慮將兩者結合起來形成一種新的數據結構 LinkedHashMap。

LRU 算法的核心數據結構就是哈希鏈表,它是雙向鏈表和哈希表的結合體。其具體數據結構如下圖所示:

Java 手寫LRU緩存淘汰算法

借助這個數據結構我們來注意分析上邊的條件:

如果每次默認從鏈表尾部添加元素,那么顯然越靠近尾部的元素越是最近使用的,越是靠近頭部的元素越是最久未被使用的。 對于某一個 key,可以通過哈希表快速定位到對應的 val 上 鏈表顯然支持快速插入和快速刪除。 方法一

在 Java 中本身是有 LinkedHashMap 這個數據結構的,但是為了了解算法的細節,我們嘗試自己實現一遍 LRU 算法。

首先我們需要定義一個雙向鏈表,為了簡化,key 和 val 都設置稱 int 類型。

class Node { public int key,val; public Node next, pre; public Node(int key, int val) {this.key = key;this.val = val; }}//構建一個雙向鏈表,實現一個LRU算法必須的APIclass DoubleList{ //頭尾虛節點 private Node head, tail; //用來記錄鏈表元素數量 private int size; //初始化鏈表 public DoubleList() { head = new Node(0, 0); tail = new Node(0, 0); head.next = tail; tail.pre = head; size = 0;} //從尾部添加一個元素 public Node addLast(Node x) { x.pre = tail.pre; x.next = tail; tail.pre.next = x; tail.pre = x; size++; return x; } //刪除某一個元素(x必定存在于雙向鏈表中) public Node remove(Node x) { x.pre.next = x.next; x.next.pre = x.pre; size--; return x; } //刪除第一個元素 public Node removeFirst() { //判斷當前size是否為空 if(head.next == tail) { return null; } return remove(head.next); } //返回鏈表長度 public int size() { return this.size; }}

有了雙向鏈表,只需要在 LRU 算法的基礎上把它和 HashMap 結合起來就可以打出整個算法的一個基本框架。

class LRUCache {private HashMap<Integer,Node> map;private DoubleList cache;private int capacity; public LRUCache(int capacity) { this.capacity = capacity; map = new HashMap<>(); cache = new DoubleList(); } public int get(int key) {//具體實現 } public void put(int key, int value) {//具體實現 }}

由于要同時維護一個雙向鏈表 cache 和一個哈希表 map,在編寫的過程中容易漏掉一些操作,因而我們可以**在這兩種數據結構的基礎上,抽象出一層 API。**盡量避免 get 和 put 操作直接操作 map 和 cache 的細節。

//封裝HashMap和鏈表組合在一起常用的一些操作//將某一個key提升為最近使用private void makeRecently(int key) { // ????? 不需要對map中key和Node的映射關系進行維護嗎? //cache 本身地址并沒有變化所以不需要重新來維護key和Node的關系 Node x = map.get(key); cache.remove(x); cache.addLast(x);}//添加最近使用的元素private void addRecently(int key, int val) { Node x = new Node(key,val); cache.addLast(x); map.put(key, x);}//刪除某一個keyprivate void deleteKey(int key) { Node x = map.get(key); //從鏈表中刪除節點 cache.remove(x); //刪除key->x的映射關系 map.remove(key);}//刪除最久未使用元素private void removeLeastRecently() { //刪除鏈表中的第一個節點 Node deleteNode = cache.removeFirst(); //刪除map中的映射關系 map.remove(deleteNode.key);}

進而我們便可以寫出完整的代碼:

import java.util.HashMap;/**方法一:不使用LinkedHashMap,完全從雙向鏈表開始寫**/class LRUCache {private HashMap<Integer,Node> map;private DoubleList cache;private int capacity; public LRUCache(int capacity) { this.capacity = capacity; map = new HashMap<>(); cache = new DoubleList(); } public int get(int key) { if(!map.containsKey(key)) { return -1; } makeRecently(key); return map.get(key).val; } public void put(int key, int value) { //該節點已經存在 if(map.containsKey(key)) { deleteKey(key); addRecently(key, value); return; } if(capacity == cache.size()) { removeLeastRecently(); } //添加為最近使用的元素 addRecently(key, value); } //封裝HashMap和鏈表組合在一起常用的一些操作 //將某一個key提升為最近使用 private void makeRecently(int key) {// ????? 不需要對map中key和Node的映射關系進行維護嗎?//cache 本身地址并沒有變化所以不需要重新來維護key和Node的關系 Node x = map.get(key); cache.remove(x); cache.addLast(x); } //添加最近使用的元素 private void addRecently(int key, int val) { Node x = new Node(key,val); cache.addLast(x); map.put(key, x); } //刪除某一個key private void deleteKey(int key) { Node x = map.get(key); //從鏈表中刪除節點 cache.remove(x); //刪除key->x的映射關系 map.remove(key); } //刪除最久未使用元素 private void removeLeastRecently() { //刪除鏈表中的第一個節點 Node deleteNode = cache.removeFirst(); //刪除map中的映射關系 map.remove(deleteNode.key); }}class Node { public int key,val; public Node next, pre; public Node(int key, int val) {this.key = key;this.val = val; }}//構建一個雙向鏈表,實現一個LRU算法必須的APIclass DoubleList{ //頭尾虛節點 private Node head, tail; //用來記錄鏈表元素數量 private int size; //初始化鏈表 public DoubleList() { head = new Node(0, 0); tail = new Node(0, 0); head.next = tail; tail.pre = head; size = 0;} //從尾部添加一個元素 public Node addLast(Node x) { x.pre = tail.pre; x.next = tail; tail.pre.next = x; tail.pre = x; size++; return x; } //刪除某一個元素(x必定存在于雙向鏈表中) public Node remove(Node x) { x.pre.next = x.next; x.next.pre = x.pre; size--; return x; } //刪除第一個元素 public Node removeFirst() { //判斷當前size是否為空 if(head.next == tail) { return null; } return remove(head.next); } //返回鏈表長度 public int size() { return this.size; }}

Java 手寫LRU緩存淘汰算法

至此,我們已經完全掌握了 LRU 算法的原理和實現了,最后我們可以通過 Java 內置的類型 LinkedHashMap 來實現以下 LRU 算法。

方法二

在正式編寫之前,我們簡單說是說這個 LinkedHashMap。

LinkedHashMap 是 HashMap 的子類,但內部還有一個雙向鏈表維護者鍵值對的順序;每一個鍵值對即位于哈希表中,也存在于這個雙向鏈表中。LinkedHashMap 支持兩種順序:第一種是插入順序,另外一種是訪問順序。

插入順序,比較容易理解,先添加的元素在前邊,后添加的元素在后邊,修改和訪問操作并不改變元素在鏈表中的順序。那訪問順序是什么意思那?所謂訪問指的就是 put/get 操作,對于一個 key 執行 get/put 操作之后,對應的鍵值對就會移動到鏈表尾部。所以鏈表尾部就是最近訪問的,最開始的就是最久沒被訪問的。

因此最簡單的方法就是在創建一個 LinkedHashMap 時直接指定訪問順序和容量。此后直接操作 LinkedHashMap 即可。

具體代碼如下:

import java.util.LinkedHashMap;import java.util.Map.Entry;class LRUCache {MyLRUCache<Integer,Integer> cache; public LRUCache(int capacity) { cache = new MyLRUCache(capacity); } public int get(int key) {if(cache.get(key) == null) { return -1;} return cache.get(key); } public void put(int key, int value) { cache.put(key, value); }}class MyLRUCache<K,V> extends LinkedHashMap<K,V> { private int capacity; public MyLRUCache(int capacity) {//指定初始容量,增長因子,指定訪問順序super(16, 0.75f, true);this.capacity = capacity; } //由于LinkedHahsMap本身是不支持容量限制,我們可以成通過重寫removeEldestEntry,使得容量大于預定容量時,刪除頭部的元素 @Overrideprotected boolean removeEldestEntry(Entry<K, V> eldest) { return size() > capacity;}}

Java 手寫LRU緩存淘汰算法

方法三

由于方法二需要通過重寫 removeEldestEntry 方法來實現緩存,在面試的時候不容易想到,因此我們考慮只是用 LinkedHashMap 的插入順序,增加若干操作來實現 LRU 緩存。

class LRUCache { int capacity; LinkedHashMap<Integer,Integer> cache; public LRUCache(int capacity) {this.capacity = capacity;cache = new LinkedHashMap<>(); } public int get(int key) {if(!cache.containsKey(key)) { return -1;}makeRecently(key);return cache.get(key); } public void put(int key, int value) {if(cache.containsKey(key)) { //修改value的值 cache.put(key,value); makeRecently(key); return;}if(cache.size() >= this.capacity) { //鏈表頭部是最久未被使用的key int oldestKey = cache.keySet().iterator().next(); cache.remove(oldestKey);}cache.put(key,value); } private void makeRecently(int key) {int val = cache.get(key);cache.remove(key);cache.put(key,val); }}

Java 手寫LRU緩存淘汰算法

總結

本文主要講了如何通過哈希鏈表這種數據結構來實現 LRU 算法,提供了三種實現思路,第一種從雙向鏈表開始,借助于 HashMap 來實現滿足要求的 LRUCache,后兩種針對 LinkedHashMap 的不同順序,設計了兩種實現方式來實現 LRUCache。

以上就是Java 手寫LRU緩存淘汰算法的詳細內容,更多關于Java 寫LRU緩存淘汰算法的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 日本精品一区 | 欧美国产日韩一区 | 国产高潮在线观看 | 欧美一区二区三区精品 | 日韩国产欧美视频 | 国产福利在线视频 | 免费av毛片| 91精品国产自产91精品 | av在线免费观看网址 | 国产精品久久久久久婷婷天堂 | 精品国产一区二区三区在线观看 | 久久精品欧美一区二区三区不卡 | 久久男女视频 | 最新高清无码专区 | 天天干人人干 | 中文字幕在线视频免费播放 | 久草毛片 | 欧美综合激情 | 国家aaa的一级看片 操操操夜夜操 | 成人免费网站www网站高清 | 欧美在线a | 成人看片免费网站 | 国产在线视频网 | 97超碰自拍 | 黄色a视频| 黄色毛片视频网站 | 国产成人精品一区二区三区四区 | 97操视频| www.日韩在线观看 | 亚州中文字幕 | 91在线一区二区 | 精品国产一区二区三区久久久蜜月 | 巴西性猛交xxxx免费看久久久 | 一级片视频免费 | 日韩一区二区三区在线 | 国产精品二区三区在线观看 | 亚洲精品一区二区三区四区高清 | 欧美精品免费在线 | 色www精品视频在线观看 | 91国在线高清视频 | 99久久99久久精品国产片果冻 | 亚洲视频 欧美视频 | 超碰在线91 | 久久久久久久国产精品 | 国产福利视频 | 久久久久久久久久毛片 | 国产成人精品免高潮在线观看 | 插插射啊爱视频日a级 | av在线免费看片 | www.国产91| 国产成人午夜视频 | 在线免费视频一区二区 | 国产一区二区三区精品久久久 | 国产欧美日韩 | 亚洲国产二区 | 天堂精品 | 国产精品久久久久久久久久久久久 | 国产拍拍视频 | 久久一区 | 久久99视频 | 亚洲精品成人av | 女人毛片a毛片久久人人 | 日韩欧美中文在线 | 精品99久久 | 免费v片在线观看 | 国产91av视频在线观看 | 久久三级视频 | 国产精品久久久久久久久久久久冷 | 欧美日韩久久精品 | 欧美日韩成人在线视频 | 一级视频黄色 | 伊人网站| 国产福利片在线观看 | 色视频www在线播放国产人成 | 欧美一级高潮片免费的 | 狠狠操夜夜操 | 在线中文av | 日韩不卡在线 | 亚洲成a | 夜夜爽99久久国产综合精品女不卡 | 波多野结衣 一区二区 | 国产91亚洲精品 | 九色网址| 夜本色| 国产区福利 | www.久久久.com | 福利二区| 日韩成人在线播放 | 国产精品免费久久 | 欧美日韩欧美日韩 | √8天堂资源地址中文在线 成人欧美一区二区三区白人 | 亚洲视频在线看 | 日本高清视频在线播放 | 亚洲综合区 | 国产欧美专区 | 日韩欧美大片在线观看 | 亚洲视频免费观看 | 亚洲狠狠爱 | 精品在线免费视频 | 午夜精品久久久久久久久久久久久 | 黄频免费在线观看 | 91xx在线观看| 日韩一级片 | www.操操操| 一级黄色大片视频 | 日韩欧美一级精品久久 | 欧美日韩免费一区二区三区 | 午夜精品导航 | 久久久精品影院 | 污视频在线观看免费 | 日本精品一区 | 免费成人精品 | 欧美精品成人一区二区在线 | 亚洲成人aaa| 欧美一级免费 | 91精品国产综合久久久亚洲 | 欧美综合一区二区 | 国产精品亚洲一区二区三区在线 | 精品天堂 | 伊人网伊人 | 国产中文字幕在线观看 | 日韩特黄一级欧美毛片特黄 | 亚洲精品久久久久久下一站 | 天天澡天天狠天天天做 | 黄色免费网站观看 | 国产主播福利 | 欧美日韩亚洲国产综合 | 精品视频免费在线 | 91资源在线 | 成人午夜在线视频 | 国产成人免费视频 | 97在线观看 | 午夜一级黄色片 | 91精品国产欧美一区二区成人 | 在线看av网址 | 亚洲综合色自拍一区 | www在线观看国产 | av网站免费在线观看 | 国产精品久久久久久久久久 | 黄色片免费 | jizz18毛片| 欧美日韩中文国产一区发布 | 欧美1区2区3区 | 成人免费视频观看视频 | 亚洲 自拍 另类 欧美 丝袜 | 婷婷五月在线视频 | 伊人免费视频 | 国产精品国产成人国产三级 | 亚洲欧美一区二区三区在线 | 亚洲国产精品久久久 | 亚洲成人精品av | 日韩a∨精品日韩在线观看 山岸逢花在线 | 日本久久99 | 久久久精品国产 | 午夜精品一区二区三区在线播放 | 台湾av片 | 亚洲女人天堂成人av在线 | 看久久毛片| 毛片a片| 热99这里只有精品 | 99久久久久久 | 色综合天天综合网国产成人网 | 国产精品一区一区三区 | 黄网在线免费观看 | 草久av| 久久久国色 | 国精产品一区一区三区免费完 | 2019天天干 | 亚洲 中文 欧美 日韩在线观看 | 亚洲激情一区二区 | 成人一级片在线观看 | 四虎成人在线播放 | 国产在线高清视频 | 精品久久久久久久久久久久包黑料 | 国产天堂网 | 精品国产欧美一区二区 | 成人自拍视频 | 欧美一区不卡 | 午夜精品成人一区二区 | 国产精品久久久久一区二区三区 | 成人av高清在线观看 | 日韩一区二区视频 | 免费看国产一级片 | 国产欧美精品一区aⅴ影院 毛片视频网站 | 欧美日韩不卡视频 | 国产艹 | 成人伊人 | 北条麻妃99精品青青久久 | 亚洲三区在线观看 | 91一区二区 | 欧美精品一区二区在线观看 | 国产精品资源在线 | 免费在线观看av的网站 | 午夜精品一区二区三区在线 | 成人免费视频网站在线观看 | 国产精品久久久久精 | 国产一区二区av | 中文字幕视频一区 | 午夜欧美一区二区三区在线播放 | 国产成人综合av | 国产精品久久久一区 | 久久国产精品视频 | 午夜电影福利 | 久久99热精品免费观看牛牛 | 一区二区三区四区在线 | 国产av毛片 | 亚洲精品一区二区三区中文字幕 | 精品入口麻豆88视频 | 精品国产乱码久久久久久久软件 | 一级黄色毛片免费 | 欧美成人h版在线观看 | 成人免费高清 | 久久国产精品99国产 | 国产一区二区三区久久久 | 亚洲免费资源 | 伊人艹| 成人av在线网 | 91小视频 | 国产精品极品美女在线观看免费 | 黄色一级网址 | 国产精品国产精品国产专区不片 | 亚洲一区二区中文字幕 | 精品国产18久久久久久二百 | 一区二区三区在线免费播放 | 狠狠爱天天操 | 国产精品视频久久久 | 亚洲日本国产 | 国产一区二区三区免费视频 | 久久国产精品精品国产 | 国产精品成人3p一区二区三区 | 九九九久久久 | 久久88 | 在线观看国产视频 | 97精品超碰一区二区三区 | 国产精品高颜值在线观看 | 亚洲精品在线播放 | 黄色在线 | 在线观看av片| 中文字字幕一区二区三区四区五区 | 亚洲免费观看视频 | 中国大陆高清aⅴ毛片 | 日韩精品视频在线 | 在线小视频| 一本大道综合伊人精品热热 | 国产精品国产a级 | 久草免费在线 | 欧美另类专区 | 综合亚洲精品 | 在线观看亚洲一区 | 在线国产专区 | 国产欧美综合一区 | 日韩手机专区 | 亚洲国产精品一区二区久久 | 午夜影院免费体验区 | 福利一区二区 | 黄色影视网址 | 亚洲成人精品在线观看 | 欧美一区二区久久 | 欧美一级在线免费观看 | 欧美在线操 | 国产69精品99久久久久久宅男 | 国产精品久久精品久久 | 亚洲综合色自拍一区 | 久久青青 | 国产精品一品二区三区的使用体验 | 天天色天天射天天操 | 黄色av网站免费 | 精品视频久久久 | 精品国产乱码一区二区三 | 日韩欧美一级在线 | 久久久久国产一区二区三区四区 | 亚洲精品电影在线观看 | 久久四色 | 麻豆精品久久 | 久久久精品一区二区三区 | 亚洲欧洲日本国产 | 夜久久 | 午夜精品在线 | 国产成人在线一区二区 | 亚洲 中文 欧美 日韩 在线观看 | 国产视频91在线 | 国产精品123 | xxxx网| 欧美日韩一区免费 | 国产精品久久久 | 日韩精品视频在线观看免费 | 成人午夜免费视频 | 精品日韩一区二区三区 | 成人精品视频一区二区三区 | 日韩av免费在线观看 | 91精品国产91久久久久久久久久久久 | 91视频免费观看 | 欧美一级在线 | 中字精品 | 九九天堂| 成人免毛片| 精品国产一区二区三区久久 | 日韩视频精品在线 | 精品成人在线视频 | 国产精品久久久久久久久久久久冷 | 亚洲精品视 | 国产一区二区三区在线免费 | 久草在线视频免费播放 | 91中文字幕| 成人一区二区在线 | 一区二区三区国产视频 | 亚洲精品一区二区三区麻豆 | 国产精品久久久久久久久小说 | 国产在线国产 | 亚洲综合在线播放 | 欧美日韩国产中文字幕 | 99精品欧美一区二区蜜桃免费 | 国产精品欧美一区二区三区 | 福利一区二区 | 天天干天天操 | а√天堂中文在线资源8 | 日韩中文字幕在线观看 | 国产伦精品一区二区三区在线 | 精品视频在线观看一区二区三区 | 免费一区二区三区 | 91精品国产高清自在线观看 | 国产猛男猛女超爽免费视频网站 | 国产高清一区二区三区 | 国产亚洲综合精品 | 亚洲精品91 | 一区不卡 | 亚洲欧美激情在线 | 亚洲一级毛片 | 国产三级视频 | 国产三区在线视频 | av大片 | 欧美精品在线一区二区 | 日韩成人影院 | 簧片av | 欧美日韩三级 | 先锋av资源在线 | av最新在线 | 成年人在线看片 | 亚洲精品视频一区 | 开操网| 欧美日韩一区二区在线观看 | 成人免费观看男女羞羞视频 | 亚洲欧洲一区二区 | 一区二区精品在线 | www,久久久 | 精品国产91亚洲一区二区三区www | 国产激情一区二区三区 | 欧美人成在线视频 | 一区二区三区在线观看视频 | www.久久伊人| 亚洲精品一区二区三区蜜桃下载 | 国内精品视频一区二区三区 | 精品国产不卡一区二区三区 | 欧美日韩综合精品 | 日韩精品中文字幕在线播放 | 国产精品欧美久久久久一区二区 | 亚洲国产成人久久一区二区三区 | 国产成人免费在线观看 | 思热99re视热频这里只精品 | 亚洲一区二区精品 | 在线中文字幕视频 | 欧美日韩一区二区三区视频 | 91性高湖久久久久久久久_久久99 | www久| 欧美性网| 欧美一级一区 | 欧美久久精品 | 国产日韩欧美 | 黄色短视频在线观看 | 四虎影院在线 | 久久国产欧美日韩精品 | 亚洲精品综合 | 久久久久一区二区 | 精品第一页 | 亚洲情综合五月天 | 91精品国产综合久久国产大片 | 久久一级 | 看真人视频a级毛片 | 激情六月综合 | 国产中文字幕在线 | 精品福利av导航 | 一区二区中文 | 91精品国产综合久久久久久丝袜 | 成人亚洲精品久久久久软件 | 免费av在线网站 | 亚洲一区二区三区视频 | 不卡二区 | 日韩在线高清视频 | 99re在线 | 天天舔天天爽 | 四虎影院最新网址 | 亚洲国产精品va在线看黑人 | 日本亚洲精品一区二区三区 | 中文字幕日韩在线 | 一区二区三区在线 | 日韩电影专区 | 日本在线黄色 | 国产xxxxxxxxxx| 国产精品一区二区三区免费视频 | 欧洲成人午夜免费大片 | 久久天天躁狠狠躁夜夜躁2014 | 99久久夜色精品国产亚洲1000部 | 天天看天天干 | 91视频在线看 | 琪琪午夜伦伦电影福利片 | 欧美一级视频在线观看 | 亚洲国产网站 | 国产美女自拍视频 | 欧美一级视频在线观看 | 国产精品综合视频 | 99热国产在线观看 | 欧美精品在线看 | 九九精品免费视频 | 亚洲成人激情在线观看 | 日韩视频中文 | 亚洲aⅴ天堂av在线电影软件 | 一区二区免费在线 | 九九色综合 | 国产羞羞视频 | 欧美大片一区二区 | av解说在线精品 | 欧美日韩视频一区二区 | 亚洲成a人 | 国产精品久久久久久久 | 欧美一区永久视频免费观看 | 中文字幕在线不卡 | 一本一道久久a久久精品逆3p | 性高湖久久久久久久久 | 免费av一区二区三区 | 日韩电影一区二区在线观看 | 毛片黄片视频 | 国产欧美精品一区二区三区 | 国产精品国产三级国产aⅴ中文 | 九九精品免费视频 | 久久久国产一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 久久久久久久91 | 日韩视频不卡 | 狠狠搞狠狠搞 | 久久久成人av | 欧美日韩在线精品 | 久久久久久麻豆 | 蜜臀影院 | 在线日韩视频 | 欧美八区 | 香蕉大人久久国产成人av | 韩国精品主播一区二区在线观看 | 99久久婷婷国产综合亚洲 | 久久av一区 | 亚洲h视频 | 中文一二区| 久久精品一级 | 97在线观看| 久久99国产伦子精品免费 | 精品久久久久久久人人人人传媒 | 二区在线视频 | 波多野结衣一区二区三区高清 | 精品国产欧美 | 一级特黄网站 | 99精品99 | 久久久国产一区二区三区 | 国产精久久久久久久妇剪断 | 日日干日日操 | 国产精品成人在线观看 | 国产精品一二三四区 | 成人h在线 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久国产亚洲精品 | 亚洲精品四区 | 久久h| 亚洲免费视频大全 | 日日摸夜夜添夜夜添亚洲女人 | 精品国产成人 | 国产免费天天看高清影视在线 | 欧美精品在线观看 | 色玖玖综合 | 丁香久久 | 欧美国产日韩另类 | 国产女爽爽视频精品免费 | 大桥未久亚洲精品久久久强制中出 | 久久综合网址 | 欧美在线综合视频 | 亚洲精品中文视频 | 亚洲精品一区二区网址 | 在线观看中文 | 欧美激情综合五月色丁香小说 | 做a视频在线观看 | 日本三级在线观看网站 | 欧美性大战久久久久久久蜜臀 | 欧美精品在线一区二区三区 | 日韩特级| 中文字幕在线免费视频 | 91精品国产一区二区三区免费 | 精品国产91乱码一区二区三区 | 精品欧美一区二区在线观看视频 | 成人午夜精品久久久久久久3d | 色猫猫国产区一区二在线视频 | 国产一区 日韩 | 成人欧美一区二区三区白人 | 视频久久精品 | 91亚洲免费 | 懂色av色香蕉一区二区蜜桃 | 亚洲乱码一区二区三区在线观看 | 青青草久草在线 | 亚洲精品一区二区三区四区高清 | 美女毛片免费看 | 自拍视频网站 | 一区二区三区视频免费 | 久久久精品亚洲 | 成人男女激情免费视频 | 国产亚洲网站 | www312aⅴ欧美在线看 | 亚洲精品成人av | 国产高清视频在线 | 国产99久久精品一区二区永久免费 | 99久久99| 精品国产乱码简爱久久久久久 | 国产精一区 | 精品欧美一区二区三区久久久小说 | 欧美精品日韩 | √8天堂资源地址中文在线 成人欧美一区二区三区白人 | 99视频在线播放 | 婷婷久久综合 | 最新伦理片 | 夜夜爽网址 | 日韩一区二区三区在线 | 日韩午夜激情视频 | 午夜激情在线 | 久草久 | 亚洲精选国产 | 国产精品久久国产精麻豆99网站 | 欧洲另类二三四区 | av中文字幕在线播放 | 伊人二区 | 久久久久久九九九九九九 | 天堂资源av | 日韩国产精品视频 | jlzzjlzz亚洲日本少妇 | 亚洲成人av在线播放 | 日本阿v视频高清在线中文 中文二区 | 国产精品一区av | 天天夜碰日日摸日日澡 | 91视频在线免费观看 | 九九久久精品 | 日韩免费高清视频 | concern超碰在线 | 天天色天天 | 精品国产福利 | 精品久久久中文字幕 | 91午夜精品 | 天天天堂 | 日韩综合网 | 精品国产高清一区二区三区 | 久久精品99 | 亚洲性网| 日韩美一级 | 国产毛片毛片 | 日韩在线观看视频一区 | 一区在线观看 | 久久久久99| 自拍一区视频 | 亚洲一区中文字幕 | 日韩精品网站在线观看 | 黄色成人免费看 | av大片在线| 日本三级国产 | 99热在线播放 | 精品免费视频 | 久久久久久亚洲一区二区三区蜜臀 | 亚州av | 日本黄色毛片 | 九九热精品免费视频 | 青青草久久 | 免费国产wwwwwww网站 | 精品乱子伦一区二区三区 | 久久99精品久久久久子伦 | 日韩国产免费观看 | 亚洲一区二区三区欧美 | 亚洲视频在线看 | 精品国产成人 | 成人亚洲 | 国产高清视频在线 | av一级毛片 | 欧美日本在线观看 | 啊v在线| 日韩欧美在线观看一区 | 亚洲成人免费在线 | 日本中文在线 | 欧美亚洲视频 | 欧美在线视频一区二区 | 国产一区二区三区免费视频 | 国产欧美一区二区视频 | 国产精品毛片 | 黄色高清视频在线观看 | 亚洲 欧美 日韩 在线 | 91亚洲狠狠婷婷综合久久久 | 韩国电影久久 | 91视频播放 | 国产亚洲精品美女久久久久久久久久 | 另类二区| 久久久xx | 国产欧美久久一区二区三区 | 欧美一区二区三 | 亚洲成人精品在线观看 | 亚洲视频二区 | 久久免费国产精品 | 亚洲国产日本 | 日韩成人av在线 | 婷婷激情综合 | 亚洲毛片网站 | 欧美一卡二卡在线观看 | 天天操天天色天天 | 国产91在线观看 | 夜夜操天天干 | 中文字幕一区二区三区四区 |