国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

拋棄 Java 改用 Kotlin 的六個月后,我后悔了!

共 11982字,需瀏覽 24分鐘

 ·

2020-09-20 19:13

原文:

https://allegro.tech/2018/05/From-Java-to-Kotlin-and-Back-Again.html

https://zsmb.co/on-from-java-to-kotlin-and-back-again/

譯者:安翔,責編:郭芮

毫無疑問,Kotlin 目前很受歡迎,業(yè)界甚至有人認為其將取代 Java 的霸主地位。它提供了 Null 安全性,從這一點來說它確實比 Java 更好。那么是不是這就意味著開發(fā)者應該毫不猶豫地擁抱 Kotlin,否則就落伍了?

等等,或許事情并非如此。

在開始使用 Kotlin 編程之前,本文想要分享個故事給你。在這個故事中,作者最早使用 Kotlin 來編寫一個項目,后來 Kotlin 的各種怪異模式以及一些其他障礙越來越讓人厭煩,最終,他們決定重寫這個項目。

以下為譯文:

一直以來,我對基于 JVM 的語言都非常情有獨鐘。我通常會用 Java 來編寫主程序,再用 Groovy 編寫測試代碼,兩者配合使用得心應手。

2017年夏天,團隊發(fā)起了一個新的微服務項目,和往常一樣,我們需要對編程語言和技術(shù)進行選型。部分團隊成員是 Kotlin 的擁護者,再加上我們都想嘗試一下新的東西,于是我們決定用 Kotlin 來開發(fā)這個項目。由于 Spock 測試框架不支持 Kotlin,因此我們決定堅持使用 Groovy 來測試。

2018年春天,使用 Kotlin 開發(fā)幾個月之后,我們總結(jié)了 Kotlin 的優(yōu)缺點,最終結(jié)論表明 Kotlin 降低了我們的生產(chǎn)力。

于是我們使用 Java 來重寫這個微服務項目。

那么 Kotlin 主要存在哪些弊端?下面來一一解釋。

名稱遮蔽

這是 Kotlin 最讓我震驚的地方。看看下面這個方法:

fun?inc(num?:?Int)?{
????val?num?=?2
????if?(num?>?0)?{
????????val?num?=?3
????}
????println?("num:?"?+?num)
}

當你調(diào)用 inc(1) 會輸出什么呢?在 Kotlin 中, 方法的參數(shù)無法修改,因此在本例中你不能改變 num。這個設計很好,因為你不應該改變方法的輸入?yún)?shù)。但是你可以用相同的名稱定義另一個變量并對其進行初始化。

這樣一來,這個方法作用域中就有兩個名為 num 的變量。當然,你一次只能訪問其中一個 num,但是 num 值會被改變。

在 if 語句中再添加另一個 num,因為作用域的原因 num 并不會被修改。

于是,在 Kotlin 中,inc(1) 會輸出 2。同樣效果的 Java 代碼如下所示,不過無法通過編譯:?

void?inc(int?num)?{
????int?num?=?2;?//error:?variable?'num'?is?already?defined?in?the?scope
????if?(num?>?0)?{
????????int?num?=?3;?//error:?variable?'num'?is?already?defined?in?the?scope
????}
????System.out.println?("num:?"?+?num);
}

名字遮蔽并不是 Kotlin 發(fā)明的,這在編程語言中很常見。在 Java 中我們習慣用方法參數(shù)來映射類字段:

public?class?Shadow?{
????int?val;
????public?Shadow(int?val)?{
????????this.val?=?val;
????}
}

在 Kotlin 中名稱遮蔽有些嚴重,這是 Kotlin 團隊的一個設計缺陷。

IDEA 團隊試圖通過向每個遮蔽變量顯示警告信息來解決這個問題。兩個團隊在同一家公司工作,或許他們可以互相交流并就遮蔽問題達成共識。我從個人角度贊成 IDEA 的做法因為我想不到有哪些應用場景需要遮蔽方法參數(shù)。

類型推斷

在Kotlin中,當你聲明一個var或是val,你通常會讓編譯器從右邊的表達式類型中猜測變量類型。我們稱之為局部變量類型推斷,這對程序員來說是一個很大的改進。它允許我們在不影響靜態(tài)類型檢查的情況下簡化代碼。

例如,這個Kotlin代碼:

var?a?=?"10"

Kotlin 編譯器會將其翻譯成:?

var?a?:?String?=?"10"

Java 同樣具備這個特性,Java 10中的類型推斷示例如下:??

var?a?=?"10";

實話實說,Kotlin 在這一點上確實更勝一籌。當然,類型推斷還可應用在多個場景。關(guān)于 Java 10中的局部變量類型推斷,點擊以下鏈接了解更多:

  • https://medium.com/@afinlay/java-10-sneak-peek-local-variable-type-inference-var-3022016e1a2b


Null 安全類型

Null 安全類型是 Kotlin 的殺手級功能。

這個想法很好,在 Kotlin 中,類型默認不可為空。如果你需要添加一個可為空的類型,可以像下列代碼這樣:?

val?a:?String??=?null??????//?ok
val?b:?String?=?null???????//?compilation?error

假設你使用了可為空的變量但是并未進行空值檢查,這在 Kotlin 將無法通過編譯,比如:

println?(a.length)??????????//?compilation?error
println?(a?.length)?????????//?fine,?prints?null
println?(a?.length??:?0)????//?fine,?prints?0

那么是不是如果你同時擁有不可為空和可為空的變量,就可以避免 Java 中最常見的 NullPointerException 異常嗎?事實并沒有想象的簡單。

當 Kotlin 代碼必須調(diào)用 Java 代碼時,事情會變得很糟糕,比如庫是用 Java 編寫的,我相信這種情況很常見。于是第三種類型產(chǎn)生了,它被稱為平臺類型。Kotlin 無法表示這種奇怪的類型,它只能從 Java 類型推斷出來。它可能會誤導你,因為它對空值很寬松,并且會禁用 Kotlin 的 NULL 安全機制。

看看下面這個 Java 方法:

public?class?Utils?{
????static?String?format(String?text)?{
????????return?text.isEmpty()???null?:?text;
????}
}

假如你想調(diào)用 format(String)。應該使用哪種類型來獲得這個 Java 方法的結(jié)果呢?你有三個選擇。

第一種方法:你可以使用 String,代碼看起來很安全,但是會拋出 NullPointerException 異常。

fun?doSth(text:?String)?{
????val?f:?String?=?Utils.format(text)???????//?compiles?but?assignment?can?throw?NPE?at?runtime
????println?("f.len?:?"?+?f.length)
}

那你就需要用 Elvis 來解決這個問題:

fun?doSth(text:?String)?{
????val?f:?String?=?Utils.format(text)??:?""??//?safe?with?Elvis
????println?("f.len?:?"?+?f.length)
}

第二種方法:你可以使用 String,能夠保證 Null 安全性。

fun?doSth(text:?String)?{
????val?f:?String??=?Utils.format(text)???//?safe
????println?("f.len?:?"?+?f.length)???????//?compilation?error,?fine
????println?("f.len?:?"?+?f?.length)??????//?null-safe?with???operator
}

第三種方法:讓 Kotlin 做局部變量類型推斷如何??

fun?doSth(text:?String)?{
????val?f?=?Utils.format(text)????????????//?f?type?inferred?as?String!
????println?("f.len?:?"?+?f.length)???????//?compiles?but?can?throw?NPE?at?runtime
}

餿主意!這個 Kotlin 代碼看起來很安全、可編譯,但是它容忍了空值,就像在 Java 中一樣。

除此之外,還有另外一個方法,就是強制將 f 類型推斷為 String:

fun?doSth(text:?String)?{
????val?f?=?Utils.format(text)!!??????????//?throws?NPE?when?format()?returns?null
????println?("f.len?:?"?+?f.length)
}

在我看來,Kotlin 的所有這些類似 scala 的類型系統(tǒng)過于復雜。Java 互操作性似乎損害了 Kotlin 類型推斷這個重量級功能。

類名稱字面常量

使用類似 Log4j 或者 Gson 的 Java 庫時,類文字很常見。

Java 使用 .class 后綴編寫類名:?

Gson?gson?=?new?GsonBuilder().registerTypeAdapter(LocalDate.class,?new?LocalDateAdapter()).create();

Groovy 把類進行了進一步的簡化。你可以忽略 .class,它是 Groovy 或者 Java 類并不重要。

def?gson?=?new?GsonBuilder().registerTypeAdapter(LocalDate,?new?LocalDateAdapter()).create()

Kotlin 把 Kotlin 類和 Java 類進行了區(qū)分,并為其提供了語法規(guī)范:

val?kotlinClass?:?KClass?=?LocalDate::class
val?javaClass?:?Class?=?LocalDate::class.java

因此在 Kotlin 中,你必須寫成如下形式:

val?gson?=?GsonBuilder().registerTypeAdapter(LocalDate::class.java,?LocalDateAdapter()).create()

這看起來非常丑陋。

反向類型聲明

C 系列的編程語言有標準的聲明類型的方法。簡而言之,首先指定一個類型,然后是該符合類型的東西,比如變量、字段、方法等等。

Java 中的表示方法是:

int?inc(int?i)?{
????return?i?+?1;
}

Kotlin 中則是:

fun?inc(i:?Int):?Int?{
????return?i?+?1
}

這種方法有幾個原因令人討厭。

首先,你需要在名稱和類型之間加入這個多余的冒號。這個額外角色的目的是什么?為什么名稱與其類型要分離?我不知道??杀氖牵@讓你在 Kotlin 的工作變得更加困難。

第二個問題,當你讀取一個方法聲明時,你首先看到的是名字和返回類型,然后才是參數(shù)。

在 Kotlin 中,方法的返回類型可能遠在行尾,所以需要瀏覽很多代碼才能看到:?

private?fun?getMetricValue(kafkaTemplate?:?KafkaTemplate<String,?ByteArray>,?metricName?:?String)?:?Double?{
????...
}

或者,如果參數(shù)是逐行格式的,則需要搜索。那么我們需要多少時間才能找到此方法的返回類型呢?

@Bean
fun?kafkaTemplate(
????????@Value("\${interactions.kafka.bootstrap-servers-dc1}")?bootstrapServersDc1:?String,
????????@Value("\${interactions.kafka.bootstrap-servers-dc2}")?bootstrapServersDc2:?String,
????????cloudMetadata:?CloudMetadata,
????????@Value("\${interactions.kafka.batch-size}")?batchSize:?Int,
????????@Value("\${interactions.kafka.linger-ms}")?lingerMs:?Int,
????????metricRegistry?:?MetricRegistry
)
:?KafkaTemplate?{
????val?bootstrapServer?=?if?(cloudMetadata.datacenter?==?"dc1")?{
????????bootstrapServersDc1
????}
????...
}

第三個問題是 IDE 中的自動化支持不夠好。標準做法從類型名稱開始,并且很容易找到類型。一旦選擇一個類型,IDE 會提供一些關(guān)于變量名的建議,這些變量名是從選定的類型派生的,因此你可以快速輸入這樣的變量:?

MongoExperimentsRepository?repository

Kotlin 盡管有 IntelliJ 這樣強大的 IDE,輸入變量仍然是很難的。如果你有多個存儲庫,在列表中很難實現(xiàn)正確的自動補全,這意味著你不得不手動輸入完整的變量名稱。

repository?:?MongoExperimentsRepository

伴生對象

一位 Java 程序員來到 Kotlin 面前。

“嗨,Kotlin。我是新來的,我可以使用靜態(tài)成員嗎?"他問。

?“不行。我是面向?qū)ο蟮模o態(tài)成員不是面向?qū)ο蟮?。?Kotlin 回答。

?“好吧,但我需要 MyClass 的 logger,我該怎么辦?”?

“這個沒問題,使用伴生對象即可。”

?“那是什么東西?” “這是局限到你的類的單獨對象。把你的 logger 放在伴生對象中?!盞otlin解釋說。

?“我懂了。這樣對嗎?”

class?MyClass?{
????companion?object?{
????????val?logger?=?LoggerFactory.getLogger(MyClass::class.java)
????}
}

“正確!”

?“很詳細的語法,”程序員看起來很疑惑,“但是沒關(guān)系,現(xiàn)在我可以像 MyClass.logger 這樣調(diào)用我的 logger,就像 Java 中的一個靜態(tài)成員?”?

“嗯......是的,但它不是靜態(tài)成員!這里只有對象。把它看作是已經(jīng)實例化為單例的匿名內(nèi)部類。事實上,這個類并不是匿名的,它的名字是 Companion,但你可以省略這個名字??吹搅藛??這很簡單。"

我很欣賞對象聲明的概念——單例很有用。但從語言中刪除靜態(tài)成員是不切實際的。在 Java 中我們使用靜態(tài) Logger 很經(jīng)典,它只是一個 Logger,所以我們不關(guān)心面向?qū)ο蟮募兌?。它能夠工作,從來沒有任何壞處。

因為有時候你必須使用靜態(tài)。舊版本 public static void main() 仍然是啟動 Java 應用程序的唯一方式。

class?AppRunner?{
????companion?object?{
????????@JvmStatic?fun?main(args:?Array<String>)?{
????????????SpringApplication.run(AppRunner::class.java,?*args)
????????}
????}
}

集合字面量

在Java中,初始化列表非常繁瑣:

import?java.util.Arrays;
...
List<String>?strings?=?Arrays.asList("Saab",?"Volvo");

初始化地圖非常冗長,很多人使用 Guava:

import?com.google.common.collect.ImmutableMap;
...
Map<String,?String>?string?=?ImmutableMap.of("firstName",?"John",?"lastName",?"Doe");

在 Java 中,我們?nèi)匀辉诘却碌恼Z法來表達集合和映射。語法在許多語言中非常自然和方便。

JavaScript:

const?list?=?['Saab',?'Volvo']
const?map?=?{'firstName':?'John',?'lastName'?:?'Doe'}

Python:

list?=?['Saab',?'Volvo']
map?=?{'firstName':?'John',?'lastName':?'Doe'}

Groovy:

def?list?=?['Saab',?'Volvo']
def?map?=?['firstName':?'John',?'lastName':?'Doe']

簡單來說,集合字面量的整齊語法就是你對現(xiàn)代編程語言的期望,特別是如果它是從頭開始創(chuàng)建的。Kotlin 提供了一系列內(nèi)置函數(shù),比如 listOf()、mutableListOf()、mapOf()、hashMapOf() 等等。

Kotlin:?

val?list?=?listOf("Saab",?"Volvo")
val?map?=?mapOf("firstName"?to?"John",?"lastName"?to?"Doe")

在地圖中,鍵和值與 to 運算符配對,這很好。但為什么一直沒有得到廣泛使用呢?令人失望。

Maybe

函數(shù)式語言(比如 Haskell)沒有空值。相反,他們提供 Maybe monad(如果你不熟悉monad,請閱讀 Tomasz Nurkiewicz 的這篇文章:http://www.nurkiewicz.com/2016/06/functor-and-monad-examples-in-plain-java.html)。

Maybe 很久以前就被 Scala 以 Option 引入到 JVM 世界,然后在 Java 8 中被采用為 Optional。如今,Optional 是在 API 邊界處理返回類型中的空值的非常流行的方式。

Kotlin 中沒有 Optional 的等價物,所以你大概應該使用 Kotlin 的可空類型。讓我們來調(diào)查一下這個問題。

通常情況下,當你有一個 Optional 的時候,你想要應用一系列無效的轉(zhuǎn)換。

例如,在 Java 中:?

public?int?parseAndInc(String?number)?{
????return?Optional.ofNullable(number)
???????????????????.map(Integer::parseInt)
???????????????????.map(it?->?it?+?1)
???????????????????.orElse(0);
}

在 Kotlin 中,為了映射你可以使用 let 函數(shù):

fun?parseAndInc(number:?String?):?Int?{
????return?number.let?{?Integer.parseInt(it)?}
?????????????????.let?{?it?->?it?+?1?}??:?0
}

上面的代碼是錯誤的,parseInt() 會拋出 NPE 。map() 僅在有值時執(zhí)行。否則,Null 就會跳過,這就是為什么 map() 如此方便。不幸的是,Kotlin 的 let 不會那樣工作。它從左側(cè)的所有內(nèi)容中調(diào)用,包括空值。

為了保證這個代碼 Null 安全,你必須在每個代碼之前添加 let:?

fun?parseAndInc(number:?String?):?Int?{
????return?number?.let?{?Integer.parseInt(it)?}
??????????????????.let?{?it?->?it?+?1?}??:?0
}

現(xiàn)在,比較 Java 和 Kotlin 版本的可讀性。你更傾向哪個?

數(shù)據(jù)類

數(shù)據(jù)類是 Kotlin 在實現(xiàn) Value Objects 時使用的方法,以減少 Java 中不可避免的樣板問題。

例如,在 Kotlin 中,你只寫一個 Value Object :

data?class?User(val?name:?String,?val?age:?Int)

Kotlin 對 equals()、hashCode()、toString() 以及 copy() 有很好的實現(xiàn)。在實現(xiàn)簡單的DTO 時它非常有用。但請記住,數(shù)據(jù)類帶有嚴重的局限性。你無法擴展數(shù)據(jù)類或者將其抽象化,所以你可能不會在核心模型中使用它們。

這個限制不是 Kotlin 的錯。在 equals() 沒有違反 Liskov 原則的情況下,沒有辦法產(chǎn)生正確的基于價值的數(shù)據(jù)。

這也是為什么 Kotlin 不允許數(shù)據(jù)類繼承的原因。

開放類

Kotlin 類默認為 final。如果你想擴展一個類,必須添加 open 修飾符。

繼承語法如下所示:?

open?class?Base
class?Derived?:?Base()

Kotlin 將 extends 關(guān)鍵字更改為: 運算符,該運算符用于將變量名稱與其類型分開。那么再回到 C ++語法?對我來說這很混亂。

這里有爭議的是,默認情況下類是 final。也許 Java 程序員過度使用繼承,也許應該在考慮擴展類之前考慮三次。但我們生活在框架世界,Spring 使用 cglib、jassist 庫為你的 bean 生成動態(tài)代理。Hibernate 擴展你的實體以啟用延遲加載。

如果你使用 Spring,你有兩種選擇。你可以在所有 bean 類的前面添加 open,或者使用這個編譯器插件:?

buildscript?{
????dependencies?{
????????classpath?group:?'org.jetbrains.kotlin',?name:?'kotlin-allopen',?version:?"$versions.kotlin"
????}
}

陡峭的學習曲線

如果你認為自己有 Java 基礎(chǔ)就可以快速學習 Kotlin,那你就錯了。Kotlin 會讓你陷入深淵,事實上,Kotlin 的語法更接近 Scala。這是一項賭注,你將不得不忘記 Java 并切換到完全不同的語言。

相反,學習 Groovy 是一個愉快的過程。Java 代碼是正確的 Groovy 代碼,因此你可以通過將文件擴展名從 .java 更改為 .groovy。

最后的想法

學習新技術(shù)就像一項投資。我們投入時間,新技術(shù)讓我們得到回報。但我并不是說 Kotlin 是一種糟糕的語言,只是在我們的案例中,成本遠超收益。

以上內(nèi)容編譯自 From Java to Kotlin and Back Again,作者 Kotlin ketckup。

他是一名具有15年以上專業(yè)經(jīng)驗的軟件工程師,專注于JVM 。在 Allegro,他是一名開發(fā)團隊負責人,JaVers 項目負責人,Spock 倡導者。此外,他還是 allegro.tech/blog 的主編。

本文一出就引發(fā)了業(yè)內(nèi)的廣泛爭議,Kotlin 語言擁護者 Márton Braun 就表示了強烈的反對。

Márton Braun 十分喜歡 Kotlin 編程,目前他在 StackOverflow 上 Kotlin 標簽的最高用戶列表中排名第三,并且是兩個開源 Kotlin 庫的創(chuàng)建者,最著名的是 MaterialDrawerKt。此外他還是 Autosoft 的 Android 開發(fā)人員,目前正在布達佩斯技術(shù)經(jīng)濟大學攻讀計算機工程碩士學位。

以下就是他針對上文的反駁:

當我第一次看到這篇文章時,我就想把它轉(zhuǎn)發(fā)出來看看大家會怎么想,我肯定它會是一個有爭議的話題。后來我讀了這篇文章,果然證明了它是一種主觀的、不真實的、甚至有些居高臨下的偏見。

有些人已經(jīng)在原貼下進行了合理的批評,對此我也想表達一下自己的看法。

名稱遮蔽

“IDEA 團隊”(或者 Kotlin 插件團隊)和“Kotlin 團隊”肯定是同樣的人,我從不認為內(nèi)部沖突會是個好事。語言提供這個功能給你,你需要的話就使用,如果討厭,調(diào)整檢查設置就是了。

類型推斷

Kotlin 的類型推斷無處不在,作者說的 Java 10 同樣可以簡直是在開玩笑。

Kotlin 的方式超越了推斷局部變量類型或返回表達式體的函數(shù)類型。這里介紹的這兩個例子是那些剛剛看過關(guān)于 Kotlin 的第一次介紹性講話的人會提到的,而不是那些花了半年學習該語言的人。

例如,你怎么能不提 Kotlin 推斷泛型類型參數(shù)的方式?這不是 Kotlin 的一次性功能,它深深融入了整個語言。

編譯時 Null 安全

這個批評是對的,當你與 Java 代碼進行互操作時,Null 安全性確實被破壞了。該語言背后的團隊曾多次聲明,他們最初試圖使 Java 可為空的每種類型,但他們發(fā)現(xiàn)它實際上讓代碼變得更糟糕。

Kotlin 不比 Java 更差,你只需要注意使用給定庫的方式,就像在 Java 中使用它一樣,因為它并沒有不去考慮 Null 安全。如果 Java 庫關(guān)心 Null 安全性,則它們會有許多支持注釋可供添加。

也許可以添加一個編譯器標志,使每種 Java 類型都可以為空,但這對 Kotlin 團隊來說不得不花費大量額外資源。

類名稱字面常量

:: class 為你提供了一個 KClass 實例,以便與 Kotlin 自己的反射 API 一起使用,而:: class.java為你提供了用于 Java 反射的常規(guī) Java 類實例。

反向類型聲明

為了清楚起見,顛倒的順序是存在的,這樣你就可以以合理的方式省略顯式類型。冒號只是語法,這在現(xiàn)代語言中是相當普遍的一種,比如 Scala、Swift 等。

我不知道作者在使用什么 IntelliJ,但我使用的變量名稱和類型都能夠自動補全。對于參數(shù),IntelliJ 甚至會給你提供相同類型的名稱和類型的建議,這實際上比 Java 更好。

伴生對象

原文中說:

有時候你必須使用靜態(tài)。舊版本 public static void main() 仍然是啟動 Java 應用程序的唯一方式。

class?AppRunner?{
????companion?object?{
????????@JvmStatic?fun?main(args:?Array<String>)?{
????????????SpringApplication.run(AppRunner::class.java,?*args)
????????}
????}
}

實際上,這不是啟動 Java 應用程序的唯一方式。你可以這樣做:

?fun?main(args:Array ){?SpringApplication.run(AppRunner?::?class.java,*?args)}?

或者這樣:

?fun?main(args:Array ){?runApplication?(*?args)}

集合字面量

你可以在注釋中使用數(shù)組文字。但是,除此之外,這些集合工廠的功能非常簡潔,而且它們是另一種“內(nèi)置”到該語言的東西,而它們實際上只是庫函數(shù)。

你只是抱怨使用:進行類型聲明。而且,為了獲得它不必是單獨的語言結(jié)構(gòu)的好處,它只是一個任何人都可以實現(xiàn)的功能。

Maybe

如果你喜歡 Optional ,你可以使用它。Kotlin 在 JVM 上運行。

對于代碼確實這有些難看。但是你不應該在 Kotlin 代碼中使用 parseInt,而應該這樣做(我不知道你使用該語言的 6 個月中為何錯過這個)。你為什么要明確地命名一個 Lambda 參數(shù)呢?

數(shù)據(jù)類

原文中說:

這個限制不是 Kotlin 的錯。在 equals() 沒有違反 Liskov 原則的情況下,沒有辦法產(chǎn)生正確的基于價值的數(shù)據(jù)。

這就是為什么 Kotlin 不允許數(shù)據(jù)類繼承的原因。

我不知道你為什么提出這個問題。如果你需要更復雜的類,你仍然可以創(chuàng)建它們并手動維護它們的 equals、hashCode 等方法。數(shù)據(jù)類僅僅是一個簡單用例的便捷方式,對于很多人來說這很常見。

公開類

作者再次鄙視了,對此我實在無話可說。

陡峭的學習曲線

作者認為學習 Kotlin 很難, 但是我個人并不這么認為。

最后的想法

從作者列舉的例子中,我感覺他只是了解語言的表面。

很難想象他對此有投入很多時間。



瀏覽 39
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 日本东京热视频| 亚洲无码一级电影| 在线中文字幕视频| 亚洲无码AV一区二区三区| 麻豆乱伦视频| 波多野结衣av在线观看| 日本黄色大片网站| 美女在线扣穴| 国精产品一区一区三区四区| 久久成人精品| 玩弄人妻少妇500系列视频| 国产夫妻在线视频| 好吊顶亚洲AV大香蕉色色| 91视频免费| 国产婷婷五月天| AV天堂影视在线观看| 蜜桃精品视频| 欧美色图15P| 超碰人人摸| 一级Aa视频免费看| 欧美久久免费| 91视频在线网站| 日本黄色免费在线观看| 在线免费观看黄色网址| 超碰最新在线观看| 成人AV在线一区二区| 国产精品在线观看| 婷婷在线播放| 亚洲黄色电影网站| 成年人黄色片| 加勒比无码| 亚欧洲精品在线视频免费观看| 亚洲激情内射| 久久久久99精品成人片三人毛片| 中文字幕少妇| 国产乱子伦精品久久| 色噜噜狠狠一区二区三区300部| 人妻熟女视频| 欧美一级夜夜爽| 欧美日韩男女淫乱一区二区| 无码国产精品一区二区免费96| 日韩情色片| 欧一美一婬一伦一区二区三区自慰国 | 国产中文在线观看| 中文字幕国产视频| 强开小嫩苞一区二区三区网站| 久久露脸国语精品国产91| 日本乱伦电影中文字幕| 大香蕉777| 黄片AAA| 91香蕉麻豆| 欧美五月激情| 黄色电影天堂| 91AV一区二区| 中文无码一区二区三区四区| 在线观看免费视频a| 亚洲精品一区二区三区四区高清| 欧美footjob| 亚洲乱妇| 欧美成人网站在线观看| 蜜桃久久99精品久久久酒店| 国产a区| 香蕉视频在线看| 国产一级二级在线观看| 久久久久成人精品无码| 97国产在线观看| 91丝袜在线| 91官网在线观看| 成人精品永久免费视频99久久精品 | 免费看操逼逼| 亚洲欧美v在线视频| 激情五月天在线视频| 免费无码一区二区三区四区五区| 两根茎一起进去好爽A片在线观看| 国产福利在线| 国产成人片| 久草社区| 五月久久婷婷| 久久久毛片| 91在线无码精品秘入口动作| 亚洲综合91| 91久久久久久久| 狼人狠狠干| 亚洲春色一区二区三区| 69久久久| 黄页免费视频| 国产精品高潮无套内谢| 97香蕉网| 亚洲www在线| 亚洲人妻在线播放| 毛片久久久| 亚洲色五月天| 三级片网站在线观看| 亚洲天堂视频在线播放| 天堂aaa| 天天狠狠操| 在线观看一区二区三区四区| 青青草性爱| 中文人妻第9页| 五月天激情小说网| 欧洲无码一区二区三区| 丁香五月伊人| 西西西444www无码视| 四lll少妇BBBB槡BBBB| 国产成人精品av| 日本A片免费观看| 日本黄色视频电影| 国产久久视频| www.黄色| 人人肏肏人人| 特级毛片在线观看| 波多野结衣无码流出| 奶大丰满一乱一视频一区二区三区在 | 成人一区视频| 国产美女一区| 特级西西444WWW高清| 高清无码免费不卡| 无码人妻一区二区三区免水牛视频| 久久婷婷国产麻豆91天堂| 日韩一级成人片| 亚洲网站在线播放| 一级黄色小视频| 99热在线观看免费精品| 草逼综合网| 蜜臀久久99精品久久| 日本色区| 大吊AV| 天天色色色| 国产精品va| 日本少妇高潮| 欧美精品性爱| 欧美成人图片视频在线| 成人蜜臀AV| 在线免费观看av片| 久久久久a| 国产毛片毛片| 青青视频网| 色婷婷在线免费视频| 欧美性爱无码| 熟女无码| 国产一级a毛一级a做免费的视频l 精品国产免费观看久久久_久久天天 | 特级西西人体444www高清 | 五月丁香大香蕉| 欧美青青草| 亚洲激情在线| 亚洲无码1| 五月天婷婷小说| 欧美多人| 国产欧美在线看| 91欧美精品| 欧美日韩国产一区二区| 国产日批| 久久人人做| 高清无码内射视频| 高清无码不卡在线观看| 久久在线精品| 另类罕见稀奇videos| 国产免费一区二区在线A片视频| 国产成人一区二区三区A片免费| 国产成人a亚洲精品www| 亚洲三级视频在线播出| 美女天天日| 狠狠躁18三区二区一区免费人 | 一区二区水蜜桃| 欧美午夜福利在线观看| 国产操B视频| 久久er视频| 中文在线第一页| 成人亚洲综合| 超碰人人91| 免费精品99| 91精品婷婷国产综合久久韩漫| 久久婷婷久久| 九热精品| 一级a一级a爰片免费| 亚洲无码AV一区二区三区| 日本天堂网站| 亚洲一卡二卡| 亚洲激情在线| 操你啦青青草| 国产精品美女毛片j酒店| 51国产黑料吃瓜在线入口| 国产av不卡| 亚洲日韩Av无码中文字幕美国| 在线视频中文字幕| 777欧美| 婷婷亚洲国产| 国产探花| 日本一级黄色电影| 久久91| 不卡无码av| 最近最经典中文MV字幕| 性饥渴熟妇乱子伦| 欧美亚韩一区二区三区| 精品福利一区二区三区| 欧美视频久久| 欧美内射网站| 日韩综合精品中文字幕66| 动图综合亚洲综合欧美男男| 日本少妇中文字幕| 影音先锋男人资源网| 午夜福利10000| 精品人妻中文字幕| 日韩免费Av| 另类BBwBBw| 北条麻妃中文字幕在线观看| 五月婷婷av| 青青草人人| 97免费在线观看视频| 日本中文在线观看| 污污污www精品国产网站| 久久久久久久久久国产精品免费观看-百度 | 一级操逼毛片| 国产白丝在线观看| 精品一区二区三区毛片| 51妺妺嘿嘿午夜成人| 囯产精品一区二区三区线一牛影视1 | 2014av天堂网| 色婷婷狠狠| 天堂在线社区| a天堂在线| 中文成人无字幕乱码精品区| 久热国产视频| 成年人性生活免费视频| 久久国产乱子伦精品免费午夜... 国产毛片精品一区二区色欲黄A片 | 中文字幕在线日本| 日韩人妻视频| 中文字幕免费在线看一区七区| 伊人久久大香蕉国产| 老汉AV| 网站你懂得| 天堂亚洲精品| 九九热这里有精品| 青青草国产亚洲精品久久| 91综合在线| 伊人免费视频在线观看| 色婷婷婷| 久久久网站| 国产91黄色| 国产又爽又黄免费| 五月天福利视频| 在线观看视频日韩| 中文字字幕在线| www.91n| av逼网| 中国一级片| 91精品国产麻豆国产自产在线| 91视频导航| 9无码| 亚洲AV无码精品成人| 91黄色片| 天天干精品| 国产精品美女视频| 人人色人人摸| 久草电影网站| 浮力影院欧美| 五月婷婷色| 国产av小电影| 日韩欧美内射| 精品无码一区二区三区四区久久久软件 | 国产一级二级视频| 国产福利小视频| 日韩无码2024| x88AV吊钟奶熟女| 在线一区| 免费无码婬片aaaa| 国产一级a毛一级a做免费高清视频 | 亚洲精品乱码久久久久久蜜桃91 | 五月丁香欧美性爱| 天天干天天天天| 免费黄色成人视频| 色一本| 丰满人妻一区二区三区四区54 | 欧美老熟妇乱大交XXXXX| 一级黄色在线观看| 亚洲社区在线观看| 成人毛片18女人毛片| 一本色道久久综合狠狠| 精品无码一区二区三区的天堂| 国产激情视频在线观看| 中文在线第一页| 国产AV三级| 朝鲜性感AV在线| 91精品久久久久久久久久久久| 蜜臀久久久久久999| 吴梦梦一区二区三区| 三级黄色视频在线观看| 天天艹逼| 国产精品嫩草久久久久yw193| 中文字幕第69页| 详情:绿帽夫妻多人运动开淫啪-91n| 日韩亚洲精品中文字幕| 久久AV片| 中文字幕成人网站中文字幕| 大香蕉久久久久久| 日韩性爱视屏| 色色色热| 无码三级片在线观看| 九色无码| 就要草| 99亚洲无码| 天堂俺去俺来也www久久婷婷 | 台湾成人在线视频| 91久久久久国产一区二区| 久久久国产探花视频| 久久大鸡| 加勒比无码在线| 欧美69成人| 国产成人av在线| 国产高清AV无码| 俺也去AV| 国产中文人人国际| 精东影业AV无码精品| 日本无码在线| AV无码一区二区三区| 人妻无码免费视频| 国产精品一区二区在线播放| 日本不卡中文字幕| 五香丁香天堂网| www.一区二区| 天天三级片| 亚洲免费一级| 青青青在线| 中文字幕区| 日韩无码毛片| av女人的天堂| 中文字幕一区在线观看| 特写毛茸茸BBwBBwBBw| 九九热精品视频在线播放| 欧美日韩亚洲另类| 在线免费观看毛片| 成人a电影| 天堂在线中文| 无码任你操| 三级片无码在线观看| 国产a一级a毛一级视频| 亚洲小说区图片区都市| 人妻少妇91精品一区黑人| www.日本黄色视频| 四川少妇BBB凸凸凸BBB安慰我| 西西444| 黄色操逼视频| 亚洲男人的天堂视频网在线观看+720P| 欧美成人黄色电影| 国产久久久久久久久久| 尤物av| 麻豆传媒免费观看| 大香蕉网址| 日韩欧美一级二级| 丰满人妻一区二区三区| 日韩无码操逼| 黄色免费网站| 国产日韩一区二区三区| 久色性爱视频| 欧美久久性爱| 亚洲精品一区二区三区蜜桃| 天天日天天日天天干| 2012天天夜夜| 中文字幕乱码中文字幕| 黄色大片中国一级片-免费看特一级片-亚洲黄色AV | 欧美爱| 欧美高清视频| 国偷自产视频一区二区久| 亚洲欧美国产日韩字幕| 艹逼中文字幕| 嫩BBB搡BBB槡BBB小号| 999精品| 九九九亚洲| 91在线免费播放| 国产精品无码一区二区三区| 久久精品久| 天堂VA蜜桃一区二区三区| 人成免费在线视频| 一区性爱| 农村一级婬片A片AAA毛片古装| 大黑逼AV| 在线色片| www.91在线看| 99在线免费观看| 粉嫩av在线| 中文字幕av久久爽一区| 江苏妇搡BBB搡BBBB| 亚洲综合免费| 在线午夜福利| 久久久久久久久毛片| 午夜视频福利| 西西4444大胆无码视频| 一级黄色毛片| 美女自慰网站免费| 色综合五月婷婷| 九九性爱视频| 欧美成人精品三级网站| 日韩AV在线免费观看| 中文字幕成人在线观看| 11孩岁女精品A片BBB| 日韩免费一级| 国产美女被爽到高潮免费A片软件 国产无遮挡又黄又爽又色视频软件 | 老女人日逼| 色色A| 成人欧美一区二区三区黑人免费| 国产SM视频| 成人黄色毛片| 亚洲精品一区二区三区无码电影 | 激情亚洲婷婷| 亚洲美女视频在线| 亚洲精品无码久久| 7x7x7x人成免费观学生视频| 中文字幕无码不卡| 欧洲成人午夜精品无码区久久| 亚洲中文字幕日韩在线| 无码精品人妻一区二区三区漫画 | 2021天天夜日| 91精品免费视频| 久热这里| 天堂亚洲| 欧美大香蕉伊人网| 国产精品欧美精品| 日韩做爱网站| 黄片av| 北条麻妃被躁57分钟视频在线| 中文字幕天天在线| 中文字幕乱码人妻二区三区| 亚洲国产一区二区三区四区| 农村一级婬片A片AAA毛片古装| 超碰91人人操| 在线日韩AV| 亚洲国精产品| 西西特级无码444www| 亚洲综合色网站| 日本精品久久| 人妖毛片| 日韩码波多野结衣| 亚洲AV在线看| 蜜桃av色偷偷av老熟女| 亚洲欧洲精品视频| 成人国产综合| 久一久久| 成人AV在线一区二区| 亚洲免费黄色| 亚洲中文字幕色| 就爱操逼网| 一区二区三区无码在线| 亚洲精品一区二区三区无码电影| 日韩一区二区三免费高清在线观看| 黄色AV免费看| 成人免费黄色网| 成人小视频十八禁免费观看| 欧美性爱一区二区三区| 久久香蕉网站| 水多多成人网站A片| 成人免费无码婬片在线观看免费 | 久久精品视频久久| 婷婷五月av| 在线免费观看网站| 国产高清黑人| 亚洲精品黄色| 看一级黄色片| 嫩BBB搡BBB搡BBB四川| 成人黄色视频网站| 日韩欧美分区视频| 91久久久久久久18| 99久久爱re热6在播放| 亚洲免费在线视频观看| 俺来俺也去www色在线观看| 国产精品3| 狠狠网| 午夜操逼网| 久久无码人妻精品一区二区三区| 欧美熟妇精品一二三区| 一级黄色免费电影| 粉嫩99精品99久久久久| 国产高清在线免费观看AV片 | 人妻少妇被猛烈进入中文字幕| 操逼网站免费看| 一本色道久久综合| 亚洲黄片在线| 亚洲性爱在线| 亚洲天堂综合网| 九九韩剧网最新电视剧免费观看| 白峰美羽人妻AND-499| 国产超碰在线| 人人摸人人插| 国产av天天| 一区无码免费| 国产伦子伦一级A片免费看小说| 亚洲天堂无码高清| 精品视频免费在线观看| 色色色色色色网站| 99精品视频在线观看免费| 免费视频无码| 手机看片1024你懂的| 午夜做爱福利视频| AAA免费视频| 超碰2022| 粉嫩99精品99久久久久久特污 | 欧美三级网址| 成人A片在线播放| 人人爱人人草| 亚洲AV秘无码苍井空| 88无码| 欧美后门菊门交4| 成人三级片在线观看| 黄片在线免费观看视频| 精品动漫3D一区二区三区免费版| 尤物看片| 亚洲九九九| 日本精品国产| 久久精品苍井空免费一区二| 日本豆花视频| 996热久久| 超碰在线观看97| 爱爱视频欧美| 安徽妇搡BBBB搡BBBB按摩| 欧美老妇BBBBBBBBB| 亚洲成人精品少妇| 九色PORNY自拍视频| va在线| 天天日天天色天天干| 欧美性爱无码在线| 日韩aaa| 中文在线字幕电视剧免费平台| 69xx视频| 中文精品在线| 91精品国产一区二区三区四区大 | 狠狠躁日日躁夜夜躁A片无码视频 强伦轩一区二区三区四区播放方式 | 性性性性性XXXXX| 成人视频123| 狠狠操狠狠| 91人妻人人人人爽| 熟女人妻ThePorn| 97伊人超碰| 日韩vA| 青青草无码成人AV片| 无码专区视频| 黄色AV免费在线观看| 久久伊人综合| 日韩第22页| 国产精品久久久无码专区| 亚洲AV免费在线观看| 激情五月天网| 美女福利在线| 五月天婷婷黄色| 亚洲国产高清国产精品| aaa免费| 天天操天天干天天日| 中文日韩欧美| 九九精品视频在线播放| 9l视频自拍九色9l视频成人| www九九| 亚洲黄色视频免费| 黄色一区二区三区| 欧美性精品| 操逼福利| 日韩不卡一区| 日韩啊啊啊| 日韩中文字幕视频在线| 免费看特别黄色视频| 91麻豆免费视频网站| 黄色A片网站| 337p大胆色噜噜噜噜噜| 69xx视频| 日韩第1页| 中文字幕36页| 亚洲日日夜夜| 俺去了无码| 午夜3D动漫AV| 波多野结衣AV无码| 人人操人人摸人人| 国产又爽又黄免费网站在线看| 色婷婷国产精品| 国产亚洲成人综合| AA视频网站| 亚洲黄色av网站| 伊人久久AV诱惑悠悠| 久久精品一区| 你懂的视频在线| AV无码网站| 国产91在线亚洲| 亚洲在线高清| 亚洲欧美日韩另类| 豆花视频免费| 肏屄综合网| 国产特级婬片免费看| 最新中文字幕视频| 国产av资源| 成人无码www在线看免费| 欧美乱码| 国产成人大片| 久草热视频| 国产精品视频无码| 无码人妻少妇| 翔田千里在线观看| 在线一区视频| 欧美精品操逼| 中文字幕性| 一品国精和二品国精的文化意义| www.亚洲无码| 免费毛片视频| 日韩成人视频在线观看| 久久婷婷国产| 国产无套视频| 一本高清无码| 色香蕉在线| 黄色电影网站在线观看| 91人妻人人澡人人爽人妻| 国产v欧美| 亚洲AV无码成人精品区久| 在线播放一区二区三区| 中日韩黄色视频| 日本一区二区视频在线观看| 亚洲vs无码蜜桃少妇| 亚洲AV无码成人网站国产网站| 黄色视频在线观看亚洲一区二区三区免费| 欧美一区二区三区在线| 自拍超碰| 色婷婷综合在线| 自拍偷拍亚洲| 蜜桃精品在线| 蜜桃传媒一区| 国产精品A片守望| 日韩欧美操逼| 日韩肏逼| 日韩无码免费播放| 人成视频在线免费观看| 日逼日逼日逼| 蜜桃av无码一区二区三区| 91黑人| 亚洲成人影片在线观看| 欧美A片在线播放| 综合久久中文字幕| 欧美久久性爱| 囯产精品99久久久久久WWW| 中文字幕无码网站| 色欲网址| 欧美日韩人妻| 抽插免费视频| 亚洲成人二区| 久草免费在线观看视频| 久久国产热视频| 天堂av在线免费观看| 五月丁香色播| 美女视频毛片| 人人做人人做人人做,人人做全句下一 | 97看片| 婷婷综合五月| www.亚洲精品| 色欲亚洲| 爱爱黄色视频| 北条麻妃91| 好吊看视频| 免费的AV| 俺去也视频| 日韩AV在线电影| 特黄网站| 成人亚洲| 99热这里有精品| 国产一级黄片| 中出欧美亚洲| 亚洲影院中文字幕| 看毛片视频| 一级a片在线| 欧美成人五月天| 91久久精品一区二区三区| 台湾无码精品| 妞干网国产| 精品啪啪| 欧洲三级网观看| av无码精品一区| 成人无码免费毛片| 精品www| 超碰免费人妻| 亚洲欧洲成人| 丁香五月影院| 亚洲黄色录像| 一区在线播放| 欧美在线天堂| 欧美狠狠干| 欧美日韩狠狠操在线观看视频| 淫色人妻网| 久艹AV| 国产高清在线免费观看AV片| 大学生18一19GAY169| 一级a一级a爰片免费免免中国A片 一级一级a免一级a做免费线看内裤 | 搡BBB| 日本无码在线| 少妇在厨房| 久久久久久麻豆| 97人妻人人操| 99天天视频| 无码熟妇人妻无码AV在线天堂| 国内自拍视频网| 欧美精品一卡二卡| 黄色视频在线观看免费网站| 国产aⅴ激情无码久久久无码| 日韩无码黄片| 狠狠干2018| 免费观看无码| 黄色视频免费看| 囯产精品久久久久久久久久久久久久 | 在线视频亚洲| 久久久久久网站| 青春草视频| 日韩一区二区三免费高清在线观看| 久久成人在线视频| www.91九色| 中文字幕国产一区| 在线免费看黄视频| 欧美性爱天天操| 内射久久| av电影在线观看| 欧美老妇性猛交| 懂色av| 特特级毛片| 免费观看的av| 国产精品九九九九九九| 色噜噜一区二区三区| 91第一页| 亚洲精品成人在线| jizzjizzjizzjizz| 国产精品123区| 欧美成人黄色小视频| 中文字幕精品久久久久人妻红杏Ⅰ| 妞干网国产| 日本AA片视频| V在线| 天天艹夜夜艹| 伊人网视频在线观看| 国产AV无码区亚洲| 超碰天天射| 无码波多野结衣| 亚洲永久免费精品| 天天日天天撸| 欧美精品一二三| 日韩一级黄色视频| 91鸡巴| 午夜成人免费福利| 黄色A级视频| 国产多人搡BBBB槡BBBB| 国产视频二区| 成人网站视频在线观看| 天天射综合| 一道本无码免费视频| 第四色视频| 久久精品国产亚洲AV成人婷婷| 色汉综合| 国模精品无码一区二区免费蜜桃 | 无码成人AV| 成人免费观看视频| 日韩高清无码免费| 怡春院日韩| 欧美成人免费观看| 国产精品99视频| 男女www视频| 特级西西WWW888| 欧美性生活| 无码av网| 隸則av| 青青国产在线| 国语对白做受欧美| 久热99| 四川BBB搡BBB爽爽爽欧美| 国产成人亚洲精品| 国产经典午夜福利视频合集| 操逼影片| 在线看片a| 国产成人三级在线| www.99热视频| 69xx视频| 先锋影音资源av| 中文字幕浅井香舞被黑人俘虏| 日韩一区二区三区在线视频| 欧美性猛交XXXXⅩXX| 自拍做爱视频| 久久99精品久久久久久| 人人妻人人爽| 成年人黄色视频免费观看| 黄色动漫在线免费观看| 911精品国产一区二区在线| 国产成人无码一区二区在线| 淫荡五月天视频导航| 在线观看黄色| 成人网站www污污污网站公司| 狼友视频在线免费观看| 亚洲中文在线播放| 伊人综合久久| 亚洲AV无码蜜桃| 亚洲精品成AV人片天堂无码| 囯产精品宾馆在线精品酒店| 欧洲成人在线播放| 动漫人物插画动漫人物的视频软件 | 激情婷婷亚洲| 中文字幕在线观看有码| 黄色A片免费看| 嫩BBB槡BBBB槡BBB| 蜜桃网一区二区| 欧美天天撸| 成人大香蕉网| 狠狠网| 中文字幕永久在线视频v1.0| 久久久久久免费| 风流少妇一区二区三区91| 国产内射在线观看| 成人精品网| 老司机精品| 四季AV一区二区夜夜嗨| 欧美在线天堂| 欧美福利电影| 一级黄色录像视频| 狠狠躁夜夜躁人爽| 91视频导航| 国产一级A片免费播放| 成人视频你懂的| 国产区av| 私人玩物』黑絲OL尤物| 中文字幕亚洲专区| 69婷婷国产精品| 天天爽天天操| 亚洲三级国产| 成年人黄色视频网站| 影音先锋国产| 中国熟女网站| 悠悠色导航| 日本色婷婷| 成人精品免费| 亚洲国产视频在线观看| 天堂网婷婷| 天天干中文字幕| 中文字幕免费观看| 无码三级午夜久久人妻| 围产精品久久久久久久| 91香蕉视频在线播放| 午夜黄色影视| 中文字幕牛牛婷婷| 99在线观看精品视频| 人人爱人人操| 99精品国产热久久91色欲| 日本高清无码在线| 色婷婷激情AV| 欧美怡红院视频| www.黄色电影| 国产美女操逼| 成年人视频在线观看免费| 国产精品秘久久久久久| 男人的天堂视频| 日本一区二区三区四区| 91西安站街老熟女露脸| 91香蕉在线观看| 久久精品免费看| 天堂网av2025| 亚洲无aV在线中文字幕| 操极品美女| 成人免费在线电影| 免费黄色网页| 黃色A片一級二級三級免費久久久| 国产亚洲无码激情| 成人色综合| 女人的天堂AV在线观看| 操老女人逼视频| 国产视频二区| 午夜福利100| 国产小电影在线观看| 午夜高清| 日韩免费在线视频观看| 国产尤物| 91精品国自产在线观看| 九九九九精品视频| 人人上人人摸| 99在线观看免费视频| 中文字幕在线欧美| 在线观看黄视频| 伊人色五月| 男女AV在线免费观看| 亚洲成人AV无码| wwwav| 手机看片欧美+日韩+国产| 五月婷婷网站| 亚洲一区二区三区在线++中国| 人人艹在线| 黄色国产av| 亚洲国精产品| 一级A色情大片| 91视频精品| 中文字幕第27页| 日本成人三级片| 国产不卡网| 日韩三级网| 日韩精品人妻中文字幕| 成人福利免费视频| 欧美国产日韩在线观看| 亚洲日本中文字幕| 秋霞丝鲁片一区二区三区手机在绒免| 7777影视电视剧在线观看官网| 日韩精品一区二区三区四在线播放 | 人人人干| 成全在线观看高清的| 柠檬福利第一导航| 亚洲精品国产精品国自产网站| 一区二区三区四区无码视频| 羞羞AV| 嫰BBB槡BBBB槡BBBB|