日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java开发工程师的自我评价

發(fā)布時(shí)間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java开发工程师的自我评价 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

京東到家訂單中心系統(tǒng)業(yè)務(wù)中,無(wú)論是外部商家的訂單生產(chǎn),或是內(nèi)部上下游系統(tǒng)的依賴(lài),訂單查詢(xún)的調(diào)用量都非常大,造成了訂單數(shù)據(jù)讀多寫(xiě)少的情況。

我們把訂單數(shù)據(jù)存儲(chǔ)在MySQL中,但顯然只通過(guò)DB來(lái)支撐大量的查詢(xún)是不可取的。同時(shí)對(duì)于一些復(fù)雜的查詢(xún),MySQL支持得不夠友好,所以訂單中心系統(tǒng)使用了Elasticsearch來(lái)承載訂單查詢(xún)的主要壓力。

Elasticsearch作為一款功能強(qiáng)大的分布式搜索引擎,支持近實(shí)時(shí)的存儲(chǔ)、搜索數(shù)據(jù),在京東到家訂單系統(tǒng)中發(fā)揮著巨大作用,目前訂單中心ES集群存儲(chǔ)數(shù)據(jù)量達(dá)到10億個(gè)文檔,日均查詢(xún)量達(dá)到5億。

隨著京東到家近幾年業(yè)務(wù)的快速發(fā)展,訂單中心ES架設(shè)方案也不斷演進(jìn),發(fā)展至今ES集群架設(shè)是一套實(shí)時(shí)互備方案,很好地保障了ES集群讀寫(xiě)的穩(wěn)定性,下面就給大家介紹一下這個(gè)歷程以及過(guò)程中遇到的一些坑。

一、網(wǎng)絡(luò)編程基礎(chǔ)回顧

1. Socket

Socket本身有“插座”的意思,不是Java中特有的概念,而是一個(gè)語(yǔ)言無(wú)關(guān)的標(biāo)準(zhǔn),任何可以實(shí)現(xiàn)網(wǎng)絡(luò)編程的編程語(yǔ)言都有Socket。在Linux環(huán)境下,用于表示進(jìn)程間網(wǎng)絡(luò)通信的特殊文件類(lèi)型,其本質(zhì)為內(nèi)核借助緩沖區(qū)形成的偽文件。既然是文件,那么理所當(dāng)然的,我們可以使用文件描述符引用套接字。

與管道類(lèi)似的,Linux系統(tǒng)將其封裝成文件的目的是為了統(tǒng)一接口,使得讀寫(xiě)套接字和讀寫(xiě)文件的操作一致。區(qū)別是管道主要應(yīng)用于本地進(jìn)程間通信,而套接字多應(yīng)用于網(wǎng)絡(luò)進(jìn)程間數(shù)據(jù)的傳遞。

可以這么理解:Socket就是網(wǎng)絡(luò)上的兩個(gè)應(yīng)用程序通過(guò)一個(gè)雙向通信連接實(shí)現(xiàn)數(shù)據(jù)交換的編程接口API。

Socket通信的基本流程具體步驟如下所示:

(1)服務(wù)端通過(guò)Listen開(kāi)啟監(jiān)聽(tīng),等待客戶(hù)端接入。

(2)客戶(hù)端的套接字通過(guò)Connect連接服務(wù)器端的套接字,服務(wù)端通過(guò)Accept接收客戶(hù)端連接。在connect-accept過(guò)程中,操作系統(tǒng)將會(huì)進(jìn)行三次握手。

(3)客戶(hù)端和服務(wù)端通過(guò)write和read發(fā)送和接收數(shù)據(jù),操作系統(tǒng)將會(huì)完成TCP數(shù)據(jù)的確認(rèn)、重發(fā)等步驟。

(4)通過(guò)close關(guān)閉連接,操作系統(tǒng)會(huì)進(jìn)行四次揮手。

針對(duì)Java編程語(yǔ)言,java.net包是網(wǎng)絡(luò)編程的基礎(chǔ)類(lèi)庫(kù)。其中ServerSocket和Socket是網(wǎng)絡(luò)編程的基礎(chǔ)類(lèi)型。

SeverSocket是服務(wù)端應(yīng)用類(lèi)型。Socket是建立連接的類(lèi)型。當(dāng)連接建立成功后,服務(wù)器和客戶(hù)端都會(huì)有一個(gè)Socket對(duì)象示例,可以通過(guò)這個(gè)Socket對(duì)象示例,完成會(huì)話(huà)的所有操作。對(duì)于一個(gè)完整的網(wǎng)絡(luò)連接來(lái)說(shuō),Socket是平等的,沒(méi)有服務(wù)器客戶(hù)端分級(jí)情況。

2. IO模型介紹

對(duì)于一次IO操作,數(shù)據(jù)會(huì)先拷貝到內(nèi)核空間中,然后再?gòu)膬?nèi)核空間拷貝到用戶(hù)空間中,所以一次read操作,會(huì)經(jīng)歷兩個(gè)階段:

(1)等待數(shù)據(jù)準(zhǔn)備

(2)數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間

基于以上兩個(gè)階段就產(chǎn)生了五種不同的IO模式。

  • 阻塞IO:從進(jìn)程發(fā)起IO操作,一直等待上述兩個(gè)階段完成,此時(shí)兩階段一起阻塞。
  • 非阻塞IO:進(jìn)程一直詢(xún)問(wèn)IO準(zhǔn)備好了沒(méi)有,準(zhǔn)備好了再發(fā)起讀取操作,這時(shí)才把數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間。第一階段不阻塞但要輪詢(xún),第二階段阻塞。
  • 多路復(fù)用IO:多個(gè)連接使用同一個(gè)select去詢(xún)問(wèn)IO準(zhǔn)備好了沒(méi)有,如果有準(zhǔn)備好了的,就返回有數(shù)據(jù)準(zhǔn)備好了,然后對(duì)應(yīng)的連接再發(fā)起讀取操作,把數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間。兩階段分開(kāi)阻塞。
  • 信號(hào)驅(qū)動(dòng)IO:進(jìn)程發(fā)起讀取操作會(huì)立即返回,當(dāng)數(shù)據(jù)準(zhǔn)備好了會(huì)以通知的形式告訴進(jìn)程,進(jìn)程再發(fā)起讀取操作,把數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間。第一階段不阻塞,第二階段阻塞。
  • 異步IO:進(jìn)程發(fā)起讀取操作會(huì)立即返回,等到數(shù)據(jù)準(zhǔn)備好且已經(jīng)拷貝到用戶(hù)空間了再通知進(jìn)程拿數(shù)據(jù)。兩個(gè)階段都不阻塞。
  • 這五種IO模式不難發(fā)現(xiàn)存在這兩對(duì)關(guān)系:同步和異步、阻塞和非阻塞。那么稍微解釋一下:

    同步和異步

    • 同步: 同步就是發(fā)起一個(gè)調(diào)用后,被調(diào)用者未處理完請(qǐng)求之前,調(diào)用不返回。
    • 異步: 異步就是發(fā)起一個(gè)調(diào)用后,立刻得到被調(diào)用者的回應(yīng)表示已接收到請(qǐng)求,但是被調(diào)用者并沒(méi)有返回結(jié)果,此時(shí)我們可以處理其他的請(qǐng)求,被調(diào)用者通常依靠事件,回調(diào)等機(jī)制來(lái)通知調(diào)用者其返回結(jié)果。

    同步和異步的區(qū)別最大在于異步的話(huà)調(diào)用者不需要等待處理結(jié)果,被調(diào)用者會(huì)通過(guò)回調(diào)等機(jī)制來(lái)通知調(diào)用者其返回結(jié)果。

    阻塞和非阻塞

    • 阻塞: 阻塞就是發(fā)起一個(gè)請(qǐng)求,調(diào)用者一直等待請(qǐng)求結(jié)果返回,也就是當(dāng)前線(xiàn)程會(huì)被掛起,無(wú)法從事其他任務(wù),只有當(dāng)條件就緒才能繼續(xù)。
    • 非阻塞: 非阻塞就是發(fā)起一個(gè)請(qǐng)求,調(diào)用者不用一直等著結(jié)果返回,可以先去干其他事情。

    阻塞和非阻塞是針對(duì)進(jìn)程在訪(fǎng)問(wèn)數(shù)據(jù)的時(shí)候,根據(jù)IO操作的就緒狀態(tài)來(lái)采取的不同方式,說(shuō)白了是一種讀取或者寫(xiě)入操作方法的實(shí)現(xiàn)方式,阻塞方式下讀取或者寫(xiě)入函數(shù)將一直等待,而非阻塞方式下,讀取或者寫(xiě)入方法會(huì)立即返回一個(gè)狀態(tài)值。

    如果組合后的同步阻塞(blocking-IO)簡(jiǎn)稱(chēng)BIO、同步非阻塞(non-blocking-IO)簡(jiǎn)稱(chēng)NIO和異步非阻塞(asynchronous-non-blocking-IO)簡(jiǎn)稱(chēng)AIO又代表什么意思呢?

    • BIO (同步阻塞I/O模式): 數(shù)據(jù)的讀取寫(xiě)入必須阻塞在一個(gè)線(xiàn)程內(nèi)等待其完成。這里使用那個(gè)經(jīng)典的燒開(kāi)水例子,這里假設(shè)一個(gè)燒開(kāi)水的場(chǎng)景,有一排水壺在燒開(kāi)水,BIO的工作模式就是, 叫一個(gè)線(xiàn)程停留在一個(gè)水壺那,直到這個(gè)水壺?zé)_(kāi),才去處理下一個(gè)水壺。但是實(shí)際上線(xiàn)程在等待水壺?zé)_(kāi)的時(shí)間段什么都沒(méi)有做。
    • NIO(同步非阻塞): 同時(shí)支持阻塞與非阻塞模式,但這里我們以其同步非阻塞I/O模式來(lái)說(shuō)明,那么什么叫做同步非阻塞?如果還拿燒開(kāi)水來(lái)說(shuō),NIO的做法是叫一個(gè)線(xiàn)程不斷的輪詢(xún)每個(gè)水壺的狀態(tài),看看是否有水壺的狀態(tài)發(fā)生了改變,從而進(jìn)行下一步的操作。
    • AIO(異步非阻塞I/O模型): 異步非阻塞與同步非阻塞的區(qū)別在哪里?異步非阻塞無(wú)需一個(gè)線(xiàn)程去輪詢(xún)所有IO操作的狀態(tài)改變,在相應(yīng)的狀態(tài)改變后,系統(tǒng)會(huì)通知對(duì)應(yīng)的線(xiàn)程來(lái)處理。對(duì)應(yīng)到燒開(kāi)水中就是,為每個(gè)水壺上面裝了一個(gè)開(kāi)關(guān),水燒開(kāi)之后,水壺會(huì)自動(dòng)通知我水燒開(kāi)了。

    java 中的 BIO、NIO和AIO理解為是 Java 語(yǔ)言在操作系統(tǒng)層面對(duì)這三種 IO 模型的封裝。程序員在使用這些 封裝API 的時(shí)候,不需要關(guān)心操作系統(tǒng)層面的知識(shí),也不需要根據(jù)不同操作系統(tǒng)編寫(xiě)不同的代碼,只需要使用Java的API就可以了。由此,為了使讀者對(duì)這三種模型有個(gè)比較具體和遞推式的了解,并且和本文主題NIO有個(gè)清晰的對(duì)比,下面繼續(xù)延伸。

    Java BIO

    BIO編程方式通常是是Java的上古產(chǎn)品,自JDK 1.0-JDK1.4就有的東西。編程實(shí)現(xiàn)過(guò)程為:首先在服務(wù)端啟動(dòng)一個(gè)ServerSocket來(lái)監(jiān)聽(tīng)網(wǎng)絡(luò)請(qǐng)求,客戶(hù)端啟動(dòng)Socket發(fā)起網(wǎng)絡(luò)請(qǐng)求,默認(rèn)情況下SeverSocket會(huì)建立一個(gè)線(xiàn)程來(lái)處理此請(qǐng)求,如果服務(wù)端沒(méi)有線(xiàn)程可用,客戶(hù)端則會(huì)阻塞等待或遭到拒絕。服務(wù)器實(shí)現(xiàn)模式為一個(gè)連接一個(gè)線(xiàn)程,即客戶(hù)端有連接請(qǐng)求時(shí)服務(wù)器端就需要啟動(dòng)一個(gè)線(xiàn)程進(jìn)行處理。大致結(jié)構(gòu)如下:

    如果要讓 BIO 通信模型能夠同時(shí)處理多個(gè)客戶(hù)端請(qǐng)求,就必須使用多線(xiàn)程(主要原因是 socket.accept()、socket.read()、 socket.write() 涉及的三個(gè)主要函數(shù)都是同步阻塞的),也就是說(shuō)它在接收到客戶(hù)端連接請(qǐng)求之后為每個(gè)客戶(hù)端創(chuàng)建一個(gè)新的線(xiàn)程進(jìn)行鏈路處理,處理完成之后,通過(guò)輸出流返回應(yīng)答給客戶(hù)端,線(xiàn)程銷(xiāo)毀。這就是典型的 一請(qǐng)求一應(yīng)答通信模型 。我們可以設(shè)想一下如果這個(gè)連接不做任何事情的話(huà)就會(huì)造成不必要的線(xiàn)程開(kāi)銷(xiāo),不過(guò)可以通過(guò)線(xiàn)程池機(jī)制改善,線(xiàn)程池還可以讓線(xiàn)程的創(chuàng)建和回收成本相對(duì)較低。使用線(xiàn)程池機(jī)制改善后的 BIO 模型圖如下:

    BIO方式適用于連接數(shù)目比較小且固定的架構(gòu),這種方式對(duì)服務(wù)器資源要求比較高,并發(fā)局限于應(yīng)用中,是JDK1.4以前的唯一選擇,但程序直觀簡(jiǎn)單易懂。Java BIO編程示例網(wǎng)上很多,這里就不進(jìn)行coding舉例了,畢竟后面NIO才是重點(diǎn)。

    Java NIO

    NIO(New IO或者No-Blocking IO),從JDK1.4 開(kāi)始引入的非阻塞IO,是一種非阻塞+ 同步的通信模式。這里的No Blocking IO用于區(qū)分上面的BIO。

    NIO本身想解決 BIO的并發(fā)問(wèn)題,通過(guò)Reactor模式的事件驅(qū)動(dòng)機(jī)制來(lái)達(dá)到Non Blocking的。當(dāng) socket 有流可讀或可寫(xiě)入 socket 時(shí),操作系統(tǒng)會(huì)相應(yīng)的通知應(yīng)用程序進(jìn)行處理,應(yīng)用再將流讀取到緩沖區(qū)或?qū)懭氩僮飨到y(tǒng)。

    也就是說(shuō),這個(gè)時(shí)候,已經(jīng)不是一個(gè)連接就 要對(duì)應(yīng)一個(gè)處理線(xiàn)程了,而是有效的請(qǐng)求,對(duì)應(yīng)一個(gè)線(xiàn)程,當(dāng)連接沒(méi)有數(shù)據(jù)時(shí),是沒(méi)有工作線(xiàn)程來(lái)處理的。

    當(dāng)一個(gè)連接創(chuàng)建后,不需要對(duì)應(yīng)一個(gè)線(xiàn)程,這個(gè)連接會(huì)被注冊(cè)到 多路復(fù)用器上面,所以所有的連接只需要一個(gè)線(xiàn)程就可以搞定,當(dāng)這個(gè)線(xiàn)程中的多路復(fù)用器 進(jìn)行輪詢(xún)的時(shí)候,發(fā)現(xiàn)連接上有請(qǐng)求的話(huà),才開(kāi)啟一個(gè)線(xiàn)程進(jìn)行處理,也就是一個(gè)請(qǐng)求一個(gè)線(xiàn)程模式。

    NIO提供了與傳統(tǒng)BIO模型中的Socket和ServerSocket相對(duì)應(yīng)的SocketChannel和ServerSocketChannel兩種不同的套接字通道實(shí)現(xiàn),如下圖結(jié)構(gòu)所示。這里涉及的Reactor設(shè)計(jì)模式、多路復(fù)用Selector、Buffer等暫時(shí)不用管,后面會(huì)講到。

    NIO 方式適用于連接數(shù)目多且連接比較短(輕操作)的架構(gòu),比如聊天服務(wù)器,并發(fā)局 限于應(yīng)用中,編程復(fù)雜,JDK1.4 開(kāi)始支持。同時(shí),NIO和普通IO的區(qū)別主要可以從存儲(chǔ)數(shù)據(jù)的載體、是否阻塞等來(lái)區(qū)分:

    Java AIO

    與 NIO 不同,當(dāng)進(jìn)行讀寫(xiě)操作時(shí),只須直接調(diào)用 API 的 read 或 write 方法即可。這兩種方法均為異步的,對(duì)于讀操作而言,當(dāng)有流可讀取時(shí),操作系統(tǒng)會(huì)將可讀的流傳入 read 方 法的緩沖區(qū),并通知應(yīng)用程序;對(duì)于寫(xiě)操作而言,當(dāng)操作系統(tǒng)將 write 方法傳遞的流寫(xiě)入完畢時(shí),操作系統(tǒng)主動(dòng)通知應(yīng)用程序。即可以理解為,read/write 方法都是異步的,完成后會(huì)主動(dòng)調(diào)用回調(diào)函數(shù)。在 JDK7 中,提供了異步文件通道和異步套接字通道的實(shí)現(xiàn),這部分內(nèi)容被稱(chēng)作 NIO.

    AIO 方式使用于連接數(shù)目多且連接比較長(zhǎng)(重操作)的架構(gòu),比如相冊(cè)服務(wù)器,充分調(diào)用 OS 參與并發(fā)操作,編程比較復(fù)雜,JDK7 開(kāi)始支持。

    目前來(lái)說(shuō) AIO 的應(yīng)用還不是很廣泛,Netty 之前也嘗試使用過(guò) AIO,不過(guò)又放棄了。

    二、NIO核心組件介紹

    1. Channel

    在NIO中,基本所有的IO操作都是從Channel開(kāi)始的,Channel通過(guò)Buffer(緩沖區(qū))進(jìn)行讀寫(xiě)操作。

    read()表示讀取通道中數(shù)據(jù)到緩沖區(qū),write()表示把緩沖區(qū)數(shù)據(jù)寫(xiě)入到通道。

    Channel有好多實(shí)現(xiàn)類(lèi),這里有三個(gè)最常用:

    • SocketChannel:一個(gè)客戶(hù)端發(fā)起TCP連接的Channel
    • ServerSocketChannel:一個(gè)服務(wù)端監(jiān)聽(tīng)新連接的TCP Channel,對(duì)于每一個(gè)新的Client連接,都會(huì)建立一個(gè)對(duì)應(yīng)的SocketChannel
    • FileChannel:從文件中讀寫(xiě)數(shù)據(jù)

    其中SocketChannel和ServerSocketChannel是網(wǎng)絡(luò)編程中最常用的,一會(huì)在最后的示例代碼中會(huì)有講解到具體用法。

    2. Buffer

    概念

    Buffer也被成為內(nèi)存緩沖區(qū),本質(zhì)上就是內(nèi)存中的一塊,我們可以將數(shù)據(jù)寫(xiě)入這塊內(nèi)存,之后從這塊內(nèi)存中讀取數(shù)據(jù)。也可以將這塊內(nèi)存封裝成NIO Buffer對(duì)象,并提供一組常用的方法,方便我們對(duì)該塊內(nèi)存進(jìn)行讀寫(xiě)操作。

    Buffer在java.nio中被定義為抽象類(lèi):

    我們可以將Buffer理解為一個(gè)數(shù)組的封裝,我們最常用的ByteBuffer對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)就是byte[]

    屬性

    Buffer中有4個(gè)非常重要的屬性:capacity、limit、position、mark

    最后

    現(xiàn)在其實(shí)從大廠(chǎng)招聘需求可見(jiàn),在招聘要求上有高并發(fā)經(jīng)驗(yàn)優(yōu)先,包括很多朋友之前都是做傳統(tǒng)行業(yè)或者外包項(xiàng)目,一直在小公司,技術(shù)搞的比較簡(jiǎn)單,沒(méi)有怎么搞過(guò)分布式系統(tǒng),但是現(xiàn)在互聯(lián)網(wǎng)公司一般都是做分布式系統(tǒng)。

    所以說(shuō),如果你想進(jìn)大廠(chǎng),想脫離傳統(tǒng)行業(yè),這些技術(shù)知識(shí)都是你必備的,下面自己手打了一份Java并發(fā)體系思維導(dǎo)圖,希望對(duì)你有所幫助。

    資料獲取方式:戳這里免費(fèi)下載

    怎么搞過(guò)分布式系統(tǒng),但是現(xiàn)在互聯(lián)網(wǎng)公司一般都是做分布式系統(tǒng)。

    所以說(shuō),如果你想進(jìn)大廠(chǎng),想脫離傳統(tǒng)行業(yè),這些技術(shù)知識(shí)都是你必備的,下面自己手打了一份Java并發(fā)體系思維導(dǎo)圖,希望對(duì)你有所幫助。

    資料獲取方式:戳這里免費(fèi)下載

    總結(jié)

    以上是生活随笔為你收集整理的java开发工程师的自我评价的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美a久久 | 国产一区二区在线视频 | 天天插天天爽 | 亚洲色图 美腿丝袜 | 在线免费黄色网址 | 久久女人网 | 国产精品玖玖玖 | 亚洲最大的成人网站 | 国产极品在线观看 | 污污视频网站免费观看 | 色视频在线看 | 亚洲国产mv | 四虎影院色 | 欧美一区二区三区国产 | 国产精品自拍网站 | 精品一区二区三区免费观看 | 99久久婷婷国产综合精品电影 | 撸撸在线视频 | 久久精品99久久久久久 | 国产美女av在线 | 97久久国产亚洲精品超碰热 | 精品婷婷色一区二区三区蜜桃 | 日韩成人av网址 | 亚洲国产中文在线 | 黄色大片a级| 男同av在线观看一区二区三区 | 日本一区视频在线观看 | 麻豆视频播放 | 国产精品久久久久久久久久免费看 | 91天堂在线视频 | 黄色一级片免费观看 | 亚洲天堂二区 | 亚洲性猛交xxxx乱大交 | 午夜视频在线观看一区 | av在线最新 | 欧美五月 | 日韩精品在线播放 | 天天操你 | 欧美色鬼 | 亚洲色图另类图片 | 欧美一级黄色大片 | 日本91av| 亚洲综合丁香 | 国产精品一区二区三区免费观看 | 国产男女在线 | 欧美一区二区三 | 欧美极品少妇xxxxⅹ猛交 | 国产成人一区二区三区小说 | a片在线免费观看 | 91亚洲国产成人精品一区二三 | 国产欧美在线观看 | 40到50岁中老年妇女毛片 | 国产欧美久久久 | 99在线国产| 欧美韩日一区二区 | 高清精品xnxxcom | 国产一区在线看 | 久久久免费看片 | 好吊色一区二区三区 | 国产又粗又猛又爽又黄的视频一 | 天天想你在线观看完整版电影高清 | 大肉大捧一进一出好爽mba | 国产精品调教 | 国语对白一区二区三区 | 操女人的逼逼 | 日韩精品视频免费在线观看 | 国产精品夜夜爽张柏芝 | 国产精品久久久久久久一区二区 | 精品日韩视频 | jul023被夫上司连续侵犯 | 天堂色综合 | 香蕉久久久 | 免费在线色视频 | 久久久久亚洲国产 | 美女啪啪网 | 天天干天天舔 | 天天撸天天操 | 找国产毛片看 | 免费黄色网址在线 | 在线中文字幕一区 | 国产午夜av | 自拍色图| 男女插插插网站 | 亚洲男同视频 | 8x8ⅹ成人永久免费视频 | 手机av电影在线 | 欧美视频日韩视频 | 国产真实乱人偷精品视频 | 成人免费无遮挡无码黄漫视频 | www爱爱 | 无码少妇一级AV片在线观看 | 自拍露脸高潮 | 五月婷婷综 | 亚洲美女自拍偷拍 | 中文字幕欧美视频 | 日韩av福利| 美女脱裤子打屁股 | 夜夜爽天天爽 | 国产欧美在线观看视频 |