久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot 2.x 把 Guava 干掉了選擇本地緩存之王 Caffeine(推薦)

瀏覽:59日期:2023-07-26 10:36:04

環(huán)境配置:

JDK 版本:1.8 Caffeine 版本:2.8.0 SpringBoot 版本:2.2.2.RELEASE一、本地緩存介紹

緩存在日常開發(fā)中啟動至關(guān)重要的作用,由于是存儲在內(nèi)存中,數(shù)據(jù)的讀取速度是非常快的,能大量減少對數(shù)據(jù)庫的訪問,減少數(shù)據(jù)庫的壓力。

之前介紹過 Redis 這種 NoSql 作為緩存組件,它能夠很好的作為分布式緩存組件提供多個(gè)服務(wù)間的緩存,但是 Redis 這種還是需要網(wǎng)絡(luò)開銷,增加時(shí)耗。本地緩存是直接從本地內(nèi)存中讀取,沒有網(wǎng)絡(luò)開銷,例如秒殺系統(tǒng)或者數(shù)據(jù)量小的緩存等,比遠(yuǎn)程緩存更合適。

二、緩存組件 Caffeine 介紹

按 Caffeine Github 文檔描述,Caffeine 是基于 JAVA 8 的高性能緩存庫。并且在 spring5 (springboot 2.x) 后,spring 官方放棄了 Guava,而使用了性能更優(yōu)秀的 Caffeine 作為默認(rèn)緩存組件。

1、Caffeine 性能

可以通過下圖觀測到,在下面緩存組件中 Caffeine 性能是其中最好的。

Spring Boot 2.x 把 Guava 干掉了選擇本地緩存之王 Caffeine(推薦)

2、Caffeine 配置說明

參數(shù) 類型 描述 initialCapacity integer 初始的緩存空間大小 maximumSize long 緩存的最大條數(shù) maximumWeight long 緩存的最大權(quán)重 expireAfterAccess duration 最后一次寫入或訪問后經(jīng)過固定時(shí)間過期 refreshAfterWrite duration 最后一次寫入后經(jīng)過固定時(shí)間過期 refreshAfterWrite duration 創(chuàng)建緩存或者最近一次更新緩存后經(jīng)過固定的時(shí)間間隔,刷新緩存 weakKeys boolean 打開 key 的弱引用 weakValues boolean 打開 value 的弱引用 softValues boolean 打開 value 的軟引用 recordStats - 開發(fā)統(tǒng)計(jì)功能

注意:

weakValues 和 softValues 不可以同時(shí)使用。 maximumSize 和 maximumWeight 不可以同時(shí)使用。 expireAfterWrite 和 expireAfterAccess 同事存在時(shí),以 expireAfterWrite 為準(zhǔn)。3、軟引用與弱引用 軟引用: 如果一個(gè)對象只具有軟引用,則內(nèi)存空間足夠,垃圾回收器就不會回收它;如果內(nèi)存空間不足了,就會回收這些對象的內(nèi)存。 弱引用: 弱引用的對象擁有更短暫的生命周期。在垃圾回收器線程掃描它所管轄的內(nèi)存區(qū)域的過程中,一旦發(fā)現(xiàn)了只具有弱引用的對象,不管當(dāng)前內(nèi)存空間足夠與否,都會回收它的內(nèi)存

// 軟引用Caffeine.newBuilder().softValues().build();// 弱引用Caffeine.newBuilder().weakKeys().weakValues().build();三、SpringBoot 集成 Caffeine 兩種方式

SpringBoot 有倆種使用 Caffeine 作為緩存的方式:

方式一: 直接引入 Caffeine 依賴,然后使用 Caffeine 方法實(shí)現(xiàn)緩存。

方式二: 引入 Caffeine 和 Spring Cache 依賴,使用 SpringCache 注解方法實(shí)現(xiàn)緩存。

下面將介紹下,這倆中集成方式都是如何實(shí)現(xiàn)的。

Spring Boot 基礎(chǔ)就不介紹了,推薦看下這個(gè)教程:

https://github.com/javastacks/spring-boot-best-practice

四、SpringBoot 集成Caffeine 方式一

1、Maven 引入相關(guān)依賴

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> </parent> <groupId>mydlq.club</groupId> <artifactId>springboot-caffeine-cache-example-1</artifactId> <version>0.0.1</version> <name>springboot-caffeine-cache-example-1</name> <description>Demo project for Spring Boot Cache</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>

2、配置緩存配置類

import com.github.benmanes.caffeine.cache.Cache;import com.github.benmanes.caffeine.cache.Caffeine;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.concurrent.TimeUnit;@Configurationpublic class CacheConfig { @Bean public Cache<String, Object> caffeineCache() { return Caffeine.newBuilder() // 設(shè)置最后一次寫入或訪問后經(jīng)過固定時(shí)間過期 .expireAfterWrite(60, TimeUnit.SECONDS) // 初始的緩存空間大小 .initialCapacity(100) // 緩存的最大條數(shù) .maximumSize(1000) .build(); }}

3、定義測試的實(shí)體對象

import lombok.Data;import lombok.ToString;@Data@ToStringpublic class UserInfo { private Integer id; private String name; private String sex; private Integer age;}

4、定義服務(wù)接口類和實(shí)現(xiàn)類

UserInfoService

import mydlq.club.example.entity.UserInfo;public interface UserInfoService { /** * 增加用戶信息 * * @param userInfo 用戶信息 */ void addUserInfo(UserInfo userInfo); /** * 獲取用戶信息 * * @param id 用戶ID * @return 用戶信息 */ UserInfo getByName(Integer id); /** * 修改用戶信息 * * @param userInfo 用戶信息 * @return 用戶信息 */ UserInfo updateUserInfo(UserInfo userInfo); /** * 刪除用戶信息 * * @param id 用戶ID */ void deleteById(Integer id);}

UserInfoServiceImpl

import com.github.benmanes.caffeine.cache.Cache;import lombok.extern.slf4j.Slf4j;import mydlq.club.example.entity.UserInfo;import mydlq.club.example.service.UserInfoService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.util.StringUtils;import java.util.HashMap;@Slf4j@Servicepublic class UserInfoServiceImpl implements UserInfoService { /** * 模擬數(shù)據(jù)庫存儲數(shù)據(jù) */ private HashMap<Integer, UserInfo> userInfoMap = new HashMap<>(); @Autowired Cache<String, Object> caffeineCache; @Override public void addUserInfo(UserInfo userInfo) { log.info('create'); userInfoMap.put(userInfo.getId(), userInfo); // 加入緩存 caffeineCache.put(String.valueOf(userInfo.getId()),userInfo); } @Override public UserInfo getByName(Integer id) { // 先從緩存讀取 caffeineCache.getIfPresent(id); UserInfo userInfo = (UserInfo) caffeineCache.asMap().get(String.valueOf(id)); if (userInfo != null){ return userInfo; } // 如果緩存中不存在,則從庫中查找 log.info('get'); userInfo = userInfoMap.get(id); // 如果用戶信息不為空,則加入緩存 if (userInfo != null){ caffeineCache.put(String.valueOf(userInfo.getId()),userInfo); } return userInfo; } @Override public UserInfo updateUserInfo(UserInfo userInfo) { log.info('update'); if (!userInfoMap.containsKey(userInfo.getId())) { return null; } // 取舊的值 UserInfo oldUserInfo = userInfoMap.get(userInfo.getId()); // 替換內(nèi)容 if (!StringUtils.isEmpty(oldUserInfo.getAge())) { oldUserInfo.setAge(userInfo.getAge()); } if (!StringUtils.isEmpty(oldUserInfo.getName())) { oldUserInfo.setName(userInfo.getName()); } if (!StringUtils.isEmpty(oldUserInfo.getSex())) { oldUserInfo.setSex(userInfo.getSex()); } // 將新的對象存儲,更新舊對象信息 userInfoMap.put(oldUserInfo.getId(), oldUserInfo); // 替換緩存中的值 caffeineCache.put(String.valueOf(oldUserInfo.getId()),oldUserInfo); return oldUserInfo; } @Override public void deleteById(Integer id) { log.info('delete'); userInfoMap.remove(id); // 從緩存中刪除 caffeineCache.asMap().remove(String.valueOf(id)); }}

5、測試的 Controller 類

import mydlq.club.example.entity.UserInfo;import mydlq.club.example.service.UserInfoService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;@RestController@RequestMappingpublic class UserInfoController { @Autowired private UserInfoService userInfoService; @GetMapping('/userInfo/{id}') public Object getUserInfo(@PathVariable Integer id) { UserInfo userInfo = userInfoService.getByName(id); if (userInfo == null) { return '沒有該用戶'; } return userInfo; } @PostMapping('/userInfo') public Object createUserInfo(@RequestBody UserInfo userInfo) { userInfoService.addUserInfo(userInfo); return 'SUCCESS'; } @PutMapping('/userInfo') public Object updateUserInfo(@RequestBody UserInfo userInfo) { UserInfo newUserInfo = userInfoService.updateUserInfo(userInfo); if (newUserInfo == null){ return '不存在該用戶'; } return newUserInfo; } @DeleteMapping('/userInfo/{id}') public Object deleteUserInfo(@PathVariable Integer id) { userInfoService.deleteById(id); return 'SUCCESS'; }}五、SpringBoot 集成 Caffeine 方式二

1、Maven 引入相關(guān)依賴

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> </parent> <groupId>mydlq.club</groupId> <artifactId>springboot-caffeine-cache-example-2</artifactId> <version>0.0.1</version> <name>springboot-caffeine-cache-example-2</name> <description>Demo project for Spring Boot caffeine</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>

2、配置緩存配置類

@Configurationpublic class CacheConfig { /** * 配置緩存管理器 * * @return 緩存管理器 */ @Bean('caffeineCacheManager') public CacheManager cacheManager() { CaffeineCacheManager cacheManager = new CaffeineCacheManager(); cacheManager.setCaffeine(Caffeine.newBuilder() // 設(shè)置最后一次寫入或訪問后經(jīng)過固定時(shí)間過期 .expireAfterAccess(60, TimeUnit.SECONDS) // 初始的緩存空間大小 .initialCapacity(100) // 緩存的最大條數(shù) .maximumSize(1000)); return cacheManager; }}

3、定義測試的實(shí)體對象

@Data@ToStringpublic class UserInfo { private Integer id; private String name; private String sex; private Integer age;}

4、定義服務(wù)接口類和實(shí)現(xiàn)類

服務(wù)接口

import mydlq.club.example.entity.UserInfo;public interface UserInfoService { /** * 增加用戶信息 * * @param userInfo 用戶信息 */ void addUserInfo(UserInfo userInfo); /** * 獲取用戶信息 * * @param id 用戶ID * @return 用戶信息 */ UserInfo getByName(Integer id); /** * 修改用戶信息 * * @param userInfo 用戶信息 * @return 用戶信息 */ UserInfo updateUserInfo(UserInfo userInfo); /** * 刪除用戶信息 * * @param id 用戶ID */ void deleteById(Integer id);}

服務(wù)實(shí)現(xiàn)類

import lombok.extern.slf4j.Slf4j;import mydlq.club.example.entity.UserInfo;import mydlq.club.example.service.UserInfoService;import org.springframework.cache.annotation.CacheConfig;import org.springframework.cache.annotation.CacheEvict;import org.springframework.cache.annotation.CachePut;import org.springframework.cache.annotation.Cacheable;import org.springframework.stereotype.Service;import org.springframework.util.StringUtils;import java.util.HashMap;@Slf4j@Service@CacheConfig(cacheNames = 'caffeineCacheManager')public class UserInfoServiceImpl implements UserInfoService { /** * 模擬數(shù)據(jù)庫存儲數(shù)據(jù) */ private HashMap<Integer, UserInfo> userInfoMap = new HashMap<>(); @Override @CachePut(key = '#userInfo.id') public void addUserInfo(UserInfo userInfo) { log.info('create'); userInfoMap.put(userInfo.getId(), userInfo); } @Override @Cacheable(key = '#id') public UserInfo getByName(Integer id) { log.info('get'); return userInfoMap.get(id); } @Override @CachePut(key = '#userInfo.id') public UserInfo updateUserInfo(UserInfo userInfo) { log.info('update'); if (!userInfoMap.containsKey(userInfo.getId())) { return null; } // 取舊的值 UserInfo oldUserInfo = userInfoMap.get(userInfo.getId()); // 替換內(nèi)容 if (!StringUtils.isEmpty(oldUserInfo.getAge())) { oldUserInfo.setAge(userInfo.getAge()); } if (!StringUtils.isEmpty(oldUserInfo.getName())) { oldUserInfo.setName(userInfo.getName()); } if (!StringUtils.isEmpty(oldUserInfo.getSex())) { oldUserInfo.setSex(userInfo.getSex()); } // 將新的對象存儲,更新舊對象信息 userInfoMap.put(oldUserInfo.getId(), oldUserInfo); // 返回新對象信息 return oldUserInfo; } @Override @CacheEvict(key = '#id') public void deleteById(Integer id) { log.info('delete'); userInfoMap.remove(id); }}

5、測試的 Controller 類

import mydlq.club.example.entity.UserInfo;import mydlq.club.example.service.UserInfoService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;@RestController@RequestMappingpublic class UserInfoController { @Autowired private UserInfoService userInfoService; @GetMapping('/userInfo/{id}') public Object getUserInfo(@PathVariable Integer id) { UserInfo userInfo = userInfoService.getByName(id); if (userInfo == null) { return '沒有該用戶'; } return userInfo; } @PostMapping('/userInfo') public Object createUserInfo(@RequestBody UserInfo userInfo) { userInfoService.addUserInfo(userInfo); return 'SUCCESS'; } @PutMapping('/userInfo') public Object updateUserInfo(@RequestBody UserInfo userInfo) { UserInfo newUserInfo = userInfoService.updateUserInfo(userInfo); if (newUserInfo == null){ return '不存在該用戶'; } return newUserInfo; } @DeleteMapping('/userInfo/{id}') public Object deleteUserInfo(@PathVariable Integer id) { userInfoService.deleteById(id); return 'SUCCESS'; }}

參考地址:

https://www.jianshu.com/p/c72fb0c787fchttps://www.cnblogs.com/rickiyang/p/11074158.htmlhttps://github.com/my-dlq/blog-example/tree/master/springboot/springboot-caffeine-cache-example

到此這篇關(guān)于Spring Boot 2.x 把 Guava 干掉了選擇本地緩存之王 Caffeine的文章就介紹到這了,更多相關(guān)Spring Boot 2.x Caffeine內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 亚洲一区二区在线看 | 亚洲中午字幕 | 久久婷婷欧美 | 一级片免费视频 | 国产精品欧美一区二区三区 | 国产精品毛片久久久久久久 | 日韩精品一区二区三区中文在线 | 日韩视频中文字幕在线观看 | 中文字幕亚洲欧美精品一区四区 | 亚洲三区视频 | 日韩成人视屏 | 午夜精品久久久久久久99黑人 | 狠狠综合久久 | 国产一区二区自拍 | 四虎永久免费在线 | 精品一区二区三区四区 | 日韩性在线 | 免费成人在线视频网站 | 九九热这里只有 | 久久久婷| 国产欧美综合一区二区三区 | 亚洲精品乱码久久久久久按摩观 | 人人爱超碰 | 国产成人高清视频 | 午夜免费网 | 久久久久久影院 | 国产在线观看免费 | 精品久久久久久亚洲精品 | www.毛片| 一二三区av | 色综合一区二区三区 | 做a视频在线观看 | 日本三级精品视频 | 日韩欧美二区 | 色爱综合 | 91亚洲一区 | 久久777| 国产精品久久久久久久久久久小说 | 久久免费国产 | 国产三级电影 | 青青久久久 | 亚洲综合在线播放 | 国产精品久久久久一区二区三区 | 免费成人高清 | 91精品国产综合久久久久久漫画 | 91中文在线 | 免费一级在线观看 | 91精品国产综合久久久久久蜜臀 | 国产在线在线 | av影片在线| 欧美视频一二 | 在线播放亚洲 | 香蕉大人久久国产成人av | 久久综合社区 | 久久国产精品99久久久久久老狼 | 午夜影院黄色 | 奇米av| 在线日本中文字幕 | 干狠狠| 精品国产色 | 美女黄网站视频免费 | 91亚洲国产 | 精品久久国产 | 欧美日韩视频在线第一区 | 免费观看视频毛片 | 中文字幕在线三区 | 国产麻豆乱码精品一区二区三区 | 欧美一区二区三区aa大片漫 | 久久精品欧美一区二区三区不卡 | 国产成人综合网 | 国产亚洲欧美一区 | 久久久久久艹 | 国产精品99久久久久久动医院 | 一区二区三区四区在线播放 | 一本一本久久a久久精品综合妖精 | 日韩精品一区二 | 一区二区网站 | 欧洲一级毛片 | 一区二区三区视频在线观看 | 国产精品永久在线 | 性一级录像片片视频免费看 | 国产精品久久久久久妇女6080 | 色综合久久久久综合99 | www.日本三级| 成人免费网站在线观看 | 亚洲精品电影在线一区 | 自拍偷拍亚洲欧洲 | 99视频免费看 | 免费欧美一级 | 国产欧美高清在线观看 | 美女视频一区 | 综合久久久 | 亚洲 欧美日韩 国产 中文 | 国产精品一区二区视频 | 中文字幕在线播放一区 | 91久久艹 | 成人av网站免费观看 | 97国产精品 | 天天拍天天草 | 精品视频在线免费 | 午夜精品福利一区二区三区蜜桃 | 91精品国产综合久久久久久丝袜 | 日韩在线免费 | 欧美成人精品在线观看 | 伊人网在线视频 | 性人久久精品 | 成人av在线播放 | 一区二区亚洲 | 亚洲网站在线观看 | 久久国产高清 | 日韩高清在线 | av观看免费 | 精国产品一区二区三区 | 亚洲成人一区二区三区 | 欧美成人第一页 | 久久日韩| 三区中文字幕 | bxbx成人精品一区二区三区 | 国产精品夜夜 | 亚洲欧洲一区二区三区 | 欧美日韩毛片 | 一级片av | 国产精品久久久久久久 | 久久国产精品精品国产 | 精品久久久久久久久久久久 | 99re视频| 久久亚洲综合 | 色猫猫国产区一区二在线视频 | 婷婷综合激情 | 国产成人精品一区二区在线 | 欧美日韩激情 | www,四虎| 在线色站 | 欧美一级黄色大片 | 亚洲视频三区 | 黄视频在线播放 | 99在线视频精品 | 久久精彩视频 | 成人做爰69片免费 | 一级片在线观看 | 粉嫩av网站 | 中文亚洲欧美 | 国产一级特黄aaa大片评分 | 国产成人一区二区三区 | 国产有码| 国产成人综合一区二区三区 | 成年人免费看片 | 久久久国色 | 欧美一a一片一级一片 | 97视频观看 | 特黄一级 | 日韩欧美在线观看一区 | 日韩av电影在线免费观看 | h在线看 | 女同理伦片在线观看禁男之园 | 成人免费在线观看 | 国产剧情一区二区 | 国产区视频 | 欧美日韩福利 | 国产免费久久 | 国产精品久久久久久久久免费 | 成人在线国产 | 日韩精品视频网 | 久久免费小视频 | 国产精品视屏 | 国内精品一区二区 | 国产精品久久久久久久 | 亚洲视频1区 | 成人h动漫精品一区二区器材 | 国产精品久久久久毛片软件 | 九九九九九九精品任你躁 | 97色综合| 日本视频一区二区三区 | 999这里只有精品 | 夜本色| 国产精品美女久久久久久久久久久 | 天天综合网久久综合网 | 久久国产精品视频一区 | 中文字幕爱爱视频 | 国产亚洲精品久久久久久豆腐 | 日韩精品专区在线影院重磅 | 国产网站在线播放 | 午夜私人影院 | 国产第一区在线观看 | 国产精品日韩 | www.夜夜操.com| 99精品久久久久久久免费 | 黄色高清视频在线观看 | 国产视频999 | 五月婷婷导航 | 成人午夜视频在线观看 | 日韩欧美在线免费观看 | 欧美日韩综合视频 | 亚洲精品乱码久久久久久金桔影视 | 国产一区二区观看 | 国产精品爱久久久久久久 | 欧美精品一区二 | 91免费在线视频 | 日本在线观看一区二区 | 狠狠搞狠狠干 | 成人av一区二区三区 | 成人免费福利 | 国产精品成人国产乱一区 | av免费黄色| 国产中文字幕一区 | 午夜激情av| 在线色网站| 国产一区二区三区网站 | 中文字幕av一区二区三区免费看 | 国产福利一区二区 | 久久国产一区二区 | 成人午夜免费视频 | 视频一区久久 | 久久精品国产免费 | av大片| 国产精品日韩专区 | 中文字幕乱码亚洲精品一区 | 日韩欧美精品在线 | 欧美一级视频 | 亚洲一区二区三区四区五区午夜 | 久久精品国产99国产 | 日韩久久久久久 | 91精品国产91久久久久久吃药 | 欧美中文字幕一区 | 91在线视频播放 | 97久久久 | 一区二区三区在线播放 | 中文字幕第一页在线 | 国产999精品久久久久 | 欧美日韩精品一区二区三区在线观看 | 欧美视频网站 | 亚洲精品乱码久久久久久 | 成人动慢 | 国产精品久久久久久久久久小说 | 欧美极品视频 | 婷婷五综合 | 日韩不卡一区二区 | 黄色一级视频 | 黄色av观看| 二区三区在线观看 | 久久99精品国产91久久来源 | 精品久久久一区二区 | 国产99一区二区 | 91视频大全 | 免费一区| 日韩一区二区精品视频 | 国产一区在线看 | 中文字幕av网| 涩涩视频在线看 | 一区二区日韩精品 | 日韩不卡av | 亚洲永久免费 | 国产精品中文字幕在线 | 国产精品视频 | 午夜资源| 91九色在线 | 亚洲另类视频 | 久草电影网 | 成人1区2区 | 国产精品久久久久久久电影 | 一卡二卡久久 | 国产视频久久久久久久 | 亚洲精品一区国产精品 | 天天干夜夜操 | 中文字幕天天操 | 91午夜在线 | 国产精品极品美女在线观看免费 | 日本午夜影院 | 国产第一亚洲 | 亚洲二区在线 | 精品久久久久久亚洲精品 | 国产精品一区二区在线观看 | 99精品全国免费观看视频软件 | 亚洲国产精品一区二区三区 | 超碰一区二区三区 | 久久午夜视频 | 亚洲综合在线播放 | 亚洲高清av| 亚洲欧美激情精品一区二区 | 日韩精品在线一区 | 午夜精 | 亚洲精选一区 | 欧美一区免费 | 91成人一区 | 久久天堂 | 国产永久免费 | 精品一区二区久久久久久久网站 | 久久极品 | 精品久久久久久 | 日韩欧美精品区 | 日韩欧美国产电影 | 午夜看片 | 国产精品久久国产愉拍 | 亚洲成人日本 | 午夜精品久久久久久久男人的天堂 | 国产精品久久久久久久岛一牛影视 | 一区二区三区在线播放 | 国产成人免费 | 成人午夜精品久久久久久久3d | 亚洲精品国产9999久久久久 | 欧美一级电影免费观看 | 97av在线视频 | 久久中文视频 | www.狠狠干 | 午夜视频在线播放 | 黄色片免费观看 | 中文字幕久久精品 | 国产精品无码久久久久 | 欧美福利二区 | 欧美,日韩,国产精品免费观看 | 欧美综合区 | 一级毛片大全免费播放 | 中文字幕一区二区三区乱码在线 | 亚洲精品乱码久久久久久久 | 亚洲精品一区二区三区樱花 | 中国一级大黄大黄大色毛片 | 国产精品自拍一区 | 亚洲精品乱码8久久久久久日本 | 亚洲精品18 | 国产91久久久 | 欧美在线视频一区二区 | 毛片在线视频 | 国产农村妇女精品 | 久久这里只有精品首页 | 一级毛片免费观看 | 免费观看av毛片 | 国产宾馆自拍 | 久久在线视频 | 亚洲精品一区二区三区在线播放 | 国产午夜精品久久久久久久 | 国产不卡视频在线观看 | 久久2018| 成人在线精品视频 | 国产91视频在线观看 | 天天干国产 | 国产在线观看欧美 | 91在线免费看 | 国产亚洲精品v | 性做久久久久久 | 国产精品一区二区在线 | 日本黄色短片 | 欧洲国产伦久久久久久久 | 在线视频一区二区三区 | 91精品国产乱码久久久久久 | 91久久精品久久国产性色也91 | 久久精品中文字幕 | 欧美成人a | 国产精品久久久久久久久免费 | 亚洲国产精品va在线看黑人 | 亚洲精品不卡 | 免费在线观看av的网站 | 日韩成人在线一区 | 久久久久国产精品免费免费搜索 | 久久成人午夜 | 国产三级| 男人久久天堂 | 狠狠干干| 日韩精品99久久久久中文字幕 | 看亚洲a级一级毛片 | 欧洲精品在线观看 | 国产精国产精品 | 美日韩一区二区 | 国产美女福利在线 | 国产高清在线精品 | 日韩一级av毛片 | 亚洲第一成人在线视频 | 久久久久国产一区二区三区四区 | 操操操小说 | 国产一级色 | 日韩在线一区二区三区 | 久久久久久国产一级毛片高清版 | 日本天天操 | 不卡av电影在线观看 | 成人欧美一区二区 | 亚洲精品免费观看 | 欧美激情视频一区二区三区在线播放 | 欧美一区二区三 | 国产视频网 | 日本欧美在线 | 日本三级视频 | 欧美综合网 | 国产精品美女www爽爽爽软件 | 视频精品一区 | 欧美久久免费观看 | 人人爽视频 | 一级毛片电影 | 51ⅴ精品国产91久久久久久 | 97在线免费观看 | av片在线观看 | 国产免费一区二区三区 | 免费国产黄网站在线观看视频 | 自拍偷拍第一页 | 久久久久久久久一区二区三区 | 在线观看国产视频 | a√天堂资源在线 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 免费一区二区 | 国产日韩一区二区三区 | 国产成人一区二区 | 日韩成人在线视频 | 亚洲成人av一区二区三区 | 国产精品久久久久久久久久小说 | 亚欧毛片 | 81精品国产乱码久久久久久 | 欧美亚洲高清 | 日产精品久久 | 99爱在线观看 | www.99热这里只有精品 | 免费成人在线观看视频 | 国产成人免费视频网站视频社区 | 精品视频久久 | 国产小视频在线观看 | 日韩在线一区二区三区 | 天天拍天天草 | 国产精品永久在线 | 欧美成在线观看 | 国产欧美日韩综合精品一区二区 | av一区二区三区四区 | 日韩极品在线 | 午夜精品一区二区三区在线播放 | 福利片在线观看 | 欧美高清成人 | 精品成人佐山爱一区二区 | 国产中文视频 | 国产免费一区二区三区网站免费 | 久久九九国产精品 | 色婷婷国产精品久久包臀 | av中文字幕在线 | 午夜精品久久久久久久白皮肤 | 亚洲国产精品人人爽夜夜爽 | 91av视频在线观看 | 欧美综合区 | 国产视频一二三区 | 国产精品久久久久久久久 | 成人欧美一区二区三区在线观看 | 日韩在线小视频 | 日本在线一二 | 红色av社区 | 99看| 一级做a爰片性色毛片2021 | 国产精品视频入口 | 奇米影视77 | 天天干国产 | 谁有毛片 | 久久国产精品无码网站 | 91在线中文| 欧美亚洲另类在线 | 久久综合一区二区三区 | 免费日韩精品 | 天天久久| 久久精品成人一区二区三区蜜臀 | 午夜成人免费视频 | 播放毛片 | 亚洲欧美国产精品专区久久 | 国产一区二区三区在线 | 亚洲综合视频 | 午夜精品久久久久久99热软件 | 骚黄视频 | 成人精品免费视频 | 成人看片在线 | 日韩精品一区二区三区 | 国产精品对白一区二区三区 | 亚洲高清视频一区二区三区 | 国产精品高清在线观看 | 亚洲天堂电影网 | 色性网站 | 色中色综合 | 久久久久久国产精品久久 | 成人免费一区 | 国产99久久精品一区二区永久免费 | 一区三区视频 | 欧美一区二区在线看 | 91久久精品日日躁夜夜躁欧美 | 日韩欧美一区二区三区久久婷婷 | 午夜寂寞少妇aaa片毛片 | 一区二区三区日韩在线 | 亚洲一区在线日韩在线深爱 | 一区二区三区在线播放 | 国产区视频在线观看 | 成人在线视频免费观看 | 波多野结衣av中文字幕 | 国产精品久久久久久久久久三级 | 视频羞羞 | 欧美一级精品片在线看 | 久久福利| 国产精品久久久久久吹潮 | 国产成人精品电影 | 国产激情在线观看 | 中文字幕国产 | 日韩中文字幕av在线 | 超碰香蕉 | 日韩中文视频 | 亚洲欧美在线观看 | 最新中文字幕视频 | 成年免费a级毛片 | 青青草网 | 天天色天天射天天操 | 国产精品成人av | 一级毛片免费看 | 色综合久| 国产一区在线看 | 国产日韩欧美一区 | 九九亚洲 | 奇米影视77| 91婷婷射 | 中文字幕综合 | 久久久99久久 | 韩国成人精品a∨在线观看 国产伊人av | 久久日本视频 | 精品视频一区二区三区四区 | 中出片 | 国产伦精品一区二区 | 久久国产久| 日韩av在线不卡 | 色综合天天| 蜜桃在线视频 | 国产一区二区免费视频 | 午夜视频网站 | 精品一区在线 | 乱人伦xxxx国语对白 | 国产精品久久一区 | 日韩精品一区二区三区在线播放 | 美女国产精品 | 91精品久久 | 欧美女优在线视频 | 日韩视频一区在线观看 | 色小妹三区 | 一区二区三区在线播放视频 | 最新国产视频 | 美女91| 久久久久免费精品视频 | 国偷自产av一区二区三区 | 在线播放国产视频 | 亚洲欧美影院 | 亚洲精品一区中文字幕乱码 | 亚洲一区av | 性生活毛片| 青青久久久 | 97视频在线免费观看 | 在线观看日韩 | 在线精品国产 | 欧美在线网站 | 国产精品久久久av | 日本69视频 | 国产真实精品久久二三区 | 国产1页| 成人在线观看av | 国产中文字幕在线 | 在线观看免费视频黄 | 欧美天堂在线观看 | 国产精品25p | 91精品国产综合久久久久久丝袜 | 亚洲第一天堂无码专区 | 欧美一级免费观看 | 久久99精品久久久久久琪琪 | 一区在线视频观看 | 亚洲在线视频 | 国产日韩欧美一区二区在线观看 | 日本色道视频 | 午夜精品福利一区二区三区蜜桃 | 91精品国产综合久久久久久丝袜 | 中国毛片基地 | 黄色国产精品 | 日韩精品一区二区三区中文在线 | 成年人看的羞羞网站 | 91在线视频观看 | 中文在线一区 | 国产在线观看一区二区 | 久久久久久一区二区 | 欧美与黑人午夜性猛交久久久 | 国产另类一区 | 国产精品久久久久久久 | 国产精品一区二区三区四区 | 玖玖色资源| 欧美一区二区精品 | 韩国精品主播一区二区在线观看 | 免费视频一区 | 天天曰天天干 | 亚洲一区二区三区四区五区中文 | 亚洲免费观看视频 | 午夜影院a | 91短视频版在线观看www免费 | 中文字幕国产日韩 | 成人影院欧美黄色 | 毛片网站在线观看 | 午夜影晥| 精品亚洲自拍 | 海外中文字幕在线观看 | 日韩一区二区三区在线视频 | 国产成人福利 | 最近最新中文字幕 | 伊人超碰 | 国产成人精品免高潮在线观看 | 亚洲精品乱码久久久久久金桔影视 | 亚洲巨乳自拍在线视频 | 男女啪啪高清无遮挡 | 久久国产综合 | 欧美日韩干 | 日韩一区在线视频 | 精产国产伦理一二三区 | 一区二区精品在线 | 国产精品一区二区三区四区五区 | 久久人| 红桃成人少妇网站 | 97超碰免费| 一级二级黄色大片 | 精品国产不卡一区二区三区 | 久久伊人草 | 欧美日韩中字 | 可以在线观看的av网站 | 亚洲毛片 | 亚洲伊人久久综合 | 免费毛片视频 | 中文字幕欧美日韩 | 精品国产欧美一区二区 |