日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

带你彻底搞懂MyBatis的底层实现之缓存模块(Cache)-吊打面试官必备技能

發布時間:2023/12/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带你彻底搞懂MyBatis的底层实现之缓存模块(Cache)-吊打面试官必备技能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??基礎支持層位于MyBatis整體架構的最底層,支撐著MyBatis的核心處理層,是整個框架的基石。基礎支持層中封裝了多個較為通用的、獨立的模塊。不僅僅為MyBatis提供基礎支撐,也可以在合適的場景中直接復用。

??上篇文章我們給大家聊了下binding模塊,本篇文章我們重點來聊下緩存(Cache)模塊。

緩存模塊

??MyBatis作為一個強大的持久層框架,緩存是其必不可少的功能之一,Mybatis中的緩存分為一級緩存和二級緩存。但本質上是一樣的,都是使用Cache接口實現的。緩存位于 org.apache.ibatis.cache包下。

??通過結構我們能夠發現Cache其實使用到了裝飾器模式來實現緩存的處理。首先大家需要先回顧下裝飾器模式的相關內容哦。我們先來看看Cache中的基礎類的API

// 煎餅加雞蛋加香腸
“裝飾者模式(Decorator Pattern)是指在不改變原有對象的基礎之上,將功能附加到對象上,提供了比繼承更有彈性的替代方案(擴展原有對象的功能)。”

1 Cache接口

??Cache接口是緩存模塊中最核心的接口,它定義了所有緩存的基本行為,Cache接口的定義如下:

public interface Cache {/*** 緩存對象的 ID* @return The identifier of this cache*/String getId();/*** 向緩存中添加數據,一般情況下 key是CacheKey value是查詢結果* @param key Can be any object but usually it is a {@link CacheKey}* @param value The result of a select.*/void putObject(Object key, Object value);/*** 根據指定的key,在緩存中查找對應的結果對象* @param key The key* @return The object stored in the cache.*/Object getObject(Object key);/*** As of 3.3.0 this method is only called during a rollback* for any previous value that was missing in the cache.* This lets any blocking cache to release the lock that* may have previously put on the key.* A blocking cache puts a lock when a value is null* and releases it when the value is back again.* This way other threads will wait for the value to be* available instead of hitting the database.* 刪除key對應的緩存數據** @param key The key* @return Not used*/Object removeObject(Object key);/*** Clears this cache instance.* 清空緩存*/void clear();/*** Optional. This method is not called by the core.* 緩存的個數。* @return The number of elements stored in the cache (not its capacity).*/int getSize();/*** Optional. As of 3.2.6 this method is no longer called by the core.* <p>* Any locking needed by the cache must be provided internally by the cache provider.* 獲取讀寫鎖* @return A ReadWriteLock*/default ReadWriteLock getReadWriteLock() {return null;}}

??Cache接口的實現類很多,但是大部分都是裝飾器,只有PerpetualCache提供了Cache接口的基本實現。

2 PerpetualCache

??PerpetualCache在緩存模塊中扮演了ConcreteComponent的角色,其實現比較簡單,底層使用HashMap記錄緩存項,具體的實現如下:

/*** 在裝飾器模式用 用來被裝飾的對象* 緩存中的 基本緩存處理的實現* 其實就是一個 HashMap 的基本操作* @author Clinton Begin*/ public class PerpetualCache implements Cache {private final String id; // Cache 對象的唯一標識// 用于記錄緩存的Map對象private final Map<Object, Object> cache = new HashMap<>();public PerpetualCache(String id) {this.id = id;}@Overridepublic String getId() {return id;}@Overridepublic int getSize() {return cache.size();}@Overridepublic void putObject(Object key, Object value) {cache.put(key, value);}@Overridepublic Object getObject(Object key) {return cache.get(key);}@Overridepublic Object removeObject(Object key) {return cache.remove(key);}@Overridepublic void clear() {cache.clear();}@Overridepublic boolean equals(Object o) {if (getId() == null) {throw new CacheException("Cache instances require an ID.");}if (this == o) {return true;}if (!(o instanceof Cache)) {return false;}Cache otherCache = (Cache) o;// 只關心IDreturn getId().equals(otherCache.getId());}@Overridepublic int hashCode() {if (getId() == null) {throw new CacheException("Cache instances require an ID.");}// 只關心IDreturn getId().hashCode();}}

??然后我們可以來看看cache.decorators包下提供的裝飾器。他們都實現了Cache接口。這些裝飾器都在PerpetualCache的基礎上提供了一些額外的功能,通過多個組合實現一些特殊的需求。

3 BlockingCache

??通過名稱我們能看出來是一個阻塞同步的緩存,它保證只有一個線程到緩存中查找指定的key對應的數據。

public class BlockingCache implements Cache {private long timeout; // 阻塞超時時長private final Cache delegate; // 被裝飾的底層 Cache 對象// 每個key 都有對象的 ReentrantLock 對象private final ConcurrentHashMap<Object, ReentrantLock> locks;public BlockingCache(Cache delegate) {// 被裝飾的 Cache 對象this.delegate = delegate;this.locks = new ConcurrentHashMap<>();}@Overridepublic String getId() {return delegate.getId();}@Overridepublic int getSize() {return delegate.getSize();}@Overridepublic void putObject(Object key, Object value) {try {// 執行 被裝飾的 Cache 中的方法delegate.putObject(key, value);} finally {// 釋放鎖releaseLock(key);}}@Overridepublic Object getObject(Object key) {acquireLock(key); // 獲取鎖Object value = delegate.getObject(key); // 獲取緩存數據if (value != null) { // 有數據就釋放掉鎖,否則繼續持有鎖releaseLock(key);}return value;}@Overridepublic Object removeObject(Object key) {// despite of its name, this method is called only to release locksreleaseLock(key);return null;}@Overridepublic void clear() {delegate.clear();}private ReentrantLock getLockForKey(Object key) {return locks.computeIfAbsent(key, k -> new ReentrantLock());}private void acquireLock(Object key) {Lock lock = getLockForKey(key);if (timeout > 0) {try {boolean acquired = lock.tryLock(timeout, TimeUnit.MILLISECONDS);if (!acquired) {throw new CacheException("Couldn't get a lock in " + timeout + " for the key " + key + " at the cache " + delegate.getId());}} catch (InterruptedException e) {throw new CacheException("Got interrupted while trying to acquire lock for key " + key, e);}} else {lock.lock();}}private void releaseLock(Object key) {ReentrantLock lock = locks.get(key);if (lock.isHeldByCurrentThread()) {lock.unlock();}}public long getTimeout() {return timeout;}public void setTimeout(long timeout) {this.timeout = timeout;} }

??通過源碼我們能夠發現,BlockingCache本質上就是在我們操作緩存數據的前后通過 ReentrantLock對象來實現了加鎖和解鎖操作。其他的具體實現類,大家可以自行查閱

緩存實現類描述作用裝飾條件
基本緩存緩存基本實現類默認是PerpetualCache,也可以自定義比如RedisCache、EhCache等,具備基本功能的緩存類
LruCacheLRU策略的緩存當緩存到達上限時候,刪除最近最少使用的緩存(Least Recently Use)eviction=“LRU”(默認)
FifoCacheFIFO策略的緩存當緩存到達上限時候,刪除最先入隊的緩存eviction=“FIFO”
SoftCacheWeakCache帶清理策略的緩存通過JVM的軟引用和弱引用來實現緩存,當JVM內存不足時,會自動清理掉這些緩存,基于SoftReference和WeakReferenceeviction="SOFT"eviction=“WEAK”
LoggingCache帶日志功能的緩存比如:輸出緩存命中率基本
SynchronizedCache同步緩存基于synchronized關鍵字實現,解決并發問題基本
BlockingCache阻塞緩存通過在get/put方式中加鎖,保證只有一個線程操作緩存,基于Java重入鎖實現blocking=true
SerializedCache支持序列化的緩存將對象序列化以后存到緩存中,取出時反序列化readOnly=false(默認)
ScheduledCache定時調度的緩存在進行get/put/remove/getSize等操作前,判斷緩存時間是否超過了設置的最長緩存時間(默認是一小時),如果是則清空緩存–即每隔一段時間清空一次緩存flushInterval不為空
TransactionalCache事務緩存在二級緩存中使用,可一次存入多個緩存,移除多個緩存在TransactionalCacheManager中用Map維護對應關系

4 緩存的應用

4.1 緩存對應的初始化

??在Configuration初始化的時候會為我們的各種Cache實現注冊對應的別名

在解析settings標簽的時候,設置的默認值有如下

cacheEnabled默認為true,localCacheScope默認為 SESSION

在解析映射文件的時候會解析我們相關的cache標簽

然后解析映射文件的cache標簽后會在Configuration對象中添加對應的數據在

private void cacheElement(XNode context) {// 只有 cache 標簽不為空才解析if (context != null) {String type = context.getStringAttribute("type", "PERPETUAL");Class<? extends Cache> typeClass = typeAliasRegistry.resolveAlias(type);String eviction = context.getStringAttribute("eviction", "LRU");Class<? extends Cache> evictionClass = typeAliasRegistry.resolveAlias(eviction);Long flushInterval = context.getLongAttribute("flushInterval");Integer size = context.getIntAttribute("size");boolean readWrite = !context.getBooleanAttribute("readOnly", false);boolean blocking = context.getBooleanAttribute("blocking", false);Properties props = context.getChildrenAsProperties();builderAssistant.useNewCache(typeClass, evictionClass, flushInterval, size, readWrite, blocking, props);}}

繼續
然后我們可以發現 如果存儲 cache 標簽,那么對應的 Cache對象會被保存在 currentCache 屬性中。

進而在 Cache 對象 保存在了 MapperStatement 對象的 cache 屬性中。

然后我們再看看openSession的時候又做了哪些操作,在創建對應的執行器的時候會有緩存的操作

public Executor newExecutor(Transaction transaction, ExecutorType executorType) {executorType = executorType == null ? defaultExecutorType : executorType;executorType = executorType == null ? ExecutorType.SIMPLE : executorType;Executor executor;if (ExecutorType.BATCH == executorType) {executor = new BatchExecutor(this, transaction);} else if (ExecutorType.REUSE == executorType) {executor = new ReuseExecutor(this, transaction);} else {// 默認 SimpleExecutorexecutor = new SimpleExecutor(this, transaction);}// 二級緩存開關,settings 中的 cacheEnabled 默認是 trueif (cacheEnabled) {executor = new CachingExecutor(executor);}// 植入插件的邏輯,至此,四大對象已經全部攔截完畢executor = (Executor) interceptorChain.pluginAll(executor);return executor;}

??也就是如果 cacheEnabled 為 true 就會通過 CachingExecutor 來裝飾executor 對象,然后就是在執行SQL操作的時候會涉及到緩存的具體使用。這個就分為一級緩存和二級緩存,這個我們來分別介紹

4.2 一級緩存

??一級緩存也叫本地緩存(Local Cache),MyBatis的一級緩存是在會話(SqlSession)層面進行緩存的。MyBatis的一級緩存是默認開啟的,不需要任何的配置(如果要關閉,localCacheScope設置為STATEMENT)。在BaseExecutor對象的query方法中有關閉一級緩存的邏輯

??然后我們需要考慮下在一級緩存中的 PerpetualCache 對象在哪創建的,因為一級緩存是Session級別的緩存,肯定需要在Session范圍內創建,其實PerpetualCache的實例化是在BaseExecutor的構造方法中創建的

protected BaseExecutor(Configuration configuration, Transaction transaction) {this.transaction = transaction;this.deferredLoads = new ConcurrentLinkedQueue<>();this.localCache = new PerpetualCache("LocalCache");this.localOutputParameterCache = new PerpetualCache("LocalOutputParameterCache");this.closed = false;this.configuration = configuration;this.wrapper = this;}

??一級緩存的具體實現也是在BaseExecutor的query方法中來實現的

public <E> List<E> query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql) throws SQLException {// 異常體系之 ErrorContextErrorContext.instance().resource(ms.getResource()).activity("executing a query").object(ms.getId());if (closed) {throw new ExecutorException("Executor was closed.");}if (queryStack == 0 && ms.isFlushCacheRequired()) {// flushCache="true"時,即使是查詢,也清空一級緩存clearLocalCache();}List<E> list;try {// 防止遞歸查詢重復處理緩存queryStack++;// 查詢一級緩存// ResultHandler 和 ResultSetHandler的區別list = resultHandler == null ? (List<E>) localCache.getObject(key) : null;if (list != null) {handleLocallyCachedOutputParameters(ms, key, parameter, boundSql);} else {// 真正的查詢流程list = queryFromDatabase(ms, parameter, rowBounds, resultHandler, key, boundSql);}} finally {queryStack--;}if (queryStack == 0) {for (DeferredLoad deferredLoad : deferredLoads) {deferredLoad.load();}// issue #601deferredLoads.clear();if (configuration.getLocalCacheScope() == LocalCacheScope.STATEMENT) {// issue #482clearLocalCache();}}return list;}

一級緩存的驗證:

同一個Session中的多個相同操作

@Testpublic void test1() throws Exception{// 1.獲取配置文件InputStream in = Resources.getResourceAsStream("mybatis-config.xml");// 2.加載解析配置文件并獲取SqlSessionFactory對象SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);// 3.根據SqlSessionFactory對象獲取SqlSession對象SqlSession sqlSession = factory.openSession();// 4.通過SqlSession中提供的 API方法來操作數據庫List<User> list = sqlSession.selectList("com.gupaoedu.mapper.UserMapper.selectUserList");System.out.println(list.size());// 一級緩存測試System.out.println("---------");list = sqlSession.selectList("com.gupaoedu.mapper.UserMapper.selectUserList");System.out.println(list.size());// 5.關閉會話sqlSession.close();}

輸出日志

Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@477b4cdf] ==> Preparing: select * from t_user ==> Parameters: <== Columns: id, user_name, real_name, password, age, d_id <== Row: 1, zhangsan, 張三, 123456, 18, null <== Row: 2, lisi, 李四, 11111, 19, null <== Row: 3, wangwu, 王五, 111, 22, 1001 <== Row: 4, wangwu, 王五, 111, 22, 1001 <== Row: 5, wangwu, 王五, 111, 22, 1001 <== Row: 6, wangwu, 王五, 111, 22, 1001 <== Row: 7, wangwu, 王五, 111, 22, 1001 <== Row: 8, aaa, bbbb, null, null, null <== Row: 9, aaa, bbbb, null, null, null <== Row: 10, aaa, bbbb, null, null, null <== Row: 11, aaa, bbbb, null, null, null <== Row: 12, aaa, bbbb, null, null, null <== Row: 666, hibernate, 持久層框架, null, null, null <== Total: 13 13 --------- 13

可以看到第二次查詢沒有經過數據庫操作

不同Session的相同操作

@Testpublic void test2() throws Exception{// 1.獲取配置文件InputStream in = Resources.getResourceAsStream("mybatis-config.xml");// 2.加載解析配置文件并獲取SqlSessionFactory對象SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);// 3.根據SqlSessionFactory對象獲取SqlSession對象SqlSession sqlSession = factory.openSession();// 4.通過SqlSession中提供的 API方法來操作數據庫List<User> list = sqlSession.selectList("com.gupaoedu.mapper.UserMapper.selectUserList");System.out.println(list.size());sqlSession.close();sqlSession = factory.openSession();// 一級緩存測試System.out.println("---------");list = sqlSession.selectList("com.gupaoedu.mapper.UserMapper.selectUserList");System.out.println(list.size());// 5.關閉會話sqlSession.close();}

輸出結果

Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@477b4cdf] ==> Preparing: select * from t_user ==> Parameters: <== Columns: id, user_name, real_name, password, age, d_id <== Row: 1, zhangsan, 張三, 123456, 18, null <== Row: 2, lisi, 李四, 11111, 19, null <== Row: 3, wangwu, 王五, 111, 22, 1001 <== Row: 4, wangwu, 王五, 111, 22, 1001 <== Row: 5, wangwu, 王五, 111, 22, 1001 <== Row: 6, wangwu, 王五, 111, 22, 1001 <== Row: 7, wangwu, 王五, 111, 22, 1001 <== Row: 8, aaa, bbbb, null, null, null <== Row: 9, aaa, bbbb, null, null, null <== Row: 10, aaa, bbbb, null, null, null <== Row: 11, aaa, bbbb, null, null, null <== Row: 12, aaa, bbbb, null, null, null <== Row: 666, hibernate, 持久層框架, null, null, null <== Total: 13 13 Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@477b4cdf] Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@477b4cdf] Returned connection 1199262943 to pool. --------- Opening JDBC Connection Checked out connection 1199262943 from pool. Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@477b4cdf] ==> Preparing: select * from t_user ==> Parameters: <== Columns: id, user_name, real_name, password, age, d_id <== Row: 1, zhangsan, 張三, 123456, 18, null <== Row: 2, lisi, 李四, 11111, 19, null <== Row: 3, wangwu, 王五, 111, 22, 1001 <== Row: 4, wangwu, 王五, 111, 22, 1001 <== Row: 5, wangwu, 王五, 111, 22, 1001 <== Row: 6, wangwu, 王五, 111, 22, 1001 <== Row: 7, wangwu, 王五, 111, 22, 1001 <== Row: 8, aaa, bbbb, null, null, null <== Row: 9, aaa, bbbb, null, null, null <== Row: 10, aaa, bbbb, null, null, null <== Row: 11, aaa, bbbb, null, null, null <== Row: 12, aaa, bbbb, null, null, null <== Row: 666, hibernate, 持久層框架, null, null, null <== Total: 13 13 Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@477b4cdf] Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@477b4cdf] Returned connection 1199262943 to pool.

通過輸出我們能夠發現,不同的Session中的相同操作,一級緩存是沒有起作用的。

4.3 二級緩存

??二級緩存是用來解決一級緩存不能跨會話共享的問題的,范圍是namespace級別的,可以被多個SqlSession共享(只要是同一個接口里面的相同方法,都可以共享),生命周期和應用同步。

??二級緩存的設置,首先是settings中的cacheEnabled要設置為true,當然默認的就是為true,這個步驟決定了在創建Executor對象的時候是否通過CachingExecutor來裝飾。

??那么設置了cacheEnabled標簽為true是否就意味著 二級緩存是否一定可用呢?當然不是,我們還需要在 對應的映射文件中添加 cache 標簽才行。

<!-- 聲明這個namespace使用二級緩存 --> <cache type="org.apache.ibatis.cache.impl.PerpetualCache"size="1024" <!—最多緩存對象個數,默認1024-->eviction="LRU" <!—回收策略-->flushInterval="120000" <!—自動刷新時間 ms,未配置時只有調用時刷新-->readOnly="false"/> <!—默認是false(安全),改為true可讀寫時,對象必須支持序列化 -->

cache屬性詳解:

屬性含義取值
type緩存實現類需要實現Cache接口,默認是PerpetualCache,可以使用第三方緩存
size最多緩存對象個數默認1024
eviction回收策略(緩存淘汰算法)LRU – 最近最少使用的:移除最長時間不被使用的對象(默認)。FIFO – 先進先出:按對象進入緩存的順序來移除它們。SOFT – 軟引用:移除基于垃圾回收器狀態和軟引用規則的對象。WEAK – 弱引用:更積極地移除基于垃圾收集器狀態和弱引用規則的對象。
flushInterval定時自動清空緩存間隔自動刷新時間,單位 ms,未配置時只有調用時刷新
readOnly是否只讀true:只讀緩存;會給所有調用者返回緩存對象的相同實例。因此這些對象不能被修改。這提供了很重要的性能優勢。false:讀寫緩存;會返回緩存對象的拷貝(通過序列化),不會共享。這會慢一些,但是安全,因此默認是 false。改為false可讀寫時,對象必須支持序列化。
blocking啟用阻塞緩存通過在get/put方式中加鎖,保證只有一個線程操作緩存,基于Java重入鎖實現

再來看下cache標簽在源碼中的體現,創建cacheKey

@Overridepublic <E> List<E> query(MappedStatement ms, Object parameterObject, RowBounds rowBounds, ResultHandler resultHandler) throws SQLException {// 獲取SQLBoundSql boundSql = ms.getBoundSql(parameterObject);// 創建CacheKey:什么樣的SQL是同一條SQL? >>CacheKey key = createCacheKey(ms, parameterObject, rowBounds, boundSql);return query(ms, parameterObject, rowBounds, resultHandler, key, boundSql);}

createCacheKey自行進去查看


而這看到的和我們前面在緩存初始化時看到的 cache 標簽解析操作是對應上的。所以我們要開啟二級緩存兩個條件都要滿足。

??這樣的設置表示當前的映射文件中的相關查詢操作都會觸發二級緩存,但如果某些個別方法我們不希望走二級緩存怎么辦呢?我們可以在標簽中添加一個 useCache=false 來實現的設置不使用二級緩存

還有就是當我們執行的對應的DML操作,在MyBatis中會清空對應的二級緩存和一級緩存。

private void flushCacheIfRequired(MappedStatement ms) {Cache cache = ms.getCache();// 增刪改查的標簽上有屬性:flushCache="true" (select語句默認是false)// 一級二級緩存都會被清理if (cache != null && ms.isFlushCacheRequired()) {tcm.clear(cache);}}

在解析映射文件的時候DML操作flushCacheRequired為true

4.4 第三方緩存

???在實際開發的時候我們一般也很少使用MyBatis自帶的二級緩存,這時我們會使用第三方的緩存工具Ehcache獲取Redis來實現,那么他們是如何來實現的呢?

https://github.com/mybatis/redis-cache

添加依賴

<dependency><groupId>org.mybatis.caches</groupId><artifactId>mybatis-redis</artifactId><version>1.0.0-beta2</version> </dependency>

然后加上Cache標簽的配置

<cache type="org.mybatis.caches.redis.RedisCache"eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

然后添加redis的屬性文件

host=192.168.100.120 port=6379 connectionTimeout=5000 soTimeout=5000 database=0

測試效果

數據存儲到了Redis中

??然后大家也可以自行分析下第三方的Cache是如何替換掉PerpetualCache的,因為PerpetualCache是基于HashMap處理的,而RedisCache是基于Redis來存儲緩存數據的。

提示

緩存模塊我們就介紹到此。 然后大家可以基于我們上面所介紹的基礎支持層,再系統的來梳理下核心處理層的流程

~~ 好了,緩存模塊的內容就給大家介紹到這里,如果對你有幫助,歡迎點贊關注加收藏
下篇我們介紹 MyBatis中的插件機制,敬請期待 V_V

總結

以上是生活随笔為你收集整理的带你彻底搞懂MyBatis的底层实现之缓存模块(Cache)-吊打面试官必备技能的全部內容,希望文章能夠幫你解決所遇到的問題。

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

日韩黄色免费在线观看 | 亚洲精品午夜国产va久久成人 | 91精品国产乱码 | 五月天综合激情 | 日本久久久精品视频 | 久久艹国产 | 欧美黄网站 | 三级av黄色| 国产成人精品一区二区三区福利 | 91精品黄色 | 国产淫片 | 欧美激情片在线观看 | 国产99久久久精品 | 在线 国产一区 | 欧美日韩国产精品一区二区亚洲 | 中文字幕 影院 | 久久久久久不卡 | 精品一区二区三区四区在线 | 久久成人在线 | 日日日日 | 麻豆免费视频 | 最近中文字幕免费大全 | 久久综合九九 | 国产一区福利在线 | 色在线亚洲 | 国产精品爽爽久久久久久蜜臀 | 欧美 高跟鞋交 xxxxhd | 色亚洲网| 日韩中文字幕视频在线 | 三级动图| 国产亚洲精品久久19p | 久久香蕉电影 | 91av视频免费观看 | 日韩精品一区电影 | 免费看片亚洲 | 96av在线| 精品欧美小视频在线观看 | 爱av在线网 | 亚洲精品久久激情国产片 | 国产精品1区2区在线观看 | 欧美巨乳网 | 国产一区免费在线 | 99精品欧美一区二区蜜桃免费 | 日韩亚洲在线观看 | 欧美日韩一区二区免费在线观看 | 成人av免费播放 | 久久这里精品视频 | 激情开心 | 免费观看版| 国产精品久久久久久久久久了 | 欧美a在线免费观看 | 日韩免费成人 | 免费欧美| 亚洲高清资源 | 麻豆久久久久 | 午夜精品一区二区三区在线观看 | 一区二区三区观看 | 久久久综合电影 | 在线国产观看 | 免费观看久久久 | 国产精品久久在线 | 免费亚洲婷婷 | 最新中文字幕 | 91在线一区二区 | 中文字幕第一页在线播放 | 中国精品一区二区 | 成人夜晚看av | 精品一区二区影视 | 最近免费在线观看 | 亚洲一级国产 | 色综合夜色一区 | 国产伦理一区二区 | 青青网视频| 最近日本韩国中文字幕 | 国产一区av在线 | 日本激情视频中文字幕 | 国产精品视频99 | 91精品国产亚洲 | 日韩啪啪小视频 | 亚洲精品伦理在线 | 国产精品高潮呻吟久久av无 | 欧美精品一级视频 | 欧美日韩精 | 日韩在线视频免费看 | 国产精品日韩在线播放 | 在线观看视频97 | 国产精品尤物视频 | 黄色av电影免费观看 | 黄视频网站大全 | 成人a在线观看高清电影 | 国产黄色片一级 | 黄色网址av| 亚洲国产三级在线 | 精壮的侍卫呻吟h | 国产精品成人免费精品自在线观看 | 国产精品精品 | 欧美疯狂性受xxxxx另类 | 久久精品日韩 | 天天爽天天爽 | 精品美女国产在线 | 日本三级吹潮在线 | 亚洲欧美日韩精品一区二区 | 欧美视频xxx | 国产视频 亚洲视频 | 97免费| 成人国产精品久久久春色 | 玖操 | 欧美亚洲三级 | 丝袜美女视频网站 | 午夜成人影视 | 韩国av免费观看 | 日韩一区正在播放 | 日日久视频 | 国模吧一区 | 成人欧美亚洲 | 欧美二区在线播放 | 婷婷色网 | 日韩一区二区三 | 免费91在线观看 | 免费观看丰满少妇做爰 | 九七人人干 | 国产视频一区二区在线 | 男女激情免费网站 | 91精品国产综合久久福利 | 最近中文字幕免费 | 国产视频一二三 | 久草在线视频免赞 | 狠狠婷婷 | 人人澡人人爽欧一区 | 亚洲国产视频在线 | www.com久久 | 国产视频日韩视频欧美视频 | 久久久免费观看 | 欧美analxxxx | 99av在线视频 | 天天操月月操 | 午夜美女福利直播 | 综合久久久 | www.com久久久 | 国产精品美女在线观看 | 久久久久国产精品午夜一区 | 激情视频综合网 | 国产中文字幕一区二区 | 国产成人精品999在线观看 | 国产精品久久亚洲 | 91精品国自产拍天天拍 | 久久久精品影视 | 丁香国产视频 | 人人澡人人干 | 黄色av电影一级片 | 香蕉久久国产 | 91在线观看欧美日韩 | 国产精品久久婷婷六月丁香 | 一区二区av | 蜜臀av夜夜澡人人爽人人桃色 | 黄色片视频在线观看 | 国内精品久久久久久久久 | 日韩亚洲欧美中文字幕 | 国产视频一区在线 | 97色视频在线 | 安徽妇搡bbbb搡bbbb | 日韩亚洲国产中文字幕 | 亚洲国产剧情 | 一区 二区 精品 | 缴情综合网五月天 | 免费黄色av | 欧美极品少妇xbxb性爽爽视频 | 久久成人高清视频 | 99久久超碰中文字幕伊人 | 欧美另类v| 午夜久久视频 | 色小说av | 亚洲在线视频免费 | 亚洲视频1区2区 | 激情五月***国产精品 | 中文字幕刺激在线 | 国产呻吟在线 | 最近能播放的中文字幕 | 日韩在线视频网 | 中文字幕久久精品一区 | 99久久99久久精品免费 | 国产一区二区免费看 | 亚洲人成人天堂h久久 | 日韩中文字幕免费在线观看 | 久久久久亚洲精品 | 欧美久久久久久久久久久久 | 国产成人在线精品 | 丝袜美腿亚洲综合 | 欧美精品中文在线免费观看 | 国产精品99免视看9 国产精品毛片一区视频 | 成人精品一区二区三区电影免费 | 欧美日韩免费看 | 2000xxx影视 | 成人欧美在线 | 黄色毛片电影 | 日韩一级电影在线 | 欧美日韩国产精品一区二区 | 午夜婷婷在线观看 | 国产高清成人 | 精品国产免费人成在线观看 | 久久免费观看视频 | www.天天操| 成人禁用看黄a在线 | 精品一区av | 久久久www免费电影网 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 亚洲国产mv | 国产免费xvideos视频入口 | 中文字幕色播 | 国产一区二区日本 | 国产精品久久99 | 国产精品av在线 | 一级免费av | 91精品网站在线观看 | 精品久久久久久久久久久院品网 | 久草在线免费资源站 | 免费成人黄色av | 香蕉视频色 | 久久久国产精品视频 | 91精品久久久久久久久 | 欧美性做爰猛烈叫床潮 | 中文字幕日本特黄aa毛片 | 特级xxxxx欧美| 天天操天天怕 | 欧美少妇18p | 国产96在线| 亚洲国产精品一区二区久久,亚洲午夜 | 国产精品美女久久 | www.av中文字幕.com | 欧美日韩精品综合 | 色网站国产精品 | 99免费在线观看视频 | 国产99久久99热这里精品5 | 免费99精品国产自在在线 | 亚洲美女精品视频 | 欧美一区二区在线刺激视频 | 五月婷婷深开心 | 久久精品理论 | 美女国产免费 | 欧美日韩在线播放一区 | 热久久99这里有精品 | 久久精彩免费视频 | 人人添人人澡 | 99精品在线看 | 在线成人小视频 | 久久国产系列 | 99麻豆久久久国产精品免费 | 欧美综合在线视频 | 91九色精品女同系列 | 国产福利专区 | 日韩在线免费高清视频 | 精品一区二区三区香蕉蜜桃 | 久久久久久久久久久网站 | www免费看 | 日韩精品一区二区在线视频 | 免费在线观看一区二区三区 | 亚洲午夜精品在线观看 | 欧美激情精品久久久久 | 日韩区视频 | 欧美精品久久久久a | 亚洲黄色在线免费观看 | 精品中文字幕在线 | 亚洲激情av| 人人爽人人做 | 国产精品美女久久久久久久久 | 91人网站| 99久久精品免费看国产麻豆 | av线上看 | 日本中文字幕在线一区 | 久久久久久久久久久综合 | 欧美精品在线一区二区 | 日韩视频三区 | 久草视频免费看 | 高潮毛片无遮挡高清免费 | 午夜国产一区二区三区四区 | 久久字幕网 | 国产黄色成人av | 日本中文字幕在线播放 | 久爱综合 | 欧美午夜久久久 | 97综合网 | 亚洲视频在线免费看 | 久久免费av电影 | 色射爱| 国内精品久久久久久 | 国产女人18毛片水真多18精品 | av网站手机在线观看 | 在线电影 一区 | 国产精品久久久久久高潮 | 国偷自产中文字幕亚洲手机在线 | 亚洲一级片| 超碰97人人射妻 | 天天色天天干天天色 | 欧美日韩一区二区三区不卡 | 国产免费又粗又猛又爽 | 一区二区精品久久 | 久久五月精品 | 国产成人久久av免费高清密臂 | 免费在线观看av | 国产精品一区二区三区观看 | 欧美男同视频网站 | 久久久久高清毛片一级 | 亚洲婷婷综合色高清在线 | 免费精品国产va自在自线 | 亚洲精品久久久久999中文字幕 | 欧美激情视频三区 | 日韩免费在线观看网站 | 97品白浆高清久久久久久 | 国产破处精品 | 久久在视频 | 91香蕉视频黄色 | 9ⅰ精品久久久久久久久中文字幕 | 午夜色性片 | 国产精品久久99精品毛片三a | 久久大视频 | 久久在线免费视频 | 久久免费久久 | 亚洲综合成人在线 | 久久高清 | 天天摸天天舔天天操 | 国产精品初高中精品久久 | 蜜臀av一区| 国产在线一区观看 | 国产成人av在线影院 | 欧美午夜性生活 | 五月婷婷激情五月 | 黄污视频网站大全 | 国产精品电影一区二区 | 人人搞人人干 | 欧美最爽乱淫视频播放 | 色婷婷六月天 | 99视频免费 | 91污在线| 免费黄a大片 | 97在线观看免费高清 | 亚洲伦理一区 | 日韩精品一区二区三区视频播放 | 91九色在线 | 久久高清视频免费 | 色综合五月 | 亚洲精品国产精品国产 | 色av资源网 | 日韩中文幕 | 久草线| 四虎影视精品成人 | 色天天天 | 欧美精品中文在线免费观看 | 成人久久久精品国产乱码一区二区 | 亚州精品天堂中文字幕 | 成人在线观看资源 | 综合天堂av久久久久久久 | 九九久久免费 | www.黄色 | 99re中文字幕| 中国一级片在线观看 | 久久只精品99品免费久23小说 | 麻豆首页| 天天艹天天干天天 | 91传媒激情理伦片 | 特级西西444www高清大视频 | 91视频免费观看 | 国产片网站 | 人人插人人做 | 日韩av在线影视 | 精品国产一区二区三区噜噜噜 | 四虎影视成人永久免费观看亚洲欧美 | 国产精品美女免费 | 久久成人综合 | 91成人国产| 日韩av综合网站 | 欧美做受69| 亚洲做受高潮欧美裸体 | 国产精品1区2区在线观看 | 国产午夜精品久久 | 欧美伊人网 | 成年人免费av | 国产黄色片久久 | 伊人五月婷 | 国产福利精品一区二区 | 欧美久久久影院 | 99视频在线播放 | 亚洲综合在线播放 | 在线观看视频一区二区 | 一区二区三区日韩精品 | 日韩在线免费不卡 | 天天做天天爱天天综合网 | 国产成人三级一区二区在线观看一 | 麻豆视频一区 | 三级av免费观看 | www.久久91| 国产精品美女999 | 亚洲欧洲日韩在线观看 | 香蕉久草 | 二区精品视频 | 久久九九精品 | 欧美日韩国产欧美 | 天天色天天操综合 | av在线播放网址 | 免费高清无人区完整版 | 久久久久久免费视频 | av一级免费 | 免费观看丰满少妇做爰 | 日韩在线二区 | www.狠狠操.com | 在线成人高清电影 | 亚洲欧美日韩国产精品一区午夜 | 亚洲精品视频免费观看 | 中文字幕成人网 | 久久精品视频免费观看 | av中文在线| 久久久久国产免费免费 | 日日夜夜人人精品 | 久久久免费精品 | 涩av在线 | 91精品国产乱码 | 国产精品成人av久久 | 国产成人a亚洲精品 | 亚洲精品美女久久久久网站 | 日韩字幕在线观看 | 91亚洲在线观看 | 亚洲免费视频在线观看 | 日日射av | 99热99热| 欧美成人手机版 | 色999视频 | 亚洲欧美综合精品久久成人 | 国产精品一区二区电影 | 久久新 | 欧美成年人在线观看 | 国产一二三在线视频 | 国产黄色在线网站 | 色综合色综合色综合 | 亚洲成a人片在线观看网站口工 | 91电影福利 | 视频一区在线播放 | 成人aⅴ视频 | 外国av网 | 日日夜夜天天操 | 国产精品久久久久永久免费观看 | 深爱激情婷婷网 | 夜夜操网| 中文字幕精品一区久久久久 | 日本中文字幕久久 | 日韩免费视频观看 | 国产精品电影一区 | 在线观看亚洲电影 | 亚洲高清视频在线 | 在线观看黄色免费视频 | 久久精品一区二区 | 久久涩视频 | 91免费在线 | 久久av免费 | 日日日日| 久久成年人 | 二区视频在线 | 在线看一区二区 | 国产老妇av | 天天色天天操天天爽 | 国产精品成人免费精品自在线观看 | 日韩专区在线观看 | 国产日产精品一区二区三区四区的观看方式 | 美女网站在线看 | 欧美另类美少妇69xxxx | 久久久91精品国产一区二区三区 | 精品黄色视 | 欧洲精品码一区二区三区免费看 | 国产一区福利在线 | 在线精品亚洲 | 96久久精品| 蜜臀精品久久久久久蜜臀 | 成人sm另类专区 | 免费观看视频黄 | 韩日电影在线 | 欧美久久综合 | 免费看v片网站 | 一级一片免费看 | 黄色免费观看视频 | 五月婷婷视频在线观看 | 国产乱码精品一区二区三区介绍 | 国产h在线观看 | 国产精品99久久久久久有的能看 | 97超碰在 | 在线影院 国内精品 | 在线亚洲成人 | 日韩av在线资源 | 日韩av不卡在线 | 日韩色av色资源 | 超碰97网站 | 国产破处视频在线播放 | www久草| 欧美日本不卡 | 18岁免费看片 | 欧美热久久 | 超碰公开在线观看 | 一区二区三区四区在线 | 亚洲精品99久久久久久 | 日韩在线第一区 | 国产综合在线观看视频 | 99久久精品国产观看 | 国产精品黄色影片导航在线观看 | 黄色大全免费网站 | 成人免费 在线播放 | 久久99免费| 国产亚洲成av人片在线观看桃 | 国产视频69 | 一二区av| 精品久久久久久综合日本 | 久久免费视频99 | 久久精品一区二区三 | 在线观看视频一区二区 | 成人久久国产 | 在线电影日韩 | 欧美性超爽| 国产一级片网站 | 中文字幕免费高清av | 亚洲精品久久久久中文字幕m男 | 蜜臀av在线一区二区三区 | 成人免费视频免费观看 | 久久久精华网 | 婷婷九月激情 | 免费在线观看av网站 | 欧美极度另类 | 久久国产精品免费看 | 综合网中文字幕 | 国产在线更新 | 中文字幕视频播放 | 欧美日韩不卡一区 | 国产麻豆视频免费观看 | 国产福利电影网址 | 国产精品嫩草影视久久久 | 日韩成人精品在线观看 | av中文资源在线 | aaa毛片视频| 亚洲成人av片在线观看 | 久久综合国产伦精品免费 | 久久久久久久久久久久国产精品 | 国产精彩视频一区二区 | 国产精品久久久久久婷婷天堂 | 最新久久免费视频 | 成年人免费观看在线视频 | 91成人精品 | 狠狠色综合网站久久久久久久 | 国产精品乱码久久久久久1区2区 | 久久精品美女视频网站 | 国产91对白在线播 | 久草免费看 | 欧美一区二区在线免费看 | www.婷婷com| 国产999在线观看 | 日韩欧美在线视频一区二区三区 | 欧美日韩在线视频观看 | 91精品视频免费看 | 色七七亚洲影院 | 国产黄色精品 | 国产专区免费 | 又黄又爽又色无遮挡免费 | 夜夜操天天操 | 久久人91精品久久久久久不卡 | 久久精品美女视频网站 | 福利一区在线视频 | 国产精品一区二区久久精品爱微奶 | 久草在线免费资源 | 婷婷av电影 | 大荫蒂欧美视频另类xxxx | 久久成电影 | 九九九九九九精品任你躁 | 日本成人免费在线观看 | 成人网看片| 91色网址 | 日韩影视大全 | 天天拍天天爽 | 免费在线色 | 999久久国精品免费观看网站 | 午夜三级影院 | 91视频成人免费 | 午夜精品视频一区二区三区在线看 | 美女网站视频免费黄 | 在线观看91精品视频 | 99视频精品| 成人午夜片av在线看 | 91av99| 欧美久久影院 | 高清中文字幕av | 九九久久免费 | 国内三级在线观看 | 国产视频二区三区 | 国产一级特黄电影 | 四虎在线观看精品视频 | 高潮久久久 | 久久网页| 99re久久资源最新地址 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 91精品入口| 欧美激情精品久久久久久免费 | 国产乱对白刺激视频在线观看女王 | 青春草视频在线播放 | 在线看污网站 | 欧美日韩免费观看一区二区三区 | 狠狠的操狠狠的干 | 在线观看一区二区精品 | 深夜福利视频在线观看 | 在线观看91精品视频 | 中文国产成人精品久久一 | 久久久久久网址 | 99精品福利| 人人超碰免费 | 日韩v欧美v日本v亚洲v国产v | 久久激情片 | 99久久婷婷国产一区二区三区 | 这里只有精品视频在线观看 | 最新国产视频 | 国产中文字幕在线播放 | 国产精品99精品久久免费 | 精品超碰 | 久热免费在线观看 | 狠狠色丁香久久婷婷综合丁香 | 天天夜夜狠狠操 | 中文字幕在线视频国产 | 久久久久免费精品视频 | 91香蕉视频 | 激情五月***国产精品 | 国产精品精品久久久久久 | 日韩在线观看视频网站 | 丁香婷婷久久 | 欧美久久久久久久久 | 日韩欧美在线一区 | 在线观看免费视频你懂的 | 亚洲精品综合一区二区 | 黄色美女免费网站 | 久久亚洲婷婷 | 欧美激情视频一区二区三区免费 | 国产亚洲精品免费 | 美女久久久久久久久久久 | 欧美在线观看视频一区二区三区 | 日韩视频免费观看高清 | 天海冀一区二区三区 | 久久爱992xxoo| 国产18精品乱码免费看 | 在线免费观看黄色av | 日韩欧美国产精品 | 精品一区二区在线看 | 国产色女人| 亚洲乱码国产乱码精品天美传媒 | 天天干天天射天天操 | 福利一区视频 | 久久久久久久久影院 | 波多野结衣网址 | 视色网站 | 天天天综合| 日韩三级.com | 中文字幕有码在线播放 | 午夜色影院 | av 一区二区三区四区 | 欧美激情综合色综合啪啪五月 | 国产99久久九九精品免费 | 国产精品久久久久久久电影 | 国产一级片网站 | 在线免费观看涩涩 | 最近免费在线观看 | 日韩一三区 | 欧美另类巨大 | 久久精品一区二区三区四区 | 免费看的黄色的网站 | www.黄色网.com | 久久人人爽人人爽人人片av免费 | 黄色www| av不卡中文 | 久久久999| 久草在线视频资源 | 国产亚洲精品久久久久久久久久久久 | 亚洲色图激情文学 | 狠狠干 狠狠操 | 免费在线黄色av | 区一区二区三区中文字幕 | 亚洲一区美女视频在线观看免费 | 涩涩资源网 | 亚洲精品中文在线资源 | 国内精品久久久久影院男同志 | 午夜在线免费视频 | 天天狠狠 | 欧美精品国产综合久久 | 亚洲精品国产精品99久久 | 久久精品视频在线观看免费 | www.国产在线观看 | 91视频在线免费观看 | 一区二区三区三区在线 | 日韩精品久久久免费观看夜色 | 色五月色开心色婷婷色丁香 | 91视频一8mav | av福利在线看 | 中文字幕色综合网 | 国产中文字幕大全 | 久久手机视频 | 成人h在线 | 国产精品嫩草影院9 | 婷婷亚洲综合五月天小说 | 久久免费一级片 | 婷婷丁香导航 | 99中文字幕 | 九九色综合 | 黄色大片国产 | 精壮的侍卫呻吟h | 国产日韩三级 | 婷婷丁香九月 | 久久免费播放 | 啪啪激情网 | 婷婷精品国产一区二区三区日韩 | 国产精品日韩欧美 | 一本一道久久a久久精品 | 91久久国产露脸精品国产闺蜜 | 九九热99视频 | 日韩簧片在线观看 | 成年美女黄网站色大片免费看 | 日韩欧美在线免费观看 | 91亚洲精品久久久蜜桃借种 | 日韩成人av在线 | 日韩欧美在线影院 | 成人香蕉视频 | 天天天色综合 | 美女在线国产 | 国产福利精品视频 | 天堂av网在线 | 精品国产精品久久一区免费式 | 九九九在线观看 | 欧美性色综合网 | 精品国产乱码一区二区三区在线 | 日韩欧美国产视频 | 免费看一级片 | 国产大陆亚洲精品国产 | 成人小视频在线免费观看 | 国产精品免费视频久久久 | 日韩精品不卡在线 | av中文字幕在线播放 | 亚洲人成在线观看 | 国产麻豆剧果冻传媒视频播放量 | 午夜久久美女 | 国产不卡一 | 最新中文字幕 | 超碰97久久| 一区二区视频在线免费观看 | 国产精品久久中文字幕 | se视频网址| 亚洲国产成人久久综合 | 免费看的毛片 | 国产精品高潮呻吟久久av无 | 中文区中文字幕免费看 | 亚洲精品在线观看的 | 亚洲午夜久久久久久久久 | 日韩精品观看 | 国产香蕉久久精品综合网 | 久久高清国产视频 | 最新色站 | 在线高清av| 国产精品毛片一区视频 | 伊甸园av在线 | 毛片基地黄久久久久久天堂 | 日韩av成人 | 九九视频一区 | 视频高清 | 成人毛片在线观看视频 | 欧美一级电影在线观看 | 国产欧美综合视频 | 亚洲一级免费观看 | 一区二区三区韩国免费中文网站 | 91精品视频在线免费观看 | 99精品久久久久久久久久综合 | 亚洲爱爱视频 | 91九色精品女同系列 | 综合中文字幕 | 日韩久久精品一区 | 国内精品视频在线 | 久久久国产一区二区三区四区小说 | 一区二区三区在线免费观看 | 成人av动漫在线 | 亚洲精品国产精品国自产观看 | 中文永久字幕 | 国内精品久久久久影院日本资源 | 少妇视频在线播放 | 国产91成人 | 成人羞羞免费 | 成人国产精品入口 | 久久久九色精品国产一区二区三区 | 亚洲激情 | 午夜影院一级 | 午夜在线看 | 天天草天天干 | 五月激情久久 | 中文字幕免费高清av | 国产系列在线观看 | 一区三区视频在线观看 | 国产特级毛片 | 欧美亚洲xxx| 国产精品毛片一区二区在线 | 综合精品在线 | 成人丝袜| 亚洲欧美日韩一区二区三区在线观看 | 日韩黄色一级电影 | 国产97碰免费视频 | 91c网站色版视频 | 欧美激情精品久久久久久免费 | 天天爱天天干天天爽 | 欧美另类重口 | 久久99久久99精品免观看粉嫩 | 亚洲一区不卡视频 | 99精品久久久久 | 国产精品乱码久久久久 | 波多野结衣精品视频 | 麻豆视频在线观看免费 | 国产麻豆精品在线观看 | 永久免费精品视频网站 | 蜜臀久久99精品久久久无需会员 | 国产精品二区在线观看 | 一二三区视频在线 | 欧美黑人xxxx猛性大交 | 特级毛片在线 | 在线影院av | 91免费国产在线观看 | 久久综合影音 | 一区二区欧美在线观看 | 天天干天天做天天操 | 97国产一区二区 | av在线观 | 日韩午夜一级片 | 久久久免费在线观看 | 一区二区 不卡 | 高潮毛片无遮挡高清免费 | 91在线小视频 | 国产精品一区二区在线 | 人人玩人人添人人澡97 | 黄色小说在线观看视频 | 成人欧美一区二区三区在线观看 | 久草精品在线 | 91亚洲精 | 在线精品亚洲一区二区 | 成 人 黄 色 免费播放 | 在线观看91精品视频 | 久久任你操 | 精品字幕| 国产精品久久久久高潮 | 国产精品乱码在线 | 精品久久久久久亚洲综合网站 | 91精品国产综合久久福利 | 欧美成天堂网地址 | 激情综合啪| 国产精品精品国产色婷婷 | 成人午夜精品 | 久久免费视频8 | 精品国产精品国产偷麻豆 | 中文字幕在线视频精品 | 伊人婷婷久久 | 色99之美女主播在线视频 | 日本一区二区三区视频在线播放 | 日本护士撒尿xxxx18 | 特级黄色片免费看 | 开心激情五月网 | 精品国产123 | 中文字幕乱在线伦视频中文字幕乱码在线 | 日韩在线视频观看免费 | 免费精品| 91精品视频观看 | www.色国产 | 麻豆你懂的 | 波多野结衣电影一区二区 | 久久久受www免费人成 | 欧美日韩不卡在线观看 | 国产又黄又爽又猛视频日本 | 99热这里只有精品国产首页 | 高清日韩一区二区 | av免费看网站 | 国产精品毛片一区二区 | 成人免费在线观看入口 | 高清一区二区三区 | 伊人精品在线 | 久久天堂网站 | av网站在线免费观看 | 国产成人三级在线播放 | 少妇bbbb搡bbbb搡bbbb | 东方av免费在线观看 | 久久avav| 日韩成人免费电影 | 美女网站在线播放 | 奇米网777 | 香蕉视频最新网址 | 久久精品看片 | 色狠狠综合天天综合综合 | 国产精品a久久 | 成人免费看片98欧美 | 国产精品一区二区在线看 | 国产91精品一区二区麻豆亚洲 | 国产精品久久综合 | 韩日成人av| 日韩高清一区二区 | 99视频精品全国免费 | 免费久久久久久久 | 国产精品久久久久久久久久免费看 | 国产亚洲精品成人av久久ww | 91色一区二区三区 | 国产视频一区在线免费观看 | 一区二区三区久久精品 | 国产中文a | 又黄又爽的免费高潮视频 | 久久久久久伊人 | 日韩在线免费小视频 | 99久久久久成人国产免费 | 丁香资源影视免费观看 | 欧美一二三区在线观看 | 久久免费视频观看 | 天天插天天射 | 中文字幕一区二区三区久久蜜桃 | 最近在线中文字幕 | 精品免费一区 | 一级黄色在线视频 | 97精品一区二区三区 | 欧美一区二区伦理片 | 日本在线观看一区二区三区 | 天堂激情网 | 日韩黄色一区 | 午夜国产福利在线 | 亚洲永久精品在线 | 国产精品精品久久久久久 | 中文字幕一区二区在线播放 | 超碰97.com| 黄色免费观看视频 | 久久99久久99免费视频 | 精品无人国产偷自产在线 | h动漫中文字幕 | av中文在线影视 | 91亚洲激情 | 在线 你懂 | 人人干天天干 | 日韩在线色视频 | 日韩精选在线观看 | 日韩欧美成 | 蜜臀av免费一区二区三区 | 日韩欧美国产激情在线播放 | 国产一二区视频 | 亚洲精品乱码久久久久久按摩 | 久久公开免费视频 | 91免费观看视频网站 | 精品国产观看 | 91丨九色丨丝袜 | av黄色大片| 在线看成人 | 亚洲一区二区高潮无套美女 | 成人av电影在线观看 | 欧洲性视频 | 91九色老 | www.五月天| 在线三级播放 | 蜜桃麻豆www久久囤产精品 | 久久99精品久久只有精品 | 国产高清免费 | 青青河边草免费视频 | 在线观看视频一区二区三区 | 日日夜夜草 | 国产精品69久久久久 | 麻豆视频国产在线观看 | 国产精品一区二区av麻豆 | 中文字幕乱在线伦视频中文字幕乱码在线 | 在线播放日韩 | 在线免费观看视频a | 国产一区二区三区免费在线 | 亚洲一级理论片 | 91中文字幕一区 | 激情婷婷六月 | 国产精品日韩欧美一区二区 | 在线观看日韩中文字幕 | 日韩精品一区二区三区在线视频 | 国产高清无av久久 | 国产精品久久久久亚洲影视 | 久久久高清免费视频 | 日韩av中文字幕在线 | 91桃色国产在线播放 | av视屏在线播放 | 亚洲 欧美变态 另类 综合 | 色婷婷综合久色 | 最近中文字幕免费观看 | 狠狠五月婷婷 | 国产精品午夜久久 | 亚洲成人家庭影院 | 操操操人人 | av资源在线看 | 另类五月激情 | 免费av在线网 | 97色噜噜 | 国产成人精品综合 | 欧美日韩aa| av短片在线观看 | 亚洲黄色成人网 | 亚洲无在线 | 91天堂素人约啪 | 日本字幕网 | 99麻豆久久久国产精品免费 | av免费网页| 亚洲成人精品 | 日本夜夜草视频网站 | 亚洲激情免费 | 97国产精品亚洲精品 |