午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁(yè) > 知識(shí)庫(kù) > 使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題

使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題

熱門標(biāo)簽:高碑店市地圖標(biāo)注app 四川穩(wěn)定外呼系統(tǒng)軟件 廊坊外呼系統(tǒng)在哪買 400電話辦理的口碑 一個(gè)地圖標(biāo)注多少錢 地圖標(biāo)注工廠入駐 南京手機(jī)外呼系統(tǒng)廠家 臺(tái)灣電銷 b2b外呼系統(tǒng)

場(chǎng)景:

項(xiàng)目有兩種角色需要不同的登錄權(quán)限,將redis做為用戶登錄信息緩存數(shù)據(jù)庫(kù)。碼一個(gè)方法,希望能夠根據(jù)傳入不用用戶實(shí)體類型來(lái)獲取相應(yīng)的數(shù)據(jù)。用戶實(shí)體為:SessionEntityUser1>、SessionEntityUser2>。json使用FastJson。

先闡述遇到的幾個(gè)問(wèn)題:

1、redis獲取到的數(shù)據(jù)序列化后,轉(zhuǎn)json,經(jīng)常提示轉(zhuǎn)換異常(并不是每次,只是時(shí)常)。

2、不想每種用戶都書(shū)寫一個(gè)redis操作方法(顯得tai low)。

解決:

1、redis獲取到的數(shù)據(jù)序列化后,轉(zhuǎn)json,經(jīng)常提示轉(zhuǎn)換異常:

先說(shuō)redis有兩種獲取方式。

1)

redisTemplate.opsForValue().get(key);

2)

SessionEntity result = redisTemplate.execute(new RedisCallbackSessionEntity>() {
   public SessionEntity doInRedis(RedisConnection connection)
     throws DataAccessException {
    RedisSerializerString> serializer = getRedisSerializer();
    byte[] key = serializer.serialize(s);
    byte[] value = connection.get(key);
    if (value == null) {
     return null;
    }
    String json = serializer.deserialize(value);
    return JSONObject.parseObject(json,SessionEntity.class);
   }
  });

顯然第一種的方式比較簡(jiǎn)單。查看源碼,發(fā)現(xiàn)第一種方式底層調(diào)用的也是redisTemplate.execute方法,所以應(yīng)該算是一種封裝吧。我們一直采用的是第二種方式。(第一種方式試過(guò),也一樣會(huì)出現(xiàn)json強(qiáng)轉(zhuǎn)異常)。這里出現(xiàn)過(guò)json異常,懷疑是跟泛型有關(guān)。這里手動(dòng)指定泛型反序列化類型。

修改后:

SessionEntity result = redisTemplate.execute(new RedisCallbackSessionEntity>() {
   public SessionEntity doInRedis(RedisConnection connection)
     throws DataAccessException {
    RedisSerializerString> serializer = getRedisSerializer();
    byte[] key = serializer.serialize(s);
    byte[] value = connection.get(key);
    if (value == null) {
     return null;
    }
    String json = serializer.deserialize(value);
    return JSONObject.parseObject(json, new TypeReferenceSessionEntityUser>>(){});
   }
  });

完美~,確實(shí)解決了json強(qiáng)轉(zhuǎn)異常。

那么問(wèn)題來(lái)了,這里的TypeReference需要手動(dòng)指定明確的的實(shí)體類型,嘗試添加泛型:

SessionEntityT> result = redisTemplate.execute(new RedisCallbackSessionEntityT>>() {
   public SessionEntityT> doInRedis(RedisConnection connection)
     throws DataAccessException {
    RedisSerializerString> serializer = getRedisSerializer();
    byte[] key = serializer.serialize(s);
    byte[] value = connection.get(key);
    if (value == null) {
     return null;
    }
    String json = serializer.deserialize(value);
    return JSONObject.parseObject(json, new TypeReferenceSessionEntityT>>(){});
   }
  });

看樣子是沒(méi)什么問(wèn)題,而且泛型也被識(shí)別到了。 但是依舊無(wú)法通過(guò)。

2、不想每種用戶都書(shū)寫一個(gè)redis操作方法:

上面說(shuō)到就算加了泛型也依舊無(wú)法通過(guò),嘗試了多種方式依舊如此。百度了一圈,都是說(shuō)使用TypeReference這個(gè)來(lái)解決,但是并沒(méi)有提及動(dòng)態(tài)泛型的問(wèn)題。偶然間看到文章說(shuō)Fastjson不支持,所以嘗試替換成jackson。

替換后的代碼:

SessionEntityT> result = redisTemplate.execute(new RedisCallbackSessionEntityT>>() {
   public SessionEntityT> doInRedis(RedisConnection connection)
     throws DataAccessException {
    RedisSerializerString> serializer = getRedisSerializer();
    byte[] key = serializer.serialize(s);
    byte[] value = connection.get(key);
    if (value == null) {
     return null;
    }
    String json = serializer.deserialize(value);
    ObjectMapper om = new ObjectMapper();
    JavaType javatype = om.getTypeFactory().constructParametricType(SessionEntity.class, clazz);
    try {
     return om.readValue(json, javatype);
    } catch (IOException e) {
     e.printStackTrace();
    }
    return null;
//    return JSONObject.parseObject(json, new TypeReferenceSessionEntityT>>(){});
   }
  });

這里使用到了jackson的ObjectMapper。ObjectMapper類是Jackson庫(kù)的主要類。它提供一些功能將轉(zhuǎn)換成Java對(duì)象匹配JSON結(jié)構(gòu),反之亦然。它使用JsonParser和JsonGenerator的實(shí)例實(shí)現(xiàn)JSON實(shí)際的讀/寫。(復(fù)制來(lái)的)發(fā)現(xiàn)問(wèn)題解決。

提供的抽象方法為:

public T> SessionEntityT> get(final String s, ClassT> clazz);

調(diào)用方式為:

sessionEntityDao.get(key, User1.class); 跟 sessionEntityDao.get(key, User2.class);

由于這里使用到的是jackson-databind-2.6.0的庫(kù),這個(gè)版本種constructParametricType這個(gè)方法已經(jīng)快要過(guò)時(shí),更高版本使用

constructParametrizedType

替換。這里我還沒(méi)嘗試過(guò),等有空再玩。

這里問(wèn)題已經(jīng)解決,純粹做個(gè)筆記以供自己以后方便查閱。這里只提供自己項(xiàng)目中遇到的解決方式之一,相信應(yīng)該還有其他方式可以解決。如果有說(shuō)明錯(cuò)誤的地方,請(qǐng)指出并見(jiàn)諒。

補(bǔ)充知識(shí):Redis爬坑——Redis實(shí)現(xiàn)通用序列化器 解決Redis反序列化失敗

Redis默認(rèn)序列化是 JdkSerializationRedisSerializer,由此可見(jiàn)

public void afterPropertiesSet() {
 super.afterPropertiesSet();
 boolean defaultUsed = false;
 if (this.defaultSerializer == null) {
  this.defaultSerializer = new JdkSerializationRedisSerializer(this.classLoader != null ? this.classLoader : this.getClass().getClassLoader());
 }

 if (this.enableDefaultSerializer) {
  if (this.keySerializer == null) {
   this.keySerializer = this.defaultSerializer;
   defaultUsed = true;
  }

  if (this.valueSerializer == null) {
   this.valueSerializer = this.defaultSerializer;
   defaultUsed = true;
  }

  if (this.hashKeySerializer == null) {
   this.hashKeySerializer = this.defaultSerializer;
   defaultUsed = true;
  }

  if (this.hashValueSerializer == null) {
   this.hashValueSerializer = this.defaultSerializer;
   defaultUsed = true;
  }
 }

 if (this.enableDefaultSerializer  defaultUsed) {
  Assert.notNull(this.defaultSerializer, "default serializer null and not all serializers initialized");
 }

 if (this.scriptExecutor == null) {
  this.scriptExecutor = new DefaultScriptExecutor(this);
 }

 this.initialized = true;
}

這里因?yàn)槲覀兊捻?xiàng)目需要更改默認(rèn)序列策略為Jackson2JsonRedisSerializer讓它序列化為可視化的***json***語(yǔ)句

我們首先定義自己的RedisTemplate,這里我們不要為了每一個(gè)類定義一個(gè)序列化器,我們定義一個(gè)統(tǒng)一的序列化器所以這里泛型是 String,Object>,key我們使用StringRedisSerializer,value使用Jackson2JsonRedisSerializer

注釋代碼為修復(fù)反序列化bug的代碼

 @Bean
 public RedisTemplateString, Object> objectRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
  RedisTemplateString, Object> template = new RedisTemplate();
  Jackson2JsonRedisSerializerObject> jsonSerial = new 		 Jackson2JsonRedisSerializer(Object.class);
//  //修復(fù)反序列化bug
//  ObjectMapper om = new ObjectMapper();
//  om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
//  om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
//  jsonSerial.setObjectMapper(om);
  template.setDefaultSerializer(jsonSerial);
  template.setKeySerializer(RedisSerializer.string());
  template.setConnectionFactory(redisConnectionFactory);
  template.afterPropertiesSet();
  return template;
 }

測(cè)試代碼為

@Test
public void redisSaveObject(){

 UserDO ob = new UserDO();
 ob.setName("name");
 ob.setCity("city");
 objectRedisTemplate.opsForValue().set("ob1",ob);
 Object ob2 = objectRedisTemplate.opsForValue().get("ob1");
 UserDO ob1 = (UserDO)ob2;
 System.out.println(ob1);

}

運(yùn)行結(jié)果為

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.hcy.core.model.UserDO
at com.hcy.core.redistest.RedisTest.redisSaveObject(RedisTest.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at 

很明顯是對(duì)象強(qiáng)制轉(zhuǎn)換錯(cuò)誤

這是因?yàn)榉盒偷脑颍瑀edis在序列化時(shí)候把他當(dāng)成Object序列化的,所以這里反序列化為Object是可以的,但是因?yàn)檫@個(gè)Object沒(méi)有類型定義所以無(wú)法強(qiáng)轉(zhuǎn)。

解決辦法

在RedisTemplate中對(duì)序列化器Jackson2JsonRedisSerializer進(jìn)行修改添加如下代碼,上文注釋了

  //修復(fù)反序列化bug
  ObjectMapper om = new ObjectMapper();
  om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  jsonSerial.setObjectMapper(om);

通過(guò) objectMapper.enableDefaultTyping() 方法設(shè)置

即使使用 Object.class 作為 jcom.fasterxml.jackson.databind.JavaType 也可以實(shí)現(xiàn)相應(yīng)類型的序列化和反序列化

好處:只定義一個(gè)序列化器就可以了(通用)

這里我們也做個(gè)測(cè)試,分別用不修改ObjectMapper的和修改了ObjectMapper的看看生成的value有啥子不一樣

運(yùn)行結(jié)果:

ob1: [“com.hcy.core.model.UserDO”,{“userid”:null,“openid”:null,“name”:“name”,“city”:“city”}]

ob2: {“userid”:null,“openid”:null,“name”:“name”,“city”:“city”}

這里結(jié)果很明顯啦!!!

希望對(duì)大家有幫助!!!

以上這篇使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例
  • Java后臺(tái)返回和處理JSon數(shù)據(jù)的方法步驟
  • Java 實(shí)現(xiàn)Redis存儲(chǔ)復(fù)雜json格式數(shù)據(jù)并返回給前端

標(biāo)簽:畢節(jié) 甘南 定州 泰州 伊春 河源 南寧 拉薩

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題》,本文關(guān)鍵詞  使用,Redis,獲取,數(shù)據(jù),轉(zhuǎn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    尤物av无码色av无码| 国产麻豆乱码精品一区二区三区| www.成人网.com| 久久黄色片网站| 日韩在线高清视频| 高清不卡在线观看| 国产精品无码网站| 国产精品女主播视频| 日韩理论在线观看| 久久精品国产亚洲av无码娇色 | 亚洲国产欧美另类| 超碰成人免费在线| 亚洲一区av在线播放| 国产曰批免费观看久久久| 色婷婷综合久久久久中文字幕| 欧美精品一区男女天堂| 老司机午夜精品视频在线观看| 免费日韩视频在线观看| 久久国产精品99国产精| 成人免费毛片高清视频| 精品无码人妻一区二区免费蜜桃| 成人免费直播live| 色综合欧美在线| 97精品人妻一区二区三区香蕉| 妺妺窝人体色www看人体| 亚洲人成电影网站色xx| 韩剧1988免费观看全集| 国产精品无码自拍| 2019中文字幕全在线观看| 久久蜜臀精品av| 欧美成人aaa片一区国产精品| 麻豆亚洲一区| 精品国产乱子伦一区| 日本sm残虐另类| 天堂在线中文在线| 久久精品视频在线观看| 国产日韩欧美精品在线| 日韩免费一二三区| 中国女人做爰视频| 日韩中文娱乐网| 久久久精品国产99久久精品芒果| 在线观看成人毛片| 色撸撸在线观看| 国产一区二区三区在线| 久久一留热品黄| 国产精品成人久久| 男的插女的下面视频| 久久影院在线观看| 亚洲视频一区二区免费在线观看| 中文字幕日韩免费| 久久精品免费网站| 国产精品夜色7777狼人| 欧美性色欧美a在线播放| 久久天天综合| free性中国hd国语露脸| 久久偷窥视频| 亚洲国产精品小视频| 不卡高清视频专区| 黄色小说在线观看视频| 99热亚洲精品| 高清视频欧美一级| 午夜亚洲国产au精品一区二区| 国产成人精品a视频| 欧美日韩中文在线视频| 国产精品福利在线观看| 欧美人妖巨大在线| 粉嫩av亚洲一区二区图片| 免费一级肉体全黄毛片| 成 年 人 黄 色 大 片大 全| 97超级碰碰碰久久久| 日韩欧美精品中文字幕| 日韩成人午夜电影| 极品色av影院| www.av蜜桃| 国产成人精彩在线视频九色| 欧美午夜精品电影| 国产一区二区精品在线观看| 久操免费在线视频| 日日摸天天爽天天爽视频| 成人亚洲综合色就1024| 亚洲成年人在线| 欧美经典一区二区| 国产叼嘿视频在线观看| 人妻熟女aⅴ一区二区三区汇编| 日本一区二区三区精品视频| 爱福利视频一区| 天天综合天天做天天综合| 成人小说亚洲一区二区三区| 波多野结衣av在线免费观看| 久久久久亚洲av无码专区喷水| 韩国19禁主播vip福利视频| 色999日韩国产欧美一区二区| 国产综合久久久久影院| 国产黄色片视频| www.cao超碰| 欧美动漫一区二区| 欧美美女18p| 欧美色精品在线视频| www.久久精品| 国产喷水福利在线视频| 伊人影院综合网| 日韩av资源在线| 国产精品国产三级欧美二区| 久久精品国产免费观看| 欧美在线色视频| 久久婷婷成人综合色| 亚洲成人中文字幕在线| 成人免费毛片东京热| 亚洲怡红院在线| 亚洲一区二区三区在线观看视频| 热re91久久精品国99热蜜臀| 亚洲国产精久久久久久| 亚洲一级在线观看| 国产精品18久久久久久久久久久久| 中日韩一级黄色片| 无码aⅴ精品一区二区三区浪潮| 成人自拍视频网站| 欧美成人在线网站| 日韩一区二区三区精品视频| 亚洲欧美自拍偷拍| 国产综合久久久久影院| 一区二区美女视频| 黄色片网站在线播放| 日日噜噜夜夜狠狠| 精品一区二区视频| 国产91精品不卡视频| 精品一区二区三区电影| 亚洲444eee在线观看| 成人免费va视频| 蜜桃在线一区二区| 日韩久久精品视频| 日韩免费高清一区二区| 男人亚洲天堂网| 视频一区视频二区视频三区高| 国产精品999| 久久精品91久久香蕉加勒比| 日韩一区二区三区四区五区六区| 一区二区免费在线| 丰满少妇久久久久久久| 天天摸天天干天天操| 久久久成人免费视频| 自拍偷拍第9页| 四虎成人在线播放| 一道本在线观看视频| 国产精品人人做人人爽| 欧美成人午夜激情在线| 亚洲精品国产综合久久| 欧美日韩一级二级| 50度灰在线观看| 精品伦精品一区二区三区视频密桃| 精品一区二区三区在线观看国产 | 国产精品538一区二区在线| 亚洲综合一区中| 中文字幕中文字幕在线中一区高清 | 中文字幕+乱码+中文乱码www| 四虎永久免费观看| 久久久久久久久久久免费视频| 日韩欧美一区二区三区四区五区| 国产精品美女999| 欧美极品美女电影一区| 国产亚洲精品久久久优势| 欧美日韩国产不卡| 福利一区视频在线观看| 亚洲男人天堂一区| 91视频精品在这里| 激情欧美一区二区三区在线观看| 免费看黄色一级视频| 中文人妻熟女乱又乱精品| 精品无码人妻一区二区三区品| 亚洲观看黄色网| 午夜天堂在线视频| 爱情岛论坛vip永久入口| 黄色一级片黄色| 一区不卡字幕| 日韩精品国内| 精品国产乱码久久久久软件| 91视频九色网站| 国产精品男人的天堂| 一级黄色在线观看| 日本高清www免费视频| 国产精品99久久久久久成人| 西西444www无码大胆| 制服丝袜第一页在线观看| 天堂在线一区二区三区| 一区二区三区视频在线观看免费| 国产中文字幕视频在线观看| 99久久久精品视频| 香蕉视频免费版| 最新黄色av网站| 一本久久a久久精品vr综合| 日本高清不卡一区二区三| 精品无码久久久久国产| 成人网欧美在线视频| 国产精品1区2区在线观看| 久久精品久久久久电影| 色播久久人人爽人人爽人人片视av| 亚洲美女www午夜| 国产视频丨精品|在线观看| 欧美xfplay| 精品国产乱码久久久久久闺蜜| 日韩欧美中文字幕制服| 日韩精品中文字幕在线不卡尤物| 欧美一区二区在线免费观看| 日韩美女主播在线视频一区二区三区| 欧美日韩在线观看一区二区| 欧美日韩综合在线| 色老头久久综合| 欧美视频完全免费看| 欧美剧情片在线观看| 欧美一级黄色片| 亚洲大胆人体视频| 亚洲欧美另类人妖| 播播国产欧美激情| 韩国国内大量揄拍精品视频| 97精品一区二区三区| 日韩免费中文字幕| 亚洲xxxx在线| 国产亚洲福利社区| 日产国产精品精品a∨| japanese在线播放| 免费在线观看污污视频| 中文精品视频一区二区在线观看| 神马午夜伦理影院| 欧美日韩第二页| 午夜影院免费版| 中文字幕5566| 午夜剧场免费在线观看| 在线观看亚洲欧美| 国产精品九九九九| 久久裸体视频| 国产乱子伦一区二区三区国色天香| 成人一区二区视频| 中文字幕在线观看一区二区| 污片在线观看一区二区| 欧美日韩国产另类不卡| 日韩午夜在线播放| 亚洲福利在线播放| 久久不射电影网| 国产精品国产福利国产秒拍| 国产美女91呻吟求| 欧美激情导航| 国产淫片免费看| 女人扒开双腿让男人捅| 国产欧美小视频| 色婷婷av国产精品| 狠狠综合久久av一区二区| 黄页网站大全一区二区| 国产欧美一区视频| 亚洲免费在线电影| 一本大道av一区二区在线播放| 日韩欧美中文字幕一区| 久久久精品日本| 国产视频福利一区| 涩涩涩999| 免费国产成人av| 极品人妻一区二区三区| 日本一级黄色大片| 亚洲精品无遮挡| 成人午夜在线播放| 亚洲一二三四区不卡| 精品毛片乱码1区2区3区| 日韩有码在线电影| 国产精品久久久一区| 美日韩精品免费| 996这里只有精品| 日本一二三区在线| 永久看片925tv| 国产情侣在线播放| 成人午夜视频网站| 亚洲成人777| 日韩精品在线免费播放| 国产91精品网站| 欧美一区亚洲二区| 国产九九在线观看| 麻豆视频在线免费看| 亚洲中文一区二区三区| 蜜臀av中文字幕| 久久亚洲一区二区三区明星换脸| 在线精品视频小说1| 色琪琪综合男人的天堂aⅴ视频| 国产精品大陆在线观看| 中文字幕欧美人与畜| 中文字幕一二三| 日本道在线观看| 另类小说综合欧美亚洲| 国产午夜精品一区二区三区视频| 亚洲一区二区精品视频| 亚洲国产日韩一区| 国产精品18久久久久久麻辣| 午夜啪啪福利视频| 国产不卡一二三| 中文字幕一区二区三区四区免费看| 日韩在线一区二区| 一区二区三区鲁丝不卡| 日韩欧美一级精品久久| 久久综合久久美利坚合众国| 国产免费一区二区| 国产成人黄色网址| 精品一区在线视频| 美美哒免费高清在线观看视频一区二区 | 日韩在线免费观看视频| 91色在线视频| 成年人观看网站| 国产毛片久久久久久久| 国产欧美第一页| 国产亚洲一区二区三区| 欧美一区二区三区日韩| 日本中文字幕久久看| 成人免费在线视频播放| 美女av免费看| 久久久久久久尹人综合网亚洲| 亚洲色图欧美偷拍| 亚洲а∨天堂久久精品9966| 国产日韩欧美自拍| 一级黄色香蕉视频| xxxxxx国产| 国产精品白丝av| 欧美日韩精品一区二区三区蜜桃| 91成品人片a无限观看| 欧美一区二区三区综合| 日本xxxx裸体xxxx| 亚洲系列在线观看| 国产欧美一区二区在线| 在线观看视频亚洲| 欧美日韩国产精品自在自线| 欧美极品少妇与黑人| 一区二区三区欧美在线| 手机av免费看| 国产一区二区三区成人| 成人av网址在线| 91麻豆精品久久久久蜜臀| 国产成人精品视频在线| 成人毛片一区二区| 亚欧洲精品在线视频| av电影一区二区| 亚洲国产私拍精品国模在线观看| 国产欧美一区二区三区在线看| 黄色av免费在线播放| 波多野结衣视频在线观看| 久久精品人人做人人爽人人| 亚洲欧美第一页| 一区二区不卡在线观看| 四虎永久免费在线| 影音先锋亚洲视频| 波多野结衣一二三四区| 免费国产黄色片| 欧美日韩中文字幕综合视频| 欧美在线不卡区| 欧美精品无码一区二区三区| 无码人妻精品一区二| 国产日韩欧美高清| 久久亚洲综合国产精品99麻豆精品福利| 国产911在线观看| 国产又粗又爽视频| 亚洲精品第一国产综合野| 一区二区三区福利视频| 国产性色一区二区| 欧美成人一区在线| 国产一区视频免费观看| 国产suv一区二区| 欧美在线影院一区二区| 国产精品对白一区二区三区| 久久免费成人精品视频| 一区二区日本| 国产网友自拍视频| 国产精品乱人伦| 97精品视频在线观看| 91精产国品一二三产区别沈先生| 午夜黄色小视频| 日韩视频免费直播| 日本一区免费| 久久久久久久久久免费视频| 中文字幕一区免费在线观看| 青青在线视频一区二区三区| 激情av中文字幕| 国产成人自拍高清视频在线免费播放| 国产亚洲日本欧美韩国| 国产原创中文在线观看| www.99视频| 欧美一区二区三区免费视频| 亚洲欧洲国产日韩精品| 国产乱国产乱老熟| 欧美日韩国产页| 国产九区一区在线| 久久久久久久久久久网| 一区二区三区精品| 亚洲一区二区在线播放| 中文字幕观看av| 中文字幕一区二区三区四区不卡| 国产成人亚洲精品| 加勒比一区二区| 久久综合99re88久久爱| 97色在线视频| 国产毛片毛片毛片毛片毛片毛片| 成人美女在线视频| 久久人91精品久久久久久不卡| 亚洲高清无码久久| 久久综合九色欧美综合狠狠| 2019中文字幕全在线观看| 三级黄色片网站| 久久综合九色欧美综合狠狠 | 久久99精品久久久久久水蜜桃| 欧美日韩大片在线观看| 亚洲成人精品在线观看| 欧美日本国产精品| 亚洲综合精品在线| 亚洲精品一区二区三区福利| 97超碰青青草| 国产一区二区成人久久免费影院| 欧美激情视频免费观看|