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

您的位置:首頁技術文章
文章詳情頁

Spring Cache和EhCache實現緩存管理方式

瀏覽:257日期:2023-07-10 13:01:05
目錄1、認識 Spring Cache2、認識 EhCache3、創建SpringBoot與MyBatis的整合項目3.1 創建數據表3.2 創建項目4、配置EhCache緩存管理器4.1 創建 ehcache.xml 配置文件4.2 配置緩存管理器4.3 開啟緩存功能5、使用EhCache實現緩存管理5.1 創建實體類(Entity層)5.2 數據庫映射層(Mapper層)5.3 業務邏輯層(Service層)5.4 控制器方法(Controller層)5.5 顯示頁面(View層)1、認識 Spring Cache

Spring Cache是Spring提供的一整套緩存解決方案。它本身并不提供緩存實現,而是提供統一的接口和代碼規范、配置、注解等,以便整合各種Cache方案,使用戶不用關心Cache的細節。

Spring支持“透明”地向應用程序添加緩存,將緩存應用于方法,在方法執行前檢查緩存中是否有可用的數據。這樣可以減少方法執行的次數,同時提高響應的速度。緩存的應用方式“透明”,不會對調用者造成任何干擾。只要通過注解@EnableCaching啟用了緩存支持,Spring Boot就會自動處理好緩存的基礎配置。

Spring Cache作用在方法上。當調用一個緩存方法時,會把該方法參數和返回結果作為一個“鍵值對”(key / value)存放在緩存中,下次用同樣的參數來調用該方法時將不再執行該方法,而是直接從緩存中獲取結果進行返回。所以在使用Spring Cache時,要保證在緩存的方法和方法參數相同時返回相同的結果。

Spring Boot提供的聲明式緩存(cache)注解,如下表:

注解 說明 @EnableCaching 開啟緩存。 @Cacheable 可以作用在類和方法上,以鍵值對的方式緩存類或方法的返回值。 @CachePut 方法被調用,然后結果被緩存。 @CacheEvict 清空緩存。 @Caching 用來組合多個注解標簽。 2、認識 EhCache

Spring Boot支持多種不同的緩存產品。在默認情況下使用的是簡單緩存,不建議在正式環境中使用。我們可以配置一些更加強大的緩存,比如Ehcache。

Ehcache是一種廣泛使用的開源Java分布式緩存,它具有內存和磁盤存儲、緩存加載器、緩存擴展、緩存異常處理、GZIP緩存、Servlet 過濾器,以及支持 REST 和 SOAP API 等特點。

3、創建SpringBoot與MyBatis的整合項目

【實例】創建SpringBoot與MyBatis的整合項目,實現用戶信息的查詢、新增、修改、刪除功能。并使用 Spring Cache 和 EhCache 實現緩存管理,執行結果如下圖:

Spring Cache和EhCache實現緩存管理方式

3.1 創建數據表

在MySQL數據庫中創建用戶信息表(tb_user),并添加數據。

-- 判斷數據表是否存在,存在則刪除DROP TABLE IF EXISTS tb_user; -- 創建“用戶信息”數據表CREATE TABLE IF NOT EXISTS tb_user( user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT ’用戶編號’,user_name VARCHAR(50) NOT NULL COMMENT ’用戶姓名’,age INT DEFAULT(0) NOT NULL COMMENT ’年齡’,blog_url VARCHAR(50) NOT NULL COMMENT ’博客地址’,blog_remark VARCHAR(50) COMMENT ’博客信息’) COMMENT = ’用戶信息表’; -- 添加數據INSERT INTO tb_user(user_name,age,blog_url,blog_remark) VALUES(’pan_junbiao的博客’,32,’https://blog.csdn.net/pan_junbiao’,’您好,歡迎訪問 pan_junbiao的博客’);3.2 創建項目

(1)創建SpringBoot項目,項目結構如下圖:

Spring Cache和EhCache實現緩存管理方式

(2)添加pom.xml配置信息

在pom.xml配置文件中添加MyBatis、 MySQL的JDBC數據庫驅動、Spring Boot 緩存支持啟動器、Ehcache 緩存等。

<!-- MyBatis與SpringBoot整合依賴 --><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version></dependency> <!-- MySQL的JDBC數據庫驅動 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.20</version></dependency> <!-- 引入Thymeleaf模板引擎 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> <!-- Spring Boot緩存支持啟動器 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> <version>2.3.2.RELEASE</version></dependency> <!-- Ehcache緩存管理器 --><dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId></dependency>

(3)配置相關信息

將默認的application.properties文件的后綴修改為“.yml”,即配置文件名稱為:application.yml,并配置以下信息:

#Spring配置spring: #緩存管理器 cache: type: ehcache ehcache: config: classpath:ehcache.xml #緩存加載配置文件 #使用Thymeleaf模板引擎 thymeleaf: mode: HTML5 encoding: UTF-8 cache: false #使用Thymeleaf模板引擎,關閉緩存 servlet: content-type: text/html #DataSource數據源 datasource: url: jdbc:mysql://localhost:3306/db_admin?useSSL=false&amp username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver #MyBatis配置mybatis: type-aliases-package: com.pjb.entity #別名定義 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #指定 MyBatis 所用日志的具體實現,未指定時將自動查找 map-underscore-to-camel-case: true #開啟自動駝峰命名規則(camel case)映射 lazy-loading-enabled: true #開啟延時加載開關 aggressive-lazy-loading: false #將積極加載改為消極加載(即按需加載),默認值就是false #lazy-load-trigger-methods: '' #阻擋不相干的操作觸發,實現懶加載 cache-enabled: true #打開全局緩存開關(二級環境),默認值就是true4、配置EhCache緩存管理器4.1 創建 ehcache.xml 配置文件

在 resources (資源目錄)下,創建 ehcache.xml 配置文件,配置信息如下:

<ehcache xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='../config/ehcache.xsd'> <!-- 這個是磁盤存儲路徑,當內存緩存滿了的時候,就會往這里面放, java.io.tmdir是操作系統緩存的臨時目錄,不同操作系統緩存目錄不一樣 --> <diskStore path='java.io.tmpdir'/> <!--defaultCache:echcache的默認緩存策略 --> <defaultCache maxElementsInMemory='10000' eternal='false' timeToIdleSeconds='120' timeToLiveSeconds='120' maxElementsOnDisk='10000000' diskExpiryThreadIntervalSeconds='120' memoryStoreEvictionPolicy='LRU'><persistence strategy='localTempSwap'/> </defaultCache> <cache name='userCache' maxElementsInMemory='10000' eternal='false' timeToIdleSeconds='120' timeToLiveSeconds='120' maxElementsOnDisk='10000000' diskExpiryThreadIntervalSeconds='120' memoryStoreEvictionPolicy='LRU'><persistence strategy='localTempSwap'/> </cache></ehcache>

配置屬性說明:

屬性 說明 <diskStore path='java.io.tmpdir'/> 這個是磁盤存儲路徑,當內存緩存滿了的時候,就會往這里面放,java.io.tmdir是操作系統緩存的臨時目錄,不同操作系統緩存目錄不一樣。 maxElementsInMemory 內存緩存中最多可以存放的元素數量,若放入Cache中的元素超過這個數值,則有以下兩種情況: (1)若 overflowToDisk=true,則會將Cache中多出的元素放入磁盤文件中。 (2)若 overflowToDisk=false,則根據memoryStoreEvictionPolicy策略替換Cache中原有的元素。 overflowToDisk 內存不足時,是否啟用磁盤緩存。 eternal 緩存中對象是否永久有效。 timeToIdleSeconds 緩存數據在失效前的允許閑置時間(單位:秒),僅當 eternal=false 時使用,默認值是0表示可閑置時間無窮大,若超過這個時間沒有訪問此Cache中的某個元素,那么此元素將被從Cache中清除。 timeToLiveSeconds 緩存數據的總的存活時間(單位:秒),僅當 eternal=false 時使用,從創建開始計時,失效結束。 maxElementsOnDisk 磁盤緩存中最多可以存放的元素數量,0表示無窮大。 diskExpiryThreadIntervalSeconds 磁盤緩存的清理線程運行間隔,默認是120秒。 memoryStoreEvictionPolicy 內存存儲與釋放策略,即達到 maxElementsInMemory 限制時,Ehcache會根據指定策略清理內存,共有三種策略,分別為LRU(最近最少使用)、LFU(最常用的)、FIFO(先進先出)。 defaultCache 默認緩存方式。 cache 自定義的緩存方式,自行設置 name。 4.2 配置緩存管理器

在 application.yml 配置文件中配置目標緩存管理器,支持 Ehcache、Generic、Redis、Jcache等。這里配置使用Ehcache。

#Spring配置spring: #緩存管理器 cache: type: ehcache ehcache: config: classpath:ehcache.xml #緩存加載配置文件4.3 開啟緩存功能

在SpringBoot項目啟動入口類中添加注解@EnableCaching,開啟緩存功能。

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cache.annotation.EnableCaching; @SpringBootApplication@EnableCachingpublic class SpringcacheDemoApplication{ public static void main(String[] args) {SpringApplication.run(SpringcacheDemoApplication.class, args); }}5、使用EhCache實現緩存管理5.1 創建實體類(Entity層)

在com.pjb.entity包中,創建UserInfo類(用戶信息實體類)。

package com.pjb.entity; import java.io.Serializable; /** * 用戶信息實體類 * @author pan_junbiao **/public class UserInfo implements Serializable{ private int userId; //用戶編號 private String userName; //用戶姓名 private int age; //年齡 private String blogUrl; //博客地址 private String blogRemark; //博客信息 //省略getter與setter方法...}

注意:實體類必須實現 Serializable 接口,否則無法實現緩存功能。

5.2 數據庫映射層(Mapper層)

在com.pjb.mapper包中,創建UserMapper接口(用戶信息Mapper動態代理接口)。

package com.pjb.mapper; import com.pjb.entity.UserInfo;import org.apache.ibatis.annotations.*;import org.springframework.stereotype.Repository; /** * 用戶信息Mapper動態代理接口 * @author pan_junbiao **/@Mapper@Repositorypublic interface UserMapper{ /** * 根據用戶ID,獲取用戶信息 */ @Select('SELECT * FROM tb_user WHERE user_id = #{userId}') public UserInfo getUserById(int userId); /** * 新增用戶,并獲取自增主鍵 */ @Insert('INSERT INTO tb_user(user_name,age,blog_url,blog_remark) VALUES(#{userName},#{age},#{blogUrl},#{blogRemark});') @Options(useGeneratedKeys = true, keyColumn = 'user_id', keyProperty = 'userId') public int insertUser(UserInfo userInfo); /** * 修改用戶 */ @Update('UPDATE tb_user SET user_name = #{userName} ,age = #{age} ,blog_url = #{blogUrl} ,blog_remark = #{blogRemark} WHERE user_id = #{userId}') public int updateUser(UserInfo userInfo); /** * 刪除用戶 */ @Delete('DELETE FROM tb_user WHERE user_id = #{userId}') public int deleteUser(int userId);}5.3 業務邏輯層(Service層)

在com.pjb.service包下,創建UserService接口(用戶信息業務邏輯接口)。

package com.pjb.service; import com.pjb.entity.UserInfo; /** * 用戶信息業務邏輯接口 * @author pan_junbiao **/public interface UserService{ /** * 根據用戶ID,獲取用戶信息 */ public UserInfo getUserById(int userId); /** * 新增用戶,并獲取自增主鍵 */ public UserInfo insertUser(UserInfo userInfo); /** * 修改用戶 */ public UserInfo updateUser(UserInfo userInfo); /** * 刪除用戶 */ public int deleteUser(int userId);}

在com.pjb.service.impl包下,創建UserServiceImpl類(用戶信息業務邏輯類)。

package com.pjb.service.impl; import com.pjb.entity.UserInfo;import com.pjb.mapper.UserMapper;import com.pjb.service.UserService;import org.springframework.beans.factory.annotation.Autowired;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; /** * 用戶信息業務邏輯類 * @author pan_junbiao **///注意:必須對應配置文件ehcache.xml中cache節點的name屬性值//@CacheConfig(cacheNames = 'userCache')@Servicepublic class UserServiceImpl implements UserService{ @Autowired private UserMapper userMapper; //注意:必須對應配置文件ehcache.xml中cache節點的name屬性值 private static final String CACHE_NAME = 'userCache'; /** * 根據用戶ID,獲取用戶信息 */ @Override @Cacheable(value = CACHE_NAME, key = '#userId') public UserInfo getUserById(int userId) {return userMapper.getUserById(userId); } /** * 新增用戶,并獲取自增主鍵 */ @Override @CachePut(value = CACHE_NAME, key = '#userInfo.userId') public UserInfo insertUser(UserInfo userInfo) {userMapper.insertUser(userInfo);return userInfo; } /** * 修改用戶 */ @Override @CachePut(value = CACHE_NAME, key = '#userInfo.userId') public UserInfo updateUser(UserInfo userInfo) {userMapper.updateUser(userInfo);return userInfo; } /** * 刪除用戶 */ @Override @CacheEvict(value = CACHE_NAME, key = '#userId') public int deleteUser(int userId) {return userMapper.deleteUser(userId); }}

從上述代碼可以看出,查詢用戶的方法使用了 @Cacheable 注解來開啟緩存。添加和修改方法使用了 @CachePut 注解,它是先處理方法,然后把結果進行緩存的。要想刪除數據,則需要使用 @CacheEvict 注解來清空緩存。

@CacheConfig注解:如果所有的 @Cacheable() 里面都有一個 value=“xxx” 的屬性,這顯然如果方法多了,寫起來也是挺累的,如果可以一次性聲明完 那就省事了,所以有了 @CacheConfig 這個配置,@CacheConfig is a class-level annotation that allows to share the cache names,如果你在方法寫別的名字,那么依然以方法的名字為準。

5.4 控制器方法(Controller層)

在com.pjb.controller包中,創建UserController類(用戶控制器),實現用戶數據的查詢、新增、修改、刪除,并實現數據的返回。

package com.pjb.controller; import com.pjb.entity.UserInfo;import com.pjb.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.servlet.ModelAndView; /** * 用戶信息控制器 * @author pan_junbiao **/@Controller@RequestMapping('/user')public class UserController{ @Autowired private UserService userService; /** * 獲取用戶信息 */ @RequestMapping('getUserById') public ModelAndView getUserById(int userId) {//根據用戶ID,獲取用戶信息UserInfo userInfo = userService.getUserById(userId); if(userInfo==null){ userInfo = new UserInfo();} //返回結果ModelAndView modelAndView = new ModelAndView();modelAndView.addObject('userInfo',userInfo);modelAndView.setViewName('/user-info.html');return modelAndView; } /** * 新增用戶 */ @ResponseBody @RequestMapping('insertUser') public boolean insertUser() {//創建新用戶UserInfo userInfo = new UserInfo();userInfo.setUserName('pan_junbiao的博客');userInfo.setAge(32);userInfo.setBlogUrl('https://blog.csdn.net/pan_junbiao');userInfo.setBlogRemark('您好,歡迎訪問 pan_junbiao的博客'); //執行新增方法userService.insertUser(userInfo); //返回結果return userInfo.getUserId() > 0 ? true : false; } /** * 修改用戶 */ @ResponseBody @RequestMapping('updateUser') public boolean updateUser(int userId) {UserInfo userInfo = new UserInfo();userInfo.setUserId(userId);userInfo.setUserName('pan_junbiao的博客_02');userInfo.setAge(35);userInfo.setBlogUrl('https://blog.csdn.net/pan_junbiao');userInfo.setBlogRemark('您好,歡迎訪問 pan_junbiao的博客'); //執行修改方法userService.updateUser(userInfo); //返回結果return true; } /** * 刪除用戶 */ @ResponseBody @RequestMapping('deleteUser') public boolean deleteUser(int userId) {//執行新增方法int result = userService.deleteUser(userId); //返回結果return result > 0 ? true : false; }}5.5 顯示頁面(View層)

在 resources/templates 目錄下,創建 user-info.html 用戶信息顯示頁面。

<!DOCTYPE html><html lang='en' xmlns:th='http://www.thymeleaf.org'><head> <meta charset='UTF-8'> <title>用戶信息</title> <meta name='author' content='pan_junbiao的博客'> <style>table { border-collapse: collapse; margin-bottom: 10px}table,table tr th, table tr td { border:1px solid #000000; padding: 5px 10px;} </style></head><body> <div align='center'> <table><caption>用戶信息</caption><tr> <th>用戶ID:</th> <td th:text='${userInfo.userId}'></td></tr><tr> <th>用戶名稱:</th> <td th:text='${userInfo.userName}'></td></tr><tr> <th>年齡:</th> <td th:text='${userInfo.age}'></td></tr><tr> <th>博客地址:</th> <td th:text='${userInfo.blogUrl}'></td></tr><tr> <th>備注信息:</th> <td th:text='${userInfo.blogRemark}'></td></tr> </table></div></body></html>

至此,項目已經編寫完成,執行結果如下圖:

Spring Cache和EhCache實現緩存管理方式

接著運行項目的其他方法,然后多次訪問查詢方法的URL,體驗緩存效果。主要觀察數據庫是否進行了操作,如果數據庫沒有操作數據而正常返回數據,則代表緩存成功。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 韩日一区 | a毛片国产 | 男人天堂网址 | av自拍 | 日韩成人av在线 | 玖玖成人| 成人精品视频免费在线观看 | 在线a视频 | 久久伊人国产 | 91伊人 | 在线视频国产一区 | 免费av观看| 日韩中文字幕在线免费 | av超碰| 久久国产精品一区二区 | 日本男人的天堂 | 91精品国产综合久久婷婷香蕉 | 成人免费一区二区三区视频网站 | 国产欧美久久久久久 | 91精品国产人妻国产毛片在线 | 盗摄精品av一区二区三区 | 黄a在线 | 成人免费毛片aaaaaa片 | www日韩| 蜜臀av在线播放一区二区三区 | 国产成人久久 | 日本特黄特色aaa大片免费 | 女人夜夜春高潮爽av片 | 99国产精品久久久久老师 | 亚洲第一福利视频 | 毛片99| 中文字幕一区二区三区日韩精品 | 久久av资源 | 国产精品久久久久久久久免费 | 日韩一区电影 | 欧美成人精品一区二区三区 | 国产精品91久久久久 | 99久久久久久 | 久草电影网| 四虎永久免费影院 | 午夜视频一区二区 | 久久九 | h免费观看 | 青青草一区二区 | av免费网 | 精品日韩一区二区三区 | 国产在线观看欧美 | 亚洲精品一区二区三区不 | 亚洲第一男人天堂 | 成人高清 | 日韩一区免费观看 | 亚洲在线视频 | 91视频国产网站 | 国产精品成人在线观看 | 懂色中文一区二区在线播放 | 北条麻妃国产九九九精品小说 | 99精品国产高清一区二区麻豆 | 成年人看的羞羞网站 | 亚洲精品无| 久久9久久 | 国产一区二区三区高清 | 国产精品成人3p一区二区三区 | 欧美日韩国产在线观看 | 免费久久99精品国产婷婷六月 | 亚洲视频一区二区在线 | 精品国产三级 | 亚洲欧美日韩一区 | 精品亚洲自拍 | www.一区 | 欧美三及片 | 最新黄色网页 | 午夜激情在线播放 | 成人福利在线 | 亚洲精品乱码久久久久久蜜桃图片 | www.蜜桃av | 九九精品免费视频 | 日韩精品一区二区三区第95 | 欧美成人一区二免费视频软件 | 日韩在线免费 | 国内精品视频一区国产 | 中文字幕在线电影 | 久久精品在线 | 日韩av一区二区在线观看 | 欧美日韩在线看 | 亚洲欧美激情精品一区二区 | 男女污污网站 | 国产精品三级视频 | 久国久产久精永久网页 | 久草视频在线播放 | 亚洲毛片网站 | 亚洲不卡免费视频 | 久久精品一区二区三区四区 | 一区二区三区在线播放视频 | 日韩中文字幕一区二区 | 欧美日韩成人在线观看 | 伊人精品视频在线观看 | 精品视频一区二区 | 精品亚洲一区二区三区 | 国产精品久久国产精品 | 国产美女www爽爽爽免费视频 | 久久综合一区二区 | 91视频国产网站 | 成人免费视频网站在线看 | 日韩一级免费在线观看 | 久久久国产视频 | 视频一区免费观看 | www.成人 | 91在线激情| 国产女人免费看a级丨片 | 成人a在线 | 久久久久久久久久穴 | 91亚洲一区 | 韩日精品 | 91麻豆精品久久久久蜜臀 | 亚洲成人精品一区二区三区 | 欧美一级二级视频 | 91一区二区三区久久国产乱 | 欧美黄视频在线观看 | 天天操天天碰 | 最新黄色网页 | 国产高清在线 | 午夜午夜精品一区二区三区文 | 中文精品在线 | 国产综合久久久久久鬼色 | 福利久久| 国产精品毛片久久久久久久 | 久久亚洲一区二区三 | 日韩高清一区二区 | 亚洲一区二区中文字幕在线观看 | www.you日本| a黄视频 | 不卡在线 | 黑人巨大精品欧美黑白配亚洲 | 交视频在线观看国产 | 久久com | 成人福利在线 | 在线第一页 | 欧美国产在线一区 | 亚洲电影一区 | 最新超碰 | 成人国产一区 | 欧美三级视频 | 亚洲精品中文字幕 | 久久久久亚洲精品 | 日韩精品一区二区三区免费观看视频 | 国产日韩欧美一二三区 | 国产剧情一区二区 | 国产一级毛片电影 | 永久黄网站色视频免费 | 亚洲高清精品视频 | 欧美一级小视频 | 久久精品毛片 | 国产一二三在线 | 久久精品美女 | 国产日韩精品一区二区 | 精品久久国产 | 欧洲一级毛片 | 欧美一区二区免费 | 久久久久久这里只有精品 | 欧美日韩在线精品 | 国产精品999 | 欧美日韩激情一区二区三区 | 日韩一级| 男人天堂视频网 | 欧美不卡一区二区三区 | 久久伊人在 | 在线视频日韩 | 亚洲精品乱码久久久久久蜜桃图片 | 日韩欧美精品一区 | 欧美一区二区三区精品 | 国产一二三在线 | 九九九视频 | www.久久99| 看羞羞视频免费 | 国产成人久久777777 | 看特级毛片| 高清国产午夜精品久久久久久 | 影视一区二区 | 中文字幕欧美日韩一区 | 国产精品中文 | 久久久一区二区三区 | 亚洲国产成人在线观看 | 欧美久久免费观看 | 国产一区二区av在线 | 人人插人人干 | 日韩三级| 视频一区在线播放 | 国产一区二区三区四区五区 | 亚洲福利社区 | 欧美精品在线免费观看 | 久久精品免费看 | 国产日皮视频 | 亚洲色图偷拍视频 | 国产在线精品一区二区三区 | 国产一区二区在线看 | 91在线免费视频 | 国产精品久久国产精品 | 国产在线不卡 | 国户精品久久久久久久久久久不卡 | 亚洲精品视频在线免费 | 欧美日韩国产精品久久久久 | 第四色影音先锋 | 在线视频a | 国产日韩精品一区 | 人人种亚洲 | 日韩欧美视频 | 国产欧美久久久久久 | 中国大陆高清aⅴ毛片 | 亚洲a在线播放 | 中文字幕亚洲在线观看 | 久热精品视频 | 国产日韩欧美在线 | 欧美激情欧美激情在线五月 | 免费观看一级毛片 | 久久国内精品 | 国产精品久久久久久久久久大牛 | 一区二区三区四区久久 | 成人国产一区二区 | 91香蕉视频| 91久久夜色精品国产网站 | 嫩草研究院在线观看入口 | 红桃av一区二区 | 97久久香蕉国产线看观看 | 精品久久久久久 | 狠狠久 | 天天干天天操天天干 | 日韩欧美一区二区三区视频 | 精品一区二区在线观看 | 91在线看| 一区二区三区国产精品 | 伊人春色成人 | 综合久久网 | aaa在线免费观看 | 成人免费视频播放 | 欧美一级免费在线观看 | 国产精品久久久久久久久久 | 91大神免费在线观看 | 国产99久久精品一区二区永久免费 | 一区二区视频网站 | 精品国产一区二区三区成人影院 | 精品久久久一区 | 日韩一二三区视频 | 亚洲精品3区 | 天天干人人 | 97超碰免费| 欧美精三区欧美精三区 | 亚洲一区二区国产 | 麻豆精品一区二区 | 精品国产成人 | 亚洲免费在线视频 | 香蕉av777xxx色综合一区 | 1000部精品久久久久久久久 | 成人在线观看免费视频 | 久久青 | 成人精品视频在线 | 日韩在线一区二区三区 | 91欧美| 99精品久久久 | 亚洲高清视频网站 | 欧美日韩三区 | 国产成人精品av | 亚洲网在线 | 日韩快播电影 | 亚洲精品一区二区三区中文字幕 | 国产成人精品午夜视频' | 久久综合久久综合久久 | 亚洲视频在线播放 | 亚洲黄色高清视频 | 狠狠躁天天躁夜夜添人人 | 久久精品中文字幕 | 欧美一区二区视频 | 中文字幕在线看第二 | 嫩草影院在线观看91麻豆 | 欧美激情第1页 | 精品久久影院 | 中文字幕av亚洲精品一部二部 | 91精品国产九九九久久久亚洲 | 一区福利视频 | 成人久久久精品国产乱码一区二区 | 国产一级淫片a级aaa | 蜜桃av在线播放 | 日日操综合 | 中文字幕亚洲在线 | 欧美视频在线观看不卡 | www.国产精品| 成人亚洲 | 成人av影院 | 天操天天干 | 中文字幕在线永久在线视频 | 国产一区二区三区久久久 | 日韩素人一区二区三区 | 亚洲精品v日韩精品 | 五月婷综合 | www视频在线观看 | 久久精品久久久久电影 | 99re在线| 在线欧美一区 | 国产一区二区精品在线 | 不卡视频一区二区三区 | 在线播放国产一区二区三区 | 欧美综合视频 | 国产精品免费一区二区三区四区 | 久久丝袜| 97成人精品视频在线观看 | 91在线中文字幕 | 干狠狠 | 一区二区三区国产好的精 | 欧美日韩中文字幕 | 婷婷在线视频 | 日韩喷潮 | 日韩福利视频导航 | av在线干| av观看免费| 91精品久久久久久久久久入口 | 影音先锋中文字幕一区 | 色就是色欧美 | 不卡一区 | 色噜噜视频在线观看 | av网站免费看 | 青青草久草在线 | 精品久久久久久久久久久久久久 | 中文字幕在线视频一区 | 成人三级视频 | 日本欧美在线观看 | 日韩专区中文字幕 | 成人不卡| 久国产精品视频 | 国产情侣自拍啪啪 | 日本在线小视频 | 欧美精品一区三区 | 三级黄色片在线播放 | 国产一级免费在线观看 | 成人毛片在线观看视频 | 超碰香蕉 | 国产精品久久九九 | 黄色欧美视频 | а天堂中文官网 | 一级片免费视频 | 成人免费视频网站在线观看 | 国产欧美日韩精品一区二区三区 | 国产在线不卡视频 | 亚洲一区二区三区视频 | 农村少妇kkkk7777 | 国产在线综合视频 | 国产精品美女久久久久久久久久久 | 久久久亚洲综合 | 国产精品视频入口 | 在线 丝袜 欧美 日韩 制服 | 五月天婷婷综合 | 成人av观看 | 国产一区二区三区久久久 | 麻豆久久 | 亚洲aⅴ天堂av在线电影软件 | 一区二区三区四区精品 | 午夜视频在线观看网址 | 日韩欧美一区二区在线观看视频 | 97久久精品 | 久久久久久久久国产成人免费 | 欧美五月婷婷 | 国产精品久久久久久久久免费桃花 | 蜜桃精品久久久久久久免费影院 | 亚洲人网站 | 亚洲免费影院 | 波多野结衣中文字幕在线视频 | 免费看国产一级片 | 久久精品久久久久久 | 久久机热 | 免费的av在线 | 久久一| 91短视频版在线观看免费大全 | 成人黄页在线观看 | 午夜精品久久久久久久久久久久久 | 国产一区二区三区久久久 | 日韩av免费在线观看 | 91在线视频播放 | 午夜精品久久久久久久久久久久久 | 欧美日免费 | 国产精品美女久久久久久免费 | 亚洲成人一二区 | 成人精品一区二区 | 日韩在线成人av | 色毛片| 欧美老妇交乱视频 | 久久伊人av | 日本在线观看 | 九九九九九九精品任你躁 | 成年免费a级毛片 | 亚洲免费成人 | 国产精品一区在线观看 | 人人看超碰 | 久久久久久国产精品 | 国产精品久久久久久无遮挡 | 精品久久香蕉国产线看观看亚洲 | 成人欧美一区二区三区在线播放 | 亚洲精品久久久久久久久久久 | 成年人视频在线免费观看 | 禁果av一区二区三区 | 亚洲aⅴ天堂av在线电影软件 | 特黄一级 | 国产精品午夜在线观看 | 精品国产一区二区三区久久久蜜 | 亚洲人成在线观看 | 黄色毛片在线看 | 午夜在线影院 | 成人免费精品视频 | 久久精品亚洲一区二区 | 久久久久九九九九 | 成年人性视频 | 久久精品99 | 成人欧美一区二区三区 | 99久久久久国产精品免费 | 国产精品一区二区三区四区 | 免费v片 | 日本在线一区二区 | 日韩中文字幕 | 中文字幕一区二区三区四区 | 天堂一区二区三区 | 国产色在线 | 91在线国产观看 | 成人av小说 | 中国免费看的片 | 成人在线免费av | 国产小视频在线播放 | 免费av播放 | 日韩av免费看 | 99热精品免费 | 91国内精品 | av网址在线播放 | 婷婷五月色综合香五月 | 人人射人人草 | 国产福利电影一区 | 亚洲午夜一区 | 青青草人人 | 亚洲成av人片在线观看 | 中文字幕国产视频 | 国产精品国色综合久久 | 亚洲欧洲一区二区三区 | 色偷偷噜噜噜亚洲男人 | 国产在线成人 | 在线观看免费视频日韩 | 91影院在线观看 | 91精品国产乱码久久久久久久久 | 欧美日韩精品一区二区三区 | 精品无人乱码一区二区三区的优势 | 国产综合视频在线观看 | 国产欧美日韩一区二区三区 | 91破解版在线 | 亚洲 | 日韩在线观看视频一区二区三区 | 国产精品自拍av | 免费a大片 | 伊人午夜 | 日韩成人在线一区 | 国产综合久久久久久鬼色 | 日韩第一区 | 久久久国产一区二区三区 | 日韩不卡一二三 | 国产伦精品一区二区三区照片91 | 欧美激情啪啪 | 亚洲情欲网 | 爱免费视频 | 精品一区二区三区免费 | 91久久看片 | 欧美日韩在线视频一区 | 国产精品久久久久婷婷二区次 | 精品影院| 国产精品视屏 | 成人免费一区二区三区视频软件 | av网站在线播放 | 综合国产 | 日本久久www成人免 成人久久久久 | 日本福利网站 | 欧美极品一区二区 | 欧美一级片在线 | 毛片日韩 | h片免费 | 欧美成人a| 日韩欧美国产精品综合嫩v 久久久久久国产精品高清 国产目拍亚洲精品99久久精品 | 成人欧美一区二区三区在线观看 | 欧美香蕉 | 国产成人天天爽高清视频 | 欧美一级内谢 | 中文字幕视频在线免费观看 | 欧美成人第一页 | 北条麻妃一区二区三区在线 | 成人一区二区电影 | 精品亚洲国产成av人片传媒 | 美国特级a毛片免费网站 | 亚洲成人精品在线观看 | 免费一区在线 | 性视屏 | 日韩精品一区二区三区在线 | 亚洲一区在线日韩在线深爱 | 日韩在线视频免费看 | 国产精品国产精品国产专区不片 | 在线看国产 | 国产美女精品人人做人人爽 | 欧美亚洲二区 | 久草热8精品视频在线观看 黄色片网站视频 | 伊人色综合久久天天五月婷 | 欧美日本一区 | 国产精品久久精品 | 日本一区二区不卡 | 日韩精品一区二区三区老鸭窝 | 超碰国产一区 | 三级网站在线播放 | 日韩免费一区 | 一区二区不卡视频 | 九色av| 成人午夜网 | 精品国精品国产自在久不卡 | 中文字幕视频在线免费观看 | 九九热这里都是精品 | 日韩在线看片 | 午夜影视在线观看 | 日韩精品久久久久久 | 天天草天天干 | 免费日韩成人 | 国产一区二区在线免费观看 | 成人二区 | 精品日韩欧美 | 四季久久免费一区二区三区四区 | 欧美一级全黄 | 欧美视频在线播放 | 夜夜艹| 在线观看国产精品一区 | 青草精品 | 人妖天堂狠狠ts人妖天堂狠狠 | 激情视频在线观看免费 | 人人干人人干人人 | 姐姐在线观看动漫第二集免费 | 中文字幕1区 | 超碰在线看| 精品久久久久久久 | 国产成人精品综合 | 国产探花在线精品一区二区 | 亚洲欧美一区二区三区在线 | 1000部精品久久久久久久久 | 亚洲视频中文 | 成人午夜精品一区二区三区 | 一本一道久久精品综合 | 国产中文 | 精品无码久久久久久国产 | 久久久久久亚洲 | 美女操网站 | 国产成人99久久亚洲综合精品 | 日韩在线观看视频一区 | 91久久久久久久久久久久久 | 色天天综合久久久久综合片 | 欧美日韩视频在线播放 | 国产精品无码久久久久 | 在线视频一区二区三区 | 久久久精品国产 | 久久久国产日韩 | 精品久久一区二区三区 | 嫩草网站入口 | 日韩精品一区二区三区在线观看 | 国产精品影院在线观看 | 999精品网 | 中国妞xxxhd露脸偷拍视频 | 久久久久国产 | 欧美一区三区 | 亚洲一区二区 | 日韩欧美一级精品久久 | 亚洲欧美日韩在线一区 | 午夜视频免费 | 色玖玖综合 | 久久综合一区二区三区 | 日韩久久一区二区 | 亚洲成人三区 | 精品福利在线视频 | 欧美久久久| 国产精品美女www爽爽爽动态图 | 欧美精产国品一二三区 | 黄色一级大片视频 | 日批免费视频 | 91在线视频免费观看 | 国产精品久久一区 | 成人av免费观看 | 精品欧美乱码久久久久久 | 欧美二区精品 | 国产精品美女久久久久久久网站 | 成人福利影院 | 青青草免费在线视频 | 可以免费看黄视频的网站 | 亚洲免费观看 | 国产精品久久嫩一区二区免费 | 黄色一级视屏 | 一级久久久久 | 婷婷综合| 色香蕉视频 | 欧美色欧美亚洲另类七区 | 亚洲日本乱码一区两区在线观看 | 亚洲精品视频在线 | av在线毛片 | 91精品国产乱码久久久久久久久 | 国产精品白浆 | 97国产在线视频 | 日韩欧美在线一区 | 经典法国性xxxx精品 | 三级成人在线 | 国产精品福利在线观看 | 欧美精品入口蜜桃 | 在线一区二区三区 | 欧美日韩不卡合集视频 | 麻豆freexxxx性91精品 | 狠狠色狠狠色合久久伊人 | 免费h视频 | 国产一级一级特黄女人精品毛片 | 欧美精品一区二 | 天操天天干 | 九九精品久久久 | 一区二区三区久久 | 精品国产一级片 | 欧美日韩国产一区二区在线观看 | 亚洲免费在线视频 |