久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓开发笔记——关于图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)...

發(fā)布時間:2024/4/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓开发笔记——关于图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  在開發(fā)安卓應(yīng)用中避免不了要使用到網(wǎng)絡(luò)圖片,獲取網(wǎng)絡(luò)圖片很簡單,但是需要付出一定的代價——流量。對于少數(shù)的圖片而言問題不大,但如果手機(jī)應(yīng)用中包含大量的圖片,這勢必會耗費用戶的一定流量,如果我們不加以處理,每次打開應(yīng)用都去網(wǎng)絡(luò)獲取圖片,那么用戶可就不樂意了,這里的處理就是指今天要講的緩存策略(緩存層分為三層:內(nèi)存層,磁盤層,網(wǎng)絡(luò)層)。

  關(guān)于緩存層的工作,當(dāng)我們第一次打開應(yīng)用獲取圖片時,先到網(wǎng)絡(luò)去下載圖片,然后依次存入內(nèi)存緩存,磁盤緩存,當(dāng)我們再一次需要用到剛才下載的這張圖片時,就不需要再重復(fù)的到網(wǎng)絡(luò)上去下載,直接可以從內(nèi)存緩存和磁盤緩存中找,由于內(nèi)存緩存速度較快,我們優(yōu)先到內(nèi)存緩存中尋找該圖片,如果找到則運用,如果沒有找到(內(nèi)存緩存大小有限),那么我們再到磁盤緩存中去找。只要我們合理的去協(xié)調(diào)這三層緩存運用,便可以提升應(yīng)用性能和用戶體驗。

?

1、內(nèi)存層:(手機(jī)內(nèi)存)

內(nèi)存緩存相對于磁盤緩存而言,速度要來的快很多,但缺點容量較小且會被系統(tǒng)回收,這里的實現(xiàn)我用到了LruCache。

LruCache這個類是Android3.1版本中提供的,如果你是在更早的Android版本中開發(fā),則需要導(dǎo)入android-support-v4的jar包。

?

磁盤層:(SD卡)

相比內(nèi)存緩存而言速度要來得慢很多,但容量很大,這里的實現(xiàn)我用到了DiskLruCache類。

DiskLruCache是非Google官方編寫,但獲得官方認(rèn)證的硬盤緩存類,該類沒有限定在Android內(nèi),所以理論上java應(yīng)用也可以使用DiskLreCache來緩存。

這是DiskLruCache類的下載地址:http://pan.baidu.com/s/1hq0D53m?

?

網(wǎng)絡(luò)層:(移動網(wǎng)絡(luò),無線網(wǎng)絡(luò))

這個就沒什么解釋的了,就是我們上網(wǎng)用的流量。這里的網(wǎng)絡(luò)訪問實現(xiàn)我用到了開源框架Volley。

開源框架Volley是2013年Google I/O大會發(fā)布的,Volley是Android平臺上的網(wǎng)絡(luò)通信庫,能使網(wǎng)絡(luò)通信更快,更簡單,更健壯。它的設(shè)計目標(biāo)就是非常適合去進(jìn)行數(shù)據(jù)量不大,但通信頻繁的網(wǎng)絡(luò)操作,而對于大數(shù)據(jù)量的網(wǎng)絡(luò)操作,比如說下載文件等,Volley的表現(xiàn)就會非常糟糕。

這是Volley的下載地址:http://pan.baidu.com/s/1hq1t2yo

?

先來看下效果圖:

正常網(wǎng)絡(luò)下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?    斷開網(wǎng)絡(luò),飛行模式下:

??    ?  

Log日志打印:

?

來看下代碼實現(xiàn):

?

1、由于應(yīng)用中很多地方需要用到上下文對象,這里我自定義了一個全局的Application,用來提供上下文對象

1 package com.lcw.rabbit.image.utils; 2 3 import android.app.Application; 4 /** 5 * Application類,提供全局上下文對象 6 * @author Rabbit_Lee 7 * 8 */ 9 public class MyApplication extends Application { 10 11 public static String TAG; 12 public static MyApplication myApplication; 13 14 public static MyApplication newInstance() { 15 return myApplication; 16 } 17 18 @Override 19 public void onCreate() { 20 super.onCreate(); 21 TAG = this.getClass().getSimpleName(); 22 myApplication = this; 23 24 } 25 }

?

2、Volley請求隊列處理類,用來管理Rquest請求對象操作

1 package com.lcw.rabbit.image; 2 3 import com.android.volley.Request; 4 import com.android.volley.RequestQueue; 5 import com.android.volley.toolbox.Volley; 6 import com.lcw.rabbit.image.utils.MyApplication; 7 8 /** 9 * 請求隊列處理類 10 * 獲取RequestQueue對象 11 */ 12 public class VolleyRequestQueueManager { 13 // 獲取請求隊列類 14 public static RequestQueue mRequestQueue = Volley.newRequestQueue(MyApplication.newInstance()); 15 16 //添加任務(wù)進(jìn)任務(wù)隊列 17 public static void addRequest(Request<?> request, Object tag) { 18 if (tag != null) { 19 request.setTag(tag); 20 } 21 mRequestQueue.add(request); 22 } 23 24 //取消任務(wù) 25 public static void cancelRequest(Object tag){ 26 mRequestQueue.cancelAll(tag); 27 } 28 29 30 31 }

?

3、這里附上2個工具類(生成MD5序列幫助類,DiskLruCache磁盤緩存類)

1 package com.lcw.rabbit.image.utils; 2 3 import java.math.BigInteger; 4 import java.security.MessageDigest; 5 import java.security.NoSuchAlgorithmException; 6 7 public class MD5Utils { 8 /** 9 * 使用md5的算法進(jìn)行加密 10 */ 11 public static String md5(String plainText) { 12 byte[] secretBytes = null; 13 try { 14 secretBytes = MessageDigest.getInstance("md5").digest( 15 plainText.getBytes()); 16 } catch (NoSuchAlgorithmException e) { 17 throw new RuntimeException("沒有md5這個算法!"); 18 } 19 String md5code = new BigInteger(1, secretBytes).toString(16);// 16進(jìn)制數(shù)字 20 // 如果生成數(shù)字未滿32位,需要前面補(bǔ)0 21 for (int i = 0; i < 32 - md5code.length(); i++) { 22 md5code = "0" + md5code; 23 } 24 return md5code; 25 } 26 27 } MD5轉(zhuǎn)換類

?

1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.lcw.rabbit.image.utils; 18 19 import java.io.BufferedInputStream; 20 import java.io.BufferedWriter; 21 import java.io.Closeable; 22 import java.io.EOFException; 23 import java.io.File; 24 import java.io.FileInputStream; 25 import java.io.FileNotFoundException; 26 import java.io.FileOutputStream; 27 import java.io.FileWriter; 28 import java.io.FilterOutputStream; 29 import java.io.IOException; 30 import java.io.InputStream; 31 import java.io.InputStreamReader; 32 import java.io.OutputStream; 33 import java.io.OutputStreamWriter; 34 import java.io.Reader; 35 import java.io.StringWriter; 36 import java.io.Writer; 37 import java.lang.reflect.Array; 38 import java.nio.charset.Charset; 39 import java.util.ArrayList; 40 import java.util.Arrays; 41 import java.util.Iterator; 42 import java.util.LinkedHashMap; 43 import java.util.Map; 44 import java.util.concurrent.Callable; 45 import java.util.concurrent.ExecutorService; 46 import java.util.concurrent.LinkedBlockingQueue; 47 import java.util.concurrent.ThreadPoolExecutor; 48 import java.util.concurrent.TimeUnit; 49 50 /** 51 ****************************************************************************** 52 * Taken from the JB source code, can be found in: 53 * libcore/luni/src/main/java/libcore/io/DiskLruCache.java 54 * or direct link: 55 * https://android.googlesource.com/platform/libcore/+/android-4.1.1_r1/luni/src/main/java/libcore/io/DiskLruCache.java 56 ****************************************************************************** 57 * 58 * A cache that uses a bounded amount of space on a filesystem. Each cache 59 * entry has a string key and a fixed number of values. Values are byte 60 * sequences, accessible as streams or files. Each value must be between {@code 61 * 0} and {@code Integer.MAX_VALUE} bytes in length. 62 * 63 * <p>The cache stores its data in a directory on the filesystem. This 64 * directory must be exclusive to the cache; the cache may delete or overwrite 65 * files from its directory. It is an error for multiple processes to use the 66 * same cache directory at the same time. 67 * 68 * <p>This cache limits the number of bytes that it will store on the 69 * filesystem. When the number of stored bytes exceeds the limit, the cache will 70 * remove entries in the background until the limit is satisfied. The limit is 71 * not strict: the cache may temporarily exceed it while waiting for files to be 72 * deleted. The limit does not include filesystem overhead or the cache 73 * journal so space-sensitive applications should set a conservative limit. 74 * 75 * <p>Clients call {@link #edit} to create or update the values of an entry. An 76 * entry may have only one editor at one time; if a value is not available to be 77 * edited then {@link #edit} will return null. 78 * <ul> 79 * <li>When an entry is being <strong>created</strong> it is necessary to 80 * supply a full set of values; the empty value should be used as a 81 * placeholder if necessary. 82 * <li>When an entry is being <strong>edited</strong>, it is not necessary 83 * to supply data for every value; values default to their previous 84 * value. 85 * </ul> 86 * Every {@link #edit} call must be matched by a call to {@link Editor#commit} 87 * or {@link Editor#abort}. Committing is atomic: a read observes the full set 88 * of values as they were before or after the commit, but never a mix of values. 89 * 90 * <p>Clients call {@link #get} to read a snapshot of an entry. The read will 91 * observe the value at the time that {@link #get} was called. Updates and 92 * removals after the call do not impact ongoing reads. 93 * 94 * <p>This class is tolerant of some I/O errors. If files are missing from the 95 * filesystem, the corresponding entries will be dropped from the cache. If 96 * an error occurs while writing a cache value, the edit will fail silently. 97 * Callers should handle other problems by catching {@code IOException} and 98 * responding appropriately. 99 */ 100 public final class DiskLruCache implements Closeable { 101 static final String JOURNAL_FILE = "journal"; 102 static final String JOURNAL_FILE_TMP = "journal.tmp"; 103 static final String MAGIC = "libcore.io.DiskLruCache"; 104 static final String VERSION_1 = "1"; 105 static final long ANY_SEQUENCE_NUMBER = -1; 106 private static final String CLEAN = "CLEAN"; 107 private static final String DIRTY = "DIRTY"; 108 private static final String REMOVE = "REMOVE"; 109 private static final String READ = "READ"; 110 111 private static final Charset UTF_8 = Charset.forName("UTF-8"); 112 private static final int IO_BUFFER_SIZE = 8 * 1024; 113 114 /* 115 * This cache uses a journal file named "journal". A typical journal file 116 * looks like this: 117 * libcore.io.DiskLruCache 118 * 1 119 * 100 120 * 2 121 * 122 * CLEAN 3400330d1dfc7f3f7f4b8d4d803dfcf6 832 21054 123 * DIRTY 335c4c6028171cfddfbaae1a9c313c52 124 * CLEAN 335c4c6028171cfddfbaae1a9c313c52 3934 2342 125 * REMOVE 335c4c6028171cfddfbaae1a9c313c52 126 * DIRTY 1ab96a171faeeee38496d8b330771a7a 127 * CLEAN 1ab96a171faeeee38496d8b330771a7a 1600 234 128 * READ 335c4c6028171cfddfbaae1a9c313c52 129 * READ 3400330d1dfc7f3f7f4b8d4d803dfcf6 130 * 131 * The first five lines of the journal form its header. They are the 132 * constant string "libcore.io.DiskLruCache", the disk cache's version, 133 * the application's version, the value count, and a blank line. 134 * 135 * Each of the subsequent lines in the file is a record of the state of a 136 * cache entry. Each line contains space-separated values: a state, a key, 137 * and optional state-specific values. 138 * o DIRTY lines track that an entry is actively being created or updated. 139 * Every successful DIRTY action should be followed by a CLEAN or REMOVE 140 * action. DIRTY lines without a matching CLEAN or REMOVE indicate that 141 * temporary files may need to be deleted. 142 * o CLEAN lines track a cache entry that has been successfully published 143 * and may be read. A publish line is followed by the lengths of each of 144 * its values. 145 * o READ lines track accesses for LRU. 146 * o REMOVE lines track entries that have been deleted. 147 * 148 * The journal file is appended to as cache operations occur. The journal may 149 * occasionally be compacted by dropping redundant lines. A temporary file named 150 * "journal.tmp" will be used during compaction; that file should be deleted if 151 * it exists when the cache is opened. 152 */ 153 154 private final File directory; 155 private final File journalFile; 156 private final File journalFileTmp; 157 private final int appVersion; 158 private final long maxSize; 159 private final int valueCount; 160 private long size = 0; 161 private Writer journalWriter; 162 private final LinkedHashMap<String, Entry> lruEntries 163 = new LinkedHashMap<String, Entry>(0, 0.75f, true); 164 private int redundantOpCount; 165 166 /** 167 * To differentiate between old and current snapshots, each entry is given 168 * a sequence number each time an edit is committed. A snapshot is stale if 169 * its sequence number is not equal to its entry's sequence number. 170 */ 171 private long nextSequenceNumber = 0; 172 173 /* From java.util.Arrays */ 174 @SuppressWarnings("unchecked") 175 private static <T> T[] copyOfRange(T[] original, int start, int end) { 176 final int originalLength = original.length; // For exception priority compatibility. 177 if (start > end) { 178 throw new IllegalArgumentException(); 179 } 180 if (start < 0 || start > originalLength) { 181 throw new ArrayIndexOutOfBoundsException(); 182 } 183 final int resultLength = end - start; 184 final int copyLength = Math.min(resultLength, originalLength - start); 185 final T[] result = (T[]) Array 186 .newInstance(original.getClass().getComponentType(), resultLength); 187 System.arraycopy(original, start, result, 0, copyLength); 188 return result; 189 } 190 191 /** 192 * Returns the remainder of 'reader' as a string, closing it when done. 193 */ 194 public static String readFully(Reader reader) throws IOException { 195 try { 196 StringWriter writer = new StringWriter(); 197 char[] buffer = new char[1024]; 198 int count; 199 while ((count = reader.read(buffer)) != -1) { 200 writer.write(buffer, 0, count); 201 } 202 return writer.toString(); 203 } finally { 204 reader.close(); 205 } 206 } 207 208 /** 209 * Returns the ASCII characters up to but not including the next "\r\n", or 210 * "\n". 211 * 212 * @throws java.io.EOFException if the stream is exhausted before the next newline 213 * character. 214 */ 215 public static String readAsciiLine(InputStream in) throws IOException { 216 // TODO: support UTF-8 here instead 217 218 StringBuilder result = new StringBuilder(80); 219 while (true) { 220 int c = in.read(); 221 if (c == -1) { 222 throw new EOFException(); 223 } else if (c == '\n') { 224 break; 225 } 226 227 result.append((char) c); 228 } 229 int length = result.length(); 230 if (length > 0 && result.charAt(length - 1) == '\r') { 231 result.setLength(length - 1); 232 } 233 return result.toString(); 234 } 235 236 /** 237 * Closes 'closeable', ignoring any checked exceptions. Does nothing if 'closeable' is null. 238 */ 239 public static void closeQuietly(Closeable closeable) { 240 if (closeable != null) { 241 try { 242 closeable.close(); 243 } catch (RuntimeException rethrown) { 244 throw rethrown; 245 } catch (Exception ignored) { 246 } 247 } 248 } 249 250 /** 251 * Recursively delete everything in {@code dir}. 252 */ 253 // TODO: this should specify paths as Strings rather than as Files 254 public static void deleteContents(File dir) throws IOException { 255 File[] files = dir.listFiles(); 256 if (files == null) { 257 throw new IllegalArgumentException("not a directory: " + dir); 258 } 259 for (File file : files) { 260 if (file.isDirectory()) { 261 deleteContents(file); 262 } 263 if (!file.delete()) { 264 throw new IOException("failed to delete file: " + file); 265 } 266 } 267 } 268 269 /** This cache uses a single background thread to evict entries. */ 270 private final ExecutorService executorService = new ThreadPoolExecutor(0, 1, 271 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()); 272 private final Callable<Void> cleanupCallable = new Callable<Void>() { 273 @Override public Void call() throws Exception { 274 synchronized (DiskLruCache.this) { 275 if (journalWriter == null) { 276 return null; // closed 277 } 278 trimToSize(); 279 if (journalRebuildRequired()) { 280 rebuildJournal(); 281 redundantOpCount = 0; 282 } 283 } 284 return null; 285 } 286 }; 287 288 private DiskLruCache(File directory, int appVersion, int valueCount, long maxSize) { 289 this.directory = directory; 290 this.appVersion = appVersion; 291 this.journalFile = new File(directory, JOURNAL_FILE); 292 this.journalFileTmp = new File(directory, JOURNAL_FILE_TMP); 293 this.valueCount = valueCount; 294 this.maxSize = maxSize; 295 } 296 297 /** 298 * Opens the cache in {@code directory}, creating a cache if none exists 299 * there. 300 * 301 * @param directory a writable directory 302 * @param appVersion 303 * @param valueCount the number of values per cache entry. Must be positive. 304 * @param maxSize the maximum number of bytes this cache should use to store 305 * @throws java.io.IOException if reading or writing the cache directory fails 306 */ 307 public static DiskLruCache open(File directory, int appVersion, int valueCount, long maxSize) 308 throws IOException { 309 if (maxSize <= 0) { 310 throw new IllegalArgumentException("maxSize <= 0"); 311 } 312 if (valueCount <= 0) { 313 throw new IllegalArgumentException("valueCount <= 0"); 314 } 315 316 // prefer to pick up where we left off 317 DiskLruCache cache = new DiskLruCache(directory, appVersion, valueCount, maxSize); 318 if (cache.journalFile.exists()) { 319 try { 320 cache.readJournal(); 321 cache.processJournal(); 322 cache.journalWriter = new BufferedWriter(new FileWriter(cache.journalFile, true), 323 IO_BUFFER_SIZE); 324 return cache; 325 } catch (IOException journalIsCorrupt) { 326 // System.logW("DiskLruCache " + directory + " is corrupt: " 327 // + journalIsCorrupt.getMessage() + ", removing"); 328 cache.delete(); 329 } 330 } 331 332 // create a new empty cache 333 directory.mkdirs(); 334 cache = new DiskLruCache(directory, appVersion, valueCount, maxSize); 335 cache.rebuildJournal(); 336 return cache; 337 } 338 339 private void readJournal() throws IOException { 340 InputStream in = new BufferedInputStream(new FileInputStream(journalFile), IO_BUFFER_SIZE); 341 try { 342 String magic = readAsciiLine(in); 343 String version = readAsciiLine(in); 344 String appVersionString = readAsciiLine(in); 345 String valueCountString = readAsciiLine(in); 346 String blank = readAsciiLine(in); 347 if (!MAGIC.equals(magic) 348 || !VERSION_1.equals(version) 349 || !Integer.toString(appVersion).equals(appVersionString) 350 || !Integer.toString(valueCount).equals(valueCountString) 351 || !"".equals(blank)) { 352 throw new IOException("unexpected journal header: [" 353 + magic + ", " + version + ", " + valueCountString + ", " + blank + "]"); 354 } 355 356 while (true) { 357 try { 358 readJournalLine(readAsciiLine(in)); 359 } catch (EOFException endOfJournal) { 360 break; 361 } 362 } 363 } finally { 364 closeQuietly(in); 365 } 366 } 367 368 private void readJournalLine(String line) throws IOException { 369 String[] parts = line.split(" "); 370 if (parts.length < 2) { 371 throw new IOException("unexpected journal line: " + line); 372 } 373 374 String key = parts[1]; 375 if (parts[0].equals(REMOVE) && parts.length == 2) { 376 lruEntries.remove(key); 377 return; 378 } 379 380 Entry entry = lruEntries.get(key); 381 if (entry == null) { 382 entry = new Entry(key); 383 lruEntries.put(key, entry); 384 } 385 386 if (parts[0].equals(CLEAN) && parts.length == 2 + valueCount) { 387 entry.readable = true; 388 entry.currentEditor = null; 389 entry.setLengths(copyOfRange(parts, 2, parts.length)); 390 } else if (parts[0].equals(DIRTY) && parts.length == 2) { 391 entry.currentEditor = new Editor(entry); 392 } else if (parts[0].equals(READ) && parts.length == 2) { 393 // this work was already done by calling lruEntries.get() 394 } else { 395 throw new IOException("unexpected journal line: " + line); 396 } 397 } 398 399 /** 400 * Computes the initial size and collects garbage as a part of opening the 401 * cache. Dirty entries are assumed to be inconsistent and will be deleted. 402 */ 403 private void processJournal() throws IOException { 404 deleteIfExists(journalFileTmp); 405 for (Iterator<Entry> i = lruEntries.values().iterator(); i.hasNext(); ) { 406 Entry entry = i.next(); 407 if (entry.currentEditor == null) { 408 for (int t = 0; t < valueCount; t++) { 409 size += entry.lengths[t]; 410 } 411 } else { 412 entry.currentEditor = null; 413 for (int t = 0; t < valueCount; t++) { 414 deleteIfExists(entry.getCleanFile(t)); 415 deleteIfExists(entry.getDirtyFile(t)); 416 } 417 i.remove(); 418 } 419 } 420 } 421 422 /** 423 * Creates a new journal that omits redundant information. This replaces the 424 * current journal if it exists. 425 */ 426 private synchronized void rebuildJournal() throws IOException { 427 if (journalWriter != null) { 428 journalWriter.close(); 429 } 430 431 Writer writer = new BufferedWriter(new FileWriter(journalFileTmp), IO_BUFFER_SIZE); 432 writer.write(MAGIC); 433 writer.write("\n"); 434 writer.write(VERSION_1); 435 writer.write("\n"); 436 writer.write(Integer.toString(appVersion)); 437 writer.write("\n"); 438 writer.write(Integer.toString(valueCount)); 439 writer.write("\n"); 440 writer.write("\n"); 441 442 for (Entry entry : lruEntries.values()) { 443 if (entry.currentEditor != null) { 444 writer.write(DIRTY + ' ' + entry.key + '\n'); 445 } else { 446 writer.write(CLEAN + ' ' + entry.key + entry.getLengths() + '\n'); 447 } 448 } 449 450 writer.close(); 451 journalFileTmp.renameTo(journalFile); 452 journalWriter = new BufferedWriter(new FileWriter(journalFile, true), IO_BUFFER_SIZE); 453 } 454 455 private static void deleteIfExists(File file) throws IOException { 456 // try { 457 // Libcore.os.remove(file.getPath()); 458 // } catch (ErrnoException errnoException) { 459 // if (errnoException.errno != OsConstants.ENOENT) { 460 // throw errnoException.rethrowAsIOException(); 461 // } 462 // } 463 if (file.exists() && !file.delete()) { 464 throw new IOException(); 465 } 466 } 467 468 /** 469 * Returns a snapshot of the entry named {@code key}, or null if it doesn't 470 * exist is not currently readable. If a value is returned, it is moved to 471 * the head of the LRU queue. 472 */ 473 public synchronized Snapshot get(String key) throws IOException { 474 checkNotClosed(); 475 validateKey(key); 476 Entry entry = lruEntries.get(key); 477 if (entry == null) { 478 return null; 479 } 480 481 if (!entry.readable) { 482 return null; 483 } 484 485 /* 486 * Open all streams eagerly to guarantee that we see a single published 487 * snapshot. If we opened streams lazily then the streams could come 488 * from different edits. 489 */ 490 InputStream[] ins = new InputStream[valueCount]; 491 try { 492 for (int i = 0; i < valueCount; i++) { 493 ins[i] = new FileInputStream(entry.getCleanFile(i)); 494 } 495 } catch (FileNotFoundException e) { 496 // a file must have been deleted manually! 497 return null; 498 } 499 500 redundantOpCount++; 501 journalWriter.append(READ + ' ' + key + '\n'); 502 if (journalRebuildRequired()) { 503 executorService.submit(cleanupCallable); 504 } 505 506 return new Snapshot(key, entry.sequenceNumber, ins); 507 } 508 509 /** 510 * Returns an editor for the entry named {@code key}, or null if another 511 * edit is in progress. 512 */ 513 public Editor edit(String key) throws IOException { 514 return edit(key, ANY_SEQUENCE_NUMBER); 515 } 516 517 private synchronized Editor edit(String key, long expectedSequenceNumber) throws IOException { 518 checkNotClosed(); 519 validateKey(key); 520 Entry entry = lruEntries.get(key); 521 if (expectedSequenceNumber != ANY_SEQUENCE_NUMBER 522 && (entry == null || entry.sequenceNumber != expectedSequenceNumber)) { 523 return null; // snapshot is stale 524 } 525 if (entry == null) { 526 entry = new Entry(key); 527 lruEntries.put(key, entry); 528 } else if (entry.currentEditor != null) { 529 return null; // another edit is in progress 530 } 531 532 Editor editor = new Editor(entry); 533 entry.currentEditor = editor; 534 535 // flush the journal before creating files to prevent file leaks 536 journalWriter.write(DIRTY + ' ' + key + '\n'); 537 journalWriter.flush(); 538 return editor; 539 } 540 541 /** 542 * Returns the directory where this cache stores its data. 543 */ 544 public File getDirectory() { 545 return directory; 546 } 547 548 /** 549 * Returns the maximum number of bytes that this cache should use to store 550 * its data. 551 */ 552 public long maxSize() { 553 return maxSize; 554 } 555 556 /** 557 * Returns the number of bytes currently being used to store the values in 558 * this cache. This may be greater than the max size if a background 559 * deletion is pending. 560 */ 561 public synchronized long size() { 562 return size; 563 } 564 565 private synchronized void completeEdit(Editor editor, boolean success) throws IOException { 566 Entry entry = editor.entry; 567 if (entry.currentEditor != editor) { 568 throw new IllegalStateException(); 569 } 570 571 // if this edit is creating the entry for the first time, every index must have a value 572 if (success && !entry.readable) { 573 for (int i = 0; i < valueCount; i++) { 574 if (!entry.getDirtyFile(i).exists()) { 575 editor.abort(); 576 throw new IllegalStateException("edit didn't create file " + i); 577 } 578 } 579 } 580 581 for (int i = 0; i < valueCount; i++) { 582 File dirty = entry.getDirtyFile(i); 583 if (success) { 584 if (dirty.exists()) { 585 File clean = entry.getCleanFile(i); 586 dirty.renameTo(clean); 587 long oldLength = entry.lengths[i]; 588 long newLength = clean.length(); 589 entry.lengths[i] = newLength; 590 size = size - oldLength + newLength; 591 } 592 } else { 593 deleteIfExists(dirty); 594 } 595 } 596 597 redundantOpCount++; 598 entry.currentEditor = null; 599 if (entry.readable | success) { 600 entry.readable = true; 601 journalWriter.write(CLEAN + ' ' + entry.key + entry.getLengths() + '\n'); 602 if (success) { 603 entry.sequenceNumber = nextSequenceNumber++; 604 } 605 } else { 606 lruEntries.remove(entry.key); 607 journalWriter.write(REMOVE + ' ' + entry.key + '\n'); 608 } 609 610 if (size > maxSize || journalRebuildRequired()) { 611 executorService.submit(cleanupCallable); 612 } 613 } 614 615 /** 616 * We only rebuild the journal when it will halve the size of the journal 617 * and eliminate at least 2000 ops. 618 */ 619 private boolean journalRebuildRequired() { 620 final int REDUNDANT_OP_COMPACT_THRESHOLD = 2000; 621 return redundantOpCount >= REDUNDANT_OP_COMPACT_THRESHOLD 622 && redundantOpCount >= lruEntries.size(); 623 } 624 625 /** 626 * Drops the entry for {@code key} if it exists and can be removed. Entries 627 * actively being edited cannot be removed. 628 * 629 * @return true if an entry was removed. 630 */ 631 public synchronized boolean remove(String key) throws IOException { 632 checkNotClosed(); 633 validateKey(key); 634 Entry entry = lruEntries.get(key); 635 if (entry == null || entry.currentEditor != null) { 636 return false; 637 } 638 639 for (int i = 0; i < valueCount; i++) { 640 File file = entry.getCleanFile(i); 641 if (!file.delete()) { 642 throw new IOException("failed to delete " + file); 643 } 644 size -= entry.lengths[i]; 645 entry.lengths[i] = 0; 646 } 647 648 redundantOpCount++; 649 journalWriter.append(REMOVE + ' ' + key + '\n'); 650 lruEntries.remove(key); 651 652 if (journalRebuildRequired()) { 653 executorService.submit(cleanupCallable); 654 } 655 656 return true; 657 } 658 659 /** 660 * Returns true if this cache has been closed. 661 */ 662 public boolean isClosed() { 663 return journalWriter == null; 664 } 665 666 private void checkNotClosed() { 667 if (journalWriter == null) { 668 throw new IllegalStateException("cache is closed"); 669 } 670 } 671 672 /** 673 * Force buffered operations to the filesystem. 674 */ 675 public synchronized void flush() throws IOException { 676 checkNotClosed(); 677 trimToSize(); 678 journalWriter.flush(); 679 } 680 681 /** 682 * Closes this cache. Stored values will remain on the filesystem. 683 */ 684 public synchronized void close() throws IOException { 685 if (journalWriter == null) { 686 return; // already closed 687 } 688 for (Entry entry : new ArrayList<Entry>(lruEntries.values())) { 689 if (entry.currentEditor != null) { 690 entry.currentEditor.abort(); 691 } 692 } 693 trimToSize(); 694 journalWriter.close(); 695 journalWriter = null; 696 } 697 698 private void trimToSize() throws IOException { 699 while (size > maxSize) { 700 // Map.Entry<String, Entry> toEvict = lruEntries.eldest(); 701 final Map.Entry<String, Entry> toEvict = lruEntries.entrySet().iterator().next(); 702 remove(toEvict.getKey()); 703 } 704 } 705 706 /** 707 * Closes the cache and deletes all of its stored values. This will delete 708 * all files in the cache directory including files that weren't created by 709 * the cache. 710 */ 711 public void delete() throws IOException { 712 close(); 713 deleteContents(directory); 714 } 715 716 private void validateKey(String key) { 717 if (key.contains(" ") || key.contains("\n") || key.contains("\r")) { 718 throw new IllegalArgumentException( 719 "keys must not contain spaces or newlines: \"" + key + "\""); 720 } 721 } 722 723 private static String inputStreamToString(InputStream in) throws IOException { 724 return readFully(new InputStreamReader(in, UTF_8)); 725 } 726 727 /** 728 * A snapshot of the values for an entry. 729 */ 730 public final class Snapshot implements Closeable { 731 private final String key; 732 private final long sequenceNumber; 733 private final InputStream[] ins; 734 735 private Snapshot(String key, long sequenceNumber, InputStream[] ins) { 736 this.key = key; 737 this.sequenceNumber = sequenceNumber; 738 this.ins = ins; 739 } 740 741 /** 742 * Returns an editor for this snapshot's entry, or null if either the 743 * entry has changed since this snapshot was created or if another edit 744 * is in progress. 745 */ 746 public Editor edit() throws IOException { 747 return DiskLruCache.this.edit(key, sequenceNumber); 748 } 749 750 /** 751 * Returns the unbuffered stream with the value for {@code index}. 752 */ 753 public InputStream getInputStream(int index) { 754 return ins[index]; 755 } 756 757 /** 758 * Returns the string value for {@code index}. 759 */ 760 public String getString(int index) throws IOException { 761 return inputStreamToString(getInputStream(index)); 762 } 763 764 @Override public void close() { 765 for (InputStream in : ins) { 766 closeQuietly(in); 767 } 768 } 769 } 770 771 /** 772 * Edits the values for an entry. 773 */ 774 public final class Editor { 775 private final Entry entry; 776 private boolean hasErrors; 777 778 private Editor(Entry entry) { 779 this.entry = entry; 780 } 781 782 /** 783 * Returns an unbuffered input stream to read the last committed value, 784 * or null if no value has been committed. 785 */ 786 public InputStream newInputStream(int index) throws IOException { 787 synchronized (DiskLruCache.this) { 788 if (entry.currentEditor != this) { 789 throw new IllegalStateException(); 790 } 791 if (!entry.readable) { 792 return null; 793 } 794 return new FileInputStream(entry.getCleanFile(index)); 795 } 796 } 797 798 /** 799 * Returns the last committed value as a string, or null if no value 800 * has been committed. 801 */ 802 public String getString(int index) throws IOException { 803 InputStream in = newInputStream(index); 804 return in != null ? inputStreamToString(in) : null; 805 } 806 807 /** 808 * Returns a new unbuffered output stream to write the value at 809 * {@code index}. If the underlying output stream encounters errors 810 * when writing to the filesystem, this edit will be aborted when 811 * {@link #commit} is called. The returned output stream does not throw 812 * IOExceptions. 813 */ 814 public OutputStream newOutputStream(int index) throws IOException { 815 synchronized (DiskLruCache.this) { 816 if (entry.currentEditor != this) { 817 throw new IllegalStateException(); 818 } 819 return new FaultHidingOutputStream(new FileOutputStream(entry.getDirtyFile(index))); 820 } 821 } 822 823 /** 824 * Sets the value at {@code index} to {@code value}. 825 */ 826 public void set(int index, String value) throws IOException { 827 Writer writer = null; 828 try { 829 writer = new OutputStreamWriter(newOutputStream(index), UTF_8); 830 writer.write(value); 831 } finally { 832 closeQuietly(writer); 833 } 834 } 835 836 /** 837 * Commits this edit so it is visible to readers. This releases the 838 * edit lock so another edit may be started on the same key. 839 */ 840 public void commit() throws IOException { 841 if (hasErrors) { 842 completeEdit(this, false); 843 remove(entry.key); // the previous entry is stale 844 } else { 845 completeEdit(this, true); 846 } 847 } 848 849 /** 850 * Aborts this edit. This releases the edit lock so another edit may be 851 * started on the same key. 852 */ 853 public void abort() throws IOException { 854 completeEdit(this, false); 855 } 856 857 private class FaultHidingOutputStream extends FilterOutputStream { 858 private FaultHidingOutputStream(OutputStream out) { 859 super(out); 860 } 861 862 @Override public void write(int oneByte) { 863 try { 864 out.write(oneByte); 865 } catch (IOException e) { 866 hasErrors = true; 867 } 868 } 869 870 @Override public void write(byte[] buffer, int offset, int length) { 871 try { 872 out.write(buffer, offset, length); 873 } catch (IOException e) { 874 hasErrors = true; 875 } 876 } 877 878 @Override public void close() { 879 try { 880 out.close(); 881 } catch (IOException e) { 882 hasErrors = true; 883 } 884 } 885 886 @Override public void flush() { 887 try { 888 out.flush(); 889 } catch (IOException e) { 890 hasErrors = true; 891 } 892 } 893 } 894 } 895 896 private final class Entry { 897 private final String key; 898 899 /** Lengths of this entry's files. */ 900 private final long[] lengths; 901 902 /** True if this entry has ever been published */ 903 private boolean readable; 904 905 /** The ongoing edit or null if this entry is not being edited. */ 906 private Editor currentEditor; 907 908 /** The sequence number of the most recently committed edit to this entry. */ 909 private long sequenceNumber; 910 911 private Entry(String key) { 912 this.key = key; 913 this.lengths = new long[valueCount]; 914 } 915 916 public String getLengths() throws IOException { 917 StringBuilder result = new StringBuilder(); 918 for (long size : lengths) { 919 result.append(' ').append(size); 920 } 921 return result.toString(); 922 } 923 924 /** 925 * Set lengths using decimal numbers like "10123". 926 */ 927 private void setLengths(String[] strings) throws IOException { 928 if (strings.length != valueCount) { 929 throw invalidLengths(strings); 930 } 931 932 try { 933 for (int i = 0; i < strings.length; i++) { 934 lengths[i] = Long.parseLong(strings[i]); 935 } 936 } catch (NumberFormatException e) { 937 throw invalidLengths(strings); 938 } 939 } 940 941 private IOException invalidLengths(String[] strings) throws IOException { 942 throw new IOException("unexpected journal line: " + Arrays.toString(strings)); 943 } 944 945 public File getCleanFile(int i) { 946 return new File(directory, key + "." + i); 947 } 948 949 public File getDirtyFile(int i) { 950 return new File(directory, key + "." + i + ".tmp"); 951 } 952 } 953 } DiskLruCache磁盤緩存類

?

4、圖片緩存類,包含(LruCache內(nèi)存緩存,DiskLruCache磁盤緩存)

1 package com.lcw.rabbit.image.utils; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.OutputStream; 6 7 import android.content.Context; 8 import android.content.pm.PackageInfo; 9 import android.content.pm.PackageManager.NameNotFoundException; 10 import android.graphics.Bitmap; 11 import android.graphics.Bitmap.CompressFormat; 12 import android.graphics.BitmapFactory; 13 import android.os.Environment; 14 import android.support.v4.util.LruCache; 15 import android.util.Log; 16 17 import com.android.volley.toolbox.ImageLoader.ImageCache; 18 import com.lcw.rabbit.image.utils.DiskLruCache.Snapshot; 19 20 /** 21 * 圖片緩存幫助類 22 * 23 * 包含內(nèi)存緩存LruCache和磁盤緩存DiskLruCache 24 * 25 * @author Rabbit_Lee 26 * 27 */ 28 public class ImageCacheUtil implements ImageCache { 29 30 private String TAG=ImageCacheUtil.this.getClass().getSimpleName(); 31 32 //緩存類 33 private static LruCache<String, Bitmap> mLruCache; 34 private static DiskLruCache mDiskLruCache; 35 36 //磁盤緩存大小 37 private static final int DISKMAXSIZE = 10 * 1024 * 1024; 38 39 public ImageCacheUtil() { 40 // 獲取應(yīng)用可占內(nèi)存的1/8作為緩存 41 int maxSize = (int) (Runtime.getRuntime().maxMemory() / 8); 42 // 實例化LruCaceh對象 43 mLruCache = new LruCache<String, Bitmap>(maxSize) { 44 @Override 45 protected int sizeOf(String key, Bitmap bitmap) { 46 return bitmap.getRowBytes() * bitmap.getHeight(); 47 } 48 }; 49 try { 50 // 獲取DiskLruCahce對象 51 mDiskLruCache = DiskLruCache.open(getDiskCacheDir(MyApplication.newInstance(), "Rabbit"), getAppVersion(MyApplication.newInstance()), 1, DISKMAXSIZE); 52 } catch (IOException e) { 53 e.printStackTrace(); 54 } 55 } 56 57 /** 58 * 從緩存(內(nèi)存緩存,磁盤緩存)中獲取Bitmap 59 */ 60 @Override 61 public Bitmap getBitmap(String url) { 62 if (mLruCache.get(url) != null) { 63 // 從LruCache緩存中取 64 Log.i(TAG,"從LruCahce獲取"); 65 return mLruCache.get(url); 66 } else { 67 String key = MD5Utils.md5(url); 68 try { 69 if (mDiskLruCache.get(key) != null) { 70 // 從DiskLruCahce取 71 Snapshot snapshot = mDiskLruCache.get(key); 72 Bitmap bitmap = null; 73 if (snapshot != null) { 74 bitmap = BitmapFactory.decodeStream(snapshot.getInputStream(0)); 75 // 存入LruCache緩存 76 mLruCache.put(url, bitmap); 77 Log.i(TAG,"從DiskLruCahce獲取"); 78 } 79 return bitmap; 80 } 81 } catch (IOException e) { 82 e.printStackTrace(); 83 } 84 } 85 return null; 86 } 87 88 /** 89 * 存入緩存(內(nèi)存緩存,磁盤緩存) 90 */ 91 @Override 92 public void putBitmap(String url, Bitmap bitmap) { 93 // 存入LruCache緩存 94 mLruCache.put(url, bitmap); 95 // 判斷是否存在DiskLruCache緩存,若沒有存入 96 String key = MD5Utils.md5(url); 97 try { 98 if (mDiskLruCache.get(key) == null) { 99 DiskLruCache.Editor editor = mDiskLruCache.edit(key); 100 if (editor != null) { 101 OutputStream outputStream = editor.newOutputStream(0); 102 if (bitmap.compress(CompressFormat.JPEG, 100, outputStream)) { 103 editor.commit(); 104 } else { 105 editor.abort(); 106 } 107 } 108 mDiskLruCache.flush(); 109 } 110 } catch (IOException e) { 111 e.printStackTrace(); 112 } 113 114 } 115 116 /** 117 * 該方法會判斷當(dāng)前sd卡是否存在,然后選擇緩存地址 118 * 119 * @param context 120 * @param uniqueName 121 * @return 122 */ 123 public static File getDiskCacheDir(Context context, String uniqueName) { 124 String cachePath; 125 if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || !Environment.isExternalStorageRemovable()) { 126 cachePath = context.getExternalCacheDir().getPath(); 127 } else { 128 cachePath = context.getCacheDir().getPath(); 129 } 130 return new File(cachePath + File.separator + uniqueName); 131 } 132 133 /** 134 * 獲取應(yīng)用版本號 135 * 136 * @param context 137 * @return 138 */ 139 public int getAppVersion(Context context) { 140 try { 141 PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); 142 return info.versionCode; 143 } catch (NameNotFoundException e) { 144 e.printStackTrace(); 145 } 146 return 1; 147 } 148 149 }

?

5、圖片緩存管理類

這里的圖片加載運用到了Volley自帶的ImageLoader,在它的構(gòu)造方法中需要一個ImageCache對象,在上面的圖片緩存類已實現(xiàn)了該接口。

這里向外部提供了一個loadImage的重載方法,一個傳入加載圖片的寬高,一個默認(rèn)加載原圖,使得外部不再需要關(guān)注任何關(guān)于緩存的操作。

1 package com.lcw.rabbit.image; 2 3 import android.graphics.Bitmap; 4 import android.widget.ImageView; 5 6 import com.android.volley.VolleyError; 7 import com.android.volley.toolbox.ImageLoader; 8 import com.android.volley.toolbox.ImageLoader.ImageCache; 9 import com.android.volley.toolbox.ImageLoader.ImageContainer; 10 import com.android.volley.toolbox.ImageLoader.ImageListener; 11 import com.lcw.rabbit.image.utils.ImageCacheUtil; 12 13 /** 14 * 圖片緩存管理類 獲取ImageLoader對象 15 * 16 * @author Rabbit_Lee 17 * 18 */ 19 public class ImageCacheManager { 20 21 private static String TAG = ImageCacheManager.class.getSimpleName(); 22 23 // 獲取圖片緩存類對象 24 private static ImageCache mImageCache = new ImageCacheUtil(); 25 // 獲取ImageLoader對象 26 public static ImageLoader mImageLoader = new ImageLoader(VolleyRequestQueueManager.mRequestQueue, mImageCache); 27 28 /** 29 * 獲取ImageListener 30 * 31 * @param view 32 * @param defaultImage 33 * @param errorImage 34 * @return 35 */ 36 public static ImageListener getImageListener(final ImageView view, final Bitmap defaultImage, final Bitmap errorImage) { 37 38 return new ImageListener() { 39 40 @Override 41 public void onErrorResponse(VolleyError error) { 42 // 回調(diào)失敗 43 if (errorImage != null) { 44 view.setImageBitmap(errorImage); 45 } 46 } 47 48 @Override 49 public void onResponse(ImageContainer response, boolean isImmediate) { 50 // 回調(diào)成功 51 if (response.getBitmap() != null) { 52 view.setImageBitmap(response.getBitmap()); 53 } else if (defaultImage != null) { 54 view.setImageBitmap(defaultImage); 55 } 56 } 57 }; 58 59 } 60 61 /** 62 * 提供給外部調(diào)用方法 63 * 64 * @param url 65 * @param view 66 * @param defaultImage 67 * @param errorImage 68 */ 69 public static void loadImage(String url, ImageView view, Bitmap defaultImage, Bitmap errorImage) { 70 mImageLoader.get(url, ImageCacheManager.getImageListener(view, defaultImage, errorImage), 0, 0); 71 } 72 73 /** 74 * 提供給外部調(diào)用方法 75 * 76 * @param url 77 * @param view 78 * @param defaultImage 79 * @param errorImage 80 */ 81 public static void loadImage(String url, ImageView view, Bitmap defaultImage, Bitmap errorImage, int maxWidth, int maxHeight) { 82 mImageLoader.get(url, ImageCacheManager.getImageListener(view, defaultImage, errorImage), maxWidth, maxHeight); 83 } 84 }

?

6、MainActivity類

1 package com.lcw.rabbit.image; 2 3 import android.app.Activity; 4 import android.content.res.Resources; 5 import android.graphics.Bitmap; 6 import android.graphics.BitmapFactory; 7 import android.os.Bundle; 8 import android.view.View; 9 import android.view.View.OnClickListener; 10 import android.widget.Button; 11 import android.widget.ImageView; 12 13 public class MainActivity extends Activity { 14 15 private Button mButton; 16 private ImageView mImageView; 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_main); 22 mButton = (Button) findViewById(R.id.button); 23 mImageView= (ImageView) findViewById(R.id.image); 24 25 26 mButton.setOnClickListener(new OnClickListener() { 27 28 @Override 29 public void onClick(View v) { 30 String url = "https://img-blog.csdn.net/20130702124537953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdDEyeDM0NTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"; 31 ImageCacheManager.loadImage(url, mImageView, getBitmapFromRes(R.drawable.ic_launcher), getBitmapFromRes(R.drawable.ic_launcher)); 32 33 } 34 }); 35 } 36 37 public Bitmap getBitmapFromRes(int resId) { 38 Resources res = this.getResources(); 39 return BitmapFactory.decodeResource(res, resId); 40 41 } 42 43 }

?

到這里代碼就結(jié)束了,由于主要是講關(guān)于緩存層的運用,關(guān)于Volley,LruCache,DiskCache的介紹使用,這里就不再闡述了,網(wǎng)上資料很多,大家查閱下便是。

有任何疑問或者建議,大家可以在文章評論給我留言,一起交流!

?

?

作者:李晨瑋
出處:http://www.cnblogs.com/lichenwei/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
正在看本人博客的這位童鞋,我看你氣度不凡,談吐間隱隱有王者之氣,日后必有一番作為!旁邊有“推薦”二字,你就順手把它點了吧,相得準(zhǔn),我分文不收;相不準(zhǔn),你也好回來找我!

轉(zhuǎn)載于:https://www.cnblogs.com/lichenwei/p/4651576.html

總結(jié)

以上是生活随笔為你收集整理的安卓开发笔记——关于图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产情侣作爱视频免费观看 | 无码吃奶揉捏奶头高潮视频 | 狠狠亚洲超碰狼人久久 | 4hu四虎永久在线观看 | 综合激情五月综合激情五月激情1 | 亚洲自偷自拍另类第1页 | 麻豆果冻传媒2021精品传媒一区下载 | 国产精品18久久久久久麻辣 | 久久久精品成人免费观看 | 美女毛片一区二区三区四区 | 国产熟妇另类久久久久 | 日韩无套无码精品 | 1000部夫妻午夜免费 | 在线观看欧美一区二区三区 | 欧美 日韩 亚洲 在线 | 国产成人综合在线女婷五月99播放 | 午夜福利一区二区三区在线观看 | 日韩成人一区二区三区在线观看 | 日日天干夜夜狠狠爱 | 国产成人无码区免费内射一片色欲 | aⅴ在线视频男人的天堂 | 人人妻人人澡人人爽欧美一区 | 国产激情无码一区二区app | 在线看片无码永久免费视频 | 亚洲国产精品久久人人爱 | 亚洲精品久久久久久久久久久 | 国产人妻精品午夜福利免费 | 初尝人妻少妇中文字幕 | 成人无码精品1区2区3区免费看 | 国产激情无码一区二区app | 欧美日韩一区二区三区自拍 | 成人精品天堂一区二区三区 | 国产真实夫妇视频 | 亚洲熟妇色xxxxx亚洲 | 男女性色大片免费网站 | 377p欧洲日本亚洲大胆 | 草草网站影院白丝内射 | 十八禁真人啪啪免费网站 | 精品久久久无码人妻字幂 | 久久久久人妻一区精品色欧美 | 国产精品99久久精品爆乳 | 波多野结衣av一区二区全免费观看 | 国产97色在线 | 免 | 亚欧洲精品在线视频免费观看 | 亚洲理论电影在线观看 | 图片小说视频一区二区 | 香港三级日本三级妇三级 | 内射老妇bbwx0c0ck | 亚洲欧美国产精品久久 | 亚洲精品欧美二区三区中文字幕 | 日本一卡二卡不卡视频查询 | 国产精品亚洲lv粉色 | 亚洲 a v无 码免 费 成 人 a v | 国产欧美熟妇另类久久久 | 激情五月综合色婷婷一区二区 | 国产激情无码一区二区app | 亚洲人成无码网www | 国产卡一卡二卡三 | 99久久精品日本一区二区免费 | www国产亚洲精品久久久日本 | 国产成人精品视频ⅴa片软件竹菊 | 在线观看免费人成视频 | 国产sm调教视频在线观看 | 亚洲 a v无 码免 费 成 人 a v | 中文字幕av日韩精品一区二区 | 两性色午夜免费视频 | 无码人妻丰满熟妇区毛片18 | 亚洲精品午夜国产va久久成人 | 巨爆乳无码视频在线观看 | 欧美日韩久久久精品a片 | 色诱久久久久综合网ywww | 久久成人a毛片免费观看网站 | 一二三四社区在线中文视频 | 亚洲成在人网站无码天堂 | 成年美女黄网站色大免费视频 | 国产成人综合美国十次 | 成人动漫在线观看 | 激情亚洲一区国产精品 | 人妻熟女一区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 奇米影视7777久久精品人人爽 | 欧美精品无码一区二区三区 | 香蕉久久久久久av成人 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲理论电影在线观看 | 99视频精品全部免费免费观看 | 7777奇米四色成人眼影 | 鲁鲁鲁爽爽爽在线视频观看 | 成人aaa片一区国产精品 | 精品久久久久久人妻无码中文字幕 | 99久久99久久免费精品蜜桃 | 一本久久a久久精品vr综合 | 久久久久久久久蜜桃 | 婷婷六月久久综合丁香 | 久久久久久久女国产乱让韩 | 国产一区二区三区精品视频 | 九九久久精品国产免费看小说 | 国产亚洲精品久久久久久国模美 | 美女极度色诱视频国产 | 国产午夜视频在线观看 | 亚洲精品无码国产 | a在线亚洲男人的天堂 | 激情五月综合色婷婷一区二区 | 99精品无人区乱码1区2区3区 | 欧美丰满少妇xxxx性 | 人人妻人人澡人人爽人人精品 | 欧美老人巨大xxxx做受 | 无遮无挡爽爽免费视频 | 丰满岳乱妇在线观看中字无码 | 狠狠色欧美亚洲狠狠色www | 日韩少妇白浆无码系列 | 亚洲欧美国产精品久久 | 中文字幕无码免费久久9一区9 | 国产av一区二区精品久久凹凸 | 欧美熟妇另类久久久久久多毛 | 亚洲日韩av一区二区三区中文 | 久久午夜无码鲁丝片秋霞 | 精品 日韩 国产 欧美 视频 | 精品国产乱码久久久久乱码 | 精品国产一区二区三区av 性色 | 亚洲精品久久久久中文第一幕 | 国产九九九九九九九a片 | 色婷婷综合中文久久一本 | 精品欧美一区二区三区久久久 | 18无码粉嫩小泬无套在线观看 | 国产精品怡红院永久免费 | 欧美熟妇另类久久久久久多毛 | 国产性生大片免费观看性 | 人妻aⅴ无码一区二区三区 | 国产综合在线观看 | 一本久道久久综合婷婷五月 | 人妻无码αv中文字幕久久琪琪布 | 色情久久久av熟女人妻网站 | 熟女少妇人妻中文字幕 | 国产一区二区三区影院 | 午夜嘿嘿嘿影院 | 无码任你躁久久久久久久 | 久久久国产一区二区三区 | 青青久在线视频免费观看 | 无码国产乱人伦偷精品视频 | 在教室伦流澡到高潮hnp视频 | 日本熟妇人妻xxxxx人hd | 成熟妇人a片免费看网站 | 久久久www成人免费毛片 | 永久免费观看国产裸体美女 | 亚洲熟女一区二区三区 | 国产一区二区三区精品视频 | 午夜性刺激在线视频免费 | 中文字幕人妻丝袜二区 | 国产真人无遮挡作爱免费视频 | 蜜臀aⅴ国产精品久久久国产老师 | 久久精品国产日本波多野结衣 | 亚洲日韩av一区二区三区中文 | 亚洲中文字幕在线无码一区二区 | 国产偷抇久久精品a片69 | 熟妇激情内射com | 久久午夜夜伦鲁鲁片无码免费 | 老熟女乱子伦 | 蜜臀av无码人妻精品 | 精品国产一区二区三区四区 | 亚洲国产一区二区三区在线观看 | 成人精品视频一区二区三区尤物 | 精品无码国产一区二区三区av | 亚洲熟妇自偷自拍另类 | 99麻豆久久久国产精品免费 | 蜜臀av无码人妻精品 | www国产亚洲精品久久网站 | 日日碰狠狠躁久久躁蜜桃 | 国产精品内射视频免费 | 久久精品女人的天堂av | 国产人妻大战黑人第1集 | 少妇人妻偷人精品无码视频 | 一本久道久久综合婷婷五月 | 欧美丰满老熟妇xxxxx性 | 久久精品国产亚洲精品 | 无码人妻精品一区二区三区下载 | 伊在人天堂亚洲香蕉精品区 | 欧美乱妇无乱码大黄a片 | 麻豆国产人妻欲求不满谁演的 | 精品久久久中文字幕人妻 | 欧美成人高清在线播放 | 偷窥日本少妇撒尿chinese | 99久久婷婷国产综合精品青草免费 | 国产午夜精品一区二区三区嫩草 | 亚洲国产欧美日韩精品一区二区三区 | 日本丰满护士爆乳xxxx | 激情国产av做激情国产爱 | 免费人成在线视频无码 | 丰满肥臀大屁股熟妇激情视频 | 亚洲精品成人福利网站 | av人摸人人人澡人人超碰下载 | 老太婆性杂交欧美肥老太 | 永久免费观看国产裸体美女 | 国产精品-区区久久久狼 | 久在线观看福利视频 | 欧美成人家庭影院 | 性做久久久久久久免费看 | 午夜福利一区二区三区在线观看 | 亚洲精品国产a久久久久久 | 无码人妻少妇伦在线电影 | 日本精品久久久久中文字幕 | 国产精品igao视频网 | 亚洲色偷偷偷综合网 | 亚洲区小说区激情区图片区 | 日本丰满护士爆乳xxxx | 亚洲无人区一区二区三区 | 樱花草在线播放免费中文 | 亚洲精品欧美二区三区中文字幕 | 国产精品成人av在线观看 | 久久精品成人欧美大片 | 一本大道久久东京热无码av | 亚洲爆乳无码专区 | 99国产欧美久久久精品 | 免费观看激色视频网站 | 久久久无码中文字幕久... | 亚洲精品国产精品乱码视色 | 夜先锋av资源网站 | 熟妇女人妻丰满少妇中文字幕 | 久久国语露脸国产精品电影 | 特黄特色大片免费播放器图片 | 国产精品久久久久久久9999 | 午夜精品久久久内射近拍高清 | 香港三级日本三级妇三级 | 国产精品久久精品三级 | 日本丰满熟妇videos | 蜜桃视频韩日免费播放 | 亚洲毛片av日韩av无码 | 国产超碰人人爽人人做人人添 | 少妇被黑人到高潮喷出白浆 | 国产情侣作爱视频免费观看 | 国产在热线精品视频 | 18禁黄网站男男禁片免费观看 | 99在线 | 亚洲 | 欧洲精品码一区二区三区免费看 | 精品国产一区av天美传媒 | 国产成人无码午夜视频在线观看 | 少妇性l交大片欧洲热妇乱xxx | 精品国产av色一区二区深夜久久 | 欧美老妇与禽交 | 国内丰满熟女出轨videos | 300部国产真实乱 | 美女扒开屁股让男人桶 | 国产香蕉尹人视频在线 | 天下第一社区视频www日本 | 巨爆乳无码视频在线观看 | 亚洲国产精品无码久久久久高潮 | 精品成人av一区二区三区 | 欧美日韩一区二区综合 | 日韩精品一区二区av在线 | 成人性做爰aaa片免费看 | 97夜夜澡人人双人人人喊 | 久久精品99久久香蕉国产色戒 | 两性色午夜免费视频 | 亚洲s色大片在线观看 | 欧美日本免费一区二区三区 | 日本爽爽爽爽爽爽在线观看免 | 亚洲欧美精品伊人久久 | 熟妇激情内射com | 日韩欧美中文字幕公布 | 亚洲中文字幕久久无码 | 亚洲国产午夜精品理论片 | 久久国语露脸国产精品电影 | 国语自产偷拍精品视频偷 | 亚洲精品国产精品乱码视色 | 国产午夜亚洲精品不卡 | av人摸人人人澡人人超碰下载 | 国产精品va在线播放 | 熟妇人妻中文av无码 | 日本在线高清不卡免费播放 | 日韩精品无码一本二本三本色 | 中文字幕乱码人妻无码久久 | 国精品人妻无码一区二区三区蜜柚 | 久久久精品456亚洲影院 | 日韩精品无码一本二本三本色 | 国产欧美熟妇另类久久久 | 亚洲自偷精品视频自拍 | 曰韩无码二三区中文字幕 | 亚洲精品午夜国产va久久成人 | 欧美人妻一区二区三区 | 日本www一道久久久免费榴莲 | 少妇厨房愉情理9仑片视频 | 精品久久久无码中文字幕 | 日韩人妻少妇一区二区三区 | 成人欧美一区二区三区 | 四虎影视成人永久免费观看视频 | 亚洲色成人中文字幕网站 | 亚洲 a v无 码免 费 成 人 a v | 永久黄网站色视频免费直播 | 少妇性荡欲午夜性开放视频剧场 | 亚洲人成无码网www | 国产精品对白交换视频 | 久久人人爽人人爽人人片ⅴ | 人妻无码久久精品人妻 | 99精品视频在线观看免费 | 欧美国产日韩亚洲中文 | 精品人妻人人做人人爽夜夜爽 | 国产内射老熟女aaaa | 狂野欧美激情性xxxx | 成熟妇人a片免费看网站 | 午夜福利试看120秒体验区 | av人摸人人人澡人人超碰下载 | 人妻少妇精品久久 | 国产激情综合五月久久 | 白嫩日本少妇做爰 | 女高中生第一次破苞av | 国产午夜视频在线观看 | 骚片av蜜桃精品一区 | 黑人巨大精品欧美黑寡妇 | 亚洲春色在线视频 | 成 人 免费观看网站 | 色窝窝无码一区二区三区色欲 | 初尝人妻少妇中文字幕 | 国产精华av午夜在线观看 | 免费看男女做好爽好硬视频 | 装睡被陌生人摸出水好爽 | 国产两女互慰高潮视频在线观看 | 亚洲男人av天堂午夜在 | 亚洲精品国产精品乱码不卡 | 久久精品成人欧美大片 | 2019nv天堂香蕉在线观看 | 久久综合九色综合欧美狠狠 | 日本熟妇大屁股人妻 | 乱人伦中文视频在线观看 | √8天堂资源地址中文在线 | 久久久久亚洲精品中文字幕 | 亚洲日韩乱码中文无码蜜桃臀网站 | 99久久婷婷国产综合精品青草免费 | 青青青爽视频在线观看 | 西西人体www44rt大胆高清 | 日日麻批免费40分钟无码 | 人人超人人超碰超国产 | 亚拍精品一区二区三区探花 | 久久久久亚洲精品男人的天堂 | 精品无码av一区二区三区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 伊人久久大香线蕉午夜 | 亚洲精品久久久久久久久久久 | 国产97人人超碰caoprom | 1000部啪啪未满十八勿入下载 | 小sao货水好多真紧h无码视频 | 久久人人爽人人爽人人片av高清 | 性欧美大战久久久久久久 | 亚洲综合色区中文字幕 | 亚洲国产成人av在线观看 | 欧美午夜特黄aaaaaa片 | 亚洲国产精品美女久久久久 | 成人免费视频视频在线观看 免费 | 撕开奶罩揉吮奶头视频 | 国产av无码专区亚洲a∨毛片 | 俺去俺来也www色官网 | 国产极品视觉盛宴 | 一本色道久久综合狠狠躁 | 在线观看国产午夜福利片 | 精品久久久无码人妻字幂 | 无码一区二区三区在线 | 日本又色又爽又黄的a片18禁 | 国内精品人妻无码久久久影院 | 久久 国产 尿 小便 嘘嘘 | 伊人久久大香线蕉午夜 | 精品人妻人人做人人爽夜夜爽 | 九九综合va免费看 | 无码人妻出轨黑人中文字幕 | 精品无码一区二区三区爱欲 | 自拍偷自拍亚洲精品被多人伦好爽 | 乱码午夜-极国产极内射 | 国产无遮挡又黄又爽免费视频 | 国产精品久久久午夜夜伦鲁鲁 | 女人色极品影院 | 人妻无码久久精品人妻 | 亚洲国产精品久久人人爱 | 国产成人无码区免费内射一片色欲 | 国产69精品久久久久app下载 | 亚洲一区二区三区在线观看网站 | 国产在线精品一区二区三区直播 | 99久久精品国产一区二区蜜芽 | 狂野欧美性猛交免费视频 | 精品无码成人片一区二区98 | 日日摸夜夜摸狠狠摸婷婷 | 任你躁国产自任一区二区三区 | 亚洲人成网站色7799 | 国产精品久久久久久无码 | 国产成人综合在线女婷五月99播放 | 中文字幕乱码中文乱码51精品 | 国产免费观看黄av片 | 99视频精品全部免费免费观看 | 内射欧美老妇wbb | 97人妻精品一区二区三区 | 99er热精品视频 | 日本乱偷人妻中文字幕 | 亚洲高清偷拍一区二区三区 | 亚洲精品国偷拍自产在线麻豆 | 无码人妻精品一区二区三区不卡 | 久久亚洲中文字幕无码 | 5858s亚洲色大成网站www | 精品无码一区二区三区的天堂 | 久久精品女人的天堂av | 中文字幕av无码一区二区三区电影 | 无码国内精品人妻少妇 | 国产精品igao视频网 | 亚洲国产精品一区二区第一页 | 国产精品久久久av久久久 | 精品无人国产偷自产在线 | 欧美第一黄网免费网站 | 久久国产精品_国产精品 | 黑森林福利视频导航 | 亚欧洲精品在线视频免费观看 | 亚洲欧洲日本综合aⅴ在线 | 一本色道婷婷久久欧美 | 又黄又爽又色的视频 | 一本久久伊人热热精品中文字幕 | 亚洲精品午夜国产va久久成人 | 未满小14洗澡无码视频网站 | 亚洲精品中文字幕久久久久 | 久久精品人妻少妇一区二区三区 | 强辱丰满人妻hd中文字幕 | 无码播放一区二区三区 | 国产精品久久国产精品99 | 少妇无码一区二区二三区 | 国产成人精品视频ⅴa片软件竹菊 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲精品国产精品乱码不卡 | 色婷婷久久一区二区三区麻豆 | 无码人妻久久一区二区三区不卡 | 亚洲成av人影院在线观看 | 午夜无码人妻av大片色欲 | 又紧又大又爽精品一区二区 | ass日本丰满熟妇pics | 伊人久久婷婷五月综合97色 | 亚洲综合精品香蕉久久网 | 国产成人无码午夜视频在线观看 | 在线亚洲高清揄拍自拍一品区 | 亚洲狠狠色丁香婷婷综合 | 国产精品久久久久久亚洲影视内衣 | 久久综合九色综合欧美狠狠 | 国产午夜无码精品免费看 | 精品一二三区久久aaa片 | 蜜桃无码一区二区三区 | 亚洲阿v天堂在线 | 99er热精品视频 | 国产精品久久国产三级国 | 亚洲国产精品一区二区第一页 | 国产无套内射久久久国产 | 久久无码专区国产精品s | 亚洲欧美国产精品久久 | 男女爱爱好爽视频免费看 | 精品久久久中文字幕人妻 | 亚洲综合精品香蕉久久网 | 欧美人与动性行为视频 | 丰满诱人的人妻3 | 亚洲s色大片在线观看 | 亚洲日本va中文字幕 | 免费男性肉肉影院 | 国产真人无遮挡作爱免费视频 | 在线 国产 欧美 亚洲 天堂 | 人人爽人人爽人人片av亚洲 | 欧美三级不卡在线观看 | 男女超爽视频免费播放 | 日产国产精品亚洲系列 | 99久久人妻精品免费一区 | 国产97在线 | 亚洲 | 久久久国产精品无码免费专区 | 久久午夜无码鲁丝片秋霞 | 亚洲乱码中文字幕在线 | 牲欲强的熟妇农村老妇女 | 台湾无码一区二区 | 日本又色又爽又黄的a片18禁 | 亚洲区欧美区综合区自拍区 | 国产精品久久久久久亚洲毛片 | 成人欧美一区二区三区黑人 | 97久久超碰中文字幕 | 亚洲区欧美区综合区自拍区 | 永久免费精品精品永久-夜色 | 欧美性生交活xxxxxdddd | 真人与拘做受免费视频一 | 97久久国产亚洲精品超碰热 | 欧美 亚洲 国产 另类 | 精品亚洲成av人在线观看 | 丰满少妇女裸体bbw | a片免费视频在线观看 | 狂野欧美性猛交免费视频 | 99久久精品国产一区二区蜜芽 | 中文字幕av无码一区二区三区电影 | 亚洲区欧美区综合区自拍区 | 亚洲精品成a人在线观看 | 色综合久久久无码网中文 | 人妻少妇精品无码专区二区 | 中文无码精品a∨在线观看不卡 | 伊人久久婷婷五月综合97色 | 欧美老妇交乱视频在线观看 | 亚洲小说春色综合另类 | 色综合天天综合狠狠爱 | 亚洲区小说区激情区图片区 | 日韩精品无码一区二区中文字幕 | 亚洲精品综合一区二区三区在线 | 久久国产36精品色熟妇 | 成人一区二区免费视频 | 亚洲国产av精品一区二区蜜芽 | 丰满人妻翻云覆雨呻吟视频 | 欧美丰满熟妇xxxx | 亚洲爆乳精品无码一区二区三区 | 国产成人精品三级麻豆 | 久久精品国产大片免费观看 | 亚洲热妇无码av在线播放 | 中文字幕乱码人妻二区三区 | 亚洲国产精品无码一区二区三区 | 国产精品成人av在线观看 | 久久人妻内射无码一区三区 | 色情久久久av熟女人妻网站 | 亚洲日本va中文字幕 | 亚洲精品国产第一综合99久久 | 亚洲人成影院在线无码按摩店 | 国语精品一区二区三区 | 亚洲欧美综合区丁香五月小说 | 亚洲国产精华液网站w | 亚洲一区二区三区国产精华液 | 国产又粗又硬又大爽黄老大爷视 | 精品无人区无码乱码毛片国产 | 日本大香伊一区二区三区 | 免费男性肉肉影院 | 欧美乱妇无乱码大黄a片 | 欧美 丝袜 自拍 制服 另类 | 九九热爱视频精品 | 欧美日韩久久久精品a片 | 国产精品久久久久久无码 | 日韩精品成人一区二区三区 | 亚洲精品国产品国语在线观看 | 兔费看少妇性l交大片免费 | 兔费看少妇性l交大片免费 | 久久久精品欧美一区二区免费 | 高清无码午夜福利视频 | 色婷婷av一区二区三区之红樱桃 | 亚洲经典千人经典日产 | 人人妻人人澡人人爽欧美一区 | 久久国内精品自在自线 | 欧美日韩一区二区三区自拍 | 久久99热只有频精品8 | 无码国产激情在线观看 | 久久99久久99精品中文字幕 | 激情内射日本一区二区三区 | 丝袜足控一区二区三区 | 欧美35页视频在线观看 | www国产亚洲精品久久网站 | 色综合久久中文娱乐网 | 亚洲伊人久久精品影院 | 欧美亚洲日韩国产人成在线播放 | 中国大陆精品视频xxxx | 婷婷综合久久中文字幕蜜桃三电影 | 国产精品人人爽人人做我的可爱 | 性啪啪chinese东北女人 | 日日天干夜夜狠狠爱 | 成人无码视频在线观看网站 | 精品国产福利一区二区 | 又粗又大又硬又长又爽 | 亚洲人成网站免费播放 | 国产凸凹视频一区二区 | 亚洲国产精品无码久久久久高潮 | 成年美女黄网站色大免费视频 | 亚洲精品美女久久久久久久 | 性生交大片免费看女人按摩摩 | 国产乱人偷精品人妻a片 | 国产精品自产拍在线观看 | 国产卡一卡二卡三 | 中文字幕无码日韩专区 | 伊在人天堂亚洲香蕉精品区 | 精品亚洲成av人在线观看 | 亚洲一区二区三区在线观看网站 | 国产又爽又黄又刺激的视频 | 最新国产乱人伦偷精品免费网站 | 精品国产一区二区三区四区 | 国产无av码在线观看 | 国产精品嫩草久久久久 | 欧美真人作爱免费视频 | 国产无av码在线观看 | 国产电影无码午夜在线播放 | 中文字幕无码av激情不卡 | 人人妻人人澡人人爽精品欧美 | 亚洲精品一区国产 | 一本加勒比波多野结衣 | 国产成人精品三级麻豆 | 国产亚洲视频中文字幕97精品 | 亚洲春色在线视频 | 久久久久99精品国产片 | 色欲综合久久中文字幕网 | 亚洲国产精品无码一区二区三区 | 六月丁香婷婷色狠狠久久 | 亚洲乱亚洲乱妇50p | 曰韩少妇内射免费播放 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 久久这里只有精品视频9 | 国产精品免费大片 | 日日摸日日碰夜夜爽av | 一区二区传媒有限公司 | 大肉大捧一进一出视频出来呀 | 内射后入在线观看一区 | 午夜男女很黄的视频 | 午夜精品一区二区三区在线观看 | 黑森林福利视频导航 | 熟妇人妻中文av无码 | 久久久av男人的天堂 | 久久综合给久久狠狠97色 | 欧美精品在线观看 | 亚洲第一无码av无码专区 | 日韩亚洲欧美中文高清在线 | 男女爱爱好爽视频免费看 | 成人免费视频在线观看 | 少妇性荡欲午夜性开放视频剧场 | a在线亚洲男人的天堂 | 51国偷自产一区二区三区 | 中文字幕亚洲情99在线 | 人妻互换免费中文字幕 | 内射欧美老妇wbb | 图片小说视频一区二区 | 亚洲熟妇自偷自拍另类 | 国产精品久久国产精品99 | aⅴ在线视频男人的天堂 | 亚洲精品欧美二区三区中文字幕 | 久久久久国色av免费观看性色 | 六十路熟妇乱子伦 | 精品一区二区三区波多野结衣 | 中文久久乱码一区二区 | 高清不卡一区二区三区 | 久久久亚洲欧洲日产国码αv | 亚洲爆乳大丰满无码专区 | 国产精品福利视频导航 | 2019午夜福利不卡片在线 | 中文无码伦av中文字幕 | 欧美精品免费观看二区 | 欧美精品一区二区精品久久 | 亚洲毛片av日韩av无码 | 成人无码影片精品久久久 | 99久久久国产精品无码免费 | 欧美 亚洲 国产 另类 | 色欲人妻aaaaaaa无码 | 男女下面进入的视频免费午夜 | 精品国产精品久久一区免费式 | 亚洲精品久久久久中文第一幕 | a在线观看免费网站大全 | 亚洲一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 日本一区二区三区免费高清 | 欧美日韩视频无码一区二区三 | 亚洲人成网站色7799 | 久久国产精品_国产精品 | 日日麻批免费40分钟无码 | 99久久99久久免费精品蜜桃 | 日韩少妇内射免费播放 | 永久免费观看国产裸体美女 | 国产亚洲精品久久久久久久久动漫 | 亚洲精品国产品国语在线观看 | 色综合久久久无码中文字幕 | 老熟妇仑乱视频一区二区 | 一本精品99久久精品77 | 丰满少妇女裸体bbw | 欧美日韩精品 | 一个人看的视频www在线 | 欧美日韩视频无码一区二区三 | 久久久久免费看成人影片 | 大屁股大乳丰满人妻 | 国内精品九九久久久精品 | 伊人久久大香线焦av综合影院 | 乱码av麻豆丝袜熟女系列 | 东京一本一道一二三区 | 天天拍夜夜添久久精品 | 久久亚洲精品成人无码 | 精品国产aⅴ无码一区二区 | 俄罗斯老熟妇色xxxx | 欧美三级不卡在线观看 | 日本乱人伦片中文三区 | 久久国产精品二国产精品 | 久久久精品欧美一区二区免费 | 99久久久国产精品无码免费 | 最新国产麻豆aⅴ精品无码 | 十八禁视频网站在线观看 | 波多野结衣 黑人 | 国产人妻精品一区二区三区 | 久在线观看福利视频 | 欧美性猛交xxxx富婆 | 国产精品成人av在线观看 | 人妻中文无码久热丝袜 | 久久精品国产亚洲精品 | 亚洲国产精品一区二区第一页 | 久久 国产 尿 小便 嘘嘘 | 亚洲精品欧美二区三区中文字幕 | 无遮挡啪啪摇乳动态图 | 精品成在人线av无码免费看 | 国产精品鲁鲁鲁 | 久久精品国产一区二区三区肥胖 | 成人无码精品一区二区三区 | 久久久成人毛片无码 | 亚洲精品久久久久avwww潮水 | 国产黑色丝袜在线播放 | 亚洲熟妇色xxxxx欧美老妇y | 精品国产一区二区三区四区在线看 | 99久久精品无码一区二区毛片 | 亚洲中文字幕在线观看 | 中文字幕日韩精品一区二区三区 | 欧美 日韩 人妻 高清 中文 | 玩弄人妻少妇500系列视频 | 日韩成人一区二区三区在线观看 | 色老头在线一区二区三区 | 黑人粗大猛烈进出高潮视频 | 伊在人天堂亚洲香蕉精品区 | 亚洲一区二区三区无码久久 | 亚洲精品中文字幕久久久久 | 日本va欧美va欧美va精品 | 亚洲精品美女久久久久久久 | 亚洲自偷自拍另类第1页 | 中文字幕无码免费久久9一区9 | 水蜜桃亚洲一二三四在线 | 精品人妻人人做人人爽夜夜爽 | 俺去俺来也www色官网 | 国产精品无码mv在线观看 | 无码福利日韩神码福利片 | 久久久中文字幕日本无吗 | 亚洲欧洲日本综合aⅴ在线 | 无码人妻丰满熟妇区五十路百度 | 亚洲欧洲日本无在线码 | 色窝窝无码一区二区三区色欲 | 国产色视频一区二区三区 | 国产综合在线观看 | 樱花草在线社区www | 成人av无码一区二区三区 | 日本精品久久久久中文字幕 | 日韩精品成人一区二区三区 | 嫩b人妻精品一区二区三区 | 熟妇激情内射com | 国产猛烈高潮尖叫视频免费 | 国精产品一区二区三区 | 成熟妇人a片免费看网站 | 久久亚洲中文字幕精品一区 | 亚洲日本va中文字幕 | 东京无码熟妇人妻av在线网址 | 国产色xx群视频射精 | 蜜桃视频韩日免费播放 | 大地资源网第二页免费观看 | 窝窝午夜理论片影院 | 国産精品久久久久久久 | 国产亚洲精品久久久久久国模美 | 国产手机在线αⅴ片无码观看 | 亚洲日韩中文字幕在线播放 | 人妻无码αv中文字幕久久琪琪布 | 国产精品久久久久久久影院 | 内射老妇bbwx0c0ck | 狠狠躁日日躁夜夜躁2020 | 久久久久久av无码免费看大片 | 日韩av激情在线观看 | 永久免费观看国产裸体美女 | 久久伊人色av天堂九九小黄鸭 | 国产综合在线观看 | 国产国产精品人在线视 | 久久午夜无码鲁丝片秋霞 | 99久久精品日本一区二区免费 | 国产激情无码一区二区app | 99精品无人区乱码1区2区3区 | 日本熟妇乱子伦xxxx | 精品少妇爆乳无码av无码专区 | 欧美精品免费观看二区 | 高潮喷水的毛片 | 偷窥日本少妇撒尿chinese | 人妻中文无码久热丝袜 | 国产99久久精品一区二区 | 久久人人爽人人爽人人片av高清 | 欧美肥老太牲交大战 | 国产九九九九九九九a片 | 日产精品99久久久久久 | 图片区 小说区 区 亚洲五月 | 久久97精品久久久久久久不卡 | 亚洲国产av精品一区二区蜜芽 | 白嫩日本少妇做爰 | 少妇太爽了在线观看 | 亚洲另类伦春色综合小说 | 最新国产麻豆aⅴ精品无码 | 色综合久久88色综合天天 | 日产精品99久久久久久 | 国产av剧情md精品麻豆 | 无码人妻精品一区二区三区下载 | 精品国产福利一区二区 | 欧美一区二区三区视频在线观看 | 狠狠色欧美亚洲狠狠色www | 久久久久久九九精品久 | 亚洲中文字幕在线观看 | 无码av岛国片在线播放 | 国产av剧情md精品麻豆 | 国产在线精品一区二区三区直播 | 欧美人与动性行为视频 | 久久久久久a亚洲欧洲av冫 | 国内精品人妻无码久久久影院蜜桃 | 国产超级va在线观看视频 | 两性色午夜视频免费播放 | 又粗又大又硬毛片免费看 | 麻豆蜜桃av蜜臀av色欲av | 欧美激情一区二区三区成人 | 人妻少妇精品无码专区动漫 | 亚洲日韩av一区二区三区四区 | 88国产精品欧美一区二区三区 | 国产两女互慰高潮视频在线观看 | 粉嫩少妇内射浓精videos | 男人的天堂2018无码 | 97资源共享在线视频 | 国产一区二区三区精品视频 | 狠狠噜狠狠狠狠丁香五月 | 99麻豆久久久国产精品免费 | 自拍偷自拍亚洲精品被多人伦好爽 | 18无码粉嫩小泬无套在线观看 | 我要看www免费看插插视频 | 十八禁视频网站在线观看 | 好屌草这里只有精品 | 人妻中文无码久热丝袜 | 中文无码精品a∨在线观看不卡 | 日日摸日日碰夜夜爽av | 亚洲色在线无码国产精品不卡 | 任你躁国产自任一区二区三区 | 强辱丰满人妻hd中文字幕 | 国产电影无码午夜在线播放 | 高清国产亚洲精品自在久久 | 67194成是人免费无码 | 精品国产aⅴ无码一区二区 | 青青久在线视频免费观看 | 夜精品a片一区二区三区无码白浆 | 成人影院yy111111在线观看 | 久久国产36精品色熟妇 | 丝袜足控一区二区三区 | 日本又色又爽又黄的a片18禁 | 亚洲精品成人福利网站 | 中文字幕人妻丝袜二区 | 国产av剧情md精品麻豆 | 午夜丰满少妇性开放视频 | 无码毛片视频一区二区本码 | 国产精品久久久午夜夜伦鲁鲁 | 国产精品人人妻人人爽 | 国产午夜亚洲精品不卡下载 | 熟女俱乐部五十路六十路av | 人人妻人人澡人人爽欧美一区 | 无码一区二区三区在线 | 国模大胆一区二区三区 | 国产又爽又黄又刺激的视频 | 少妇无码av无码专区在线观看 | 天堂无码人妻精品一区二区三区 | 亚洲成av人综合在线观看 | 性做久久久久久久久 | 国产亚洲精品久久久久久久 | 日本xxxx色视频在线观看免费 | 亚洲熟熟妇xxxx | 三上悠亚人妻中文字幕在线 | 国产成人无码a区在线观看视频app | 亚洲午夜福利在线观看 | 福利一区二区三区视频在线观看 | 亚无码乱人伦一区二区 | 久久综合给合久久狠狠狠97色 | 窝窝午夜理论片影院 | 国产精品久久久午夜夜伦鲁鲁 | 一本久久a久久精品亚洲 | 男人的天堂2018无码 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲精品一区二区三区在线 | 日日摸天天摸爽爽狠狠97 | 欧美日韩在线亚洲综合国产人 | 日韩精品一区二区av在线 | 人妻无码αv中文字幕久久琪琪布 | 色一情一乱一伦一区二区三欧美 | 亚洲欧洲日本综合aⅴ在线 | 欧美怡红院免费全部视频 | 国产亚洲精品久久久久久 | 成人免费视频视频在线观看 免费 | 国产亚洲精品久久久久久大师 | 最近免费中文字幕中文高清百度 | 国产激情艳情在线看视频 | 无码av中文字幕免费放 | 伦伦影院午夜理论片 | 欧美日本免费一区二区三区 | 沈阳熟女露脸对白视频 | 国产成人无码专区 | 又大又黄又粗又爽的免费视频 | 无码毛片视频一区二区本码 | 老太婆性杂交欧美肥老太 | 高清国产亚洲精品自在久久 | av人摸人人人澡人人超碰下载 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产精品久久久av久久久 | 日韩欧美中文字幕在线三区 | 国产人妻人伦精品1国产丝袜 | аⅴ资源天堂资源库在线 | 最新版天堂资源中文官网 | 男女性色大片免费网站 | 日本护士xxxxhd少妇 | 亚洲区欧美区综合区自拍区 | 大肉大捧一进一出视频出来呀 | 六十路熟妇乱子伦 | 亚洲一区二区三区在线观看网站 | 欧美人与牲动交xxxx | 亚洲国产精品一区二区美利坚 | 男人扒开女人内裤强吻桶进去 | 97久久精品无码一区二区 | 婷婷六月久久综合丁香 | 亚洲s码欧洲m码国产av | 四虎国产精品一区二区 | а√天堂www在线天堂小说 | 色情久久久av熟女人妻网站 | 亚洲成av人片在线观看无码不卡 | 嫩b人妻精品一区二区三区 | 99久久婷婷国产综合精品青草免费 | 嫩b人妻精品一区二区三区 | 国产麻豆精品精东影业av网站 | 久久久久亚洲精品男人的天堂 | 久久精品成人欧美大片 | 亚洲精品午夜无码电影网 | 国产精品毛片一区二区 | 无码国产乱人伦偷精品视频 | 大色综合色综合网站 | 免费人成网站视频在线观看 | 又粗又大又硬毛片免费看 | 亚洲色成人中文字幕网站 | 国产黄在线观看免费观看不卡 | 四虎国产精品一区二区 | 国产亚洲欧美日韩亚洲中文色 | 日本护士xxxxhd少妇 | 中文字幕无码乱人伦 | 精品国精品国产自在久国产87 | 无码乱肉视频免费大全合集 | 国语精品一区二区三区 | 一本精品99久久精品77 | 亚洲阿v天堂在线 | 午夜免费福利小电影 | 老司机亚洲精品影院 | 国产精品人妻一区二区三区四 | 久久精品国产一区二区三区肥胖 | 亚拍精品一区二区三区探花 | 免费国产黄网站在线观看 | 思思久久99热只有频精品66 | 无码国产色欲xxxxx视频 | 国产成人人人97超碰超爽8 | 久久99精品国产麻豆蜜芽 | 无遮挡啪啪摇乳动态图 | 六十路熟妇乱子伦 | 欧洲欧美人成视频在线 | 偷窥日本少妇撒尿chinese | 国产免费无码一区二区视频 | 久久久久成人片免费观看蜜芽 | 99久久精品日本一区二区免费 | 久在线观看福利视频 | 国产真实乱对白精彩久久 | 无码国内精品人妻少妇 | 国产精品久久精品三级 | 国产人成高清在线视频99最全资源 | 亚洲一区二区三区国产精华液 | 国产女主播喷水视频在线观看 | 丰满少妇高潮惨叫视频 | 婷婷五月综合缴情在线视频 | 亚洲中文字幕在线无码一区二区 | 人人妻人人澡人人爽欧美一区九九 | 欧美黑人性暴力猛交喷水 | 高潮毛片无遮挡高清免费 | 国产无遮挡又黄又爽免费视频 | 三上悠亚人妻中文字幕在线 | 日本一卡二卡不卡视频查询 | 天堂а√在线中文在线 | 国内少妇偷人精品视频免费 | 99麻豆久久久国产精品免费 | 精品成人av一区二区三区 | 免费看男女做好爽好硬视频 | 97人妻精品一区二区三区 | 国产午夜精品一区二区三区嫩草 | 久久五月精品中文字幕 | 中国大陆精品视频xxxx | 丰满人妻被黑人猛烈进入 | 亚洲国产精华液网站w | 国产精品自产拍在线观看 | 久久无码中文字幕免费影院蜜桃 | 日本精品少妇一区二区三区 | 久久久国产精品无码免费专区 | 99麻豆久久久国产精品免费 | 噜噜噜亚洲色成人网站 | 久久久久成人片免费观看蜜芽 | 99re在线播放 | 亚洲色偷偷偷综合网 | 18禁黄网站男男禁片免费观看 | 自拍偷自拍亚洲精品10p | 久热国产vs视频在线观看 | 国内综合精品午夜久久资源 | 国产精品自产拍在线观看 | 精品无码国产自产拍在线观看蜜 | 特级做a爰片毛片免费69 | 最近的中文字幕在线看视频 | 久久久成人毛片无码 | 亚洲 另类 在线 欧美 制服 | 999久久久国产精品消防器材 | 欧美 丝袜 自拍 制服 另类 | 无码一区二区三区在线 | 内射欧美老妇wbb | 少妇一晚三次一区二区三区 | 久久综合给久久狠狠97色 | 妺妺窝人体色www在线小说 | 精品偷自拍另类在线观看 | 国产 浪潮av性色四虎 | 少妇人妻av毛片在线看 | 一区二区三区高清视频一 | 性史性农村dvd毛片 | 俺去俺来也在线www色官网 | 久久精品国产99久久6动漫 | 国产特级毛片aaaaaaa高清 | 免费播放一区二区三区 | 一本久久a久久精品亚洲 | 国产福利视频一区二区 | 久久综合给合久久狠狠狠97色 | 131美女爱做视频 | 性做久久久久久久免费看 | 久久国语露脸国产精品电影 | 亚洲а∨天堂久久精品2021 | 久久久av男人的天堂 | 99视频精品全部免费免费观看 | 亚洲自偷自拍另类第1页 | 国产精品亚洲五月天高清 | 色偷偷人人澡人人爽人人模 | 99久久精品午夜一区二区 | 国产婷婷色一区二区三区在线 | 红桃av一区二区三区在线无码av | 国产亚洲精品久久久久久久 | 在线欧美精品一区二区三区 | √8天堂资源地址中文在线 | 狠狠色噜噜狠狠狠狠7777米奇 | ass日本丰满熟妇pics | 欧美喷潮久久久xxxxx | 日日干夜夜干 | 少妇无码吹潮 | 夜精品a片一区二区三区无码白浆 | 免费看男女做好爽好硬视频 | 国产精品内射视频免费 | 国产精品无码永久免费888 | 日本一区二区三区免费高清 | 夫妻免费无码v看片 | 久久久久se色偷偷亚洲精品av | 丰满人妻一区二区三区免费视频 | 真人与拘做受免费视频 | 国产激情无码一区二区app | 丝袜 中出 制服 人妻 美腿 | 国精品人妻无码一区二区三区蜜柚 | 国产热a欧美热a在线视频 | 久久97精品久久久久久久不卡 | 少妇无码一区二区二三区 | 色综合久久久无码网中文 | 欧洲熟妇色 欧美 | 日本xxxx色视频在线观看免费 | 伊人久久大香线蕉av一区二区 | 久久久精品456亚洲影院 | 亚洲 a v无 码免 费 成 人 a v | 国产美女精品一区二区三区 | 欧美精品一区二区精品久久 | 人妻体内射精一区二区三四 | 婷婷五月综合激情中文字幕 | 无码av最新清无码专区吞精 | 日欧一片内射va在线影院 | 粉嫩少妇内射浓精videos | 欧美精品在线观看 | 两性色午夜视频免费播放 | 日韩亚洲欧美中文高清在线 | 久久国内精品自在自线 | 色婷婷欧美在线播放内射 | 亚洲日韩一区二区三区 | 亚洲国产高清在线观看视频 | 熟妇人妻无乱码中文字幕 | 成人综合网亚洲伊人 | 欧美日本日韩 | 国产乱码精品一品二品 | 国产舌乚八伦偷品w中 | 久久综合给久久狠狠97色 | 精品国产一区av天美传媒 | 18黄暴禁片在线观看 | 久久精品女人天堂av免费观看 | 日韩精品久久久肉伦网站 | 无码人妻黑人中文字幕 | 亚洲成av人影院在线观看 | 久久久久久久人妻无码中文字幕爆 | 国产香蕉97碰碰久久人人 | 欧美自拍另类欧美综合图片区 | 丰满人妻精品国产99aⅴ | 久久人人97超碰a片精品 | 无码午夜成人1000部免费视频 | 日本欧美一区二区三区乱码 | 婷婷色婷婷开心五月四房播播 | 国产精品嫩草久久久久 | 久久99精品久久久久久 | 99久久久无码国产精品免费 | 欧美色就是色 | 伊人久久婷婷五月综合97色 | 熟妇激情内射com | 又湿又紧又大又爽a视频国产 | 熟妇人妻激情偷爽文 | 少妇无码av无码专区在线观看 | √天堂中文官网8在线 | 东京一本一道一二三区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 55夜色66夜色国产精品视频 | 国产婷婷色一区二区三区在线 | 熟妇人妻无乱码中文字幕 | 日韩欧美中文字幕公布 | 欧美性生交xxxxx久久久 | 无人区乱码一区二区三区 | 国产精品永久免费视频 | 无码福利日韩神码福利片 | 18无码粉嫩小泬无套在线观看 | 亚洲成a人片在线观看日本 | 免费人成在线视频无码 | 无码人妻精品一区二区三区下载 | 亚洲国产日韩a在线播放 | 夜夜影院未满十八勿进 | 色综合天天综合狠狠爱 | 美女扒开屁股让男人桶 | 国产亚洲tv在线观看 | 亚洲精品一区国产 | 久久精品国产精品国产精品污 | 色五月丁香五月综合五月 | 欧美日韩亚洲国产精品 | 欧美 日韩 人妻 高清 中文 | 欧美放荡的少妇 | 免费男性肉肉影院 | 国产97色在线 | 免 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产亚洲精品久久久久久久 | 真人与拘做受免费视频一 | 老子影院午夜伦不卡 | 伊人久久婷婷五月综合97色 | 天堂亚洲2017在线观看 | 国产av一区二区精品久久凹凸 | 日本xxxx色视频在线观看免费 | 波多野结衣av在线观看 | 久激情内射婷内射蜜桃人妖 | 亚洲欧洲日本综合aⅴ在线 | 99久久精品午夜一区二区 | 国产精品人人妻人人爽 | 久久精品国产一区二区三区 | 1000部啪啪未满十八勿入下载 | 黑人大群体交免费视频 | 在线 国产 欧美 亚洲 天堂 | 永久免费观看美女裸体的网站 | 免费国产成人高清在线观看网站 | 亚拍精品一区二区三区探花 | 日日碰狠狠丁香久燥 | 成人免费视频一区二区 | 色欲av亚洲一区无码少妇 | 国产精品无码一区二区桃花视频 | 成人免费无码大片a毛片 | 亚洲欧洲中文日韩av乱码 | 亚洲国产欧美日韩精品一区二区三区 | 国产精品久久久av久久久 | 色综合天天综合狠狠爱 | 女人被男人爽到呻吟的视频 | 乱人伦人妻中文字幕无码 | 久久99精品国产.久久久久 | 东京热无码av男人的天堂 | 国产偷抇久久精品a片69 | 好爽又高潮了毛片免费下载 | 亚洲欧美日韩成人高清在线一区 | 天天躁日日躁狠狠躁免费麻豆 | 欧美成人免费全部网站 | 国产后入清纯学生妹 | 999久久久国产精品消防器材 | 领导边摸边吃奶边做爽在线观看 | 国产亚洲精品久久久久久 | 国产激情艳情在线看视频 | 人妻少妇精品视频专区 | 激情亚洲一区国产精品 | 亚洲一区二区三区偷拍女厕 | 沈阳熟女露脸对白视频 | 色婷婷久久一区二区三区麻豆 | 国产电影无码午夜在线播放 | 丰满人妻翻云覆雨呻吟视频 | 动漫av网站免费观看 | 欧美日韩色另类综合 | 亚洲熟悉妇女xxx妇女av | 撕开奶罩揉吮奶头视频 | 一二三四在线观看免费视频 | 成人免费视频一区二区 | 好爽又高潮了毛片免费下载 | 国产人妻精品一区二区三区 | 久久久久久久女国产乱让韩 | 人妻少妇被猛烈进入中文字幕 | 性欧美牲交xxxxx视频 | 国产色在线 | 国产 | 日本在线高清不卡免费播放 | 丝袜美腿亚洲一区二区 | 熟妇女人妻丰满少妇中文字幕 | 免费观看激色视频网站 | 亚洲一区二区三区香蕉 | 国产午夜视频在线观看 | 一个人看的www免费视频在线观看 | 免费男性肉肉影院 | 精品乱码久久久久久久 | 伊在人天堂亚洲香蕉精品区 | 久久亚洲精品中文字幕无男同 | 呦交小u女精品视频 | 欧美freesex黑人又粗又大 | 久久国产精品偷任你爽任你 | 亚洲人成网站免费播放 | 中文久久乱码一区二区 | 纯爱无遮挡h肉动漫在线播放 | 国产无遮挡又黄又爽免费视频 | 少妇人妻大乳在线视频 | 亚洲 a v无 码免 费 成 人 a v | 欧美freesex黑人又粗又大 | 精品一二三区久久aaa片 | 免费无码一区二区三区蜜桃大 | 国产av人人夜夜澡人人爽麻豆 | 正在播放老肥熟妇露脸 | 欧美午夜特黄aaaaaa片 | 国产精品久久久av久久久 | 精品熟女少妇av免费观看 | 亚洲日本在线电影 | 性生交大片免费看女人按摩摩 | 欧美喷潮久久久xxxxx | 国产亚洲欧美在线专区 | 日本乱人伦片中文三区 | 鲁鲁鲁爽爽爽在线视频观看 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲国产精品一区二区美利坚 | 波多野结衣高清一区二区三区 | 国产精品无码久久av | 日韩欧美中文字幕公布 | 狠狠色欧美亚洲狠狠色www | 国产热a欧美热a在线视频 | 久久成人a毛片免费观看网站 | 97色伦图片97综合影院 | 久久久久免费精品国产 | 亚洲熟女一区二区三区 | 欧美老人巨大xxxx做受 | 国产亚洲人成a在线v网站 | 亚洲精品久久久久avwww潮水 | 中文无码伦av中文字幕 | 夜夜夜高潮夜夜爽夜夜爰爰 | 成人影院yy111111在线观看 | 欧美日韩久久久精品a片 | 狠狠躁日日躁夜夜躁2020 | 国产精品久久久久久久影院 | 中文字幕乱码中文乱码51精品 | 综合人妻久久一区二区精品 | 久久国语露脸国产精品电影 | 亚洲中文字幕在线观看 | 国产亚洲日韩欧美另类第八页 | 亚洲精品国偷拍自产在线麻豆 | 好爽又高潮了毛片免费下载 | 国产又爽又猛又粗的视频a片 | 图片小说视频一区二区 | 中文字幕+乱码+中文字幕一区 | 成人aaa片一区国产精品 | 亚洲中文字幕在线观看 | 国产麻豆精品精东影业av网站 | 亚洲啪av永久无码精品放毛片 | 激情综合激情五月俺也去 | 日本xxxx色视频在线观看免费 | 成人精品天堂一区二区三区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 欧美精品免费观看二区 | 国产又爽又猛又粗的视频a片 | 亚洲一区二区三区香蕉 | 国产精品国产自线拍免费软件 | aa片在线观看视频在线播放 | 蜜桃视频插满18在线观看 | 欧美日韩在线亚洲综合国产人 | 精品乱子伦一区二区三区 | 色一情一乱一伦 | 日日橹狠狠爱欧美视频 | 亚洲小说春色综合另类 | 欧洲熟妇精品视频 | 真人与拘做受免费视频 | 欧洲欧美人成视频在线 | 性欧美熟妇videofreesex | 国产精品视频免费播放 | 麻花豆传媒剧国产免费mv在线 | 天堂亚洲免费视频 | 内射白嫩少妇超碰 | 国产xxx69麻豆国语对白 | 欧美xxxx黑人又粗又长 | 98国产精品综合一区二区三区 | 国产人妖乱国产精品人妖 | 亚洲一区二区三区无码久久 | 水蜜桃亚洲一二三四在线 | 在线精品亚洲一区二区 | 亚洲国产精品美女久久久久 | 性生交大片免费看女人按摩摩 | 成人性做爰aaa片免费看不忠 | 无码人妻精品一区二区三区下载 | 天堂а√在线地址中文在线 | 又大又硬又爽免费视频 | 久久久久久国产精品无码下载 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产精品高潮呻吟av久久4虎 | 人人妻人人澡人人爽精品欧美 | 国产av剧情md精品麻豆 | 亚洲欧美日韩国产精品一区二区 | 国产成人综合在线女婷五月99播放 | 欧美人与禽zoz0性伦交 | 亚洲中文字幕无码一久久区 | 欧美freesex黑人又粗又大 | 国产三级久久久精品麻豆三级 | 兔费看少妇性l交大片免费 | 久久zyz资源站无码中文动漫 | 影音先锋中文字幕无码 | 男女下面进入的视频免费午夜 | 国产免费无码一区二区视频 | 国产精品美女久久久久av爽李琼 | 久久久久久a亚洲欧洲av冫 | 国产成人无码av一区二区 | 亚洲国产综合无码一区 | 国产午夜精品一区二区三区嫩草 | 日本又色又爽又黄的a片18禁 | 欧美放荡的少妇 | www国产亚洲精品久久网站 | 国产精品99爱免费视频 | 中文字幕中文有码在线 | 一本久道高清无码视频 | 色婷婷欧美在线播放内射 | 亚洲精品www久久久 | 真人与拘做受免费视频 | 成人三级无码视频在线观看 | av无码久久久久不卡免费网站 | 亚洲狠狠婷婷综合久久 | 中文字幕日产无线码一区 | 日韩人妻无码中文字幕视频 | 曰本女人与公拘交酡免费视频 | 人妻少妇被猛烈进入中文字幕 | 久久精品国产99精品亚洲 | 国产精品第一区揄拍无码 | 一个人免费观看的www视频 | 日本熟妇乱子伦xxxx | 嫩b人妻精品一区二区三区 | 秋霞成人午夜鲁丝一区二区三区 | 久久久久成人精品免费播放动漫 | 在线 国产 欧美 亚洲 天堂 | 久久久久人妻一区精品色欧美 | 乱人伦中文视频在线观看 | 成人综合网亚洲伊人 | 欧美变态另类xxxx | 国产精品久久久一区二区三区 | 大地资源网第二页免费观看 | 澳门永久av免费网站 | 六月丁香婷婷色狠狠久久 | 国产精品人人爽人人做我的可爱 | 国产一区二区三区日韩精品 | 少妇的肉体aa片免费 | 国产麻豆精品精东影业av网站 | 欧美黑人巨大xxxxx | 在线播放亚洲第一字幕 | ass日本丰满熟妇pics | 日本丰满护士爆乳xxxx | 欧美亚洲国产一区二区三区 | 秋霞成人午夜鲁丝一区二区三区 | 精品成在人线av无码免费看 | 亚洲综合久久一区二区 | 国产精品人人妻人人爽 | 超碰97人人做人人爱少妇 | 亚洲日韩av一区二区三区中文 | 一区二区三区高清视频一 | 日日摸天天摸爽爽狠狠97 | 亚洲色偷偷男人的天堂 | 欧美人与善在线com | 自拍偷自拍亚洲精品10p | 亚洲国产综合无码一区 | 老熟妇乱子伦牲交视频 | 久久精品国产一区二区三区肥胖 | 国产精品美女久久久久av爽李琼 | 熟妇人妻无乱码中文字幕 | 性欧美牲交xxxxx视频 | 无码毛片视频一区二区本码 | 一本久道高清无码视频 | 一二三四在线观看免费视频 | 亚洲欧洲日本综合aⅴ在线 | 纯爱无遮挡h肉动漫在线播放 | 永久黄网站色视频免费直播 | 欧洲熟妇色 欧美 | 亚洲熟妇色xxxxx欧美老妇y | 国产综合久久久久鬼色 | 国语精品一区二区三区 | 国产九九九九九九九a片 | 人妻少妇精品无码专区二区 | 国产人妻精品午夜福利免费 | 日韩 欧美 动漫 国产 制服 | 亚洲欧美国产精品专区久久 | 亚洲中文字幕成人无码 | 免费网站看v片在线18禁无码 | 狠狠色噜噜狠狠狠7777奇米 | 久久精品女人的天堂av | 白嫩日本少妇做爰 | 成在人线av无码免费 | 人妻尝试又大又粗久久 | 蜜桃臀无码内射一区二区三区 | 亚洲人成无码网www | 成年女人永久免费看片 | 日产精品高潮呻吟av久久 | 日本熟妇大屁股人妻 | 亚洲国产精品毛片av不卡在线 | 亚洲精品一区二区三区在线观看 | 成熟人妻av无码专区 | 亚洲欧美日韩国产精品一区二区 | 免费播放一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲最大成人网站 | 成人亚洲精品久久久久软件 | 欧美日韩一区二区免费视频 | 97无码免费人妻超级碰碰夜夜 | 精品无码国产自产拍在线观看蜜 | 东京一本一道一二三区 | 无码任你躁久久久久久久 | 又色又爽又黄的美女裸体网站 | 久久伊人色av天堂九九小黄鸭 | 人妻插b视频一区二区三区 | 中文字幕无码热在线视频 | 国产精品香蕉在线观看 | 国产亚洲精品久久久久久久 | 中文字幕av伊人av无码av | 国产后入清纯学生妹 | 国产综合在线观看 | 中文字幕乱妇无码av在线 | 国产特级毛片aaaaaaa高清 | 欧美日韩色另类综合 | 国产香蕉97碰碰久久人人 | 蜜臀av无码人妻精品 | 精品人妻人人做人人爽 | 亚洲人成网站在线播放942 | 一本大道久久东京热无码av | 东京无码熟妇人妻av在线网址 | 亚洲爆乳大丰满无码专区 | 成人三级无码视频在线观看 | 欧美人与禽猛交狂配 | 人妻人人添人妻人人爱 | 黑人粗大猛烈进出高潮视频 | 成人欧美一区二区三区黑人 | 日韩av激情在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 日日碰狠狠躁久久躁蜜桃 | 大地资源中文第3页 | 国产麻豆精品精东影业av网站 | 国产美女精品一区二区三区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产亚洲精品精品国产亚洲综合 | 国产偷自视频区视频 | 国产精品第一区揄拍无码 | 六月丁香婷婷色狠狠久久 | 无遮挡国产高潮视频免费观看 | 亚洲熟妇色xxxxx欧美老妇y | 人人澡人摸人人添 | 麻豆国产人妻欲求不满 | 高潮毛片无遮挡高清免费 | 欧美亚洲国产一区二区三区 | 中文字幕av伊人av无码av | 精品国精品国产自在久国产87 | 又粗又大又硬毛片免费看 | 国产日产欧产精品精品app | 欧美zoozzooz性欧美 | 亚洲午夜福利在线观看 | 丝袜 中出 制服 人妻 美腿 | 国产午夜手机精彩视频 | 男人的天堂2018无码 | 成 人 免费观看网站 | 麻花豆传媒剧国产免费mv在线 | 久久这里只有精品视频9 | 成人精品视频一区二区三区尤物 | 亚洲狠狠婷婷综合久久 | 一个人看的www免费视频在线观看 | 亚洲国产成人a精品不卡在线 | 久久97精品久久久久久久不卡 | 亚洲热妇无码av在线播放 | 亚洲春色在线视频 | 天堂а√在线中文在线 | 亚洲一区二区三区含羞草 | 精品国偷自产在线视频 | 国産精品久久久久久久 | 麻豆av传媒蜜桃天美传媒 | 久久精品中文闷骚内射 | 丰腴饱满的极品熟妇 | 六月丁香婷婷色狠狠久久 | 欧美 日韩 亚洲 在线 | 国产又爽又猛又粗的视频a片 | 亚洲成a人片在线观看日本 | 免费无码午夜福利片69 | 亚洲色大成网站www国产 | 久久99国产综合精品 | 色综合久久88色综合天天 | 日韩欧美成人免费观看 | 奇米影视7777久久精品人人爽 | 水蜜桃色314在线观看 | 2020久久香蕉国产线看观看 | 中文字幕av日韩精品一区二区 | 国产真人无遮挡作爱免费视频 | 东京热一精品无码av | 久久久久久亚洲精品a片成人 | 亚洲国精产品一二二线 | 无码帝国www无码专区色综合 | 国内揄拍国内精品少妇国语 | 成人性做爰aaa片免费看不忠 | 国产精品亚洲а∨无码播放麻豆 | 国产精品99爱免费视频 | 国产亚洲欧美在线专区 | 亚洲人成网站在线播放942 | 色偷偷人人澡人人爽人人模 | 国产无遮挡又黄又爽又色 | 天堂亚洲2017在线观看 | 无码av中文字幕免费放 | 久久午夜无码鲁丝片午夜精品 | 国内综合精品午夜久久资源 | 欧美丰满少妇xxxx性 | 性做久久久久久久久 | 亚洲乱码国产乱码精品精 | 永久免费观看国产裸体美女 | 激情综合激情五月俺也去 | 国产手机在线αⅴ片无码观看 | 久久久久99精品成人片 | 狠狠色噜噜狠狠狠7777奇米 | 国产精品手机免费 | 国产在线无码精品电影网 | 青草青草久热国产精品 | 粉嫩少妇内射浓精videos | 日本大香伊一区二区三区 | 婷婷五月综合缴情在线视频 | 欧美日韩一区二区免费视频 | 秋霞成人午夜鲁丝一区二区三区 | 少妇久久久久久人妻无码 | 无码精品国产va在线观看dvd | 亚洲 高清 成人 动漫 | 国产成人综合在线女婷五月99播放 | 天天摸天天碰天天添 | 天天拍夜夜添久久精品 | 日本xxxx色视频在线观看免费 | 精品成在人线av无码免费看 | 成熟妇人a片免费看网站 | 亚洲欧美国产精品久久 | 天天躁日日躁狠狠躁免费麻豆 | 18无码粉嫩小泬无套在线观看 | www一区二区www免费 | 午夜精品一区二区三区在线观看 | 国产亚洲精品久久久久久国模美 | 日韩欧美中文字幕公布 | 无码av最新清无码专区吞精 | 六十路熟妇乱子伦 | 久久久www成人免费毛片 | 奇米影视888欧美在线观看 | 99久久精品无码一区二区毛片 | 日本肉体xxxx裸交 | 亚洲日本va中文字幕 | 97无码免费人妻超级碰碰夜夜 | 蜜臀aⅴ国产精品久久久国产老师 | 超碰97人人做人人爱少妇 | 丝袜 中出 制服 人妻 美腿 | 国产成人精品优优av | 日本www一道久久久免费榴莲 | 九一九色国产 | 精品无码一区二区三区爱欲 | 久久精品国产一区二区三区 | 欧美日韩一区二区综合 | 亚洲熟妇自偷自拍另类 | 2020久久超碰国产精品最新 | 无码纯肉视频在线观看 | 丰满肥臀大屁股熟妇激情视频 | 中文字幕+乱码+中文字幕一区 | 性欧美熟妇videofreesex | 色婷婷综合激情综在线播放 | 久久久中文久久久无码 | 亚洲成av人片天堂网无码】 | 久久久精品人妻久久影视 | 亚洲一区二区三区无码久久 | 日本va欧美va欧美va精品 | 精品国产国产综合精品 | 77777熟女视频在线观看 а天堂中文在线官网 | av无码不卡在线观看免费 | 精品人人妻人人澡人人爽人人 | 日日橹狠狠爱欧美视频 | 欧美老妇交乱视频在线观看 | 成 人影片 免费观看 | 激情国产av做激情国产爱 | 天堂а√在线地址中文在线 | 国产电影无码午夜在线播放 | 中文字幕无码av激情不卡 | 内射欧美老妇wbb | 荫蒂添的好舒服视频囗交 | 亚洲精品一区国产 | 亚洲区欧美区综合区自拍区 | 久久综合九色综合欧美狠狠 | 无码一区二区三区在线观看 | 久久久精品成人免费观看 | 六月丁香婷婷色狠狠久久 | 日日鲁鲁鲁夜夜爽爽狠狠 | 久久久久久久女国产乱让韩 | 亚洲精品成人福利网站 | 色综合久久久无码中文字幕 | 51国偷自产一区二区三区 | 最近的中文字幕在线看视频 | 亚洲精品综合五月久久小说 | 久久久久久久女国产乱让韩 | 亚洲 a v无 码免 费 成 人 a v | 无码人妻少妇伦在线电影 | 久久精品无码一区二区三区 | 国产成人精品一区二区在线小狼 | 久久国产36精品色熟妇 | 国产精品久久久久影院嫩草 | 亚洲一区二区三区无码久久 | 国内精品久久毛片一区二区 | 一二三四在线观看免费视频 | 国产电影无码午夜在线播放 | 国产免费无码一区二区视频 | 熟女少妇人妻中文字幕 | 亚洲国产av精品一区二区蜜芽 | 久久国产精品_国产精品 | 图片区 小说区 区 亚洲五月 | 亚洲 a v无 码免 费 成 人 a v | 领导边摸边吃奶边做爽在线观看 | 一本久久a久久精品vr综合 | 欧美日韩一区二区三区自拍 | 99久久久国产精品无码免费 | 亚洲综合久久一区二区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 熟妇人妻激情偷爽文 | 亚洲欧洲日本综合aⅴ在线 | 精品人妻中文字幕有码在线 | 一本久久a久久精品vr综合 | 色综合久久88色综合天天 | 中文字幕乱码人妻无码久久 | 中文字幕乱妇无码av在线 | 久久伊人色av天堂九九小黄鸭 | 亚洲精品国产精品乱码不卡 | 呦交小u女精品视频 | 全球成人中文在线 | 久久精品中文闷骚内射 | 一本久道久久综合狠狠爱 | 亚洲精品无码国产 | 亚洲熟妇色xxxxx欧美老妇 | av无码久久久久不卡免费网站 | 亚洲乱码国产乱码精品精 | 国产亲子乱弄免费视频 | 图片区 小说区 区 亚洲五月 | 在线观看欧美一区二区三区 | 粗大的内捧猛烈进出视频 | 中文无码精品a∨在线观看不卡 | 99精品国产综合久久久久五月天 | 欧美熟妇另类久久久久久多毛 | 久久亚洲国产成人精品性色 | 131美女爱做视频 | 亚洲一区二区三区播放 | 日本精品少妇一区二区三区 | 极品嫩模高潮叫床 | 亚洲国产av精品一区二区蜜芽 | 男人和女人高潮免费网站 | 亚洲日本一区二区三区在线 | 日本丰满熟妇videos | www国产亚洲精品久久久日本 | 樱花草在线播放免费中文 | 大肉大捧一进一出视频出来呀 | 美女毛片一区二区三区四区 | 国产精品va在线观看无码 | 人妻少妇精品无码专区动漫 | 野外少妇愉情中文字幕 | 一个人免费观看的www视频 | 日本一本二本三区免费 | 男女猛烈xx00免费视频试看 | 曰本女人与公拘交酡免费视频 | 免费网站看v片在线18禁无码 | 一本久久伊人热热精品中文字幕 | 天天av天天av天天透 | 永久免费精品精品永久-夜色 | 亚洲国产高清在线观看视频 | 无码人妻丰满熟妇区五十路百度 | 亚洲伊人久久精品影院 | 性史性农村dvd毛片 | 麻豆av传媒蜜桃天美传媒 | 亚洲国产高清在线观看视频 | 欧美日韩色另类综合 | 国产 浪潮av性色四虎 | 精品国偷自产在线视频 | www国产亚洲精品久久网站 | 亚洲精品国偷拍自产在线麻豆 | 精品一二三区久久aaa片 | 欧美高清在线精品一区 | 久久无码中文字幕免费影院蜜桃 | 88国产精品欧美一区二区三区 | 婷婷五月综合缴情在线视频 | 四虎永久在线精品免费网址 | 乱人伦人妻中文字幕无码久久网 | √天堂资源地址中文在线 | 成人欧美一区二区三区 |