精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

探秘JDK 7之四:下一代I/O(NIO.2)

開發 后端
本文為51CTO.com探秘JDK 7系列的最后一篇。在前三篇當中,我們詳細介紹了JDK 7的語言特性等新特點,本文將介紹JDK 7中的下一代I/O(NIO.2)。

51CTO曾在Java 7 下一代Java開發技術詳解專題里對“JDK 7 I/O新功能”有過簡單地介紹,其實早在2000年的時候,Sun公司就啟動了JSR 51:為Java平臺開發新的I/O API,直接訪問操作系統底層輸入/輸出操作以提高應用程序的性能,首次引入這套API是在J2SE 1.4中,根據維基百科的新I/O詞條顯示,新I/O(NIO)由下列API組成:

◆ 原始類型數據緩沖

◆ 字符集編碼和解碼

◆ 通道,新的原始I/O抽象

◆ 支持上鎖和內存映射的文件接口,文件最大支持Integer.MAX_VALUE字節(2GB)

◆ 為可擴展服務器提供的多路復用,無阻塞I/O設施(基于選擇器和鍵)

JSR 203(NIO.2)除了解決JSR 51遺留下來的問題外,還為Java平臺提供了更多新的I/O API,NIO.2解決了java.awt.File文件系統接口存在的重大問題,引入了異步I/O,并完成了未包括在JSR 51中的功能,下面列出了包含在JSR 203中的主要組件:

◆ 新的文件系統接口,支持大塊訪問文件屬性,更改通知,繞開文件系統指定的API,也是可插拔文件系統實現的服務提供者接口。

◆ 對套接字和文件同時提供了異步I/O操作的API。

◆ JSR 51中定義的完整的套接字通道功能,此外還包括綁定,選項配置和多播數據報的支持。

新的文件系統接口

Java的File類存在重大問題,例如,操作出錯時,delete()和mkdir()方法返回一個狀態碼而不是一個異常,沒有辦法獲知失敗的原因,此外還包括以下問題:

◆ File沒有提供方法來檢測符號鏈接,要知道為什么檢測符號鏈接很重要,以及如何解決這個問題的辦法,請參考Patrick的文章“在Java中如何處理文件系統軟鏈接/符號鏈接”和“Java中的鏈接/別名/快捷方式”。

◆ File提供的方法只能訪問部分文件屬性,不能訪問文件權限和訪問控制列表。

◆ File沒有提供方法一次訪問文件的所有屬性(如文件的修改時間和它的類型),因為文件系統需要為每個屬性執行查詢請求,可能存在性能問題。

◆ File的list()和listFiles()方法返回文件名和目錄名的數組,但不支持大目錄,通過網絡展示大目錄清單時,調用list()/listFiles()方法可能會使當前的線程阻塞相當長一段時間,而在服務器端,虛擬機可能會耗盡內存。

◆ File沒有提供復制和移動文件的方法,雖然File提供了一個renameTo()方法在某些時候可以用來移動文件,但它的行為與平臺關系緊密,即在不同平臺上的行為是不一致的,根據renameTo()的文檔說明,這個方法不能在文件系統之間移動文件,它可能不是原子的,如果目標路徑下已存在同名文件,這個操作可能不會成功。

◆ File也沒有提供改變通知方法,需要應用程序自己實現,因此導致應用程序的性能下降,例如,服務器需要確定什么時候往目錄中添加了一個新的JAR文件,它需要實時監視這個目錄,因為服務器后臺線程需要頻繁讀取文件系統,因此性能會有所下降。

◆ File也不允許開發人員引入他們自己的文件系統訪問功能,例如,開發人員可能想將文件系統存儲到一個zip文件中,或創建一個內存文件系統。

NIO.2引入了新的文件系統接口,除了解決上述存在的問題外,還引入了更多的功能,這個接口由位于java.nio.file,java.nio.file.attribute和java.nio.file.spi包中的類和其它類型組成。

這些包提供了多個切入點,其中一個切入點就是java.nio.file.Paths類,它提供了兩個方法返回一個java.nio.file.Path實例:

◆ public static Path get(String path) – 它通過轉換給定路徑字符串返回給這個實例構造一個Path實例。

◆ public static Path get(URI uri) -它通過轉換給定路徑的URI(統一資源定位符)返回給這個實例構造一個Path實例。

與傳統的基于File的代碼互操作:

File類提供了一個public Path toPath()方法,它可以將一個File實例轉換成一個Path實例。

當你創建了一個Path實例后,你就可以使用這個實例執行許多路徑操作(如返回路徑的一部分,連接兩個路徑)和許多文件操作(如刪除,移動和復制文件)。

為了不將問題復雜化,我就不深入講解Path了,這里我用一段代碼簡單地演示一下以前的get()方法和Path的delete()方法。

清單1. InformedDelete.java

  1. // InformedDelete.java  
  2. import java.io.IOException;  
  3. import java.nio.file.DirectoryNotEmptyException;  
  4. import java.nio.file.NoSuchFileException;  
  5. import java.nio.file.Path;  
  6. import java.nio.file.Paths;  
  7. public class InformedDelete  
  8. {  
  9.    public static void main (String [] args)  
  10.    {  
  11.       if (args.length != 1)  
  12.       {  
  13.           System.err.println ("usage: java InformedDelete path");  
  14.           return;  
  15.       }  
  16.       // Attempt to construct a Path instance by converting the path argument  
  17.       // string. If unsuccessful (you passed an empty string as the  
  18.       // command-line argument), the get() method throws an instance of the  
  19.       // unchecked java.nio.file.InvalidPathException class.  
  20.       Path path = Paths.get (args [0]);  
  21.       try  
  22.       {  
  23.           path.delete (); // Attempt to delete the path.  
  24.       }  
  25.       catch (NoSuchFileException e)  
  26.       {  
  27.           System.err.format ("%s: no such file or directory%n", path);  
  28.       }  
  29.       catch (DirectoryNotEmptyException e)  
  30.       {  
  31.           System.err.format ("%s: directory not empty%n", path);  
  32.       }  
  33.       catch (IOException e)  
  34.       {  
  35.           System.err.format ("%s: %s%n", path, e);  
  36.       }  
  37.    }  
  38. }  
  39.  

InformedDelete調用Path的delete()方法解決了File的delete()方法不能確定失敗原因的問題,當Path的delete()當的檢測到操作失敗時,它會根據情況拋出適當的異常,如:

◆ 如果文件不存在,拋出java.nio.file.NoSuchFileException異常。

◆ 如果文件是一個目錄不能刪除,拋出java.nio.file.DirectoryNotEmptyException異常,因為這個目錄下可能還包括一個空目錄。

◆ 如果遇到其他I/O問題,則拋出java.io.IOException的子類異常,例如,如果文件是只讀的,拋出java.nio.file.AccessDeniedException異常。

#p#

異步I/O

JSR 51引入了多路復用I/O(無阻塞I/O和選擇就緒的結合)使創建高可擴展服務器變得更加容易,本質上是這樣的,客戶端代碼用一個選擇器注冊一個套接字通道,當通道準備好可以開始I/O操作時發出通知。

如果要深入研究多路復用I/O,請閱讀Ron Hitchens的《Java NIO》一書。

JSR 203還引入了異步I/O,它也被用來建立高可擴展服務器,和多路復用I/O不同,異步I/O是讓客戶端啟動一個I/O操作,當操作完成后向客戶端發送一個通知。

異步I/O是通過以下位于java.nio.channels包中的接口和類實現的,它們的名稱前面都加了Asynchronous前綴:

◆ AsynchronousChannel – 標識一個支持異步I/O的通道。

◆ AsynchronousByteChannel – 標識一個支持讀寫字節的異步通道,這個接口擴展了AsynchronousChannel。

◆ AsynchronousDatagramChannel – 標識一個面向數據報套接字異步通道,這個類實現了AsynchronousByteChannel。

◆ AsynchronousFileChannel – 標識一個可讀,寫和操作文件的異步通道,這個類實現了AsynchronousChannel。

◆ AsynchronousServerSocketChannel – 標識一個面向流監聽套接字的異步通道,這個類實現了AsynchronousChannel。

◆ AsynchronousSocketChannel – 標識一個面向流連接套接字的異步通道,這個類實現了AsynchronousByteChannel。

◆ AsynchronousChannelGroup – 標識一個用于資源共享的異步通道組。

AsynchronousChannel文檔指定了兩種形式的異步I/O操作:

◆ Future operation(...)

◆ void operation(... A attachment, CompletionHandler handler)

operation列舉I/O操作(如讀,寫),V是操作的結果類型,A是附加給操作的對象類型。

第一種形式需要你調用java.util.concurrent.Future方法檢查操作是否完成,等待完成和檢索結果,清單2的代碼演示了這樣一個示例。

清單2. AFCDemo1.java

  1. // AFCDemo1.java  
  2. import java.io.IOException;  
  3. import java.nio.ByteBuffer;  
  4. import java.nio.channels.AsynchronousFileChannel;  
  5. import java.nio.file.Path;  
  6. import java.nio.file.Paths;  
  7. import java.util.concurrent.Future;  
  8. public class AFCDemo1  
  9. {  
  10.    public static void main (String [] args) throws Exception  
  11.    {  
  12.       if (args.length != 1)  
  13.       {  
  14.           System.err.println ("usage: java AFCDemo1 path");  
  15.           return;  
  16.       }  
  17.       Path path = Paths.get (args [0]);  
  18.       AsynchronousFileChannel ch = AsynchronousFileChannel.open (path);  
  19.       ByteBuffer buf = ByteBuffer.allocate (1024);  
  20.       Future<Integer> result = ch.read (buf, 0);  
  21.       while (!result.isDone ())  
  22.       {  
  23.          System.out.println ("Sleeping...");  
  24.          Thread.sleep (500);  
  25.       }  
  26.       System.out.println ("Finished = "+result.isDone ());  
  27.       System.out.println ("Bytes read = "+result.get ());  
  28.       ch.close ();  
  29.    }  

調用AsynchronousFileChannel's public static AsynchronousFileChannel open(Path file, OpenOption... options)方法打開file參數進行讀取,然后創建了一個字節緩沖區存儲讀取操作的結果。

接下來調用public abstract Future read(ByteBuffer dst, long position)方法異步讀取文件的前1024個字節,這個方法返回一個Future實例代表這個操作的結果。

調用read()方法后,進入一個表決循環,重復調用Future的isDone()方法檢查操作是否完成,一直等到讀操作結束,最后調用Future的get()方法返回讀取到的字節大小。

第二種形式需要你指定java.nio.channels.CompletionHandler,并實現下面的方法使用前面操作返回的結果,或是了解操作為什么失敗,并采取適當的行動:

◆ 當操作完成時調用void completed(V result, A attachment),這個操作的結果是由result標識的,附加給操作的對象是由attachment標識的。

◆ 當操作失敗時調用void failed(Throwable exc, A attachment),操作失敗的原因是由exc標識的,附加給操作的對象是由attachment標識的。

#p#

我創建了一個程序演示創建和接收讀操作狀態的通知,其代碼如清單3所示。

清單3. AFCDemo2.java

  1. // AFCDemo2.java  
  2. import java.io.IOException;  
  3. import java.nio.ByteBuffer;  
  4. import java.nio.channels.AsynchronousFileChannel;  
  5. import java.nio.channels.CompletionHandler;  
  6. import java.nio.file.Path;  
  7. import java.nio.file.Paths;  
  8. public class AFCDemo2  
  9. {  
  10.    static Thread current;  
  11.    public static void main (String [] args) throws Exception  
  12.    {  
  13.       if (args.length != 1)  
  14.       {  
  15.           System.err.println ("usage: java AFCDemo1 path");  
  16.           return;  
  17.       }  
  18.       Path path = Paths.get (args [0]);  
  19.       AsynchronousFileChannel ch = AsynchronousFileChannel.open (path);  
  20.       ByteBuffer buf = ByteBuffer.allocate (1024);  
  21.       current = Thread.currentThread ();  
  22.       ch.read (buf, 0, null,  
  23.                new CompletionHandler<Integer, Void> ()  
  24.                {  
  25.                    public void completed (Integer result, Void v)  
  26.                    {  
  27.                       System.out.println ("Bytes read = "+result);  
  28.                       current.interrupt ();  
  29.                    }  
  30.                    public void failed (Throwable exc, Void v)  
  31.                    {  
  32.                       System.out.println ("Failure: "+exc.toString ());  
  33.                       current.interrupt ();  
  34.                    }  
  35.                });  
  36.       System.out.println ("Waiting for completion");  
  37.       try  
  38.       {  
  39.           current.join ();  
  40.       }  
  41.       catch (InterruptedException e)  
  42.       {  
  43.       }  
  44.       System.out.println ("Terminating");  
  45.       ch.close ();  
  46.    }  

上面的代碼調用AsynchronousFileChannel's public abstract void read(ByteBuffer dst, long position, A attachment, CompletionHandler handler)方法異步讀取前1024字節。

雖然我們只演示了單一的讀操作,但attachment部分也很重要,上面的代碼演示了傳遞一個null給read()方法,并指定附加類型為Void。

完整的套接字通道功能

JSR 51的DatagramChannel,ServerSocketChannel和SocketChannel類沒有完整抽象一個網絡套接字,為了綁定通道的套接字,或為了獲得/設置套接字選項,你必須先調用每個類的socket()方法檢索對等套接字。

JSR 51生效時沒有時間定義完整的套接字通道API,因此形成了套接字通道和套接字API混合的局面,JSR203引入新的java.nio.channels.NetworkChannel接口解決了這個問題。

NetworkChannel提供了將套接字綁定到本地地址,返回綁定地址,以及獲得/設置套接字選項的方法,這個接口是通過同步和異步套接字類實現的,不再需要調用socket()方法。

JSR 203也引入了新的java.nio.channels.MulticastChannel接口,它為DatagramChannel提供了IP多播的支持,以及對應的異步支持。

總結

本系列文章介紹了即將發布的JDK 7包含的一些新特性,新的里程碑版本可能很快就會發布,你現在就可以嘗試一下這些新特性,也許Oracle/Sun將會增加更多的新特性,如JWebPane瀏覽器組件,因為之前Sun就曾用閉包讓我們驚訝過一次了。

關于Java 7的更多內容,歡迎訪問51CTO推薦專題:Java 7 下一代Java開發技術詳解

【JDK 7相關內容推薦】

  1. 探秘JDK 7之三:JLayer裝飾Swing組件
  2. 探秘JDK 7之二:半透明和任意形狀的窗口
  3. 探秘JDK 7:將會出現新的語言特性
  4. Google技術演講介紹Java 7 NIO.2概覽
責任編輯:佚名 來源: IT168
相關推薦

2013-07-27 21:28:44

2012-06-15 09:21:03

Windows 7Windows XP

2013-06-27 11:21:17

2025-01-03 09:24:10

模型架構論文

2020-09-16 10:28:54

邊緣計算云計算數據中心

2025-05-26 00:00:00

GoogleAIVeo 3

2013-07-25 21:08:37

2020-09-27 17:27:58

邊緣計算云計算技術

2013-09-09 16:28:36

2022-05-12 13:15:11

谷歌AI模型

2016-01-26 11:58:12

2012-07-16 10:08:31

下一代ITBYOD

2012-12-10 16:15:43

下一代防火墻NGWF

2023-04-28 10:02:50

2021-05-22 23:01:21

人工智能網絡安全

2024-02-26 14:46:53

移動計算人工智能5G

2012-07-16 09:27:19

BYOD下一代IT

2018-09-11 08:00:00

DevOpsAIOps機器學習

2013-05-10 09:36:04

下一代網絡銳捷網絡簡網絡

2015-10-15 10:30:32

點贊
收藏

51CTO技術棧公眾號

中文字幕欧美激情| 国产精品美女久久久浪潮软件| 欧美日本不卡视频| 在线观看18视频网站| 人妻偷人精品一区二区三区| 老牛影视一区二区三区| 久久色精品视频| 欧美双性人妖o0| 色8久久影院午夜场| 亚洲靠逼com| 免费中文日韩| www.色日本| 日韩制服丝袜先锋影音| 久久99热这里只有精品国产| 精品无码国产污污污免费网站 | www免费视频观看在线| 成人在线视频一区| 国产精品青草久久久久福利99| 69av视频在线| 精品免费av| 亚洲成人网在线观看| 日韩av片网站| 欧美一级鲁丝片| 亚洲男同性视频| 神马影院一区二区三区| 国内爆初菊对白视频| 美国十次了思思久久精品导航| 97色在线视频| 久久久久久久久久网站| 欧美天天综合| 日韩精品免费在线观看| 国产又黄又嫩又滑又白| 欧美激情啪啪| 欧美亚洲一区三区| 久久精品免费一区二区| 女囚岛在线观看| 亚洲欧美福利一区二区| 亚洲国产综合自拍| 色鬼7777久久| eeuss影院一区二区三区| 91黄在线观看| 国产免费一区二区三区最新不卡| 久久一区精品| 欧美一级在线播放| 香蕉免费毛片视频| 国产精品a久久久久| 久久精品99无色码中文字幕| 亚洲色图日韩精品| 国产最新精品| 亚洲视频免费一区| 精品无码一区二区三区| 欧美男男gaytwinkfreevideos| 亚洲国产精品va在看黑人| 色悠悠在线视频| 国产成人精品亚洲线观看| 日韩亚洲欧美在线| 人妻激情偷乱视频一区二区三区| 国产精品3区| 欧美一区二区在线视频| 99999精品| 涩爱av色老久久精品偷偷鲁| 日韩欧美成人一区二区| 亚洲熟妇一区二区| av日韩精品| 亚洲国产欧美一区二区三区同亚洲| 国产日韩视频一区| 欧美激情极品| 国产性色av一区二区| 国产18无套直看片| 自产国语精品视频| 久久久久久久久爱| 欧美亚洲精品天堂| 日韩不卡免费视频| 成人欧美在线视频| 亚洲成a人片77777精品| av电影在线观看不卡| 久久综合中文色婷婷| h网站在线免费观看| 亚洲色图一区二区| 欧美三级在线观看视频| 涩涩视频在线免费看| 在线精品国精品国产尤物884a | 国产福利电影一区二区三区| 岛国视频一区免费观看| 亚洲人午夜射精精品日韩| 国产偷国产偷精品高清尤物| 欧美 日韩 国产 在线观看 | 亚洲va欧美va人人爽| 国产精品va无码一区二区| av成人在线观看| 日韩一二在线观看| 人人妻人人澡人人爽人人精品| 精品国产91乱码一区二区三区四区| 色琪琪综合男人的天堂aⅴ视频| 日本少妇高清视频| 一本色道久久综合亚洲精品不卡| 国产精品视频网| 日本韩国免费观看| 中文字幕不卡三区| 男人插女人视频在线观看| av一区在线| 欧美精品一区二区三区蜜臀| 天堂资源在线视频| 在线免费高清一区二区三区| 国产精品久久久久久久久久东京 | 亚洲精品v欧美精品v日韩精品| 国产在线综合视频| 激情偷拍久久| 成人免费xxxxx在线观看| 桃花色综合影院| 亚洲欧洲美洲综合色网| 99爱视频在线| 在线日韩成人| 自拍偷拍亚洲在线| 美女又爽又黄免费视频| 国产精品综合二区| 日韩欧美精品一区二区| 678在线观看视频| 欧美久久久久久久久久| 在线免费观看成年人视频| 欧美精品一卡| 国产日韩欧美自拍| 精华区一区二区三区| 亚洲电影激情视频网站| 亚洲制服中文字幕| 成人精品天堂一区二区三区| 2020欧美日韩在线视频| 午夜精品久久久久久久99热黄桃 | 国产亚洲精品精品国产亚洲综合| 亚洲精品电影网在线观看| 极品盗摄国产盗摄合集| 蜜臀久久99精品久久久久宅男| 精品国产福利| 日韩免费视频网站| 国产在线麻豆精品观看| 日韩欧美三级电影| 中文av在线全新| 亚洲国产精品久久| 黄色一级视频免费观看| 国产麻豆日韩欧美久久| 少妇精品久久久久久久久久| 香蕉久久免费电影| 亚洲剧情一区二区| 好看的av在线| 99re这里都是精品| 国产精品丝袜久久久久久消防器材| 超碰地址久久| 久久久久中文字幕2018| 亚洲国产成人精品一区二区三区| 亚洲色欲色欲www| 日韩av片免费观看| 亚洲欧美网站在线观看| 亚洲综合在线做性| √天堂8在线网| 69av一区二区三区| 一区视频免费观看 | 亚洲一级av无码毛片精品| 红桃视频国产一区| 国产精品久久精品视| 精精国产xxxx视频在线野外 | 91视频啊啊啊| 老司机一区二区三区| 日产国产精品精品a∨| 精品123区| 久久久999精品免费| 精品久久久久中文慕人妻| 亚洲国产日韩一区二区| 一区二区视频观看| 日韩精品国产精品| 黄色影视在线观看| 精品精品国产三级a∨在线| 欧美中文字幕精品| 夜级特黄日本大片_在线| 在线不卡欧美精品一区二区三区| 欧美日韩亚洲国产另类| 99久久免费精品| 成人亚洲视频在线观看| 先锋资源久久| 国产综合色一区二区三区| 欧美舌奴丨vk视频| 日韩网站免费观看高清| 亚洲第一免费视频| 一本一本大道香蕉久在线精品 | 天天久久综合| 国产乱码精品一区二区三区卡 | 国产精品成人观看视频免费| 手机在线观看av| 色播久久人人爽人人爽人人片视av| 国产乱人乱偷精品视频| 欧美日韩精品二区| 午夜精品久久久久99蜜桃最新版 | 国产在线一区二区三区四区| 欧洲精品一区二区三区| 欧美肥老妇视频| 免费在线毛片| 日韩午夜激情视频| 亚洲图片欧美日韩| 亚洲自拍偷拍图区| 大胸美女被爆操| 成人高清视频在线| 中文字幕 日韩 欧美| 99亚洲精品| 在线免费一区| 国产一区二区三区网| 国产成人精品一区二区三区福利| 欧美影视资讯| 午夜精品99久久免费| 免费黄色网址在线观看| 亚洲美女av在线播放| www日本高清| 欧美日韩一级视频| 国产精品午夜影院| 日韩理论片中文av| 免费看黄色av| 97精品国产露脸对白| 中文字幕第三区| 国产精品亚洲综合久久| 乱熟女高潮一区二区在线| 久久资源中文字幕| 欧美亚洲精品日韩| 欧美韩一区二区| 国产精品久久国产精品| 精品国产乱码久久久久久樱花| 日韩美女免费视频| 日韩激情电影| 欧美另类暴力丝袜| 免费观看成人高潮| 中文字幕av一区二区| 邻家有女韩剧在线观看国语| 亚洲精品美女久久| 无码精品人妻一区二区三区影院| 日韩欧美专区在线| 国产欧美久久久| 欧美夫妻性生活| 中文字幕人妻丝袜乱一区三区| 丰满岳妇乱一区二区三区| 日本一区二区欧美| 亚洲午夜av在线| 久草免费在线视频观看| 亚洲精品成人天堂一二三| 暗呦丨小u女国产精品| 中文字幕一区二区三区四区不卡 | 精品人妻二区中文字幕| 国产电影一区二区三区| 亚洲一区二区中文字幕在线观看| 久久99精品久久久久久| xxww在线观看| 九色|91porny| 日本美女久久久| 国产成人精品亚洲午夜麻豆| www.黄色网| 不卡一区二区在线| 最新在线黄色网址| 久久综合久色欧美综合狠狠| 在线 丝袜 欧美 日韩 制服| 久久久精品免费观看| 国产免费无遮挡吸奶头视频| 中文字幕不卡一区| 黑鬼狂亚洲人videos| 一区二区欧美在线观看| 日本三级视频在线| 欧美日韩性生活视频| 99久久久久久久久| 欧美日韩另类一区| 精品国产999久久久免费| 亚洲精品水蜜桃| 欧美黑吊大战白妞| 五月婷婷欧美视频| 手机在线看片1024| 欧美日韩一级黄| 国产视频手机在线| 精品国产乱码久久久久久1区2区| 五月婷婷开心中文字幕| 一本色道久久88综合日韩精品| 亚洲搞黄视频| 欧美激情乱人伦一区| 蜜桃视频在线观看播放| 国产精品久久久久久久久借妻| 国产精久久一区二区| 国产精品日韩一区二区三区| 国产一区国产二区国产三区| 熟女视频一区二区三区| 国产视频一区免费看| 午夜在线观看av| 国产ts人妖一区二区| 自拍偷拍中文字幕| 日韩美女精品在线| 日本熟妇毛耸耸xxxxxx| 欧美怡红院视频| 亚洲美女综合网| 亚洲一品av免费观看| 宅男网站在线免费观看| 庆余年2免费日韩剧观看大牛| 91视频成人| 狼狼综合久久久久综合网| 97欧美在线视频| 欧美性大战久久久久xxx| 国内精品视频666| 日韩 中文字幕| 亚洲人123区| 这里只有精品国产| 亚洲国产精品人人爽夜夜爽| 欧美精品电影| 日本午夜在线亚洲.国产| 凹凸av导航大全精品| 日韩欧美一区二区三区久久婷婷| 欧美日韩中文| 无尽裸体动漫2d在线观看| 99久久婷婷国产综合精品电影| 亚洲xxxx3d动漫| 91成人看片片| 天堂在线一二区| 久久久久久久97| 国产精品一区二区精品视频观看| 欧美一区激情视频在线观看| 亚洲大片av| 色姑娘综合天天| 欧美高清一级片在线观看| 天天爽夜夜爽夜夜爽精品| 欧美一区二区久久| 麻豆视频在线观看免费网站| 国产aⅴ夜夜欢一区二区三区| 盗摄牛牛av影视一区二区| 综合视频免费看| 免费久久99精品国产| 亚洲AV无码国产成人久久| 精品久久久久久亚洲精品| 亚洲欧美激情另类| 欧美成人中文字幕| 9999精品| 美女在线免费视频| 国内精品久久久久影院色| 又嫩又硬又黄又爽的视频| 在线精品国精品国产尤物884a| 青草久久伊人| 国产91精品网站| 国产成人高清| 日本精品久久久久中文字幕| 久久综合久久综合久久综合| 国产尤物在线视频| 日韩激情av在线播放| 久草在线资源福利站| 久草精品电影| 国产欧美短视频| 亚欧洲乱码视频| 91久久香蕉国产日韩欧美9色| 日韩精品一二| 日本精品久久久久影院| 免费成人av| 在线观看高清免费视频| 国产精品嫩草影院av蜜臀| 中文字幕+乱码+中文乱码www | 欧美日韩三级一区| www亚洲人| 国产中文日韩欧美| 999久久久亚洲| 人妻少妇偷人精品久久久任期| 有码一区二区三区| 亚洲成人av综合| 国内精品400部情侣激情| 婷婷激情久久| 天天插天天操天天射| 亚洲欧美色图小说| 欧美一级在线免费观看| 97超碰色婷婷| 狠狠做六月爱婷婷综合aⅴ| 亚洲欧美视频二区| 一区二区三区视频在线观看| 污视频在线免费观看| 日本视频久久久| 亚洲精彩视频| 熟妇人妻久久中文字幕| 欧美亚洲丝袜传媒另类| 免费黄色在线看| 国产精品日韩一区二区免费视频| 美女久久网站| 色哟哟一一国产精品| 精品国产成人在线影院 | 久久久久久久久久久久久久久| 欧美日韩黄色一区二区| 欧美videosex性欧美黑吊| 美日韩免费视频| 国产一区二区三区观看| 国产精品美女久久久久av爽| 中文字幕av一区中文字幕天堂| 亚洲码欧美码一区二区三区| 国产l精品国产亚洲区久久| 中文字幕一区二区不卡| 特黄视频在线观看| 国产精品爽爽爽| 亚洲日产国产精品| 九一在线免费观看| 亚洲大胆美女视频| 国产激情久久| 国产黄色一级网站| 日韩美女久久久| 国产精品一区二区婷婷| 国产不卡一区二区在线观看| 免费观看成人av| 日韩精品乱码久久久久久|