3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

框架复习(一):不如写个tiny-Spring?(完整版)

發布時間:2023/12/14 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 框架复习(一):不如写个tiny-Spring?(完整版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 框架復習(一):不如寫個tiny-Spring?
    • 項目來源
    • IOC
      • 為什么要有IOC?
      • IOC部分要實現什么功能?
      • 第0步:下載項目
      • 第1步:最基本的容器
      • 第2步:將bean創建放入工廠
      • 第3步:為Bean注入屬性
      • 第4步:讀取xml配置來初始化bean
      • 第5步:為bean注入bean
      • 第6步:ApplicationContext登場
    • AOP
      • 理解動態代理設計模式
      • 理解AOP
      • Spring AOP與Aspect
      • 第7步:使用JDK動態代理實現AOP織入
      • 第8步:使用AspectJ管理切面
      • 第9.1步:完善Bean的生命周期
      • 第9.2步:將AOP融入Bean的創建過程
      • 第9.3步:目前還存在的問題
        • 原作者代碼中的一個錯誤
        • 修正錯誤后帶來的新問題
        • 只能對接口代理
      • 第9.4步:萬惡之源
      • 第10步:使用CGLib進行類的織入
        • 如何使用CGLib實現動態代理
      • 第11步:通過三級緩存徹底解決循環依賴
    • 小結

框架復習(一):不如寫個tiny-Spring?

項目來源

https://github.com/code4craft/tiny-spring

IOC

https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247484247&idx=1&sn=e228e29e344559e469ac3ecfa9715217&chksm=ebd74256dca0cb40059f3f627fc9450f916c1e1b39ba741842d91774f5bb7f518063e5acf5a0#rd

為什么要有IOC?

https://www.zhihu.com/question/23277575

  • 什么是依賴?

依賴,可以粗暴地理解為import,如果代碼中import了某個類,那這段代碼就依賴了這個類。面向接口編程時,邏輯都是接口邏輯(例如接口IA,有方法doX,doY,接口邏輯例如是main中實例化了IA后,順序執行了doX和doY),但具體實例化的對象是IA接口的實現(例如類CA實現了IA,重寫了方法doX,doY)。如果不用工廠,直接new,那么main文件里面就必須import了CA,也就是main“依賴”了CA這個實現。而面向接口編程中,main應該跟CA解耦(就是不直接依賴CA,不會看到import CA)。工廠方法就是解決這種import CA的解決途徑之一,簡單工廠為例,原本main里面的IA a = new CA(),就變成了IA a = AFactory.getA(“CA”),并且getA的具體實現中,可以通過如果是字符串“CA”就new CA()返回了。這樣子的話,main里面就不用import CA了(但是要import AFactory),也即是不“依賴”CA,與CA解耦了。依賴注入,就是把上面的工廠,獲取CA對象的方式,變成反射(也還是根據字符串來生成對象,不過就不用簡單工廠if-else那么粗暴了,多一個if又要改一遍工廠的實現,多累啊),根據配置來生成對象。不用import某個實際類,但是也把依賴(邏輯過程實際執行還是CA來做的)給注入(放到main中)了。(上述的main指代任意一個邏輯執行過程,不一定是main函數)

  • 依賴注入,把底層類作為參數傳入上層類,實現上層類對下層類的控制。A類中:@Autowird B b;那不論B類怎么改變,都不需要改變A類中的代碼。比如構造函數創建A(B b),還有Setter創建。反轉A類中不應該B b=new b(),而是應該從外界注入。
    • 從哪個外界注入呢?Spring設計的是IOC容器,相當于是框架本身管理注入過程。相當于A需要B b的時候,框架就getBean(“b”)給A類。
    • 如果A需要b,B需要a,怎么注入?控制反轉,交給IOC容器去解決。tiny-spring的實現思路:先根據xml獲得全部bean標簽內容,然后在getBean的時候再lazy-init。這樣A需要b時,會先創建A,當遇到b時轉而去創建b,最后在創建出完成的A。整個類似于一個遞歸(dfs)的過程。
  • IOC,控制反轉,通過配置文件/注解自動對對象進行初始化
    • 控制反轉解決了對象層級嵌套的問題,在創建一個對象時可以自動創建依賴對象并注入,Spring的IOC容器實現了從xml或注解中進行自動初始化。
    • 控制反轉容器因為是自上而下創建實例的,因此不需要知道其依賴類的創建方法,屏蔽了內部的細節,從外部看像一個工廠。

IOC部分要實現什么功能?

  • 讀取XML文件,標簽為beans和property
  • property內標簽可為value或ref,即支持依賴注入
  • 封裝成ApplicationContext創建所有的bean,并且解決循環依賴
  • TODO:注解版和Java配置版
  • 第0步:下載項目

    https://github.com/code4craft/tiny-spring

    • 請用git clone下載,這樣才能夠通過git checkout step-1-container-register-and-get一步一步的查看不同版本。

    第1步:最基本的容器

    • 最基本的容器是指BeanFactory和BeanDefinition。前者有一個ConcurrentHashMap<String,BeanDefinition>,因為實現xml中字符串id對對象實例的映射。BeanDefinition包裝了Bean。

    第2步:將bean創建放入工廠

    • Spring中Bean實例的生成是由容器控制的,而不是由用戶,因此Bean對象的創建要放在BeanFactory中。為了仿照Spring,因此抽象出FactoryBean接口,AbstractBeanFactory模板類。模板類中最重要的是protected doCreateBean()。

    • 在注冊的時候通過反射調用doCreateBean方法創建對象,并放入BeanDefinition包裝類中。doCreateBean相當于是個動態工廠,根據string類型的全類名反射出一個Object對象。

      public void registerBeanDefinition(String name,BeanDefinition beanDefinition){Object bean = doCreateBean(beanDefinition);beanDefinition.setBean(bean);beanDefinitionMap.put(name,beanDefinition); }
    • 到這一步就實現了BeanFactory的實現類可以通過全類名創建一個對象。

      public class BeanFactoryTest {@Testpublic void test(){BeanFactory beanFactory = new AutowireCapableBeanFactory();BeanDefinition beanDefinition = new BeanDefinition();//創建一個包裝類beanDefinition.setBeanClassName("beans.Car");//通過反射創建,要求必須有無參構造函數beanFactory.registerBeanDefinition("audi",beanDefinition);//注冊到hashmap中,注冊之前先調用doCreateObject方法創建對象,實現了在Facoty中創建對象System.out.println((Car)beanFactory.getBean("audi"));} }
    • 在看上述代碼,我們要傳給factory什么?1.全類名,即beans.Car。2.實例化后的實例名稱,即audi。這兩項顯然我們都能在配置的xml中獲取,這在第四步中完成。其次,我們目前創建出的對象還是一個依靠無參構造函數創建的,因此內部成員變量均為null,所以下一步是對成員變量進行賦值。

    第3步:為Bean注入屬性

    • 這一步有兩個類,PropertyValues和PropertyValue。PV類相當于是C++中的Pair<String fieldName,Object Value>類,保存字段和字段對應的值。PVS中保存了一個對象中所有字段和值的對應關系,即保存了一個List。每個BeanDefinition中都有一個PVS,因此每個BeanDefinition在創建完空Bean后可以遍歷PVS,通過反射實現Setter。

      protected void applyPropertyValues(Object bean,BeanDefinition mbd) throws NoSuchFieldException, IllegalAccessException {for(PropertyValue propertyValue:mbd.getPropertyValues().getPropertyValues()){Field declaredField = bean.getClass().getDeclaredField(propertyValue.getName());declaredField.setAccessible(true);declaredField.set(bean,propertyValue.getValue());} }

    第4步:讀取xml配置來初始化bean

    • 解決獲取IO流的問題?URL類定位xml文件,url.openConnect().connect()即可定位并打開文件,利用getInputStream獲得文件輸入流。
    • 通過XMLBeanDefinitionReader類和DocumentBuilder對xml進行解析。先根據bean定位到所有的bean,根據類名和實例名構建一個空實例,然后每一個bean中定位property,利用PVS類和PV類實現對bean屬性的賦值
    • 官方結構

    第5步:為bean注入bean

    • 核心解決三個問題1.ref怎么實現?2.怎么解決xml中順序問題?2.怎么避免循環依賴?
  • 怎么實現ref?

    • 這個問題好解決。判斷xml中是ref還是value,如果是value(本項目目前value如果是基本類型,只允許是String)則直接用PV(PropertyValue)封裝,如果是ref,就用BeanReference{name,bean}封裝一下然后再用PV封裝。

      private void processProperty(Element ele, BeanDefinition beanDefinition) {NodeList propertyNode = ele.getElementsByTagName("property");for (int i = 0; i < propertyNode.getLength(); i++) {Node node = propertyNode.item(i);if (node instanceof Element) {Element propertyEle = (Element) node;String name = propertyEle.getAttribute("name");String value = propertyEle.getAttribute("value");if (value != null && value.length() > 0) {beanDefinition.getPropertyValues().addPropertyValue(new PropertyValue(name, value));} else {String ref = propertyEle.getAttribute("ref");if (ref == null || ref.length() == 0) {throw new IllegalArgumentException("Configuration problem: <property> element for property '"+ name + "' must specify a ref or value");}BeanReference beanReference = new BeanReference(ref);beanDefinition.getPropertyValues().addPropertyValue(new PropertyValue(name, beanReference));}}} }
    • 在調用applyPropertyValues()方法——通過反射裝填實例的成員變量時,如果該變量是BeanReference,則該變量有可能需要創建一下。

      protected void applyPropertyValues(Object bean, BeanDefinition mbd) throws Exception {for (PropertyValue propertyValue : mbd.getPropertyValues().getPropertyValues()) {Field declaredField = bean.getClass().getDeclaredField(propertyValue.getName());declaredField.setAccessible(true);Object value = propertyValue.getValue();if (value instanceof BeanReference) {BeanReference beanReference = (BeanReference) value;value = getBean(beanReference.getName());}declaredField.set(bean, value);} }
    • 注意上述代碼中的value=getBean(beanReference.getName())。實例的創建過程有可能就在此刻完成。這里需要明確的是下圖:
      讀取xml后,所有的類信息都在XmlBeanDefinitionReader實例中,但是XmlBDFR中的beanDefinition們并沒有創建實例,即空有類信息(className,PropertyValues),但是bean為null。此時,如果遇到A實例a的b字段ref C實例c,但是此刻C實例c還未初始化,在裝配A實例a的b字段的時候,就會用getBean創建c。(為什么能創建c呢?因為在創建工廠后,緊接著的操作就是把xmlBDFR中的所有beanDefinition寫入工廠的ConcurrentHashMap中,即工廠也有了全部的信息,因此可以創建c。)

      BeanFactory beanFactory = new AutowireCapableBeanFactory(); for(Map.Entry<String,BeanDefinition> beanDefinitionEntry:xmlBeanDefinitionReader.getRegistry().entrySet()){beanFactory.registerBeanDefinition(beanDefinitionEntry.getKey(),beanDefinitionEntry.getValue()); } ((AutowireCapableBeanFactory) beanFactory).preInstantiateSingletons();
  • 通過getBean時創建實例的這種lazy-init方式,實現了不依靠xml中順序。這樣再創建實例的時候如果實例的依賴還沒有創建,就先創建依賴。

  • 所謂循環依賴是類似以下的情況

    <bean name="outputService" class="com.sonihr.beans.OutputService"><property name="helloWorldService" ref="helloWorldService"></property> </bean><bean name="helloWorldService" class="com.sonihr.beans.HelloWorldServiceImpl"><property name="text" value="Hello World!"></property><property name="outputService" ref="outputService"></property> </bean>

    在doCreateBean中,創建完空的bean(空的bean表示空構造函數構造出的bean)后,就放入beanDefinition中,這樣a ref b,b ref a時,a ref b因此b先創建并指向a,此時的a還不是完全體,但是引用已經連上了,然后創建好了b。然后b ref a的時候,a已經創建完畢。

  • 第6步:ApplicationContext登場

    • 這一步就是用ApplicationContext包裝之前的代碼public void refresh() throws Exception {XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(new ResourceLoader());xmlBeanDefinitionReader.loadBeanDefinitions(configLocation);for (Map.Entry<String, BeanDefinition> beanDefinitionEntry : xmlBeanDefinitionReader.getRegistry().entrySet()) {beanFactory.registerBeanDefinition(beanDefinitionEntry.getKey(), beanDefinitionEntry.getValue());} }![](http://img.sonihr.com/6a51bce1-149f-4ad0-8d9b-2b4f33c6399b.jpg)
    • 這樣只要如下調用即可 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("tinyioc.xml"); ((ClassPathXmlApplicationContext) applicationContext).refresh(); System.out.println(applicationContext.getBean("car2"));

    AOP

    https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247483954&idx=1&sn=b34e385ed716edf6f58998ec329f9867&chksm=ebd74333dca0ca257a77c02ab458300ef982adff3cf37eb6d8d2f985f11df5cc07ef17f659d4#rd

    理解動態代理設計模式

    • 靜態代理模式

      通過構造函數注入的方式,將被代理類B的實例b注入Proxy中,然后Proxy實現A接口a方法時,在調用b.a()之前之后都可以寫自己的代理邏輯代碼。

    • 動態代理模式

      將接口A的字節碼文件+一個構造器,這個構造器繼承自Proxy,就構成了代理類的基本字節碼。Prxoy構造器中必然依賴InvocationHandler實例,這個InovocationHandler實例要重寫invoke方法以實現1.Proxy中所有A接口方法全部使用handler.invoke。2.hanler.invoke()調用被代理實例的a(),并且可以在其中寫代理邏輯。3.Proxy的a方法調用的invoke,則內部就代理a方法。

      分解操作:

      public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {//指定被代理類實例Car target = new Car();//指定類加載器和接口Class carClazz = Proxy.getProxyClass(target.getClass().getClassLoader(),Drivebale.class);//創建構造函數Constructor constructor = carClazz.getConstructor(InvocationHandler.class);//反射創建代理類實例Drivebale car = (Drivebale) constructor.newInstance(new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("前");method.invoke(target,args);System.out.println("后");return null;}});car.running(); }

      一句話版本:

      public static void main(String[] args) {Car target = new Car();Drivebale car = (Drivebale) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("這就是JDK動態代理的正確用法");method.invoke(target,args);System.out.println("結束");return null;}});car.running(); }
    • 靜態代理和動態代理的區別

      本質區別,靜態代理是在運行期之前就編譯好的class文件,動態代理是運行期中生成的class文件。

    • 代理模式和裝飾模式的區別

      • 相同點都是返回一個功能更豐富的類。
      • 代理模式強調與被代理類無關的功能,比如被代理類是核心業務邏輯代碼,代理模式增加日志等輔助功能。包裝模式強調對被包裝類進行功能性的加強。
      • 代理模式控制對方法的訪問,可以不讓訪問者知道被代理的對象,Thread(Runnable target),MyBatis的Mapper。裝飾著模式為方法添加額外的行為,一般通過構造函數注入,IO流。
    • 代理模式的應用

      • 靜態代理:Thread implements Runnable,Thread(Runnable target),thread.run{target.run}。我們只用關心Runnable的業務邏輯,而不用關系線程創建,銷毀等具體的事情。

      • 動態代理:MyBatis中的Mapper。

        https://blog.csdn.net/xiaokang123456kao/article/details/76228684

        SqlSession session = sqlSessionFactory.openSession(); //獲取mapper接口的代理對象 UserMapper userMapper = session.getMapper(UserMapper.class); //調用代理對象方法 User user = userMapper.findUserById(27);

        比如UserMapper這個接口,如果要用靜態代理,就必須手動寫一個實現該接口的代理類,如果你有很多個接口,就要寫很多個代理類,工作量很大。但是采用動態代理后,XXXMapperProxy通過反射實現XxxMapper接口內方法并創建構造函數,創建后在invoke中實現邏輯。

    理解AOP

    https://blog.csdn.net/javazejian/article/details/56267036

    • 為什么要有AOP?

      • 在面向對象編程的這些年,我們遇到了一些問題。


      參數檢查,日志,異常處理,事務開始和提交,這些都是重復代碼,怎么解決呢?面向切面編程,將這些功能抽取出來,然后定義point cut(切入點),在point cut上進功能的weaving織入,從而形成一個aspect切面。

    • 專屬名詞

      • join point:Spring中每個方法都可以是join point

      • point cut:我們想要切入的那些join point

      • advice:通知,即代理邏輯代碼

      • aspect:point cut+advice等于一個切面

      • weaving:切面應用到目標函數的過程

    Spring AOP與Aspect

    https://zhuanlan.zhihu.com/p/24565766

    • Spring aop和Aspect不是一個東西

    • Aspect是一套獨立的面向切面編程的實現方案,通過編譯器實現靜態織入.

    • Spring AOP基于動態代理設計模式的動態織入,基礎技術為jdk動態代理和CGLIB技術,前者基于反射技術且只應用于接口,后者基于繼承了用于類。

    • Spring AOP使用了Aspect的部分內容(主要是實現XML配置解析和類似 Aspectj 注解方式的時候,借用了 aspectjweaver.jar 中定義的一些annotation 和 class),但是并沒有使用其編譯器和織入器,可以認為是Aspect風格的,但是實現完全不同。

    • AOP Alliance 是AOP的接口標準,定義了 AOP 中的基礎概念(Advice、CutPoint、Advisor等),目標是為各種AOP實現提供統一的接口,本身并不是一種 AOP 的實現。Spring AOP, GUICE等都采用了AOP Alliance中定義的接口,因而這些lib都需要依賴 aopalliance.jar。

    第7步:使用JDK動態代理實現AOP織入

    • 這一步我們就是利用之前說到的動態代理模式,幾乎一模一樣的完成織入。想一下,我們實現動態代理要用Proxy.newInstance,我們可以封裝一個動態代理類,就叫做JdkDynamicAopProxy implements InvocationHandler。由之前的動態代理知識可知,實現了InvocationHandler就必須實現invoke方法,那我們這樣寫:

      @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// MethodInterceptor methodInterceptor = advised.getMethodInterceptor();// return methodInterceptor.invoke(new ReflectiveMethodInvocation(advised.getTargetSource().getTarget(),method,args));System.out.println("方法開始");Object result = method.invoke(advised.getTargetSource().getTarget(),args);System.out.println("方法結束");return result; }

      這樣就可以將所有代理方法前后打印兩句話了。我們通過getProxy返回構造好的代理類:return Proxy(getClass.getClassLoader,new Class[]{target.getClass},this。因為本類就是InvocationHandler的實現類,因此最后一個用this即可。

    • 我們知道想成功代理一個實例需要2個要素1.被代理的實例2.被代理的接口。我們用AdvisedSupport進行封裝,包括target、targetClass(其實應該是targetInterface)(前兩個被封裝進TargetSource,而TargetSource被封裝進AdvisedSupport)、methodInterceptor.等一下,methodInterceptor是個什么吊參數?

    • 聰明的小朋友已經發現了,按照我們這樣寫,功能只能是對被代理的方法前后加一句話而已,那有沒有一種方式能讓我們能定制對方法調用時進行的控制?有,就是MethodInterceptor,即方法攔截器類。

      http://aopalliance.sourceforge.net/doc/org/aopalliance/intercept/MethodInterceptor.html

      • MethodInterceptor,環繞切點進行織入
      • MethodBeforeAdvice,切點前側織入
      • MethodAfterAdvice,切點后側織入
      • ThrowsAdvice,切點的目標方法出現異常時調用
    • 與上文采用的動態代理不同,我們可以通過配置攔截器來配置不同的代理邏輯。但是注意methodInterceptor.invoke方法中還有個methodInvovation,這個類用于調用我們的target的方法,因此這個類需要target實例,method和args。

    • 所以其實啊MethodInvocation就是point cut,而MethodInterceptor就是advice,Invocation負責調用target方法即切點方法,Interceptor負責代理邏輯即advice。

    • 這一步到此為止可以做到:1.寫一個實現MethodInterceptor的實現類,實現增強功能。2.實現對接口方法的代理。

      // 1. 設置被代理對象(Joinpoint) AdvisedSupport advisedSupport = new AdvisedSupport(); TargetSource targetSource = new TargetSource(car,Driveable.class); advisedSupport.setTargetSource(targetSource);// 2. 設置攔截器(Advice) TimerInterceptor timerInterceptor = new TimerInterceptor(); advisedSupport.setMethodInterceptor(timerInterceptor);// 3. 創建代理(Proxy) JdkDynamicAopProxy jdkDynamicAopProxy = new JdkDynamicAopProxy(advisedSupport); Driveable carProxy = (Driveable)jdkDynamicAopProxy.getProxy();// 4. 基于AOP的調用 carProxy.running();
    • 給出一個AOP采用的動態代理方式的小demo

      class ReflectMethodInvocation implements MethodInvocation{private Method method;private Object target;private Object[] args;public ReflectMethodInvocation(Method method, Object target, Object[] args) {this.method = method;this.target = target;this.args = args;}@Overridepublic Method getMethod() {return method;}@Overridepublic Object[] getArguments() {return args;}@Overridepublic Object proceed() throws Throwable {return method.invoke(target,args);}@Overridepublic Object getThis() {return target;}@Overridepublic AccessibleObject getStaticPart() {return method;} }public class JdkAopNew {public static void main(String[] args) {Car car = new Car();MethodInterceptor methodInterceptor = new MethodInterceptor() {@Overridepublic Object invoke(MethodInvocation methodInvocation) throws Throwable {System.out.println("攔截器方式動態代理前");methodInvocation.proceed();System.out.println("后");return null;}};Drivebale drivebale = (Drivebale) Proxy.newProxyInstance(car.getClass().getClassLoader(), car.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {return methodInterceptor.invoke(new ReflectMethodInvocation(method,car,args));}});drivebale.running();} }

    第8步:使用AspectJ管理切面

    • 第7步解決了怎么織入的問題,下面就是在哪里織入?Spring采用了AspectJ風格的標示性語句來表示在哪些位置進行織入,即哪些位置是point cut。類似下面的語句<aop:pointcut id="pointcut" expression="execution(public int aopxml.Calculator.*(int, int ))"/>。Spring可以對類和方法做插入,因此我們也要實現對類和方法表示point cut的功能。

    • 先寫出ClassFilter接口和MethodMathcer接口,望文生義的說前者是類過濾器,后者是方法匹配器。具體怎么匹配呢?就在我們的AspectJExpressionPointcut中。

    • AspectJExpressionPintcut中要做這樣幾件事1.獲得String expression即AspectJ風格表達式2.創建PonitcutParser,即解析AspectJ風格表達式的解析器。3.expression被解析后就變成了pointcutExpression。即expression是輸入,pointcutParser是輸出,pointcutParser是解析器,將輸入解析成輸出。這個解析器怎么創建呢?直接new一個行不行啊?不行。正確的創建方式為:pointcutParser = PointcutParser.getPointcutParserSupportingSpecifiedPrimitivesAndUsingContextClassloaderForResolution(supportedPrimitives);后面的supportedPrimitives指的是執行的AspectJ語言風格的關鍵字,是一個set。那請問支持哪些關鍵字呢?去org.aspectj.weaver.tools包內的PointPrimitive就可以看奧。

      可以看出pointcutExpression是對expression的封裝。

    • pointcutExpression是創建好了,但是有什么用呢?這個類可以用于匹配方法和類。

      //匹配類 pointcutExpression.couldMatchJoinPointsInType(targetClass); //匹配方法 ShadowMatch shadowMatch = pointcutExpression.matchesMethodExecution(method);
    • 所以其實AspectJ包已經幫你做好了解析和匹配的事兒,只不過你不會用他的編譯器,你用動態代理的方式實現了織入。

    • AspectJExpressionPointcutAdvisor封裝了pointcut和advice,實現了一個完整的切面,切面=切點+advice。p.s.advice就是代理邏輯代碼。

    第9.1步:完善Bean的生命周期

    • 生命周期,最后還有一個destroy沒有顯示出來。
    • BeanPostProcessor接口(下稱BPP接口)是AOP在Bean創建方面的應用——根據Spring的生命周期,BeanPostProcessor是在創建Bean的構造函數,setter方法后。并且所有BPP接口實例都不會受到BPP影響,即BPP的實例過程不會有before和after的影響。
    • BPP接口實例要率先被實例化,并且實例化過程幾乎不會存在依賴ref。
    • 一般實例的創建過程

    第9.2步:將AOP融入Bean的創建過程

    • 第7和第8步我們已經完成了AOP的point識別和識別后的織入,但是兩個功能沒有整合,同時也沒有和Spring的IOC整合起來。目的是為了,IOC給我們的容器已經不再是我們自己寫的實例,而是被織入了advice的實例——如果該類在pointcut則返回new JdkDynamicAopProxy,否則返回bean。

      public Object postProcessAfterInitialization(Object bean, String beanName) throws Exception {if (bean instanceof AspectJExpressionPointcutAdvisor) {return bean;}if (bean instanceof MethodInterceptor) {return bean;}List<AspectJExpressionPointcutAdvisor> advisors = beanFactory.getBeansForType(AspectJExpressionPointcutAdvisor.class);for (AspectJExpressionPointcutAdvisor advisor : advisors) {if (advisor.getPointcut().getClassFilter().matches(bean.getClass())) {AdvisedSupport advisedSupport = new AdvisedSupport();advisedSupport.setMethodInterceptor((MethodInterceptor) advisor.getAdvice());advisedSupport.setMethodMatcher(advisor.getPointcut().getMethodMatcher());TargetSource targetSource = new TargetSource(bean, bean.getClass().getInterfaces());advisedSupport.setTargetSource(targetSource);return new JdkDynamicAopProxy(advisedSupport).getProxy();}}return bean; }
    • 第一幕:和9.1非常類似的,僅有標紅出不同。因為AspectJAwareAdvisorAutoProxyCreator implements BBP,BeanFactoryWare,因此不同僅僅是,因為實現了BeanFactoryAware接口,因此調用setFactory方法。這一步的目的是為了是的AspectAwareAdvisorAutoProxyCreator中具有beanFactory,方便從中獲取AspectJExpressionPointcutAdvisor.class類的實例。

    • 第二幕:這一幕是目前為止最復雜也最重量級的。相當于把第9.1步和7,8兩步合起來了,歸納如下:

    • 首先因為autoProxyCreator implements BBP,BeanFactoryAware,因此其必然先于所有一般實例和AOP實例創建,而且所有一般實例和AOP實例都必然要經過autoProxyCreator的before和after處理
    • 當實例化一般實例和AOP實例時,after中對實例進行檢查,如果其肯定不需要代理,比如說是提供代理pointcut與advice的AspectJExpressionPointcutAdvisor或是提供advice的methodInterceptor。如果和expression給出的表達式不匹配的類也不進行代理。對那些對expression匹配的類,就返回proxy類實例代替原來的bean。
    • 小結:1.先通過BBP接口特性實現每個非BBP實例都必須經過BBP實例的before和after方法。2.正是因為BBP的這種特性,因此after方法中對非BBP實例進行檢查,如果和expression表示的point cut匹配則返回代理對象,否則返回原對象。
    • 第一幕創建BBP實例,以編譯對所有非BBP實例進行before、after操作。第二幕通過判斷該類是否為point cut從而確認返回原實例還是代理實例,到第二幕已經將實例創建完畢。第三幕指的是,當實例調用接口方法時,如果該方法是pointcut,則會調用如下流程:

      invocationHandler.invoke(proxy,method,args)調用methodInterceptor.invoke(methodInvocation),methodInterceptor內部進行1.代理編碼的實現2.函數參數methodInvocation調用proceed,從而執行被代理實例的method方法。因為methodInvocation要可以調用被代理實例的method,因此methodInvocation當你想要實現這個接口時,必須要指定被代理實例target,被代理實例的方法method和參數args。

    第9.3步:目前還存在的問題

    原作者代碼中的一個錯誤

    • 來自Github原項目的Issues中:

      https://github.com/code4craft/tiny-spring/issues/10
      問題是:在進行測試的時候,發現調用非BPP實例的接口方法時,并沒有被代理。

    • 什么原因呢?原Issues里面也說了,要加上一句beanDefinition.setBean(bean).這句話是不是有些眼熟?邏輯是這樣的:
    • 先給出非AOP實例(即實例沒有pointcut)情況下,這部分的詳細邏輯
    • 再給出有AOP(即有pointcut,需要代理)情況下,這部分的詳細邏輯

      可以看到,第一次setBean實現了將beanDefinition.bean指向內存空間a。此時bean和beanDefinition.bean指向了同一塊內存區域,因此對bean的操作本質上是對內存空間a的操作,而beanDefinition.bean也指向這塊內存區域,因此對這塊區域propertyvalue的賦值不影響beanDefinition.bean的引用關系。
      **但是!**當return new之后,bean已經指向了不同的內存空間b,beanDefinition.bean仍然指向內存空間a,因此需要重新set。

    修正錯誤后帶來的新問題

    • 來自Github原項目的Issues中:

      https://github.com/code4craft/tiny-spring/issues/17
      問題是:如果a ref b,b ref a,且順序也是這樣。

    • 這個問題很奇怪。我們看看在實際Spring中的實驗效果:

      • 實驗準備:

      這些類望文知意我就不解釋了。

      而且確實是循環依賴的

      • 實驗過程:

      • 實驗一:

        可以看出,單獨的calculator和book都可以被正常代理。當然,在TinySpring中也是符合的。

      • 實驗二:

        在Spring中,接口實現類根本不用考慮這個問題,因為根本無法運行。邏輯在于,你獲得的A和B本質上都是代理類,代理類只實現了代理接口,因此無法強轉為某一個具體的實現類。所以A.B.b()和B.A.a()從本質上根本就不會強轉成功。

      • 實驗三:

        怎么樣才能正確進行這個實驗呢?上一個回答說到,不能進行實驗的本質是因為只能代理接口而不能代理類,所以Spring通過Cglib實現類代理。

        通過proxy-target-class標記為true后,強制開啟cglib,此時再看實驗結果。


        成功!

      • 小結論實驗三證明,強制開啟Chlib后,可以進行本實驗,且Spring解決了循環依賴的問題。那原作者的tiny spring是不是進行第10步之后,就解決了呢?答案是沒有,因為Cglib只是讓我們的實驗可以正常進行,不代表能解決這個問題。Spring是通過三級緩存解決的。

        上圖是第10步做完后的效果,發現問題還未解決。

    只能對接口代理

    • 只能對接口代理,為了對這個問題有深入的認識,我們舉出以下兩個例子:
      • 例子1:CA implements A。CA類中出了有A接口的a()以外,還有c(),當動態代理后,返回的CA類實例是proxy,因此只能轉換為A類型,所以永遠無法使用c()。這要求,CA中所有方法必須實現A。
      • 例子2:CA implements A,CB implements B。CA中有CB類型的成員變量,CB中有CA類型的成員變量。抱歉,不行。為什么?因為CA類型實例正在創建的過程中因為ca ref cb會先創建cb,但是cb返回的是proxy實例而不是CB實例,因此proxy實例無法賦值給cb。

    第9.4步:萬惡之源

    • 萬惡之源就是,AOP如果用動態代理實現,從根本上就意味著只能代理接口方法。有沒有一種方式可以代理類,而不僅僅是借口呢?抱歉,還真的有。

    第10步:使用CGLib進行類的織入

    如何使用CGLib實現動態代理

    • CGlib的原理是通過對字節碼的操作,可以動態的生成一個目標實例類的子類,這個子類和目標實例的子類相同的基礎上,還增加了代理代碼或者叫advice。代理類 = 被代理類+增強邏輯

      • CGlib動態代理
      class Student{private String name = "zhang san";public String getName() {System.out.println(name);return name;}public void setName(String name) {this.name = name;} } public class CglibMthodTwo implements MethodInterceptor {public Object getProxy(Class clazz){Enhancer en = new Enhancer();en.setSuperclass(clazz);en.setCallback(this);Object proxy = en.create();return proxy;}@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println("前");Object res = methodProxy.invokeSuper(o,objects);System.out.println("后");return res;}public static void main(String[] args) {CglibMthodTwo cglibMthodTwo = new CglibMthodTwo();((Student)cglibMthodTwo.getProxy(Student.class)).getName();}}
      • JDK動態代理。
      public class JdkDynamicAopProxy extends AbstractAopProxy implements InvocationHandler {public JdkDynamicAopProxy(AdvisedSupport advised) {super(advised);}@Overridepublic Object getProxy() {return Proxy.newProxyInstance(getClass().getClassLoader(), advised.getTargetSource().getInterfaces(), this);}@Overridepublic Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {MethodInterceptor methodInterceptor = advised.getMethodInterceptor();Object res = null;if (advised.getMethodMatcher() != null&& advised.getMethodMatcher().matches(method, advised.getTargetSource().getTarget().getClass())) {res = methodInterceptor.invoke(new ReflectiveMethodInvocation(advised.getTargetSource().getTarget(),method, args));} else {res = method.invoke(advised.getTargetSource().getTarget(), args);}return res;}}
    • 與JDK動態代理的區別

      • 原理上JDK沒有修改字節碼,而是采用$proxyn extend Proxy implements InterfaceXXX的方式創建了一個被代理接口的實現類,然后在運行期寫class文件,再用classloader加載。而CGlib卻是操作字節碼,將被代理類的字節碼增強成一個子類,因此要導入ASM包。
      • 操作上,JDK動態代理創建為Proxy類實例,且必須要傳入InvocationHandler類,而Cglib創建為Enhancer類實例,且必須傳入MethodInterceptor類(注意包的問題,這個MethodInterceptor是CGlib中的)。
      • Advice即代理代碼的實現上,JDK動態代理可以在InvocationHandler中重寫invoke實現,或者在InvocationHandler.invoke中調用methodInterceptor.invoke(methodInvocation),將代理的業務代碼交給methodInterceptor去做,被代理實例方法的運行通過參數methodInvocation.proceed()實現。而在CGlib中,通過methodInterceptor.intercept()實現代理增強,值得注意的是,這個方法內部有四個參數,包括一個被代理實例,而JDK的InvocationHandler.invoke卻不包含被代理實例。
      • 在運行方法上,JDK代理類實例.a()的運行流程為先運行InvocationHandler.invoke,在invoke中運行methodInterceptor.invoke,在這個invoke中有代理邏輯代碼和methodInvocation.proceed(),從而實現代理邏輯與被代理實例方法的兩開花。而CGlib則是直接運行methodInterceptor.interceptor方法。注意,這一條很重要。
    • 為什么說運行方法上的差異很重要呢,因為這會導致步驟9的代碼不可復用。因為我們原來寫的都是JDK代理類實例的那一套代碼,如果用CGlib的話,就無法通過注入org.aopalliance.intercept.MethodInterceptor的方式實現增強,而是注入cglib的MethodInterceptor,通過setCallback可以設置不同methodInterceptor。有沒有一種辦法,讓我們配置一種org.aopalliance.intercept.MethodInterceptor,在CGlib的情況下也可以調用它呢?

    • 有啊,只要我們在cglib的methodInterceptor接口實現的intercept方法中調用org.aopalliance.intercept.MethodInterceptor不就好了。

      private static class DynamicAdvisedInterceptor implements MethodInterceptor {private AdvisedSupport advised;private org.aopalliance.intercept.MethodInterceptor delegateMethodInterceptor;private DynamicAdvisedInterceptor(AdvisedSupport advised) {this.advised = advised;this.delegateMethodInterceptor = advised.getMethodInterceptor();}@Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {if (advised.getMethodMatcher() == null|| advised.getMethodMatcher().matches(method, advised.getTargetSource().getTargetClass())) {// return delegateMethodInterceptor.invoke(new ReflectiveMethodInvocation(advised.getTargetSource().getTarget(),method, args));return delegateMethodInterceptor.invoke(new CglibMethodInvocation(advised.getTargetSource().getTarget(), method, args, proxy));}// return method.invoke(advised.getTargetSource().getTarget(),args);可以這么寫,return new CglibMethodInvocation(advised.getTargetSource().getTarget(), method, args, proxy).proceed();} }

      現在只剩下一個疑問了,因為么要寫一個ReflectMothodInvocation的子類?因為intercept有4個入參,所以我們交給下一步處理的時候也要有4個入參,相當于增強了一下功能,當然你這邊不改也沒問題,就當做JDK那個版本就行。

    第11步:通過三級緩存徹底解決循環依賴

    • 廢話少說,先看結果

      @Test public void testXuhuanyilai() throws Exception {// --------- helloWorldService without AOPApplicationContext applicationContext = new ClassPathXmlApplicationContext("tinyioc.xml");Car car = (Car) applicationContext.getBean("car");car.getAddress().living();Address address = (Address)applicationContext.getBean("address");address.getCar().running(); } //測試結果 Invocation of Method setCar start! Invocation of Method setCar end! takes 123111 nanoseconds. Invocation of Method setAddress start! Invocation of Method setAddress end! takes 38666 nanoseconds. Invocation of Method running start! car is running Invocation of Method running end! takes 45777 nanoseconds. Invocation of Method living start! address is living Invocation of Method living end! takes 56000 nanoseconds.

      實驗結果表示,我已經解決了第9.3步中說到的AOP情況下,循環依賴導致a ref b, b ref a時,創建實例時,b.a指向的是空實例a,而不是代理實例a。

    • 解決方法。

      • 三層緩存。

        protected Map<String,Object> secondCache = new HashMap(); protected Map<String,Object> thirdCache = new HashMap<>(); protected Map<String,Object> firstCache = new HashMap<>();
      • thirdCache是當空構造函數創建一個實例時,就放入其中。

        protected Object doCreateBean(String name,BeanDefinition beanDefinition) throws Exception {Object bean = createBeanInstance(beanDefinition);thirdCache.put(name,bean);//thirdCache中放置的全是空構造方法構造出的實例beanDefinition.setBean(bean);applyPropertyValues(bean,beanDefinition);return bean; }
      • a ref b, b ref a情況下,在b創建時,a還只是空構造實例,因此用secondCache去保存所有field中指向空實例的那些實例,即保存b。

        for(PropertyValue propertyValue:mbd.getPropertyValues().getPropertyValues()){ Object value = propertyValue.getValue(); if(value instanceof BeanReference){//如果是ref,就創建這個refBeanReference beanReference = (BeanReference)value;value = getBean(beanReference.getName());String refName = beanReference.getName();if(thirdCache.containsKey(refName)&&!firstCache.containsKey(refName)){//說明當前是循環依賴狀態secondCache.put(beanReference.getName(),bean);//標注a ref b,b ref a中,b是后被循環引用的} }
      • firstCache用于保存所有最終被生成的實例.

        initializeBean(): if(thirdCache.containsKey(name)){//空構造實例如果被AOP成代理實例,則放入三級緩存,說明已經構建完畢firstCache.put(name,bean); }
      • 因此,當執行完方法beanFactory.preInstantiateSingletons();后,thirdCache保存了所有空構造實例及名稱,secondCache保存了所有可能需要重新設置ref的實例及名稱,first保存了所有最終生成的實例和名稱。在firstcache與third中,必然存放了所有的bean,在second中只存放因循環依賴所以創建時ref了不完整對象的那些。在創建了所有實力后,通過checkoutAll方法對secondCache中的實例進行重置依賴。

        protected void onRefresh() throws Exception{beanFactory.preInstantiateSingletons();checkoutAll(); }private void checkoutAll(){Map<String,Object> secondCache = beanFactory.getSecondCache();Map<String,BeanDefinition> beanDefinitionMap = beanFactory.getBeanDefinitionMap();for(Map.Entry<String,Object> entry:secondCache.entrySet()){String invokeBeanName = entry.getKey();BeanDefinition beanDefinition = beanDefinitionMap.get(invokeBeanName);try {resetReference(invokeBeanName,beanDefinition);} catch (Exception e) {e.printStackTrace();}} } //重置依賴,這邊用到了動態類型轉換。因為原類型的setter在代理類中已經無法使用了。 private void resetReference(String invokeBeanName,BeanDefinition beanDefinition) throws Exception {Map<String,Object> thirdCache = beanFactory.getThirdCache();Map<String,Object> secondCache = beanFactory.getSecondCache();Map<String,Object> firstCache = beanFactory.getFirstCache();Map<String,BeanDefinition> beanDefinitionMap = beanFactory.getBeanDefinitionMap();for (PropertyValue propertyValue : beanDefinition.getPropertyValues().getPropertyValues()) {String refName = propertyValue.getName();if (firstCache.containsKey(refName)) {//如果是ref,就創建這個refObject exceptedValue = firstCache.get(refName);Object invokeBean = beanDefinition.getBean();Object realClassInvokeBean = thirdCache.get(invokeBeanName);Object realClassRefBean = thirdCache.get(refName);try{Method declaredMethod = realClassInvokeBean.getClass().getDeclaredMethod("set" + propertyValue.getName().substring(0, 1).toUpperCase()+ propertyValue.getName().substring(1), realClassRefBean.getClass());declaredMethod.setAccessible(true);declaredMethod.invoke((realClassInvokeBean.getClass().cast(invokeBean)), (realClassRefBean.getClass().cast(exceptedValue)));}catch (NoSuchMethodException e){Field declaredField = realClassInvokeBean.getClass().getDeclaredField(propertyValue.getName());System.out.println(declaredField);declaredField.setAccessible(true);declaredField.set((realClassInvokeBean.getClass().cast(invokeBean)), (realClassRefBean.getClass().cast(exceptedValue)));}}} }
    • 正如在9.3中說的那樣,只有在開啟全局cglib的情況下才可以完成本實驗,如果開啟jdk代理模式或者jdk代理+cglib都不會解決本bug。

    小結

    • IOC中通過讀xml用一個map,讀完才賦值給beanFactory的map的方式避免了xml因順序問題而導致的注入失敗。
    • IOC中通過getBean懶加載+先空構造器創建實例的方式解決了循環依賴的問題(簡單解決而已,還未能解決增加AOP功能后循環依賴的問題。)。
    • IOC本身1.因為都是注入,而不是在某一個類中new,因此系統耦合降低,所有的創建交給第三方容器,類似工廠模式2.IOC類的提供只需要xml注冊,創建的具體細節不需要你知道,程序更易維護和使用,因為你寫的代碼別人只要xml里注冊一下就能用你的實例。3.解決了對象層級嵌套的問題,a ref b,b ref c,c ref a,d ref b這樣復雜的嵌套關系,應該如何初始化?交給Spring!
    • AOP中通過jdk動態代理模式實現了被代理實例代理方法的織入。
    • AOP中通過AspectJ包完成了對AspectJ風格expression的解析,進一步完成了對類和方法ponitcut的判斷。
    • AOP中通過BeanPostProcessor接口實現了一個完成的bean的生命周期中after和before的工作,這個并不是通過AOP完成的,而是通過邏輯代碼的流程控制完成的:確保所有實現BeanPostProcessor接口的實例都率先實例化。
    • AOP中,所有ProxyCreator都實現BeanPostProcessor接口和BeanFactoryAware接口。前者接口保證自己率先被實例化,以保證對非AOP實例的before和after處理,后者接口保證在初始化自己的時候,會setBeanFactory,以用于后面獲取切面。
    • AOP中,所有非AOP實例都必須經過ProxyCreator的after方法,proxyCreator中已經有了beanFactory,因此可以獲得所有expression對應的類pointcut,只要實例對應的類匹配類pointcut,就返回代理類實例而不是原實例。至此,全部實例創建工作完畢。
    • AOP中,所有非AOP實例運行接口方法時,會按照invocationHandler.invoke(methodInterceptor.invoke(methodInvocation))邏輯進行調用,從而實現織入。
    • AOP中,因為JDK代理只能針對接口,因此引入Cglib技術,實現類的動態代理。通過在cglib包的methodInterceptor中調用org.aopalliance.intercept.MethodInterceptor,實現了xml中配置的methodInterceptor對接口和類都可以使用。
    • AOP中,最終通過三級緩存徹底解決了單例setter注入下的循環依賴。
    • 沒有多少人有耐心看到這里的,我知道。晚安。

    總結

    以上是生活随笔為你收集整理的框架复习(一):不如写个tiny-Spring?(完整版)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    性欧美videos高清精品 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲中文字幕无码中字 | 综合人妻久久一区二区精品 | 一本无码人妻在中文字幕免费 | 狠狠噜狠狠狠狠丁香五月 | 特大黑人娇小亚洲女 | 亚洲人成网站免费播放 | 日本欧美一区二区三区乱码 | 亚洲色成人中文字幕网站 | 人人妻人人澡人人爽精品欧美 | 成人免费无码大片a毛片 | yw尤物av无码国产在线观看 | 免费中文字幕日韩欧美 | 无码人妻精品一区二区三区下载 | 久久午夜无码鲁丝片秋霞 | 奇米影视7777久久精品人人爽 | 日韩精品成人一区二区三区 | 在线视频网站www色 | 久久久久久久女国产乱让韩 | 无码播放一区二区三区 | 国产亚洲精品久久久久久久久动漫 | 麻花豆传媒剧国产免费mv在线 | 特级做a爰片毛片免费69 | 伊人久久婷婷五月综合97色 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 免费人成网站视频在线观看 | 无码人妻精品一区二区三区不卡 | 波多野42部无码喷潮在线 | 精品久久久中文字幕人妻 | 日韩精品无码免费一区二区三区 | 精品国产一区二区三区av 性色 | 亚洲综合色区中文字幕 | 四虎影视成人永久免费观看视频 | 超碰97人人做人人爱少妇 | 双乳奶水饱满少妇呻吟 | 日日碰狠狠躁久久躁蜜桃 | 熟女俱乐部五十路六十路av | 亚洲另类伦春色综合小说 | 国产超碰人人爽人人做人人添 | yw尤物av无码国产在线观看 | 奇米影视7777久久精品 | 麻豆md0077饥渴少妇 | 天干天干啦夜天干天2017 | 久久午夜无码鲁丝片 | 免费乱码人妻系列无码专区 | 国产亚洲精品久久久ai换 | 少妇人妻偷人精品无码视频 | 久久久久久九九精品久 | 国产精品欧美成人 | 亚洲色www成人永久网址 | 少妇厨房愉情理9仑片视频 | 久久人人爽人人爽人人片av高清 | 久久精品国产一区二区三区肥胖 | 在线播放免费人成毛片乱码 | 久久aⅴ免费观看 | 国产亚洲精品久久久久久久久动漫 | 无套内射视频囯产 | 久久综合久久自在自线精品自 | 强伦人妻一区二区三区视频18 | 欧洲欧美人成视频在线 | 国产精品欧美成人 | 亚洲综合精品香蕉久久网 | 色诱久久久久综合网ywww | 人妻尝试又大又粗久久 | 久久久久久九九精品久 | 日韩人妻无码一区二区三区久久99 | 亚洲欧美国产精品专区久久 | 日本www一道久久久免费榴莲 | 成人试看120秒体验区 | 国产av一区二区三区最新精品 | 黄网在线观看免费网站 | 樱花草在线播放免费中文 | 国产在线aaa片一区二区99 | 亚洲春色在线视频 | 国精品人妻无码一区二区三区蜜柚 | 久久zyz资源站无码中文动漫 | 久久国产自偷自偷免费一区调 | 国产超碰人人爽人人做人人添 | 67194成是人免费无码 | 亚洲七七久久桃花影院 | 精品欧美一区二区三区久久久 | 国产激情精品一区二区三区 | 免费国产成人高清在线观看网站 | 无码国产乱人伦偷精品视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产精品丝袜黑色高跟鞋 | 亚洲国产精品久久久久久 | 娇妻被黑人粗大高潮白浆 | 亚洲精品一区二区三区婷婷月 | 国产精华av午夜在线观看 | 两性色午夜免费视频 | 中文字幕人妻丝袜二区 | 在线看片无码永久免费视频 | 正在播放东北夫妻内射 | 国产精品无码成人午夜电影 | 图片小说视频一区二区 | 精品人妻中文字幕有码在线 | 精品一区二区不卡无码av | 国产又粗又硬又大爽黄老大爷视 | 亚洲aⅴ无码成人网站国产app | 亚洲一区二区三区播放 | 一区二区三区乱码在线 | 欧洲 | 好爽又高潮了毛片免费下载 | 中文字幕久久久久人妻 | 国产午夜福利100集发布 | 成人精品视频一区二区三区尤物 | 99久久99久久免费精品蜜桃 | 国产成人无码av片在线观看不卡 | 宝宝好涨水快流出来免费视频 | 久久国产精品精品国产色婷婷 | 2019午夜福利不卡片在线 | www国产亚洲精品久久久日本 | 又色又爽又黄的美女裸体网站 | 国内揄拍国内精品少妇国语 | 国产在线无码精品电影网 | 亚洲区小说区激情区图片区 | 伊人久久大香线蕉av一区二区 | 亚洲日本va午夜在线电影 | 亚洲小说图区综合在线 | 久精品国产欧美亚洲色aⅴ大片 | 久热国产vs视频在线观看 | 亚洲中文字幕无码中字 | av人摸人人人澡人人超碰下载 | 天天做天天爱天天爽综合网 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲精品欧美二区三区中文字幕 | 国产九九九九九九九a片 | 巨爆乳无码视频在线观看 | 无码免费一区二区三区 | 亚洲自偷自拍另类第1页 | 亚洲乱码中文字幕在线 | 中文字幕中文有码在线 | 成人女人看片免费视频放人 | 久久久久av无码免费网 | 国产女主播喷水视频在线观看 | 国产成人一区二区三区别 | 无码成人精品区在线观看 | 99精品国产综合久久久久五月天 | 国产一精品一av一免费 | 少妇无套内谢久久久久 | 欧美日本日韩 | 男女爱爱好爽视频免费看 | 俺去俺来也在线www色官网 | 成年美女黄网站色大免费视频 | 成人av无码一区二区三区 | 国产精品亚洲综合色区韩国 | 一本大道伊人av久久综合 | 国产办公室秘书无码精品99 | 粉嫩少妇内射浓精videos | 国产精品人人爽人人做我的可爱 | 国产成人精品久久亚洲高清不卡 | 亚洲国产精品无码一区二区三区 | 国产99久久精品一区二区 | 色综合久久中文娱乐网 | 成人无码精品一区二区三区 | 夜先锋av资源网站 | 国产熟女一区二区三区四区五区 | 久久久久亚洲精品男人的天堂 | 51国偷自产一区二区三区 | 亚洲 高清 成人 动漫 | 亚洲国产精品美女久久久久 | 国语自产偷拍精品视频偷 | 丝袜 中出 制服 人妻 美腿 | 无码人妻黑人中文字幕 | 国产亚洲精品久久久ai换 | 牲交欧美兽交欧美 | 欧美亚洲国产一区二区三区 | 正在播放东北夫妻内射 | 国产明星裸体无码xxxx视频 | 人妻尝试又大又粗久久 | 青青久在线视频免费观看 | 亚洲人成影院在线无码按摩店 | 熟妇人妻中文av无码 | 国产人妻精品一区二区三区 | 国产精品人妻一区二区三区四 | 亚洲精品一区二区三区在线观看 | 国产又粗又硬又大爽黄老大爷视 | 蜜桃av抽搐高潮一区二区 | 国产精品人妻一区二区三区四 | 国产艳妇av在线观看果冻传媒 | 一本色道久久综合狠狠躁 | 久久久久久亚洲精品a片成人 | 图片区 小说区 区 亚洲五月 | 日本www一道久久久免费榴莲 | 波多野结衣高清一区二区三区 | 国产午夜手机精彩视频 | 377p欧洲日本亚洲大胆 | 粗大的内捧猛烈进出视频 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 大屁股大乳丰满人妻 | 无码中文字幕色专区 | 中文字幕人成乱码熟女app | 特级做a爰片毛片免费69 | 任你躁在线精品免费 | 免费观看又污又黄的网站 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲欧洲日本无在线码 | 成人女人看片免费视频放人 | 亚洲日韩一区二区三区 | 精品人妻中文字幕有码在线 | 强伦人妻一区二区三区视频18 | 欧美 丝袜 自拍 制服 另类 | 欧美老熟妇乱xxxxx | 一二三四在线观看免费视频 | 日韩欧美中文字幕在线三区 | 欧美变态另类xxxx | 日本va欧美va欧美va精品 | 婷婷五月综合缴情在线视频 | 精品久久久无码人妻字幂 | 无码午夜成人1000部免费视频 | 一二三四社区在线中文视频 | 欧美肥老太牲交大战 | 女人被男人躁得好爽免费视频 | 国产精品无码成人午夜电影 | 国产又爽又黄又刺激的视频 | 色婷婷综合激情综在线播放 | 欧美人与牲动交xxxx | 亚洲熟妇色xxxxx亚洲 | 天天燥日日燥 | 综合网日日天干夜夜久久 | av小次郎收藏 | 九九热爱视频精品 | 国产精品无套呻吟在线 | 亚洲国产精品一区二区第一页 | 久久国产精品二国产精品 | 日日麻批免费40分钟无码 | 亚洲日本va午夜在线电影 | 亚洲精品成a人在线观看 | 中文字幕精品av一区二区五区 | 日韩av无码一区二区三区 | √8天堂资源地址中文在线 | 国产精品免费大片 | 无码乱肉视频免费大全合集 | 国模大胆一区二区三区 | 日本在线高清不卡免费播放 | www国产亚洲精品久久网站 | 久久精品女人的天堂av | 无套内谢的新婚少妇国语播放 | 无码人妻丰满熟妇区毛片18 | 亚洲成a人片在线观看无码3d | 亚欧洲精品在线视频免费观看 | 天天做天天爱天天爽综合网 | 丰满人妻一区二区三区免费视频 | 人人妻人人澡人人爽欧美一区 | 国产区女主播在线观看 | 欧美人与物videos另类 | 无码人妻黑人中文字幕 | 少妇性l交大片欧洲热妇乱xxx | 中文字幕无码av波多野吉衣 | 免费观看激色视频网站 | 亚洲欧洲中文日韩av乱码 | 欧美大屁股xxxxhd黑色 | 美女极度色诱视频国产 | 成人综合网亚洲伊人 | 国产精品无码一区二区桃花视频 | 久久久久久久人妻无码中文字幕爆 | 97夜夜澡人人双人人人喊 | 日日鲁鲁鲁夜夜爽爽狠狠 | 内射欧美老妇wbb | 久久精品国产一区二区三区肥胖 | 狠狠亚洲超碰狼人久久 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲中文字幕成人无码 | 黑人粗大猛烈进出高潮视频 | 奇米影视7777久久精品人人爽 | 成人精品视频一区二区 | 丰满少妇人妻久久久久久 | 老熟女乱子伦 | 天天摸天天碰天天添 | 成人免费视频视频在线观看 免费 | 精品国产一区av天美传媒 | 国产乱码精品一品二品 | 欧美兽交xxxx×视频 | 久久久久成人精品免费播放动漫 | 成人亚洲精品久久久久软件 | 丰满少妇人妻久久久久久 | 免费国产黄网站在线观看 | 亚洲日本va午夜在线电影 | 国产免费久久精品国产传媒 | 亚洲中文字幕无码中字 | 东北女人啪啪对白 | 日韩欧美成人免费观看 | 亚洲日韩中文字幕在线播放 | 日韩人妻少妇一区二区三区 | 国产高清不卡无码视频 | 欧美 亚洲 国产 另类 | 国产亚洲精品久久久久久大师 | 亚洲の无码国产の无码影院 | 丰满少妇熟乱xxxxx视频 | 国产亚洲精品久久久久久久 | 国产性生交xxxxx无码 | 久久精品国产99久久6动漫 | 亚洲va欧美va天堂v国产综合 | 欧美 丝袜 自拍 制服 另类 | 亚洲国产精品一区二区第一页 | 久久国产劲爆∧v内射 | 欧美熟妇另类久久久久久多毛 | 久久精品国产一区二区三区 | 人人超人人超碰超国产 | 国产在线aaa片一区二区99 | 国产国产精品人在线视 | 青青草原综合久久大伊人精品 | 日韩在线不卡免费视频一区 | 日本乱人伦片中文三区 | v一区无码内射国产 | 好屌草这里只有精品 | 中文亚洲成a人片在线观看 | 高清不卡一区二区三区 | 亚洲精品中文字幕乱码 | 亚洲精品一区二区三区大桥未久 | 亚洲中文字幕无码一久久区 | 妺妺窝人体色www在线小说 | 国产精品无套呻吟在线 | 国产精品高潮呻吟av久久4虎 | 国模大胆一区二区三区 | 国产免费久久精品国产传媒 | 少妇愉情理伦片bd | 精品亚洲成av人在线观看 | 一个人看的www免费视频在线观看 | 青青青爽视频在线观看 | 最新国产麻豆aⅴ精品无码 | 国产精品久久福利网站 | 亚洲国产一区二区三区在线观看 | 无套内谢的新婚少妇国语播放 | 亚洲人成影院在线无码按摩店 | 精品久久久久香蕉网 | 国产艳妇av在线观看果冻传媒 | 麻豆国产97在线 | 欧洲 | 亚洲精品一区三区三区在线观看 | 日韩精品无码免费一区二区三区 | 亚洲精品一区二区三区四区五区 | 天天躁日日躁狠狠躁免费麻豆 | 人妻天天爽夜夜爽一区二区 | 国产av剧情md精品麻豆 | 日韩在线不卡免费视频一区 | 天堂亚洲2017在线观看 | 免费人成在线视频无码 | 99久久精品午夜一区二区 | 欧美日韩一区二区三区自拍 | 人人妻人人藻人人爽欧美一区 | 波多野42部无码喷潮在线 | 少妇被粗大的猛进出69影院 | 人妻少妇精品视频专区 | 国产亚洲精品精品国产亚洲综合 | 99精品久久毛片a片 | 亚洲七七久久桃花影院 | 久久久久久久人妻无码中文字幕爆 | 在线观看国产午夜福利片 | 久久久久成人片免费观看蜜芽 | 日本精品久久久久中文字幕 | 高潮毛片无遮挡高清免费视频 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 男人扒开女人内裤强吻桶进去 | 欧美国产日韩亚洲中文 | 日本熟妇乱子伦xxxx | 男女性色大片免费网站 | 欧美精品在线观看 | 久久国产精品萌白酱免费 | 欧美xxxxx精品 | 综合网日日天干夜夜久久 | 欧美一区二区三区视频在线观看 | 一本无码人妻在中文字幕免费 | 国产乱人伦偷精品视频 | 自拍偷自拍亚洲精品10p | 免费国产黄网站在线观看 | 国产电影无码午夜在线播放 | 精品成人av一区二区三区 | 久在线观看福利视频 | 精品人妻人人做人人爽夜夜爽 | 精品久久久久久人妻无码中文字幕 | 久久亚洲a片com人成 | 国产人妻大战黑人第1集 | 国产明星裸体无码xxxx视频 | 熟妇人妻激情偷爽文 | 粗大的内捧猛烈进出视频 | а√资源新版在线天堂 | 欧美日本精品一区二区三区 | 内射欧美老妇wbb | 午夜时刻免费入口 | 亚洲国产日韩a在线播放 | 日日摸天天摸爽爽狠狠97 | 欧美日韩一区二区三区自拍 | 国产成人一区二区三区别 | 欧洲熟妇精品视频 | 狠狠综合久久久久综合网 | 76少妇精品导航 | 狠狠色色综合网站 | 又黄又爽又色的视频 | 综合人妻久久一区二区精品 | 国产精品无码成人午夜电影 | 欧美人与物videos另类 | 少妇高潮喷潮久久久影院 | 久久熟妇人妻午夜寂寞影院 | 久久国内精品自在自线 | 精品 日韩 国产 欧美 视频 | 亚洲欧美精品伊人久久 | 国产欧美精品一区二区三区 | 国产精品内射视频免费 | 国产免费久久精品国产传媒 | 久久久国产一区二区三区 | 国产午夜无码视频在线观看 | 久久视频在线观看精品 | 99久久人妻精品免费一区 | 人妻少妇精品视频专区 | 国产综合在线观看 | 99久久精品无码一区二区毛片 | 又湿又紧又大又爽a视频国产 | 人妻少妇被猛烈进入中文字幕 | 国产性生大片免费观看性 | 黑人玩弄人妻中文在线 | 国产亚洲精品久久久久久大师 | 国产又爽又黄又刺激的视频 | 天堂无码人妻精品一区二区三区 | 精品国精品国产自在久国产87 | 国模大胆一区二区三区 | 伊人久久大香线蕉av一区二区 | 亚洲国产欧美在线成人 | 国产精品久久福利网站 | 亚洲日韩av一区二区三区四区 | 亚洲欧美日韩成人高清在线一区 | 日韩亚洲欧美中文高清在线 | 国产综合色产在线精品 | 清纯唯美经典一区二区 | 男女爱爱好爽视频免费看 | 国产亚洲精品久久久久久 | 狠狠躁日日躁夜夜躁2020 | 久久国产精品偷任你爽任你 | 在线视频网站www色 | 日本www一道久久久免费榴莲 | 精品久久8x国产免费观看 | 影音先锋中文字幕无码 | 漂亮人妻洗澡被公强 日日躁 | 97精品人妻一区二区三区香蕉 | 国产成人午夜福利在线播放 | 亚洲精品午夜国产va久久成人 | a片在线免费观看 | 成人免费视频一区二区 | 国产两女互慰高潮视频在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 国内丰满熟女出轨videos | 天堂а√在线中文在线 | av人摸人人人澡人人超碰下载 | 久久www免费人成人片 | 中文字幕人妻无码一夲道 | 国产在线无码精品电影网 | 97精品国产97久久久久久免费 | 久久久久久久久蜜桃 | 激情内射亚州一区二区三区爱妻 | 亚洲色大成网站www | yw尤物av无码国产在线观看 | 久久www免费人成人片 | 宝宝好涨水快流出来免费视频 | 日本一卡2卡3卡四卡精品网站 | 亚洲精品中文字幕久久久久 | 国产精品久久久久久久9999 | 人妻人人添人妻人人爱 | 久久精品中文闷骚内射 | 青青青手机频在线观看 | 最新国产乱人伦偷精品免费网站 | 国产激情无码一区二区app | 熟女体下毛毛黑森林 | 欧美丰满熟妇xxxx性ppx人交 | 亚洲人亚洲人成电影网站色 | 精品无人区无码乱码毛片国产 | 精品人妻人人做人人爽夜夜爽 | 国产女主播喷水视频在线观看 | 精品国产av色一区二区深夜久久 | 无码av免费一区二区三区试看 | 欧美日韩亚洲国产精品 | 欧美乱妇无乱码大黄a片 | 无码人妻出轨黑人中文字幕 | 久久99热只有频精品8 | 亚洲第一无码av无码专区 | 中文无码精品a∨在线观看不卡 | 国产精品99久久精品爆乳 | a在线亚洲男人的天堂 | 久久久国产精品无码免费专区 | 沈阳熟女露脸对白视频 | 亚洲欧洲日本综合aⅴ在线 | 精品人妻中文字幕有码在线 | 亚洲日韩一区二区三区 | 国产精品毛片一区二区 | 熟妇女人妻丰满少妇中文字幕 | 成人免费视频视频在线观看 免费 | 国产莉萝无码av在线播放 | 日日麻批免费40分钟无码 | 东京热男人av天堂 | 国产精品久久国产精品99 | 乱码av麻豆丝袜熟女系列 | 精品午夜福利在线观看 | 久久亚洲日韩精品一区二区三区 | 偷窥日本少妇撒尿chinese | 精品久久8x国产免费观看 | 国产精品久久久久7777 | 日本xxxx色视频在线观看免费 | 粉嫩少妇内射浓精videos | 国产亚洲美女精品久久久2020 | 全黄性性激高免费视频 | 国产精品国产自线拍免费软件 | 曰本女人与公拘交酡免费视频 | 亚洲综合精品香蕉久久网 | 亚洲一区二区三区四区 | 樱花草在线社区www | 性史性农村dvd毛片 | 国产午夜福利100集发布 | 永久免费观看国产裸体美女 | 亚洲欧洲无卡二区视頻 | 精品水蜜桃久久久久久久 | 国产成人无码区免费内射一片色欲 | 国产精品久久精品三级 | 国产农村乱对白刺激视频 | 久久无码人妻影院 | 日本一区二区更新不卡 | 精品无人区无码乱码毛片国产 | 欧美自拍另类欧美综合图片区 | 我要看www免费看插插视频 | 波多野42部无码喷潮在线 | 精品日本一区二区三区在线观看 | 九九久久精品国产免费看小说 | ass日本丰满熟妇pics | 国产精品va在线播放 | 欧美 亚洲 国产 另类 | 人妻少妇被猛烈进入中文字幕 | 18精品久久久无码午夜福利 | 婷婷丁香六月激情综合啪 | 天堂久久天堂av色综合 | 日日天干夜夜狠狠爱 | 野外少妇愉情中文字幕 | 黑人大群体交免费视频 | 精品成在人线av无码免费看 | 无套内射视频囯产 | 67194成是人免费无码 | 欧美人与物videos另类 | 国产成人亚洲综合无码 | 国产亚洲精品久久久久久久 | 成人毛片一区二区 | 久久久久99精品成人片 | 成人免费视频视频在线观看 免费 | 久久精品一区二区三区四区 | 无码人妻av免费一区二区三区 | 高清无码午夜福利视频 | 又粗又大又硬毛片免费看 | 欧美激情综合亚洲一二区 | 国产精品va在线播放 | 日日天干夜夜狠狠爱 | 日本一区二区三区免费播放 | 窝窝午夜理论片影院 | 日本精品人妻无码免费大全 | 日本爽爽爽爽爽爽在线观看免 | 天干天干啦夜天干天2017 | 亚洲日本va中文字幕 | 国内丰满熟女出轨videos | 丁香花在线影院观看在线播放 | 国产精品久久国产精品99 | 色情久久久av熟女人妻网站 | 国産精品久久久久久久 | 草草网站影院白丝内射 | 成年女人永久免费看片 | 日韩精品乱码av一区二区 | 六月丁香婷婷色狠狠久久 | 日日摸夜夜摸狠狠摸婷婷 | 欧美熟妇另类久久久久久不卡 | 人妻有码中文字幕在线 | 一本久久伊人热热精品中文字幕 | 国产一区二区三区四区五区加勒比 | 色综合久久88色综合天天 | 国产精品无码永久免费888 | 一本久久a久久精品vr综合 | 国产精品.xx视频.xxtv | 久9re热视频这里只有精品 | 丰满人妻翻云覆雨呻吟视频 | 亚洲国产av美女网站 | 亚洲精品国产品国语在线观看 | 亚洲精品中文字幕久久久久 | 国产成人精品无码播放 | 无码乱肉视频免费大全合集 | 熟女体下毛毛黑森林 | 国精产品一品二品国精品69xx | 亚洲色偷偷男人的天堂 | 国产尤物精品视频 | 麻豆av传媒蜜桃天美传媒 | 88国产精品欧美一区二区三区 | 亚洲午夜福利在线观看 | 2019午夜福利不卡片在线 | 欧美熟妇另类久久久久久不卡 | 国产一精品一av一免费 | 亚洲小说图区综合在线 | 中文字幕无码人妻少妇免费 | 好爽又高潮了毛片免费下载 | 国产成人人人97超碰超爽8 | 亚洲 激情 小说 另类 欧美 | 久久无码中文字幕免费影院蜜桃 | 久久精品国产一区二区三区肥胖 | 中文无码成人免费视频在线观看 | 成人一区二区免费视频 | 国内精品九九久久久精品 | 无码福利日韩神码福利片 | 美女极度色诱视频国产 | 亚洲精品鲁一鲁一区二区三区 | 伊人久久婷婷五月综合97色 | 精品久久久久久亚洲精品 | 丝袜足控一区二区三区 | 欧美国产日产一区二区 | 婷婷丁香五月天综合东京热 | 亚洲精品久久久久avwww潮水 | 久久亚洲日韩精品一区二区三区 | 午夜时刻免费入口 | 国产精品第一国产精品 | 欧美精品免费观看二区 | 老子影院午夜精品无码 | 国产欧美熟妇另类久久久 | 又黄又爽又色的视频 | 天天综合网天天综合色 | 夜夜高潮次次欢爽av女 | 国产欧美熟妇另类久久久 | 欧美丰满少妇xxxx性 | 国产热a欧美热a在线视频 | 午夜无码人妻av大片色欲 | 欧美人与动性行为视频 | 国产无遮挡又黄又爽免费视频 | 中文精品无码中文字幕无码专区 | 日日麻批免费40分钟无码 | 精品久久久久香蕉网 | 欧美日韩一区二区免费视频 | 久久久久成人片免费观看蜜芽 | 综合激情五月综合激情五月激情1 | 亚洲熟熟妇xxxx | 久久久精品国产sm最大网站 | 国产手机在线αⅴ片无码观看 | 中文字幕久久久久人妻 | 国产精品久久久久久亚洲影视内衣 | 日韩精品成人一区二区三区 | 久久久久亚洲精品男人的天堂 | 久久人人97超碰a片精品 | 蜜桃av抽搐高潮一区二区 | 性啪啪chinese东北女人 | 捆绑白丝粉色jk震动捧喷白浆 | 丝袜人妻一区二区三区 | 欧洲美熟女乱又伦 | 免费观看激色视频网站 | 日本在线高清不卡免费播放 | 久久亚洲国产成人精品性色 | 午夜时刻免费入口 | 亚洲成av人影院在线观看 | 性生交片免费无码看人 | 亚洲欧美日韩国产精品一区二区 | 国产精品久久福利网站 | 国产极品美女高潮无套在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 国产片av国语在线观看 | 午夜成人1000部免费视频 | 欧美人与物videos另类 | 亚洲 欧美 激情 小说 另类 | 狠狠cao日日穞夜夜穞av | 国产av一区二区三区最新精品 | 蜜臀av无码人妻精品 | 亚洲精品中文字幕乱码 | 曰本女人与公拘交酡免费视频 | 中文字幕无码视频专区 | 四虎影视成人永久免费观看视频 | 又大又硬又爽免费视频 | 久久久久久国产精品无码下载 | 3d动漫精品啪啪一区二区中 | 精品偷自拍另类在线观看 | www国产精品内射老师 | 日产精品高潮呻吟av久久 | 亚洲s色大片在线观看 | 中文字幕无码免费久久9一区9 | 日产精品高潮呻吟av久久 | 国产一区二区三区日韩精品 | 2019nv天堂香蕉在线观看 | 高潮毛片无遮挡高清免费 | 成人无码视频在线观看网站 | 亚洲日韩精品欧美一区二区 | 国产av剧情md精品麻豆 | 国产免费久久久久久无码 | 无码纯肉视频在线观看 | 亚洲欧美中文字幕5发布 | 日日摸夜夜摸狠狠摸婷婷 | 国产精品资源一区二区 | 一本无码人妻在中文字幕免费 | 国产明星裸体无码xxxx视频 | 欧美 日韩 人妻 高清 中文 | 网友自拍区视频精品 | 亚洲小说春色综合另类 | 少妇被黑人到高潮喷出白浆 | 极品嫩模高潮叫床 | 青春草在线视频免费观看 | 熟妇人妻无码xxx视频 | 欧美精品免费观看二区 | 国产亚洲欧美在线专区 | 一本色道久久综合狠狠躁 | 一本大道久久东京热无码av | 精品无码av一区二区三区 | 久久视频在线观看精品 | 国产亚洲精品久久久ai换 | 国产精品va在线观看无码 | 国产免费观看黄av片 | 美女黄网站人色视频免费国产 | 无码一区二区三区在线 | 男女性色大片免费网站 | 无码人妻精品一区二区三区不卡 | 性史性农村dvd毛片 | 亚洲第一无码av无码专区 | 免费人成在线观看网站 | 99国产欧美久久久精品 | 日韩在线不卡免费视频一区 | 国产成人精品三级麻豆 | 欧美日韩久久久精品a片 | 色老头在线一区二区三区 | 97人妻精品一区二区三区 | 中文字幕无码免费久久99 | 亚洲精品国产第一综合99久久 | 亚洲精品综合一区二区三区在线 | 国产成人精品必看 | 精品欧美一区二区三区久久久 | 丰满人妻一区二区三区免费视频 | 国内精品久久毛片一区二区 | 又色又爽又黄的美女裸体网站 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲经典千人经典日产 | 欧美国产日韩亚洲中文 | 亚洲国产精品无码久久久久高潮 | 性啪啪chinese东北女人 | 亚洲一区二区三区在线观看网站 | 国产熟女一区二区三区四区五区 | 国产成人精品一区二区在线小狼 | 99久久精品无码一区二区毛片 | 亚洲精品久久久久中文第一幕 | 国产成人无码av一区二区 | 国语精品一区二区三区 | 西西人体www44rt大胆高清 | 亚洲大尺度无码无码专区 | 久久综合网欧美色妞网 | 亚洲中文字幕无码中文字在线 | 欧美日韩人成综合在线播放 | 亚洲性无码av中文字幕 | 亚洲乱码中文字幕在线 | 四虎永久在线精品免费网址 | 日韩精品a片一区二区三区妖精 | 欧美 丝袜 自拍 制服 另类 | 久久综合给久久狠狠97色 | 久久99精品国产麻豆 | 色窝窝无码一区二区三区色欲 | 成人精品视频一区二区 | 2019午夜福利不卡片在线 | 初尝人妻少妇中文字幕 | 日韩精品无码一本二本三本色 | 麻豆国产丝袜白领秘书在线观看 | 中文精品无码中文字幕无码专区 | 荫蒂被男人添的好舒服爽免费视频 | 欧洲熟妇色 欧美 | 极品尤物被啪到呻吟喷水 | 亚洲欧洲无卡二区视頻 | 久久无码中文字幕免费影院蜜桃 | 日韩欧美成人免费观看 | 国产偷抇久久精品a片69 | 亚洲欧洲日本综合aⅴ在线 | 精品国产一区二区三区四区 | 学生妹亚洲一区二区 | 人妻人人添人妻人人爱 | 久久精品国产精品国产精品污 | 老熟女重囗味hdxx69 | 久精品国产欧美亚洲色aⅴ大片 | 国产亚洲精品久久久久久大师 | 内射巨臀欧美在线视频 | 无码中文字幕色专区 | 免费乱码人妻系列无码专区 | 岛国片人妻三上悠亚 | 国产国语老龄妇女a片 | 成人试看120秒体验区 | 久青草影院在线观看国产 | 久久久久免费精品国产 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲精品一区二区三区在线观看 | 妺妺窝人体色www婷婷 | 成人无码视频免费播放 | 国产综合久久久久鬼色 | 日本一区二区三区免费播放 | 小泽玛莉亚一区二区视频在线 | 精品久久久久久人妻无码中文字幕 | 精品亚洲成av人在线观看 | 青草青草久热国产精品 | 亚洲大尺度无码无码专区 | 久久无码专区国产精品s | 狠狠色噜噜狠狠狠狠7777米奇 | 午夜嘿嘿嘿影院 | 麻豆精品国产精华精华液好用吗 | 一本久道久久综合婷婷五月 | 亚洲精品综合五月久久小说 | 国产免费久久久久久无码 | 亚洲国产av精品一区二区蜜芽 | 日本精品少妇一区二区三区 | 少妇被粗大的猛进出69影院 | 午夜精品久久久久久久 | 亚洲色偷偷男人的天堂 | 亚洲区欧美区综合区自拍区 | 无码国产色欲xxxxx视频 | 色综合久久久久综合一本到桃花网 | 亚洲欧洲中文日韩av乱码 | 无码任你躁久久久久久久 | 免费播放一区二区三区 | 成人欧美一区二区三区 | 又湿又紧又大又爽a视频国产 | 无码福利日韩神码福利片 | 亚洲精品鲁一鲁一区二区三区 | 人妻熟女一区 | 夫妻免费无码v看片 | 精品国产一区二区三区四区 | 人妻天天爽夜夜爽一区二区 | 98国产精品综合一区二区三区 | 波多野结衣高清一区二区三区 | 亚洲啪av永久无码精品放毛片 | 老头边吃奶边弄进去呻吟 | 亚洲成a人一区二区三区 | 国产精品久久久久久久影院 | 牛和人交xxxx欧美 | 国产猛烈高潮尖叫视频免费 | 欧美日本精品一区二区三区 | 伊人久久大香线焦av综合影院 | 又紧又大又爽精品一区二区 | 国产另类ts人妖一区二区 | 久久久久久久久888 | 欧美日本精品一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 蜜臀av无码人妻精品 | 精品偷自拍另类在线观看 | 最近免费中文字幕中文高清百度 | 久久久久人妻一区精品色欧美 | 丰满少妇弄高潮了www | 无码国产乱人伦偷精品视频 | 欧美肥老太牲交大战 | 国产精品无码mv在线观看 | 中文字幕人妻无码一区二区三区 | 国产亚洲欧美在线专区 | 国产精品a成v人在线播放 | 国产精品亚洲专区无码不卡 | 婷婷五月综合激情中文字幕 | 久久久久成人片免费观看蜜芽 | 中文字幕无码日韩欧毛 | 欧美精品免费观看二区 | 久久久久亚洲精品男人的天堂 | 国产精品高潮呻吟av久久4虎 | 国产无遮挡吃胸膜奶免费看 | 久久午夜无码鲁丝片午夜精品 | 亚洲伊人久久精品影院 | 野狼第一精品社区 | 久久精品人人做人人综合 | 青春草在线视频免费观看 | 久久精品人妻少妇一区二区三区 | 国产一区二区不卡老阿姨 | 国产麻豆精品一区二区三区v视界 | 久久久久久久久888 | 老熟妇仑乱视频一区二区 | 亚洲 欧美 激情 小说 另类 | 人人妻人人澡人人爽欧美精品 | 国产一区二区三区四区五区加勒比 | 国产精品第一区揄拍无码 | 日本欧美一区二区三区乱码 | 无码任你躁久久久久久久 | 又大又黄又粗又爽的免费视频 | 国产亚av手机在线观看 | 色欲人妻aaaaaaa无码 | 国内精品九九久久久精品 | 欧美三级a做爰在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产午夜无码精品免费看 | 国产高潮视频在线观看 | 免费无码一区二区三区蜜桃大 | 国产精品无码一区二区三区不卡 | 亚洲精品国偷拍自产在线观看蜜桃 | 色婷婷综合激情综在线播放 | 国产精品内射视频免费 | 丝袜足控一区二区三区 | 久久综合网欧美色妞网 | 日韩 欧美 动漫 国产 制服 | 少妇被粗大的猛进出69影院 | 国产真人无遮挡作爱免费视频 | 无码帝国www无码专区色综合 | 国产精品久久久午夜夜伦鲁鲁 | 全黄性性激高免费视频 | 亚洲乱码国产乱码精品精 | 综合网日日天干夜夜久久 | 国产成人精品优优av | 5858s亚洲色大成网站www | 亚洲中文字幕va福利 | 成人亚洲精品久久久久 | 日本熟妇乱子伦xxxx | 国产三级久久久精品麻豆三级 | 鲁鲁鲁爽爽爽在线视频观看 | 国产精品久久久av久久久 | 久久久www成人免费毛片 | 领导边摸边吃奶边做爽在线观看 | 天海翼激烈高潮到腰振不止 | 精品熟女少妇av免费观看 | 初尝人妻少妇中文字幕 | 中国女人内谢69xxxx | 乱码午夜-极国产极内射 | 国产超级va在线观看视频 | 内射巨臀欧美在线视频 | 国产av一区二区精品久久凹凸 | 人人妻在人人 | 人人澡人人透人人爽 | 国产精品福利视频导航 | 无码av岛国片在线播放 | 无码一区二区三区在线观看 | 亚洲无人区午夜福利码高清完整版 | 东京热一精品无码av | 久久人妻内射无码一区三区 | 国产精品久免费的黄网站 | 女高中生第一次破苞av | 内射老妇bbwx0c0ck | 婷婷综合久久中文字幕蜜桃三电影 | 丰满妇女强制高潮18xxxx | 激情内射亚州一区二区三区爱妻 | 国产精品二区一区二区aⅴ污介绍 | 无码午夜成人1000部免费视频 | 亚洲va中文字幕无码久久不卡 | 午夜福利不卡在线视频 | 爆乳一区二区三区无码 | 妺妺窝人体色www在线小说 | 国内精品久久毛片一区二区 | 一本久道久久综合婷婷五月 | 久9re热视频这里只有精品 | 图片小说视频一区二区 | 国产精品福利视频导航 | 少妇无码av无码专区在线观看 | 中文字幕中文有码在线 | 性欧美大战久久久久久久 | 国产婷婷色一区二区三区在线 | 久久久久se色偷偷亚洲精品av | 欧洲熟妇色 欧美 | 性欧美牲交在线视频 | 强伦人妻一区二区三区视频18 | 亚洲精品美女久久久久久久 | 精品国产精品久久一区免费式 | 人妻夜夜爽天天爽三区 | 国产精品久久久av久久久 | 亚洲中文字幕在线无码一区二区 | 日韩精品无码一区二区中文字幕 | 国产69精品久久久久app下载 | 99视频精品全部免费免费观看 | 天天摸天天透天天添 | 无码午夜成人1000部免费视频 | 国产精品毛片一区二区 | 亚洲乱亚洲乱妇50p | 国产农村妇女高潮大叫 | 丁香花在线影院观看在线播放 | 欧美精品免费观看二区 | 又色又爽又黄的美女裸体网站 | 日本一区二区三区免费播放 | 婷婷五月综合激情中文字幕 | 色综合久久久无码网中文 | 女人被爽到呻吟gif动态图视看 | 亚洲中文字幕av在天堂 | 成人免费视频视频在线观看 免费 | 麻豆人妻少妇精品无码专区 | 免费看少妇作爱视频 | 国产精品久久久久7777 | 国产99久久精品一区二区 | √8天堂资源地址中文在线 | 日韩精品无码免费一区二区三区 | 55夜色66夜色国产精品视频 | 人妻与老人中文字幕 | 婷婷六月久久综合丁香 | 亚洲成熟女人毛毛耸耸多 | 波多野结衣 黑人 | 亚洲熟女一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 少妇人妻偷人精品无码视频 | 人妻熟女一区 | 国产亚洲欧美在线专区 | 亚洲人成影院在线无码按摩店 | 国产精品无码mv在线观看 | 在线成人www免费观看视频 | 中文字幕乱码人妻无码久久 | 男女作爱免费网站 | 少妇太爽了在线观看 | 国产电影无码午夜在线播放 | 日韩精品久久久肉伦网站 | 精品久久久中文字幕人妻 | 国产莉萝无码av在线播放 | 欧美精品一区二区精品久久 | 色综合久久中文娱乐网 | 精品人人妻人人澡人人爽人人 | 国产精品久久久午夜夜伦鲁鲁 | 国产性生交xxxxx无码 | 狠狠cao日日穞夜夜穞av | 成 人 网 站国产免费观看 | 国产一区二区三区影院 | 亚洲一区二区三区四区 | 99久久精品午夜一区二区 | 国产美女极度色诱视频www | 国内精品久久久久久中文字幕 | 成人毛片一区二区 | 人人妻人人藻人人爽欧美一区 | 欧美xxxx黑人又粗又长 | 精品亚洲成av人在线观看 | 爽爽影院免费观看 | 亚洲第一网站男人都懂 | 欧美野外疯狂做受xxxx高潮 | 久久精品国产99久久6动漫 | yw尤物av无码国产在线观看 | 久久久中文字幕日本无吗 | 青青久在线视频免费观看 | 国产av一区二区三区最新精品 | 人妻少妇精品久久 | 无码人妻出轨黑人中文字幕 | 国产一区二区三区影院 | 亚洲欧美精品aaaaaa片 | 色综合久久久久综合一本到桃花网 | 波多野结衣高清一区二区三区 | 欧美成人免费全部网站 | 久久熟妇人妻午夜寂寞影院 | 国产精品对白交换视频 | 色 综合 欧美 亚洲 国产 | 欧美黑人性暴力猛交喷水 | 国产在热线精品视频 | 99re在线播放 | 天天爽夜夜爽夜夜爽 | 美女极度色诱视频国产 | 国内丰满熟女出轨videos | 亚洲精品国产精品乱码不卡 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲高清偷拍一区二区三区 | 18无码粉嫩小泬无套在线观看 | 麻豆国产人妻欲求不满谁演的 | 亚洲の无码国产の无码影院 | 久久久国产一区二区三区 | 精品少妇爆乳无码av无码专区 | 伊人久久婷婷五月综合97色 | 少妇性荡欲午夜性开放视频剧场 | 亚洲 a v无 码免 费 成 人 a v | 2019午夜福利不卡片在线 | 日韩av无码一区二区三区 | 成人性做爰aaa片免费看 | 国产又爽又猛又粗的视频a片 | 欧洲vodafone精品性 | 亚洲欧美国产精品久久 | 狠狠噜狠狠狠狠丁香五月 | 中文字幕无码免费久久9一区9 | 无码av最新清无码专区吞精 | 少妇高潮喷潮久久久影院 | 秋霞特色aa大片 | 无码国产色欲xxxxx视频 | 四虎4hu永久免费 | 男人扒开女人内裤强吻桶进去 | 99精品无人区乱码1区2区3区 | 天天躁日日躁狠狠躁免费麻豆 | 最新国产乱人伦偷精品免费网站 | 欧美人与善在线com | 亚洲午夜久久久影院 | 男女爱爱好爽视频免费看 | 国内丰满熟女出轨videos | 人人爽人人澡人人高潮 | 国产色xx群视频射精 | 国产精品毛片一区二区 | 欧美老妇交乱视频在线观看 | 国产成人精品优优av | 97精品国产97久久久久久免费 | 老熟女重囗味hdxx69 | 无遮挡啪啪摇乳动态图 | 亚洲人成人无码网www国产 | 欧美日韩人成综合在线播放 | 无码人妻精品一区二区三区下载 | av小次郎收藏 | 日本熟妇乱子伦xxxx | 人妻无码αv中文字幕久久琪琪布 | 国产舌乚八伦偷品w中 | 亚洲 a v无 码免 费 成 人 a v | 国产乱人偷精品人妻a片 | 六月丁香婷婷色狠狠久久 | 99久久久国产精品无码免费 | 国产欧美亚洲精品a | 中文无码成人免费视频在线观看 | 成年美女黄网站色大免费视频 | 久久成人a毛片免费观看网站 | 国产在线精品一区二区高清不卡 | 中文字幕av日韩精品一区二区 | 夜夜躁日日躁狠狠久久av | 正在播放东北夫妻内射 | 无码乱肉视频免费大全合集 | 日日天日日夜日日摸 | 亚洲国产欧美国产综合一区 | 无码国产乱人伦偷精品视频 | 国内精品人妻无码久久久影院蜜桃 | 在线观看欧美一区二区三区 | 黑人巨大精品欧美黑寡妇 | 亚洲一区二区三区偷拍女厕 | 亚洲成a人片在线观看无码3d | 98国产精品综合一区二区三区 | 欧美freesex黑人又粗又大 | 色综合久久网 | 无码人妻黑人中文字幕 | 成人免费无码大片a毛片 | 国产超碰人人爽人人做人人添 | 狠狠色欧美亚洲狠狠色www | 国产猛烈高潮尖叫视频免费 | 国产精品18久久久久久麻辣 | 最近免费中文字幕中文高清百度 | 中文字幕av无码一区二区三区电影 | 日韩精品乱码av一区二区 | 日日夜夜撸啊撸 | 青青青爽视频在线观看 | 久久午夜无码鲁丝片 | 丰满少妇弄高潮了www | 国产内射老熟女aaaa | 小鲜肉自慰网站xnxx | 久久久中文字幕日本无吗 | 成人女人看片免费视频放人 | 亚洲成色www久久网站 | 日韩视频 中文字幕 视频一区 | 精品欧洲av无码一区二区三区 | 欧美大屁股xxxxhd黑色 | 狠狠色欧美亚洲狠狠色www | 女人被男人躁得好爽免费视频 | 国产97人人超碰caoprom | 纯爱无遮挡h肉动漫在线播放 | 无码帝国www无码专区色综合 | 亚洲综合精品香蕉久久网 | 亚洲 高清 成人 动漫 | 扒开双腿吃奶呻吟做受视频 | 中文字幕无码乱人伦 | 俺去俺来也在线www色官网 | 久久精品一区二区三区四区 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲日本va中文字幕 | 国产午夜亚洲精品不卡 | 国产内射老熟女aaaa | 国产亚洲精品久久久ai换 | 亚洲毛片av日韩av无码 | 欧美刺激性大交 | 国产精品亚洲lv粉色 | 欧美变态另类xxxx | 最近免费中文字幕中文高清百度 | 国产真人无遮挡作爱免费视频 | 未满成年国产在线观看 | 夜精品a片一区二区三区无码白浆 | 国产精品-区区久久久狼 | 日本精品人妻无码77777 天堂一区人妻无码 | 无码人妻丰满熟妇区毛片18 | 无码人妻出轨黑人中文字幕 | 嫩b人妻精品一区二区三区 | 九九综合va免费看 | 永久免费精品精品永久-夜色 | 特级做a爰片毛片免费69 | 少妇被黑人到高潮喷出白浆 | 国产免费无码一区二区视频 | 国产欧美熟妇另类久久久 | 日本在线高清不卡免费播放 | 狠狠cao日日穞夜夜穞av | 色综合久久久久综合一本到桃花网 | 免费网站看v片在线18禁无码 | 国产无套内射久久久国产 | 亚洲天堂2017无码中文 | 国产 精品 自在自线 | 好爽又高潮了毛片免费下载 | 亚洲色成人中文字幕网站 | 18黄暴禁片在线观看 | 无码免费一区二区三区 | 亚洲色偷偷偷综合网 | 国产人妻精品午夜福利免费 | 曰本女人与公拘交酡免费视频 | 任你躁国产自任一区二区三区 | 成人免费视频一区二区 | 久久99热只有频精品8 | 中文字幕精品av一区二区五区 | 老子影院午夜精品无码 | 亚洲色偷偷男人的天堂 | 亚洲精品无码国产 | 亚洲综合色区中文字幕 | 日日橹狠狠爱欧美视频 | 一区二区传媒有限公司 | 久久精品中文字幕大胸 | 大乳丰满人妻中文字幕日本 | 噜噜噜亚洲色成人网站 | 午夜精品一区二区三区在线观看 | 中文字幕+乱码+中文字幕一区 | 激情五月综合色婷婷一区二区 | 久久久久久a亚洲欧洲av冫 | 无码免费一区二区三区 | 永久免费观看国产裸体美女 | 无码国产乱人伦偷精品视频 | 欧美激情一区二区三区成人 | 日产精品高潮呻吟av久久 | 国产乱人无码伦av在线a | 成人三级无码视频在线观看 | 少女韩国电视剧在线观看完整 | 国产成人精品视频ⅴa片软件竹菊 | 人妻无码αv中文字幕久久琪琪布 | 精品aⅴ一区二区三区 | 久久99精品国产麻豆 | 欧美 日韩 人妻 高清 中文 | 无遮无挡爽爽免费视频 | 国产办公室秘书无码精品99 | 国产成人精品久久亚洲高清不卡 | 国产成人精品必看 | 欧美日韩亚洲国产精品 | 久久久久成人片免费观看蜜芽 | 精品国偷自产在线视频 | 少妇无码av无码专区在线观看 | 性欧美大战久久久久久久 | 精品国产av色一区二区深夜久久 | 97色伦图片97综合影院 | 成人片黄网站色大片免费观看 | 中文无码成人免费视频在线观看 | 欧美三级a做爰在线观看 | 婷婷丁香五月天综合东京热 | 岛国片人妻三上悠亚 | √天堂资源地址中文在线 | 美女极度色诱视频国产 | 男人的天堂av网站 | 高清国产亚洲精品自在久久 | 亚洲一区二区三区国产精华液 | 国产精品国产自线拍免费软件 | 国产精品a成v人在线播放 | 黑人大群体交免费视频 | 国产xxx69麻豆国语对白 | 欧美日韩人成综合在线播放 | 精品久久久久久人妻无码中文字幕 | 亚洲va中文字幕无码久久不卡 | 国产午夜无码精品免费看 | 西西人体www44rt大胆高清 | 国产亚洲精品久久久久久 | 欧美老熟妇乱xxxxx | 无遮挡啪啪摇乳动态图 | 国产av一区二区三区最新精品 | 东京一本一道一二三区 | 免费播放一区二区三区 | 国产精品人人爽人人做我的可爱 | 精品少妇爆乳无码av无码专区 | 国产av一区二区三区最新精品 | 人妻少妇被猛烈进入中文字幕 | 无码一区二区三区在线 | 荫蒂被男人添的好舒服爽免费视频 | 又紧又大又爽精品一区二区 | 欧美喷潮久久久xxxxx | 中文精品久久久久人妻不卡 | 毛片内射-百度 | 少妇高潮一区二区三区99 | 无码人妻久久一区二区三区不卡 | 牲欲强的熟妇农村老妇女 | 日韩人妻无码中文字幕视频 | 4hu四虎永久在线观看 | 色 综合 欧美 亚洲 国产 | 亚洲成av人影院在线观看 | 伊人久久大香线蕉av一区二区 | 最新国产乱人伦偷精品免费网站 | 日韩欧美中文字幕在线三区 | 成人欧美一区二区三区黑人 | 大肉大捧一进一出视频出来呀 | 久久无码人妻影院 | 美女黄网站人色视频免费国产 | 日本精品人妻无码免费大全 | 少妇厨房愉情理9仑片视频 | 无码人妻精品一区二区三区下载 | 亚洲国产一区二区三区在线观看 | 国产美女极度色诱视频www | 久久亚洲精品中文字幕无男同 | а√天堂www在线天堂小说 | 久9re热视频这里只有精品 | 狠狠综合久久久久综合网 | 99久久精品午夜一区二区 | 男女下面进入的视频免费午夜 | 日本www一道久久久免费榴莲 | av小次郎收藏 | 免费中文字幕日韩欧美 | 国产午夜手机精彩视频 | 色综合久久久久综合一本到桃花网 | 波多野42部无码喷潮在线 | 在线成人www免费观看视频 | 天天摸天天碰天天添 | 精品偷自拍另类在线观看 | 亚洲精品综合一区二区三区在线 | 最新国产乱人伦偷精品免费网站 | 亚洲乱亚洲乱妇50p | 俺去俺来也在线www色官网 | 国产无套粉嫩白浆在线 | 国产精品美女久久久久av爽李琼 | 撕开奶罩揉吮奶头视频 | 国产成人无码专区 | 亚洲 a v无 码免 费 成 人 a v | 影音先锋中文字幕无码 | 久久久久久亚洲精品a片成人 | 55夜色66夜色国产精品视频 | 国产成人亚洲综合无码 | 青春草在线视频免费观看 | 国产精品亚洲一区二区三区喷水 | 国产色在线 | 国产 | 国产明星裸体无码xxxx视频 | 无码国产色欲xxxxx视频 | 欧美成人免费全部网站 | 日产精品99久久久久久 | 男人的天堂av网站 | 亚洲日本在线电影 | 亚洲日韩av一区二区三区中文 | 久久人人97超碰a片精品 | 国精品人妻无码一区二区三区蜜柚 | 亚洲爆乳无码专区 | 女高中生第一次破苞av | 久久伊人色av天堂九九小黄鸭 | 最新版天堂资源中文官网 | 丰满肥臀大屁股熟妇激情视频 | 思思久久99热只有频精品66 | 成人aaa片一区国产精品 | 成年女人永久免费看片 | 亚洲熟妇色xxxxx欧美老妇y | 啦啦啦www在线观看免费视频 | 国产成人一区二区三区在线观看 | 啦啦啦www在线观看免费视频 | 日本肉体xxxx裸交 | 夜夜夜高潮夜夜爽夜夜爰爰 | 久久久久免费精品国产 | 狠狠cao日日穞夜夜穞av | 沈阳熟女露脸对白视频 | 国产精品99久久精品爆乳 | 色欲久久久天天天综合网精品 | 国产人妻精品一区二区三区 | 日本一区二区三区免费高清 | 黑人玩弄人妻中文在线 | 亚洲国产av美女网站 | 久久人人97超碰a片精品 | 亚洲精品无码国产 | 日本欧美一区二区三区乱码 | 成人无码精品1区2区3区免费看 | 啦啦啦www在线观看免费视频 | 5858s亚洲色大成网站www | 亚洲成a人片在线观看无码 | 国产精品永久免费视频 | 亚洲国产欧美在线成人 | 青春草在线视频免费观看 | 97久久国产亚洲精品超碰热 | 波多野结衣高清一区二区三区 | 极品嫩模高潮叫床 | 亚欧洲精品在线视频免费观看 | 亚洲国产av精品一区二区蜜芽 | 人妻少妇精品无码专区二区 | 国产尤物精品视频 | 国产熟妇另类久久久久 | 国产xxx69麻豆国语对白 | 人人澡人人妻人人爽人人蜜桃 | 精品久久久久久人妻无码中文字幕 | 99久久精品午夜一区二区 | 精品久久综合1区2区3区激情 | 亚洲精品国偷拍自产在线观看蜜桃 | 麻豆成人精品国产免费 | 亚洲春色在线视频 | 无码福利日韩神码福利片 | 十八禁视频网站在线观看 | 国产无遮挡吃胸膜奶免费看 | 久久人人爽人人人人片 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产亚洲欧美日韩亚洲中文色 | 精品一区二区三区波多野结衣 | 久久久久久国产精品无码下载 | 久久精品人妻少妇一区二区三区 | 丰满少妇高潮惨叫视频 | 国产高清不卡无码视频 | 日韩av激情在线观看 | 丰腴饱满的极品熟妇 | 丰满人妻被黑人猛烈进入 | 国产精品成人av在线观看 | 男女下面进入的视频免费午夜 | 国产成人综合美国十次 | 欧美老人巨大xxxx做受 | 亚洲 激情 小说 另类 欧美 | 久久国产精品精品国产色婷婷 | 中文字幕无码av激情不卡 | 99久久久国产精品无码免费 | 人人妻人人澡人人爽人人精品浪潮 | 国产成人亚洲综合无码 | 精品久久久中文字幕人妻 | 领导边摸边吃奶边做爽在线观看 | 色五月丁香五月综合五月 | 特级做a爰片毛片免费69 | 美女扒开屁股让男人桶 | 鲁大师影院在线观看 | 国内精品人妻无码久久久影院蜜桃 | 国产精品毛片一区二区 | 精品国产成人一区二区三区 | 精品无人区无码乱码毛片国产 | 亚洲国产av精品一区二区蜜芽 | 国内精品九九久久久精品 | 亚洲色欲色欲天天天www | 国产乱人伦av在线无码 | 亚洲理论电影在线观看 | 一本色道婷婷久久欧美 | 中文字幕乱码中文乱码51精品 | 国产人妻大战黑人第1集 | 国产亚洲精品久久久久久大师 | 久久综合给久久狠狠97色 | 女人色极品影院 | 亚洲一区二区三区香蕉 | 曰韩少妇内射免费播放 | 亚洲成a人片在线观看日本 | 亚洲伊人久久精品影院 | 色妞www精品免费视频 | 精品欧美一区二区三区久久久 | 国产9 9在线 | 中文 | 国产亚洲欧美在线专区 | 国产精品亚洲专区无码不卡 | 四虎国产精品一区二区 | 久热国产vs视频在线观看 | 天海翼激烈高潮到腰振不止 | 97精品国产97久久久久久免费 | 国产精品永久免费视频 | 人妻插b视频一区二区三区 | 日韩精品乱码av一区二区 | 国产人妻精品一区二区三区 | 亚拍精品一区二区三区探花 | 国语精品一区二区三区 | 88国产精品欧美一区二区三区 | 成人性做爰aaa片免费看不忠 | 51国偷自产一区二区三区 | 久9re热视频这里只有精品 | 中文字幕av无码一区二区三区电影 | 国产精品a成v人在线播放 | 亚洲国产av精品一区二区蜜芽 | 亚洲乱亚洲乱妇50p | 久久久精品欧美一区二区免费 | 国产亚洲tv在线观看 | 国产精品亚洲一区二区三区喷水 | 日本精品人妻无码免费大全 | 国产凸凹视频一区二区 | 亚洲综合在线一区二区三区 | 精品久久久久久亚洲精品 | 东京热男人av天堂 | 精品国偷自产在线视频 | 麻豆国产人妻欲求不满谁演的 | 无码人妻丰满熟妇区毛片18 | 偷窥日本少妇撒尿chinese | 国产精品无码一区二区桃花视频 | 在线观看欧美一区二区三区 | 色一情一乱一伦一区二区三欧美 | 精品一区二区三区无码免费视频 | 成人影院yy111111在线观看 | 国产av人人夜夜澡人人爽麻豆 | 亚洲色欲色欲天天天www | 97se亚洲精品一区 | 思思久久99热只有频精品66 | 国产黄在线观看免费观看不卡 | 国产亚洲精品久久久ai换 | 色妞www精品免费视频 | 少妇无码av无码专区在线观看 | 亚洲日本一区二区三区在线 | 久久成人a毛片免费观看网站 | 日韩精品无码一本二本三本色 | 男女爱爱好爽视频免费看 | 在教室伦流澡到高潮hnp视频 | 日韩 欧美 动漫 国产 制服 | 亚洲欧洲无卡二区视頻 | 国产精品怡红院永久免费 | 国产性生大片免费观看性 | 欧美 日韩 亚洲 在线 | 久久国产精品萌白酱免费 | 伦伦影院午夜理论片 | 中文无码精品a∨在线观看不卡 | 亚洲中文无码av永久不收费 | 国产精品人人妻人人爽 | 亚洲七七久久桃花影院 | 亚洲综合无码一区二区三区 | 美女毛片一区二区三区四区 | ass日本丰满熟妇pics | 日本一卡2卡3卡四卡精品网站 | 日本大乳高潮视频在线观看 | 精品国产av色一区二区深夜久久 | 久久综合给久久狠狠97色 | 色综合久久久无码中文字幕 | 中文字幕亚洲情99在线 | 色偷偷人人澡人人爽人人模 | 欧美人与禽猛交狂配 | 亚洲中文字幕久久无码 | 日本精品久久久久中文字幕 | 亚洲国产欧美日韩精品一区二区三区 | 中文字幕无码乱人伦 | 色婷婷欧美在线播放内射 | 熟妇人妻无码xxx视频 | 在线欧美精品一区二区三区 | 精品无码成人片一区二区98 | 国产明星裸体无码xxxx视频 | 中文无码成人免费视频在线观看 | 国产成人综合色在线观看网站 | 久久精品国产99精品亚洲 | 少妇一晚三次一区二区三区 | 久久久久人妻一区精品色欧美 | 亚洲精品成人福利网站 | 久久这里只有精品视频9 | 无码播放一区二区三区 | 国产综合在线观看 | 中文精品无码中文字幕无码专区 | 国产午夜福利亚洲第一 | 黑人巨大精品欧美黑寡妇 | 国产亚洲精品久久久久久 | 97人妻精品一区二区三区 | 国产电影无码午夜在线播放 | 亚洲中文字幕va福利 | 国产手机在线αⅴ片无码观看 | 国产欧美亚洲精品a | 欧美性猛交内射兽交老熟妇 | 亚洲熟妇色xxxxx欧美老妇 | 日韩人妻无码一区二区三区久久99 | 99riav国产精品视频 | 午夜无码区在线观看 | 麻豆国产丝袜白领秘书在线观看 | 3d动漫精品啪啪一区二区中 | 正在播放东北夫妻内射 | 久久午夜无码鲁丝片 | 领导边摸边吃奶边做爽在线观看 | 未满小14洗澡无码视频网站 | 欧美精品无码一区二区三区 | 免费中文字幕日韩欧美 | 2019午夜福利不卡片在线 | 国产精品国产三级国产专播 | 丝袜人妻一区二区三区 | av在线亚洲欧洲日产一区二区 | 国产亚洲精品精品国产亚洲综合 | 亚洲欧美国产精品专区久久 | 日韩精品成人一区二区三区 | 中文无码伦av中文字幕 | 欧美日韩人成综合在线播放 | 成人试看120秒体验区 | 久久国产自偷自偷免费一区调 | 亚洲中文字幕va福利 | 丝袜人妻一区二区三区 | 一个人看的视频www在线 | 免费观看黄网站 | 国语精品一区二区三区 | 国产精品久久久久久久9999 | 亚洲乱亚洲乱妇50p | 日产精品高潮呻吟av久久 | 最近中文2019字幕第二页 | 成人精品视频一区二区 | 久久无码人妻影院 | 国产两女互慰高潮视频在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 久久国产精品_国产精品 | 亚洲精品久久久久avwww潮水 | 精品久久久中文字幕人妻 | аⅴ资源天堂资源库在线 | 国产综合久久久久鬼色 | 亚洲色欲久久久综合网东京热 | 亚洲成av人片天堂网无码】 | 欧美刺激性大交 | 成人一在线视频日韩国产 | 狂野欧美激情性xxxx | 少妇无套内谢久久久久 | 日本成熟视频免费视频 | 无码福利日韩神码福利片 | 国产另类ts人妖一区二区 | a国产一区二区免费入口 | 色狠狠av一区二区三区 | 国产综合久久久久鬼色 | 欧美人与物videos另类 | 欧美国产日韩久久mv | 亚洲一区二区三区播放 | 亚洲精品鲁一鲁一区二区三区 | 亚洲熟妇色xxxxx亚洲 | 国产激情艳情在线看视频 | 亚洲成a人片在线观看无码3d | 久久无码中文字幕免费影院蜜桃 | 国产精品人妻一区二区三区四 | 国模大胆一区二区三区 | 国产成人一区二区三区别 | 18禁止看的免费污网站 | 精品国产乱码久久久久乱码 | 久久久久亚洲精品男人的天堂 | 麻豆国产丝袜白领秘书在线观看 | 中文精品久久久久人妻不卡 | 日韩视频 中文字幕 视频一区 | 国产婷婷色一区二区三区在线 | 免费无码一区二区三区蜜桃大 | 永久免费观看美女裸体的网站 | 精品国产福利一区二区 | 极品嫩模高潮叫床 | 免费国产成人高清在线观看网站 | 性生交大片免费看女人按摩摩 | 四虎影视成人永久免费观看视频 | 欧美日韩久久久精品a片 | 免费播放一区二区三区 | 国产精品亚洲综合色区韩国 | 久久精品中文字幕大胸 | 中文字幕无码免费久久99 | 天堂在线观看www | 精品国产一区二区三区av 性色 | 18黄暴禁片在线观看 | 熟妇女人妻丰满少妇中文字幕 | 国产精品办公室沙发 | 欧美放荡的少妇 | 久久久婷婷五月亚洲97号色 | 亚洲欧美综合区丁香五月小说 | 免费观看的无遮挡av | 精品国产国产综合精品 | 激情内射亚州一区二区三区爱妻 | 夜夜高潮次次欢爽av女 | 丰满肥臀大屁股熟妇激情视频 | 日韩成人一区二区三区在线观看 | 欧美大屁股xxxxhd黑色 | 亚洲精品一区二区三区四区五区 | 中文字幕人妻无码一区二区三区 | 久久99精品久久久久久动态图 | 玩弄少妇高潮ⅹxxxyw | 亚洲欧美中文字幕5发布 | 国产成人一区二区三区在线观看 | 精品亚洲成av人在线观看 | 国产精品人人爽人人做我的可爱 | 国产乱人伦av在线无码 | 丰满少妇熟乱xxxxx视频 | 久久99精品国产.久久久久 | 成人免费视频视频在线观看 免费 | 日本www一道久久久免费榴莲 | 精品久久久中文字幕人妻 | 国产精品鲁鲁鲁 | 国产一区二区三区四区五区加勒比 | 国产精品成人av在线观看 | 国内精品人妻无码久久久影院蜜桃 | 亚洲精品一区二区三区婷婷月 | 曰本女人与公拘交酡免费视频 | 亚欧洲精品在线视频免费观看 | av无码不卡在线观看免费 | 日韩欧美成人免费观看 | 精品久久8x国产免费观看 | 给我免费的视频在线观看 | 天天摸天天透天天添 | 免费无码肉片在线观看 | 久久精品99久久香蕉国产色戒 | 亚洲精品国偷拍自产在线麻豆 | 青青久在线视频免费观看 | 欧洲美熟女乱又伦 | 亚洲中文字幕无码中文字在线 | 一本久久a久久精品vr综合 | a在线亚洲男人的天堂 | 亚洲精品成人av在线 | 牲欲强的熟妇农村老妇女视频 | 少妇无套内谢久久久久 | aⅴ在线视频男人的天堂 | 欧美激情内射喷水高潮 | 国产美女精品一区二区三区 | 77777熟女视频在线观看 а天堂中文在线官网 | 2019nv天堂香蕉在线观看 | 亚洲成a人片在线观看日本 | 玩弄少妇高潮ⅹxxxyw | 国产精品无码永久免费888 | 日韩欧美中文字幕在线三区 | 国产乱码精品一品二品 | 久久久久久久人妻无码中文字幕爆 | 亚洲人成网站色7799 | 久久国产劲爆∧v内射 | 波多野结衣一区二区三区av免费 | 狠狠噜狠狠狠狠丁香五月 | 荫蒂被男人添的好舒服爽免费视频 | 丁香花在线影院观看在线播放 | 国产三级久久久精品麻豆三级 | 精品国精品国产自在久国产87 | 玩弄中年熟妇正在播放 | 日本又色又爽又黄的a片18禁 | 久久99精品久久久久婷婷 | 日本护士毛茸茸高潮 | 欧美高清在线精品一区 | 中文字幕无码热在线视频 | 无码人妻少妇伦在线电影 | 国内精品人妻无码久久久影院蜜桃 | 亚洲第一无码av无码专区 | 18精品久久久无码午夜福利 | 久久天天躁夜夜躁狠狠 | 日本熟妇乱子伦xxxx | 女人被男人躁得好爽免费视频 | 呦交小u女精品视频 | 亚洲国产精品无码久久久久高潮 | 日日摸天天摸爽爽狠狠97 | 国内精品九九久久久精品 | 精品无码一区二区三区爱欲 | 少妇无码吹潮 | 色一情一乱一伦一区二区三欧美 | 国产无遮挡又黄又爽又色 | 少妇性l交大片欧洲热妇乱xxx |