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

Sku多維屬性狀態判斷算法

開發 開發工具 算法
最小庫存管理單元(Stock Keeping Unit, SKU)是一個會計學名詞,定義為庫存管理中的最小可用單元,例如紡織品中一個SKU通常表示規格、顏色、款式,而在連鎖零售門店中有時稱單品為一個SKU。

問題描述

這個問題來源于選擇商品屬性的場景。比如我們買衣服、鞋子這類物件,一般都需要我們選擇合適的顏色、尺碼等屬性

先了解一下 sku 的學術概念吧

最小庫存管理單元(Stock Keeping Unit, SKU)是一個會計學名詞,定義為庫存管理中的最小可用單元,例如紡織品中一個SKU通常表示規格、顏色、款式,而在連鎖零售門店中有時稱單品為一個SKU。最小庫存管理單元可以區分不同商品銷售的最小單元,是科學管理商品的采購、銷售、物流和財務管理以及POS和MIS系統的數據統計的需求,通常對應一個管理信息系統的編碼。 —— form wikipedia 最小存貨單位

簡單的結合上面的實例來說: sku 就是你上購物網站買到的最終商品,對應的上圖中已選擇的屬性是:顏色 黑色 - 尺碼 37

我先看看后端數據結構一般是這樣的,一個線性數組,每個元素是一個描述當前 sku 的 map,比如:

  1.    { "顏色""紅""尺碼""大""型號""A""skuId""3158054" }, 
  2.    { "顏色""白""尺碼""中""型號""B""skuId""3133859" }, 
  3.    { "顏色""藍""尺碼""小""型號""C""skuId""3516833" } 

前端展示的時候顯然需要 group 一下,按不同的屬性分組,目的就是讓用戶按屬性的維度去選擇,group 后的數據大概是這樣的:

  1.     "顏色": ["紅""白""藍"], 
  2.     "尺碼": ["大""中""小"], 
  3.     "型號": ["A""B""C"

對應的在網頁上大概是這樣的 UI

這個時候,就會有一個問題,這些元子屬性能組成的集合(用戶的選擇路徑) 遠遠大于 真正可以組成的集合,比如上面的屬性集合可以組合成一個 笛卡爾積,即。可以組合成以下序列:

  1.     ["紅""大""A"],    // ✔ 
  2.     ["紅""大""B"], 
  3.     ["紅""大""C"], 
  4.     ["紅""中""A"], 
  5.     ["紅""中""B"], 
  6.     ["紅""中""C"], 
  7.     ["紅""小""A"], 
  8.     ["紅""小""B"], 
  9.     ["紅""小""C"], 
  10.     ["白""大""A"], 
  11.     ["白""大""B"], 
  12.     ["白""大""C"], 
  13.     ["白""中""A"], 
  14.     ["白""中""B"],    // ✔ 
  15.     ["白""中""C"], 
  16.     ["白""小""A"], 
  17.     ["白""小""B"], 
  18.     ["白""小""C"], 
  19.     ["藍""大""A"], 
  20.     ["藍""大""B"], 
  21.     ["藍""大""C"], 
  22.     ["藍""中""A"], 
  23.     ["藍""中""B"], 
  24.     ["藍""中""C"], 
  25.     ["藍""小""A"], 
  26.     ["藍""小""B"], 
  27.     ["藍""小""C"]     // ✔ 

根據公式可以知道,一個由 3 個元素,每個元素是有 3 個元素的子集構成的集合,能組成的笛卡爾積一共有 3 的 3 次冪,也就是 27 種,然而源數據只可以形成 3 種組合

這種情況下***能提前判斷出來不可選的路徑并置灰,告訴用戶,否則會造成誤解

確定規則

看下圖,如果我們定義紅色為當前選中的商品的屬性,即當前選中商品為 紅-大-A,這個時候如何確認其它非已選屬性是否可以組成可選路徑?

規則是這樣的: 假設當前用戶想選 白-大-A,剛好這個選擇路徑是不存在的,那么我們就把 白 置灰

以此類推,如果要確認 藍 屬性是否可用,需要查找 藍-大-A 路徑是否存在

解決方法

根據上面的邏輯代碼實現思路就有了:

遍歷所有非已選元素:"白", "藍", "中", "小", "B", "C"遍歷所有屬性行: "顏色", "尺碼", "型號"取: a) 當前元素 b) 非當前元素所在的其它屬性已選元素,形成一個路徑

  1. 判斷此路徑是否存在,如果不存在將當前元素置灰

a.看來問題似乎已經解決了,然而 …

我們忽略了一個非常重要的問題:上例中雖然 白 元素置灰,但是實際上 白 是可以被點擊的!因為用戶可以選擇 白-中-B 路徑

如果用戶點擊了 白 情況就變得復雜了很多,我們假設用戶 只選擇了一個元素 白,此時如何判斷其它未選元素是否可選?

即:如何確定 "大", "中", "小", "A", "B", "C" 需要置灰? 注意我們并不需要確認 "紅","藍"是否可選,因為屬性里面的元素都是 單選,當前的屬性里任何元素都可選的

縮小問題規模

我們先 縮小問題范圍:當前情況下(只有一個 白 已選)如何確定尺碼 "大" 需要置灰? 你可能會想到根據我們之間的邏輯,需要分別查找:

  • 白 - 大 - A
  • 白 - 大 - B
  • 白 - 大 - C

他們都不存在的時候把尺碼 大 置灰,問題似乎也可以解決。其實這樣是不對的,因為 型號沒有被選擇過,所以只需要知道 白-大是否可選即可

同時還有一個問題,如果已選的個數不確定而且維度可以增加到不確定呢?

這種情況下如果還按之前的算法,即使實現也非常復雜。這時候就要考慮換一種思維方式

調整思路

之前我們都是反向思考,找出不可選應該置灰的元素。我們現在正向的考慮,如何確定屬性是否可選。而且多維的情況下用戶可以跳著選。比如:用戶選了兩個元素 白,B

圖1

我們再回過頭來看下 原始存在的數據

  1.    { "顏色""紅""尺碼""大""型號""A""skuId""3158054" }, 
  2.    { "顏色""白""尺碼""中""型號""B""skuId""3133859" }, 
  3.    { "顏色""藍""尺碼""小""型號""C""skuId""3516833" } 
  4. // 即 
  5.    [ "紅""大""A" ],   // 存在 
  6.    [ "白""中""B" ],   // 存在 
  7.    [ "藍""小""C" ]    // 存在 

顯然:如果***條數據 "紅", "大", "A" 存在,那么下面這些子組合 肯定都存在:

  • A
  • 紅 - 大
  • 紅 - A
  • 大 - A
  • 紅 - 大 - A

同理:如果第二條數據 "白", "中", "B" 存在,那么下面這些子組合 肯定都存在:

  • B
  • 白 - 中
  • 白 - B
  • 中 - B
  • 白 - 中 - B

我們提前把 所有存在的路徑中的子組合 算出來,算法上叫取集合所有子集,數學上叫 冪集, 形成一個所有存在的路徑表,算法如下:

  1. /** 
  2.  * 取得集合的所有子集「冪集」 
  3.  arr = [1,2,3] 
  4.  
  5.      i = 0, ps = [[]]: 
  6.          j = 0; j < ps.length => j < 1: 
  7.              i=0, j=0 ps.push(ps[0].concat(arr[0])) => ps.push([].concat(1)) => [1] 
  8.                       ps = [[], [1]] 
  9.  
  10.      i = 1, ps = [[], [1]] : 
  11.          j = 0; j < ps.length => j < 2 
  12.              i=1, j=0 ps.push(ps[0].concat(arr[1])) => ps.push([].concat(2))  => [2] 
  13.              i=1, j=1 ps.push(ps[1].concat(arr[1])) => ps.push([1].concat(2)) => [1,2] 
  14.                       ps = [[], [1], [2], [1,2]] 
  15.  
  16.      i = 2, ps = [[], [1], [2], [1,2]] 
  17.          j = 0; j < ps.length => j < 4 
  18.              i=2, j=0 ps.push(ps[0].concat(arr[2])) => ps.push([3])    => [3] 
  19.              i=2, j=1 ps.push(ps[1].concat(arr[2])) => ps.push([1, 3]) => [1, 3] 
  20.              i=2, j=2 ps.push(ps[2].concat(arr[2])) => ps.push([2, 3]) => [2, 3] 
  21.              i=2, j=3 ps.push(ps[3].concat(arr[2])) => ps.push([2, 3]) => [1, 2, 3] 
  22.                       ps = [[], [1], [2], [1,2], [3], [1, 3], [2, 3], [1, 2, 3]] 
  23.  */ 
  24. function powerset(arr) { 
  25.     var ps = [[]]; 
  26.     for (var i=0; i < arr.length; i++) { 
  27.         for (var j = 0, len = ps.length; j < len; j++) { 
  28.             ps.push(ps[j].concat(arr[i])); 
  29.         } 
  30.     } 
  31.     return ps; 

有了這個存在的子集集合,再回頭看 圖1 舉例:

圖1

  • 如何確定 紅 可選? 只需要確定 紅-B 可選
  • 如何確定 中 可選? 需要確定 白-中-B 可選
  • 如何確定 2G 可選? 需要確定 白-B-2G 可選

算法描述如下:

  1. 遍歷所有非已選元素

a.遍歷所有屬性行

取: a) 當前元素 b) 非當前元素所在的其它屬性已選元素(如果當前屬性中沒已選元素,則跳過),形成一個路徑

判斷此路徑是否存在(在所有存在的路徑表中查詢),如果不存在將當前元素置灰

以最開始的后端數據為例,生成的所有可選路徑表如下: 注意路徑用分割符號「-」分開是為了查找路徑時方便,不用遍歷

  1.     "": { 
  2.         "skus": ["3158054""3133859""3516833"
  3.     }, 
  4.     "紅": { 
  5.         "skus": ["3158054"
  6.     }, 
  7.     "大": { 
  8.         "skus": ["3158054"
  9.     }, 
  10.     "紅-大": { 
  11.         "skus": ["3158054"
  12.     }, 
  13.     "A": { 
  14.         "skus": ["3158054"
  15.     }, 
  16.     "紅-A": { 
  17.         "skus": ["3158054"
  18.     }, 
  19.     "大-A": { 
  20.         "skus": ["3158054"
  21.     }, 
  22.     "紅-大-A": { 
  23.         "skus": ["3158054"
  24.     }, 
  25.     "白": { 
  26.         "skus": ["3133859"
  27.     }, 
  28.     "中": { 
  29.         "skus": ["3133859"
  30.     }, 
  31.     "白-中": { 
  32.         "skus": ["3133859"
  33.     }, 
  34.     "B": { 
  35.         "skus": ["3133859"
  36.     }, 
  37.     "白-B": { 
  38.         "skus": ["3133859"
  39.     }, 
  40.     "中-B": { 
  41.         "skus": ["3133859"
  42.     }, 
  43.     "白-中-B": { 
  44.         "skus": ["3133859"
  45.     }, 
  46.     "藍": { 
  47.         "skus": ["3516833"
  48.     }, 
  49.     "小": { 
  50.         "skus": ["3516833"
  51.     }, 
  52.     "藍-小": { 
  53.         "skus": ["3516833"
  54.     }, 
  55.     "C": { 
  56.         "skus": ["3516833"
  57.     }, 
  58.     "藍-C": { 
  59.         "skus": ["3516833"
  60.     }, 
  61.     "小-C": { 
  62.         "skus": ["3516833"
  63.     }, 
  64.     "藍-小-C": { 
  65.         "skus": ["3516833"
  66.     } 

為了更清楚的說明這個算法,再上一張圖來解釋下吧:

所以根據上面的邏輯得出,計算狀態后的界面應該是這樣的:

現在這種情況下如果用戶點擊 尺碼 中 應該怎么交互呢?

優化體驗

因為當前情況下路徑 紅-中-A 并不存在,如果點擊 中,那么除了尺碼 中 之外其它的屬性中 至少有一個 屬性和 中 的路徑搭配是不存在的

交互方面需求是:如果不存在就高亮當前屬性行,使用戶必須選擇到可以和 中 組合存在的屬性。而且用戶之間選擇過的屬性要做一次緩存

所以當點擊不存在的屬性時交互流程是這樣的:

  1. 無論當前屬性存不存在,先高亮(選中)當前屬性
  2. 清除其它所有已選屬性
  3. 更新當前狀態(只選當前屬性)下的其它屬性可選狀態
  4. 遍歷非當前屬性行的其它屬性查找對應的在緩存中的已選屬性
  5. 如果緩存中對應的屬性存在(可選),則默認選中緩存屬性并 再次更新 其它可選狀態。不存在,則高亮當前屬性行(深色背景)

這個過程的流程圖大概是這樣的,點進不存在的屬性就會進入「單選流程」

假設后端數據是這樣的:

  1.    { "顏色""紅""尺碼""大""型號""A""skuId""3158054" }, 
  2.    { "顏色""白""尺碼""大""型號""A""skuId""3158054" }, // 多加了一條 
  3.    { "顏色""白""尺碼""中""型號""B""skuId""3133859" }, 
  4.    { "顏色""藍""尺碼""小""型號""C""skuId""3516833" } 

當前選中狀態是:白-大-A

如果用戶點擊 中。這個時候 白-中 是存在的,但是 中-A 并不存在,所以保留顏色 白,高亮型號屬性行:

由此可見和 白-中 能搭配存在型號只有 B,而緩存的作用就是為了少讓用戶選一次顏色 白到這里,基本上主要的功能就實現了。比如庫存邏輯處理方式也和不存屬性一樣,就不再贅述。唯一需要注意的地方是求冪集的復雜度問題

算法復雜度

冪集算法的時間復雜度是 O(2^n),也就是說每條數據上面的屬性(維度)越多,復雜度越高。sku 數據的多少并不重要,因為是常數級的線性增長,而維度是指數級的增長

  1. {1}       2^1 = 2 
  2. => {},{1} 
  3. {1,2}     2^2 = 4 
  4. => {},{1},{2},{1,2} 
  5. {1,2,3}   2^3 = 8 
  6. => {},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3} 
  7. ... 
powerset_test

在 chrome 里面簡單跑了幾個用例,可見這個算法非常低效,如果要使用這個算法,必須控制維度在合理范圍內,而且不僅僅算法時間復雜度很高,生成***的路徑表也會非常大,相應的占用內存也很高。

舉個例子:如果有一個 10 維的 sku,那么最終生成的路徑表會有 2^10 個(1024) key/value

最終 demo 可以查看這個: sku 多維屬性狀態判斷

相關資料: sku組合查詢算法探索

【本文是51CTO專欄作者周琪力的原創稿件,轉載請注明出處】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2020-09-08 12:15:40

應用程序安全DevSecOps漏洞

2010-01-28 15:49:17

Android判斷網絡

2015-09-01 10:42:36

Cloudsim云計算資源調度算法

2022-03-31 14:17:53

數據中心可持續性IT

2012-05-22 10:29:19

Windows 8

2010-01-15 13:30:37

VB.NET并發性

2020-10-16 08:09:58

算法代碼字符串

2017-09-01 14:30:32

GeohashGoogle S2索引

2013-12-20 10:34:06

微軟Windows

2011-06-08 15:21:18

多維數組

2025-03-11 09:42:00

2009-08-28 16:16:02

線程運行狀態

2009-08-10 14:48:39

ASP.NET組件設計

2024-04-17 07:59:26

React狀態管理屬性鉆取

2016-08-08 17:08:27

服務器

2009-09-16 09:01:40

C#多維數組

2022-02-18 17:34:47

數組多維五維數組

2014-05-13 09:53:24

算法π值

2017-09-26 09:23:07

大數據多維實踐

2021-09-03 08:23:21

Vue 插槽子組件
點贊
收藏

51CTO技術棧公眾號

99精品美女| 国产视频网站在线| 亚洲福利电影| 国产丝袜一区二区三区免费视频| 国产免费黄视频| av播放在线| 成人99免费视频| 国产91在线高潮白浆在线观看| 亚欧洲乱码视频| 国产剧情一区二区在线观看| 亚洲激情av在线| 日产精品高清视频免费| av网站免费大全| 亚洲欧美成人综合| 日韩视频免费大全中文字幕| 扒开伸进免费视频| 99久久er| 亚洲地区一二三色| 蜜桃久久影院| 亚洲成a人片77777精品| 老牛国产精品一区的观看方式| 亚洲欧洲午夜一线一品| 色婷婷一区二区三区在线观看| 不卡av影片| 亚洲色图丝袜美腿| 手机看片福利永久国产日韩| 99视频在线观看免费| 久久午夜精品| 久久精品99久久香蕉国产色戒| 国产三级视频网站| 97久久亚洲| 欧美一区二区三区在线| 亚洲精品一二三四五区| 九九精品调教| 国产亚洲一区二区三区在线观看| 国语精品免费视频| 国产裸体无遮挡| 蜜桃在线一区二区三区| 日本精品中文字幕| 黄色片视频网站| 欧美日本三区| 免费99精品国产自在在线| 刘亦菲国产毛片bd| 精品久久视频| 国产香蕉精品视频一区二区三区| 欧美大片免费播放器| 亚洲成人影音| 91精品国产一区二区三区蜜臀| 和岳每晚弄的高潮嗷嗷叫视频| 韩国av网站在线| 国产欧美日韩在线观看| 国产欧美欧洲| www.国产免费| 亚洲成人原创| 日韩在线视频网站| 色www亚洲国产阿娇yao| 久久影视一区| 视频在线观看99| 亚洲女人毛茸茸高潮| 成人久久电影| 极品国产人妖chinesets亚洲人妖| 国产在线不卡视频| 91精品在线观| aaa一区二区| 韩国午夜理伦三级不卡影院| 91精品综合视频| av 一区二区三区| 国产成人av影院| 国产偷久久久精品专区| 亚洲a视频在线| gogogo免费视频观看亚洲一| 九九九九九九精品| 黄色三级网站在线观看| 99久久精品免费精品国产| 久久精品久久精品国产大片| 色av男人的天堂免费在线| 97成人超碰视| 久久久久九九九| 韩日在线视频| 亚洲天天做日日做天天谢日日欢| 熟妇熟女乱妇乱女网站| 黄色国产网站在线播放| 一区二区三区国产豹纹内裤在线| 分分操这里只有精品| 成人免费网站视频| 欧美日韩国产综合一区二区| 五月天婷婷在线观看视频| 老司机在线精品视频| 亚洲国产成人久久综合一区| 中文在线永久免费观看| 欧美亚洲激情| 精品国偷自产在线视频99| 久久久久99精品成人片毛片| 亚洲自拍另类| 91最新在线免费观看| 四虎电影院在线观看| 91香蕉视频黄| 妞干网这里只有精品| 免费电影视频在线看| 在线欧美一区二区| 麻豆av免费看| 成人精品久久| 韩剧1988在线观看免费完整版| 欧美日韩 一区二区三区| 国产精品高清一区二区 | 视频一区二区视频| 免费黄色在线观看| 亚洲人成网站影音先锋播放| 青娱乐自拍偷拍| 日韩毛片网站| 亚洲精品国产精品自产a区红杏吧| 日韩少妇一区二区| 久久综合国产| 午夜精品免费视频| 一级特黄特色的免费大片视频| eeuss影院一区二区三区| 欧美日韩视频免费在线观看| 黑人巨大亚洲一区二区久| 欧美综合天天夜夜久久| 国产不卡一二三| 一本精品一区二区三区| 国产成人小视频在线观看| 国产精品久久久久久久久久久久久久久久久久 | 99re8这里有精品热视频免费| 亚洲香蕉伊综合在人在线视看| 久久久久久久久久久久久女过产乱| 欧美日韩亚洲一区二区三区在线| 456亚洲影院| www.亚洲天堂.com| 国产精品久久久久久久蜜臀| 国产精品一色哟哟| 精品一区91| 中文字幕国产日韩| 亚洲熟妇无码乱子av电影| 国产乱码精品一区二区三区忘忧草 | 黄色a级在线观看| 91福利精品在线观看| 日韩成人中文字幕在线观看| 久久精品国产亚洲AV无码麻豆| 黑人精品欧美一区二区蜜桃| 亚洲欧洲精品一区二区| 91精品论坛| 亚洲精品美女视频| 日韩激情在线播放| aaa亚洲精品| 在线观看av的网址| 日本一区精品视频| 欧美xxxx18国产| 99久久精品日本一区二区免费 | 亚洲精美色品网站| 日本少妇xxxx动漫| 国产成人精品一区二区三区网站观看| 天天干天天色天天爽| 四虎精品在线观看| 亚洲欧洲视频在线| 亚洲视频在线免费播放| 中文字幕一区二区三中文字幕| 手机av在线免费| 91久久电影| 91青青草免费在线看| 欧美24videosex性欧美| 日韩精品一区二| 久热这里有精品| 成人性视频网站| 亚洲熟妇无码另类久久久| 偷窥自拍亚洲色图精选| 国产成人精品亚洲精品| 日本a一级在线免费播放| 色8久久人人97超碰香蕉987| 日韩av网站在线播放| 国产一区二区不卡| av日韩一区二区三区| 亚洲区小说区图片区qvod按摩| 国产成人欧美在线观看| 久久综合之合合综合久久| 制服丝袜亚洲播放| 国产对白videos麻豆高潮| 久久影院午夜片一区| 久久久精品麻豆| 欧美一区影院| 91精品国产综合久久香蕉922 | 亚洲精品久久久久久国产精华液| 国产精品欧美性爱| 亚洲欧美日韩国产综合精品二区| 国产综合动作在线观看| 久久91导航| 中文字幕视频一区二区在线有码| 国产富婆一级全黄大片| 大伊人狠狠躁夜夜躁av一区| a级黄色免费视频| 懂色av中文字幕一区二区三区| wwwwww欧美| 久久av影视| 成人黄色短视频在线观看| heyzo一区| 日韩网站免费观看高清| 全国男人的天堂网| 欧美日韩一区三区| 国产精彩视频在线观看| 国产欧美日韩另类视频免费观看 | 99久久久国产精品免费蜜臀| 欧美精品久久久久久久久25p| 黄色日韩在线| 亚洲欧美日韩国产yyy| 日韩精品一区二区三区中文| 日韩av电影院| 波多一区二区| www.欧美精品| 黄色片在线看| 亚洲成人av中文字幕| 好吊色在线视频| 亚洲永久免费av| 中文字幕伦理片| 国产乱妇无码大片在线观看| 国产一级不卡毛片| 亚洲免费成人| 老司机激情视频| 欧美aaaa视频| 色爱区成人综合网| 欧美丝袜足交| 高清av免费一区中文字幕| 久久免费影院| 国产精品video| 色戒汤唯在线观看| 久久久久久成人| a黄色片在线观看| 日韩亚洲欧美中文在线| 国产午夜精品一区理论片| 日韩三级高清在线| 国产又大又粗又硬| 欧美视频一区在线| 久久久久久无码精品大片| 五月天丁香久久| 污污的视频在线免费观看| 中文字幕免费观看一区| 折磨小男生性器羞耻的故事| 久久超碰97人人做人人爱| 国产av无码专区亚洲精品| 国产欧美综合一区二区三区| 久久综合久久久久| 激情成人综合| 经典三级在线视频| 亚洲人成免费网站| 一区不卡字幕| 午夜片欧美伦| 最新精品视频| 中文精品电影| 鲁丝一区鲁丝二区鲁丝三区| 日韩高清成人在线| 精品国产一区二区三区四区vr | 欧美一卡二卡三卡| 一区二区三区播放| 欧美一区二区三区精品| 国产毛片久久久久| 欧美v日韩v国产v| 蜜桃av中文字幕| 精品国产91久久久久久久妲己| 亚洲国产一二三区| 亚洲福利视频在线| 青青草娱乐在线| 国产一区二区三区直播精品电影 | 国产特级淫片高清视频| 99精品免费网| 老熟妇仑乱视频一区二区| 久久一区精品| 黄色免费视频大全| 日韩黄色小视频| 爱爱爱爱免费视频| 国产精品一区二区免费不卡| 中文字幕1区2区| 99久久99久久精品免费观看| 久久久久久亚洲中文字幕无码| 欧美国产欧美综合| 18岁成人毛片| 婷婷国产在线综合| 97人妻精品视频一区| 欧美综合天天夜夜久久| 精品国产伦一区二区三| 亚洲国产免费av| av福利精品| 欧美精品18videos性欧| 黑人精品视频| 97国产在线视频| 美女一区网站| 国产精品成人va在线观看| 激情久久免费视频| 精品亚洲第一| 婷婷中文字幕一区| 狠狠干 狠狠操| 蜜臀精品一区二区三区在线观看 | 92看片淫黄大片一级| 久久99精品国产.久久久久 | 国产精品超碰| 国产一级二级三级精品| 欧美猛男同性videos| 国产911在线观看| 日韩电影在线一区二区| 久久av一区二区三| 欧美激情一区二区三区四区| 久久成人国产精品入口| 亚洲成a人v欧美综合天堂| 这里只有久久精品视频| 337p日本欧洲亚洲大胆色噜噜| 亚洲国产成人一区二区| 国产一区二区久久精品| 成人影院在线播放| 成人免费网站在线观看| 最新精品国偷自产在线| 手机在线视频你懂的| 亚洲人人精品| 在线观看视频你懂得| 国产欧美日韩中文久久| 国产成人亚洲欧洲在线| 在线成人免费视频| 国产在线一二| 2019日本中文字幕| 欧美影院在线| 亚洲欧洲日韩综合二区| 老司机精品视频网站| 国产乱叫456| 国产精品久久久一本精品| 日韩人妻精品中文字幕| 亚洲大尺度美女在线| av大全在线| 91久热免费在线视频| 日韩黄色大片网站| 日本精品久久久久中文字幕| 丁香亚洲综合激情啪啪综合| 男女性高潮免费网站| 欧美日韩在线三区| 福利成人在线观看| 日本久久久久久久久| 欧美人成在线观看ccc36| 日本中文字幕在线视频观看| 欧美视频第三页| xf在线a精品一区二区视频网站| 久久高清免费视频| 精品日韩一区二区| 免费看电影在线| 成人区精品一区二区| 欧美三级特黄| 麻豆网站免费观看| 依依成人精品视频| 国产日韩在线观看一区| 最近2019年日本中文免费字幕| 99久久er| 亚洲最新免费视频| 激情六月婷婷综合| 亚洲av无码一区二区三区在线| 91精品国产综合久久香蕉的特点 | 亚欧洲精品视频在线观看| 欧美 日韩 国产在线观看| 99精品视频一区| 欧美精品二区三区| 亚洲视频在线观看| 国产精品99| 自拍偷拍视频在线| 国产成人精品www牛牛影视| 日本少妇xxxxx| 欧美日韩亚洲综合在线| 高h视频在线| 成人激情av在线| 欧洲视频一区| 中文字幕精品一区二区三区在线| 日韩理论片在线| 亚洲精品国产精品乱码视色| 中国china体内裑精亚洲片| japanese23hdxxxx日韩 | 欧美日本不卡| 中文字幕在线播放视频| 日本高清不卡aⅴ免费网站| 瑟瑟视频在线| av激情久久| 性欧美长视频| 日韩av毛片在线观看| 欧美日韩久久久| 福利成人导航| 日韩av电影免费在线| 激情综合一区二区三区| 久热精品在线观看| 亚洲视频专区在线| 久久九九精品视频| 亚洲不卡中文字幕无码| 欧美激情一区二区三区蜜桃视频| aaaa一级片| 国产91在线播放精品91| 91成人看片| 中国特级黄色大片| 粉嫩av一区二区三区免费野| gogogo高清在线观看免费完整版| 91成人免费视频| 久久不射中文字幕| 男女做暖暖视频| 亚洲第一二三四五区| 免费污视频在线一区| av动漫在线播放| 中文字幕不卡的av| 五月婷婷丁香六月| 成人a免费视频| 亚洲欧美日韩视频二区|