日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang底层深入_带有Golang的GraphQL:从基础到高级的深入研究

發布時間:2023/11/29 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang底层深入_带有Golang的GraphQL:从基础到高级的深入研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

golang底層深入

by Ridham Tarpara

由里德姆·塔帕拉(Ridham Tarpara)

帶有Golang的GraphQL:從基礎到高級的深入研究 (GraphQL with Golang: A Deep Dive From Basics To Advanced)

GraphQL has become a buzzword over the last few years after Facebook made it open-source. I have tried GraphQL with the Node.js, and I agree with all the buzz about the advantages and simplicity of GraphQL.

在Facebook開源之后的最近幾年里,GraphQL已經成為流行語。 我已經使用Node.js嘗試了GraphQL,并且我對GraphQL的優點和簡單性一事都表示贊同。

So what is GraphQL? This is what the official GraphQL definition says:

那么,GraphQL是什么? 官方的GraphQL定義是這樣的:

GraphQL is a query language for APIs and runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.GraphQL是用于API和運行時的查詢語言,用于使用現有數據來完成這些查詢。 GraphQL為您的API中的數據提供完整且易于理解的描述,使客戶能夠準確地詢問他們所需的內容,僅此而已,使隨著時間的推移更易于開發API并啟用強大的開發人員工具。

I recently switched to Golang for a new project I’m working on (from Node.js) and I decided to try GraphQL with it. There are not many library options with Golang but I have tried it with Thunder, graphql, graphql-go, and gqlgen. And I have to say that gqlgen is winning among all the libraries I have tried.

我最近切換到Golang從事我正在研究的新項目(來自Node.js),我決定嘗試使用GraphQL。 Golang的庫選項不多,但我已使用Thunder , graphql , graphql-go和gqlgen對其進行了嘗試 。 我不得不說, gqlgen在我嘗試過的所有庫中勝出。

gqlgen is still in beta with latest version 0.7.2 at the time of writing this article, and it’s rapidly evolving. You can find their road-map here. And now 99designs is officially sponsoring them, so we will see even better development speed for this awesome open source project. vektah and neelance are major contributors, and neelance also wrote graphql-go.

在撰寫本文時, gqlgen仍處于beta版,最新版本為0.7.2 ,并且它正在Swift發展。 您可以在此處找到他們的路線圖。 現在99designs正式贊助了它們,因此我們將為這個很棒的開源項目看到更快的開發速度。 vektah和neelance是主要貢獻者, neelance還寫了graphql-go 。

So let’s dive into the library semantics assuming you have basic GraphQL knowledge.

因此,假設您具有基本的GraphQL知識,讓我們深入研究庫語義。

強調 (Highlights)

As their headline states,

作為他們的標題,

This is a library for quickly creating strictly typed GraphQL servers in Golang.這是一個用于在Golang中快速創建嚴格類型的GraphQL服務器的庫。

I think this is the most promising thing about the library: you will never see map[string]interface{} here, as it uses a strictly typed approach.

我認為這是庫中最有前途的事情:在這里您永遠不會看到map[string]interface{} ,因為它使用嚴格類型化的方法。

Apart from that, it uses a Schema first Approach: so you define your API using the graphql Schema Definition Language. This has its own powerful code generation tools which will auto-generate all of your GraphQL code and you will just need to implement the core logic of that interface method.

除此之外,它使用Schema first方法 :因此,您可以使用graphql Schema Definition Language定義API。 它具有自己強大的代碼生成工具,可以自動生成所有GraphQL代碼,您只需要實現該接口方法的核心邏輯即可。

I have divided this article into two phases:

我將本文分為兩個階段:

  • The basics: Configuration, Mutations, Queries, and Subscription

    基礎知識:配置,突變,查詢和訂閱
  • The advanced: Authentication, Dataloaders, and Query Complexity

    高級:身份驗證,數據加載器和查詢復雜性

階段1:基礎知識-配置,變異,查詢和訂閱 (Phase 1: The Basics - Configuration, Mutations, Queries, and Subscriptions)

We will use a video publishing site as an example in which a user can publish a video, add screenshots, add a review, and get videos and related videos.

我們將以視頻發布網站為例,用戶可以在其中發布視頻,添加屏幕截圖,添加評論以及獲取視頻和相關視頻。

mkdir -p $GOPATH/src/github.com/ridhamtarpara/go-graphql-demo/

Create the following schema in the project root:

在項目根目錄中創建以下架構:

Here we have defined our basic models and one mutation to publish new videos, and one query to get all videos. You can read more about the graphql schema here. We have also defined one custom type (scalar), as by default graphql has only 5 scalar types that include Int, Float, String, Boolean and ID.

在這里,我們定義了基本模型,定義了一種版本來發布新視頻,并定義了一種查詢來獲取所有視頻。 您可以在此處閱讀有關graphql 模式的更多信息。 我們還定義了一種自定義類型(標量),因為默認情況下graphql只有5種標量類型 ,包括Int,Float,String,Boolean和ID。

So if you want to use custom type, then you can define a custom scalar in schema.graphql (like we have defined Timestamp) and provide its definition in code. In gqlgen, you need to provide marshal and unmarshal methods for all custom scalars and map them to gqlgen.yml.

因此,如果要使用自定義類型,則可以在schema.graphql定義自定義標量(就像我們已經定義了Timestamp ),并在代碼中提供其定義。 在gqlgen中,您需要為所有自定義標量提供編組和解編方法,并將它們映射到gqlgen.yml 。

Another major change in gqlgen in the last version is that they have removed the dependency on compiled binaries. So add the following file to your project under scripts/gqlgen.go.

最新版本中gqlgen的另一個主要變化是,它們刪除了對已編譯二進制文件的依賴。 因此,將以下文件添加到腳本/gqlgen.go下的項目中。

and initialize dep with:

并使用以下命令初始化dep:

dep init

Now it’s time to take advantage of the library’s codegen feature which generates all the boring (but interesting for a few) skeleton code.

現在是時候利用該庫的codegen功能,該功能生成所有無聊的(但有一些有趣的)骨架代碼。

go run scripts/gqlgen.go init

which will create the following files:

這將創建以下文件:

gqlgen.yml — Config file to control code generation.generated.go — The generated code which you might not want to see.models_gen.go — All the models for input and type of your provided schema.resolver.go — You need to write your implementations.server/server.go — entry point with an http.Handler to start the GraphQL server.

gqlgen.yml —用于控制代碼生成的配置文件。 created.go —您可能不想看到的生成的代碼。 models_gen.go —用于提供的模式的輸入和類型的所有模型。 resolver.go-您需要編寫實現。 server / server.go —帶有http.Handler的入口點,用于啟動GraphQL服務器。

Let’s have a look at one of the generated models of the Video type:

讓我們看一下Video類型的生成模型之一:

Here, as you can see, ID is defined as a string and CreatedAt is also a string. Other related models are mapped accordingly, but in the real world you don’t want this — if you are using any SQL data type you want your ID field as int or int64, depending on your database.

如您所見,此處ID定義為字符串,CreatedAt也是字符串。 其他相關的模型也進行了相應的映射,但是在現實世界中,您不需要這樣做-如果您使用任何SQL數據類型,則希望ID字段為int或int64,具體取決于數據庫。

For example I am using PostgreSQL for demo so of course I want ID as an int and CreatedAt as a time.Time. So we need to define our own model and instruct gqlgen to use our model instead of generating a new one.

例如,我正在使用PostgreSQL進行演示,因此我當然希望ID為int且CreatedAt為time.Time 。 因此,我們需要定義自己的模型,并指示gqlgen使用我們的模型,而不是生成新模型。

and update gqlgen to use these models like this:

并更新gqlgen以使用以下模型:

So, the focal point is the custom definitions for ID and Timestamp with the marshal and unmarshal methods and their mapping in a gqlgen.yml file. Now when the user provides a string as ID, UnmarshalID will convert a string into an int. While sending the response, MarshalID will convert int to string. The same goes for Timestamp or any other custom scalar you define.

因此,重點是具有marshal和unmarshal方法的ID和Timestamp的自定義定義,以及它們在gqlgen.yml文件中的映射。 現在,當用戶提供字符串作為ID時,UnmarshalID會將字符串轉換為int。 發送響應時,MarshalID會將int轉換為字符串。 時間戳或您定義的任何其他自定義標量也是如此。

Now it’s time to implement real logic. Open resolver.go and provide the definition to mutation and queries. The stubs are already auto-generated with a not implemented panic statement so let’s override that.

現在該實現真正的邏輯了。 打開resolver.go并提供突變和查詢的定義。 存根已經通過未實現的panic語句自動生成,因此我們將其覆蓋。

and hit the mutation:

并擊中突變:

Ohh it worked….. but wait, why is my user empty ?? So here there is a similar concept like lazy and eager loading. As graphQL is extensible, you need to define which fields you want to populate eagerly and which ones lazily.

哦,行得通……..但是,為什么我的用戶為空? 因此,這里有類似的概念,例如延遲加載和渴望加載。 由于graphQL是可擴展的,因此您需要定義要急切填充的字段和懶散地填充的字段。

I have created this golden rule for my organization team working with gqlgen:

我為與gqlgen合作的組織團隊創建了這一黃金法則:

Don’t include the fields in a model which you want to load only when requested by the client.

不要僅在客戶要求時才在要加載的模型中包括字段。

For our use-case, I want to load Related Videos (and even users) only if a client asks for those fields. But as we have included those fields in the models, gqlgen will assume that you will provide those values while resolving video — so currently we are getting an empty struct.

對于我們的用例,僅當客戶要求這些字段時,我才想加載相關視頻(甚至用戶)。 但是,由于我們已將這些字段包括在模型中,因此gqlgen會假設您在解析視頻時會提供這些值-因此當前我們得到的是一個空結構。

Sometimes you need a certain type of data every time, so you don’t want to load it with another query. Rather you can use something like SQL joins to improve performance. For one use-case (not included in the article), I needed video metadata every time with the video which is stored in a different place. So if I loaded it when requested, I would need another query. But as I knew my requirements (that I need it everywhere on the client side), I preferred it to load eagerly to improve the performance.

有時您每次都需要某種類型的數據,因此您不想使用其他查詢來加載它。 而是可以使用諸如SQL連接之類的方法來提高性能。 對于一個用例(本文未包含),每次將視頻存儲在不同位置時,我都需要視頻元數據。 因此,如果我在請求時加載了它,則需要另一個查詢。 但是,由于我知道自己的要求(在客戶端的任何地方都需要它),所以我希望它能夠熱切地加載以提高性能。

So let’s rewrite the model and regenerate the gqlgen code. For the sake of simplicity, we will only define methods for the user.

因此,讓我們重寫模型并重新生成gqlgen代碼。 為了簡單起見,我們將只為用戶定義方法。

So we have added UserID and removed User struct and regenerated the code:

因此,我們添加了UserID并刪除了User結構并重新生成了代碼:

go run scripts/gqlgen.go -v

This will generate the following interface methods to resolve the undefined structs and you need to define those in your resolver:

這將生成以下接口方法來解析未定義的結構,您需要在解析器中定義它們:

And here is our definition:

這是我們的定義:

Now the result should look something like this:

現在結果應如下所示:

So this covers the very basics of graphql and should get you started. Try a few things with graphql and the power of Golang! But before that, let’s have a look at subscription which should be included in the scope of this article.

因此,這涵蓋了graphql的基礎知識,應該可以幫助您入門。 嘗試使用graphql和Golang的強大功能! 但是在此之前,讓我們看一下應該包含在本文范圍內的訂閱。

訂閱內容 (Subscriptions)

Graphql provides subscription as an operation type which allows you to subscribe to real tile data in GraphQL. gqlgen provides web socket-based real-time subscription events.

Graphql提供訂閱作為一種操作類型,使您可以訂閱GraphQL中的實際切片數據。 gqlgen提供基于Web套接字的實時訂閱事件。

You need to define your subscription in the schema.graphql file. Here we are subscribing to the video publishing event.

您需要在schema.graphql文件中定義您的訂閱。 在這里,我們正在訂閱視頻發布活動。

Regenerate the code by running: go run scripts/gqlgen.go -v.

通過運行以下命令來重新生成代碼: go run scripts/gqlgen.go -v 。

As explained earlier, it will make one interface in generated.go which you need to implement in your resolver. In our case, it looks like this:

如前所述,它將在generate.go中創建一個接口,您需要在解析器中實現該接口。 在我們的例子中,它看起來像這樣:

Now, you need to emit events when a new video is created. As you can see on line 23 we have done that.

現在,您需要在創建新視頻時發出事件。 如您在第23行所看到的,我們已經做到了。

And it’s time to test the subscription:

現在可以測試訂閱了:

GraphQL comes with certain advantages, but everything that glitters is not gold. You need to take care of a few things like authorizations, query complexity, caching, N+1 query problem, rate limiting, and a few more issues — otherwise it will put you in performance jeopardy.

GraphQL具有某些優勢,但所有閃閃發光的東西都不是金子。 您需要注意一些事情,例如授權,查詢復雜性,緩存,N + 1查詢問題,速率限制以及其他一些問題,否則將使您陷入性能危機。

階段2:高級-身份驗證,數據加載器和查詢復雜性 (Phase 2: The advanced - Authentication, Dataloaders, and Query Complexity)

Every time I read a tutorial like this, I feel like I know everything I need to know and can get my all problems solved.

每次閱讀這樣的教程時,我都會感覺自己知道需要知道的一切,并且可以解決所有問題。

But when I start working on things on my own, I usually end up getting an internal server error or never-ending requests or dead ends and I have to dig deep into that to carve my way out. Hopefully we can help prevent that here.

但是,當我自己開始工作時,通常會遇到內部服務器錯誤或永無休止的請求或死胡同,而我必須深入研究該問題以找出出路。 希望我們可以在這里幫助防止這種情況。

Let’s take a look at a few advanced concepts starting with basic authentication.

讓我們看一些從基本身份驗證開始的高級概念。

認證方式 (Authentication)

In a REST API, you have a sort of authentication system and some out of the box authorizations on particular endpoints. But in GraphQL, only one endpoint is exposed so you can achieve this with schema directives.You need to edit your schema.graphql as follows:

在REST API中,您具有某種身份驗證系統,并且在特定端點上具有一些現成的授權。 但是在GraphQL中,僅公開了一個端點,因此您可以使用架構指令來實現此目的。您需要按如下方式編輯schema.graphql:

We have created an isAuthenticated directive and now we have applied that directive to createVideo subscription. After you regenerate code you need to give a definition of the directive. Currently, directives are implemented as struct methods instead of the interface so we have to give a definition.I have updated the generated code of server.go and created a method to return graphql config for server.go as follows:

我們已經創建了一個isAuthenticated指令,現在已經將該指令應用于createVideo訂閱。 重新生成代碼后,需要提供指令的定義。 當前,指令是作為struct方法而不是接口實現的,因此我們必須給出一個定義。我已經更新了server.go的生成代碼,并創建了一種方法來返回server.go的graphql config,如下所示:

We have read the userId from the context. Looks strange right? How was userId inserted in the context and why in context? Ok, so gqlgen only provides you the request contexts at the implementation level, so you can not read any of the HTTP request data like headers or cookies in graphql resolvers or directives. Therefore, you need to add your middleware and fetch those data and put the data in your context.

我們已經從上下文中讀取了userId。 看起來很奇怪吧? 如何將userId插入上下文中,為什么要插入上下文中? 好的,因此gqlgen僅在實現級別為您提供請求上下文,因此您無法讀取任何HTTP請求數據,例如graphql解析器或指令中的標頭或cookie。 因此,您需要添加中間件并獲取這些數據并將數據放入您的上下文中。

So we need to define auth middleware to fetch auth data from the request and validate.

因此,我們需要定義身份驗證中間件,以從請求中獲取身份驗證數據并進行驗證。

I haven’t defined any logic there, but instead I passed the userId as authorization for demo purposes. Then chain this middleware in server.go along with the new config loading method.

我在那里沒有定義任何邏輯,但是我出于演示目的將userId作為授權傳遞。 然后將此中間件與新的配置加載方法鏈接到server.go 。

Now, the directive definition makes sense. Don’t handle unauthorized users in your middleware as it will be handled by your directive.

現在,指令定義變得有意義了。 不要處理中間件中未經授權的用戶,因為它將由您的指令處理。

Demo time:

演示時間:

You can even pass arguments in the schema directives like this:

您甚至可以在模式指令中傳遞參數,如下所示:

directive @hasRole(role: Role!) on FIELD_DEFINITIONenum Role { ADMIN USER }

數據加載器 (Dataloaders)

This all looks fancy, doesn’t it? You are loading data when needed. Clients have control of the data, there is no under-fetching and no over-fetching. But everything comes with a cost.

這一切看起來都不錯,不是嗎? 您將在需要時加載數據。 客戶端可以控制數據,不會出現數據提取不足和過度提取的情況。 但是,一切都是有代價的。

So what’s the cost here? Let’s take a look at the logs while fetching all the videos. We have 8 video entries and there are 5 users.

那這里的費用是多少? 在獲取所有視頻時,讓我們看一下日志。 我們有8個視頻條目,有5個用戶。

query{ Videos(limit: 10){ name user{ name } }}Query: Videos : SELECT id, name, description, url, created_at, user_id FROM videos ORDER BY created_at desc limit $1 offset $2Resolver: User : SELECT id, name, email FROM users where id = $1Resolver: User : SELECT id, name, email FROM users where id = $1Resolver: User : SELECT id, name, email FROM users where id = $1Resolver: User : SELECT id, name, email FROM users where id = $1Resolver: User : SELECT id, name, email FROM users where id = $1Resolver: User : SELECT id, name, email FROM users where id = $1Resolver: User : SELECT id, name, email FROM users where id = $1Resolver: User : SELECT id, name, email FROM users where id = $1

Why 9 queries (1 videos table and 8 users table)? It looks horrible. I was just about to have a heart attack when I thought about replacing our current REST API servers with this…but dataloaders came as a complete cure for it!

為什么要查詢9個(1個視頻表和8個用戶表)? 看起來太恐怖了。 當我想到用此替換當前的REST API服務器時,我正要心臟病發作……但是數據加載器可以完全治愈它!

This is known as the N+1 problem, There will be one query to get all the data and for each data (N) there will be another database query.

這稱為N + 1問題,將有一個查詢來獲取所有數據,對于每個數據(N),將有另一個數據庫查詢。

This is a very serious issue in terms of performance and resources: although these queries are parallel, they will use your resources up.

就性能和資源而言,這是一個非常嚴重的問題:盡管這些查詢是并行的,但它們會耗盡您的資源。

We will use the dataloaden library from the author of gqlgen. It is a Go- generated library. We will generate the dataloader for the user first.

我們將使用gqlgen的作者的dataloaden庫。 這是一個Go生成的庫。 我們將首先為用戶生成數據加載器。

go get github.com/vektah/dataloadendataloaden github.com/ridhamtarpara/go-graphql-demo/api.User

This will generate a file userloader_gen.go which has methods like Fetch, LoadAll, and Prime.

這將生成一個文件userloader_gen.go ,該文件具有Fetch, userloader_gen.go和Prime等方法。

Now, we need to define the Fetch method to get the result in bulk.

現在,我們需要定義Fetch方法來批量獲取結果。

Here, we are waiting for 1ms for a user to load queries and we have kept a maximum batch of 100 queries. So now, instead of firing a query for each user, dataloader will wait for either 1 millisecond for 100 users before hitting the database. We need to change our user resolver logic to use dataloader instead of the previous query logic.

在這里,我們等待用戶加載查詢的時間為1毫秒,并且我們最多保留了100個查詢。 因此,現在,數據加載器將不再為每個用戶觸發查詢,而是會在100個用戶之前等待1毫秒,然后再命中數據庫。 我們需要更改用戶解析器邏輯以使用數據加載器,而不是先前的查詢邏輯。

After this, my logs look like this for similar data:

在此之后,我的日志如下所示:

Query: Videos : SELECT id, name, description, url, created_at, user_id FROM videos ORDER BY created_at desc limit $1 offset $2Dataloader: User : SELECT id, name, email from users WHERE id IN ($1, $2, $3, $4, $5)

Now only two queries are fired, so everyone is happy. The interesting thing is that only five user keys are given to query even though 8 videos are there. So dataloader removed duplicate entries.

現在僅觸發兩個查詢,因此每個人都很高興。 有趣的是,即使有8個視頻,也只有五個用戶鍵可以查詢。 因此,數據加載器刪除了重復的條目。

查詢復雜度 (Query Complexity)

In GraphQL you are giving a powerful way for the client to fetch whatever they need, but this exposes you to the risk of denial of service attacks.

在GraphQL中,您為客戶端提供了一種獲取所需內容的強大方法,但這使您面臨拒絕服務攻擊的風險。

Let’s understand this through an example which we’ve been referring to for this whole article.

讓我們通過一個在整篇文章中一直引用的示例來理解這一點。

Now we have a related field in video type which returns related videos. And each related video is of the graphql video type so they all have related videos too…and this goes on.

現在,我們在視頻類型中有一個相關字段,該字段返回相關視頻。 每個相關視頻都是graphql視頻類型,因此它們也都具有相關視頻……而且這種情況還在繼續。

Consider the following query to understand the severity of the situation:

考慮以下查詢以了解情況的嚴重性:

{ Videos(limit: 10, offset: 0){ name url related(limit: 10, offset: 0){ name url related(limit: 10, offset: 0){ name url related(limit: 100, offset: 0){ name url } } } }}

If I add one more subobject or increase the limit to 100, then it will be millions of videos loading in one call. Perhaps (or rather definitely) this will make your database and service unresponsive.

如果我再添加一個子對象或將限制增加到100,則一次調用將加載數百萬個視頻。 也許(或者絕對是肯定的)這會使您的數據庫和服務無響應。

gqlgen provides a way to define the maximum query complexity allowed in one call. You just need to add one line (Line 5 in the following snippet) in your graphql handler and define the maximum complexity (300 in our case).

gqlgen提供了一種定義一次調用中允許的最大查詢復雜度的方法。 您只需要在graphql處理程序中添加一行(以下代碼段中的第5行),然后定義最大復雜度(本例中為300)。

gqlgen assigns fix complexity weight for each field so it will consider struct, array, and string all as equals. So for this query, complexity will be 12. But we know that nested fields weigh too much, so we need to tell gqlgen to calculate accordingly (in simple terms, use multiplication instead of just sum).

gqlgen為每個字段分配固定復雜度權重,因此它將結構,數組和字符串都視為相等。 因此,對于該查詢,復雜度將為12。但是我們知道嵌套字段的權重太大,因此我們需要告訴gqlgen進行相應的計算(簡單來說,請使用乘法而不是求和)。

Just like directives, complexity is also defined as struct, so we have changed our config method accordingly.

就像指令一樣,復雜度也定義為struct,因此我們相應地更改了config方法。

I haven’t defined the related method logic and just returned the empty array. So related is empty in the output, but this should give you a clear idea about how to use the query complexity.

我還沒有定義相關的方法邏輯,只是返回了空數組。 因此,輸出中的related是空的,但這應該使您對如何使用查詢復雜度有一個清晰的了解。

最后說明 (Final Notes)

This code is on Github. You can play around with it, and if you have any questions or concerns let me know in the comment section.

這段代碼在Github上 。 您可以嘗試一下,如果有任何疑問或疑慮,請在評論部分告訴我。

Thanks for reading! A few (hopefully 50) claps? are always appreciated. I write about JavaScript, the Go Language, DevOps, and Computer Science. Follow me and share this article if you like it.

謝謝閱讀! 拍手(希望有50個)? 總是很感激。寫有關JavaScript,Go語言,DevOps和計算機科學的文章。 關注我,如果您喜歡它,請分享這篇文章。

Reach out to me on @Twitter @Linkedin. Visit www.ridham.me for more.

通過@ Twitter @ Linkedin與我聯系。 有關更多信息,請訪問www.ridham.me 。

翻譯自: https://www.freecodecamp.org/news/deep-dive-into-graphql-with-golang-d3e02a429ac3/

golang底層深入

總結

以上是生活随笔為你收集整理的golang底层深入_带有Golang的GraphQL:从基础到高级的深入研究的全部內容,希望文章能夠幫你解決所遇到的問題。

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

日韩中文字幕视频在线 | 99久久婷婷国产综合亚洲 | 五月综合 | 在线看片视频 | 中文字幕av免费在线观看 | 国产69精品久久久久久 | 六月婷婷网 | 成人午夜精品福利免费 | 免费观看黄 | 亚州天堂| 天天插日日操 | av网站免费在线 | 欧美一级视频免费 | 在线观看免费成人 | 一区二区三区四区五区在线视频 | 国产美女视频 | 黄色中文字幕在线 | 日韩高清精品一区二区 | 日韩色av色资源 | 狠狠综合久久 | 麻豆视频免费观看 | 四虎成人精品永久免费av | 中文字幕国产一区 | 国产精品黑丝在线观看 | 久久免费视频在线观看6 | 色视频网站免费观看 | 精品久久一区二区 | 国产精品小视频网站 | 97超视频免费观看 | 日韩r级电影在线观看 | 日韩中文字| 夜夜躁日日躁狠狠躁 | 免费av影视 | 丁香婷婷综合激情五月色 | 久草视频免费在线观看 | 人人爽人人看 | 99在线高清视频在线播放 | 午夜.dj高清免费观看视频 | 91看片一区二区三区 | 国产高清视频在线 | 偷拍区另类综合在线 | 91av大全 | 香蕉在线视频播放网站 | 中文字幕在线观看视频免费 | 亚洲视屏 | 国产精品久久久久久久免费 | 91视频链接 | 日本精品久久久一区二区三区 | 日韩毛片在线一区二区毛片 | 国产va饥渴难耐女保洁员在线观看 | 国内丰满少妇猛烈精品播 | 久久一区二区三区超碰国产精品 | 国产麻豆精品95视频 | 亚洲天堂精品视频 | 91粉色视频 | 五月天色丁香 | 天天干视频在线 | 国产成人精品一区二区三区免费 | 日韩1页 | av福利电影| 成年人在线免费看视频 | 久久免费成人网 | 丁香婷婷在线 | 国产精品久久久久亚洲影视 | 久久成人国产精品入口 | 在线天堂中文www视软件 | 五月开心网 | av黄色影院 | 二区精品视频 | 天天射天天射天天 | 特黄特黄的视频 | 午夜黄色一级片 | 九九热免费在线观看 | 欧美成a人片在线观看久 | 夜夜爽夜夜操 | 国产一二三区在线观看 | 99久久精品国产欧美主题曲 | 久久99视频精品 | 亚洲综合精品视频 | 久久视频6 | 亚洲欧洲精品在线 | 天堂网一区二区三区 | 69av在线播放 | 2023国产精品自产拍在线观看 | 久久久久久久久久久久国产精品 | 久久久久久综合网天天 | 欧美日韩亚洲在线 | 97在线精品视频 | www国产一区| 国产视频不卡 | 99久久婷婷国产精品综合 | 亚洲免费在线观看视频 | 五月婷激情| 97精品电影院 | 日韩色在线观看 | 亚洲乱码精品久久久久 | 久久综合免费 | 日本激情视频中文字幕 | 午夜精品一区二区三区可下载 | 手机看片中文字幕 | av电影免费看 | 午夜在线看片 | 欧美综合在线视频 | 精品国产一区二区三区四区在线观看 | 婷婷去俺也去六月色 | 天天色婷婷| 久久蜜臀一区二区三区av | 久久精品伊人 | 欧美伦理一区二区三区 | 日韩精品一区在线观看 | 免费国产亚洲视频 | 丁香国产视频 | 91视频免费国产 | 婷婷伊人综合亚洲综合网 | 91色在线观看 | 久久综合9988久久爱 | 久久久久久久久影院 | 亚洲最新在线视频 | 天天干天天想 | 夜夜夜| 操综合 | 久久影院午夜论 | 国产综合精品一区二区三区 | 久草在线免费电影 | 国产中文字幕三区 | 欧美久久久一区二区三区 | 久久99精品久久久久久久久久久久 | 日韩高清在线一区二区三区 | 九九视频网站 | 伊人五月天 | 亚洲精品视频在线播放 | 午夜精品导航 | 日本最大色倩网站www | 日本精品视频一区二区 | 五月天婷婷在线观看视频 | 综合国产视频 | 91九色性视频 | 久久天天草| 欧美日韩国产在线一区 | 玖玖国产精品视频 | 久99久在线视频 | 国产九色91| 丁香婷婷色综合亚洲电影 | 日韩免费在线视频 | 手机看片国产 | 国产视频在线观看一区 | 蜜桃视频成人在线观看 | 欧美成人999 | 在线日韩视频 | 亚洲视频高清 | 亚洲三级在线 | 天天操天天干天天爽 | 在线观看黄网站 | 激情五月婷婷网 | 国产精品久久99综合免费观看尤物 | 丁香九月婷婷综合 | 久久午夜色播影院免费高清 | 日韩精品视频免费专区在线播放 | 日韩激情av在线 | 久久久午夜视频 | 中文字幕在线观看完整版电影 | 国产一卡二卡四卡国 | 成人av视屏 | 中文字幕欧美日韩va免费视频 | 天天操天天操天天操天天操天天操天天操 | 91视频久久久久久 | 久久综合九色综合网站 | 久久99久久99精品中文字幕 | 999久久久久久 | 亚洲最大激情中文字幕 | 91免费看片黄 | 亚洲国产精品电影 | 麻豆成人小视频 | 亚洲永久av | 日韩av免费观看网站 | 亚洲欧美综合精品久久成人 | 欧美做受高潮1 | 免费观看一区二区三区视频 | 国产黄色大全 | 欧美福利视频一区 | 97超碰在线人人 | 成人av网址大全 | av电影免费在线播放 | 亚洲精品玖玖玖av在线看 | 日日爽夜夜操 | 成人午夜免费福利 | 国产精品观看在线亚洲人成网 | 免费看的黄色录像 | 国产美腿白丝袜足在线av | 在线观看av网站 | 国产精品麻豆欧美日韩ww | 在线高清一区 | 在线观看的a站 | 国产成人精品在线观看 | 日日操天天操夜夜操 | 国产一线天在线观看 | 国产精品大尺度 | 国产精品ssss在线亚洲 | 久久精品国产亚洲精品2020 | 亚洲成人av一区 | 奇米网8888 | 免费黄色在线网站 | 一区二区三区四区五区在线 | 免费久草视频 | 久草在线国产 | 狠狠五月天 | 一区二区三区在线观看 | 日韩中文字幕免费 | 婷婷伊人综合 | www.com.黄 | 久久艹国产视频 | 精品久久一 | 97精品欧美91久久久久久 | av免费网站 | 日本韩国精品一区二区在线观看 | 亚洲成熟女人毛片在线 | 五月综合婷 | 中文国产字幕在线观看 | 亚洲综合色激情五月 | 一区二区伦理电影 | 夜夜夜| 99久久精品国产一区二区三区 | 国产精品美女久久久久久免费 | www.日韩免费| 就色干综合 | 热久久国产 | 中文资源在线观看 | 在线看不卡av | 五月天丁香 | 91av视频在线免费观看 | 久久精品视频在线免费观看 | 国产伦理久久精品久久久久_ | 精品一区二区在线观看 | 久青草视频 | 成人在线视频免费看 | 欧美日韩不卡一区二区 | 亚洲国产剧情av | 九九久久婷婷 | 天天干天天搞天天射 | 欧美午夜理伦三级在线观看 | 欧美在线观看视频免费 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 黄色avwww| 亚洲爱av | 亚洲一区 影院 | 色综合久久久久综合 | 久久精品国产亚洲aⅴ | 在线观看免费高清视频大全追剧 | 在线观看aaa | 天天爽天天碰狠狠添 | 欧美一级xxxx | 午夜精品成人一区二区三区 | 园产精品久久久久久久7电影 | 亚洲 欧美 精品 | 国产精品一区二区久久久久 | www.天堂av | 91在线日韩 | 正在播放 久久 | 国产又粗又猛又黄又爽视频 | 国产五月婷| 国产999精品久久久久久 | 久久免费视频播放 | 国产精品日韩在线观看 | 国色天香第二季 | 人人澡人摸人人添学生av | 午夜精品久久久久久久久久久久 | 欧美另类色图 | 国产男女爽爽爽免费视频 | 久久系列| 久久激情综合 | 黄色99视频| 欧美一级片免费在线观看 | 久久久久国产一区二区 | 国产视频在线免费观看 | 中文字幕字幕中文 | 久久久久伦理电影 | 亚洲精品一区二区在线观看 | www.久久免费 | 黄色小网站免费看 | av黄色国产 | 娇妻呻吟一区二区三区 | 久久黄色精品视频 | 黄a在线看 | 国产视频一区在线免费观看 | 精选久久| 日韩精品免费一区二区三区 | 免费看黄色小说的网站 | 一级精品视频在线观看宜春院 | 麻豆视频一区二区 | 日本精品久久久一区二区三区 | 中文字幕在线观看资源 | 午夜久久视频 | 国产精品一码二码三码在线 | 久久视影 | 久二影院 | 国产精品欧美久久久久无广告 | 国产精品久久久久久久久久 | 精品视频在线免费 | 精品免费视频. | 狠狠干 狠狠操 | 成人免费在线观看电影 | 中文一二区 | 成 人 黄 色视频免费播放 | 中文字幕免费久久 | 96久久欧美麻豆网站 | 婷婷网五月天 | 91污视频在线观看 | 毛片随便看| 去干成人网 | 久久视频在线观看中文字幕 | 亚洲精品人人 | 久草精品视频 | 91毛片在线 | 日韩在线视频网 | 又长又大又黑又粗欧美 | 在线观看你懂的网站 | 国产亚洲一区二区在线观看 | 日本在线观看一区二区三区 | 国产在线精品一区二区不卡了 | 91亚洲精品久久久 | 91在线视频观看免费 | 2021国产精品 | 免费激情在线电影 | 中文字幕a在线 | 欧美在线free | 国产成人精品av在线观 | 日韩专区在线播放 | 日韩高清av | 99视频在线精品免费观看2 | 91成人国产 | 欧美日韩aaaa| 99久久久久久久久久 | 久久精品福利视频 | 成人小视频在线播放 | 9999在线观看 | 人人射人人爱 | 欧美日韩裸体免费视频 | 午夜在线免费视频 | 久久婷亚洲五月一区天天躁 | 成人免费在线视频观看 | 五月天,com | 免费成人av电影 | 国产精品国产三级国产不产一地 | 欧美日韩1区| 在线观看不卡视频 | 五月天激情视频 | 国产精品久久久久久久av电影 | 欧洲一区二区在线观看 | 欧美另类一二三四区 | 六月丁香在线视频 | 久久久91精品国产一区二区三区 | 欧美一区视频 | 免费高清男女打扑克视频 | 在线免费观看黄色小说 | av免费在线观看网站 | 中文字幕免费高清在线 | 在线观看日本韩国电影 | 四虎成人精品永久免费av | 看国产黄色片 | 91精品爽啪蜜夜国产在线播放 | 欧美日韩在线精品一区二区 | 欧美另类色图 | 九九视频这里只有精品 | 97超级碰碰碰视频在线观看 | 97久久久免费福利网址 | 精品久久久久久电影 | 五月婷婷视频在线观看 | 美女福利视频 | 精品久久久久久电影 | 96精品在线 | 日韩成人免费在线电影 | 中文在线字幕观看电影 | 久久精品国产久精国产 | japanesexxxxfreehd乱熟 | 激情网第四色 | 五月婷婷在线视频观看 | 青青河边草免费观看 | 狠狠狠狠狠狠狠狠干 | 久久久成人精品 | 热久久影视 | 国产精品成人在线观看 | 中文字幕91 | av在线播放中文字幕 | 超碰在线免费福利 | 免费精品国产va自在自线 | 天天色天天操综合网 | 精品国产乱码一区二 | 天天操天天谢 | 国产 欧美 在线 | 国产精品成人免费精品自在线观看 | av久久在线 | 91人人爽人人爽人人精88v | 亚州精品在线视频 | 在线影院 国内精品 | 久热免费在线观看 | 狠狠色丁香 | 天天射天天添 | 美女国产在线 | 欧美精品第一 | 日韩v在线 | 在线观看小视频 | 久久黄色片子 | 狠狠干 狠狠操 | 欧美福利片在线观看 | 亚洲精品午夜久久久 | 日韩精品一区二区三区免费视频观看 | 亚洲午夜精品久久久久久久久久久久 | 热九九精品 | 91人人澡 | 麻豆视频网址 | 日韩 精品 一区 国产 麻豆 | 亚洲精品激情 | 亚洲a在线观看 | 黄色小网站在线观看 | 亚洲日本一区二区在线 | 人人插人人做 | 日日爽夜夜操 | 最新真实国产在线视频 | 一区二区三区观看 | 狠狠色丁香婷婷综合基地 | 黄色免费在线视频 | 日本福利视频在线 | 开心激情五月婷婷 | 99国内精品久久久久久久 | 在线观看中文字幕视频 | 国产精品99蜜臀久久不卡二区 | 中文字幕美女免费在线 | 国产精品九九九九九 | 色精品视频 | 久久99精品波多结衣一区 | 国内精品在线一区 | 久久夜av| 天天做日日做天天爽视频免费 | 成人国产在线 | 在线观看一区二区精品 | 天天射天天舔天天干 | 超碰99在线 | 成人在线免费观看视视频 | 亚洲另类视频 | 久久精品中文视频 | 日韩久久一区 | www.99av| 亚洲成人黄 | 精品国产免费看 | 久久视频在线视频 | 91精品久久久久久综合乱菊 | 精品无人国产偷自产在线 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 欧美先锋影音 | 国产精品久久亚洲 | 天天干天天天 | 日日碰夜夜爽 | 五月激情久久 | 国产亚洲精品久久久久动 | av一级片| 久久精品香蕉视频 | 日韩成人在线免费观看 | 婷婷久久网 | 久久99久国产精品黄毛片入口 | 丁香视频在线观看 | 午夜精选视频 | 亚洲专区在线播放 | 亚洲 欧美 变态 国产 另类 | 日韩a级免费视频 | 91av手机在线 | 制服丝袜一区二区 | 日韩免费在线观看 | 国产精品99蜜臀久久不卡二区 | 91视频啪| 国产一区在线视频 | 久久成人国产精品一区二区 | 午夜精品久久久久久久99 | 视频 国产区 | 免费涩涩网站 | 日韩精品一区二区三区水蜜桃 | 色国产精品一区在线观看 | 亚洲一区精品人人爽人人躁 | 中文字幕黄色av | 激情久久伊人 | 综合天天色| a级国产毛片 | 亚洲日本欧美在线 | 久久免费资源 | 日韩精品1区2区 | 精品一二区 | 亚洲网久久 | 99久久日韩精品免费热麻豆美女 | 日韩色在线 | 日韩电影中文,亚洲精品乱码 | 丁香六月五月婷婷 | 最新日韩视频在线观看 | 一区二区中文字幕在线播放 | 激情五月看片 | 国产精品福利午夜在线观看 | 片网址| 精品久久久999 | 天天天天色综合 | 国产午夜三级一区二区三桃花影视 | av资源免费看 | 字幕网资源站中文字幕 | 91视频麻豆 | 香蕉视频国产在线观看 | 国产在线精品福利 | 欧美一区二区三区在线播放 | www.com.黄| 欧美a视频在线观看 | 亚洲精品国产高清 | 91禁在线观看 | 日韩成人免费在线 | 观看免费av | 午夜精品电影 | 97超碰在线久草超碰在线观看 | 中文免费在线观看 | 天堂av网址 | 天天插视频 | 婷婷av电影| 久久久久亚洲精品男人的天堂 | 久久精品在线免费观看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 在线免费av电影 | 久久久久成人精品免费播放动漫 | 久久久久久不卡 | 日韩av在线小说 | 免费精品视频在线 | 国产黄色大片免费看 | 99热官网 | av成人免费在线观看 | 久久久久成人免费 | 日韩中文在线电影 | 9797在线看片亚洲精品 | 色综合久 | 色天天中文 | 欧美日韩激情视频8区 | 人人草人 | 91香蕉视频好色先生 | 欧美在线久久 | 亚洲区精品视频 | 91精品国产综合久久婷婷香蕉 | 在线看一区二区 | 色综合久久久久久中文网 | 亚洲午夜久久久久久久久 | 国产剧情一区二区 | 久久久久久亚洲精品 | 欧美综合国产 | 成人黄色大片 | 色视频在线观看免费 | 在线观看免费视频你懂的 | 久久夜av | 91成人黄色 | 99r精品视频在线观看 | av久久在线 | 亚洲国产中文字幕在线观看 | 99婷婷狠狠成为人免费视频 | 国产高清在线免费观看 | 国产一区免费在线 | 91福利国产在线观看 | 91视视频在线直接观看在线看网页在线看 | 久久看片 | 久久一二区 | 国产精品一区二区三区电影 | 日韩欧美精品在线观看 | 亚洲精品乱码久久久久久写真 | 亚洲精品资源在线 | 国产在线国产 | www.亚洲视频| 久久精精品视频 | 99精品国产一区二区三区麻豆 | 成年人网站免费观看 | 日韩精品欧美专区 | 伊人天堂久久 | 国产五月天婷婷 | 天天草天天操 | 91av官网| 亚洲视频电影在线 | 91麻豆传媒 | 日韩免费观看视频 | 久久人人97超碰国产公开结果 | 日批视频在线观看免费 | 色97在线| 午夜精品久久久久久久爽 | 国产精品第2页 | 欧美一级视频免费 | 国产精品99精品久久免费 | 在线免费观看麻豆视频 | 亚洲欧美日韩不卡 | 日本中文字幕网址 | 黄色软件视频大全免费下载 | 麻豆成人网 | 在线观看91久久久久久 | 人人爽人人av | 91热| 精品国产网址 | 天天舔夜夜操 | 97成人精品视频在线播放 | 91视频下载 | 黄色h在线观看 | 狠日日| 97视频在线观看成人 | www免费网站在线观看 | 在线观看视频黄 | 国产精品videossex国产高清 | 久草视频免费在线播放 | 国产综合精品一区二区三区 | 成人国产精品一区二区 | 韩国av免费在线观看 | 日韩精品在线视频免费观看 | 欧美激情精品久久久久久免费印度 | 日韩视频免费在线 | 婷婷在线五月 | 国产麻豆剧果冻传媒视频播放量 | 开心激情综合网 | 久久影院亚洲 | 国产麻豆精品免费视频 | 久久综合久久综合九色 | 久久久国产精华液 | 日本在线观看黄色 | 国内精品小视频 | 成人手机在线视频 | 人人插人人插 | 热久久影视 | а中文在线天堂 | 久久久免费av| 亚洲欧美国内爽妇网 | 精品视频久久久久久 | 精品亚洲一区二区 | 欧美激情第一区 | 精品国产乱码久久久久久天美 | 国产精品久久久久久电影 | 国产人在线成免费视频 | 国产精品久久99综合免费观看尤物 | 欧美日韩网址 | 国产精品久久久久久久妇 | 国产精品嫩草影院123 | 国产精品美女久久久 | 黄在线 | 免费观看一区二区三区视频 | 91久久久久久国产精品 | 国产黄色片久久 | 亚洲国产精品va在线看 | 99在线国产| 黄色免费看片网站 | 嫩草av在线 | 久久久久久久久影视 | 麻豆国产精品一区二区三区 | 国产在线一区二区 | 久久久久久久久久电影 | 久久精品一区二区 | 色欲综合视频天天天 | 国内精品久久久久久久久久清纯 | 91传媒在线看 | 久久这里只有精品视频99 | 精品久久福利 | 96香蕉视频| 亚洲视频,欧洲视频 | 97色在线视频| 中文理论片 | 99久久精品无码一区二区毛片 | 在线看小早川怜子av | av在线超碰 | 人人澡人人爽欧一区 | 久久99精品久久久久久久久久久久 | 久久高清国产 | 久久久国产网站 | 天天人人| 中文区中文字幕免费看 | 日韩美女久久 | 国产高清免费视频 | 久久久私人影院 | 少妇搡bbbb搡bbb搡aa | 精品久久免费 | 久久久久国产精品www | 欧美淫aaa免费观看 日韩激情免费视频 | 夜色资源网 | 视频在线观看亚洲 | 欧美乱淫视频 | 精品一区二区电影 | 99在线免费观看 | 少妇bbb搡bbbb搡bbbb′ | 午夜在线免费观看视频 | 日日草天天干 | 亚洲 中文 在线 精品 | 免费看国产a | 一区二区三区中文字幕在线观看 | 国产日产精品一区二区三区四区 | 国产精品久久久久久久久久直播 | 久久精品久久久久电影 | 欧美激情在线看 | 欧美日韩中文国产 | 日韩欧美在线观看一区二区 | 欧美日韩aa | 亚洲人成精品久久久久 | 久久久婷 | 中文字幕精品三区 | 成全免费观看视频 | 国产一二区视频 | 日韩在线视频免费播放 | 色综合久久久久网 | 亚洲欧美偷拍另类 | 国产中文字幕亚洲 | 少妇bbbb| 狠狠色丁香久久婷婷综合丁香 | 精品99免费视频 | 日韩av一区二区三区在线观看 | 91人人澡人人爽人人精品 | 日韩二区在线 | 国产护士在线 | 综合网天天射 | 最新中文字幕在线播放 | 国产中文字幕在线免费观看 | 四虎www| 操操爽| 国产大陆亚洲精品国产 | 久草在线一免费新视频 | 免费特级黄毛片 | 中文字幕久久亚洲 | 日韩欧美国产激情在线播放 | 久久国产精品久久精品 | 国产一区二区精品久久91 | 国产精品国产三级国产aⅴ无密码 | 免费在线91| 91 中文字幕 | 日本久久成人中文字幕电影 | 婷婷色综合网 | 97精品一区| 国产精品亚洲片在线播放 | 激情网五月 | 激情视频国产 | 久久狠狠一本精品综合网 | 成人影片在线免费观看 | 久久综合久久综合这里只有精品 | 永久免费精品视频网站 | 可以免费观看的av片 | 国产午夜三级一区二区三 | 国产美女精彩久久 | 91亚洲精品乱码久久久久久蜜桃 | 国产精品久久久久久久久久久久久 | 国产精品入口久久 | 天天av资源 | 欧美一级特黄高清视频 | 九九久久视频 | 国产日韩欧美网站 | 热久久99这里有精品 | 在线观看亚洲精品视频 | 国产精品国产三级国产aⅴ入口 | 久久久久久久久久久久影院 | 中文字幕一区二区三区精华液 | 婷婷福利影院 | 在线观看黄色 | 国产最新在线观看 | 成人av一级片| 国产a级片免费观看 | 东方av在线免费观看 | 久久久国产影院 | 国产区第一页 | 九九在线国产视频 | 欧美激情视频在线免费观看 | 777xxx欧美| 91久久国产精品 | 久久一区二区三区超碰国产精品 | 999久久久久久久久 69av视频在线观看 | 亚洲三级性片 | 日韩a在线 | 国产一区二区三区高清播放 | 久久成人欧美 | 亚洲精品天天 | 欧美另类xxx | 综合久久2023 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产视频观看 | 97超碰国产在线 | 又黄又刺激又爽的视频 | 特级西西444www大精品视频免费看 | 国产在线观看一区 | 国语久久| 成年人黄色av| 国产主播大尺度精品福利免费 | 一本一本久久a久久精品牛牛影视 | 久久精品综合 | 在线色吧 | 五月天久久久 | 午夜精品一区二区三区免费视频 | 国产中文在线视频 | 福利一区在线视频 | 91在线蜜桃臀 | 免费av片在线 | 91成人免费看片 | 超碰九九 | 最近中文字幕免费av | se婷婷| 亚洲午夜av | 亚洲天天草 | 国产伦理一区二区三区 | 亚洲精品国偷自产在线99热 | 国产伦精品一区二区三区高清 | 超碰人人国产 | 99这里只有精品视频 | 91精品在线看 | 成人影视免费 | 国产精品 9999 | 久草久热 | 国产成人精品国内自产拍免费看 | 色资源网在线观看 | 81精品国产乱码久久久久久 | 香蕉视频最新网址 | 天天操天天射天天操 | 操碰av | 91九色精品女同系列 | 国产精品资源 | 亚洲专区路线二 | 国产精品99久久久久久久久久久久 | 国产成人一区二区三区 | 日韩视频1 | 久久国产精品一区二区三区 | 久久久久久久久久免费 | 久久精品99北条麻妃 | 免费观看特级毛片 | 成人性生交大片免费看中文网站 | 中文字幕二区在线观看 | 色噜噜色噜噜 | 91免费观看网站 | 日韩一区视频在线 | 丁香六月久久综合狠狠色 | 婷婷中文字幕在线观看 | 99热这里有 | 日韩视频在线不卡 | 国产精品乱看 | 久久人人爽爽人人爽人人片av | 午夜精品999 | 婷婷播播网 | 亚洲国产高清在线 | 手机看国产毛片 | 国产成人免费 | 天天色天天爱天天射综合 | 久久国产精品精品国产色婷婷 | 日本黄色免费播放 | 亚洲无吗天堂 | 日韩免费区 | 国产成人精品一区二区三区在线观看 | 久久公开免费视频 | 欧美国产不卡 | 天天躁日日躁狠狠躁av麻豆 | 国产 日韩 在线 亚洲 字幕 中文 | 天天操月月操 | 一级片黄色片网站 | 九九亚洲精品 | 色视频在线看 | 欧洲精品久久久久毛片完整版 | 国产91大片 | 五月天激情开心 | 久久在线免费视频 | 波多野结衣电影一区 | 亚洲欧美偷拍另类 | 久久精品亚洲一区二区三区观看模式 | 久久精品网址 | 亚洲精品字幕在线观看 | 99在线观看精品 | 亚洲爱爱视频 | 天天操夜操 | 久久精品国产一区二区电影 | 成人一级免费电影 | 国产精品入口传媒 | 91成人久久 | 中文字幕在线视频精品 | 五月天电影免费在线观看一区 | 国产专区精品 | 91最新视频在线观看 | 韩国一区二区av | 18性欧美xxxⅹ性满足 | 就要干b | 五月综合 | 深夜福利视频在线观看 | 亚洲精品视频在线观看视频 | 国产成人一区二区精品非洲 | 特级黄色片免费看 | 日韩一级成人av | 精品一区免费 | 国产精品theporn | 超级碰视频 | 91看片看淫黄大片 | 精品一区二区三区久久久 | 9i看片成人免费看片 | 香蕉视频最新网址 | 天天插天天色 | 青青河边草免费视频 | 夜夜操网| 国产专区日韩专区 | 久久在线观看 | 午夜成人免费电影 | 日韩免费在线播放 | 免费www视频| 国产aaa免费视频 | 91桃色在线免费观看 | 亚洲视频在线看 | 人人插人人做 | 亚洲视频每日更新 | 夜夜躁狠狠躁日日躁视频黑人 | 在线影院av | 成人动漫一区二区 | 欧美日韩亚洲在线观看 | 久久久久久久久久电影 | 久久久一本精品99久久精品 | 日韩中文字幕在线看 | 天天插狠狠插 | 色射爱 | 久久精品久久精品久久精品 | 五月婷婷综合网 | 日本中文字幕电影在线免费观看 | 91高清视频在线 | 婷婷去俺也去六月色 | 久久综合九色综合久久久精品综合 | 免费久久99精品国产婷婷六月 | 中文字幕在线播放一区二区 | 黄色在线观看污 | 免费在线色 | 人人超碰97 | 亚洲经典视频 | 亚洲精品综合一二三区在线观看 | 天天做天天爱天天爽综合网 | 麻豆免费在线播放 | 国产一区二区三区四区在线 | 婷婷久久网站 | bbb搡bbb爽爽爽 | 亚洲一级黄色大片 | 天天躁日日躁狠狠躁av麻豆 | 一区二区三区免费 | 亚洲精品乱码 | 97在线视频免费观看 | 久久这里只有精品23 | 99久久综合狠狠综合久久 | 国产精品mm | 福利一区二区 | 欧美日韩一区二区视频在线观看 | 在线亚洲天堂网 | 日韩欧美网址 | 久草视频网| 亚洲一二三久久 | 国产精品9999久久久久仙踪林 | 久久成熟 | 亚洲精品大全 | av福利在线看 | 手机av在线免费观看 | 日本 在线 视频 中文 有码 | 免费在线看v | 国产精品综合久久久 | 91人人爽人人爽人人精88v | 日韩特黄av| 国产亚洲免费观看 | www178ccom视频在线 | 国产伦精品一区二区三区四区视频 | 国产黄影院色大全免费 | 免费视频三区 | 国产福利91精品张津瑜 | 成人午夜电影久久影院 | 五月丁香| 久久精品国产亚洲精品 | 精壮的侍卫呻吟h | 国产精品久久久久影视 | 在线观看的黄色 | 中文字幕亚洲高清 | 五月婷婷黄色 | 最近中文字幕高清字幕在线视频 | 91视频在线免费看 | 国产高清视频在线观看 | 在线v片| 色视频在线看 | www日韩精品 | 色综合久久精品 | 久久久精品一区二区三区 | 91av网址 | 91精品免费 | 日韩成人精品在线观看 | 黄网站免费看 | 国产二区av | 成人9ⅰ免费影视网站 | 国内毛片毛片 | 超碰97网站 | 久久色在线观看 | 中文字幕韩在线第一页 | 麻豆视传媒官网免费观看 | 香蕉视频国产在线观看 | 国产日韩欧美在线影视 | a视频免费 | 天天干天天做天天爱 | 亚洲闷骚少妇在线观看网站 | 激情综合五月天 | www.久久久精品 | 四虎免费av | 亚洲视频免费在线看 | 国产二区av| 国产在线精品一区二区不卡了 | 91色一区二区三区 | 日韩va欧美va亚洲va久久 | 欧美视频在线观看免费网址 | 黄色91在线观看 | 亚洲精品国产视频 | 国产手机视频在线观看 | 中文字幕国产视频 | 九九久久久久久久久激情 |