超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

JDK日志框架的擴展

轉帖|其它|編輯:郝浩|2009-01-12 13:16:53.000|閱讀 974 次

概述:日志記錄對于軟件的維護特別是對于已部署到運行環境之后的軟件調試都有著重要的意義。本文介紹了 JDK 的日志框架,以及如何根據不同需求自定義日志處理、消息格式化、消息級別等組件。最后闡述了如何利用 JDK 日志框架的擴展能力將 Java 程序能夠通過 STAF(Software Testing Automation Framework,一種自動化測試框架)日志服務來進行監視。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

文章關鍵字:|JDK|日志|框架|Java|JDK|XML|HTML|測試|

  自 Java 1.4 開始,JDK 包括了一個嶄新的日志框架包 java.util.logging,該日志框架設計精良,和 JDK 緊密結合,控制靈活,使用簡單。日志記錄對于軟件的維護特別是對于已部署到運行環境之后的軟件調試都有著重要的意義。在實際的項目中,往往還需要比該框架所提供的更為復雜的日志功能。對于這種需求,JDK 日志框架具有足夠的可擴展能力,可以自定義不同需求的日志處理、消息格式化、日志消息級別等組件。在下面的內容中,本文將介紹了如何擴展 JDK 日志框架,自定義日志處理方式。并就一個實際的例子來介紹如何結合 JDK 日志框架和 STAF(Software Testing Automation Framework,一種自動化測試框架)日志服務來對 Java 程序進行監視。

  JDK 日志框架介紹

  JDK 的日志框架即 java.util.logging 包。對于一個軟件的日志系統而言,首先必須得有一個日志對象,該對象負責記錄日志信息。同時該信息可以輸出到不同的位置,例如控制臺,文件甚至網絡中。對于信息的格式,則可以根據不同的需求,可以輸出成普通文本,XML 或者 HTML 的格式。同時還需要對日志信息進行不同級別的分類,這樣的好處是可以過濾冗余信息,只保留關鍵的日志。對于一個日志框架而言,日志對象必須是可配置的,它可以按照配置來輸出到指定的目標,同時按照配置來決定輸出的格式和決定何種級別以上的日志才能輸出。配置的形式還可以是多種多樣的,既能是代碼的形式,也能是配置文件的形式。尤其是配置文件的形式,對于一個已經部署到運行環境中的軟件而言,可以非常方便的改變日志配置而無需改變其源代碼。

  JDK 日志框架提供了上述的所有功能。它主要包括如下幾個部件:

  • Logger:日志記錄對象。用于記錄日志信息。
  • Handler:用于處理日志信息的輸出。在 Handler 類中,可以決定日志是輸出到文件中還是控制臺中。
  • Filter: 用于過濾日志。在 Filter 類中,可以根據日志級別或者某種條件來決定是否輸出該日志。這樣達到去除冗余信息的目的。
  • Formatter:用于格式化日志信息。該類可以將日志文本格式化成 XML 或者 HTML 的格式,這完全依賴于具體的實現。
  • Level:用于表示日志的級別。 JDK 日志框架默認有如下級別 : SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST 。

  對于程序而言,它的 Logger 對象首先會判斷日志的級別是否滿足輸出級別的要求,然后將滿足級別要求的日志消息交給所配置的 Handler 對象來處理,如果日志對象配置了一個 Filter 對象,那么 Filter 對象將會對日志信息做一次過濾。 Handler 對象接受到日志消息后,根據其所配置的格式化類 Formatter 來改變日志的格式,根據所配置的 Filter 對象和 Level 對象來再次過濾日志信息,最后輸出到該種 Handler 對象所指定的輸出位置中,該輸出位置可以是控制臺,文件,網絡 socket 甚至是內存緩沖區。其架構模型如圖 1 所示。

圖 1 JDK 日志框架
點擊查看大圖

  JDK 提供了如下幾種默認支持的 Handler 類:

  • ConsoleHandler: 輸出日志到控制臺中
  • FileHandler:輸出日志到指定文件中
  • MemoryHandler:輸出日志到內存緩沖區中,當一定的條件滿足的時候(如某種關鍵字的日志信息)再將緩沖區中的日志輸出
  • SocketHandler: 輸出日志到網絡 socket 中
  • StreamHandler: 輸出日志到輸入輸出流對象中

  同時 JDK 日志框架也不失其靈活性,你可以定制自己所需要的 Handler,將日志按照自定義的需求輸出到不同的位置,同時 Formatter,Level 類都可以自定義擴展,下面就詳細敘述如何自定義擴展這些組件。

  自定義日志 Handler

  所有的 Handler 類都是繼承自 java.util.logging.Handler 抽象類,該類結構圖如 圖 2 所示。

圖 2 Handler 類圖
點擊查看大圖

  由該類圖可見,Handler 抽象類提供了抽象接口:publish, flush 和 close 。這些接口提供了日志輸出的基本功能。同時 Handler 類保存了 Formatter,Filter 和 Level 對象用來控制日志輸出。因此,編寫自定義的 Handler 類需要如下步驟:

  • 繼承 Handler 抽象類
  • 實現 publish,flush 和 close 方法。其中 publish 方法是用于發布一條日志記錄。 flush 方法是清空內存緩沖區。 close 方法是當應用程序關閉的時候,釋放該 Handler 類所申請的資源(如文件,socket 等)
  • 設置默認的 Formatter,Filter 和 Level 對象。必要的時候,可以在類的初始化時候讀取配置文件來設置這些參數。

[SPAN]  一個典型的自定義 Handler 類實現如清單 1 所示。

清單 1 自定義 Handler 類

public class MyHandler extends Handler {
   private boolean doneHeader = false;
   	 public MyHandler() {
   		 setLevel(Level.INFO);
   		 setFilter(null);
   		 setFormatter(new SimpleFormatter());
   	 }
     	 _cnnew1@Override
   	 public void close() throws SecurityException {
   	 if (!doneHeader) {
   		 output(getFormatter().getHead(this));
   		 doneHeader = true;
   	 }
   	 output(getFormatter().getTail(this));
   	 flush();
   	 }
     	 @Override
   	 public void flush() {
   		 // 清空緩沖區
  	 }
     	 @Override
   	 public void publish(LogRecord record) {
   		 if (!isLoggable(record)) {
   			 return;
   		 }
   		 String msg = getFormatter().format(record);
     		 try {
   			 if (!doneHeader ) {
   				 output(getFormatter().getHead(this));
   				 doneHeader = true;
   			 }
   			 output(msg);
   		 } catch (Exception ex) {
   			 reportError(null, ex, ErrorManager.WRITE_FAILURE);
   		 }
   	 }
     	 private void output(String message) {
   		 // 實現日志輸出
  	 }    }

  這里 reportError 方法是將日志類中的錯誤信息輸出到外界,這個是由 ErrorManager 類實現的,ErrorManager 類負責記錄日志框架中 Handler 的錯誤,一般情況下是將該錯誤打印到控制臺中。具體的每條日志消息被 JDK 日志框架封裝成 LogRecord 對象,該類部分定義如 清單 2所示。

清單 2 LogRecord 類定義

public class LogRecord implements java.io.Serializable {
   	 public String getLoggerName();
   	 public void setLoggerName(String name);
   	 public ResourceBundle getResourceBundle();
   	 public void setResourceBundle(ResourceBundle bundle);
   	 public Level getLevel();
   	 public void setLevel(Level level);
   	 public String getMessage();
   	 public void setMessage(String message);
   	 public Object[] getParameters();
   	 public void setParameters(Object parameters[]);
   	 public int getThreadID();
   	 public void setThreadID(int threadID);
   	 public long getMillis();
   	 public void setMillis(long millis);
   	 public Throwable getThrown();
   	 public void setThrown(Throwable thrown);
   	 ...    }

  由清單 2 可見,LogRecord 類包含了一個日志消息的級別、消息文本、時間、參數、線程等等所有的信息,這些都交給 Handler,Formatter 和 Filter 這些對象來處理。同時該類也是可序列化的,可以序列化到網絡和文件中。該類還可以和一個 ResourceBundle 對象綁定,實現消息字符串的本地化處理。

  本節描述了一個典型的自定義的 Handler 類的實現。在本文后面部分將會有一個實際的例子來介紹如何實現一個 STAF 日志處理類。[SPAN]

  自定義日志 Formatter

  日志可以被格式化為一定格式的文本,也可以成為 XML 或者 HTML 這樣標準的格式。這取決于 Formatter 類的具體實現。 Formatter 抽象類提供了 format 成員函數用于擴展。一個典型的自定義 Formatter 類實現如清單 3 所示:

清單 3 LogRecord 類定義

public class MyFormatter extends Formatter {
   	 private final String lineSeparator =
System.getProperty("line.separator"); @Override public String format(LogRecord record) { StringBuffer sb = new StringBuffer(); String message = formatMessage(record); sb.append(record.getLevel().getLocalizedName()); sb.append(message); sb.append(lineSeparator); if (record.getThrown() != null) { try { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); record.getThrown().printStackTrace(pw); pw.close(); sb.append(sw.toString()); } catch (Exception ex) { } } return sb.toString(); } }

  其中 formatMessage 方法提供了默認的將日志記錄本地化和格式化的方法。它還能支持 java.text 風格的文本格式化,這只需要在調用 Logger 對象的 setMessage 方法設定 java.text 風格的格式字符串,同時通過 setParameters 方法設置參數,這樣 formatMessage 將會根據所設置的 java.text 風格的格式字符串來格式化日志消息。總之,formatMessage 方法方便了子類格式化字符串。使子類只需要定義輸出文本的格式而無需考慮本地化等問題。

  自定義日志消息級別

  JDK 日志框架默認提供了 SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST 這幾種日志級別。如果我們需要定義更多的日志級別,只需要繼承 java.util.logging.Level 類,然后將自定義的級別作為靜態成員變量聲明即可。一個典型的自定義的消息類如清單 4 所示。

清單 4 自定義 Level 類

public class MyLevel extends Level {
     	 protected MyLevel(String name, int value) {
   		 super(name, value);
   	 }
     	 public static final Level Level1 = new MyLevel("Level1", 123);
   	 ... // 其他自定義級別
   }

  權重值 value 是一個整型數。在默認的 JDK 日志級別中,SEVERE 的權重是 1000,FINEST 是 300,可以根據具體的需求來定義每個自定義級別的權重。例如在 WARNING 和 INFO 級別中加入一個新的級別,該級別的權重必須介于 800 到 900 之間。[SPAN]

  自由的日志配置

  和其他日志框架一樣,JDK 日志框架同樣提供了強大的日志配置功能。你既可以通過代碼進行動態配置,也可以通過配置文件來實現自由靈活的配置。通過代碼動態配置,應用程序可以實現在運行過程中改變日志類的配置,動態地改變不同的配置組合。一個簡單的動態配置代碼如清單 5 所示。

清單 5 動態配置 Logger 對象

public static void main(String[] args){
   	 Handler fh = new FileHandler("%t/wombat.log");
   	 Logger.getLogger("logname").addHandler(fh); 
  	 Logger.getLogger("com.wombat").setLevel("com.wombat",Level.FINEST);
   	 ...
    }

  配置文件的配置方法則同樣靈活多變。它主要是在應用程序啟動時根據一個指定的配置文件來設置日志對象。在配置文件中,日志對象是由其名稱來標識的。一個典型的日志配置文件如清單 6 所示。

清單 6 JDK Logger 配置文件

# 設置日志對象的 Handler,日志對象的名稱是com.xyz.foo
    com.xyz.foo.handlers= java.util.logging.FileHandler,
java.util.logging.ConsoleHandler # 設置日志對象的基本輸出級別 com.xyz.foo.level = INFO #FileHandler 只允許輸出 SEVERE 以上級別的日志 java.util.logging.ConsoleHandler.level = SEVERE #ConsoleHandler 允許輸出 INFO 以上級別的日志 java.util.logging.ConsoleHandler.level = INFO

  當設置好一個日志配置文件后,在 java 程序的啟動參數中,我們可以通過添加 -Djava.util.logging.config.file 參數來定義配置文件路徑,一個典型的 java 命令行如下:

java -Djava.util.logging.config.file=logger.properties -cp . Mainclass

  我們也可以在應用程序中聲明自定義的 Handler,Formatter,Level 等組件,這只需要這些自定義組件能夠在 classpath 中找到即可。

  實例——結合 STAF 日志服務

  STAF(Software Testing Automation Framework)是一個自動化軟件測試框架,它可以實現分布式的自動化軟件測試管理。我們可以應用 STAF 庫的 Java API 來做基于 STAF 框架的應用,同時 STAF 同時也提供了日志服務。其日志服務是用來記錄自動化測試流程中的信息,方便在 24x7 的自動化測試中記錄自動化測試的操作,便于發現潛在的自動化測試管理腳本的問題。
  既然我們可以用 STAF 的 Java API 來做基于 STAF 的應用,我們也可以將 JDK 的日志框架同 STAF 的日志服務接口結合起來。 STAF 的日志服務的 Java 接口定義如清單 7 所示:

清單 7 STAFLog 類定義

public class STAFLog
    {
       public STAFLog(String logType, String logName, STAFHandle handle);
       public STAFResult log(int level, String msg)
       // Log type constants
       public static STAFResult log(STAFHandle theHandle, String logType,
          String logName, int level, String msg)
       public String getName();
       public String getLogType();
       public int getMonitorMask();
       ... //other methods
    }

  從清單 7 我們可以看出,STAFLog 類提供了方法可以將日志信息存儲到 STAF 的日志庫中, 這個日志庫既可以是本地的文件,也可以是另一個 STAF 服務器上的日志庫。這是通過本地 STAF 服務器的配置來決定的。而 STAFLog.log() 方法只用于記錄日志信息。[SPAN]

  將 STAF 日志服務的 Java API 同 JDK 日志框架結合起來需要做如下步驟:

  創建 STAF 日志 Handler 類

  該類封裝了 STAF 日志服務 API 的接口。同時 STAF 的 Java API 需要一個全局的 STAFHandle 對象,用來表示本地的 STAF 服務句柄。這個可以通過建立一個靜態的 STAFHandle 對象即可。其代碼如下所示,我們定義了一個 STAFHandler 類如清單 8 所示。

清單 8 STAFHandler 類實現

import java.util.logging.*;
    import com.ibm.staf.wrapper.STAFLog;
      public class STAFHandler extends Handler {
   	 private String logName;
   	 private static STAFHandle stafHandle = null;
   	 public STAFHandler(String name) {
   		 configure(); 
  		 logName = name;
   	 }
   	 public STAFHandler() {
   		 configure();
   	 }
     	 @Override 
  	 public void close() throws SecurityException { 
  		 if (stafHandle != null){
   			 try {
   				 stafHandle.unRegister();
   			 } catch (STAFException e) { 
  				 //ignore 
  			 }
   		 }
   	 }
     	 @Override
   	 public void flush() {
   		 //nothing
   	 }
     	 @Override
   	 public void publish(LogRecord record) {
   		 if (!isLoggable(record)) {
   			 return; 
  		 } 
  		 String msg; 
  		 try {
   			 msg = getFormatter().format(record);
} catch (Exception ex) { reportError(null, ex, ErrorManager.FORMAT_FAILURE); return; } try { STAFLog.log(stafHandle, STAFLog.MACHINE,
logName, record.getLevel().getName(), msg); } catch (Exception ex) { reportError(null, ex, ErrorManager.WRITE_FAILURE); } ...

  在實現 STAFHandler 類時有以下幾個要點:

  1. 由于 STAF API 的調用時需要一個 STAFHandle 的對象來代表本地的 STAF 服務,在該類中聲明了一個全局變量用來存儲 STAFHandle 。
  2. close 方法是用來清理系統資源的,上述代碼的 close 方法中釋放了全局變量 STAFHandle 對象。
  3. publish 方法就是獲得格式化后的消息后,直接調用 STAF 的日志 API 將日志發送到 STAF 服務中。

  但到目前為止,我們還沒有給 STAFHandler 類添加一個配置的代碼,使之可以支持配置文件。下面我們定義了一個函數 configure,其代碼如清單 9 所示。

清單 9 配置函數實現

private void configure() {
          if (stafHandle == null) {
              try {
                  stafHandle = new STAFHandle("my application");
              } catch (STAFException e) {
                  reportError("registe staf handle error",
e, ErrorManager.OPEN_FAILURE); } } LogManager manager = LogManager.getLogManager(); String cname = getClass().getName(); //set staf log name logName = manager.getProperty(cname + ".name"); if (logName == null) logName = "demo.staflog"; //set formatter String sformatter = manager.getProperty(cname + ".formatter"); Formatter formatter = null; if (sformatter != null) { try { formatter = (Formatter)Class.forName(sformatter).newInstance(); } catch (Exception e) { //ignore } } setFormatter(formatter == null? new STAFFormatter() : formatter); //set level String sLevel = manager.getProperty(cname + ".level"); Level level = null; if (sLevel != null) { try { level = STAFLevel.parse(sLevel); } catch (Exception e) { //ignore } } setLevel(level == null? STAFLevel.DEBUG : level); }

  在實現配置文件支持的代碼中,有以下幾個要點:

  1. STAF API 的初始化需要注冊 STAFHandle 對象。而且該注冊只能執行一次。我們根據全局變量 stafHandle 的值來決定是否注冊該對象。
  2. JDK 的日志框架有一個全局的 singleton 管理類 STAFManager,該類用于管理日志類,并提供了讀取日志配置文件的成員函數 getProperty 。在上述的代碼中,我們通過 STAFManager.getProperty 方法,從日志配置文件中讀取 STAFHandler 對象所設置的 Formatter 類名,然后通過反射生成一個新的 Formatter 對象,設置到 Handler 對象中。
  3. 對于日志級別也是通過 STAFManager.getProperty 方法。需要注意的是由于我們的日志級別是自定義的級別,所以 Level 對象是由我們自定義的 Level 類 STAFLevel 來生成的。
  4. 我們也能定義自己需要的屬性。比如清單 9 中我們定義了一個 .name 屬性,用來存儲 STAF 日志名稱,通過 getProperty 函數從配置文件中讀取 .name 屬性。 [SPAN]

  創建一個適合 STAF 日志的 Formatter 類

  由于 STAF 日志服務無需特殊的格式,我們只需要定義一個普通文本格式的 Formatter 即可。其代碼如清單 10 所示,注意這里考慮了如果記錄了一個異常對象的情況,將異常對象的 stack 打印到字符串中添加到消息文本中。

清單 10. STAFFormatter 實現

import java.io.*;
  import java.util.logging.*;
  public class STAFFormatter extends Formatter {
      private final String lineSeparator = System.getProperty("line.separator");
      @Override
      public String format(LogRecord record) {
          StringBuffer sb = new StringBuffer();
          String message = formatMessage(record);
          sb.append(message);
          sb.append(lineSeparator);
          if (record.getThrown() != null) {
              try {
              StringWriter sw = new StringWriter();
              PrintWriter pw = new PrintWriter(sw); 
              record.getThrown().printStackTrace(pw);
              pw.close(); 
              sb.append(sw.toString()); 
             } catch (Exception ex) {
              }
          }
          return sb.toString();
      }
  }

  創建對應于 STAF 日志級別的 Level 對象

  這是由于 STAFLog 有著不同的日志消息級別,它包括 Fatal, Error, Warning, Info, Tracer, Debug 等級別,有些是 JDK 日志框架已有的級別,有些則不是。我們需要增加新的 Level 對象來滿足 STAFLog 的需求。一個新的 Level 類:STAFLevel 定義如清單 11 所示。

清單 11 自定義 STAFLevel

import java.util.logging.Level;
      public class STAFLevel extends Level {
     	 protected STAFLevel(String name, int value) {
   		 super(name, value);
   	 }
     	 protected STAFLevel(String name, int value, String resourceBundleName) {

   		 super(name, value, resourceBundleName);
   	 }
     	 public static final Level FATAL = new STAFLevel("FATAL",980);
   	 public static final Level ERROR = new STAFLevel("ERROR",980);
   	 public static final Level TRACE = new STAFLevel("TRACE", 790);
   	 public static final Level DEBUG = new STAFLevel("DEBUG", 690);
    }

  清單 11 定義了 FATAL,ERROR,TRACE 和 DEBUG 級別。這就和 STAFLog 中的部分級別一一對應起來了。

  將一切組合起

  清單 12 描述了如何在一段實際的代碼中將 STAF 日志處理類和 JDK 日志類結合起來。 從清單 12 可以看出,該實例默認指定輸出到 STAF 日志服務的日志名稱為“ staflogger ”。然后通過動態配置的方法來設定 Handler,Level 和 Formatter 。最后在調用 JDK 的日志對象的 log 方法記錄了 4 種自定義級別的日志。

清單 12 一個完整的例子

package demo.staflog;
      import java.util.logging.Logger;
      public class STAFLoggerTest {
   	 public static void main(String[] args) { 
  		 Logger logger = Logger.getLogger(STAFLoggerTest.class.getName()); 
  		 logger.setUseParentHandlers(false);
   		 logger.setLevel(STAFLevel.DEBUG);
   		 STAFHandler stafHandler = new STAFHandler("staflogger");
   		 stafHandler.setLevel(STAFLevel.DEBUG); 
  		 stafHandler.setFormatter(new STAFFormatter());
   		 logger.addHandler(stafHandler);
   		 //log
   		 logger.log(STAFLevel.DEBUG, "debug log"); 
  		 logger.log(STAFLevel.FATAL, "fatal log"); 
  		 logger.log(STAFLevel.ERROR, "error log"); 
  		 logger.log(STAFLevel.TRACE, "trace log");   	 }
    }

但我們也可以將這些代碼改為配置文件的方式,其配置文件如清單 13 所示:

清單 13 STAFLog 類定義

# 設置日志對象的 Handler
    demo.staflog.STAFLoggerTest.handlers= demo.staflog.STAFHandler
    demo.staflog.STAFLoggerTest.level = DEBUG
      # 取消發送日志到父 Logger 對象
   demo.staflog.STAFLoggerTest.useParentHandlers = FALSE
      # 設置 Handler 的名稱,輸出級別和格式化對象
   demo.staflog.STAFHandler.name= staflogger
    demo.staflog.STAFHandler.level = DEBUG
    demo.staflog.STAFHandler.formatter = demo.staflog.STAFFormatter

這樣代碼可以簡化為清單 14 。

清單 14 STAFLog 類定義

public class STAFLoggerTest {
    private static Level defaultLevel = STAFLevel.DEBUG;
   	 public static void main(String[] args) {
   		 //log
   		 logger.log(STAFLevel.DEBUG, "debug log");
   		 logger.log(STAFLevel.FATAL, "fatal log");
logger.log(STAFLevel.ERROR, "error log"); logger.log(STAFLevel.TRACE, "trace log");
} }

  配置文件的方式相對于動態配置的方式更加靈活,因為這無需改變和重新編譯代碼,只需要修改配置文件,就能修改日志中 Handler,Level 和 Formatter 的組合配置,這對于已經部署發布的軟件而言,有著更為實際的意義。
  當運行代碼后,在命令行中輸入 STAF 命令來顯示 STAF 日志 staflogger:

mymachine:~ myname$ staf local log query machine mymachine
 logname staflogger
    Response    --------
    Date-Time
         Level Message
      ----------------- ----- ----------
    20081111-16:15:21 Debug debug log
    20081111-16:15:21 Fatal fatal log
    20081111-16:15:21 Error error log
    20081111-16:15:21 Trace trace log

  這顯示了我們剛才在 Java 代碼中記錄的信息,它們已經被輸出到 STAF 的日志服務中了。

  結束語

  JDK 日志框架簡單靈活,它雖然比 log4j 出現的時期晚,但其功能并不比 log4j 少。而且 JDK 日志框架直接隸屬于 JDK,被 Java 標準所支持而無需安裝第三方庫文件。本文介紹了 JDK 日志框架的結構,如何擴展 JDK 日志框架使之滿足實際的項目需求。并以如何在 Java 程序中將日志輸出到 STAF 的日志服務中為例,一步步描述了如何實現擴展 JDK 日志組件,使之和 STAF 日志服務結合到一起,同時如何創建靈活的配置文件來組合日志框架組件。希望本文可以給其他需要擴展 JDK 日志組件的開發者提供幫助。


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn

文章轉載自:IBM

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 99成人精品一区二区 | 高清偷自拍亚洲精品三区 | 国产精品亚洲乱伦 | 91妻友:夫妻交友新体验 | 国产精品亚洲专区在线 | 国产女网红亚洲精品 | 国产一区二区三区影院 | 国产成人av一区二区在线观看 | 国产黄三级精品在线观看播放 | 国产成人最新三级 | 国产精品黑色丝袜高跟鞋 | 国产成人精品国内自产色 | 精品视自拍视频在线观看 | 国产精品一区二区公司 | 99精品国产免费久久 | 国产原创中文字幕在线观看 | 成人欧美日韩在线观看 | 国产成人精品高清在线观看99 | 91成人精品国产一区 | 国产成人垃圾片一区二区三区 | 国产99热在线这里只有精品 | 91精品国产调教在线观看 | 黄色av无码 | 国外av无码精品国产精品 | h无码真人在线观看 | 91精品国产免費人成网站 | 69久久91麻豆一区二区三区 | 国产免费高清69式视 | 99久久久无码国产精品不卡 | 国产区亚洲区欧美区 | 精品亚洲一区二区三区四区五区 | 高潮喷水的网站 | 国产亚洲精品2025自在线 | 91久久人澡人人添人人爽欧美 | 国产人妻一区二区三区 | 国产三级精品三级男人的天堂 | 国产盗摄一区二 | 国产精品女同一区二区在线观看 | av人片一区二区密柚 | 福利小视频在线观看 | 国产精品高清无码在线观看 | 99久久精品午夜一区 | 精品一区二区av天堂 | 国产精品亚洲第一区在线观 | 国产最新自拍视频 | 国产精品亚洲欧美卡通动漫 | 国产综合精品婷婷丁香五月 | 91精品福| 91精品专区国产在线观看高清 | 91久久亚洲国产成人综合精品 | 丰满人妻少妇久久久久 | 国产精品午夜自在在线精品 | 国产专区亚洲欧美另类在线 | 91亚洲欧美日 | 国产女人高潮抽搐喷水视频 | 91精品国产全国免费观看蜜桃 | 国产精品一区二区宅男宅女 | 国产欧美日韩免费 | 国产一人人看在线视频 | 国产欧美另类久久久精品91 | 国产av一区二区三区四区五 | 国产午夜精品片一区二区三区 | 91精品国产乱码在线观看 | 成人午夜看黄在线尤物成人 | 岛国av免费在线观看 | 国产亚洲午夜精品视频 | 国内精品乱码卡一卡2卡 | 国产一区二区免费伦理鲁丝片 | 国产成人久久精品一区二区三 | 国产一级a爱片在线观看视频 | 国产av天堂一区二区三区 | 国产精品六区久久综合亚洲av | 国产制服美女在线观看 | 国产无码啪啪视 | 精品无人区麻豆 | 国产高清av在线播放 | 国产精品无套在线观看 | 国产日韩欧美另类视频 | 国产精品禁18久久久夂久 | 高清无码中文字幕乱码 | 国产麻豆叶一涵剧情在线观 | 国产成人免费 | 国产福利视频在线观看 | 国产激情无码视频一区二区三区 | 91精品国产乱码久久久久 | 69热视频在线观看免费自拍 | 国产成a人片在线观看视频99 | 2025精品国产自在现线官网 | 国产探花在线精品一区二区 | 精品久久国产av一区 | 国产熟女级毛片 | 国产午夜毛片成人网站 | 国产美女被遭强高 | 国产午夜无码片在线观看影 | aⅴ中文 | 国产成人精选在线不卡 | 国产剧情自产愉拍精品 | 国产一区二区精品高清在线观看 | 91久久国产成人免费观看资源 | 国产综合精品婷婷丁香久久 | 国产ol丝袜高跟在线观看不卡 | 国产成人综合久久免费精品 | 国产高清美女一级毛片录像 | 国产微拍一区二区三区四区 | 精品国产女主播在线直播观看 | 不卡黄片在线播放 | 国产精品女人 | 国产麻豆视频 | 精品国产欧美一区二区三区 | 精品日韩在线视频 | 国产不卡视频一区二区三区四区 | 精品国产一区二区三区av片 | 国产亚洲欧美精品久久久 | 国产精品激情免费观看 | 国产精品女同一区二区在线观看 | 国产高清一区二区三区视 | 国产午夜片无码区在线观看爱情 | 91精品国产高久久久成人 | 国人国产免费av影院一区 | 国内偷拍三级视频不卡 | 国产偷录叫床高潮录音 | 精品无码+护士 | 成人一区二区三区免费看 | a级一级黄色片 | 国产成年无码久久久久下载 | 国产护士囗交吞精视频 | 国产精品免费 | 成人综合网站一区二区三区四区 | 丰满少妇大乳高潮在线 | 精品国产一区二区av麻豆 | 国产亚洲一区区二区在线 | 二区三区四区 | 国产毛多水多高潮高清 | 国产高潮视频在线观看 | 国产a级乱码片 | 国产丝袜大长腿精品丝袜美女 | 高潮毛片无遮挡高清视频播放 | 高清a毛片 | 国产精品精品自在线拍 | 91精品福利大全在线观看 | 国产精品亚洲综合第一页 | 国产电影一区二区三 | 国产丝袜一区二区三区 | 国产精品麻豆羞羞答答 | 国产一区二区理论在线观看 | 精品一区二区三区波多野 | 国产成人欧美一区二区三区 | 国产成人a亚洲综合无码 | 多人混交群体交乱 | 国产人妖性爱专区 | 加勒比东京热一区二区 | 国产成人av一区二区在线观看 | 91精品国产91久久综合牛牛 | 按摩无码| 成人一区二区三区四区五区六 | 国产91av在线播放 | 91精品手机在线无码 | 国产精品爽爽va在线观看无码 | 国产精品成人av三级在线 | 国产三级av在线播放 | 国产高清一区二 | ts人妖另类国产 | 国产99国产精偷 | 国产三级aⅴ在线播放 | 国产午夜亚洲精品三区 | 国产精品亚洲片在线观看不卡 | 国模国产精品嫩模大尺度视频 | 国产精品冒白 | 国产高清免费在线观看 | 91精品在线国产 | 国产高潮流白浆喷水在线观看 | 国产骚丝袜诱惑视频在线观看 | 国产va在线在线观看视频 | 国产精品无套在线观看 | av日韩人妻黑人综合无码 | av午夜精品一区二区三 | 精品亚洲一区二区三区 | 国产精品一级毛片在线不卡 | 国产一区二区高 | 国产精品国产三级国v麻豆 国产精品国产三级国产 | 国产一区二区精品尤物 | 91精品免费在线观看不卡 | 国产大片线上免费看 | 国产综合亚洲欧美日韩一区 | 91精品一区二区网站 | 国产高清美女一级毛片久久 | 国产精品高潮露脸在线观看 | 精品国产乱子伦一区二区三区58 | 国产激情无码视频在 | 韩国免费a级毛片 | 国产高清在线精品一区二区三区 | 91在线无码精品秘 | 东京热人妻系列无码专区 | 国产麻豆成人传媒在线观看 | 精品国产自产久久久 | 国产精品一区二区六 | 国产熟女一区二区五月婷 | 国产成人无码精品一区二区三区 | 国产精品一区成人精品五月 | 国产一区二区三区视频xxx | 国产精品制服丝袜美 | 18处破外女出血视频在线观看 | 国产一区二区精品 | 9191精品国产免费久久 | 国产成a人亚洲精v品无码性色 | 国产做a爱免费视频在线观看 | 91福利国产在线观看一区二区 | 高清无码在线观看h片 | av无码小缝喷白浆在线观看 | 国产福利一区二区三区四区 | 国产自产自拍 | 91福利免费网站在线观看 | 国产成人无码精 | 国产成人w一区二区三区综合 | 国产欧美日产高清欧美一区二区 | 国产av无码专区亚洲av软件 | 国产一级无码毛片精品 | 高潮抽搐痉挛一区二区精品视频 | 2025最新国产自产精品 | 国产午夜精品久久久久九九 | 99精品一区无码在线观看 | 精品国产sm最大网站麻豆 | 白嫩无码人妻熟妇啪啪区 | 99精品众筹模 | 国产成人精品久久久久开播 | 高清无码污视频 | 国产91九色在线播放 | 18禁美女黄网站色大片在线 | 成人a免费α片在线视频网站 | 国产在线不卡顿免费视频 | 成人爱做日本视频免费 | 2025无码专区人妻系列日韩 | 国产高潮视频在线观看 | www国产精品 | 国产成人福利一区二区三区 | 成人3d动漫在线观看 | 韩国三级日本三级在线观看 | 国产午夜精品爆乳美女蜜臂av | 东京热一精品 | 99精品欧美一区二区蜜桃免费 | 国产精品无码素人福利不卡 | 国产超级va在线观看 | 91免费无码国产在线观看 | 国产丝袜手机在线视频 | 国产成人影院在线观看 | 国产精品va在线观看无码电影麻 | 国产成人欧美精品视频99 | 东京热中文字幕a专区 | 国产v亚洲v天堂无码 | 国产午夜男女 | 国精品无码一区二区三 | 国产精品秘一区二区三区高潮 | 国产区精品 | 国产成人精品视频2025 | 国产av无码专区亚洲av男同 | 精品无码国产免费 | 国产在线不卡午夜精品2025 | av无码在线免费观看 | 国产毛片片精品天天看 | av免费观看无码 | 国产美女亚洲真人做受在线观看 | 国产高潮美女出白浆在线观看 | 国产91免费在线观看 | 国产av一区二区最新精品 | 成年女人毛片免费观看com | 国产无码乱伦日本 | 91在线精品一区二区体验升级 | 国产成人久久精品区 | 91精品国产手机在 | 国产午夜精品精品 | 97无码人妻免费视频碰碰碰 | 国产极品网站在线播放 | 精品国产一区二区三区香蕉p | 国产高清成人在线观看 | 91精品丝袜国产高 | 韩国女主播精品视频网站 | 国产一区二区成人久久919色 | 成人欧美一区二区三区免费观看 | 国产成人精品免费 | 国产精品一区二区熟女不卡 | 91精品福利麻豆专区 | 韩国美女爽快一级毛片免费观看 | 国产精品国产三级国产专区 | 精品视频永久免费 | 精品视频高清在线观看 | 精品一卡二卡三无码a | 国产精品高潮呻吟久久v无码 | 国产精品亚洲高清一区二区 | 精品国产sm最大网站 | 国产福利免费怕怕怕视频 | 国产精品盗摄一区二区在线 | 国产精品视频一区二区亚瑟品尚网 | 国产无码啪啪视频 | 国产精品青草国产一区二区 | 韩国三级理论无码电影在线观看 | 精品免费av一区二区三区 | 国产成人午夜福利免费无码r | 国产不卡高清视频在线观看 | 国产精品福利小视频 | av一区二区无码不卡 | 91av视频在线观看 | 国产午夜激无码 | 精品国产人妻一区二区三区 | 99久久国产自偷自自偷蜜月 | 国产精品精品国 | 国产高清视频青青青在线 | 2025亚洲国产精品无码 | 91精品国自 | 91成人免费版| 国产精品无码专区在线观看 | 91大神在线精品播放 | 国产亚洲一区二区在线 | 97人妻无码免费专区 | 国产成人亚洲精品影院 | 精品麻豆国产色欲色欲色欲www | 国产精品成人免费福利 | 精品国产亚洲一区二区三区在线观看 | 国产精品一区二区国模私拍 | 成人精品免费视频在线观看 | 国产亚洲欧美日韩亚洲中文色 | 国产成人三级在线播放 | 国产精品人人操人人爽 | 高清无码精品视频 | 国产精品区一区二区三在线 | 国产亚洲精品久久无亚洲 | 国产精品自拍视频合集 | 国产一区二区三区怡红院 | 91精品国产麻豆福利在线电影 | 国产精品毛片久久久久久久 | 国产美女a做受大片在线观看 | 国产亚洲制服国产亚洲制服 | 911精品国产亚洲日本美国韩国 | 成人国产在线观看高清不 | 91精品丝袜国产高 | 国产成人精品人人 | 精品国产av| 国产大片免费天天看 | 精品精品国产自在97香蕉 | 精品国产伦一区二区三区在线 | 加勒比久久综合久久伊人 | 国产成人精品综合网站 | a级毛片无码兔费真人久久91 | 国产精品无码片在线看 | 91人妻无码一区二区免费 | 国产中文中文娱乐无码 | 精品国产福利片在线观看 | 国产在线精品观看免费观看 | 国产成人麻豆亚洲综合无码精 | 国产在线播放一区 | 国产高清午夜人成在线观看 | 国产欧美日韩中文久久 | 国产二三无码区 | 国产欧美首页精品 | 成人欧美一区二区三区在线观看 | 91大神免费观 | av无码资源 | 国产二区视频在线观看 | 国产成人剧情av麻豆果冻 | 大尺度毛片免费看 | 国产精品嫩草影院免费观看 | 国产一区二区三区不卡在线 | 国产高清女同学巨大乳在线观 | 国产午夜精品久久久久九九电影 | 国产a级毛片久久久精品毛片 | 国产在线自在拍91 | 国产成人无码免费看片软件 | 国产欧美日韩v另类在线播放 | 国产中文字幕一级片在线观看 | 91精品国产99久久久久久 | 国产aⅴ精品一区二区三区 国产aⅴ精品一区二区三区久久 | 国产成人欧美一区二区三区 | 囯产精品不卡无码av在线播放 | 国产av无码乱码国产精品 | 成人动漫免费看一区二区三区 | 国产日韩精品欧美一区灰 | 97亚洲综合色成在线观看 | 国产一区二区三区精品观看 | 国产成人免费一区二区三区 | 国产免费一区二区三区最新 | 国产精品成人一区无码毛片 | 国产精品一区二区免费 | 国产成人a亚洲精v品无码 | 国产精品无码二区二区 | 国产成人一区二区三区影院 | 99亚洲伊人久久精品影院 | 国产成人亚洲精品无码青青草 | 国产美女极度色诱 | 国产在线观看免费 | 国产精品无码专区在线看片 | 精品无码久久久久国产动漫3d | 岛国av无码免费无禁网站麦芽 | 丰满人妻精品 | 成年女人毛片免费观 | 国产成人毛片在线视频软件 | 国产精品一线二线三线区别解析 | 91麻豆国产福利精品 | 国产精品国产三级国产成人 | 精品国产福利在线观看不卡 | 国产午夜毛片 | 国产欧美成人一区二区三区 | av色综合久久天堂av色综合 | 91在线国产综合 | 国产在线高清精品二区 | 国产精品精品 | 国产产无码乱码精品久久鸭 | 国产美女视频永久免费 | 国产白袜脚足j棉 | 国产丝袜美腿一区二区三区 | 精品系列无码一区二区三区 | 岛国av无码不卡一区二区三区 | 国产美女爽到喷出水来视频 | 成人免费动作大片黄在线 | 成人无码中文字幕在线不卡 | 精品无码三级在线观 | 极品尤物一区二区三区小说 | 国产黑色丝袜视频在线观看网红 | 国产成人a视频高清视频在线 | 国产黑色丝袜在线看片不卡顿 | 国产白浆在线 | 国产高潮流白浆喷水免费视频 | 国产午夜精品久久久久九九 | 高清手机电影在线观看 | 国产av国片精品一区二区 | 2025无码国产 | av喷水高潮喷水在线观看 | 国产一区亚洲一区在线观看 | 精品国产v无码大片在线观看 | 国产另类av一区二区三区 | av无码精品久久不卡网站 | 18禁免费无码无遮 | 国产视频一区二区在线播放 | 国产美女牲交视频 | 成人精品免费网站 | 精品伦精品一区二区三区视频 | 国产蜜臀一区二区三区亚洲 | 精品爆乳一区二区三区无码aⅴ | 国产成人禁片免费观看视频 | 国产精品亚洲精品无码青 | 国产高清无码一区二区久久 | 国产成人精品免费视频下载 | 国内真实刺激对白自 | 国产区精品一区二区不卡中文 | 69精产国品 | 成人国产三级视频在线观看 | 国产成年无码久久久久毛片 | 国产亚洲精品久久婷婷 | 国产高清av在线播放 | 国产精品一区二区三区三洲欧洲 | 国产成人精品a视频 | 国产精品一区二区三级 | 国产精品免费大片一区二区 | 精品黑人一区二 | 2025久久精品国产免费 | 成人无码区免费视频网站蜜臀 | 国码无码久久99 | 国产原创日韩精品国产 | 国产av无码乱码国产精品 | 国产一区二区三区精品美女 | 成人综合国产精品 | 国产成人久久精品二三区无码 | 国产午夜av免费在线观看 | 国产尤物精彩视频在线 | 国产三级国产精品午夜 | 国产精品成aⅴ人片在线观看 | 国产成人的电影在线观看 | 91大神在线精品网址 | 国产v亚洲v天堂a手机版 | 成年人手机版三级片电影免费观看正 | 国产麻豆精品福利在线 | av色综合久久天堂av色综合 | 国产凹凸在线观看一区二区 | 潮喷失禁大喷水aⅴ无码 | 国产91精品一区二区 | 国产在线精品一区二区在线观看 | 国产剧情麻豆mv在线观看 | 91精品综合国产在线观看 | 91精品亭亭国产综合久久 | 国产盗摄av在线综合网 | 99久久精品国产免费男女 | 成人无码电影午夜在线观看 | 国产午夜视频网站国 | 国产午夜精品美女免费大片 | 国产成人免费精品在线观看 | 国产激情无码一区二区三区 | 国产激情一区二区三区 | 国产精品免费一区二区 | 91精品最新国内在线播放 | 精品久久久久久中文字幕专区 | 国产精品国产三级国产av品爱 | 国产精品嫩草影院在线 | 国产成年人免费黄色视频 | 成人国产精品一区在线观看播 | 91在线高清私人电影 | 丰满人妻熟妇av无码区a | 国产高级桑拿在线播放 | 国产成人无码免费一区二区三区 | 国产91在线播放边 | 国产精品亚洲片夜色在线 | 精品亚洲欧洲一区二区三区不卡 | 国产av不卡一区二区三区 | 国产一区二区三区欧美精品 | 69久久夜色精品国产69小说 | 国产一区二区三区免费大片天美 | 国产精品成人va在线播放 | 国产成人精品亚洲v无人区一区 | 精品久久无码专区国产精品发布 | 99精品国产综合久久久久五月 | 国产精品国产亚洲精品看不卡 | 成人欧美一区二区三区免费观看 | 国产产一区二区三区久久毛片最强 | 国产熟睡乱子伦视频在线观看 | 国产精品无码午夜福利 | 91精品宅男在 | 国产午夜福利啪啪 | 国产欧美日韩一区二五月天 | 国产观看精品一区二区三区 | 国产人与动 | 国产精品一区二区在线观看网站 | 国产福利一区二区三区在线观看 | 国产精品国产精品国产专区不卡 | 国产国语精品对白无码视频 | 国产亚洲精aa在线观看不卡 | 97人妻无码公开免费视频 | 国产欧美日本一区二区三区免费 | 波多野结衣中文字幕一区二区三区 | 国产一区内射最近更新 | 国产精品香蕉成人网在线观看 | 国产精品免费观看一区 | 高清精品一级毛片 | 国产在线精品99一卡2卡 | 国产欧美日韩午夜在线观看 | 国产成人精品午夜福利av免费 | 国自产偷精品 | 国产毛片黄色美女视频 | 18成人片| 国产高清色高清在线观看九 | 成人午夜精品一级毛片 | 国产91精品无码 | 国产成人精品88综合久久久久 | av麻豆级在线播放 | 精品国产一区二区三区香蕉p | 国产成人午夜91精品麻豆剧场 | 国产免费午夜福利 | 精品亚洲aⅴ无码一区 | 国产成人综合高清在线观看 | 精品无码国产精品区 | 高潮抽搐痉挛一区二区精品视频 | 国产精品视频一区二 | 精品国产免费无码久久久 | 国产成人啪精品视频网站午夜 | 国产av无码乱码国产精品 | 国产精品一区二区亚洲精品 | 国产女人喷浆抽搐高潮 | 国产在线拍揄拍自揄拍无码资源 | 99久久久无码国产精免费 | 91在线精品播放 | 国产三区视频在线观看 | 国内一国产农村妇女一级毛片 | 精品国产日韩欧美一级一区二区 | 韩国一区二区三区 | 国产盗摄aⅴ一区二区 | 国产极品久久久久极品 | 91久久国产自产拍夜夜嗨 | 国产免费永久网站 | 国产成人片无码免费视频软件 | 精品久久久久久无码专区 | 国产日韩精品一区二区在线 | 国产偷窥澡堂在 | 国产精品一区二区三区免费观看 | 国产avxxxx无套内射 | 国产妇女性爽视频免费 | a人亚洲精v品无码樱花 | 国产免费一区二区三区免费视频 | 国产午夜精品久久久久 | 岛国毛片在线观看 | 国产二区亚洲无码 | 2025好看的国产剧推荐 | 成人毛片十八女人毛片 | 国产在线高清理伦片a电影 国产在线高清仑片a | 91蜜桃传媒精品久久久一区二 | 东京热加勒比国产精品 | 国产成人精品男人免费 | av无码久久久久不卡 | 国产亚洲一区在线 | 国产熟女一区二区五月婷 | av无码午夜国产精品色软件 | 国产成人高清精品免费鸭子 | 国产精品毛片大码女人 | 成人亚洲欧美日韩高清 | 国产三级2025在线观看 | 国产成人久久精品麻豆二区 | 妓女妓女一区二区三区在线观 | 国产免费无码午夜福利电影 | 国产成人精品实拍在线 | 国产精品无码一区二蜜臀影院 | 国产欧美成人不卡视频 | 国产欧美日韩在线视频观看 | 国产极品美女到高潮无套久久 | av无码午夜福利一区二区三区 | 国产精品色拉拉免费看 | 18禁白丝喷水视频www视 | 成在人线āv无码毛片观看 成在人线av无码免费 | 国产白丝jk被疯狂 | 成人国产三级 | 国产对白叫床清晰在线播放 | 2025精品久久久久久中文字 | 国产精品无码无卡无需播放器 | 国产成人无码不卡精品久久久 | 国产成人午夜福利r在线观 国产成人午夜福利电影在线播放 | 成年女人色费视频播放 | 苍井空一区二区三区在线观看 | 国产成人黄色网站 | 国产精品三p一区二区视频 国产精品三级 | 国产a国产| 2025国产麻豆剧果冻传媒免费 | 99久久伊人精品综合观看 | 91一码二码区别在哪儿啊 | 国产成人成网站在 | 国产做国产爱免费视频 | 国产极品美女高潮无套 | 丰满女邻居的嫩苞张开视频 | 国产高清美女一级a毛片久久w | 精品系列无码视频在线观看 | 国产精品成人一区二区不卡 | 91福利一区二区三区 | 成人精品一区二区91毛片不卡 | 国产成人久久精品一区二区三区 | 国产精品国产三级国产专i 国产精品国产三级国产专播 | 91成人免费观看在线观看 | 国产成人啪精品视频网站午夜 | 91在线视频| 国产精品大片大片看大 | 二区三区特黄 | 国产成人综合精品亚洲 | 国产人妻一区二区 | 国产人妻精品久久久久野外 | 国产无码免费视频 | 2025三级日本动漫在线观看 | 国产av无码专区亚洲av蜜芽 | 国产偷抇久久精品a片蜜臀av | 黑人巨大精品欧美一区二区.. | 91视频一区二区 | 精品无码三级在线观看完整版 | 国产不收费b站软件 | 国产熟女露脸大叫高潮 | 激情一区二区三区成人 | 国产在线视频最新中文字幕 | 国产精品日韩在线一区 | 国产日韩欧美另类在线 | 99久久伊人精品 | 国产精品一区在线播放 | 国产精品免费观看 | 国产精品丝袜高跟鞋 | 精品国产三级午夜不卡 | 91麻豆精品传媒人妻系列 | 99久久精品国产免费男女 | 国产精品一区二区三区免费视频 | 国产熟女高潮视频 | 高清视频在线观看一区二区三区 | 国产超级乱淫视频播放免费 | 国产白丝无码免费视频 | 国产精品无码影视久久久久久久 | 国产成a人片在线观看视频99 | 波多野结衣人妻在线一区二区 | 国产中文内射一区二区三区在线 | 国产高清一区 | 国产精品大白天新婚身材 | 91精品国产亚洲爽啪在线观看 | 国产精品无码久久人妻无码影院 | 99久久国产主播综合精品 | 韩国三级bd高清中字 | 国产喷潮在线播放一区 | 国产精品嫩草影院一二三区 | 国产在线高清在线精品 | 精品无码专区二区 | 91亚洲自偷观看高清 | 囯产精品一区二区免费在线观看 | 国产一级无码毛片精品 | av无码久久久久不卡 | 99精品国产在热久久婷婷 | 精品少妇人妻av免费 | 国产一三区a片在线播放 | 国产美女爽到喷出水 | 国产v片精品在线播放 | 国产麻豆精品高清在线播放 | 国产成a人片在线观看视频下 | 国产成人av无码精品 | 国产成人av在线播放不卡 | 国产精品无码一区二区在线观动 | 国产综合亚洲区在线观看 | 国产精品美女久久久久av福利 | 国产精品伊人久久久 | 国产高清在线精品一区二区三区 | 国产精品va在线观看不卡顿 | 丰满人妻熟妇乱又伦精品软件 | 国产精品高清一区二区三区不卡 | 精品亚洲一区二区三区 | 国产精品嫩草视频成人 | 国产69精品久久久久孕妇 | 18禁裸体动漫美女无遮挡网站 | 国产精品国产三级国产在线主播 | 国产午夜福利精品一区二区三区 | 91成人亚洲综合欧美日韩 | 国产综合福利视频电影 | 国产一区二区三区h55555 | 国产精品高潮丝袜无码 | 国产精品沙发午 | 国产成人av在线播放不卡影院 | 精品亚洲成a人无码成a在线 | 国产福利午夜九二网免费 | 精品亚洲专区无码 | av中文字幕 | 国产爽死777手机版日韩 | 国产在线观看免费视频在线 | 精品无码日韩一区二 | 国产精品一国产av麻豆 | h无码精品3d动漫在线观看 | 加勒比在线精品视频 | 国产成人垃圾片一区二区三区 | 成人午夜福利电影 | 91久久精品在这里色伊人64 | 激情内射亚洲一区二区三区 | 国产欧美另类久久久精品丝瓜 | 国产精品丝袜综合区另类 | 精品国产v无码大片在线观看视色 | 国产999精彩视频 | 国产精品十八 | 91精品国产91久久综合牛牛 | 国产成人亚洲综合一区 | 激情视频在线观看国产一区 | 国产丝袜在线精品丝袜不卡 | 91久久国产综合精品 | 国产一卡二卡三卡 | 国产黄在线观看免费 | 国产片婬乱一级毛片视频1 国产片婬乱一级毛片丫丫 国产片婬乱一毛片a | 国产成人精品久 | 国产成人无码影片在线观看 | 国产av无码秘在线 | 国产精品三级美女网站全黄真人 | 成人无码v在线播放 | 91久久久久精品 | 国产成人女人视频在线观看 | 国产一区二区激情视频在线 | 国产日韩一区在线精品 | 91视频播放 | 东京热男人av天堂 | 国产二级一片内射视频插放 | 国产护士囗交吞精视频 | 国产熟女亚洲精品明星自拍 | aⅴ无码播放一级毛片免费 aⅴ无码午夜在线 | 国产aⅴ一区二区三区精品 国产aⅴ一区二区三区片 | 国产激情一区 | 国产的av在线播放 | 精品国产a毛片久久久av蜜桃 | 国产精品乱子伦一区二区三区 | 国产精品秘入口女同 | 国产偷窥澡堂在 | 高清无码v视频日本www | 国产精品三级网站 | 国产一区日韩二区欧美三区 | 国产成人综合久久久久久 | 国产一区二区三区高清视频在线 | 东京热中文成av人片久久 | 国产一级a爱做片免费观看 国产一级a爱做片免费看 | 国产丝袜亚洲精品熟女 | 成年女人a毛片免费视频 | 国精品人妻 | 91麻豆精品国产自产在线观 | 国产在线拍揄自揄视精品性色av | 成人免费在线观看 | 国产一区无码 | 东京热毛片无码dvd一二三区 | 国产极品美女高潮无套 | 国产无吗一区二区三区在线欢 | 国产最新精品一区二区三区 | 国产成人综合一区二区三区 | 国产成人v色综合 | 国产欧美国产综合每日更新 | 国产精品无码一区二区三区免 | 国产福利最新手机在线观看 | 成人国产精品一区二区网站 | 91人人妻人人爽人 | 国产成人高清一区二区私人 | 成人无码区免费视频网站蜜臀 | 国产一级毛片视频国产 | 2025国产操久久 | 国产偷窥澡堂在 | 18禁成年无码免费网站无遮 | 国产在线拍揄自揄视频菠萝 | 国产成人免费视频99 | 国产在线视频不卡一视频大全 | 国产麻豆91精品免费观看 | 国产人妻精品 | 国产sm重味一区二区三区 | 国产一区二区免费视频 | 国产三级自拍视频 | 国产精品视频全国免费 | 国产精品国产自线在线观看 | 成人午夜特黄aaaaa片 |