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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【 .NET Core 3.0 】框架之十 || AOP 切面思想

發布時間:2023/12/4 asp.net 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【 .NET Core 3.0 】框架之十 || AOP 切面思想 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文有配套視頻

https://www.bilibili.com/video/av58096866/?p=6

?前言

  

上回《【 .NET Core3.0 】框架之九 || 依賴注入IoC學習 + AOP界面編程初探》咱們說到了依賴注入Autofac的使用,不知道大家對IoC的使用是怎樣的感覺,我個人表示還是比較可行的,至少不用自己再關心一個個復雜的實例化服務對象了,直接通過接口就滿足需求,當然還有其他的一些功能,我還沒有說到,拋磚引玉嘛,大家如果有好的想法,歡迎留言,也可以來群里,大家一起學習討論。昨天在文末咱們說到了AOP面向切面編程的定義和思想,我個人簡單使用了下,感覺主要的思路還是通過攔截器來操作,就像是一個中間件一樣,今天呢,我給大家說兩個小栗子,當然,你也可以合并成一個,也可以自定義擴展,因為我們是真個系列是基于Autofac框架,所以今天主要說的是基于Autofac的Castle動態代理的方法,靜態注入的方式以后有時間可以再補充。

  時間真快,轉眼已經十天過去了,感謝大家的鼓勵,批評指正,希望我的文章,對您有一點點兒的幫助,哪怕是有學習新知識的動力也行,至少至少,可以為以后跳槽增加新的談資 [哭笑],這些天我們從面向對象OOP的開發,后又轉向了面向接口開發,到分層解耦,現在到了面向切面編程AOP,往下走將會是,分布式,微服務等等,技術真是永無止境啊!好啦,馬上開始動筆。

? 一、什么是 AOP 切面編程思想

?

什么是AOP?引用百度百科:AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。實現AOP主要由兩種方式,

一種是編譯時靜態織入,優點是效率高,缺點是缺乏靈活性,.net下postsharp為代表者(好像是付費了。。)。

另一種方式是動態代理,優點是靈活性強,但是會影響部分效率,動態為目標類型創建代理,通過代理調用實現攔截。

AOP能做什么,常見的用例是事務處理、日志記錄等等。

常見的AOP都是配合在Ioc的基礎上進行操作,上邊咱們講了Autofac這個簡單強大的Ioc框架,下面就講講Autofac怎么實現AOP。Autofac的AOP是通過Castle(也是一個容器)項目的核心部分實現的,名為Autofac.Extras.DynamicProxy,顧名思義,其實現方式為動態代理。當然AOP并不一定要和依賴注入在一起使用,自身也可以單獨使用。

是不是很拗口,沒關系,網上有一個博友的圖片,大概講了AOP切面編程:

?

?

說的很通俗易懂的話就是,我們在 service 方法的前邊和后邊,各自動態增加了一個方法,這樣就包裹了每一個服務方法,從而實現業務邏輯的解耦。

AOP,我們并不陌生。可能大家感覺這個切面編程思想之前沒有用到過,很新鮮的一個東西,其實不是的,之前我們開發的時候也一直在使用這種思想,那就是過濾器,我們可以想想,我們之前在開發 MVC 的時候,是不是經常要對action進行控制過濾,最常見的就是全局異常處理過濾器,只要有錯誤,就跳出去,記錄日志,然后去一個自定義的異常頁面,這個其實就是一個 AOP 的思想,但是這里請注意,這個思想是廣義的 AOP 編程思想,今天要說的,是真正意義上的切面編程思想,是基于動態代理的基于服務層的編程思想,也是在以后的開發中使用很多的一種編程思想。

?二、AOP 之實現日志記錄

首先想一想,如果有這么一個需求,要記錄整個項目的接口和調用情況,當然如果只是控制器的話,還是挺簡單的,直接用一個過濾器或者一個中間件,還記得咱們開發Swagger攔截權限驗證的中間件么,那個就很方便的把用戶調用接口的名稱記錄下來,當然也可以寫成一個切面,但是如果想看下與Service或者Repository層的調用情況呢,好像目前咱們只能在Service層或者Repository層去寫日志記錄了,那樣的話,不僅工程大(當然你可以用工廠模式),而且耦合性瞬間就高了呀,想象一下,如果日志要去掉,關閉,修改,需要改多少地方!您說是不是,好不容易前邊的工作把層級的耦合性降低了。別慌,這個時候就用到了AOP和Autofac的Castle結合的完美解決方案了。

  經過這么多天的開發,幾乎每天都需要引入Nuget包哈,我個人表示也不想再添加了,現在都已經挺大的了(47M當然包括全部dll文件),今天不會啦!其實都是基于昨天的兩個Nuget包中已經自動生成的Castle組件。請看以下步驟:

1、定義服務接口與實現類

在上一篇文章中,我們說到了使用

AdvertisementServices.cs 和 IAdvertisementServices.cs

這個服務,我們新建兩個層,分別包含這兩個 cs 文件:

然后我們模擬下數據,再新建一個 Model 層,添加 AdvertisementEntity 實體類

namespace Blog.Core.Model { public class AdvertisementEntity { public int id { get; set; } public string name { get; set; } } }

然后在上邊的 service 方法中,返回一個List數據:

// 接口 public interface IAdvertisementServices { int Test(); List<AdvertisementEntity> TestAOP(); } // 實現類 public class AdvertisementServices : IAdvertisementServices { public int Test() { return 1; } public List<AdvertisementEntity> TestAOP() => new List<AdvertisementEntity>() { new AdvertisementEntity() { id = 1, name = "laozhang" } }; }

2、在API層中添加對該接口引用

還是在默認的控制器——weatherForecastController.cs 里,添加調用方法:

/// <summary> /// 測試AOP /// </summary> /// <returns></returns> [HttpGet] public List<AdvertisementEntity> TestAdsFromAOP() { return _advertisementServices.TestAOP(); }

這里采用的是依賴注入的方法,把 _advertisementServices 注入到控制器的,如果還不會,請看我上一篇文章。

?

3、添加AOP攔截器

在api層新建文件夾AOP,添加攔截器BlogLogAOP,并設計其中用到的日志記錄Logger方法或者類

?

?

關鍵的一些知識點,注釋中已經說明了,主要是有以下:

1、繼承接口IInterceptor2、實例化接口IINterceptor的唯一方法Intercept3、void Proceed();表示執行當前的方法4、執行后,輸出到日志文件。

namespace blog.core.test3._0.AOP { /// <summary> /// 攔截器BlogLogAOP 繼承IInterceptor接口 /// </summary> public class BlogLogAOP : IInterceptor { /// <summary> /// 實例化IInterceptor唯一方法 /// </summary> /// <param name="invocation">包含被攔截方法的信息</param> public void Intercept(IInvocation invocation) { // 事前處理: 在服務方法執行之前,做相應的邏輯處理 var dataIntercept = "" + $"【當前執行方法】:{ invocation.Method.Name} \r\n" + $"【攜帶的參數有】: {string.Join(", ", invocation.Arguments.Select(a => (a ?? "").ToString()).ToArray())} \r\n"; // 執行當前訪問的服務方法,(注意:如果下邊還有其他的AOP攔截器的話,會跳轉到其他的AOP里) invocation.Proceed(); // 事后處理: 在service被執行了以后,做相應的處理,這里是輸出到日志文件 dataIntercept += ($"【執行完成結果】:{invocation.ReturnValue}"); // 輸出到日志文件 Parallel.For(0, 1, e => { LogLock.OutSql2Log("AOPLog", new string[] { dataIntercept }); }); } } }

?

提示:這里展示了如何在項目中使用AOP實現對 service 層進行日志記錄,如果你想實現異常信息記錄的話,很簡單,

注意,這個方法僅僅是針對同步的策略,如果你的service是異步的,這里獲取不到,正確的寫法,在文章底部的 GitHub 代碼里,因為和 AOP 思想沒有直接的關系,這里就不贅述。

?

?

4、將攔截器注入容器,代理服務

?

還記得昨天的Autofac容器 ConfigureContainer 么,我們繼續對它進行處理:

1、先把攔截器注入容器;

2、然后對程序集的注入方法中匹配攔截器服務;

?

public void ConfigureContainer(ContainerBuilder builder) { var basePath = Microsoft.DotNet.PlatformAbstractions.ApplicationEnvironment.ApplicationBasePath; //直接注冊某一個類和接口 //左邊的是實現類,右邊的As是接口 builder.RegisterType<AdvertisementServices>().As<IAdvertisementServices>(); builder.RegisterType<BlogLogAOP>();//可以直接替換其他攔截器!一定要把攔截器進行注冊 //注冊要通過反射創建的組件 var servicesDllFile = Path.Combine(basePath, "Blog.Core.Services.dll"); var assemblysServices = Assembly.LoadFrom(servicesDllFile); builder.RegisterAssemblyTypes(assemblysServices) .AsImplementedInterfaces() .InstancePerLifetimeScope() .EnableInterfaceInterceptors() .InterceptedBy(typeof(BlogLogAOP));//可以放一個AOP攔截器集合 }

?

注意其中的兩個方法

.EnableInterfaceInterceptors()//對目標類型啟用接口攔截。攔截器將被確定,通過在類或接口上截取屬性, 或添加 InterceptedBy ()

.InterceptedBy(typeof(BlogLogAOP));//允許將攔截器服務的列表分配給注冊。

說人話就是,將攔截器添加到要注入容器的接口或者類之上。

?

5、運行項目,查看效果

這個時候,我們運行項目,然后訪問api 的 TestAdsFromAOP() 接口,你就看到這根目錄下生成了一個Log文件夾,里邊有日志記錄,當然記錄很簡陋,里邊是獲取到的實體類,大家可以自己根據需要擴展。

這里,面向服務層的日志記錄就完成了,大家感覺是不是很平時的不一樣?我們幾乎什么都沒做,只是增加了一個AOP的攔截器,就可以控制 service 層的任意一個方法,這就是AOP思想的精髓——業務的解耦。

那AOP僅僅是做日志記錄么,還有沒有其他的用途,這里我隨便舉一個例子——緩存。

?三、AOP 實現數據緩存功能

想一想,如果我們要實現緩存功能,一般咱們都是將數據獲取到以后,定義緩存,然后在其他地方使用的時候,在根據key去獲取當前數據,然后再操作等等,平時都是在API接口層獲取數據后進行緩存,今天咱們可以試試,在接口之前就緩存下來 —— 基于service層的緩存策略。

?

1、定義 Memory 緩存類和接口

這里既然要用到緩存,那我們就定義一個緩存類和接口,在 Helper 文件夾下,新建兩個類文件,ICaching.cs 和 MemoryCaching.cs

你會問了,為什么上邊的日志沒有定義,因為我會在之后講Redis的時候用到這個緩存接口

/// <summary> /// 簡單的緩存接口,只有查詢和添加,以后會進行擴展 /// </summary> public interface ICaching { object?Get(string?cacheKey); void Set(string cacheKey, object cacheValue); } /// <summary> /// 實例化緩存接口ICaching /// </summary> public class MemoryCaching : ICaching { //引用Microsoft.Extensions.Caching.Memory;這個和.net 還是不一樣,沒有了Httpruntime了 private IMemoryCache _cache; //還是通過構造函數的方法,獲取 public MemoryCaching(IMemoryCache cache) { _cache = cache; } public object Get(string cacheKey) { return _cache.Get(cacheKey); } public void Set(string cacheKey, object cacheValue) { _cache.Set(cacheKey, cacheValue, TimeSpan.FromSeconds(7200)); } }

?

?

2、定義一個緩存攔截器

還是繼承IInterceptor,并實現Intercept,這個過程和上邊 日志AOP 是一樣,不多說,大家也正好可以自己動手練習一下。

新建緩存AOP:BlogCacheAOP.cs

/// <summary> /// 面向切面的緩存使用 /// </summary> public?class?BlogCacheAOP?:?AOPbase { //通過注入的方式,把緩存操作接口通過構造函數注入 private readonly ICaching _cache; public BlogCacheAOP(ICaching cache) { _cache = cache; } //Intercept方法是攔截的關鍵所在,也是IInterceptor接口中的唯一定義 public override void Intercept(IInvocation invocation) { //獲取自定義緩存鍵 var cacheKey = CustomCacheKey(invocation); //根據key獲取相應的緩存值 var cacheValue = _cache.Get(cacheKey); if (cacheValue != null) { //將當前獲取到的緩存值,賦值給當前執行方法 invocation.ReturnValue = cacheValue; return; } //去執行當前的方法 invocation.Proceed(); //存入緩存 if (!string.IsNullOrWhiteSpace(cacheKey)) { _cache.Set(cacheKey, invocation.ReturnValue); } } }

代碼中注釋的很清楚,需要注意是兩點:

1、采用依賴注入,把緩存注入到當前攔截器里;

2、繼承了一個 AOPBase 抽象類,里邊有如何定義緩存 key 等內容;

?

namespace blog.core.test3._0.AOP { public abstract class AOPbase : IInterceptor { /// <summary> /// AOP的攔截方法 /// </summary> /// <param name="invocation"></param> public abstract void Intercept(IInvocation invocation); /// <summary> /// 自定義緩存的key /// </summary> /// <param name="invocation"></param> /// <returns></returns> protected string CustomCacheKey(IInvocation invocation) { var typeName = invocation.TargetType.Name; var methodName = invocation.Method.Name; var methodArguments = invocation.Arguments.Select(GetArgumentValue).Take(3).ToList();//獲取參數列表,最多三個 string key = $"{typeName}:{methodName}:"; foreach (var param in methodArguments) { key = $"{key}{param}:"; } return key.TrimEnd(':'); } /// <summary> /// object 轉 string /// </summary> /// <param name="arg"></param> /// <returns></returns> protected static string GetArgumentValue(object arg) { if (arg is DateTime || arg is DateTime?) return ((DateTime)arg).ToString("yyyyMMddHHmmss"); if (arg is string || arg is ValueType || arg is Nullable) return arg.ToString(); if (arg != null) { if (arg.GetType().IsClass) { return MD5Encrypt16(Newtonsoft.Json.JsonConvert.SerializeObject(arg)); } } return string.Empty; } /// <summary> /// 16位MD5加密 /// </summary> /// <param name="password"></param> /// <returns></returns> public static string MD5Encrypt16(string password) { var md5 = new MD5CryptoServiceProvider(); string t2 = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(password)), 4, 8); t2 = t2.Replace("-", string.Empty); return t2; } } }

3、注入攔截器到服務

具體的操作方法,上邊我們都已經說到了,大家依然可以自己練習一下,這里直接把最終的代碼展示一下:

注意:

//將 TService 中指定的類型的范圍服務添加到實現?services.AddScoped<ICaching, MemoryCaching>();//記得把緩存注入!!!

?

4、運行,查看效果

你會發現,首次緩存是空的,然后將serv中取出來的數據存入緩存,第二次使用就是有值了,其他所有的地方使用,都不用再寫了,而且也是面向整個程序集合的

?

5、多個AOP執行順序問題?

在我最新的 Github 項目中,我定義了四個 AOP :除了上邊兩個 LogAOP和 CacheAOP 以外,還有一個 RedisCacheAOP 和 事務BlogTranAOP,并且通過開關的形式在項目中配置是否啟用:

?

那具體的執行順序是什么呢,這里說下,就是從上至下的順序,或者可以理解成挖金礦的形式,執行完上層的,然后緊接著來下一個AOP,最后想要回家,就再一個一個跳出去,在往上層走的時候,礦肯定就執行完了,就不用再操作了,直接出去,就像 break 一樣。

6、無接口如何實現AOP

?

上邊我們討論了很多,但是都是接口框架的,

比如:Service.dll 和與之對應的 IService.dll,Repository.dll和與之對應的 IRepository.dll,我們可以直接在對應的層注入的時候,匹配上 AOP 信息,但是如果我們沒有使用接口怎么辦?

這里大家可以安裝下邊的實驗下:

?

Autofac它只對接口方法 或者 虛virtual方法或者重寫方法override才能起攔截作用。??

?

如果沒有接口

案例是這樣的:

?如果我們的項目是這樣的,沒有接口,會怎么辦:

// 服務層類 public class StudentService { StudentRepository _studentRepository; public StudentService(StudentRepository studentRepository) { _studentRepository = studentRepository; } public string Hello() { return _studentRepository.Hello(); } } // 倉儲層類 public class StudentRepository { public StudentRepository() { } public string Hello() { return "hello world!!!"; } } // controller 接口調用 StudentService _studentService; public ValuesController(StudentService studentService) { _studentService = studentService; }

?

?

如果是沒有接口的單獨實體類

public class Love { // 一定要是虛方法 public virtual string SayLoveU() { return "I ? U"; } } //--------------------------- //只能注入該類中的虛方法 builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(Love))) .EnableClassInterceptors() .InterceptedBy(typeof(BlogLogAOP));

?

到了這里,我們已經明白了什么是AOP切面編程,也通過兩個業務邏輯學會了如何去使用AOP編程,那這里有一個小問題,如果我某些service類和方法并不想做相應的AOP處理,該如何篩選呢?請繼續看。

?四、給緩存增加驗證篩選

1、自定義緩存特性

在解決方案中添加新項目Blog.Core.Common,然后在該Common類庫中添加 特性文件夾 和 特性實體類,以后特性就在這里

  /// <summary> /// 這個Attribute就是使用時候的驗證,把它添加到要緩存數據的方法中,即可完成緩存的操作。注意是對Method驗證有效 /// </summary> [AttributeUsage(AttributeTargets.Method, Inherited = true)] public class CachingAttribute : Attribute { //緩存絕對過期時間 public int AbsoluteExpiration { get; set; } = 30; }

?

2、在AOP攔截器中進行過濾

添加Common程序集引用,然后修改緩存AOP類方法 BlogCacheAOP=》Intercept,簡單對方法的方法進行判斷

/// <summary> /// 面向切面的緩存使用 /// </summary> public class BlogCacheAOP : AOPbase { //通過注入的方式,把緩存操作接口通過構造函數注入 private readonly ICaching _cache; public BlogCacheAOP(ICaching cache) { _cache = cache; } //Intercept方法是攔截的關鍵所在,也是IInterceptor接口中的唯一定義 public override void Intercept(IInvocation invocation) { var method = invocation.MethodInvocationTarget ?? invocation.Method; //對當前方法的特性驗證 var qCachingAttribute = method.GetCustomAttributes(true).FirstOrDefault(x => x.GetType() == typeof(CachingAttribute)) as CachingAttribute; //只有那些指定的才可以被緩存,需要驗證 if (qCachingAttribute != null) { //獲取自定義緩存鍵 var cacheKey = CustomCacheKey(invocation); //根據key獲取相應的緩存值 var cacheValue = _cache.Get(cacheKey); if (cacheValue != null) { //將當前獲取到的緩存值,賦值給當前執行方法 invocation.ReturnValue = cacheValue; return; } //去執行當前的方法 invocation.Proceed(); //存入緩存 if (!string.IsNullOrWhiteSpace(cacheKey)) { _cache.Set(cacheKey, invocation.ReturnValue); } } } }

我們增加了一個 if 判斷,只有那些帶有緩存特性的類和方法才會被執行這個 AOP 攔截。

?

3、在service層中增加緩存特性

在指定的Service層中的某些類的某些方法上增加特性(一定是方法,不懂的可以看定義特性的時候AttributeTargets.Method)

4、特定緩存效果展示

運行項目,打斷點,就可以看到,普通的Query或者CURD等都不繼續緩存了,只有咱們特定的 getBlogs()方法,帶有緩存特性的才可以

?

當然,這里還有一個小問題,就是所有的方法還是走的切面,只是增加了過濾驗證,大家也可以直接把那些需要的注入,不需要的干脆不注入Autofac容器,我之所以需要都經過的目的,就是想把它和日志結合,用來記錄Service層的每一個請求,包括CURD的調用情況。

?

五、基于AOP的Redis緩存

?

1、核心:Redis緩存切面攔截器

?在上篇文章中,我們已經定義過了一個攔截器,只不過是基于內存Memory緩存的,并不適應于Redis,上邊咱們也說到了Redis必須要存入指定的值,比如字符串,而不能將異步對象 Task<T> 保存到硬盤上,所以我們就修改下攔截器方法,一個專門應用于 Redis 的切面攔截器:

/// <summary> /// 面向切面的緩存使用 /// </summary> public class BlogRedisCacheAOP : CacheAOPbase { //通過注入的方式,把緩存操作接口通過構造函數注入 private readonly IRedisCacheManager _cache; public BlogRedisCacheAOP(IRedisCacheManager cache) { _cache = cache; } //Intercept方法是攔截的關鍵所在,也是IInterceptor接口中的唯一定義 public override void Intercept(IInvocation invocation) { var method = invocation.MethodInvocationTarget ?? invocation.Method; //對當前方法的特性驗證 var qCachingAttribute = method.GetCustomAttributes(true).FirstOrDefault(x => x.GetType() == typeof(CachingAttribute)) as CachingAttribute; if (qCachingAttribute != null) { //獲取自定義緩存鍵 var cacheKey = CustomCacheKey(invocation); //注意是 string 類型,方法GetValue var cacheValue = _cache.GetValue(cacheKey); if (cacheValue != null) { //將當前獲取到的緩存值,賦值給當前執行方法 var type = invocation.Method.ReturnType; var resultTypes = type.GenericTypeArguments; if (type.FullName == "System.Void") { return; } object response; if (typeof(Task).IsAssignableFrom(type)) { //返回Task<T> if (resultTypes.Any()) { var resultType = resultTypes.FirstOrDefault(); // 核心1,直接獲取 dynamic 類型 dynamic?temp?=?Newtonsoft.Json.JsonConvert.DeserializeObject(cacheValue,?resultType);?????????????????????????? response?=?Task.FromResult(temp); } else { //Task 無返回方法 指定時間內不允許重新運行 response = Task.Yield(); } } else { // 核心2,要進行 ChangeType response = Convert.ChangeType(_cache.Get<object>(cacheKey), type); } invocation.ReturnValue = response; return; } //去執行當前的方法 invocation.Proceed(); //存入緩存 if (!string.IsNullOrWhiteSpace(cacheKey)) { object response; //Type type = invocation.ReturnValue?.GetType(); var type = invocation.Method.ReturnType; if (typeof(Task).IsAssignableFrom(type)) { var resultProperty = type.GetProperty("Result"); response = resultProperty.GetValue(invocation.ReturnValue); } else { response = invocation.ReturnValue; } if (response == null) response = string.Empty; _cache.Set(cacheKey, response, TimeSpan.FromMinutes(qCachingAttribute.AbsoluteExpiration)); } } else { invocation.Proceed();//直接執行被攔截方法 } } }

上邊的代碼和memory緩存的整體結構差不多的,相信都能看的懂的,最后我們就可以很任性的在Autofac容器中,進行任意緩存切換了,是不是很棒!

再次感覺小伙伴JoyLing,不知道他博客園地址。

?

?

?

?六、一些其他問題需要考慮

1、時間問題,阻塞,浪費資源問題等

? 定義切面有時候是方便,初次使用會很別扭,使用多了,可能會對性能有些許的影響,因為會大量動態生成代理類,性能損耗,是特別高的請求并發,比如萬級每秒,還是要深入的研究,不可隨意使用,但是基本平時開發的時候,還是可以使用的,畢竟性價比挺高的,我說的也是九牛一毛,大家繼續加油吧!

?

2、靜態注入

基于Net的IL語言層級進行注入,性能損耗可以忽略不計,Net使用最多的Aop框架PostSharp(好像收費了;)采用的即是這種方式。

大家可以參考這個博文:https://www.cnblogs.com/mushroom/p/3932698.html

?

?七、CODE

https://github.com/anjoy8/Blog.Core

https://gitee.com/laozhangIsPhi/Blog.Core

總結

以上是生活随笔為你收集整理的【 .NET Core 3.0 】框架之十 || AOP 切面思想的全部內容,希望文章能夠幫你解決所遇到的問題。

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

天天综合操 | 亚洲永久免费av | 综合精品久久 | 国产99久久 | 中文字幕在线观看国产 | 亚洲狠狠婷婷综合久久久 | 久久久久高清毛片一级 | 天天操天天玩 | 又黄又刺激又爽的视频 | 国产精品久久久久久久久久久免费看 | 欧美日韩国产伦理 | 超碰人人草人人 | 91x色| 精品视频在线免费观看 | 欧美成年人在线观看 | av福利网址导航 | 日韩亚洲在线观看 | 日韩av电影中文字幕 | 国产精品成人国产乱 | 亚洲乱码精品久久久久 | 一区二区三区电影大全 | 涩av在线 | 久久久久久久99精品免费观看 | 亚洲国产精品99久久久久久久久 | 欧美日韩视频一区二区三区 | 亚洲一级片 | 99在线高清视频在线播放 | 亚洲综合爱 | 九九久久成人 | 最近中文字幕免费大全 | 成人av网站在线播放 | 欧美一区二区三区不卡 | 日韩免费一级电影 | 99热手机在线 | 91麻豆看国产在线紧急地址 | 99热这里只有精品在线观看 | 国产一区二区在线观看免费 | 久久久麻豆精品一区二区 | 亚洲色综合 | 91视频在线免费下载 | 国产精品18久久久久久久网站 | 99久热在线精品视频观看 | 91人人爽人人爽人人精88v | 青春草视频 | 亚洲精品久久视频 | 999一区二区三区 | 久久久国产精品一区二区中文 | 国产黄色大片 | 中文字幕在线字幕中文 | 在线观看国产永久免费视频 | av青草| 久久久精品午夜 | 99久久精品免费看国产 | 亚洲精品久久久久久久不卡四虎 | 精品国精品自拍自在线 | 国产成人精品久久久 | 超碰在线资源 | 日韩一区二区久久 | 中文字幕在线观看不卡 | 免费视频成人 | 五月香婷| 色六月婷婷 | 国内久久精品 | 国产中年夫妇高潮精品视频 | 国产色小视频 | 亚洲综合欧美日韩狠狠色 | 欧美巨大荫蒂茸毛毛人妖 | 久久精精品视频 | 成人免费av电影 | 99综合视频 | 色鬼综合网 | 国产黄大片在线观看 | 免费在线播放av电影 | 91免费网址 | 国产午夜三级一区二区三 | 亚洲国产日韩欧美 | 日本久久久久久久久久 | 日韩免费视频一区二区 | 91亚色视频 | av网站有哪些 | 国产精品99久久久精品免费观看 | 色综合久久综合中文综合网 | 91精品国 | 国产香蕉97碰碰碰视频在线观看 | 免费观看国产成人 | 久久综合中文字幕 | 超碰在线9 | 97超碰色偷偷 | 精品视频999 | 美女网站视频免费黄 | 国产久草在线观看 | 国产另类xxxxhd高清 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 欧美综合干 | 午夜久久成人 | av网址在线播放 | 亚洲成人黄 | 激情丁香综合五月 | 天天干天天碰 | 97香蕉超级碰碰久久免费软件 | 色综合中文综合网 | 亚州精品国产 | 91麻豆精品国产自产在线 | 欧美精品中文 | 欧美韩日视频 | av片在线看 | av一区在线 | 少妇视频一区 | 色综合久久悠悠 | 热久久免费视频精品 | 日日麻批40分钟视频免费观看 | 亚洲精品男人天堂 | 玖玖色在线观看 | 国产精品涩涩屋www在线观看 | 欧美 日韩 视频 | 欧美午夜久久久 | 国内精品视频在线 | 五月精品 | 国产午夜精品一区 | 久久婷婷视频 | 婷久久 | 最新日韩视频在线观看 | 成人国产精品免费 | 免费看v片网站 | 国产美女免费视频 | 99综合久久 | 天天色天天操综合 | 96超碰在线 | 日韩国产精品一区 | 国产在线观看免费观看 | 在线视频欧美日韩 | 亚洲视频免费在线看 | 6699私人影院 | 毛片永久新网址首页 | 国产精品久久久久久久免费大片 | 免费a v视频 | 天天射天天干天天操 | 波多野结衣视频在线 | 国内精品久久久久久中文字幕 | 久久成年人视频 | 久久国产精品久久精品国产演员表 | 中文字幕日本在线 | 久99久在线视频 | 欧美日韩视频在线 | 久草爱 | 在线 高清 中文字幕 | 91成人免费看片 | 国产精品毛片一区视频播不卡 | 国产成在线观看免费视频 | 国产精品视频999 | 黄色www在线观看 | 国内精品久久久久久久影视简单 | 日韩欧美一区二区三区免费观看 | 日韩精品专区在线影院重磅 | 欧美日韩色婷婷 | 国产一区二区网址 | 中文字幕中文字幕在线中文字幕三区 | 欧美一区二区免费在线观看 | 色资源在线 | 亚洲成人精品 | 欧美日韩综合在线观看 | 伊人五月婷 | 91精品视频免费看 | 欧美精彩视频 | 久久在线影院 | 免费在线看v | 天天插日日射 | 中文在线中文资源 | av黄色大片 | 亚洲视频六区 | 91av蜜桃| 精品人妖videos欧美人妖 | 亚洲精品影院在线观看 | 特级西西www44高清大胆图片 | 久精品视频在线观看 | 久久人人爽人人人人片 | 欧美亚洲免费在线一区 | 日韩电影在线一区二区 | 亚洲蜜桃在线 | 欧美91精品 | 午夜美女网站 | 麻豆免费看片 | 夜夜夜影院 | 色婷婷六月| 国产精品观看在线亚洲人成网 | 久久婷婷色综合 | 最近中文字幕完整视频高清1 | 91自拍视频在线观看 | 日韩在线视频网站 | 亚洲成人资源在线观看 | 欧美一二在线 | 中文字幕国内精品 | 婷婷六月综合亚洲 | 91视频免费看网站 | 欧洲视频一区 | 亚洲国产高清视频 | 九九色在线观看 | 在线免费精品视频 | av观看网站 | 久久99热这里只有精品 | 激情网第四色 | 日日夜夜精品视频 | 色婷婷色| 欧美日韩免费一区 | 久久免费的视频 | 欧美国产日韩一区二区三区 | 开心激情网五月天 | 亚洲一级理论片 | 免费在线观看av的网站 | 天天干天天干天天干 | 精品黄色片 | 91在线看网站 | 午夜久久久久久久 | 欧美成人亚洲成人 | 久久综合精品国产一区二区三区 | 国产五月 | 中文字幕在线高清 | 国产精品视频大全 | 黄色特级片 | 2022久久国产露脸精品国产 | 一区二区三区视频 | 亚洲理论电影 | 久草久草在线观看 | 操操操日日日干干干 | 久久在线看 | 久久超碰网 | 亚洲黄网站| 欧美精品久久人人躁人人爽 | 狠狠操在线| 91看片麻豆| 国产一级片视频 | a√资源在线 | 久久99电影 | 免费视频 你懂的 | 国产精品毛片一区二区在线看 | 免费av在线网站 | 91久久国产露脸精品国产闺蜜 | 久草在线观看视频免费 | 欧美黄在线 | 97人人模人人爽人人喊网 | 日韩欧美一区二区三区视频 | 婷婷五月情 | 91麻豆精品国产91久久久无需广告 | 中文字幕在线观看av | 日韩精品第1页 | a一片一级 | 99免费在线视频观看 | 91精品爽啪蜜夜国产在线播放 | 黄色精品久久久 | 久久久久电影 | 日本久草电影 | 狠狠操欧美 | 99在线视频观看 | 中文字幕一区2区3区 | 亚洲美女免费视频 | 一区二区三区动漫 | 五月天天色 | 精品久久免费 | 精品免费在线视频 | 狠狠插狠狠操 | 亚洲黄色在线观看 | 欧美性黄网官网 | 人人插人人爱 | 亚洲资源在线观看 | 极品国产91在线网站 | 婷婷色网视频在线播放 | 欧美色图一区 | a'aaa级片在线观看 | 国产精品毛片网 | 久久国产精品系列 | 最新av在线播放 | 亚洲三级性片 | 亚洲区精品视频 | 91亚洲精品乱码久久久久久蜜桃 | 亚洲精品xx| 亚洲a网| 91资源在线视频 | 在线观看视频国产 | 欧美日韩在线播放 | 精品美女在线视频 | 免费观看完整版无人区 | 麻豆精品在线视频 | 色干干 | 色综合久久久 | 伊人影院在线观看 | 成人小视频在线观看免费 | 亚洲精品午夜久久久久久久 | 亚洲乱亚洲乱亚洲 | 在线成人性视频 | 91精彩在线视频 | 九九视频免费在线观看 | 99久久久久成人国产免费 | 人人插人人做 | 欧美精品在线观看免费 | 国产精品成人免费精品自在线观看 | 日韩一区二区免费播放 | 国产成人av网站 | 日韩理论影院 | 中文字幕第一页在线播放 | 国产成人精品999在线观看 | 中文字幕资源网在线观看 | 麻豆一二 | 午夜电影久久 | 国产五月婷 | 国产无套精品久久久久久 | 日韩有码网站 | 亚洲高清不卡av | 免费观看av网站 | 国产精品久久久av久久久 | 2020天天干夜夜爽 | a一片一级 | 九九免费在线看完整版 | 一区二区久久 | av大全在线观看 | 国产在线精品视频 | 欧美日韩免费观看一区二区三区 | 欧美怡红院 | 国产 欧美 日产久久 | 中文字幕影片免费在线观看 | 亚洲一级片免费观看 | 天天干天天做天天爱 | 国产资源免费在线观看 | 四虎国产精品成人免费影视 | 天天综合五月天 | 久久69精品久久久久久久电影好 | 亚洲最大av | 狠狠搞,com | 日本三级全黄少妇三2023 | 精品久久久久久亚洲综合网站 | 在线观看中文字幕第一页 | 亚洲三级av | 国产在线 一区二区三区 | 免费看一及片 | 久久久精品免费看 | 成人黄大片视频在线观看 | avsex| 色婷婷啪啪免费在线电影观看 | 国产专区精品 | 特及黄色片 | 欧美三人交 | 97精品国产91久久久久久久 | 中文字幕二区三区 | 亚洲国产视频网站 | 亚洲成a人片在线观看网站口工 | 久久艹国产视频 | 91成人区| 欧美一级性生活 | 天天射天天操天天 | 手机看片久久 | 国产免费久久av | 精品久久1 | 久久观看免费视频 | 成人免费视频网 | 99热精品国产一区二区在线观看 | 国产午夜在线观看视频 | 黄色aaaaa| 日韩欧美一区二区在线观看 | 少妇性bbb搡bbb爽爽爽欧美 | 国产成人三级在线播放 | 亚洲精品久久久久999中文字幕 | 97免费在线观看视频 | 日韩精品不卡 | www.com.日本一级 | 成人app在线免费观看 | 亚洲成人精品在线 | 天天激情天天干 | 一区二区av| 一级一级一片免费 | 97精品国产97久久久久久久久久久久 | 亚洲精品在线一区二区 | 午夜av日韩 | 欧美精品三级在线观看 | 亚洲天天草 | 深爱开心激情网 | 91污污视频在线观看 | 国产亚洲精品久久久久久网站 | 中文字幕亚洲字幕 | 久久色亚洲 | 免费三级骚 | 国产第页 | 久久黄色小说视频 | 免费a视频 | 欧美精品乱码久久久久久 | 91视频啊啊啊 | 麻豆视频在线免费观看 | 日日爽日日操 | 欧美人zozo | 日韩最新中文字幕 | 日韩无在线 | av三级在线看 | 美女网站黄在线观看 | av电影在线观看完整版一区二区 | 久久在线电影 | 久久免费播放视频 | 亚洲 av网站| 亚洲 欧美 变态 国产 另类 | 国产精品一区久久久久 | 色多多污污在线观看 | 一本一本久久a久久精品综合妖精 | 在线中文字幕一区二区 | 国产精品99久久久久久小说 | 欧美久久久一区二区三区 | 久久激情五月婷婷 | 欧美精品天堂 | 亚洲精品91天天久久人人 | 欧美激情精品久久久久久免费 | 日日操天天操狠狠操 | 缴情综合网五月天 | 久久久久激情视频 | 国产午夜精品av一区二区 | 在线国产一区二区三区 | 亚洲精品在线二区 | 欧美日韩不卡一区二区三区 | 丝袜美腿亚洲综合 | 日韩av视屏在线观看 | 麻豆视传媒官网免费观看 | 狠狠gao | 在线a人片免费观看视频 | 日韩av一区二区三区四区 | 精品久久久精品 | 色 免费观看 | 69夜色精品国产69乱 | 国内小视频 | 久久精品五月 | 四虎在线永久免费观看 | 久久精品人人做人人综合老师 | 国产亚洲一级高清 | 91传媒在线观看 | 成人a级黄色片 | 91一区二区在线 | 黄色软件在线观看 | 四虎在线视频免费观看 | 毛片随便看 | 久久久电影 | 日韩色综合 | 久久午夜网 | 三级毛片视频 | 国内精品久久天天躁人人爽 | 超碰在线成人 | 人成电影网 | 国产在线观看网站 | 91桃色在线观看视频 | 国产精品久久久久久高潮 | 欧美久久综合 | 国产1区2区3区精品美女 | 亚洲精品中文字幕在线 | 超碰在线免费福利 | 久久成人一区 | 午夜久久福利视频 | 国产人成免费视频 | 亚洲成年片 | 午夜在线看片 | 嫩嫩影院理论片 | 蜜臀av一区 | 激情久久网 | 国产丝袜高跟 | 999久久久免费视频 午夜国产在线观看 | 国色综合 | 色.com| 精品免费国产一区二区三区四区 | 一区二区三区国 | 人人爽人人香蕉 | 国产精品一区二区av日韩在线 | 日本三级久久久 | 国产精品mv | 午夜视频不卡 | 天天操天天操天天操天天操天天操 | 国产精品不卡 | 婷婷精品国产一区二区三区日韩 | 91传媒在线看 | 国产精品久久久久久久午夜片 | 久久免费视频一区 | 欧美日韩精品在线观看视频 | 欧美一区成人 | 在线免费视频 你懂得 | 成人天堂网 | 婷婷丁香激情五月 | 亚洲三级网 | 天天天天爽| 日韩在线观看高清 | 91精品啪 | 黄网站色 | 国产一区免费在线 | 国产午夜亚洲精品 | 97精品在线 | 中文在线免费视频 | 中文字幕精品三区 | 18av在线视频 | 欧美一级久久久 | 久久99网 | 亚洲人在线7777777精品 | 久久99在线 | av夜夜操 | 久草影视在线 | 亚洲激情在线观看 | 欧美一级久久久 | 在线观看免费av网站 | 在线亚洲高清视频 | 久久精品导航 | 午夜精品久久一牛影视 | 福利视频网址 | 日韩视频免费在线 | 人人草人| 欧美精品一区二区在线观看 | 韩日三级av| 日韩中文字幕亚洲一区二区va在线 | 国产麻豆成人传媒免费观看 | 在线免费观看一区二区三区 | 免费看亚洲毛片 | 成人高清在线观看 | 亚洲精品福利在线 | 美女网站色在线观看 | 好看的国产精品视频 | 久久国产精品久久国产精品 | 日韩av女优视频 | 精品99视频 | 99热这里只有精品8 久久综合毛片 | 又黄又爽的视频在线观看网站 | 欧美精品乱码久久久久 | 一级黄色片在线 | 国产精品中文字幕在线播放 | 青青河边草免费 | 日韩中文字幕在线观看 | 久久婷婷视频 | 国产亚洲永久域名 | 国产免费一区二区三区网站免费 | 99久久综合精品五月天 | 久久婷婷综合激情 | 欧美一区成人 | 亚洲欧美国产精品va在线观看 | 99精品免费在线 | 在线亚洲欧美日韩 | 国产免费大片 | 99在线精品视频观看 | 欧美日韩视频免费看 | 亚洲精品视频在线观看网站 | 国产精品大尺度 | 久久久久久免费毛片精品 | 欧美夫妻性生活电影 | 人人爽人人爽人人片 | 中文字幕亚洲高清 | 91丨九色丨首页 | 99麻豆视频| 欧美激情视频一区 | 亚洲免费av一区二区 | 免费在线成人av电影 | 黄色网免费 | 婷婷激情综合网 | 91天堂在线观看 | 午夜精品久久久久久久久久久久久久 | 九九激情视频 | 99久精品视频 | 日韩欧美在线免费 | 97中文字幕 | bayu135国产精品视频 | 亚洲视频大全 | 国产精品视频app | 日本中文字幕电影在线免费观看 | 成人夜晚看av | 久久综合五月天婷婷伊人 | 国产中文字幕视频在线观看 | 久草剧场 | 97超碰人人在线 | 日韩国产欧美在线视频 | 免费看黄的视频 | www.黄色| 久久国产午夜精品理论片最新版本 | 午夜 在线 | 中文免费| 午夜影院先 | 正在播放五月婷婷狠狠干 | 久久免费黄色网址 | 亚洲精品小区久久久久久 | 久久久久久久久福利 | 国产尤物在线视频 | 亚洲激情视频在线 | 高清av网 | av在线收看 | 欧美性生交大片免网 | 91看成人| 国产视频 亚洲视频 | 国产精品毛片久久久久久久久久99999999 | 色婷婷国产 | 欧美日韩中文国产一区发布 | 中文字幕在线视频精品 | 91在线免费播放 | 午夜精品久久久99热福利 | 亚洲午夜av久久乱码 | 奇米影视8888在线观看大全免费 | 三级在线播放视频 | 91在线国产观看 | 国产福利av在线 | 国产欧美中文字幕 | 免费福利在线 | 国产高清视频 | 久久看视频 | 久久国精品 | 亚洲成人资源 | 四川妇女搡bbbb搡bbbb搡 | 免费成人在线电影 | 精品国产综合区久久久久久 | 色资源网在线观看 | 成人av中文字幕在线观看 | 国产精品嫩草在线 | 五月婷婷丁香 | 色诱亚洲精品久久久久久 | 成人午夜网 | 国产精品国产亚洲精品看不卡15 | 国产成在线观看免费视频 | 亚洲国产成人精品在线观看 | 成人在线免费视频 | 国产91欧美 | 在线综合色 | 国产黑丝一区二区三区 | 日韩中字在线观看 | 色视频 在线 | 久久艹人人 | 免费日韩av片 | 狠狠狠狠狠狠操 | 免费看毛片网站 | 国产视频导航 | 国产综合在线视频 | 国产最新视频在线观看 | 免费看片在线观看 | 欧美日韩亚洲在线观看 | 日韩欧美在线观看 | 中文字幕一区二区三区久久蜜桃 | 在线看片日韩 | 中文字幕亚洲欧美日韩2019 | 色婷五月 | 天天干 夜夜操 | 亚洲永久字幕 | 久久99热精品 | 国产成人免费观看久久久 | 国产精品区免费视频 | 亚洲综合导航 | 456免费视频 | 久久乐九色婷婷综合色狠狠182 | 一级免费片 | 欧美日韩久久一区 | 久久久久亚洲精品国产 | 亚洲三级视频 | 国产高清免费在线观看 | 天天干天天天天 | 99热最新 | 天天插天天色 | 国产一区二区三区免费在线 | 久久综合久久综合这里只有精品 | 国产高潮久久 | 亚洲在线激情 | 国产精品一区二区精品视频免费看 | 国产精品尤物 | 免费看国产黄色 | 玖操| 国产在线91精品 | .国产精品成人自产拍在线观看6 | 狠狠操狠狠干天天操 | 在线观看成人小视频 | 97精产国品一二三产区在线 | 国产精品aⅴ | 视频在线观看入口黄最新永久免费国产 | 久久精品免视看 | 日韩在线视频网 | www操操 | 色久天| 美女视频黄在线 | 综合久久网 | 免费三及片 | 亚洲专区欧美专区 | 欧美一区在线观看视频 | 国产精品涩涩屋www在线观看 | 国产精品系列在线 | 一区二区精品视频 | ,午夜性刺激免费看视频 | 精品久久99 | 成人在线电影观看 | 毛片基地黄久久久久久天堂 | 欧美大香线蕉线伊人久久 | 国产五十路毛片 | 亚洲精品动漫在线 | 亚洲一区日韩精品 | 日韩极品在线 | 成人av亚洲 | 黄色不卡av | www.黄色片.com| 久久伊人五月天 | 一级大片在线观看 | 黄色软件视频大全免费下载 | 亚州免费视频 | 国产婷婷精品av在线 | av成人在线播放 | 91精品秘密在线观看 | 国产成人专区 | 99久精品 | 日韩欧美视频一区二区 | 久久视频这里有久久精品视频11 | 久久精品一 | 精品中文字幕视频 | 在线观看中文字幕第一页 | 91亚洲欧美 | 六月色婷| 国产一区视频免费在线观看 | 99热在线这里只有精品 | 国产精品成人免费 | 免费a v在线 | 久久久久免费精品国产小说色大师 | 中文字幕在线国产精品 | 国产精品成人在线观看 | 四川妇女搡bbbb搡bbbb搡 | 国产3p视频| 国内亚洲精品 | 九九视频免费观看视频精品 | 欧美a级一区二区 | 999成人 | 美女黄色网在线播放 | 欧美美女一级片 | 在线观看涩涩 | 超碰人人超 | 中文字幕av专区 | 国产成人一区二区在线观看 | 日韩视频免费在线观看 | 日韩精品中文字幕有码 | 免费黄色激情视频 | 热99在线| 国产区av在线| 久久久一本精品99久久精品 | 九九免费在线看完整版 | 99在线视频精品 | 超碰人人干人人 | 日本免费一二三区 | 在线影院av| 国产精品1区2区3区 久久免费视频7 | 亚洲欧美日韩一区二区三区在线观看 | 在线观看视频黄色 | 黄色a视频| 国产免费视频在线 | 丁香九月婷婷综合 | 91精品国产福利在线观看 | 日韩在线观看你懂的 | 免费a级大片 | 国产香蕉久久精品综合网 | 久久久久久久久久久久亚洲 | 操操色 | 亚洲一级黄色片 | 在线观看色网 | 97福利| 中文字幕免费观看全部电影 | 欧美成人精品欧美一级乱黄 | 婷婷色网 | 97电院网手机版 | www.xxxx变态.com | 成人av免费在线观看 | 国产成人久 | 中文字幕亚洲精品在线观看 | 亚洲精选在线观看 | 亚洲精品久久久久久久不卡四虎 | 欧美巨大 | 日韩欧美网址 | 激情五月***国产精品 | 日韩一区二区三区不卡 | 久久久久| 最新动作电影 | 日韩毛片一区 | 亚洲视频 视频在线 | 色香蕉视频 | 久久99精品国产麻豆宅宅 | 日本成址在线观看 | 97精品欧美91久久久久久 | 日本少妇高清做爰视频 | 麻豆视频免费入口 | 最新超碰 | 国产精品久久久久影视 | 国产免费黄视频在线观看 | 91精品视频免费看 | 欧美国产精品一区二区 | 狠狠色丁香久久婷婷综合_中 | 亚洲黄色免费观看 | 麻豆一区在线观看 | 久久久亚洲麻豆日韩精品一区三区 | 久久69精品久久久久久久电影好 | 九九av | 国产精品久久久久aaaa | 色婷婷在线播放 | 国产高清一区二区 | 麻豆免费精品视频 | 亚洲精品乱码 | 精品日韩在线一区 | 精品一区二三区 | 久久久久久电影 | 亚洲第一区精品 | 在线看一区二区 | 黄色三级在线观看 | 九九热在线视频 | 一区二区三区播放 | 色吊丝在线永久观看最新版本 | 久久天堂精品视频 | 国产91免费观看 | 国产麻豆精品免费视频 | 中文av影院 | 欧美性生活久久 | 成年人网站免费在线观看 | 久久国产三级 | 国产 成人 久久 | 中文视频一区二区 | 婷婷资源站| 国内精品视频一区二区三区八戒 | a极黄色片 | 在线视频你懂 | 婷婷丁香花 | 国产精品国产亚洲精品看不卡15 | 日韩欧美大片免费观看 | 免费看一级片 | 国产精品国内免费一区二区三区 | 国产高清在线精品 | 精品久久久久久久久久久久久久久久久久 | 久久亚洲视频 | 国产高清精 | 在线色资源 | 亚洲综合小说电影qvod | 一本一本久久aa综合精品 | 国产一区二区在线免费观看 | 五月天六月婷婷 | 天天操夜夜逼 | 国产护士av | 亚洲 中文字幕av | 久久综合五月天 | 在线直播av | 中文字幕在线国产精品 | 日韩精品久久久久久久电影竹菊 | 久久精品视频网址 | 中文字幕日韩一区二区三区不卡 | 亚洲毛片一区二区三区 | 少妇搡bbbb搡bbb搡69 | av网站在线免费观看 | 亚洲电影久久 | 超碰97中文| 中文字幕一区二区三区四区久久 | 亚洲精品欧美精品 | 久久黄色成人 | 日本中文字幕电影在线免费观看 | 成人免费观看完整版电影 | 激情开心网站 | 国产精品毛片一区二区在线看 | 国产日产在线观看 | 亚洲一级特黄 | 日韩精品在线视频免费观看 | 日韩久久视频 | 最新国产视频 | 亚洲成人免费观看 | 国产精品一区二区三区在线免费观看 | 欧美午夜性生活 | 免费成人av在线看 | 亚洲日本中文字幕在线观看 | 97夜夜澡人人爽人人免费 | 在线观看视频你懂得 | 国产黄色片一级三级 | 在线不卡a| 水蜜桃亚洲一二三四在线 | 91精品在线观看视频 | 欧美精品一区二区三区四区在线 | 天天爱天天操天天爽 | 国产一区二区久久久久 | 亚洲国产中文字幕在线 | 亚洲成a人片综合在线 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | a黄色大片 | 成人免费色 | 亚洲一片黄 | 成人在线超碰 | 久久99电影 | 丝袜足交在线 | 人人看人人爱 | 亚洲日本精品视频 | 亚洲国产精品视频在线观看 | 99久久er热在这里只有精品15 | av一区在线播放 | 在线视频欧美日韩 | www.久久视频 | 丰满少妇一级 | 日韩中文字幕在线不卡 | 亚洲一一在线 | 日韩三区在线观看 | 久久精品精品电影网 | 久久久精品视频网站 | 国产精品av一区二区 | 91福利视频免费观看 | 国产成人性色生活片 | 青青射 | 国产精品久久久久久久婷婷 | 亚洲成人av片在线观看 | 日韩精品视频在线观看网址 | 成人精品在线 | 最近中文字幕大全中文字幕免费 | 日本最新一区二区三区 | 91久久国产自产拍夜夜嗨 | a在线观看免费视频 | 精品超碰 | av在线免费在线观看 | 日韩精品一区电影 | 99久久99久久综合 | 91成人精品国产刺激国语对白 | 久久香蕉影视 | 最近字幕在线观看第一季 | 国产又粗又猛又色又黄网站 | 玖玖精品视频 | 99精品视频免费看 | 久久精品导航 | 在线免费av播放 | av高清影院 | 国产精品日韩欧美一区二区 | 国产一区二区三区免费在线观看 | 亚洲成人高清在线 | 99爱精品视频 | 黄色成年| 蜜臀久久99精品久久久久久网站 | 免费亚洲片 | 日韩r级在线 | 国产成人精品av在线观 | 丰满少妇麻豆av | 欧美一级艳片视频免费观看 | 亚洲精品1234区 | www.狠狠操.com | 国产精品少妇 | 97免费视频在线播放 | 亚洲欧洲成人 | av视屏在线 | 亚洲免费在线观看视频 | 福利视频一区二区 | 国产成人av电影 | 久久毛片高清国产 | 波多野结衣小视频 | 日韩精品亚洲专区在线观看 | 亚洲一级电影在线观看 | 成人丝袜| 国产 精品 资源 | 中文字幕在线字幕中文 | 精品久久久久_ | 人人爽人人澡人人添人人人人 | 91一区二区在线 | av超碰在线| 99久久99久久精品 | 日韩欧美一区二区不卡 | 国产91九色蝌蚪 | 午夜av剧场| 婷婷久久综合九色综合 | 欧洲成人av | 91九色视频网站 | 在线国产观看 | 在线三级播放 | 粉嫩av一区二区三区四区在线观看 | 国产视频九色蝌蚪 | 四虎在线视频免费观看 | 国产精品999久久久 久产久精国产品 | 婷婷色综合色 | 日韩有码中文字幕在线 | 成人av在线观 | 韩国一区在线 | 国产97碰免费视频 | 天天在线视频色 | 国产免费嫩草影院 | 久久免费大片 | 国产午夜精品视频 | 在线中文日韩 | 久久久国产日韩 | 久久国产精品色婷婷 | 精品国产乱码久久久久久1区二区 | 69绿帽绿奴3pvideos | 草久久久久久久 | 综合婷婷丁香 | www.久艹| av观看免费在线 | 456免费视频| www.久久久.cum | 日韩在线观看视频免费 | 91完整版| 久久精品视频国产 | 免费看麻豆 | 色在线中文字幕 | www国产在线 | 天堂在线免费视频 | 日本亚洲国产 | 日韩精品免费在线观看 | 色无五月 | 免费福利在线观看 | 欧美二区三区91 | 中文字幕在线看视频国产中文版 | 精品国产精品久久 | 91亚洲精品久久久蜜桃 | 日韩欧美视频在线 | 激情五月五月婷婷 | 中文字幕 婷婷 | 亚州av网站 | 激情五月播播久久久精品 | 九九九九免费视频 | 亚洲电影院 | 黄色毛片视频免费观看中文 | 久久久久欧美精品999 | 伊人婷婷 |