亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

MyBatis核心機制:Mapper動態(tài)代理與兩級緩存源碼解析

MyBatis核心機制:Mapper動態(tài)代理與兩級緩存源碼解析 面試官拋來一個很基礎(chǔ)的問題你 Service 里注入了一個 Mapper 接口方法名寫好了SQL 寫在 XML 里但接口根本沒有實現(xiàn)類這一調(diào)怎么就執(zhí)行了緊接著又問同一個事務(wù)里同一個查詢調(diào)兩次走緩存嗎一級緩存和二級緩存誰在前大多數(shù)平時寫業(yè)務(wù)的人能用但真被問到就有點卡殼。這篇文章不繞圈子直接從源碼拆 MyBatis 的 Mapper 動態(tài)代理、一級緩存和二級緩存的完整鏈路最后再給幾個實戰(zhàn)中排查緩存、打印 SQL、自定義緩存的操作既能當(dāng)面試復(fù)習(xí)材料也能當(dāng)項目排坑手冊。1. Mapper 動態(tài)代理為什么接口沒有實現(xiàn)類也能干活1.1 從 JDBC 到 Mapper 接口你少寫了的那層膠水回想沒用 MyBatis 的時候?qū)懸粋€數(shù)據(jù)庫操作要經(jīng)歷什么獲取 Connection創(chuàng)建 PreparedStatement手動 setParameter執(zhí)行 executeQuery再手動遍歷 ResultSet 轉(zhuǎn)成對象最后還要關(guān)掉一堆資源。后來用 MyBatis你只需要定義接口方法、寫一個 XML 里的 SQL或者用注解寫一行 SQL然后在 Service 里直接注入 Mapper 調(diào)方法。中間那幾千行樣板代碼全部消失了。但這引出第一個疑問接口不能 newMyBatis 到底往接口里塞了什么答案不是字節(jié)碼增強插樁而是 JDK 自帶的一個通行做法——動態(tài)代理。MyBatis 在啟動階段掃描 Mapper 接口給每個接口生成一個代理對象你調(diào)用接口方法實際上是調(diào)到了代理對象的 invoke 方法上。代理內(nèi)部再做兩件事定位這條 SQL然后交給 SqlSession 去執(zhí)行。1.2 MapperProxy 與 Proxy.newProxyInstance動態(tài)代理的入口所有 Mapper 接口代理的源頭在MapperRegistry。MyBatis 啟動解析配置文件時會把你配置的每個 Mapper 接口通過registry.addMapper(Class)注冊進去每個接口對應(yīng)生成一個MapperProxyFactory。后面你需要這個接口的實例時工廠調(diào)用public T newInstance(SqlSession sqlSession) { MapperProxyT mapperProxy new MapperProxy(sqlSession, mapperInterface, methodCache); return newInstance(mapperProxy); } protected T newInstance(MapperProxyT mapperProxy) { return (T) Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[] { mapperInterface }, mapperProxy); }關(guān)鍵就在Proxy.newProxyInstance它要求目標(biāo)必須是接口Mapper 恰好是接口然后動態(tài)生成一個實現(xiàn)這些接口的代理類。以后你調(diào)用userMapper.selectById(1)其實是調(diào)用到MapperProxy.invoke上。很多初學(xué)者會把 Spring AOP 和這個搞混。這里沒有 CGLIB、沒有 Aspect 切面就是 JDK 原生動態(tài)代理。也正因如此Mapper 接口在設(shè)計上天生不能被寫成普通類只能接口否則就無法走 JDK 代理這條路。1.3 MapperMethod 的分發(fā)邏輯一個方法如何找到對應(yīng)的 SQLinvoke方法并不直接執(zhí)行 SQL它先過濾掉Object類的方法比如toString、hashCode、equals剩下的業(yè)務(wù)方法交給MapperMethod處理public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (Object.class.equals(method.getDeclaringClass())) { return method.invoke(this, args); } return cachedInvoker(method).invoke(proxy, method, args, sqlSession); }MapperMethod構(gòu)造時會解析兩樣?xùn)|西SqlCommand和MethodSignature。SqlCommand做的是從方法名去Configuration.mappedStatements里找對應(yīng)的MappedStatement并根據(jù) SQL 類型分成 UNKNOWN、INSERT、UPDATE、DELETE、SELECT。MethodSignature做的是解析方法參數(shù)搞清楚有多少個參數(shù)、是否需要Param注解、返回類型是 List 還是單個對象、有沒有分頁參數(shù)等。真正執(zhí)行時execute方法會按 SQL 命令類型分發(fā)switch (command.getType()) { case INSERT: { return sqlSession.insert(command.getName(), param); } case SELECT: { if (method.returnsVoid() method.hasResultHandler()) { sqlSession.select(command.getName(), param, method.getResultHandler()); return null; } else if (method.returnsMany()) { return sqlSession.selectList(command.getName(), param); } else { return sqlSession.selectOne(command.getName(), param); } } ... }到這里一個 Mapper 方法被映射成了一次普通的 SqlSession 調(diào)用。剩下的查詢過程就進入 Executor 鏈路也就是緩存發(fā)揮作用的地方。提示如果你在自定義攔截器里想拿到 Mapper 方法的注解或方法名通常是通過Invocation.getArgs()[0]即 mappedStatement.getId()反推Mapper接口的完全限定名和方法名原理就是這里講的動態(tài)代理鏈路。2. 一級緩存藏在 Executor 里的那張查重表2.1 一級緩存的數(shù)據(jù)結(jié)構(gòu)PerpetualCache 與 CacheKey一級緩存官方叫 Local Cache作用域是 SqlSession 級別。大多數(shù)人知道它存在但不知道它長什么樣。其實 MyBatis 的緩存實現(xiàn)很樸素緩存對象統(tǒng)一實現(xiàn)Cache接口一級緩存用的是PerpetualCache內(nèi)部就是一個普通HashMappublic class PerpetualCache implements Cache { private final String id; private final MapObject, Object cache new HashMap(); }注意這個 HashMap 沒有任何加鎖保護所以一級緩存不是線程安全的它天然只服務(wù)于當(dāng)前 SqlSession。那緩存 key 是什么不能簡單拿 SQL 字符串做 key因為同一個 SQL 傳不同參數(shù)就是不同結(jié)果。MyBatis 封裝了一個CacheKey核心字段包括MappedStatement 的 id、查詢 SQL、參數(shù)對象、RowBounds 偏移量甚至還會往里追加一些環(huán)境標(biāo)識。最終生成一個 hash 值作為 HashMap 的 key。所以“同一條 SQL 但參數(shù)不同”“同一個方法但 offset/limit 不同”都會被識別為不同緩存項。2.2 什么情況命中、什么情況失效一次完整查詢的判定過程一級緩存的查詢動作發(fā)生在BaseExecutor.query。這段邏輯是整個緩存體系的心臟值得記清楚先從 BoundSql 和參數(shù)構(gòu)建出 CacheKey。查一級緩存localCache.getObject(key)。如果有值直接返回如果沒值進入數(shù)據(jù)庫查詢queryFromDatabase查到結(jié)果后放進localCache。返回結(jié)果前如果當(dāng)前處于嵌套查詢中還要把結(jié)果保存到localOutputParameterCache這是處理存儲過程輸出參數(shù)的細節(jié)。那么什么時候清空四個時機執(zhí)行了任意 insert/update/delete。因為寫操作后數(shù)據(jù)變了再拿著舊緩存沒意義MyBatis 默認在寫操作前執(zhí)行clearLocalCache()。手動調(diào)用sqlSession.commit()、rollback()或close()。在select標(biāo)簽上顯式設(shè)置flushCachetrue每次查詢前先清緩存。查詢涉及嵌套結(jié)果映射且localCacheScope設(shè)置為 STATEMENT 時每條語句結(jié)束后清緩存。這里有個容易踩的坑一級緩存默認就是開啟的不需要任何配置。同一個 SqlSession 里前一個 SQL 查過的數(shù)據(jù)下一次完全相同的查詢直接命中緩存根本不走數(shù)據(jù)庫。看起來是好事但如果你的業(yè)務(wù)場景是“同一個事務(wù)里先查一次然后別的系統(tǒng)改了庫你再查一次想拿最新數(shù)據(jù)”拿到的還是舊值。這不是 bug是緩存語義如此。2.3 最容易誤解的一點Spring 整合后一級緩存并不是全程有效單獨用 MyBatis 時SqlSession 生命周期由你控制一級緩存的行為很好理解。但到了 Spring/Spring Boot 中事情就變了你的 Service 通常沒開事務(wù)也沒手動拿 SqlSession一切靠SqlSessionTemplate和SqlSessionInterceptor代理。SqlSessionTemplate內(nèi)部每次調(diào)用方法會通過SqlSessionUtils.getSqlSession()獲取 SqlSession。如果你當(dāng)前沒有 Spring 事務(wù)這個方法會新建一個 SqlSession用完后立刻 close。兩次獨立的 Mapper 調(diào)用其實是兩個不同的 SqlSession一級緩存完全不共享等于每次查詢都重新查庫。一旦 Service 方法加上Transactional情況就不同了Spring 事務(wù)管理器會把 SqlSession 和事務(wù)綁定在當(dāng)前線程上整個事務(wù)范圍內(nèi)的多次查詢復(fù)用同一個 SqlSession一級緩存這才真正生效。所以你在網(wǎng)上會看到兩種矛盾的說法有人說 MyBatis 一級緩存默認開啟很好用有人說自己試了發(fā)現(xiàn)沒用。兩種說法都對區(qū)別就在于是不是處在 Spring 事務(wù)中。這也是一個非常經(jīng)典的面試考點。提示如果在 Spring 環(huán)境里你確實想模擬“每次查詢強制走庫”最干凈的辦法是在對應(yīng)的 select 標(biāo)簽上加flushCachetrue而不是幻想著關(guān)掉一級緩存本身。MyBatis 雖然給了localCacheScopeSTATEMENT這個配置但它清緩存的動作在 Spring 無事務(wù)環(huán)境下意義不大因為 SqlSession 本身已經(jīng)是全新的了。3. 二級緩存namespace 邊界上的共享倉庫3.1 開啟二級緩存的條件cacheEnabled 與 標(biāo)簽缺一不可二級緩存作用域是 namespace也就是一個 Mapper 接口/XML 文件對應(yīng)一個緩存?zhèn)}庫。網(wǎng)上不少人搞混一件事mybatis.configuration.cache-enabled默認是 true就以為默認開了二級緩存。實際上cacheEnabled只決定Configuration.newExecutor時要不要給你的 Executor 套上CachingExecutor裝飾器。真正的開關(guān)還有一道你的 Mapper XML 里必須寫了cache標(biāo)簽或者通過注解CacheNamespace啟用。兩道閘都打開后查詢鏈路就變成CachingExecutor先查二級緩存。二級緩存沒命中進入BaseExecutor查一級緩存。一級緩存也沒有查數(shù)據(jù)庫。兩個緩存的作用域差異決定了一級緩存是會話私有的二級緩存是 namespace 內(nèi)多個 SqlSession 共享的。這也是它名字里“二級”的意義——跨會話共享。3.2 TransactionalCache為什么要等事務(wù)提交才真正寫入二級緩存最容易讓人想當(dāng)然的地方是寫入時機??碈achingExecutor.query源碼命中二級緩存直接返回沒命中查詢數(shù)據(jù)庫后它并不會立刻把結(jié)果放進二級緩存而是先放進一個TransactionalCache的臨時區(qū)。TransactionalCache內(nèi)部有兩個關(guān)鍵結(jié)構(gòu)entriesToAddOnCommit本事務(wù)內(nèi)準(zhǔn)備寫入二級緩存的數(shù)據(jù)先放這里。entriesMissedInCache本事務(wù)內(nèi)查過但沒命中的 key 也先記下來提交時把這些 key 標(biāo)記為“緩存了空值”。只有當(dāng) SqlSession 提交時TransactionalCacheManager.commit()才會把entriesToAddOnCommit真正刷進二級緩存?zhèn)}庫。為什么這樣設(shè)計因為如果你的查詢還沒提交就寫進二級緩存另一個 SqlSession 可能讀到一條事務(wù)未提交的數(shù)據(jù)這就是臟讀。MyBatis 用一個“延遲寫入提交時落庫”的機制規(guī)避了這個問題。同時事務(wù)回滾時會調(diào)用rollback()把臨時區(qū)數(shù)據(jù)直接丟棄避免已回滾的數(shù)據(jù)進入共享緩存。理解了這一點你就明白為什么有人遇到“明明查了數(shù)據(jù)二級緩存命中率卻不高”——大概率是 SqlSession 一直沒提交數(shù)據(jù)始終壓在臨時區(qū)里。3.3 readOnly、flushInterval、eviction 這些參數(shù)到底改了什么cache標(biāo)簽的典型配置長這樣cache evictionLRU flushInterval60000 size512 readOnlytrue /每個參數(shù)背后都對應(yīng)一個裝飾器參數(shù)默認值作用對應(yīng)實現(xiàn)evictionLRU緩存淘汰策略控制容量滿時移除誰LruCache、FifoCacheflushInterval無定時清空緩存的毫秒數(shù)到期后下次查詢會刷新倉庫ScheduledCachesize1024最多緩存多少個對象引用外層裝飾器控制readOnlyfalse返回緩存對象的策略SerializedCachereadOnly是最值得展開的參數(shù)。默認readOnlyfalse時二級緩存返回的對象不是原來那個實例而是通過序列化反序列化復(fù)制出來的副本。這就強制要求所有放進二級緩存的對象實現(xiàn)Serializable接口。好處是安全調(diào)用方隨便改返回對象都不會污染緩存?zhèn)}庫里的原數(shù)據(jù)。壞處是性能開銷大每次命中都要做一次序列化拷貝。readOnlytrue時MyBatis 直接返回緩存里那個對象引用性能高很多但調(diào)用方一旦修改對象倉庫里的數(shù)據(jù)也跟著變。業(yè)務(wù)代碼如果沒意識到這一點很容易出現(xiàn)“緩存被悄悄改掉”的詭異問題。我的建議是只有確認對象不會被修改、且讀取極頻繁的場景才用readOnlytrue否則老老實實保持默認。3.4 多表關(guān)聯(lián)場景下的臟數(shù)據(jù)為什么大家都說二級緩存要慎用二級緩存有一個先天短板它只知道 namespace不知道你 SQL 里到底碰了哪些表。舉個例子OrderMapper里有個查詢 join 了user表查出來的訂單列表帶著用戶昵稱這些數(shù)據(jù)被放進了OrderMapper的二級緩存。另一個UserMapper執(zhí)行更新MyBatis 只清UserMapper自己的緩存OrderMapper緩存里那些舊昵稱還在。下次再查訂單命中的是臟數(shù)據(jù)。這就是二級緩存臟讀的經(jīng)典場景。官方文檔對此的表述很含蓄但業(yè)內(nèi)實踐早就形成共識二級緩存適合字典表、配置表這類極少更新的只讀數(shù)據(jù)不適合頻繁變更的業(yè)務(wù)主表尤其不適合 join 查詢很多的接口。如果一定要在多 Mapper 間共享一塊緩存可以用cache-ref namespace其他Mapper全限定名/讓兩個 namespace 指向同一個緩存?zhèn)}庫但你要在業(yè)務(wù)上保證所有變更語句都會刷到同一個倉庫否則還是躲不過臟讀。提示項目里遇到“改了數(shù)據(jù)庫但查詢結(jié)果沒變”的線上事故第一反應(yīng)應(yīng)該是看二級緩存。尤其是你最近給某個 Mapper 加了cache標(biāo)簽但沒細想它 SQL 涉及哪些表事故率非常高。4. 實戰(zhàn)排查緩存命中率、SQL 打印與自定義緩存擴展4.1 配置 SQL 打印日志實現(xiàn)類的選擇與效果對比排查緩存問題第一步永遠是看清 SQL 到底有沒有真正發(fā)到數(shù)據(jù)庫。MyBatis 的日志輸出靠LogImpl配置常見兩種# 控制臺直接輸出適合本地調(diào)試 mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl # 接入 Slf4j適合生產(chǎn)環(huán)境按級別過濾 mybatis.configuration.log-implorg.apache.ibatis.logging.slf4j.Slf4jImpl logging.level.你的Mapper包路徑debug選 Slf4j 更合理因為可以配合logback或log4j2把 SQL 日志單獨輸出到文件不至于刷爆應(yīng)用日志。StdOutImpl就是往System.out直接 println本地調(diào)試方便上生產(chǎn)最好不要用日志格式不可控。日志打印的 SQL 是預(yù)處理語句能看到類似Preparing: SELECT * FROM user WHERE id ?以及Parameters: 1(String)。如果兩次相同查詢只有第一次出現(xiàn)Preparing第二次沒了說明走了緩存每次都出現(xiàn)Preparing說明緩存沒有命中或者當(dāng)前會話一級緩存已經(jīng)失效。4.2 手寫一個帶命中率統(tǒng)計的 Cache覆蓋官方實現(xiàn)我排查緩存問題時最喜歡先看一眼命中率。MyBatis 自帶的LoggingCache其實會記錄命中率信息只要在配置里把緩存對應(yīng) namespace 的日志級別調(diào)到 DEBUG日志里就會輸出Cache Hit Ratio。如果你不想依賴日志級別也可以自己寫一個統(tǒng)計包裝器public class HitRateCache implements Cache { private final Cache delegate; private final AtomicLong hits new AtomicLong(); private final AtomicLong total new AtomicLong(); public HitRateCache(Cache delegate) { this.delegate delegate; } Override public Object getObject(Object key) { total.incrementAndGet(); Object value delegate.getObject(key); if (value ! null) { hits.incrementAndGet(); } return value; } Override public void putObject(Object key, Object value) { delegate.putObject(key, value); } Override public double getHitRate() { long t total.get(); return t 0 ? 0 : (double) hits.get() / t; } Override public String getId() { return delegate.getId(); } // removeObject、clear、getSize 直接透傳 }然后在cache配置里用cache type你的類全限定名/替換默認實現(xiàn)。不過要注意用type指定后MyBatis 默認那一套 LRU、Serialized 裝飾器就被跳過了你需要自己在HitRateCache里把需要的策略組合起來比如再包一層LruCache和SerializedCache。最簡單的做法是讓自定義類內(nèi)部持有一個組裝好的Cache鏈條而不是全部自己重寫。4.3 自定義 Redis 二級緩存Cache 接口的落地細節(jié)單機多線程下用內(nèi)置緩存沒問題但應(yīng)用一上多實例問題立刻暴露每個實例的二級緩存互相獨立一個實例更新了數(shù)據(jù)其他實例還是舊值。這需求本質(zhì)是“分布式緩存”很多人都會動手實現(xiàn)一個 Redis 版本。MyBatis 的Cache接口非常小實現(xiàn)思路是public class RedisCache implements Cache { private final String id; private final RedisTemplateObject, Object redisTemplate; public RedisCache(String id) { this.id id; this.redisTemplate SpringContextHolder.getBean(RedisTemplate.class); } Override public void putObject(Object key, Object value) { redisTemplate.opsForValue().set(getKey(key), value, 30, TimeUnit.MINUTES); } Override public Object getObject(Object key) { return redisTemplate.opsForValue().get(getKey(key)); } Override public void clear() { // 按 namespace 前綴刪除注意性能 } // 其他方法略 }落地時有幾個坑值得提前說構(gòu)造函數(shù)必須只有一個String id參數(shù)MyBatis 解析cache時靠反射調(diào)用它。普通RedisTemplate序列化方案要統(tǒng)一建議用 JSON 序列化或自定義序列化器否則存入的對象變更字段后反序列化容易出兼容性問題。Cache接口沒有批量刪除能力clear()只能按前綴掃描刪除量大會有性能隱患。事務(wù)未提交時數(shù)據(jù)不寫真實緩存這個語義由TransactionalCache保證自定義RedisCache只需要實現(xiàn)最基本的存取即可。待定如果你同時在配置里設(shè)置了flushIntervalScheduledCache裝飾器依然會生效要留意定時清空和 Redis 過期時間會雙重疊加。5. 面試與源碼閱讀常見問題背后的源碼證據(jù)5.1 高頻面試題盤點從動態(tài)代理到緩存失效這幾年 MyBatis 相關(guān)的面試題翻來翻去就是下面幾個把源碼位置記清楚回答就能落到底為什么 Mapper 接口不需要實現(xiàn)類答案是 JDK 動態(tài)代理入口在MapperProxyFactory和MapperProxy核心是Proxy.newProxyInstance。一個 Mapper 方法怎么找到對應(yīng)的 SQL入口是MapperMethod它會根據(jù)方法名從Configuration.mappedStatements里找到MappedStatement再根據(jù) SQL 類型調(diào)用SqlSession對應(yīng)方法。一級緩存和二級緩存有什么區(qū)別一級緩存作用域是 SqlSession存儲結(jié)構(gòu)是PerpetualCacheHashMap執(zhí)行 insert/update/delete 或 commit/rollback/close 時清空二級緩存作用域是 namespace要cacheEnabled和cache同時開啟才有效。二級緩存為什么會有臟數(shù)據(jù)緩存只按 namespace 組織無法感知 SQL 涉及的真實表多表 join 和跨 Mapper 更新時其他 namespace 的緩存不會主動失效。Spring 事務(wù)下緩存為什么表現(xiàn)不同無事務(wù)時每次 Mapper 調(diào)用新建和關(guān)閉 SqlSession一級緩存失效有事務(wù)時整個事務(wù)復(fù)用同一個 SqlSession一級緩存能命中。還有一道容易被問倒的緩存命中后返回對象和原對象是同一個嗎取決于二級緩存的readOnly。readOnlyfalse時對象經(jīng)過序列化拷貝不是同一個引用readOnlytrue時是同一個引用。一級緩存則直接返回原對象引用所以通過一級緩存拿到的對象被修改會影響下次命中結(jié)果。5.2 源碼閱讀路徑從 Configuration 到 Executor 的調(diào)用鏈如果你只想讀一遍關(guān)鍵源碼就能把整個查詢鏈路串起來我建議按這個方法走拿到源碼后別從頭讀直接從一個真實查詢跟蹤調(diào)用鏈。步驟如下先看SqlSessionTemplate.selectList這里是 Spring 整合后進入 MyBatis 的入口。順著SqlSessionUtils.getSqlSession看 Spring 怎么管理 SqlSession 生命周期。進入DefaultSqlSession.selectList它調(diào)用Executor.query。看CachingExecutor.query這里判斷二級緩存是否存在、flushCache 是否開啟。沒命中后落到BaseExecutor.query這里操作一級緩存CacheKey 在這里構(gòu)建。一級緩存也沒命中進入SimpleExecutor.doQuery到這里才真正創(chuàng)建 PreparedStatement。整個鏈路一層層剝下來比單獨看任何一個類都有效。建議自己寫兩個 Mapper、一個帶cache、一個不帶然后在CachingExecutor.query和BaseExecutor.query打上斷點看兩次相同查詢分別停在哪里緩存行為立刻一目了然。提示讀源碼時有個很容易忽略的小地方——Configuration.newExecutor決定是否包上CachingExecutor而這個方法是被SqlSessionFactory創(chuàng)建時調(diào)用的。Spring Boot 里SqlSessionFactoryBean裝配完畢后這個 executor 鏈就固定了后續(xù)改cacheEnabled配置需要重啟才生效。最后再分享一個排查心得我自己的經(jīng)驗是遇到 MyBatis 緩存相關(guān)問題先別急著懷疑框架 bug按“二級緩存是否開啟→當(dāng)前有沒有事務(wù)→SQL 是否真的發(fā)出→對象是否被修改”這個順序排查。很多“緩存不生效”其實是 Spring 事務(wù)沒開導(dǎo)致一級緩存作用域不符合預(yù)期很多“緩存臟數(shù)據(jù)”其實是多表操作撞上了 namespace 隔離的墻。另外給團隊定一條規(guī)矩默認不開啟二級緩存除非這個 Mapper 的 SQL 足夠簡單、數(shù)據(jù)更新頻率足夠低并且在代碼評審時明確說明涉及哪些表、為什么安全。MyBatis 的緩存機制本身設(shè)計得相當(dāng)精巧但精巧的默認值并不等于放之四海而皆準(zhǔn)業(yè)務(wù)場景才是最終的尺子。希望這篇文章能把這條鏈路講透下次再有人問起動態(tài)代理和兩級緩存你至少能直接告訴他答案在源碼的哪個位置。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
四虎免费在线播放| 欧美成人9797| 好吊色综合| 是还免费视频1727我| 色99视频| 国产97色在线| 色官网在线| 99re9| 久久日本熟女精品一区| 欧美男女午夜啪啪| 五月婷婷丁香六月| 久久色情| 玖玖资源综合在线视频| 欧美黄片免费在线观看视频| 精品无码秘 人妻一区二区| 国产综合久久久鬼色| 婷婷成人五月天| 人妻aa| 亚洲av无码成电影在线播放| 色欲天天综合久久久无码网中文| 91网站18禁| 久久一区二区蜜桃| 欧美亚洲特P| 呻吟 欧美 日本 中出| 日本美女性生活久久久久久久 | 亚洲熟妇极品| 亚洲第一综合| 日韩乱码Av| 亚洲色图超碰在线| 精品人妻视频一区二区三区蜜桃视频| 亚洲 图片 综合91| 欧美aⅴ99久久黑人专区| 丰满人妻一区二区三区免费,| 中文字幕91页| 丰满人妻一区二区三区四| 东京热免费视频| 色情综合| 丁香五月综合| 天天操天天射青青草| 国产综合久| 97国产精品一区| 五月天社区| 国产乱人伦AVA麻豆软件.| 日韩精品一区二区日韩| 巨爆乳一区二区爆乳区| 天天色,天天干,天天干| 黄在线| 欧美另类精品xxxx| 国产 三级自拍| 午夜无码精品免费看性色| 亚洲欧美在线观看无码| 国产AV毛片| 青娱乐亚洲自拍| av午夜影院在线播放| 久操网线| 婷色五月天| 日韩久久三区| 清纯唯美综合亚洲| 欧美中文综合| 3p国产色噜噜一区| 超碰激情808| 加勒比五月天| 激情六月天| 97WW精品| 久久超碰av在线| 人妻熟妇一区二区三区| yaouchengrenav| 人人操人人插人www| 亚洲成av人片色午夜乱码| 日本岛国黄色网址| 国精综合一二三区影视| 欧美亚州综合网图片| 92久久| 91精品国产日韩欧美综合| 日韩欧美午夜视频在线| 国产乱弄免费在线视频。 | 男女国产精品| 免费?级毛片无码?∨蜜芽试看| 久久91视频| 床上啊啊啊一区二区三区| 久久av网| 另类图片天天影视| 色婷亚洲五月在线观看| 亚洲男人的天堂AV| 不卡日本一区二区| 精品国产精品一区二区| 白 大 人妻 区 在线| 大香蕉99re| 亚州熟女乱伦| 吻戏激情性巴克| 中文字幕第23区| 亚洲九九九九| 91chinese在线| 伊人精品视频| 亚洲Av无码成人精品国产| 国产天天骚| 中文字幕一区二区无码成人| 囯产乱伦一区二区三女 | 欧美色图第一页| 久久国产免费激情视频| 人妻天天爽| 日本天堂网| 蜜桃视频啊啊啊啊| 精品亚洲国产成人AV制服丝袜 | 日本一区二区不卡| 99热精品在线| 日韩精品午夜操呦呦不卡影院| 少妇3P性爱自拍| 日韩精彩免费| 日韩三级伊人| 国产精品国产自产拍高清AV| 高清国产精品无码| 情色av电影| 伊人网高清| 日本3级一区二区免费| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 国产AV激情无码久久无码| 欧美亚洲国产自久久| 日韩无码第3页| 亚洲字幕一区二区| 91天天爱| 欧美不卡二区| www.成人无码| 91超级碰碰碰| 麻豆成人AV| www.狠狠| 欧美亚洲激情| 97超碰天天| 亚洲欧美色图小说| 亚洲和欧美裸体美女双飞视频| A一区片| A啊啊在线观看| 有码免费观看| 国产亚洲精品一区二区三区| 一区二区三区四区姦女| 欧美黄色片在线播放| 中文字幕久久精视频久久大全| 久久精品国产精品一区| 欧美大战久久久伊人| A级毛片在线看免费| 884t在线| 欧美做爰无码A片视频| 国产精品丝袜在线| 91在线限制级| 成人三一级一片aaa| 97 国产精品| 久久久一级| 日韩熟女三十乱伦| 男人的天堂日本东京热| 色九区| 日日超碰亚洲| 91少妇通奸网站| 大香蕉AV在线| 7777奇米影视久久| 在线啊啊啊| 天天综合,91综合永久| 嫩呦国产一区二区三区AV| 日本精品一区二区三| 性吧在线视频| 色官网色综合| 亚洲欧美第一页| 亚洲综合影片| 欧美精品999| 9久精品| 中文字幕综合人妻| 人妻91少妇| 后入 亚洲 美女 射| 屁屁影院一区二区三区国产| 国产女大学生AV| 久久久成人精品| 亚洲一区二区麻豆影院| 天天躁日日躁AAAXX| 男女性无套 免费九一| 啊嗯嗯啊好大好爽| 超碰在线974| 成人国产精品三级A片| 在线a亚洲视频播放在线| 国产一区二区三区,在线观看观看| 狠狠操综合| 再深点灬舒服灬太大了添视频| 成人小电影网站tex| www.91欧美| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 盗摄 精品 另类 一区| 乱伦av.com| 84YTCOM性无码| 亚洲三级。日韩三级| 久久少妇人妻| 91九九九逼| 91粉芽高清在线一区二区| 欧美日韩操操操| 翔田千里爆乳巨臀无码| 日韩免费在线观看不卡| 男人久久天堂| 国产精品国产精品国产| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 中文字幕AV片| 亚洲情色无码一区二区三区| 超碰在线91| 欧美最婬乱婬爆婬牲视频| 日韩丨制服丨中文|在线| 91网站18在线| 91欧美性| 91N综合网在线| 男人天堂日日夜夜| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚 | 综合日韩激情另类图片| 亚州色站 日韩电影| 国产老熟女| 亚洲最大91网| 亚洲国产精品久久久久婷婷青年| 亚洲18禁| 人妻在线中出视频| 欧美色图天堂网m| 色噜噜人妻av 中文字幕| 亚洲色图大香| 欲色啪| 天天日天天干天天摸天天操| 欧美激情精品| 国产无码久久高清| 亚洲国产一区二区入口| 精品少妇后入一区二区三区四区人妻巨乳| AV天堂丝袜| 绯色AV粉色AV蜜臀AV| 啊啊啊啊在线观看网址| 色拍偷亚洲| 夜夜精品视频一区二区| 亚欧色图在线激情| 97在线视频观看网站| 免费看A片毛毛片在线播| 欧美日韩 强奸乱伦| 国产三级电影免费观看| 中文字幕一二三区| 超碰综合97在线| 91欧美色| 国产AV无码AV| 国产视频三区四区| 亚洲精品不卡一二三区| 夫妻日逼| 丰满人妻一区二区三区四区| 五月丁香啪啪网| 一二三啪啪专区| 青青伊人这里只有精品| 伊人操| 国产精品一区午夜福利| 婷婷五月天色色| 欧美一二三区四五区| 亚洲天堂美臀在线| 亚洲日韩国产精品| 五月丁香拍拍激情综合三级| 人妻加勒比东京热| 久久精品女同亚洲女同13| 97干97色| 十八禁视频网站| 青青草亚洲一区| 在线小说视频一区| 富女玩鸭子一级毛片| 久久高清欧美国产| 韩国三级三级BD在线| 久久精品一区一起草| 九九九热| 欧美色色色| 性色国产东北露脸精品视频| 国产强奸乱伦第1页| 99热这里只有精品地址| 色噜噜人妻丝袜AV资源| 欧美成年人性爱视频免费观看| 粉嫩绯色AV一区二区在线| 男人天堂站| 超碰欧美97资源| av爱爱爱| 久无码| 欧美亚州综合网图片| 精品国产一区二区三区香蕉欧美| 色综合中文字幕不卡| 激情内射| aⅴ日韩成人电影av在线免费看av大全| 男女打扑克高清网站| 亚洲人精品久久久| 91成人久久| 亚洲熟妇乱女区二区三区| 亚洲人妻精品一区二区| 99热99在线| 久久机热| 日本熟妇人妻中出视频| 亚洲性综合| 天天懆天天日| 精品国产99| 人妻偷拍一区二区三区| 成人精品视频一区二区| 人妻色偷色噜| 大香伊人在线一区| 国产v片在线免费观看| 国产精品久久发布| 免费国产电影一区二区| 婷婷色香| 久久男人精品| 在线播放中文字幕| 99啪啪| 国产精品久久久久久久久久久久久久吹 | 日天天九九天堂666| 国岛片视频| 欧美色图97| 99热这里是精品| 日日不卡av| 天天欧美欧美亚洲网| 精品亚洲天堂| 四虎AV无码| 一级成人性爱| 精品一二三区四视频| 亚洲精品啪视频| 蜜桃AV天堂| 99免费在线视频| 成人小说另类在线| 色悠久久久av| 蜜桃久久一区二区三区| 欧美大波激情xxxx| 日本不卡一区二区三区| 九九热AV| 男女日B国产| 中文字幕无码不卡啪啪| 天天干美少妇一区| 欧美 日韩 亚洲 春色| 97天天在线| 五月丁香影院| 黄视频免费| 天天操熟妇| 国产原创自拍| 福利视频一区二区微拍| 男人的天堂免费| 麻豆AV短剧| 大香蕉综合| 男女啪啪啪18禁网站| 亭亭在线资源| 青青草伊人久久| 亚洲无码久久久久久久| 国产高清视频无码在线| 性欧美| 国产女同性恋视频| 免费精品99| 国产精品久久久久亚洲av| 欧美亚洲系列| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 色狠狠 - 百度| 久久久久亚洲| 老鸭窝在线视频播放| 九九九九九九九九九九九免费国产| 26uuu性| 亚洲色人| 97超碰9| 青青草玖玖爱| 97日视频| WWW4虎| 欧美日韩999| 这里只有精品视频在线观看麻豆| 超碰成人人人爽人人爽| 97色欧洲| nuu12国产麻豆精品| 美欧老女人97| 亚洲 欧美 小说| 91在线美女| 色婷婷狠狠18禁| 亚乱色| 日本精品网站在线中文| 13小男生GAY自慰脱裤子| 啊啊啊骚| 国产9l 大屁股| 欧美人妻另类在线| 亚洲图片视频小说| 亚洲伊人青青草| 走光一区92下载| 级品肉射| 日日干男人的天堂| 天天看片麻豆| 欧美亚洲激情一二三| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 亚洲精品国产精品成人| 婷婷五月天社区| 国产精品久久久久无码AV会牛| 五月婷婷丁香六月丁香| 小视频国产| 国产在线激情视频| 狠狠中文字幕| 乱欲一区二区| 国产无码一二三区| 天天色播| 欧美 传媒 麻豆 日韩 偷拍| 欧美另类自拍 | 欧美成人亚洲精品| 中国黑人三级片网站上区| 天美一二三在线观看Av| 久久久久亚洲精品| 欧美人妻一区二区| 男人天堂网站| 91性高朝久久久久久久久| 美女熟妇色| 99国产精品视频尤物| 日本天天操| 成人午夜小视频手机在线看| 精品超碰国产| 老女人爆菊| 欧洲中文字幕| 东京热熟女亚洲视频网站| 中文字幕女同在线| 日产精品久久久一区二区| 国产精品丝袜在线| av毛片aaaaa免费看| 国产高清精品一区二区三区毛片 | 五月天色五月| 97爱欧美| 亚洲h片在线免费观看| 三级AV入口| 黑人精品XXX一区一二区| 性生活性生大爱77AV国产| 亚洲偷拍欧美激情| 久久久久久久强迫| 国产AV毛片| 国产精品老师| 亚州色站 日韩电影| 91精品久久久久久77777| 日韩久射综合| 成人97人人超碰人人| 韩国三级理论在线| 国产精品 亚洲情色| 久久精品国产精品| 久草午夜| 久操婷婷| AV色五月天| 69天堂| 久久久久人妻二区精品叶可怜| 精品一二三区久久AAA片| 91neishe| 欧美色老汉| 黄色大片免费在线| 色九九九九久| 久久成人午夜狠狠| 国产主播福利| 婷婷五月天激情小说| 激情欧美日韩女同久久| 性夜影院爽黄A爽免费动漫| 国产精品成人蜜臀AV在线| 青青青国产| 久久黄黄黄| 日本视频在线观看污污污| 国产夫妻一区二区| 亚洲高清自拍| 五月丁香成人网| 亚洲AV色图一区| 强奸乱伦AV网址| 91精品电影18| 久久精品无码一区二区三区| 精品一啪| 九久久精品| 91人妻做a观看视频| 九一综合精品视品av| 欧美色另类| 激情五月丁香五月| 九九九九精品在线| 国产福利影视| 熟女熟妇一区二区三区视频| 美國A片| 日韩欧美水蜜桃人妻| 天天看精品动漫视频一区| 情侣开房子拍 日韩无码 女的很漂亮| 91无码人妻精品一区二区三区蜜桃| 日本视频在线观看污污污| 亚州色图欧美| 精品久久久久av影院| 神马久久中文字幕| 国产av波波国产精品| 亚洲色图美腿丝袜| 亚洲欧美日韩精品久久久一区二区| 91五月天| 色综合久久88色综合久久天天| 亚洲性综合| 久操视频资源站公开| 啊啊啊啊啊啊啊在线| 少妇xx精品| 97久久国产亚洲精品超碰热| 岛国成人av在线播放网址| 欧美天天影院| 久久久影院| 亚欧高清| 欧美熟女丝袜| 五月婷婷久久综合| 亚洲精品97久久| 五月天伊人| 亚洲精品成人动漫在线| 综合av影片| 国模吧 一区二区三区| 人人澡人人干| 爱欲AV| 蜜乳AV一区| 久久精品女同亚洲女同13| AAA久久| 亚洲成a人v欧美综合天堂下载| 大香蕉伊人一区在线观看| 无码外流操逼视频| 啊啊啊啊嗯嗯在线久久久| 六九九九| 中文字幕日韩人妻视频一区二区三区| 加勒比综合在线| JULIA人妻风俗店中出电影| 国产亚洲深夜激情| 欧美图片色五月天| 日韩少妇丰满亚洲| 久久久久9| 天天看夜夜看日日干| 插入粉嫩少妇视频| 97超级久久强资源| 国产九九九九九九九九| 男女性无套 免费九一| 欧美日韩人妻婷婷一区| 91在线页| 色综合尤物| 亚洲成人在线高清| 香蕉精品二区二区| 日韩av色图| 欧美性天天影视| 少妇干B| a片自拍直播视频| 91国产丝袜美女| 草b在线| 91一起操| 久久久麻豆精品| 亚洲电影中字一区二区| 日韩人妻无码不卡网站| 性色av一区二区| 精品夜夜澡人妻无码| 亚洲图片欧洲图片aⅴ| 大学生美女口爆| 99热在线只有精品| 任我爽在线视频免费观看| 清清一区二区三区四区不卡视频| 99操视频| 狠狠色婷婷777| 中文字幕亚洲永久精品| 国产精品久久久久久久无码AV | 97视频播放| 4虎在线视频| 激情亚洲天堂| 超碰97玖玖爱| 中文有码第五页| 天美传媒国产原创中文字幕亚洲欧美另类 | 99热亚洲天堂| 又大又黄国产| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 330Dv国产女人终合视频极品人与兽| 91丝袜美女国产| 9久久精品| 人人色人人操在线| 大香蕉丝袜一级片| www.久久久久| 天天干天天做| 欧美 亚洲 综合 制服| 开心五月深爱五月| 免费观看的av| 情侣开房子拍 日韩无码 女的很漂亮| 国产11页| 99999精品成人| 蜜桃在线观看一区二区三区| 中文字幕免费观看| 嗯嗯,好大,好爽,好骚| 97久久免费| 一二三四视频在线社区中文字幕| 97公开久久| 91性| 97久久超碰国产精品| 欧美综合色图网| 亚洲风情在线观看| 91网九色蝌蚪操熟女| 岛国片在线视频网站| 中国少妇XXXX做受| 视频分类 国内精品| 丁香五月婷婷五月| 中文字幕在在线观看网站| 九九九久久久久| 人妻大香蕉| 亚洲熟妇A V黑人| 热99这里有精品综合久久| 99精品国产户外露出| 北约熟女超碰| 99综合| 射丝袜高跟鞋99| 色综合20p| 美女91网| 亚洲一区操| 99热只有这里有精品| 国产久久一区二区午夜| 蜜桃精品视频一区| 日韩本不卡视频在线观看 | 久久精品人体| 美女91av| 91少妇| 中文操嬖片。| 一道本东京热加勒比一区二区三区| 91天射| 狠狠爱夜夜| 91午夜无码| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 日韩女优在线| nuu12国产麻豆精品| 日本阿v天堂在线观看| 999亚洲国产视频| 日韩人妻资源网| 久久精品成人一区二区三区蜜臀 | 97色爱| 国产精品白丝www| 99re热有精品视频国产| 99热超碰| 人妻熟女一区二区| 国产亚洲深夜激情| 嗯嗯啊啊视频在线看| 视频黄站| 国产精品视频麻豆入口| 九九九午夜| 国产激情在线| 亚洲av淫乱| 久久久久久久久久黄色网| 亚洲图片91| 日本亚洲熟女视频| 国产自产91区13区| 欧美综合网1| 国产免费黄色一级大片| 久久久久久久人妻| 欧美日韩精品久久久久东北老熟妇| 国产精品久久天天干| 欧美后进式| 2017,超碰| 欧美系列在线一区二区| 丁香婷婷激情五月天无毒不卡| 久热一区二区| 日本人体九九九九九九| 春色综合网| 91色婷婷综合久久中文字幕二区| 久久精品成人一区二区三区蜜臀| 中文精品一区二去| 亚洲欧洲久久天堂| 国产精品无码久久久久2025| 日日夜夜国产综合| 久久精品国产AV一区二区三区| 美女露胸露屁股| 玖草在线视频| 九九玖玖精品| 国产亚洲色停停久久99精品91| 久久欧美按摩999| 欧洲综合色图| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 久久日韩精品一区二区| 一区久久久二区| 91精品无码久久久久久久| 嗯嗯啊啊啊好舒服| 91露脸熟女专区| 国产丰满熟夫69mpp| 三级激情网站| 99精品丰满人妻无码| 大香蕉一线视频| 久久久女人| 三级三级三级日本99| 色婷婷一区二区三区久久| 久操B网| 日韩中文字幕国产| 天美传媒av在线| 天天天天天干夜夜夜夜夜操| 天天久久| 精品无码一二三四区| 日韩Va亚洲va欧美Ⅴa久久| 日本精品九九九| 乱伦AVxx| 色哟哟精品1精品2| 五月丁香社区婷婷日韩欧美精品影院| 高清视频一区| 男人的天堂欧美| 国产成人www免费人成看片| 黑人性欧美| 中美日韩毛片| 亚洲AV无码国产精品久久久久| 高清视频一区| 亚洲欧美一区二区不卡视频播放 | 欧美综合色图片| 热天堂一区二区| 人人摸人人添人人操| 国产精品一区二区三区在线| 久久99人妖视频国产| 久久久性少妇| 日本免费不卡二区| 国产福利影视| 人人弄人人摸| 熟女AV一区| 五月天激情综合网| 伊人久久综合影院| 999久久久九九九九| 欧美后入视频| 91neishe| 无码日韩网站| 牛牛操视频逼| 亚洲在饯| 少妇特黄一区二区三区| 亚洲日韩av一区二区三区百合| 亚洲αv一区二区三区| 91综合在线| 91美女视频直播| 91福利网在线观看| 香港久久久| 欧日韩在线观看| 精品网站9999| 99色色网| 欧美一级做a爰片免费视频| av爱爱爱| 青草成人免费视频一com| 日韩人妻丝袜美腿中文| 一二三啪啪专区| 丁香五月性爱| 亚洲美女自拍偷拍视频| 成人五级久久| 国产女大学生AV| 蜜臀久久久99久久久久| 蜜桃臀AV在线| 制服诱惑亚洲一区二区三区在线观看| 高树玛利亚无码流出| 天天流夜夜操| 狠狠色丁香| 欧美成人一区二区三区在线播放| 午夜超爽| 亚洲国产精品99久久久| 日本操逼视频免费| 嗯嗯啊好爽| 99热销国产这里有精品| 欧美日韩精品久久久久东北老熟妇| 黑人精品久久97| 日韩情色AV| 久草婷婷| 91网站视频在线观看| 亚洲欧洲精品成人| 欧亚久久偷拍视频| 青青草十区九区爱夜| 图色综合网| 人妻天天爽夜夜爽精品2| 亚洲人成色9999精品久久| 精品超碰中文在线| 丝袜AV一二三区| 欧美极品女人的天堂| 精品国产少妇高潮视频| 日韩人妻精品久久久久| 欧美日韩m| 美日韩一卡二卡三卡免费人妻精品| 操狠狠| 第二页中文字幕| 日本丝袜美腿人妻九九| 超碰97资源大奶| 青青青青草av在线观看| 久久99草| 成人情色综合网| 久久久久久十| 日本操逼视频免费| 精品毛片av一区二区| 亚洲精品xxx| 人妻在线视频| 久久久婷| 图色综合网| 中亚黄色三级大片| 免费视频观看60秒| 欧美99999| 蜜伊人色综合97| 粉嫩久久久久| 亚洲图片91| 1000部熟女视频在线观看| 国产中文大片资源中文字幕| 日韩欧美经典在线观看| 婷婷四五区| 蜜桃色院一区久久| 亚洲情色 自拍| 国产资源中文字幕在线| 久久精品国产亚洲AV嘿嘿| 九九香蕉网| 国产视频一区二区三区久久亚洲天堂| 久草草一二三四区久久| 精人妻一区二区三区| 中国农村熟妇毛片视频| 色噜噜人妻丝袜a∨先锋影| 一区二区三区精品黑丝白丝酒店对鸡 | 玖玖资源中文字幕制服丝袜| 天天综合站| 蜜臀一区二区三区在线| 國產尤物AV尤物在線觀看| 欧美1727免费观看视频| 午夜毛片高清免费不卡| 1024精品在线| 免费超碰97在线观看| 天天综合色| 久草在| 蜜臀99久久精品久久久懂爱| 可以免费观看的日韩av毛片| 欧美78p| 99精品在线| 一级二级三级黑人无码| 99热这里都是精品| 久湿久久| 午夜福利无毒不卡| 大香蕉宗合网在线| 91精品91久久久久77777| 久久久精品91八戒| 亚洲天堂区| 欧美日日人人天天| 亚洲精品国产熟女| 欧美激情总合网| 超碰欧美97资源| 国产毛片久久久久久久| 少妇蜜汁| 亚洲丝袜少妇在线| 女人被添高潮免费视频| 成人在线视频一区| 搡老熟女免费视频| 少妇二级| 欧美九九九| 在线精品福利免费播放| 91五月天| 影视综合无码少妇| 亚州色站 日韩电影| 97精品视频| 国模一区二区三区| 欧美激情区| 婷婷色五月激情| 97操碰| 在线99热| 91 偷| 伊人久久婷婷| 久久老熟女| 久久婷婷热| 婷婷10月天青娱乐| 91超级碰碰碰| 欲色综合| 久久久久久亚洲精品不卡人乳 | 午夜激情床戏激情| 久久久亚洲| 国产精品白虎| 偷拍 欧美 日韩| 天天日日本| 自怕偷自怕亚洲精品| 无码视频一区二区| 欧美另类精品xxxx| 亚洲九九视频在线观看| 探花激情视频| 97精品全部| 亚洲五月丁香花狠狠干一区二区三区| 9Ⅰ超碰| 91黑丝少妇| 夜夜操美女| 九九国产热| 国产精品午夜高潮呻吟久久av| 97超碰欧美手机在线| 免费毛片在线播放| 中文 人妻 制服| 欧美一区二区情色| 色就色综合| 天天爱综合网| 五月激情小说| 囯产精品久久久久久久久久梁医生 | 色婷婷婷五月天激情四射| 人人操人人操人人人操| 成人精品欧洲亚洲| 色999亚洲人成色| 91激情| 日日日大屁股骚女人精品| 去干网最新版| 超碰色综合| 黑人与人妻| 99久久婷婷国产综合| 国产福利精品98视频| 99re这里| 日本91白丝| 久久男人精品| 加勒比综合88| 粉嫩AV输入| 激情久久久| 一个色导综合| 丝袜美腿丝袜| 久偷拍| 成人丁香五月| 69av一区二区三区| 久热这里| wwe 天天干.com| 99re国产中文字幕| 午夜a成v人电影| 亚洲丨在线| 人人噜夜夜操| 蜜臀久久99精品久久久老,,| 可能人人看人人摸| 色悠久| 精品制服美女中文一区二区三区| 国产精品久久久视频| 少妇高潮对白在线观看| 91人妻少妇| 91亚洲丝袜| 日欧美色| 国产原创自拍| 一个人免费HD91视频| PMv在线观看| 亚洲中文字幕熟女少妇一区二区| 日韩图区| 欧美中文字幕一区| caorenqi shipin| 福利在线观看一区二区| 91在线精品一区二区三区| 久久久久久九九九九九| 欲色啪| 超碰97久久观看| 精品人妻1237| 亚洲天堂中文字幕无码男同| 欧美视频一区二区在线| ,成人免费啪啪视频| 2020久久免费视频| 97视频免费播放| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 久久久网站| 东亚亚洲无码高清| 中国国产精品一区视频| a片偷拍视频| 中文字幕精品探花视频| 大香蕉99999| 男人的天堂久久| 2020天天色综合| 超碰 国产熟女精品一区| 极品久久久久久久久久久久久久| 婷婷五月天久久精品视频一区二区三区| 久久人妻视频网| 综合色久| 99这里只有精品| 丁香六月婷婷| www.yw尤物| 色婷视频| 人妻嗯啊啊在线播放| 久操操| 天天干美少妇一区| 九九九九久久久| 亚洲丝袜色| 亚洲 综合 欧美| 翘臀vidoes| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 国产一区二区成人av在线播放| 乱欲视频| 一区操逼| 高跟丝袜AV专区国产| 人人操人人操草草| 国产CHASE男男GAYGA 毛多色婷婷| 日操粉逼逼| 2026国产精品视频| 男人的天堂日韩| 老熟女综合网| 午夜精品久久99蜜桃的功能章节| 亚洲天堂男人天堂| 久久性爱视频免费看| 久久亚洲国产成人| 亚州免费啪啪视频| 91呆哥人妻| 九九热视频在线观看| 日韩美女久久一区二区三区| 色好看av| 男女性扦B| 欧美激情 一区| 91色综合| 一类无码操逼视频| 美女自卫慰黄网站免费| 日韩三级一区 | 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 中国小夫妻勾搭露脸淫荡对白| 亚州九九九精品视频| 男人的天堂99| 97资源视频| 成片免费播放| 爱干爱射网啊啊啊| 国产第二页| 国产丁香精品露脸视频| 女人综合网| 欧美综合娱乐久久| 99精品久久| 亚洲自拍欧美国产首页网曝 | 五月婷婷色| 韩国女主播青草在线| 国产精品一区在线播放| 秋霞一集毛片观看| 一区二区三区激情在线观看| 色婷婷aV一区二区三区麻豆综合| 激情四射五月天| 亚洲日韩天堂| av日韩手机在线影视| 超碰日本97美女人妻人人玩人人爱| 亚洲限制级| 亚洲欧美情色| 夜间福利片1000无码| 欧美午夜精品久久久久久超碰| 亚洲视频二区 | 91爆操视频| 日韩伦理视频| 少妇精品| av无码av无码专区| 婷婷综合在线观看| 青青草AV色| 亚洲阿v天堂无码z2018| 亚洲 日本 一 二 三| 91超碰碰在线| 国产无码三级视频在线观看| 99久久久久| 久久综合av| a男人的天堂久久一级A毛片| 狠狠综合| 久久久成人免费av电影| 国产精品ⅴ无码大片在线看.| 91粉芽高清在线一区二区| 中文字幕乱偷人妻久久艾草网| 人妻少妇久久中文字幕一区二区 麻豆| 亚洲精品国产精品乱码不99| 亚洲无限观看| 国产美女自拍AV| 熟妇人妻一区二区三区| 96久久久久| 欧美翘臀视频网站一区二区三区| 亚洲91网。| 欧美色图97| 久热热| 家庭乱伦麻豆| 96精品在线| 91熟女丨老女人| 操人91| 熟妇人妻一二三区免费| 国产精品一级片在线看| 91色伦综合| 免费一级a毛片久久久久久鸭绿欲| 欧美日韩淫加| 亚洲宗合网| 69av一区二区三区| 日本曲间由美性生活片| 欧美日韩久久精品爱爱| 开心五月婷婷激情| 成人区人妻精品一| 久色网| 亚洲男人在线观看天堂| 五月天久久久| 蜜臀久久99精品久久久久久| 国产超碰在线| 欧美黄业| 天堂九九九九九九九九九| 国产精品久久久 | 久久香蕉影院| 丝袜 中出 制服 人妻 美腿 中文字幕| 操逼日韩无码 | 久久大| 伊人色综合超碰| 日日操免费视频| 1000午夜黄色| 怡红院一区二区熟女人妻| 99re99在线视频| 大香蕉伊人色偷偷在线| 97干在线| 中出789在线视频| 国产精品久久久无码AV网站| 日本亚欧爱爱| 国产av尤物| 成人av毛片在线观看| 成人精品一区二区三区| 久久久亚洲欧美综合| 日韩欧美~中文字| 久久精品国产精品亚洲艾通辽熟妇| 精品福利| 91美女视频在线免费观看| 看日韩操逼| 夜夜精品视频| 欧美72网页| 爱做久久久久久| 91无遮挡| 日韩精品电影| 亚洲久热| 中文字幕五月婷婷免费| 麻豆a'v电影| 欧美综合骚| 可以在线观看的黄色网址| 东北女人性交| 一区二区三区日韩欧美 | 欧美一级专区免费大片| 欧美精品999| 麻豆视频国产一区二区| 九热超碰| 亚洲不卡av在线| 成年女人18级毛片毛片免费观看| 色牛aV| 日韩成人人妻网站| 九一综合精品视品av| 国产美女高潮叫床视频| V A在线| 久久久久幕乱码| 91九色丨国产丨爆乳| 九九黄色视频在线观看| 美国日韩黄片| 丝袜加勒比| 亚洲成人色情五月天丁香花| 色色综合网站| 在线观看AV片| 青春草莓视频在线观看网址| 大香蕉日亚洲日本亚大| 超碰97资源大奶| 丁香婷婷色五月| 亚洲精品一二区| 人妻少妇久久中文字幕一区二区 麻豆| 国产女主播视频在线观看| 亚洲一二三四区机械| 久久五月婷| 天堂中文资源在线bt| 成人精品久久久午夜福利| 欧美性夜| 欧美在线第五页| 国产少妇高潮| 国产精品经典一卡久久久 | 超碰97资源大奶| 爽爽淫人网| 强奸a片网| 青娱乐国产盛宴视频| 综合av社区| 欧美成人一级麻豆| 欧美 亚洲精品首页| 玖玖超碰熟| 一二三四视频在线社区中文字幕| 欧美一区二区在线资源| 成人五月香网在线| 97色色婷婷| 韩国一级做A片免费的| 亚洲精品xxx| 国产一区自拍欧美日韩| 黄色免费一级在线毛片| 久久精品| 91综合中文字幕| 校园春色五月天| 性一级黄色录像片网站导航| 久久亚洲一区女同性恋中文字幕| 亚洲中文字幕一区| 九九人妻| 热的中文 热的有码 热的国产| 五十路熟女工口 | 久久国产在线一区二区| 免费精品无码一级毛片牛牛影视 | 欧美国产日韩清纯唯美| 综合激情五月天| 亚洲一区二区精品福利| 乱伦av.com| 久久高清欧美国产| 亚洲最大网站av| 日韩欧美经典在线观看| 欧美日韩性爱视屏免费看了| 美女被艹尤物视频| 亚洲欧美经典一区二区| 亚洲夜夜欢无码一区二区| 玖玖婷婷五月天| 天堂精品在线| 精彩视频日韩| 日韩午夜国产| 啊啊啊啊啊啊啊在线| 91九色丰满高潮| 天天日天天看| 日韩一级欧美一级国产一级台湾 | 狠色婷婷久久一区二区三区_| 日韩一二三区|