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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Redis源码和java jdk源码中hashcode的不同实现

發布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis源码和java jdk源码中hashcode的不同实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.redis實際上是使用了siphash

這個比較簡單,我說的簡單是指redis代碼比較少不像jdk一樣調用C++代碼調用棧非常深。

先看這個rehashing.c

主要就是dictKeyHash函數,需要調用dict.h頭文件中定義的dictGenHashFunction

#include "redis.h"
#include "dict.h"void _redisAssert(char *x, char *y, int l) {printf("ASSERT: %s %s %d\n",x,y,l);exit(1);
}unsigned int dictKeyHash(const void *keyp) {unsigned long key = (unsigned long)keyp;key = dictGenHashFunction(&key,sizeof(key));key += ~(key << 15);key ^=  (key >> 10);key +=  (key << 3);key ^=  (key >> 6);key += ~(key << 11);key ^=  (key >> 16);return key;
}int dictKeyCompare(void *privdata, const void *key1, const void *key2) {unsigned long k1 = (unsigned long)key1;unsigned long k2 = (unsigned long)key2;return k1 == k2;
}dictType dictTypeTest = {dictKeyHash,                   /* hash function */NULL,                          /* key dup */NULL,                          /* val dup */dictKeyCompare,                /* key compare */NULL,                          /* key destructor */NULL                           /* val destructor */
};

dict.h

uint64_t dictGenHashFunction(const void *key, int len);
uint64_t dictGenCaseHashFunction(const unsigned char *buf, int len);
void dictEmpty(dict *d, void(callback)(void*));
void dictEnableResize(void);
void dictDisableResize(void);
int dictRehash(dict *d, int n);
int dictRehashMilliseconds(dict *d, int ms);
void dictSetHashFunctionSeed(uint8_t *seed);
uint8_t *dictGetHashFunctionSeed(void);
unsigned long dictScan(dict *d, unsigned long v, dictScanFunction *fn, dictScanBucketFunction *bucketfn, void *privdata);
uint64_t dictGetHash(dict *d, const void *key);
dictEntry **dictFindEntryRefByPtrAndHash(dict *d, const void *oldptr, uint64_t hash);

代碼實現是在dict.c

注釋已經說明了是實現在siphash.c

/* The default hashing function uses SipHash implementation* in siphash.c. */uint64_t siphash(const uint8_t *in, const size_t inlen, const uint8_t *k);
uint64_t siphash_nocase(const uint8_t *in, const size_t inlen, const uint8_t *k);uint64_t dictGenHashFunction(const void *key, int len) {return siphash(key,len,dict_hash_function_seed);
}uint64_t dictGenCaseHashFunction(const unsigned char *buf, int len) {return siphash_nocase(buf,len,dict_hash_function_seed);
}

其實這個siphash.c是第三方實現的github上有源碼,這里只應用作者的說明就行了:?

/*SipHash reference C implementationCopyright (c) 2012-2016 Jean-Philippe Aumasson<jeanphilippe.aumasson@gmail.com>Copyright (c) 2012-2014 Daniel J. Bernstein <djb@cr.yp.to>Copyright (c) 2017 Salvatore Sanfilippo <antirez@gmail.com>To the extent possible under law, the author(s) have dedicated all copyrightand related and neighboring rights to this software to the public domainworldwide. This software is distributed without any warranty.You should have received a copy of the CC0 Public Domain Dedication alongwith this software. If not, see<http://creativecommons.org/publicdomain/zero/1.0/>.----------------------------------------------------------------------------This version was modified by Salvatore Sanfilippo <antirez@gmail.com>in the following ways:1. We use SipHash 1-2. This is not believed to be as strong as thesuggested 2-4 variant, but AFAIK there are not trivial attacksagainst this reduced-rounds version, and it runs at the same speedas Murmurhash2 that we used previously, why the 2-4 variant sloweddown Redis by a 4% figure more or less.2. Hard-code rounds in the hope the compiler can optimize it morein this raw from. Anyway we always want the standard 2-4 variant.3. Modify the prototype and implementation so that the function directlyreturns an uint64_t value, the hash itself, instead of receiving anoutput buffer. This also means that the output size is set to 8 bytesand the 16 bytes output code handling was removed.4. Provide a case insensitive variant to be used when hashing strings thatmust be considered identical by the hash table regardless of the case.If we don't have directly a case insensitive hash function, we need toperform a text transformation in some temporary buffer, which is costly.5. Remove debugging code.6. Modified the original test.c file to be a stand-alone function testingthe function in the new form (returing an uint64_t) using just therelevant test vector.*/

作者官網:https://131002.net/siphash/

源代碼:https://github.com/veorq/SipHash

SipHash:快速短輸入PRF

下載??|??攻擊??|??用戶??|??CRYPTANALYSIS??|??第三方實施

SipHash是一系列偽隨機函數(也稱為鍵控散列函數),針對短消息的速度進行了優化。?

目標應用程序包括網絡流量身份驗證和?防止散列泛濫?DoS攻擊。?

SipHash?安全,快速,簡單(真實):

  • SipHash比以前的加密算法更簡單,更快(例如基于通用哈希的MAC)
  • SipHash在性能上與不安全的?非加密算法競爭(例如MurmurHash)

我們建議哈希表切換到SipHash作為哈希函數。?SipHash的用戶已經包括FreeBSD,OpenDNS,Perl 5,Ruby或Rust。?

原始SipHash返回64位字符串。隨后根據用戶的需求創建了返回128位字符串的版本。?

知識產權:?我們不了解與SipHash相關的任何專利或專利申請,我們也不打算申請任何專利。SipHash?的參考代碼是在CC0許可下發布的,這是一種類似公共領域的許可。?

SipHash的設計者是

  • Jean-Philippe Aumasson(瑞士Kudelski Security)
  • Daniel J. Bernstein(美國伊利諾伊大學芝加哥分校)

聯系方式:jeanphilippe.aumasson@gmail.com???djb@cr.yp.to

下載

  • 研究論文?“SipHash:快速短期投入PRF”(在DIAC研討會和INDOCRYPT 2012上?接受發表)
  • 2012年INDOCRYPT(伯恩斯坦)SipHash演講的?幻燈片
  • 在DIAC(Aumasson)展示SipHash的?幻燈片
  • 參考C實現。

=============================================================

二.java的實現比較復雜

又要分字符串的hashCode()和object的hashCode()

1.字符串的hashCode()

    /*** Returns a hash code for this string. The hash code for a* {@code String} object is computed as* <blockquote><pre>* s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]* </pre></blockquote>* using {@code int} arithmetic, where {@code s[i]} is the* <i>i</i>th character of the string, {@code n} is the length of* the string, and {@code ^} indicates exponentiation.* (The hash value of the empty string is zero.)** @return  a hash code value for this object.*/public int hashCode() {int h = hash;if (h == 0 && value.length > 0) {char val[] = value;for (int i = 0; i < value.length; i++) {h = 31 * h + val[i];}hash = h;}return h;}

需要注意的是為什么 String hashCode 方法選擇數字31作為乘子,可以看看這篇帖子,這個屬于數學問題了。

原因就是

第一,31是一個不大不小的質數,是作為 hashCode 乘子的優選質數之一。另外一些相近的質數,比如37、41、43等等,也都是不錯的選擇。

第二、31可以被 JVM 優化,31 * i = (i << 5) - i。

?Stack Overflow 上關于這個問題的討論,Why does Java's hashCode() in String use 31 as a multiplier?。其中排名第一的答案引用了《Effective Java》中的一段話,這里也引用一下:

選擇值31是因為它是奇數素數。 如果它是偶數并且乘法溢出,則信息將丟失,因為乘以2相當于移位。
使用素數的優勢不太明顯,但它是傳統的。 
31的一個很好的特性是乘法可以用移位和減法代替以獲得更好的性能:
31 * i ==(i << 5) -  i`。 現代VM自動執行此類優化。

其他解釋:

正如 Goodrich 和 Tamassia 指出的那樣,如果你對超過 50,000 個英文單詞
(由兩個不同版本的 Unix 字典合并而成)進行 hash code 運算,
并使用常數 31, 33, 37, 39 和 41 作為乘子,每個常數算出的哈希值沖突數都小于7個,
所以在上面幾個常數中,常數 31 被 Java 實現所選用也就不足為奇了。

這個問題到底完結。

------------------------------------

2.jdk1.8 Object的hashCode()

完整的流程:

此圖出自:《hotspot中java對象默認hashcode的生成方式?》

先看hashmap算key的hashCode源碼

大量使用hash函數

翻譯如下:

/ * ----------------靜態實用程序-------------- * /
??計算key.hashCode()并將散列(XOR)更高的散列位降低。
因為該Table使用2次冪掩蔽,所以僅在當前掩碼之上的位中變化的散列組將始終發生沖突。 (在已知的例子中是一組Float鍵,在小表中保存連續的整數。)
因此,我們應用一種向下傳播較高位的影響的變換。
在速度,效用和比特擴展質量之間存在權衡。 因為許多常見的哈希集合已經合理分布(因此不會受益于傳播),并且因為我們使用樹來處理容器中的大量沖突,所以我們只是以最簡易的方式對一些移位的位進行異或,以減少系統損失, 以及由于Table邊界而包含最高位的影響,否則這些位將永遠不會用于索引計算。

直接是native的實現了

如何在jvm源碼中定位到某個Java本地方法對應的本地方法源碼?

比如說java.lang.Object#hashCode(),如何在jvm源碼定位它?

從 jdk/src/share/native/java/lang/Object.c 文件里, 你可以找到

    {"hashCode",    "()I",                    (void *)&JVM_IHashCode},{"wait",        "(J)V",                   (void *)&JVM_MonitorWait},{"notify",      "()V",                    (void *)&JVM_MonitorNotify},{"notifyAll",   "()V",                    (void *)&JVM_MonitorNotifyAll},{"clone",       "()Ljava/lang/Object;",   (void *)&JVM_Clone},

大致調用鏈是:

jvm.cpp中定義了JVM_IHashCode()函數, 他又調用ObjectSynchronizer::FastHashCode;

FastHashCode在 synchronizer.cpp, FastHashCode調用get_next_hash()。

真正的計算hashcode的代碼在 synchronizer.cpp的get_next_hash()。

jvm.cpp

// java.lang.Object ///JVM_ENTRY(jint, JVM_IHashCode(JNIEnv* env, jobject handle))JVMWrapper("JVM_IHashCode");// as implemented in the classic virtual machine; return 0 if object is NULLreturn handle == NULL ? 0 : ObjectSynchronizer::FastHashCode (THREAD, JNIHandles::resolve_non_null(handle)) ;
JVM_END

synchronizer.cpp?

intptr_t ObjectSynchronizer::FastHashCode (Thread * Self, oop obj) {if (UseBiasedLocking) {// NOTE: many places throughout the JVM do not expect a safepoint// to be taken here, in particular most operations on perm gen// objects. However, we only ever bias Java instances and all of// the call sites of identity_hash that might revoke biases have// been checked to make sure they can handle a safepoint. The// added check of the bias pattern is to avoid useless calls to// thread-local storage.if (obj->mark()->has_bias_pattern()) {// Box and unbox the raw reference just in case we cause a STW safepoint.Handle hobj (Self, obj) ;// Relaxing assertion for bug 6320749.assert (Universe::verify_in_progress() ||!SafepointSynchronize::is_at_safepoint(),"biases should not be seen by VM thread here");BiasedLocking::revoke_and_rebias(hobj, false, JavaThread::current());obj = hobj() ;assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now");}}// hashCode() is a heap mutator ...// Relaxing assertion for bug 6320749.assert (Universe::verify_in_progress() ||!SafepointSynchronize::is_at_safepoint(), "invariant") ;assert (Universe::verify_in_progress() ||Self->is_Java_thread() , "invariant") ;assert (Universe::verify_in_progress() ||((JavaThread *)Self)->thread_state() != _thread_blocked, "invariant") ;ObjectMonitor* monitor = NULL;markOop temp, test;intptr_t hash;markOop mark = ReadStableMark (obj);// object should remain ineligible for biased lockingassert (!mark->has_bias_pattern(), "invariant") ;if (mark->is_neutral()) {hash = mark->hash();              // this is a normal headerif (hash) {                       // if it has hash, just return itreturn hash;}hash = get_next_hash(Self, obj);  // allocate a new hash codetemp = mark->copy_set_hash(hash); // merge the hash code into header// use (machine word version) atomic operation to install the hashtest = (markOop) Atomic::cmpxchg_ptr(temp, obj->mark_addr(), mark);if (test == mark) {return hash;}// If atomic operation failed, we must inflate the header// into heavy weight monitor. We could add more code here// for fast path, but it does not worth the complexity.} else if (mark->has_monitor()) {monitor = mark->monitor();temp = monitor->header();assert (temp->is_neutral(), "invariant") ;hash = temp->hash();if (hash) {return hash;}// Skip to the following code to reduce code size} else if (Self->is_lock_owned((address)mark->locker())) {temp = mark->displaced_mark_helper(); // this is a lightweight monitor ownedassert (temp->is_neutral(), "invariant") ;hash = temp->hash();              // by current thread, check if the displacedif (hash) {                       // header contains hash codereturn hash;}// WARNING://   The displaced header is strictly immutable.// It can NOT be changed in ANY cases. So we have// to inflate the header into heavyweight monitor// even the current thread owns the lock. The reason// is the BasicLock (stack slot) will be asynchronously// read by other threads during the inflate() function.// Any change to stack may not propagate to other threads// correctly.}// Inflate the monitor to set hash codemonitor = ObjectSynchronizer::inflate(Self, obj);// Load displaced header and check it has hash codemark = monitor->header();assert (mark->is_neutral(), "invariant") ;hash = mark->hash();if (hash == 0) {hash = get_next_hash(Self, obj);temp = mark->copy_set_hash(hash); // merge hash code into headerassert (temp->is_neutral(), "invariant") ;test = (markOop) Atomic::cmpxchg_ptr(temp, monitor, mark);if (test != mark) {// The only update to the header in the monitor (outside GC)// is install the hash code. If someone add new usage of// displaced header, please update this codehash = test->hash();assert (test->is_neutral(), "invariant") ;assert (hash != 0, "Trivial unexpected object/monitor header usage.");}}// We finally get the hashreturn hash;
}
// hashCode() generation :
//
// Possibilities:
// * MD5Digest of {obj,stwRandom}
// * CRC32 of {obj,stwRandom} or any linear-feedback shift register function.
// * A DES- or AES-style SBox[] mechanism
// * One of the Phi-based schemes, such as:
//   2654435761 = 2^32 * Phi (golden ratio)
//   HashCodeValue = ((uintptr_t(obj) >> 3) * 2654435761) ^ GVars.stwRandom ;
// * A variation of Marsaglia's shift-xor RNG scheme.
// * (obj ^ stwRandom) is appealing, but can result
//   in undesirable regularity in the hashCode values of adjacent objects
//   (objects allocated back-to-back, in particular).  This could potentially
//   result in hashtable collisions and reduced hashtable efficiency.
//   There are simple ways to "diffuse" the middle address bits over the
//   generated hashCode values:
//static inline intptr_t get_next_hash(Thread * Self, oop obj) {intptr_t value = 0 ;if (hashCode == 0) {// This form uses an unguarded global Park-Miller RNG,// so it's possible for two threads to race and generate the same RNG.// On MP system we'll have lots of RW access to a global, so the// mechanism induces lots of coherency traffic.value = os::random() ;} elseif (hashCode == 1) {// This variation has the property of being stable (idempotent)// between STW operations.  This can be useful in some of the 1-0// synchronization schemes.intptr_t addrBits = cast_from_oop<intptr_t>(obj) >> 3 ;value = addrBits ^ (addrBits >> 5) ^ GVars.stwRandom ;} elseif (hashCode == 2) {value = 1 ;            // for sensitivity testing} elseif (hashCode == 3) {value = ++GVars.hcSequence ;} elseif (hashCode == 4) {value = cast_from_oop<intptr_t>(obj) ;} else {// Marsaglia's xor-shift scheme with thread-specific state// This is probably the best overall implementation -- we'll// likely make this the default in future releases.unsigned t = Self->_hashStateX ;t ^= (t << 11) ;Self->_hashStateX = Self->_hashStateY ;Self->_hashStateY = Self->_hashStateZ ;Self->_hashStateZ = Self->_hashStateW ;unsigned v = Self->_hashStateW ;v = (v ^ (v >> 19)) ^ (t ^ (t >> 8)) ;Self->_hashStateW = v ;value = v ;}value &= markOopDesc::hash_mask;if (value == 0) value = 0xBAD ;assert (value != markOopDesc::no_hash, "invariant") ;TEVENT (hashCode: GENERATE) ;return value;
}

翻譯下:

hashCode()生成:

?可能性:
??* {obj,stwRandom}的MD5Digest
??* {obj,stwRandom}的CRC32或任何線性反饋移位寄存器功能。
??* DES或AES風格的SBox []機制
??*基于Phi的方案之一,例如:
????
2654435761 = 2^32 * Phi (golden ratio)
????HashCodeValue =((uintptr_t(obj)>> 3)* 2654435761)^ GVars.stwRandom;
??* Marsaglia的shift-xor RNG方案的變體。
*(obj ^ stwRandom)很有吸引力,但可能導致相鄰對象(特別是背靠背分配的對象)的hashCode值出現不合需要的規律性。 這可能會導致哈希表沖突并降低哈希表效率。
有一些簡單的方法可以在生成的hashCode值上“擴散”中間地址位。

該函數提供了基于某個hashCode 變量值的六種方法。怎么生成最終值取決于hashCode這個變量值。

0 - 使用Park-Miller偽隨機數生成器(跟地址無關)
1 - 使用地址與一個隨機數做異或(地址是輸入因素的一部分)
2 - 總是返回常量1作為所有對象的identity hash code(跟地址無關)
3 - 使用全局的遞增數列(跟地址無關)
4 - 使用對象地址的“當前”地址來作為它的identity hash code(就是當前地址)
5 - 使用線程局部狀態來實現Marsaglia's xor-shift隨機數生成(跟地址無關)

Xorshift隨機數生成器是George Marsaglia發現的一類偽隨機數生成器:?

VM到底用的是哪種方法?

JDK 8 和 JDK 9 默認值:


JDK 8 以前默認值:是傳0

雖然方式不一樣,但有個共同點:java生成的hashCode和對象內存地址沒什么關系。
HotSpot提供了一個VM參數來讓用戶選擇identity hash code的生成方式:

#-XX:hashCode

參考:https://zhuanlan.zhihu.com/p/28270828

    public static void main(String[] args) {int[] arr0 = new int[3];int[] arr1 = new int[3];//arr0.hashCode(); // 觸發arr0計算identity hash code//arr1.hashCode(); // 觸發arr1計算identity hash codeSystem.out.println(arr0);System.out.println(arr1);}

實驗:

交互arr0和1

兩次輸出一樣的地址,加上hashCode()就和順序有關了:

原因是:

對象的hashcode并不是在創建對象時就計算好的,而是在第一次使用的時候,也就是首次調用hashCode方法時進行計算,并存儲在對象的標記字中的。?

在VM里,Java對象會在首次真正使用到它的identity hash code(例如通過Object.hashCode() / System.identityHashCode())時調用VM里的函數來計算出值,然后會保存在對象里,后面對同一對象查詢其identity hash code時總是會返回最初記錄的值。
不是在對象創建時計算的。

這組實現代碼在HotSpot VM里自從JDK6的早期開發版開始就沒變過,只是hashCode選項的默認值變了而已。

上面的程序在執行到這個 hashCode() 調用時,VM看到對象之前還沒計算 identity hash code,才去計算并記錄它。

這樣的話,先 println(arr1) 就會使得 arr0 所引用的數組對象先被計算 identity hash code,在VM上就是從偽隨機數列中取出某一項,然后再 println(arr2) 就會計算并記錄 arr2 所引用的數組對象的 hash code,也就是取出那個偽隨機數列的下一項。反之亦然。

所以無論先 println(arr1) 還是先 println(arr2) ,看到的都是 VM用來實現 identity hash code 的偽隨機數列的某個位置的相鄰兩項,自然怎么交換都會看到一樣的結果。

而如果不調用hash code自然就會觸發identity hash code,所以交換順序就沒用...

這篇帖子也寫得很好可以看看,作者對jvm是有一些深入的研究的:《How does the default hashCode() work?》

--------------

《Java Challengers #4: Comparing Java objects with equals() and hashcode()》

《Java Challengers #2: String comparisons How String methods, keywords, and operators process comparisons in the String pool》

先看源碼

Object.java的equals:

    public boolean equals(Object obj) {return (this == obj);}

String.java中的equals:

使用String類的Equals方法

equals()方法用于驗證兩個Java類的狀態是否相同。因為equals()來自Object類,所以每個Java類都繼承它。但equals()必須重寫該方法才能使其正常工作。當然,String覆蓋equals()。

關于字符串要記住什么

  • Strings是不可變的,所以String不能改變狀態。
  • 為了節省內存,JVM將Strings?保留在常量池中。String創建new時,JVM會檢查其值并將其指向現有對象。如果常量池中沒有該值,則JVM會創建一個新值String。
  • 使用==運算符比較對象引用。使用該equals()方法比較的值String。相同的規則將應用于所有對象。
  • 使用new運算符時,即使存在具有相同值的值,String也會在String池中創建新的運算符String

-------------------------

下面都是Object的equals

equals()和hashcode()的常見錯誤

  • 忘記hashcode()equals()方法一起覆蓋,反之亦然。
  • 不覆蓋equals()hashcode()使用哈希集合時HashSet
  • 返回方法中的常量值,hashcode()而不是返回每個對象的唯一代碼。
  • 使用==equals互換。的==比較Object參考,而equals()比較對象值。

關于equals()和hashcode()要記住什么

  • 在POJO中始終覆蓋equals()hashcode()方法是一種很好的做法。
  • 使用有效算法生成唯一的哈希碼。
  • 覆蓋equals()方法時,也始終覆蓋該hashcode()方法。
  • equals()方法應該比較整個對象的狀態:來自字段的值。
  • hashcode()方法可以是POJO的ID。
  • 當比較兩個對象的哈希碼的結果為假時,該equals()方法也應該為假。
  • 如果equals()hashcode()使用哈希集合時沒有被重載,集合會有重復的元素。

使用equals()和hashcode()的準則

您應該只equals()為具有相同唯一哈希碼ID的對象執行方法。當哈希碼ID?同時,不應執行equals()。

表1.哈希碼比較

如果hashcode()比較......然后 …
返回true執行?equals()
返回false不要執行?equals()

出于性能原因,該原則主要用于SetHash收集。

對象比較規則

hashcode()比較返回false,該equals()方法也必須返回false。如果哈希碼不同,則對象肯定不相等。

表2.與hashcode()的對象比較

當哈希碼比較返回時......equals()方法應該返回...
真正對或錯

equals()方法返回true,這意味著該對象相等的所有的值和屬性。在這種情況下,哈希碼比較也必須為真。

表3.與equals()的對象比較

equals()方法返回時......hashcode()方法應該返回...
真正真正
對或錯

總結:

==永遠是比較地址;new出來的兩個對象地址自然也是不相等的;equals默認比較地址也就是和==等效,如果是字符串是比較內容而不是地址。如果重寫了equals需要同步重寫?hashCode()

?

總結

以上是生活随笔為你收集整理的Redis源码和java jdk源码中hashcode的不同实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产日产亚洲精华av | 午夜精品影院 | 亚洲一二视频 | 久久人91精品久久久久久不卡 | 日本中文字幕观看 | 国产一区二区中文字幕 | 国产亚洲综合在线 | 超碰在线观看av | 国产精品欧美久久久久久 | 精品国产免费人成在线观看 | 欧美一级日韩免费不卡 | 国产精品第一 | 在线精品视频免费播放 | 欧美午夜精品久久久久久孕妇 | 免费观看国产成人 | 国产精品美女久久久免费 | 四虎国产精品免费 | 日韩精品无码一区二区三区 | 91av视频在线观看免费 | 一二区精品 | 在线国产福利 | 久久久精品免费观看 | 精品国产日本 | 日韩在线观看视频中文字幕 | a在线免费观看视频 | 在线 成人 | 成人精品亚洲 | 日韩在线精品 | 中文伊人| 日韩 在线a | 欧洲视频一区 | 日韩免费在线网站 | 极品美女被弄高潮视频网站 | 91重口视频 | 日韩av成人免费看 | 97超碰人人在线 | 色综合久久悠悠 | 亚洲国产欧美在线人成大黄瓜 | 日本中文字幕系列 | 日韩videos| 超碰av在线播放 | 一本大道久久精品懂色aⅴ 五月婷社区 | 欧美a视频在线观看 | 日韩羞羞| 国产精品美女免费 | 欧美人体xx | 日韩视频一区二区三区 | 在线 你懂 | 久热色超碰 | 99热精品国产 | 婷婷伊人五月 | 午夜精品电影一区二区在线 | www.综合网.com| 亚洲精品在线视频观看 | 国产精品免费久久久 | 午夜av一区 | 天天综合人人 | 国产91电影在线观看 | 久久免费精品国产 | 亚洲精品乱码久久久久久蜜桃动漫 | 激情在线网址 | 午夜视频在线观看一区 | 亚洲综合色视频在线观看 | 在线观看视频一区二区三区 | 2019精品手机国产品在线 | 日韩av一区二区三区在线观看 | 国产伦精品一区二区三区照片91 | 豆豆色资源网xfplay | 国产va精品免费观看 | 久久伊人免费视频 | 中文字幕一区二区三区四区久久 | 亚洲日韩欧美视频 | 国产资源精品在线观看 | 在线观看一级 | 最新中文字幕视频 | 免费观看性生交大片3 | 国产精品视频免费看 | 天天干天天射天天爽 | 日韩色高清 | 日韩在线观看视频网站 | 丁香 久久 综合 | 免费观看全黄做爰大片国产 | 国产在线观看高清视频 | 人人讲下载 | 日本在线观看一区二区三区 | 亚洲精品xxxx | 伊人网av| 亚洲人视频在线 | 性色av一区二区三区在线观看 | 一区二区三区四区不卡 | 国产精品久久网 | 999久久a精品合区久久久 | 天堂av最新网址 | 国产精品久久久久久久久免费 | 午夜精品一二区 | 99久久精品免费看国产免费软件 | 天天躁日日躁狠狠躁av中文 | 成人久久精品 | 亚洲国产影院av久久久久 | 日韩高清不卡一区二区三区 | 激情文学丁香 | 91精品区| 激情婷婷综合网 | 99久久日韩精品免费热麻豆美女 | 91在线视频免费 | 日韩毛片精品 | 日日摸日日添夜夜爽97 | 亚洲在线观看av | 在线视频一区观看 | 在线观看小视频 | 国产乱码精品一区二区三区介绍 | av免费在线播放 | 一级欧美一级日韩 | 日本丶国产丶欧美色综合 | 久久久久福利视频 | 国产精品专区在线观看 | 免费在线观看av电影 | 欧美国产一区二区 | 天天摸日日操 | 狠狠操狠狠干天天操 | 国产精品区免费视频 | 亚洲欧美国产精品 | 亚洲成人网av | 欧美最猛性xxxxx免费 | 亚洲色图美腿丝袜 | 国产精品欧美激情在线观看 | 欧产日产国产69 | 国产在线最新 | 久久成人高清 | 国产精品一区二区三区在线看 | 成人sm另类专区 | 午夜aaaa| 久久99精品久久只有精品 | 日本动漫做毛片一区二区 | 黄色免费av | www.五月天婷婷.com | 亚洲涩涩涩涩涩涩 | 国产欧美精品在线观看 | 狠狠色狠狠色综合日日小说 | 人人舔人人射 | 国产成人一区二区啪在线观看 | 欧美激情第八页 | 成年人在线观看免费视频 | 2019中文| av中文字幕免费在线观看 | 国产一区二区在线免费 | 天天干天天操天天射 | 9在线观看免费 | 青草视频网 | 亚洲国产免费看 | 欧美激情综合五月色丁香小说 | 欧美激情精品久久久久久免费印度 | av电影在线免费 | 国产一区二区精品91 | 91久久精品一区二区三区 | 免费试看一区 | 五月婷婷伊人网 | 久久精品人 | 精品国产乱子伦一区二区 | 久久精品国产免费 | 欧美色图视频一区 | 久久综合九色综合欧美就去吻 | 91av在线国产 | 中文字幕在线视频一区 | 四虎永久免费网站 | 97超碰福利久久精品 | 国产亚洲在线观看 | 草在线视频 | 国产999精品久久久久久绿帽 | 天天射天天爱天天干 | 日日操天天操夜夜操 | 超碰人人91 | 亚洲最大av在线播放 | 玖玖视频国产 | www.97视频| 久草在线视频网 | 中文字幕资源网 | 五月婷婷欧美视频 | 天天操天天射天天舔 | 色综合婷婷久久 | 久久久久久久久久影院 | 精品免费一区二区三区 | 欧美日韩性视频 | 中文字幕频道 | 天天视频色版 | 99热精品免费观看 | 亚洲天天摸日日摸天天欢 | 狠狠干我 | 在线免费观看黄色大片 | 97色国产| 国产成人亚洲在线观看 | 亚洲人成人在线 | 免费在线观看成人 | 天天操天天色天天 | 日韩高清毛片 | 精品免费国产一区二区三区四区 | 亚洲高清视频在线观看 | 久久免费精品 | 免费毛片一区二区三区久久久 | 国产精品99久久免费观看 | 成人国产精品久久久 | 亚洲va综合va国产va中文 | 91中文字幕在线视频 | 免费三级影片 | 色窝资源 | 有码中文字幕在线观看 | 午夜国产一区二区 | 99精品视频在线 | 国产视频九色蝌蚪 | 98久久 | 永久免费看av | 欧美午夜理伦三级在线观看 | 深夜免费网站 | 成人av一区二区三区 | 日本爱爱免费 | av在线播放亚洲 | 在线视频 影院 | 日韩午夜高清 | 国产精品亚洲a | 狠狠干,狠狠操 | 玖玖在线观看视频 | 日韩在线免费观看视频 | 国产精品乱码久久久久 | 国产精品高清在线 | 亚洲香蕉视频 | 欧美一区二区三区激情视频 | 国产91精品欧美 | 国产亚洲精品中文字幕 | 成人av网站在线播放 | www黄| 久久成视频 | 不卡视频一区二区三区 | 天天综合网天天综合色 | 人人看黄色 | 国产二区精品 | 亚洲丝袜一区 | 国产日产精品一区二区三区四区 | 亚洲精品国产第一综合99久久 | 免费黄色特级片 | 免费又黄又爽的视频 | 久久免费看视频 | 精品美女在线视频 | 免费亚洲一区二区 | 天天操天天色天天射 | 精品国产乱码久久久久久三级人 | 久久久久亚洲精品成人网小说 | 九九在线视频 | www.伊人网| 欧美一区日韩精品 | 国产日产精品一区二区三区四区 | 西西444www| 日韩字幕在线观看 | 九九热在线观看 | 午夜av一区 | 欧美综合国产 | 国精产品999国精产品岳 | 激情综合狠狠 | 在线观看亚洲免费视频 | 开心丁香婷婷深爱五月 | 日韩乱码在线 | 日韩在线观看的 | 国产精品欧美日韩 | 国产国产人免费人成免费视频 | 97日日碰人人模人人澡分享吧 | 精品国产免费一区二区三区五区 | 五月天丁香 | 久久av黄色| 国产 一区二区三区 在线 | 韩国av免费观看 | 久久综合爱 | 欧美日韩国产网站 | 欧美日韩国产综合网 | 91丨九色丨蝌蚪丨老版 | 1区2区3区在线观看 三级动图 | 国产清纯在线 | 国产精品久久久久久影院 | 日韩a级黄色片 | 久久99久久99 | 日日夜夜天天久久 | 成人综合婷婷国产精品久久免费 | 91观看视频| 国产成人精品一区二区三区在线观看 | 国产在线观看你懂的 | 91女神的呻吟细腰翘臀美女 | av免费观看在线 | 国产99一区 | 亚洲日韩中文字幕在线播放 | 精品电影一区 | 国产精品国产三级国产aⅴ入口 | 国产精品一区二区久久久 | 免费色视频网址 | 欧洲精品在线视频 | 国产精品手机播放 | 中文字幕精品在线 | 日韩av影视 | 美女一二三区 | 久久亚洲综合色 | av中文字幕av | 四虎成人av| 日韩欧美在线免费观看 | 成人午夜精品久久久久久久3d | 久久狠狠干| 色综合天天在线 | 日韩免费在线网站 | 免费视频 三区 | 亚洲一二区视频 | 激情丁香综合五月 | 日韩高清无线码2023 | 黄色录像av| 少妇搡bbbb搡bbb搡69 | 精品国产自在精品国产精野外直播 | 一本一道波多野毛片中文在线 | 激情电影在线观看 | 在线免费观看国产精品 | 久久99国产精品久久99 | 在线综合 亚洲 欧美在线视频 | 日韩成人精品一区二区三区 | 在线看国产视频 | 日韩国产精品毛片 | 人人射人人澡 | 激情视频二区 | 九色91av| 草久在线播放 | 中文字幕一区av | 欧美日韩国产区 | 成人黄色电影在线观看 | www亚洲精品 | 天天操天天草 | 亚洲国产日韩欧美 | 国产黄色大片 | 三级黄色片在线观看 | 人人涩| 午夜黄网 | 在线观看免费中文字幕 | 麻豆视频免费在线播放 | 色综合久久久久久中文网 | 国产一级片久久 | 国产午夜三级一区二区三桃花影视 | 免费久久精品视频 | 91成人黄色| 久久影视精品 | 免费看片成人 | 色网站在线免费观看 | 久热色超碰 | 综合色综合 | 不卡电影免费在线播放一区 | 久久婷综合 | 日韩在观看线 | 国产亚洲观看 | 免费福利片2019潦草影视午夜 | 精品国产乱码久久久久久1区2匹 | 中文字幕首页 | 成人精品99 | 国内视频一区二区 | 在线观看视频日韩 | 少妇性aaaaaaaaa视频 | 人人干在线| 九九九视频精品 | 狠狠干网站 | 日韩激情免费视频 | av成人在线播放 | 成人免费毛片aaaaaa片 | 五月开心激情网 | 岛国精品一区二区 | 国产视频久久 | 激情综合网婷婷 | 在线观看一 | 色噜噜狠狠狠狠色综合久不 | 亚洲丁香久久久 | 久久成人国产精品免费软件 | 精品久久久国产 | 天天干天天玩天天操 | 亚洲免费专区 | 国产精品一区二区白浆 | 日韩欧美一区二区三区视频 | 久久久免费观看 | 综合激情网 | 精品一区二区av | 国内精品久久久久影院优 | 成人黄色免费在线观看 | av在线中文 | 久久国产精品99国产 | 深夜激情影院 | 成人性生交大片免费看中文网站 | 国产精品不卡一区 | 久久免费视频精品 | 亚洲伦理一区二区 | 日韩精品无 | 成人久久18免费网站 | 激情视频免费观看 | 久久久在线免费观看 | 日韩精品免费在线播放 | 中文字幕在线观看视频免费 | 成人宗合网 | 国产精品一区二区在线观看免费 | av一级二级 | 国产美女永久免费 | 91av在线不卡 | 国产精品精品视频 | 婷婷色伊人 | 一区二区电影网 | 成人免费在线观看av | 日韩av中文在线观看 | 丁香婷婷网| 国产精品乱码久久久久 | 在线a视频免费观看 | av在线不卡观看 | 99国产精品久久久久老师 | 一级精品视频在线观看宜春院 | 国产精品毛片完整版 | 天干啦夜天干天干在线线 | 色噜噜狠狠狠狠色综合久不 | 日韩精品一区二区免费视频 | 在线看片中文字幕 | 亚洲无在线 | 欧美一级电影免费观看 | 深夜福利视频在线观看 | 色婷婷综合在线 | www久久久 | 午夜 久久 tv | 91精品一区国产高清在线gif | 国产黑丝一区二区 | 四虎www | 久久99深爱久久99精品 | 日日夜夜噜 | 中文av不卡| 久久再线视频 | 草久视频在线观看 | 91视频免费视频 | 国产精品你懂的在线观看 | 久久99精品国产麻豆宅宅 | 波多野结衣资源 | 成人综合婷婷国产精品久久免费 | 在线99 | 国产丝袜一区二区三区 | 亚洲国产手机在线 | 婷婷在线网 | 国产精品黑丝在线观看 | 国产馆在线播放 | 中文av字幕在线观看 | 亚洲国产精品成人综合 | 天天射夜夜爽 | www.亚洲黄 | 永久免费毛片在线观看 | 久久99精品国产麻豆婷婷 | 午夜免费电影院 | 美女视频一区二区 | 日韩成人免费观看 | 探花视频免费在线观看 | 最近更新好看的中文字幕 | 日韩欧美一区二区不卡 | 极品美女被弄高潮视频网站 | 色五丁香 | 国产日韩精品久久 | 日日天天| 国产69精品久久99不卡的观看体验 | 99久久影视| 在线精品一区二区 | 韩日av在线| 亚洲精品毛片一级91精品 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 五月天久久激情 | 亚洲狠狠操 | 97在线观看免费高清完整版在线观看 | 手机av在线免费观看 | 成人午夜电影久久影院 | 国产 日韩 欧美 中文 在线播放 | 丝袜+亚洲+另类+欧美+变态 | 毛片网免费 | 可以免费观看的av片 | 国产91全国探花系列在线播放 | 国产精品一区二区在线免费观看 | 国内精品中文字幕 | 亚洲精品综合在线 | 免费在线观看av网站 | 精品在线视频一区二区三区 | 亚洲热久久| 国产精品日韩在线 | av福利免费 | 国产色a在线观看 | 五月婷婷色 | 丁香电影小说免费视频观看 | 久久久久久久久久伊人 | 国产精品免费观看国产网曝瓜 | 成人免费看视频 | 国产日韩中文在线 | 亚洲精品小视频 | 亚洲在线免费视频 | 久久精品视频观看 | 国产精品毛片一区视频播不卡 | 美女网站黄免费 | 精品极品在线 | 五月婷婷播播 | 97成人啪啪网| 欧美另类一二三四区 | 久久99偷拍视频 | 久久网站av| 日日夜夜操操操操 | 97福利视频 | 久久久国产日韩 | 亚洲欧美视频一区二区三区 | 日韩动态视频 | 91视频在线观看大全 | 天天做天天爱天天综合网 | 日韩网站在线看片你懂的 | 精品国产乱码久久久久久天美 | 精品免费一区 | 国产美女免费观看 | 久久免费激情视频 | 欧美日韩破处 | 日韩三级中文字幕 | 国产精品永久免费视频 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 日本中文字幕高清 | 在线观看91精品视频 | 国产成人精品一区二区三区在线 | 亚洲五月综合 | 99爱视频在线观看 | 综合激情 | 五月综合色 | 啪啪激情网 | 在线性视频日韩欧美 | 美女视频黄免费 | 成人免费在线观看av | 久久国产露脸精品国产 | 天天干干 | 日韩中文字幕免费看 | 91网免费观看 | 夜夜摸夜夜爽 | 成人av免费播放 | 91探花国产综合在线精品 | 波多野结衣视频在线 | 狠狠色香婷婷久久亚洲精品 | 香蕉色综合 | 日韩欧美一区视频 | 国产精品一区免费看8c0m | 国产午夜精品福利视频 | 国产亚洲欧美在线视频 | 国产精品久久久久久久久久99 | 黄色av免费 | 国产一区二区不卡在线 | 日本一区二区三区免费看 | 欧美少妇18p | 最新色视频 | 九九免费在线观看视频 | 国产免费精彩视频 | 激情久久网 | 91在线一区| 久久精品日韩 | 四虎永久精品在线 | 亚洲jizzjizz日本少妇 | 久久69精品久久久久久久电影好 | 久草干| av网站在线观看播放 | 久久国产精品99久久人人澡 | 91成人精品一区在线播放 | 日韩精品一区二区三区免费视频观看 | 欧美a√大片| 亚洲精品在线观看的 | 成人网在线免费视频 | 99在线高清视频在线播放 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 丝袜美腿在线 | 国产一二三区av | 九九精品视频在线看 | 日韩中午字幕 | 99精品一区二区 | 中文字幕在线一区观看 | 久久久久国产一区二区三区 | 欧美精品免费在线观看 | 91传媒免费在线观看 | 天天草天天草 | 欧美一级片免费观看 | 大荫蒂欧美视频另类xxxx | 福利视频 | 九九免费视频 | 日韩在线视频一区二区三区 | 成人av片免费观看app下载 | 日韩欧美一区二区三区视频 | 中文字幕二区三区 | 91精品电影| 五月婷丁香网 | 一区二区三区四区不卡 | 国产精品久久久久久av | 日韩一级电影网站 | 成人av免费播放 | 精品 激情| 日韩欧美在线高清 | 色综合久久久久综合体桃花网 | 亚洲日本激情 | 又黄又爽又色无遮挡免费 | 亚洲视频免费在线看 | 久久精品看片 | 色吊丝在线永久观看最新版本 | 亚洲毛片久久 | 亚洲视频资源在线 | 欧美成人影音 | 日韩av手机在线看 | 97超碰中文 | 国产精品久久久久久久久久 | 视频成人永久免费视频 | 色99之美女主播在线视频 | 亚洲一区av | 99在线热播精品免费 | 91精品欧美 | 久久久久久久久久久免费视频 | 国产亚洲精品久久久久久久久久久久 | 综合激情av | 欧洲一区二区三区精品 | 99色网站 | 国产亚洲人成网站在线观看 | 国产人在线成免费视频 | 中文字幕在线观看完整版电影 | 狠狠躁18三区二区一区ai明星 | 久久久国产精品麻豆 | 中文字幕一区二区三区四区在线视频 | 久草视频2 | 欧美日韩观看 | h动漫中文字幕 | 久久不卡电影 | 欧美成人69av | 精品久久久成人 | bbw av| 日韩视频精品在线 | 国产精品成人自产拍在线观看 | 亚洲国产精品久久久 | 奇米网在线观看 | 丁香五月缴情综合网 | 在线免费看黄色 | 欧美一级片播放 | 最新国产在线视频 | 日韩欧美专区 | 国产玖玖视频 | 国产成人av网站 | 天天综合天天做天天综合 | 日韩欧美在线观看一区 | 日韩国产高清在线 | 久久综合九色综合久久久精品综合 | 麻豆91网站 | 欧美一级片在线观看视频 | 高清精品久久 | 日韩天天综合 | 久草在线在线 | av大全在线 | 中文字幕影视 | 久久久精品午夜 | 国产婷婷精品av在线 | 中文字幕欧美日韩va免费视频 | 中文字幕免费观看 | 欧美日韩精品二区第二页 | 狠狠狠狠狠狠干 | 亚洲综合色丁香婷婷六月图片 | 亚洲黄色在线免费观看 | av久久久 | 欧美a级一区二区 | 久久看看| 97电影手机版| 免费高清在线一区 | 日日射av | 在线免费黄色片 | 综合久久综合久久 | 99精品视频精品精品视频 | 成人国产电影在线观看 | 精品国产一区二区三区久久 | 99视频在线观看免费 | 激情综合网五月婷婷 | 日韩在线视频一区二区三区 | 97成人啪啪网 | 免费观看一级 | 黄色资源在线观看 | 十八岁以下禁止观看的1000个网站 | 激情五月五月婷婷 | 九九九电影免费看 | 五月天丁香| 久久www免费视频 | 国产成人在线综合 | 久草视频视频在线播放 | 97av视频 | 亚洲1区在线 | 九九热视频在线免费观看 | 国内视频在线 | 六月丁香婷 | 中文字幕在线影院 | 99久久久国产精品免费99 | 中文字幕av免费 | 美女激情影院 | 日韩 精品 一区 国产 麻豆 | 日韩欧美一区二区三区免费观看 | 亚洲播放一区 | 懂色av一区二区三区蜜臀 | 国模吧一区 | 日韩 在线a | 91麻豆精品国产91久久久久久久久 | 欧美精品一区二区免费 | 日韩在线观看视频一区二区三区 | 久久色视频| 欧美无极色 | 中文字幕精品一区 | 在线看av的网址 | 久久精品国产亚洲 | 国产精品美女久久久免费 | 国产精品久久久久亚洲影视 | av动图| 91精品一区二区在线观看 | av看片网 | av电影中文字幕 | 一区二区三区精品在线视频 | 999成人国产| 精品高清美女精品国产区 | 美女精品在线 | 日韩av女优视频 | 国产一区二区在线免费 | 在线视频精品 | 国产中文字幕第一页 | 欧美孕交vivoestv另类 | 看黄色91 | 欧美日韩精品影院 | 日日干天天爽 | 久久手机免费观看 | 国产精品视频内 | 久久久免费精品视频 | 色狠狠干 | 午夜精品一区二区三区在线视频 | 亚洲黄色一级大片 | 激情av五月婷婷 | 久草久热 | 香蕉影视 | 欧美污在线观看 | 久久久久草 | 国产三级香港三韩国三级 | 操少妇视频| 成人app在线播放 | 欧美在线视频二区 | 久久热亚洲 | 美女免费黄视频网站 | 午夜精品电影 | 婷婷 中文字幕 | 欧美性生活大片 | 国产日韩精品久久 | 亚洲精品在线观看不卡 | 人人干人人草 | 日韩区欠美精品av视频 | 欧美成人91| 日韩欧美综合 | 国产一区二区三区免费观看视频 | 97超碰色 | 亚洲国产精品免费 | 国际精品网 | 中文字幕日韩高清 | 夜夜澡人模人人添人人看 | 黄色的视频网站 | 久久成人欧美 | 91免费视频网站在线观看 | 成人在线观看免费视频 | 国产日韩在线观看一区 | 免费99精品国产自在在线 | 黄色视屏av| 黄色影院在线播放 | 欧美最猛性xxxx| 精品在线观看一区二区三区 | 国产一级视频在线观看 | 日韩乱色精品一区二区 | 四虎在线影视 | 国产一区欧美在线 | 中文字幕在线国产精品 | www日日 | 最新av在线免费观看 | 丁香免费视频 | 国产精品毛片一区 | 狠狠色狠狠色综合系列 | 91视频免费国产 | 亚洲国产精品一区二区久久hs | 久久狠狠一本精品综合网 | 国产福利小视频在线 | 国产精品麻豆果冻传媒在线播放 | 久久歪歪 | 日韩免费在线观看视频 | 欧美性免费| 最新国产一区二区三区 | 国产精品毛片一区二区在线 | 日本一区二区三区免费看 | 十八岁免进欧美 | 91精品老司机久久一区啪 | 亚洲婷婷在线 | 国产一区免费观看 | 国产黄色精品在线 | 日韩精品一区二区在线视频 | 99久久久久久国产精品 | 国产精品久久久毛片 | 久久伊人综合 | 久久观看免费视频 | 天天鲁一鲁摸一摸爽一爽 | 欧美性色网站 | 人人澡人人爽欧一区 | 国产黄色在线观看 | 国产又粗又猛又黄又爽视频 | 国产破处视频在线播放 | 国内精品久久久久影院优 | 久久人91精品久久久久久不卡 | 中文字幕在线一区二区三区 | 深夜男人影院 | 亚洲精品黄色在线观看 | 久久网址 | 国产精品视频地址 | 免费观看国产成人 | 激情电影在线观看 | 丁香婷婷成人 | 国内偷拍精品视频 | 国产精品成人免费精品自在线观看 | 美女视频黄色免费 | 超碰在线观看av.com | 麻豆av一区二区三区在线观看 | 最近中文字幕国语免费高清6 | 欧美色就是色 | 天天操夜夜摸 | 国产精品日韩欧美 | 在线a人片免费观看视频 | 国产一级在线免费观看 | freejavvideo日本免费 | 一区在线免费观看 | 在线观看视频99 | 欧美精品一区二区三区一线天视频 | 亚洲一区二区精品在线 | 久久精品在线视频 | 亚洲欧美乱综合图片区小说区 | 中文字幕免费久久 | 成人午夜久久 | 久草在线高清 | 欧美精品少妇xxxxx喷水 | 人人爱爱 | 天天曰夜夜操 | 日批视频在线观看免费 | 国产免费av一区二区三区 | 97狠狠操| 四虎国产永久在线精品 | 草久热| 欧美日韩国产精品一区二区三区 | 日韩在线视频不卡 | 亚洲乱码精品 | 久草电影在线观看 | 色综合天天色综合 | 成年人黄色免费网站 | 97电影手机| 韩日色视频| 色视频在线免费观看 | www.色婷婷| 女人高潮特级毛片 | 免费97视频 | 狠狠操综合网 | 亚洲专区 国产精品 | 2019中文最近的2019中文在线 | 91久久久久久久一区二区 | 亚洲黄色精品 | 国产亚洲aⅴaaaaaa毛片 | 久久久久久高潮国产精品视 | 综合在线亚洲 | 成人三级黄色 | 日韩高清不卡在线 | 国产精品手机视频 | 日本三级在线观看中文字 | 久久精品福利 | 国产精品2020| 亚洲国产精品久久久久 | 国产精品久久久久久久久久久免费 | 国产精品18久久久久久久 | 特级毛片爽www免费版 | 日韩精品一区二区三区三炮视频 | 一区二区三区免费 | av片在线观看免费 | 国产精品福利久久久 | 日韩视频免费 | 国产91精品一区二区 | 久久综合九色99 | 在线观看国产日韩 | 在线免费观看国产视频 | 日日干av| 日韩天天综合 | 国产精品精品视频 | 色就是色综合 | 欧美成人播放 | av福利在线 | 国产精品女主播一区二区三区 | 最新中文字幕在线资源 | 黄毛片在线观看 | 天天综合网 天天 | 99免费在线观看视频 | 亚洲国产中文字幕 | 久操中文字幕在线观看 | 国产精品电影一区二区 | 日本久久久精品视频 | 国产精品精品国产色婷婷 | 日韩亚洲在线视频 | 91网免费观看 | 黄色aa久久 | 久久综合免费视频影院 | 51久久夜色精品国产麻豆 | 麻豆影视在线播放 | 丁香综合av | 伊人六月 | 国产黄色片一级 | 一区二区三区电影在线播 | 99精品视频在线观看播放 | 国产1区2区 | 久久久久久网址 | 99高清视频有精品视频 | 黄色免费高清视频 | 黄色毛片在线看 | 久久99精品久久久久婷婷 | 欧美在线你懂的 | 天天操天天拍 | av在线电影播放 | 美女黄频免费 | 国产高清视频网 | 午夜视频在线观看一区二区三区 | 狠狠狠色丁香婷婷综合久久五月 | av三级av | 中文字幕乱码电影 | 天天爽天天爽夜夜爽 | 久久99精品热在线观看 | 精品999 | 色小说在线 | 久久字幕网 | 成人午夜剧场在线观看 | 久久人人精品 | 又污又黄的网站 | 婷婷国产v亚洲v欧美久久 | 久久久国产一区二区三区四区小说 | 欧美一区二区三区免费观看 | 精品综合久久久 | 91麻豆精品国产91久久久久 | 久草国产视频 | 国产高清免费视频 | 精品久久久久一区二区国产 | 狠狠色丁香婷婷综合久小说久 | 亚洲欧美婷婷六月色综合 | 亚州av免费| 国产午夜激情视频 | av网站地址| 婷婷网站天天婷婷网站 | 99久久99久久综合 | 日本一区二区三区视频在线播放 | 国产精品久久久久久久久久不蜜月 | 久久精品二区 | 国产一级免费观看 | 国产精品美女毛片真酒店 | 国产精品美女视频网站 | 精品一区在线看 | 91九色网站 | 久久 一区 | 欧美看片| 欧美日韩精品国产 | 国产中文字幕精品 | 中文字幕一区二区三区乱码不卡 | 人人dvd | 99精品在线免费 | 亚洲国产精品视频在线观看 | 欧美精品在线一区 | 久久免费视频国产 | 一区二精品| 国产福利一区二区三区在线观看 | 国产精品专区一 | 5月丁香婷婷综合 | 欧美成人精品欧美一级乱 | 一本一道久久a久久精品蜜桃 | 精品久久久久久综合 | 久久国产精品精品国产色婷婷 | 久久久影院一区二区三区 | 在线播放 日韩专区 | 日韩一区在线播放 | 日日爱夜夜爱 | 日韩欧美xxx | 一级黄色片在线观看 | 国产精品美女久久久久久免费 | 天天综合色网 | 国产午夜精品一区二区三区在线观看 | 狠狠色丁香 | 亚洲天堂社区 | 欧美二区视频 | www.夜夜操 | 国产精品99蜜臀久久不卡二区 | 日本黄色免费在线观看 | 成人中文字幕在线观看 | 伊人久久电影网 | 在线 影视 一区 | 成人在线视频免费观看 | 国产精品一区二区久久久 | 国产日韩高清在线 | 成年人免费在线观看网站 | 成年人免费av | 综合在线色 | 久久精品久久久精品美女 | 91麻豆精品国产自产 | 在线观看中文字幕av | 亚洲综合在线播放 | 日韩电影黄色 | 久久国产剧场电影 | 中文字幕精品一区二区精品 | 日操操 |