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

騰訊的校招面試也沒那么難嘛!

網絡 網絡管理
假設客戶端主動發(fā)起連接關閉請求,他給服務端發(fā)起一包FIN包,標識要關閉連接,自己進入終止等待1裝填,服務端收到FIN包,發(fā)送一包ACK包,標識自己進入了關閉等待狀態(tài),客戶端進入終止等待2狀態(tài)。

今天分享的是騰訊校招Golang后端面經,這位同學一面之后信心滿滿的來找我說:“騰訊的校招面試也沒那么難嘛,也可能只是一面,后面才會放大招。”

TA復盤的關鍵面試題如下:

圖片圖片

我給大家整理一下考察的知識:

  • Go基礎:數組和切片,結構體,逃逸分析,GC
  • 數據結構:B+樹和B樹
  • 緩存:持久化策略,緩存穿透
  • 計網:TCP/UDP
  • 算法:最長回文串

面試題詳解

slice和數組的區(qū)別

這是一個經常問到的面試題。

slice 的底層數據是數組,它描述一個數組的片段。兩者都可以通過下標來訪問單個元素。

數組是定長的,長度定義好之后,不能再更改。在 Go 中,數組是不常見的,因為其長度是類型的一部分,限制了它的表達能力,比如 [3]int 和 [4]int 就是不同的類型。

而切片則非常靈活,它可以動態(tài)地擴容。切片的類型和長度無關。

數組就是一片連續(xù)的內存, slice 實際上是一個結構體,包含三個字段:長度、容量、底層數組。

type slice struct {
    array unsafe.Pointer // 元素指針
    len   int // 長度
    cap   int // 容量
}

slice的數據結構如下:

圖片圖片

(注意: 底層數組是可以被多個 slice 同時指向的,因此對一個 slice 的元素進行操作是有可能影響到其他 slice 的。)

還有一個很重要的區(qū)別就是slice作為函數參數傳遞時為按引用傳遞的,函數內對其元素的修改將導致函數外的值也發(fā)生改變,不過需要注意的是傳入的是一個指針的副本,如果對該指針進行修改,不會導致原本的指針發(fā)生變化。而數組是值傳遞,函數內對數組的值的改變不影響初始數組。

兩個結構體可以進行等值比較嗎?

可以試一下運行下列代碼:

package main

import "fmt"

func main() {
 sn1 := struct {
  age  int
  name string
 }{age: 11, name: "qq"}
 sn2 := struct {
  age  int
  name string
 }{age: 11, name: "qq"}
 if sn1 == sn2 {
  fmt.Println("sn1 == sn2")
 }
 sm1 := struct {
  age int
  m   map[string]string
 }{age: 11, m: map[string]string{"a": "1"}}
 sm2 := struct {
  age int
  m   map[string]string
 }{age: 11, m: map[string]string{"a": "1"}}
 if sm1 == sm2 {
  fmt.Println("sm1 == sm2")
 }
}

參考答案:編譯不通過  invalid operation: sm1 == sm2

解析:

  1. 結構體能比較是否相等,不能比較大小。
  2. 相同類型的結構體才能夠進行比較,結構體是否相同不但與屬性類型有關,還與屬性順序相關,下面的sn3 與上面的 sn1 就是不同的結構體
sn3:= struct {
  name string
  age  int
}{age:11,name:"qq"}
  1. 如果 struct 的所有成員都可以?較,則該 struct 就可以通過 == 或 != 進??較是否相等,?較時逐個項進??較,如果每?項都相等,則兩個結構體才相等,否則不相等;

那什么是可?較的呢,常?的有 bool、數值型、string、指針、數組等,像切?、map、函數等是不能 ?較的。

說說逃逸分析

要搞清楚GO的逃逸分析一定要先搞清楚內存分配和堆棧:

內存既可以分配到堆中,也可以分配到棧中。

GO語言是如何進行內存分配的呢?其設計初衷和實現原理是什么呢?

要搞清楚上面的問題,我們先來聊一下內存管理和堆、棧的知識點:

內存管理

內存管理主要包括兩個動作:分配與釋放。逃逸分析就是服務于內存分配的,而內存的釋放由GC負責。

在Go語言中,棧的內存是由編譯器自動進行分配和釋放的,棧區(qū)往往存儲著函數參數、局部變量和調用函數幀,它們隨著函數的創(chuàng)建而分配,隨著函數的退出而銷毀。

Go應用程序運行時,每個 goroutine 都維護著一個自己的棧區(qū),這個棧區(qū)只能自己使用不能被其他 goroutine 使用。棧是調用棧(call stack)的簡稱。一個棧通常又包含了許多棧幀(stack frame),它描述的是函數之間的調用關系

與棧不同的是,堆區(qū)的內存一般由編譯器和工程師自己共同進行管理分配,交給 Runtime GC 來釋放。在堆上分配時,必須找到一塊足夠大的內存來存放新的變量數據。后續(xù)釋放時,垃圾回收器掃描堆空間尋找不再被使用的對象。

我們可以簡單理解為:我們用GO語言開發(fā)過程中,要考慮的內存管理只是針對堆內存而言的。

程序在運行期間可以主動從堆上申請內存,這些內存通過Go的內存分配器分配,并由垃圾收集器回收。

為了方便大家理解,我們再從以下角度對比一下堆棧:

堆和棧的對比

加鎖

  • 棧不需要加鎖:每個goroutine都獨享自己的棧空間,這就意味著棧上的內存操作是不需要加鎖的。
  • 堆有時需要加鎖:堆上的內存,有時需要加鎖防止多線程沖突

延伸知識點:為什么堆上的內存有時需要加鎖?而不是一直需要加鎖呢?

因為Go的內存分配策略學習了TCMalloc的線程緩存思想,他為每個處理器分配了一個mcache,注意:從mcache分配內存也是無鎖的。

性能

  • 棧內存管理 性能好:棧上的內存,它的分配與釋放非常高效的。簡單地說,它只需要兩個CPU指令:一個是分配入棧,另外一個是棧內釋放。只需要借助于棧相關寄存器即可完成。
  • 堆內存管理 性能差:對于程序堆上的內存回收,還需要有標記清除階段,例如Go采用的三色標記法。

緩存策略

  • 棧緩存性能更好
  • 堆緩存性能較差原因是:棧內存能更好地利用CPU的緩存策略,因為棧空間相較于堆來說是更連續(xù)的。

逃逸分析

上面說了這么多堆和棧的知識點,目的是為了讓大家更好的理解逃逸分析。

正如上面講的,相比于把內存分配到堆中,分配到棧中優(yōu)勢更明顯。

Go語言也是這么做的:Go編譯器會盡可能將變量分配到到棧上。

但是,在函數返回后無法證明變量未被引用,則該變量將被分配到堆上,該變量不隨函數棧的回收而回收。以此避免懸掛指針(dangling pointer)的問題。

另外,如果局部變量占用內存非常大,也會將其分配在堆上。

Go是如何確定內存是分配到棧上還是堆上的呢?

答案就是:逃逸分析。

編譯器通過逃逸分析技術去選擇堆或者棧,逃逸分析的基本思想如下:檢查變量的生命周期是否是完全可知的,如果通過檢查,則在棧上分配。否則,就是所謂的逃逸,必須在堆上進行分配。

逃逸分析原則

Go語言雖然沒有明確說明逃逸分析原則,但是有以下幾點準則,是可以參考的。

  • 不同于JAVA JVM的運行時逃逸分析,Go的逃逸分析是在編譯期完成的:編譯期無法確定的參數類型必定放到堆中;
  • 如果變量在函數外部存在引用,則必定放在堆中;
  • 如果變量占用內存較大時,則優(yōu)先放到堆中;
  • 如果變量在函數外部沒有引用,則優(yōu)先放到棧中;

GC中的根節(jié)點是什么?

Go 基礎知識中 GC 肯定是比較重要的部分,然而平時我們在看八股文的時候總會對文中所提到的“根節(jié)點”產生疑惑,那么到底什么是根節(jié)點呢?

在垃圾回收的上下文中,“根節(jié)點”是指程序中被直接或間接引用的對象集合。

針對 Go 語言,垃圾回收器會從程序的“根節(jié)點”開始遍歷,找出所有可以被訪問到的對象,并標記它們?yōu)榭蛇_對象。根據上述“根節(jié)點”定義,Go 程序的根節(jié)點通常包括以下幾類對象:

  1. 程序的全局變量和靜態(tài)變量:這些變量在整個程序執(zhí)行過程中都可以被訪問到,因此垃圾回收器會將它們作為根節(jié)點。
  2. 程序的調用棧中的變量:這些變量在函數調用過程中被創(chuàng)建,并在函數返回時被銷毀。因此,在函數調用期間,它們被認為是根節(jié)點。
  3. 當前執(zhí)行的Goroutine:在 Go 語言中,Goroutine 是輕量級的線程,它們可以獨立地運行,因此當前執(zhí)行的Goroutine也被認為是根節(jié)點。

垃圾回收器從這些根節(jié)點開始遍歷,查找所有可以被訪問到的對象,并標記它們?yōu)榭蛇_對象。而沒有被標記為可達對象的對象就是垃圾對象,可以被回收。這個過程被稱為可達性分析。

既然 GC 不在棧上起作用,那為什么根節(jié)點還包括程序的調用棧中的變量呢?

根節(jié)點是指程序中被直接或間接引用的對象集合,它們是垃圾回收器掃描堆中對象時的起點。程序的調用棧中的變量也可以被認為是根節(jié)點之一,因為它們可以被其他對象引用。

調用棧是用于存儲函數調用信息的一種數據結構,它由多個幀組成,每個幀對應一個函數調用。每當一個函數被調用時,就會在調用棧中創(chuàng)建一個新的幀,并將該函數的參數、局部變量和返回地址等信息保存到幀中。當函數返回時,對應的幀就會被銷毀,該函數的所有局部變量也隨之被釋放。雖然調用棧中的變量存儲在棧上,但它們也可以被其他對象引用,例如一個函數返回一個指向調用棧中局部變量的指針。因此,當垃圾回收器掃描堆中對象時,它也需要考慮調用棧中的變量是否被其他對象引用,以便正確地標記和回收不再使用的對象。

綜上所述,調用棧中的變量雖然存儲在棧上,但它們也可以被認為是根節(jié)點之一,因為它們可以被其他對象引用。因此,在Go語言中,垃圾回收器需要掃描調用棧中的變量,以確保不會回收被其他對象引用的變量。

b樹和b+樹的區(qū)別,為什么索引使用b+樹結構?

  1. B樹的每個節(jié)點都存儲了key和data,而B+樹的data存儲在葉子節(jié)點上。

B+樹非葉子節(jié)點僅存儲key不存儲data,這樣一個節(jié)點就可以存儲更多的key。可以使得B+樹相對B樹來說更矮(IO次數就是樹的高度),所以與磁盤交換的IO操作次數更少。

  1. B+樹所有葉子節(jié)點構成一個有序鏈表,按主鍵排序來遍歷全部記錄,能更好支持范圍查找。

由于數據順序排列并且相連,所以便于區(qū)間查找和搜索。而B樹則需要進行每一層的遞歸遍歷,相鄰的元素可能在內存中不相鄰,所以緩存命中性沒有B+樹好。

  1. B+樹所有的查詢都要從根節(jié)點查找到葉子節(jié)點,查詢性能更穩(wěn)定;而B樹,每個節(jié)點都可能查找到數據,需要在葉子節(jié)點和內部節(jié)點不停的往返移動,所以不穩(wěn)定。

redis持久化策略?

RDB持久化(全量備份)

RDB持久化是指在指定時間間隔內將內存中的數據集快照寫入磁盤。實際上fork子線程,先將數據集寫入臨時文件,寫入成功后,在替換之前的文件,用二進制壓縮文件,RDB是Redis默認的持久化方式,會在對應目錄下生產一個dump.rdb文件,重啟會通過加載dump.rdb文件恢復數據

RDB優(yōu)點:

  1. 方便持久化:只有一個dump.rdb文件;
  2. 容災性好:一個文件可以保存到安全的磁盤;
  3. 性能好:fork子線程來完成寫操作,主線程繼續(xù)處理命令;
  4. 效率高:如何數據集偏大,RDB啟動效率比AOF高

RDB缺點:

  1. 數據安全性低:因為RDB是每隔一段時間進行持久化,可能會造成數據丟失。
  2. 由于RDB是通過fork子線程協助完成數據持久化工作的,因此如果數據集較大時,可能會導致整個服務停止服務幾百毫秒,甚至一分鐘。

AOF持久化(增量備份)

AOF持久化是以日志的形式記錄記錄每一個增刪操作然后追加到文件中。AOF的出現是為了彌補RDB備份的不足(數據不一致性)。

與RDB持久化相比,AOF的持久化實時性更好。

AOF的備份策略:Redis的配置文件中存在三種不同的AOF持久化方式:

  1. appendfsync always:每次有數據修改發(fā)生時都會同步。
  2. appendfsync everysec:每秒同步一次
  3. appendsync no:讓操作系統決定何時進行同步。

AOF優(yōu)點:

  1. AOF實時性哈好,數據安全性更高;
  2. AOF通過append模式寫文件,即使中途服務器宕機,也可以通過redis-check-aof工具解決數據一致性問題。
  3. AOF機制的rewrite模式(文件過大會對命令進行合并重寫),可以刪除其中某些命令(比如誤操作的命令)

AOF缺點:

  1. AOF文件比RDB文件大,且恢復慢;
  2. 根據同步策略的不同,AOF在運行效率上往往會慢于RDB。

兩者結合

將 RDB 和 AOF 合體使用,這個方法是在 Redis 4.0 提出的,該方法叫混合使用 AOF 日志和內存快照,也叫混合持久化。

混合持久化工作在 AOF 日志重寫過程。

當開啟了混合持久化時,在 AOF 重寫日志時,fork 出來的重寫子進程會先將與主線程共享的內存數據以 RDB 方式寫入到 AOF 文件,然后主線程處理的操作命令會被記錄在重寫緩沖區(qū)里,重寫緩沖區(qū)里的增量命令會以 AOF 方式寫入到 AOF 文件,寫入完成后通知主進程將新的含有 RDB 格式和 AOF 格式的 AOF 文件替換舊的的 AOF 文件。

也就是說,使用了混合持久化,AOF 文件的前半部分是 RDB 格式的全量數據,后半部分是 AOF 格式的增量數據。

這樣的好處在于,重啟 Redis 加載數據的時候,由于前半部分是 RDB 內容,這樣加載的時候速度會很快。

加載完 RDB 的內容后,才會加載后半部分的 AOF 內容,這里的內容是 Redis 后臺子進程重寫 AOF 期間,主線程處理的操作命令,可以使得數據更少的丟失。

緩存穿透,怎么解決?

當用戶訪問的數據,既不在緩存中,也不在數據庫中,導致請求在訪問緩存時,發(fā)現緩存缺失,再去訪問數據庫時,發(fā)現數據庫中也沒有要訪問的數據,沒辦法構建緩存數據,來服務后續(xù)的請求。那么當有大量這樣的請求到來時,數據庫的壓力驟增,這就是緩存穿透的問題。

緩存穿透的發(fā)生一般有這兩種情況:

  • 業(yè)務誤操作,緩存中的數據和數據庫中的數據都被誤刪除了,所以導致緩存和數據庫中都沒有數據;
  • 黑客惡意攻擊,故意大量訪問某些讀取不存在數據的業(yè)務;

應對緩存穿透的方案,常見的方案有三種。

  • 第一種方案,非法請求的限制;
  • 第二種方案,緩存空值或者默認值;
  • 第三種方案,使用布隆過濾器快速判斷數據是否存在,避免通過查詢數據庫來判斷數據是否存在;

第一種方案,非法請求的限制

當有大量惡意請求訪問不存在的數據的時候,也會發(fā)生緩存穿透,因此在 API 入口處我們要判斷求請求參數是否合理,請求參數是否含有非法值、請求字段是否存在,如果判斷出是惡意請求就直接返回錯誤,避免進一步訪問緩存和數據庫。

第二種方案,緩存空值或者默認值

當我們線上業(yè)務發(fā)現緩存穿透的現象時,可以針對查詢的數據,在緩存中設置一個空值或者默認值,這樣后續(xù)請求就可以從緩存中讀取到空值或者默認值,返回給應用,而不會繼續(xù)查詢數據庫。

第三種方案,使用布隆過濾器快速判斷數據是否存在,避免通過查詢數據庫來判斷數據是否存在。

我們可以在寫入數據庫數據時,使用布隆過濾器做個標記,然后在用戶請求到來時,業(yè)務線程確認緩存失效后,可以通過查詢布隆過濾器快速判斷數據是否存在,如果不存在,就不用通過查詢數據庫來判斷數據是否存在。

即使發(fā)生了緩存穿透,大量請求只會查詢 Redis 和布隆過濾器,而不會查詢數據庫,保證了數據庫能正常運行,Redis 自身也是支持布隆過濾器的。

TCP/UDP 詳解,區(qū)別

作用

首先,tcp和udp都是工作再傳輸層,用于程序之間傳輸數據的。數一般包含:文件類型,視頻類型,jpg圖片等。

圖片圖片

區(qū)別

TCP是基于連接的,而UDP是基于非連接的。

tcp傳輸數據穩(wěn)定可靠,適用于對網絡通訊質量要求較高的場景,需要準確無誤的傳輸給對方,比如,傳輸文件,發(fā)送郵件,瀏覽網頁等等。

udp的優(yōu)點是速度快,但是可能產生丟包,所以適用于對實時性要求較高但是對少量丟包并沒有太大要求的場景。比如:域名查詢,語音通話,視頻直播等。udp還有一個非常重要的應用場景就是隧道網絡,比如:vpn,VXLAN。

以人與人之間的通信為例:UDP協議就相當于是寫信給對方,寄出去信件之后不能知道對方是否收到信件,信件內容是否完整,也不能得到及時反饋,而TCP協議就像是打電話通信,在這一系列流程都能得到及時反饋,并能確保對方及時接收到。如下圖:

圖片圖片

三次握手

當客戶端向服務端發(fā)起連接時,會先發(fā)一包連接請求數據,過去詢問一下,能否與你建立連接?這包數據稱之為SYN包,如果對端同意連接,則回復一包SYN+ACK包,客戶端收到之后,發(fā)送一包ACK包,連接建立,因為這個過程中互相發(fā)送了三包數據,所以稱之為三次握手。

圖片圖片

為什么要三次握手而不是兩次握手?

這是為了防止,因為已失效的請求報文,突然又傳到服務器,引起錯誤,這是什么意思?

假設采用兩次握手建立連接,客戶端向服務端發(fā)送一個syn包請求建立連接,因為某些未知的原因,并沒有到達服務器,在中間某個網絡節(jié)點產生了滯留,為了建立連接,客戶端會重發(fā)syn包,這次的數據包正常送達,服務端發(fā)送syn+ack之后就建立起了連接,但是第一包數據阻塞的網絡突然恢復,第一包syn包又送達到服務端,這是服務端會認為客戶端又發(fā)起了一個新的連接,從而在兩次握手之后進入等待數據狀態(tài),服務端認為是兩個連接,而客戶端認為是一個連接,造成了狀態(tài)不一致,如果在三次握手的情況下,服務端收不到最后的ack包,自然不會認為連接建立成功,所以三次握手本質上來說就是為了解決網絡信道不可靠的問題,為了在不可靠的信道上建立起可靠的連接,經過三次握手之后,客戶端和服務端都進入了數據傳輸狀態(tài)。

四次揮手

圖片圖片

處于連接狀態(tài)的客戶端和服務端,都可以發(fā)起關閉連接請求,此時需要四次揮手來進行連接關閉。

假設客戶端主動發(fā)起連接關閉請求,他給服務端發(fā)起一包FIN包,標識要關閉連接,自己進入終止等待1裝填,服務端收到FIN包,發(fā)送一包ACK包,標識自己進入了關閉等待狀態(tài),客戶端進入終止等待2狀態(tài)。這是第二次揮手,服務端此時還可以發(fā)送未發(fā)送的數據,而客戶端還可以接受數據,待服務端發(fā)送完數據之后,發(fā)送一包FIN包,最后進入確認狀態(tài),這是第3次揮手,客戶端收到之后恢復ACK包,進入超時等待狀態(tài),經過超時時間后關閉連接,而服務端收到ACK包后,立即關閉連接,這是第四次揮手。

為什么客戶端要等待超時時間?

這是為了保證對方已經收到ACK包,因為假設客戶端發(fā)送完最后一包ACK包后釋放了連接,一旦ACK包在網絡中丟失,服務端將一直停留在 最后確認狀態(tài),如果等待一段時間,這時服務端會因為沒有收到ack包重發(fā)FIN包,客戶端會響應 這個FIN包進行重發(fā)ack包,并刷新超時時間,這個機制跟第三次握手一樣。也是為了保證在不可靠的網絡鏈路中進行可靠的連接斷開確認。

本文轉載自微信公眾號「 程序員升級打怪之旅」,作者「小韜&王中陽」,可以通過以下二維碼關注。

轉載本文請聯系「 程序員升級打怪之旅」公眾號。

責任編輯:武曉燕 來源: 王中陽Go
相關推薦

2019-05-17 09:33:50

圖像識別三維重建文本識別

2012-12-21 09:31:52

Windows 8

2014-11-03 18:22:53

2021-07-01 07:34:09

LinuxIO模型

2023-10-26 18:22:16

前端CSSFlex 布局

2015-07-13 09:45:32

阿里校招

2021-06-02 20:13:41

Matplotlib繪圖工具

2012-08-29 10:48:37

Windows 8操作系統

2020-05-21 09:17:51

Vue 3Vue代碼

2015-08-24 14:36:53

2018-08-30 17:28:52

TCP三次握手HTTP

2013-03-11 11:14:05

2018-11-27 15:55:21

TCP通訊協議

2015-04-30 10:12:13

開源云平臺OpenStack

2024-07-04 13:29:06

2014-04-23 15:13:42

2018-10-19 11:15:34

云計算互聯網數據中心

2012-08-22 09:13:05

程序員

2015-09-09 09:53:11

BAT移動互聯網招聘

2014-03-21 15:30:06

產品經理PM能力
點贊
收藏

51CTO技術棧公眾號

男人的天堂在线视频免费观看| 成人a v视频| 中文字幕一区二区三区中文字幕| 亚洲国产成人高清精品| 日韩av一区二区三区在线| 97人妻精品一区二区三区动漫| 欧美久久99| 日韩大陆毛片av| 国产一伦一伦一伦| 99爱在线视频| 国产精品国产馆在线真实露脸| 国产99视频精品免费视频36| 午夜精品一区二| 欧美日韩99| 中文字幕日韩欧美精品在线观看| av在线天堂网| 九九热这里有精品| 欧美日韩一区免费| 麻豆一区二区三区在线观看| 噜噜噜噜噜在线视频| 国产精品亚洲一区二区三区妖精| 国产成人精品综合| 久久久久久欧美精品se一二三四| 精品一区二区三| 精品国产1区二区| 免费在线观看污网站| 自拍一区在线观看| 亚洲电影一区二区| 老司机午夜网站| jizzjizz在线观看| 91在线码无精品| 成人国产1314www色视频| 中文字幕永久在线视频| 亚洲一区亚洲| 国产69精品99久久久久久宅男| 欧美性生交大片| 精品国产一区二区三区噜噜噜| 精品国偷自产国产一区| 三年中文在线观看免费大全中国| 秋霞国产精品| 91国产免费观看| caopor在线视频| 在线高清av| 精品久久久久久国产91| 男的插女的下面视频| 日本乱理伦在线| 亚洲自拍偷拍欧美| 中文字幕色呦呦| 大片免费在线观看| 最近日韩中文字幕| 国产成年人在线观看| 天堂а√在线官网| ●精品国产综合乱码久久久久| 亚洲欧美精品| 日本在线免费网| 国产精品电影院| 伊人精品久久久久7777| 日本在线观看| 亚洲日本丝袜连裤袜办公室| 青春草在线视频免费观看| 蜜桃视频在线观看www社区| 国产精品伦一区| 正在播放一区| xvideos国产在线视频| 亚洲色图制服诱惑| 男人的天堂avav| 超碰高清在线| 日韩欧美在线播放| wwww.国产| 麻豆一区在线| 精品国产乱码久久| 黄色av网址在线观看| 亚洲性视频大全| 亚洲人av在线影院| 一级片一级片一级片| 91成人精品| 午夜精品久久17c| 波多野结衣绝顶大高潮| 久色婷婷小香蕉久久| 99国产超薄肉色丝袜交足的后果| 国产综合视频在线| 久久久久成人黄色影片| 日本黄色播放器| xxxcom在线观看| 日韩欧美精品网址| 高潮一区二区三区| 成人动态视频| 一本色道久久综合狠狠躁篇的优点| 日韩精品123区| 99这里有精品| 国产综合香蕉五月婷在线| www香蕉视频| 91麻豆国产自产在线观看| 无遮挡亚洲一区| 成人超碰在线| 欧美日韩综合一区| 黄色激情在线观看| 欧美在线观看视频一区| 久久久久久久国产精品| 日韩国产亚洲欧美| 成人美女视频在线观看| 色姑娘综合网| av电影在线免费| 欧美日韩一卡二卡三卡| av黄色一级片| 91精品国产调教在线观看| 456国产精品| 国内精品久久久久久久久久久| 91视频在线看| 成人在线观看毛片| 欧美91在线|欧美| 日韩av在线精品| 色老板免费视频| 日韩中文字幕一区二区三区| 国产精品久久九九| 蜜桃视频网站在线观看| 色婷婷av一区二区三区软件| 黑人无套内谢中国美女| 久久日文中文字幕乱码| 欧美亚洲国产成人精品| 亚洲av无码国产精品永久一区 | 日韩porn| 尤物在线观看一区| 精品亚洲一区二区三区四区| 欧美日韩一区二区三区四区不卡| 久久久精品久久| 日韩久久久久久久久久| 91一区二区在线| 国产天堂视频在线观看| 国产不卡精品| 色婷婷综合久久久久| 午夜一级黄色片| 91在线视频18| 乱妇乱女熟妇熟女网站| 国产福利一区二区精品秒拍| 欧美人交a欧美精品| 国产一区二区三区成人| 国产精品欧美精品| 少妇激情一区二区三区| 综合综合综合综合综合网| 91成人天堂久久成人| 日韩在线视频观看免费| 亚洲影院免费观看| 天天爽夜夜爽视频| 亚洲精品极品少妇16p| 成人a在线视频| 欧美性videos| 欧美高清激情brazzers| 小嫩苞一区二区三区| 久久精品国产亚洲一区二区三区 | 污污免费在线观看| 在线不卡视频| 久久精品午夜一区二区福利| 国产污视频在线播放| 亚洲精品美女在线观看| 天堂а√在线中文在线新版| 91麻豆免费看片| 国产三级日本三级在线播放| 国产欧美日韩影院| 国产精品女人网站| 国产精品扒开做爽爽爽的视频| 91.成人天堂一区| 动漫性做爰视频| 国产成人免费视| www.avtt| 免费一区二区三区视频导航| 国产精品第2页| 嫩草香蕉在线91一二三区| 在线成人小视频| 九九热精彩视频| 91在线观看免费视频| 久草在在线视频| 久久亚洲成人| 国产99在线播放| 欧美无毛视频| 久久精品99久久久香蕉| 亚洲精品久久久久久久久久 | 一级黄在线观看| 一区二区三区精品在线| 大地资源二中文在线影视观看| 久久久久久一区二区| 亚洲欧美日韩精品在线| 亚洲va欧美va人人爽成人影院| 久久久噜噜噜久久中文字免| 免费国产在线视频| 91精品一区二区三区在线观看| 精品少妇久久久| 国产日韩精品一区二区三区在线| 黄色片免费网址| 久久精品一区二区国产| 免费观看黄色大片| 亚洲人成网77777色在线播放| 国产精品色悠悠| 国产丝袜在线观看视频| 尤物九九久久国产精品的分类 | 日韩国产激情在线| 91精品国产乱码久久久久| 亚洲一区二区视频| 这里只有久久精品| 粉嫩一区二区三区在线看| 别急慢慢来1978如如2| 国内精品久久久久国产盗摄免费观看完整版 | 99久久综合99久久综合网站| 伊人影院综合在线| 国产亚洲一区在线| 九一免费在线观看| 精品国产乱码久久久久久果冻传媒| 91大片在线观看| 欧美黄色三级| 午夜免费日韩视频| v天堂福利视频在线观看| 亚洲色图15p| 农村少妇久久久久久久| 91精品啪在线观看国产60岁| 国产精品va无码一区二区三区| 亚洲黄色性网站| 网爆门在线观看| 久久嫩草精品久久久精品一| 蜜臀aⅴ国产精品久久久国产老师| 麻豆一区二区99久久久久| 男人操女人免费软件| 欧美福利视频| 亚洲国产精品影视| 日韩精品一区二区久久| 免费看国产精品一二区视频| 高清日韩中文字幕| 亚洲一区二区三区视频| 欧美成人高清视频在线观看| 国产成一区二区| 日韩性xxx| 欧美在线中文字幕| 国产伦子伦对白在线播放观看| 久久网福利资源网站| 95在线视频| 在线午夜精品自拍| 97电影在线观看| 中文字幕精品在线| 亚洲图片88| 中文字幕日韩有码| av亚洲在线| 中文字幕欧美日韩| 日本中文字幕伦在线观看| 亚洲视频在线观看视频| 精品资源在线看| 亚洲男子天堂网| 国产高清自拍视频在线观看| 亚洲区中文字幕| 99视频在线观看地址| 自拍偷拍亚洲欧美| 免费在线你懂的| 久久香蕉国产线看观看网| 91精选在线| 欧美国产日韩免费| 天堂亚洲精品| 国内精品久久久久久| 僵尸再翻生在线观看| 国产91精品不卡视频| 国产日韩电影| 国产精品成人av在线| 精品国产黄a∨片高清在线| 成人精品网站在线观看| 亚洲经典视频| 国产在线欧美日韩| 国产99久久久国产精品成人免费| 免费看成人午夜电影| 欧美日韩一区二区综合| 亚洲永久激情精品| 欧美一区精品| 91视频 -- 69xx| 日韩中文字幕区一区有砖一区| 少妇网站在线观看| 福利91精品一区二区三区| 风间由美一二三区av片| 国产精品毛片久久久久久久| h色网站在线观看| 亚洲18女电影在线观看| 无码人妻精品一区二| 欧美丰满美乳xxx高潮www| 国产精品久久777777换脸| 精品国产91九色蝌蚪| 国产小视频免费在线网址| 久久国产精品久久久| 蜜桃麻豆av在线| 91精品国产综合久久男男| 国产精品115| 日韩欧美精品一区二区| 欧美在线高清| 亚洲黄色a v| 国产98色在线|日韩| 韩国三级hd中文字幕| 亚洲另类色综合网站| 日韩电影在线观看一区二区| 91精品国产一区二区三区| 亚洲色图 校园春色| 丝袜美腿精品国产二区| 国产资源在线观看入口av| 国产精品自产拍在线观看| 成人偷拍自拍| 亚洲天堂电影网| 亚洲专区一区二区三区| 亚洲理论中文字幕| 国产目拍亚洲精品99久久精品| 欧美日韩一级在线观看| 欧美日韩中文另类| 天堂在线视频免费| 久久国产精彩视频| 91国拍精品国产粉嫩亚洲一区| 粉嫩av一区二区三区免费观看| 清纯唯美亚洲综合一区| 99精品人妻少妇一区二区| 国产很黄免费观看久久| 九九热免费在线| 欧美性极品少妇精品网站| www.久久成人| 久久精品99久久香蕉国产色戒| 婷婷六月国产精品久久不卡| 国产精品国产亚洲精品看不卡15| 色乱码一区二区三区网站| 97成人在线观看视频| www.爱久久.com| 免费一级肉体全黄毛片| 欧美视频一二三区| 麻豆国产在线播放| 57pao国产精品一区| 韩国精品福利一区二区三区| 免费的av在线| 韩国一区二区在线观看| 91精品国自产在线| 色综合中文字幕国产| 午夜福利理论片在线观看| 欧美激情视频免费观看| 精品国产三级| 黄频视频在线观看| 久久97超碰色| 中文字幕无码日韩专区免费 | 一区二区三区毛片| 99久久精品国产成人一区二区| 中文字幕一精品亚洲无线一区| 成人啊v在线| 欧美色图亚洲自拍| 久久av一区| 天天躁日日躁aaaa视频| 色欧美日韩亚洲| 啊v在线视频| 国产精品久久久久久久久免费看| 精品国产成人| 9久久婷婷国产综合精品性色| 国产亚洲视频系列| 中文字幕1区2区3区| 中文字幕亚洲欧美在线| 国产高清亚洲| 成人国产在线看| 不卡区在线中文字幕| 亚洲第一精品在线观看| 亚洲美女av电影| 精品肉辣文txt下载| 一区不卡视频| 国产精品自拍三区| 久久午夜无码鲁丝片午夜精品| 亚洲高清一区二| 美女日韩欧美| 亚洲国产精品毛片| 国产一区二区三区黄视频 | 成人免费看aa片| 91黄色在线观看| 国产淫片在线观看| 国产精品久久久久久久久婷婷| 在线视频精品| 受虐m奴xxx在线观看| 欧美裸体一区二区三区| 青青青国内视频在线观看软件| 国产欧美日韩在线播放| 久久狠狠婷婷| 亚洲AV成人无码精电影在线| 欧美成人午夜电影| 欧美magnet| 黄色免费高清视频| 91色婷婷久久久久合中文| 亚洲天堂avav| 久久久久久国产精品三级玉女聊斋| 天堂综合网久久| 国产精品久久久久久久99| 午夜精品一区在线观看| аⅴ资源新版在线天堂| 不卡日韩av| 蜜桃在线一区二区三区| 久久无码精品丰满人妻| 伊人伊成久久人综合网小说| 秋霞影院一区| 日本va中文字幕| 玉米视频成人免费看| 国产永久免费高清在线观看视频| 91热精品视频| 每日更新成人在线视频| 欧美人妻精品一区二区三区| 亚洲欧美福利视频| 日韩中文一区二区| 一路向西2在线观看| 精品久久久久久久久久久久| 国产在线观看a|