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

字節三面:如何設計一個高性能短鏈系統?

開發 前端
雖然各個系統千差萬別,但是設計思想基本一致,學會一些經典的架構設計,掌握基本的設計方法和常見需要考慮的問題,用這一套方法論去應對面試,應該就沒啥問題了。

所謂系統設計,就是給一個場景,讓你給出對應的架構設計,需要考慮哪些問題,采用什么方案解決。很多面試官喜歡出這么一道題來考驗你的知識廣度和邏輯思考能力。

雖然各個系統千差萬別,但是設計思想基本一致,學會一些經典的架構設計,掌握基本的設計方法和常見需要考慮的問題,用這一套方法論去應對面試,應該就沒啥問題了。

目前專欄已經包含以下幾個經典系統設計題:

  • 高性能短鏈系統
  • 高性能計數器
  • 高性能未讀數計數器
  • 高性能 Feed 流
  • 高性能限流器
  • ...... 后續會不斷增加

今天來分享下如何設計一個高性能的短鏈系統,字節三面的真實面試題。

什么是短鏈?為什么要用短鏈?

比如將 https://flowus.cn/veal/share/3306b991-e1e3-4c92-9105-95abf086ae4e 縮短為 https://sourl.cn/aY95qu,點擊后面的短鏈接將會重定向到前面的長鏈接。

短鏈的好處如下:

  1. 鏈接變短,在對內容長度有限制的平臺發文,可編輯的文字就變多了。比如微博限定了只能發 140 個字,如果一串長鏈直接復制上去就沒地方再寫其他文字了
  2. 大家接受各種短信的時候,能發現大部分鏈接都是短鏈形式,因為一般短信發文有長度限度,如果用長鏈,一條短信很可能要拆分成兩三條發,相應的成本也就增加了
  3. 使用短鏈在排版上更加美觀

短鏈跳轉的基本原理

點擊短鏈后,看下控制臺:

圖片圖片

可以看到返回了狀態碼 302(重定向)與 location 值為長鏈的響應,然后瀏覽器會再請求這個長鏈以得到最終的響應,整個交互流程圖如下:

圖片圖片

那么問題來了,301 和 302 都是重定向,到底該用哪個,這里需要注意一下 301 和 302 的區別:

  • 301,代表 永久重定向:第一次請求拿到長鏈接后,下次瀏覽器再去請求短鏈的話,不會向短鏈服務器請求了,而是直接從瀏覽器的緩存里拿,這樣的話短鏈服務器就無法獲取到短鏈的點擊數了,不利于數據分析,所以我們一般不采用 301
  • 302,代表 臨時重定向:每次去請求短鏈都會去請求短鏈服務器(除非響應中用 Cache-Control 或 Expired 暗示瀏覽器緩存),這樣便于短鏈服務器統計點擊數

生成短鏈的兩種方法

方法 1:哈希算法

哈希算法可以將一個不管多長的字符串,轉化成一個長度固定的哈希值。我們可以利用哈希算法,來生成短鏈。

常見的哈希算法就是 MD5、SHA 等,但實際上并不需要這些復雜的哈希算法。因為在生成短鏈這個問題上不需要考慮反向解密的難度,只需要關心哈希算法的計算速度和沖突概率就可以了。

能夠滿足這樣要求的簡單的哈希算法有很多,其中比較著名并且應用廣泛的一個哈希算法,那就是 MurmurHash 算法。盡管這個哈希算法在 2008 年才被發明出來,但現在它已經廣泛應用到 Redis、MemCache、Cassandra、HBase、Lucene 等眾多著名的軟件中。

MurmurHash 算法提供了兩種長度的哈希值,一種是 32bits,一種是 128bits。為了讓最終生成的短鏈盡可能短,我們可以選擇 32bits 的哈希值。比如假設某個長鏈接經過 MurmurHash 計算后得到的哈希值是 181338494,再拼上短鏈服務的域名就變成了最終的短鏈 http://sourl.cn/181338494(其中,http://sourl.cn 是短鏈服務的域名)。

如何讓短鏈更短

不過,通過 MurmurHash 算法得到的短鏈還是很長啊。別著急,我們只需要稍微改變一個哈希值的表示方法,就可以輕松把短鏈變得更短些。

將 10 進制的哈希值,轉化成更高進制的哈希值,這樣哈希值就變短了。

16 進制中,用 A~F,來表示 10~15。在網址 URL 中,常用的合法字符有 0~9、a~z、A~Z 這樣 62 個字符。為了讓哈希值表示起來盡可能短,我們可以將 10 進制的哈希值轉化成 62 進制。具體的計算過程如下圖。最終用 62 進制表示的=短鏈就是 http://sourl.cn/cgSqq。

圖片圖片

如何解決哈希沖突

哈希算法無法避免的一個問題,就是哈希沖突。盡管 MurmurHash 算法,沖突的概率非常低。但是,一旦沖突,就會導致兩個原始網址被轉化成同一個短鏈。當用戶訪問短鏈的時候,我們就無從判斷,用戶想要訪問的是哪一個原始網址了。這個問題該如何解決呢?

一般情況下,我們會保存短鏈跟原始網址之間的對應關系,以便后續用戶在訪問短鏈的時候,可以根據對應關系,查找到原始網址。存儲這種對應關系的方式有很多,比如我們自己設計存儲系統或者利用現成的數據庫比如 MySQL、Redis。

以 MySQL 為例,當有一個新的原始網址需要生成短鏈的時候,我們先利用 MurmurHash 算法,生成短鏈。然后將這個新生成的短鏈,在 MySQL 數據庫中查找:

  • 如果沒有找到相同的短鏈,這就表明這個新生成的短鏈沒有沖突。于是我們就將這個短鏈返回給用戶,然后將這個短鏈與原始網址之間的對應關系,存儲到 MySQL 數據庫中
  • 如果在數據庫中找到了相同的短鏈,那也并不一定說明就沖突了。我們先從數據庫中將這個短鏈對應的原始網址取出來:
  • 如果數據庫中的原始網址,跟我們現在正在處理的原始網址是一樣的,這就說明已經有人請求過這個原始網址的短鏈了。我們就可以拿這個短鏈直接用。
  • 如果數據庫中記錄的原始網址,跟我們正在處理的原始網址不一樣,那就說明哈希算法發生了沖突。不同的原始網址,經過計算,得到的短鏈重復了。這個時候,我們可以給原始網址拼接一串特殊字符,比如 DUPLICATED,然后再重新計算哈希值,兩次哈希計算都沖突的概率,顯然是非常低的。假設出現非常極端的情況,又發生沖突了,我們可以再換一個拼接字符串,比如 OHMYGOD,再計算哈希值。然后把計算得到的哈希值,跟原始網址拼接了特殊字符串之后的文本,一并存儲在 MySQL 數據庫中。
    當用戶訪問短鏈的時候,短鏈服務先通過短鏈,在數據庫中查找到對應的原始網址。如果原始網址有拼接特殊字符(這個很容易通過字符串匹配算法找到),就先將特殊字符去掉,然后再將不包含特殊字符的原始網址返回給瀏覽器。

如何優化性能

在短鏈生成的過程中,服務器會執行兩條 SQL 語句:

  1. 第一個 SQL 語句是通過短鏈查詢短鏈與原始網址的對應關系
  2. 第二個 SQL 語句是將新生成的短鏈和原始網址之間的對應關系存儲到數據庫

很顯然,第二步是無法避免的,而第一步可以通過給短鏈字段建立唯一索引來優化

這樣,當有新的原始網址需要生成短鏈的時候,并不會拿生成的短鏈在數據庫中查找判重,而是直接將生成的短鏈與對應的原始網址嘗試存儲到數據庫中。如果數據庫能夠將數據正常寫入,那說明并沒有違反唯一索引,也就是說,這個新生成的短鏈并沒有沖突。

當然,如果數據庫反饋違反唯一性索引異常,那我們還得重新執行上述的“查詢、寫入”過程,SQL 語句執行的次數不減反增。但是,MurmurHash 的沖突概率還是比較低的,所以,從整體上看,總的 SQL 語句執行次數會大大減少。

那如果數據量非常大,沖突概率大幅上升,這種情況下該怎么辦?

可以使用布隆過濾器。

把已經生成的短鏈,構建成布隆過濾器。當有新的短鏈生成的時候,我們先拿這個新生成的短鏈,在布隆過濾器中查找。如果查找的結果是不存在,那就說明這個新生成的短鏈并沒有沖突。這個時候,我們只需要再執行寫入短鏈和對應原始網頁的 SQL 語句就可以了。

方法二:ID 生成器

我們可以維護一個 ID 自增生成器。它可以生成 1、2、3…這樣自增的整數 ID。當短鏈服務接收到一個原始網址轉化成短鏈的請求之后,它先從 ID 生成器中取一個號碼,然后將其轉化成 62 進制表示法,拼接到短鏈服務的域名(比如http://sourl.cn/)后面,就形成了最終的短鏈。最后,我們還是會把生成的短鏈和對應的原始網址存儲到數據庫中。

理論非常簡單好理解。不過,這里有幾個細節問題需要處理。

相同的原始網址可能會對應不同的短鏈

每次新來一個原始網址,我們就生成一個新的短鏈,這種做法就會導致兩個相同的原始網址生成了不同的短鏈。這個該如何處理呢?實際上,我們有兩種處理思路。

  1. 第一種處理思路是不做處理。聽起來有點匪夷所依,但實際上,相同的原始網址對應不同的短鏈,這個用戶是完全可以接受的。在大部分短鏈的應用場景里,用戶只關心短鏈能否正確地跳轉到原始網址。至于短鏈長什么樣子,他其實根本就不關心。
  2. 第二種處理思路是拿原始網址在數據庫中查找,看數據庫中是否已經存在相同的原始網址了。如果數據庫中存在,那我們就取出對應的短鏈,直接返回給用戶。
    不過,這種處理思路有個問題,我們需要給數據庫中的短鏈和原始網址這兩個字段,都添加索引。短鏈上加索引是為了提高用戶查詢短鏈對應的原始網頁的速度,原始網址上加索引是為了加快剛剛講的通過原始網址查詢短鏈的速度。這種解決思路雖然能滿足 “相同原始網址對應相同短鏈” 這樣一個需求,但是是有代價的:一方面兩個索引會占用更多的存儲空間,另一方面索引還會導致插入、刪除等操作性能的下降。

如何實現高性能的 ID 生成器

實現 ID 生成器的方法有很多,比如利用數據庫自增。當然我們也可以自己維護一個計數器,不停地加一加一。但是,一個計數器來應對頻繁的短鏈生成請求,顯然是有點吃力的(因為計數器必須保證生成的 ID 不重復,籠統概念上講,就是需要加鎖)。如何提高 ID 生成器的性能呢?關于這個問題,實際上,有很多解決思路。我這里給出兩種思路。

第一種思路是給 ID 生成器裝多個前置發號器。我們批量地給每個前置發號器發送 ID 號碼段(這一段的 ID 歸屬于這個發號器,不用擔心ID 重復)。當我們接受到短鏈生成請求的時候,只需要選擇一個前置發號器來取號碼就行了。這樣通過多個前置發號器,明顯提高了并發發號的能力。

可能不是很好理解,這里類比下 “無鎖的并發生產者 - 消費者模型”:

對于生產者來說,它往隊列中添加數據之前,先申請可用空閑存儲單元,并且是批量地申請連續的 n 個(n≥1)存儲單元。當申請到這組連續的存儲單元之后,后續往隊列中添加元素,就可以不用加鎖了,因為這組存儲單元是這個線程獨享的。不過,申請存儲單元的過程還是需要加鎖的。

對于消費者來說,處理的過程跟生產者是類似的。它先去申請一批連續可讀的存儲單元(這個申請的過程也是需要加鎖的),當申請到這批存儲單元之后,后續的讀取操作就可以不用加鎖了。

圖片圖片

第二種思路跟第一種差不多。不過,我們不再使用一個 ID 生成器和多個前置發號器這樣的架構,而是直接實現多個 ID 生成器同時服務。每個 ID 生成器按照不同的規則來生成 ID 號碼,從而保證每個 ID 生成器生成的 ID 不重復。比如,第一個 ID 生成器只能生成尾號為 0 的,第二個只能生成尾號為 1 的,以此類推。這樣通過多個 ID 生成器同時工作,也提高了 ID 生成的效率。

圖片圖片

責任編輯:武曉燕 來源: 飛天小牛肉
相關推薦

2024-11-12 08:13:09

2024-11-19 16:31:23

2022-09-13 08:01:58

短鏈服務哈希算法字符串

2021-03-16 16:35:39

網關Java代碼

2025-06-04 03:15:00

高并發短鏈系統

2025-09-15 10:05:00

后端URL短鏈

2025-09-28 01:50:00

2019-06-27 09:50:49

高性能秒殺系統

2025-06-23 08:23:04

2024-07-30 14:01:51

Java字節碼JVM?

2024-07-05 09:41:42

2019-11-27 15:19:44

系統緩存架構

2021-12-08 09:53:50

騰訊QQ號碼重復

2022-09-13 17:45:40

長網址短鏈系統

2018-09-18 09:38:11

RPC遠程調用網絡通信

2019-10-31 13:58:32

阿里電商系統

2011-09-14 10:08:07

Beanstalkd

2022-10-09 14:15:42

短鏈設計

2024-09-02 18:10:20

2021-02-04 10:22:32

前端開發技術
點贊
收藏

51CTO技術棧公眾號

一本色道久久综合狠狠躁的推荐| 日本特黄一级片| 一级片视频网站| 国产精品videossex| 六月丁香婷婷久久| 超碰97久久| 蜜臀av一区二区三区| 精品久久久久一区二区国产| 日本一区二区在线| 欧美三级小视频| 成人国产综合| 国产欧美日韩精品一区| 7m第一福利500精品视频| 欧洲美女亚洲激情| 日本高清在线观看wwwww色| 国内毛片久久| 在线日韩国产精品| 日本在线播放一区| www.欧美色| 性人久久久久| 一本到一区二区三区| 中文字幕在线中文| 午夜精品久久久久久久99老熟妇| 98精品视频| 91精品国产全国免费观看| 亚洲开发第一视频在线播放| 欧美成人一区二区视频| 国产日产一区| 欧美午夜精品免费| 亚洲一区二区三区色| 中文字幕日产av| 久久精品亚洲人成影院| 欧美一卡在线观看| 亚洲无吗一区二区三区| jizz视频在线观看| 精品一区二区三区在线视频| 日韩视频免费在线观看| 色天使在线观看| caopeng在线| 成人av资源在线观看| 4438全国亚洲精品在线观看视频| a级大片在线观看| 久久人体av| 一区二区三区精品视频在线| 国产精品视频一区二区三区经| 久久免费公开视频| 自拍偷拍精品| 欧美挠脚心视频网站| 精品国产一区二区三区在线| shkd中文字幕久久在线观看| 久久久亚洲高清| 国产日韩亚洲欧美| 久热精品在线观看| 亚洲五月综合| 亚洲精品一区av在线播放| 91av俱乐部| 成人免费网址| 一区二区在线电影| 牛人盗摄一区二区三区视频| 成人黄色免费网| 视频一区视频二区中文字幕| 久久九九国产精品怡红院 | 日本在线视频站| 国产精品私人影院| 5566中文字幕一区二区| 天堂网一区二区三区| 日韩久久视频| 亚洲黄一区二区| 日韩精品你懂的| 欧美14一18处毛片| 欧美极品另类videosde| 欧美一区二区三区电影在线观看| 青青操视频在线| 久久超级碰视频| 91精品在线影院| 亚洲不卡在线视频| 日本vs亚洲vs韩国一区三区| 欧美极品美女视频网站在线观看免费 | 久久电影网电视剧免费观看| 成人黄色片在线| 亚洲黄色激情视频| 亚洲电影在线一区二区三区| 欧美成人精品在线播放| 亚洲最大成人综合网| 99a精品视频在线观看| 亚洲精品美女久久久| 久久久久无码精品| 欧美美女被草| 日韩精品一区二| 九一精品久久久| 蜜桃视频成人m3u8| 色综合久久综合网97色综合| 日韩大片一区二区| 伊色综合久久之综合久久| 欧美日韩黄色影视| 嫩草av久久伊人妇女超级a| 欧美高清免费| 亚洲精品国产成人| 天天爽天天爽天天爽| 欧美日韩黑人| 亚洲最大在线视频| 人妻精品久久久久中文字幕 | 欧美一区二区福利在线| 欧美 日本 国产| 久本草在线中文字幕亚洲| 日韩一级大片在线观看| 91香蕉视频在线观看视频| 777午夜精品电影免费看| 日韩欧美一区二区三区在线| 91精品人妻一区二区| 中文字幕日韩一区二区不卡| 日本午夜人人精品| 中文字幕亚洲乱码熟女1区2区| 亚洲黄页一区| 2019中文字幕全在线观看| 91久久国语露脸精品国产高跟| 99久久婷婷国产综合精品电影| 国产精品视频免费一区二区三区 | 精品伊人久久久| 播播国产欧美激情| 久久人人爽人人爽人人片av免费| 亚洲免费影视| 国产精品www网站| 中文字幕在线观看高清| 成人性色生活片| 精品免费一区二区三区蜜桃| 水莓100国产免费av在线播放| 91在线视频网址| 欧洲精品码一区二区三区免费看| 免费在线国产视频| 在线成人免费观看| 欧美图片一区二区| 国产午夜久久| 国产精品网站大全| 国产熟女一区二区三区五月婷| 国产一区在线精品| 不卡视频一区二区三区| 四季av日韩精品一区| 久久久久久久久久久久久久久99 | 日韩三级在线观看视频| 欧美精品自拍| 777精品视频| 视频污在线观看| 亚洲成人精品影院| 欧美一级片中文字幕| 成人国产精品| 在线日韩第一页| 亚洲 小说区 图片区| 亚洲国产精品传媒在线观看| 成人黄色一区二区| 日韩免费av| 国产欧美日韩精品在线观看| av网站在线免费观看| 一区二区三区在线看| 日本黄色www| 黑丝一区二区三区| 国产精品久久久久久久久久久不卡| 亚洲欧美日韩动漫| 亚洲欧美日韩精品久久久久| 国产毛片视频网站| 国产日本久久| 久久亚洲春色中文字幕| 在线能看的av| 国产欧美中文在线| 日本77777| 国内揄拍国内精品久久| 精品国产电影| 97成人超碰| 欧美成人免费全部| 天天干天天舔天天射| 日韩欧美亚洲范冰冰与中字| 国产精品久久久久野外| 欧美精品国产一区| 久久久久免费网| 主播国产精品| 91黄色在线观看| 亚洲av永久无码精品| 99热在线成人| 国产精品成人免费电影| 欧美性天天影视| 色狠狠色狠狠综合| 亚洲国产精品一区二区久久hs| 丝袜诱惑制服诱惑色一区在线观看| 日韩免费电影一区二区| 精品国产亚洲日本| 日韩性生活视频| 亚洲精品国产手机| 亚洲乱码国产乱码精品精的特点| 久久精品免费网站| 中文字幕日韩一区二区不卡 | 亚洲啊v在线观看| 国产亚洲一区二区三区在线播放| 蜜桃视频在线观看免费视频网站www| 欧美高清你懂得| 欧美精品二区三区| 成人h动漫精品一区二| 午夜视频你懂的| 最新成人av网站| 一区二区三区偷拍| ww久久综合久中文字幕| 欧美精品18videosex性欧美| 毛片免费在线| 色欧美片视频在线观看在线视频| fc2ppv在线播放| 2024国产精品视频| 一级全黄肉体裸体全过程| 免费在线成人激情电影| 亚洲欧美综合v| 狠狠人妻久久久久久| 自拍偷拍亚洲激情| 午夜影院免费观看视频| 日韩精品亚洲一区二区三区免费| 久久精品国产精品国产精品污| 四虎成人精品一区二区免费网站| 日韩三级影视基地| 欧洲综合视频| 亚洲精品一线二线三线| 日本亚洲欧美在线| 日韩美女视频一区二区| 日本少妇高潮喷水xxxxxxx| 久久久久国产精品午夜一区| 日本成人黄色免费看| 伊人久久影院| 亚洲自拍偷拍视频| 大香伊人中文字幕精品| 亚洲国产精品中文| 国产高潮流白浆喷水视频| 亚洲午夜在线电影| 蜜桃精品成人影片| 丁香婷婷综合激情五月色| 午夜大片在线观看| 美腿丝袜亚洲三区| 美女黄色片视频| 久久精品欧洲| 日本免费一级视频| 青青草97国产精品麻豆| 亚洲一区二区三区久久| 国产精品亲子伦av一区二区三区| 日本伊人精品一区二区三区介绍| 99在线视频影院| 中文字幕av一区| 丰满人妻熟女aⅴ一区| 狠狠爱在线视频一区| 永久免费未视频| 亚洲欧洲av在线| 美女视频久久久| 亚洲男人电影天堂| 青娱乐av在线| 国产亚洲短视频| av在线网站免费观看| 国产在线一区观看| 女教师高潮黄又色视频| 国产精品中文字幕日韩精品| 丰满爆乳一区二区三区| 色综合狠狠操| 人人妻人人澡人人爽精品欧美一区| 99久久99久久精品国产片果冰| 正在播放国产精品| 欧美国产激情| 日韩欧美视频第二区| 欧美午夜精品一区二区三区电影| 日韩亚洲不卡在线| 欧美国产一级| 日本xxxxx18| 波多野结衣一区| 一本一生久久a久久精品综合蜜| 偷偷www综合久久久久久久| 四虎精品欧美一区二区免费| 很黄很黄激情成人| 女人和拘做爰正片视频| 亚洲色图欧美| 男人日女人视频网站| 天天做天天爱天天爽综合网| 热这里只有精品| 亚洲特色特黄| 欧美日韩第二页| 精品一区二区免费视频| 91超薄肉色丝袜交足高跟凉鞋| 久久精品国产亚洲aⅴ| 欧美精品色视频| 久久亚洲欧美国产精品乐播 | 亚洲精品欧美专区| 三级黄色在线视频| 欧美日韩国产美女| 欧美一区二区在线观看视频| 欧美日韩高清一区二区三区| www.色呦呦| 亚洲色图第三页| 亚洲无线看天堂av| 欧美美女15p| 久久精品视频观看| 色99之美女主播在线视频| 国产小视频免费在线网址| 日韩欧美电影一区| 四虎电影院在线观看| 久久精品视频一| 欧美成a人片在线观看久| 5566av亚洲| 日韩精品欧美激情一区二区| 精品无码一区二区三区爱欲| 青草av.久久免费一区| 五月天激情小说| 中文字幕一区二| 97精品在线播放| 欧美日韩免费一区| 精品人妻伦一二三区久久| 国产亚洲激情在线| 91露出在线| 2019中文字幕全在线观看| 亚洲高清在线一区| 国产伦精品一区二区三区视频免费| 欧美日韩激情| 国产黄页在线观看| 国产不卡视频在线播放| 欧美做受高潮中文字幕| 成人免费视频视频在线观看免费| 国产精品美女高潮无套| 狠狠久久亚洲欧美专区| 国产91免费看| 欧美成人精品一区二区| 日韩大陆av| 五月天久久综合网| 久久精品欧美一区| 一级在线免费视频| 久久伊人蜜桃av一区二区| 日韩久久精品视频| 欧美成人三级电影在线| 91小视频xxxx网站在线| 国产一区在线播放| 久久免费大视频| 国产成人黄色网址| 国产精品妹子av| 青青草手机在线观看| 欧美精品tushy高清| 一级日本在线| 国产日韩欧美91| 日韩欧美不卡| 色天使在线观看| 亚洲欧美一区二区三区久本道91| 国产精品日韩无码| 亚洲国产成人精品女人久久久 | 日韩精品一区二区三区免费视频| 亚洲精品中文综合第一页| 美女一区二区三区在线观看| 一级黄色毛毛片| 一个色妞综合视频在线观看| 国产视频在线一区| 久99九色视频在线观看| 亚洲日本va午夜在线电影| 妺妺窝人体色www看人体| 久久永久免费| 丰满少妇高潮一区二区| 色婷婷精品久久二区二区蜜臂av| 久久经典视频| 国产精品午夜视频| 在线中文字幕亚洲| 丰满熟女人妻一区二区三区| 亚洲国产aⅴ天堂久久| 色呦呦中文字幕| 国产成人精品一区| 136国产福利精品导航网址应用| 欧美这里只有精品| 99re这里只有精品首页| 欧美日韩a v| 久久精品国产精品亚洲| 一区二区三区四区高清视频| 国产精品久久中文字幕| 久久久精品欧美丰满| 中文字幕有码无码人妻av蜜桃| 久久天天躁日日躁| 久久中文字幕导航| 国产wwwxx| 亚洲制服丝袜av| 黄色片免费在线| 亚洲伊人第一页| 亚洲欧美久久久| 女同久久另类69精品国产| 欧美成人官网二区| 欧美大胆成人| 精品综合在线| 免费观看成人av| 久久精品欧美一区二区| 欧美一级欧美一级在线播放| 97蜜桃久久| 一本一道久久久a久久久精品91| 国产成人精品午夜视频免费| 精品亚洲乱码一区二区| 精品国产精品网麻豆系列| 婷婷六月国产精品久久不卡| 99热一区二区三区| 91一区一区三区| 国产美女三级无套内谢| 欧美一级bbbbb性bbbb喷潮片| 希岛爱理一区二区三区| 成人无码www在线看免费| 正在播放亚洲一区| www视频在线免费观看| 久久精品二区| 国产成人av影院| 亚洲综合五月天婷婷丁香|