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

為什么用Eclipse,VS Code不香嗎?

開發 開發工具
Visual Studio Code(VS Code)近年來獲得了爆炸式增長,成為廣大開發者工具庫中的必備神器。

[[360014]] 

圖片來自 Pexels

它作為一個開源項目,也吸引了無數第三方開發者和終端用戶,成為頂尖開源項目之一。

它在功能上做到了夠用,體驗上做到了好用,更在擁有海量插件的情況下做到了簡潔流暢,實屬難能可貴。

我是 VS Code 用戶,同時也為它開發插件,插件市場里的眾多 Java 插件基本都是我們團隊的作品,所以我在日常工作中觀察到不少 VS Code 在工程方面的亮點,下面就來逐一探討。

簡潔而聚焦的產品定位,貫穿始終

你知道 VS Code 的開發團隊人數只有二十出頭嗎?

難以相信吧,大家都覺得 VS Code 無所不能,如此強大的工具那么幾個人怎么做得出來。

實際上功能豐富是個美好的錯覺,因為大部分針對特定編程語言和技術的功能都是第三方插件提供的,VS Code 的核心始終非常精簡,這很考驗產品團隊的拿捏能力:做多了,臃腫,人手也不夠;做少了,太弱,沒人用。

他們團隊選擇了專注于核心功能的開發,為用戶提供簡潔流暢的體驗,并將該思路貫穿在產品開發的每個環節。在我看來,這就是第一個亮點。

第一個亮點同時也是一個難點,因為 “簡潔” 說到底是產品的 “形態”,更關鍵的其實是前置問題——產品的定位,它到底解決什么問題。

該問題如果從用戶的角度來看,可以轉換為以下幾個點:

  • 我們為什么需要一個新的工具?
  • 它到底是代碼編輯器 (Editor) 還是集成開發環境 (IDE)?

讓我們來看看項目負責人 Erich Gamma 的說法:

 

這張截圖它闡述了 VS Code 的定位:編輯器+代碼理解+調試。這是一個非常節制而平衡的選擇,專注于開發者 “最常用” 的功能,同時在產品的形式上力求簡潔高效。從結果來看,這個定位是相當成功的。

在這個定位的指導下,這二十多位工程師搞出了 VS Code。相對較小的功能集,使得開發者們能在代碼質量上精益求精,最終用戶們也得到了一個性能優異的工具,這是 VS Code 從一眾編輯器中脫穎而出的重要原因。

正因為產品定位以及團隊職責上的高度節制,團隊成員才能把時間花在這類問題上,寫出經得起考驗的代碼。

與此同時,較小的團隊也使得團隊成員做到了行為層面的整齊劃一,這點在社區互動上體現得尤為明顯。

大家可以去 GitHub 上看他們的 Issues,超出產品定位范疇的請求和反饋基本都被婉拒或者轉交到第三方插件項目,可以說是很專注了。

看到這里,似乎一切都好,但問題來了,碼農千千萬,你用 Node 我用 Go,你搞前端我弄后臺,VS Code 如何滿這些五花八門的需求呢?

機智的你已經搶答了——海量插件。那么接下來我們來深究一下 VS Code 是如何經營一個龐大的插件生態的。

進程隔離的插件模型

通過插件來擴展功能的做法已經是司空見慣了,但如何保證插件和原生功能一樣優秀呢?歷史告訴我們:不能保證。

大家可以參考 Eclipse,插件模型可以說是做得非常徹底了,功能層面也是無所不能,但存在幾個煩人的問題:不穩定、難用、慢,所以不少用戶轉投 IntelliJ 的懷抱。可謂成也插件,敗也插件。

問題的本質在于信息不對稱,它導致不同團隊寫出來的代碼,無論是思路還是質量,都不一致。最終,用戶得到了一個又亂又卡的產品。

所以要讓插件在穩定性、速度和體驗的層面都做到和原生功能統一,只能是一個美好的愿望。

來看看其他 IDE 是怎么做的,Visual Studio 自己搞定所有功能,并且做到優秀,讓別人無事可做,這也成就了其“宇宙第一 IDE”的美名;IntelliJ 與之相仿,開箱即用,插件可有可無。

這么看起來,自己搞定所有的事情是個好辦法,但大家是否知道,Visual Studio 背后有上千人的工程團隊,顯然,這不是 VS Code 這二十幾號人能搞定的。

他們選擇了讓大家來做插件,那怎么解決 Eclipse 所遇到的問題呢?

這里分享一個小知識——Eclipse 核心部分的開發者就是早期的 VS Code 團隊。

嗯,所以他們沒有兩次踏入同一條河流。與 Eclipse 不同,VS Code 選擇了把插件關進盒子里。

這樣做首先解決的問題就是穩定性,這個問題對于 VS Code 來說尤為重要。都知道 VS Code 基于 Electron,實質上是個 Node.js 環境,單線程,任何代碼崩了都是災難性后果。

所以 VS Code 干脆不信任任何人,把插件們放到單獨的進程里,任你折騰,主程序妥妥的。

 

插件與主進程隔離

VS Code 團隊的這一決策不是沒有原因的,正如前面提到的,團隊里很多人其實是 Eclipse 的舊部,自然對 Eclipse 的插件模型有深入的思考。

Eclipse 的設計目標之一就是把組件化推向極致,所以很多核心功能都是用插件的形式來實現的。

遺憾的是,Eclipse 的插件運行在主進程中,任何插件性能不佳或者不穩定,都直接影響到 Eclipse,最終結果是大家抱怨 Eclipse 臃腫、慢、不穩定。

VS Code 基于進程做到了物理級別的隔離,成功解決了該問題。實際上進程級別的隔離也帶出了另一個話題,那就是界面與業務邏輯的隔離。

UI 渲染與業務邏輯隔離,一致的用戶體驗

“不穩定” 之后的問題是 “難用”,具體來說就是混亂的界面和流程,究其原因就是插件之間的界面語言的 “不一致”,它導致學習曲線異常陡峭,并且在面臨問題時沒有統一的解決路徑。

VS Code 的做法是根本不給插件們 “發明” 新界面的機會。

如上圖,插件們被關在 Extension Host 進程里,而 UI 則在主進程里,所以插件們天然沒法直接在用戶界面上做手腳。

VS Code 統管所有用戶交互入口,制定交互的標準,所有用戶的操作被轉化為各種請求發送給插件,插件能做的就是響應這些請求,專注于業務邏輯。

但從始至終,插件都不能 “決定” 或者 “影響” 界面元素如何被渲染(顏色、字體等,一概不行),至于彈對話框什么的,就更是天方夜譚了。

VS Code 對于用戶界面的把控可以說是謹慎到變態,做過插件的人都懂的,感興趣的同學可以去深挖一下 TreeView 的歷史,會有更直觀的體會。

乍一看,第三方開發者被卡得死死的,這樣不是限制了大家的創造力嗎?我想說這個做法跟這個團隊的背景密切相關,換一撥人很有可能會失敗。

他們之所以能成功,是因為該團隊在開發工具領域深耕多年,他們把經驗轉換為觀點,最終落實到了 VS Code 的界面元素以及交互語言上,從結果來看,廣受歡迎。

界面和業務邏輯的徹底隔離,使得所有插件有了一致的行為,用戶就得到了整齊劃一的體驗。

不僅如此,這種接口和行為層面的一致性,最終轉化成了另一個 “偉大” 的功能——Remote Development,我們稍后討論。

接下來我們要聊的是 VS Code 另一個創舉——Language Server Protocol。

LSP:基于文本的協議

前文提到了 VS Code 定位中的兩個特色:代碼理解和調試,絕大部分都由第三方插件來實現,中間的橋梁就是兩大協議——Language Server Protocol (LSP) 和 Debug Adapter Protocol (DAP)。

兩者從設計的角度來看高度相似,我們著重看一下最火的 LSP。首先,為什么需要 LSP?

全棧開發早已成為這個時代的主流,軟件從業者們也越來越不被某個特定的語言或者技術所局限,這也對我們手里的金剛鉆提出了新的挑戰。

舉個栗子,我用 TypeScript 和 Node.js 做前端,同時用 Java 寫后臺,偶爾也用 Python 做一些數據分析,那么我很有可能需要若干工具的組合。

這樣做的問題就在于需要在工具間頻繁切換,無論從系統資源消耗和用戶體驗的角度來看,都是低效的。

那么有沒有一種工具能在同一個工作區里把三個語言都搞定呢?沒錯,就是 VS Code——支持多語言的開發環境,而多語言支持的基礎就是 Language Server Protocol (LSP)。

該協議在短短幾年內取得了空前的成功,到目前為止,已經有來自微軟等大廠以及社區的一百個實現,基本覆蓋了所有主流編程語言。

同時,它也被其他開發工具所采納,比如 Atom、Vim、Sublime、Emacs、Visual Studio 和 Eclipse,從另一個角度證明了它的優秀。

更難能可貴的是,該協議還做到了輕量和快速,可以說是 VS Code 的殺手級特性了,同時也是微軟最重要的 IP 之一。

哇塞,又強大又輕巧,怎么看都是個騙局啊,那我們就來看看它到底怎么做到的。

先劃重點:

  • 節制的設計
  • 合理的抽象
  • 周全的細節

先來說說設計 (Design),大而全是很常見的問題。如果讓我來設計這么一個用來支持所有編程語言的東西,第一反應很可能是搞個涵蓋所有語言特性的超集。

微軟就有過這樣的嘗試,比如 Roslyn——一個語言中立的編譯器,C# 和 VB.NET 的編譯器都是基于它做的。

大家都知道 C# 在語言特性層面是非常豐富的,Roslyn 能撐起 C# 足以說明它的強大。

那么問題來了,為啥它沒有在社區得到廣泛應用呢?我想根本原因是 “強大” 所帶來的副作用:復雜、主觀(Opinionated)。

光是語法樹就已經很復雜了,其他各種特性以及他們之間的關系更是讓人望而卻步,這樣一個龐然大物,普通開發者是不會輕易去碰的。

相較之下,LSP 顯然把小巧作為設計目標之一,它選擇做最小子集,貫徹了團隊一貫節制的作風。

它關心的是用戶在編輯代碼時最經常處理的物理實體(比如文件、目錄)和狀態(光標位置)。

它根本沒有試圖去理解語言的特性,編譯也不是它所關心的問題,所以自然不會涉及語法樹一類的復雜概念。

它也不是一步到位的,而是隨著 VS Code 功能的迭代而逐步發展的。所以它自誕生至今依然保持著小巧的身材,易懂,實現門檻也很低,迅速在社區得到了廣泛的支持,各種語言的 Language Server(LS)遍地開花。

小歸小,功能可不能少,所以抽象就非常關鍵了。LSP 最重要的概念是動作和位置,LSP 的大部分請求都是在表達“在指定位置執行規定動作”。

舉個栗子,用戶把鼠標懸停在某個類名上方,查看相關的定義和文檔。這時 VS Code 會發送一個 'textDocument/hover' 請求給 LS,這個請求里最關鍵的信息就是當前的文檔和光標的位置。

LS 收到請求之后,經過一系列內部計算(識別出光標位置所對應的符號,并找出相關文檔),找出相關的信息,然后發回給 VS Code 顯示給用戶看。

這樣一來一回的交互,在 LSP 里被抽象成請求(Request)和回復(Response),LSP 同時也規定了它們的規格(Schema)。在開發者看來,概念非常少,交互形式也很簡單,實現起來非常輕松。

看到這里,大家應該對 LSP 有了更進一步的理解,它本質上是膠水,把 VS Code 和各種語言的 LS 粘在一起。但它不是普通的膠水,而是非常有品位的膠水,這品位就體現在細節上。

首先這是一個基于文本的協議,文本降低了理解和調試的難度。參考 HTTP 和 REST 的成功,很難想象如果這是一個二進制協議會是什么局面,甚至同樣是文本協議的 SOAP 也早已作古,足以說明 “簡單” 在打造開發者生態里的重要性。

其次這是一個基于 JSON 的協議,JSON 可以說是最易讀的結構化數據格式了,大家看看各個代碼倉庫里的配置文件都是啥格式就知道這是個多么正確的決定了,現在還有人在新項目里用 XML 嗎?又一次——“簡單”。

再次,這是一個基于 JSONRPC 的協議,由于 JSON 的流行,各大語言都對它有極好的支持,所以開發者根本不需要處理序列化、反序列化一類的問題,這是實現層面的 “簡單”。

從這些細節可以看出,VS Code 團隊對當今技術趨勢的把握是相當精準的,他們決策充分考慮到了 “簡單”,牢牢抓住了社區開發者的心。

所以重要的事情說三遍:

  • 在做設計的時候一定要傾向于簡單
  • 在做設計的時候一定要傾向于簡單
  • 在做設計的時候一定要傾向于簡單

集大成的 Remote Development

去年五月,VS Code 發布了 Remote Development(VSCRD),有了它,我們可以在遠程環境(比如虛機、容器)里開一個 VS Code 工作區,然后用本地的 VS Code 連上去工作。

下圖說明了它的運行模式:

 

VSCRD 從本質上改善了遠程開發的體驗,與常用的遠程桌面共享相比,具體改進如下:

  • 響應迅速:VSCRD 所有的交互都在本地 UI 內完成,響應迅速;遠程桌面由于傳輸的是截屏畫面,數據往返延遲很大,卡頓是常態。
  • 沿用本地設置:VSCRD 的 UI 運行在本地,遵從所有本地設置,所以你依然可以使用自己所習慣的快捷鍵、布局、字體,避免了工作效率層面的開銷。
  • 數據傳輸開銷小:遠程桌面傳輸的是視頻數據,而 VS Code 傳輸是操作請求和響應,開銷與命令行相仿,卡頓的情況進一步改善。
  • 第三方插件可用:在遠程工作區里,不僅 VS Code 的原生功能可用,所有第三方插件的功能依然可用;遠程桌面的話,你得自己一個個裝好。
  • 遠程文件系統可用:遠程文件系統被完整映射到本地,這個兩者差不多。

那么 VSCRD 做了什么神奇的操作能夠實現以上效果呢?來看看它的架構圖:

 

其實答案都在前文有所提及:

  • 進程級別隔離的插件模型:Extension Host(也就是圖中的 VS Code Server)與主程序做到了物理級別的分離,那么把 Extension Host 在遠程或者本地跑沒有本質的區別。
  • UI 渲染與插件邏輯隔離,整齊劃一的插件行為:所有的插件的 UI 都由 VS Code 統一渲染,所以插件里面只有純業務邏輯,行為高度統一,跑在哪里都沒區別。
  • 高效的協議 LSP:VS Code 的兩大協議 LSP、DAP 都非常精簡,天然適合網絡延遲高的情況,用在遠程開發上再適合不過。

VS Code 團隊在架構上的決策無疑是非常有前瞻性的,與此同時,他們對細節的把握也是無可挑剔。

正因為有了如此扎實的工程基礎,VSCRD 這樣的功能才得以誕生,所以我認為這是集大成的作品。

還沒有嘗試過 VSCRD 的同學,這里再安利一下,它在以下場景中非常有用:

  • 開發環境配置起來很繁瑣,比如物聯網開發,需要自己安裝和配置各種工具和插件。

在 VSCRD 里,一個遠程工作區的模板即可搞定,如需安裝額外的工具,也就是改改 Dockerfile 的事情,非常簡單。在這里可以找到常用的編程語言和場景的模板。

  • 本地機器太弱,某些開發搞不了,比如機器學習,海量數據及和計算需求需要非常好的機器。

在 VSCRD 里,可以直接操作遠程文件系統,使用遠程計算資源。

最后

VS Code 像一顆耀眼的星星,吸引著成千上萬開發者為其添磚加瓦。從 VS Code 的成功中,我們看到了好的設計和工程實踐能創造多少奇跡。

放眼軟件產業,各個層面的模式不斷被刷新,讓人激動之余,也要求從業者不斷提高技能水平。

從個人學習的角度來看,了解這些模式誕生的前因后果,理解工程實踐中的決策過程是非常有利于提高工程能力的。

作者:李少俠

編輯:陶家龍

出處:zhuanlan.zhihu.com/p/35303567

 

責任編輯:武曉燕 來源: 知乎
相關推薦

2021-05-19 09:37:45

SessionTokencookie

2020-12-29 05:29:39

DockerK8s容器

2020-12-25 14:55:13

VS Code代碼編程

2020-04-29 08:04:11

NoSQLMySQLSQL

2021-12-30 19:36:48

GoDubboJava

2022-01-07 14:05:33

DubboGoJava

2012-04-06 10:35:30

SpringJavaHibernate

2021-08-10 18:54:48

射頻系統SMA

2021-12-02 06:34:34

GraylogELK日志

2022-07-13 07:06:47

HTTPSHTTP協議

2021-04-06 10:48:52

MySQLElasticsear數據庫

2021-12-03 10:46:49

ELKGraylog運維

2020-09-27 08:12:09

Nginx反向代理負載均衡

2020-07-20 14:09:36

Python編程語言注釋符

2023-10-10 08:24:12

2023-02-13 15:03:33

JDKJavaHotSpot

2021-07-08 06:52:41

ESClickHouse Lucene

2019-12-18 09:42:19

技術 Linux網絡

2021-11-02 16:44:40

部署DevtoolsJRebel

2009-07-07 17:18:57

Facelets介紹JSP與Facelet
點贊
收藏

51CTO技術棧公眾號

日韩精品福利在线| 亚洲柠檬福利资源导航| 7777精品视频| 极品人妻一区二区三区| 在线观看爽视频| 国产欧美日韩精品在线| 成人h猎奇视频网站| 欧美日韩成人免费观看| 男男gay无套免费视频欧美| 欧美日韩在线观看一区二区| 黄色一级大片免费| 麻豆app在线观看| 久久精品99国产精品日本| 欧美激情奇米色| 黄色片在线观看免费| 欧美日本三级| 日本高清成人免费播放| 国风产精品一区二区| 嫩草精品影院| 国产精品一区二区三区99| 欧美一性一乱一交一视频| 国产探花在线视频| 亚洲婷婷丁香| 欧美大片免费久久精品三p| 美女福利视频在线| 欧美hdxxx| 中文字幕一区二区不卡| 欧美大香线蕉线伊人久久| 国产又大又黄又爽| 久久九九99| 欧美夫妻性视频| а天堂中文在线资源| 精品深夜福利视频| 欧美一级精品在线| 日本肉体xxxx裸体xxx免费| 黄色漫画在线免费看| 亚洲精品五月天| 一级做a爰片久久| 福利视频在线看| 91在线国产观看| 国产精品国产精品| 国产女人高潮时对白| 美腿丝袜亚洲色图| 欧美自拍视频在线| 国产精品黄色网| 亚洲福利一区| 九九热这里只有在线精品视| www.97视频| 日本一区二区三区视频| 亚洲日本中文字幕| 中文字幕av网址| 台湾佬综合网| 日韩精品久久久久久久玫瑰园| 26uuu国产| 免费观看性欧美大片无片| 欧美妇女性影城| 中文字幕免费高清在线| 偷拍自拍亚洲| 91麻豆精品国产自产在线观看一区 | 大伊香蕉精品视频在线| 羞羞视频在线观看免费| 亚洲欧美日本在线| 日本美女爱爱视频| 天堂av最新在线| 一区二区三区色| 国产精品av免费观看| 男人天堂亚洲| 欧美日韩国内自拍| 国内外成人激情视频| 最新日韩精品| 在线免费观看日本欧美| 日韩肉感妇bbwbbwbbw| aaaa欧美| 欧美成人综合网站| 国产一卡二卡三卡四卡| 亚洲免费成人av在线| 亚洲四色影视在线观看| 日本不卡一区视频| 亚洲精品tv久久久久久久久久| 久久亚洲精品网站| 国产第一页在线播放| 国产日韩欧美三区| 国产精品久久中文| 国产精品怡红院| 丰满白嫩尤物一区二区| 免费毛片一区二区三区久久久| 成人在线播放视频| 亚洲欧美日韩综合aⅴ视频| 美女黄色免费看| 北岛玲heyzo一区二区| 欧美日韩国产片| 亚洲成a人无码| 国产精品亚洲人成在99www| www.久久久久| 日干夜干天天干| 蜜桃视频一区二区三区| av免费精品一区二区三区| 日本一本草久在线中文| 国产精品不卡在线观看| 欧美国产日韩激情| 99热播精品免费| 精品国产免费久久| 国产精品久久久久久久av| 欧美一区二区三区另类| 日韩av不卡在线| www.看毛片| 国产午夜精品在线观看| 精品人妻人人做人人爽| 91成人在线| 亚洲精品电影网| 久久av红桃一区二区禁漫| 一本一本久久| 91九色极品视频| 97电影在线看视频| 精品女厕一区二区三区| 91香蕉视频在线观看视频| 欧美人与动xxxxz0oz| 操日韩av在线电影| 国产日韩在线免费观看| 99久久精品免费看国产免费软件| 亚洲国产一区二区三区在线播| 国产福利片在线观看| 欧美日韩国产不卡| 在线免费观看成年人视频| 国内精品久久久久久久影视麻豆| 国产精品一区二区性色av| 亚洲aaa在线观看| 亚洲亚洲人成综合网络| 99日在线视频| 精品久久久中文字幕| 5252色成人免费视频| 国内毛片毛片毛片毛片| 中文字幕在线观看一区| 麻豆av免费在线| 成人动态视频| 欧美黄色片在线观看| 国产精品羞羞答答在线| 中文av字幕一区| 成人一区二区三| 牲欧美videos精品| 91精品国产99久久久久久| 亚洲欧美强伦一区二区| 亚洲视频免费观看| 91欧美一区二区三区| 国产精品7m凸凹视频分类| 国产精品免费久久久| 国产精品视频二区三区| 色婷婷综合五月| 久久久久国产精品区片区无码| 在线视频观看日韩| 动漫一区二区在线| 高清电影在线观看免费| 精品国精品自拍自在线| 久草成人在线视频| 成人丝袜视频网| 久操网在线观看| 成人午夜三级| 91chinesevideo永久地址| 天堂在线中文网| 激情av一区二区| 精品无人区无码乱码毛片国产| 久久精品导航| 午夜精品视频在线观看一区二区| 国内欧美日韩| 超在线视频97| 懂色av成人一区二区三区| 亚洲电影中文字幕在线观看| 性色av蜜臀av浪潮av老女人| 亚洲永久免费精品| 日韩av大全| 亚洲18在线| 欧美精品成人在线| 污视频软件在线观看| 色综合中文字幕国产| 少妇精品无码一区二区免费视频 | 91超碰caoporn97人人| 外国精品视频在线观看 | 好吊色一区二区三区| 午夜成人在线视频| 亚洲理论片在线观看| 麻豆国产精品视频| 女人帮男人橹视频播放| 亚洲高清极品| 亚洲va久久久噜噜噜| segui88久久综合9999| 亚洲欧美资源在线| 国产三级按摩推拿按摩| 亚洲国产成人av好男人在线观看| 四虎永久免费影院| 久久精品国产色蜜蜜麻豆| 精品国产一区二区三区无码| 精品日韩一区| 99国产超薄丝袜足j在线观看 | 色婷婷久久久综合中文字幕| 特黄一区二区三区| 成人激情免费网站| 蜜臀av免费观看| 在线日韩视频| 亚洲综合第一| 日本国产精品| 亚洲精品免费一区二区三区| 欧美成人免费电影| 九九热r在线视频精品| 男人久久精品| 精品国产一区a| 在线播放亚洲精品| 午夜精品久久久久久久久久| 99久久精品久久亚洲精品| bt欧美亚洲午夜电影天堂| 不卡的在线视频| 久久国产精品亚洲77777| 日韩人妻一区二区三区蜜桃视频| 国产影视精品一区二区三区| 国产精品二区在线观看| 欧美另类激情| 国产成人精品久久亚洲高清不卡 | 国产精品第2页| sis001亚洲原创区| 欧美xxxx综合视频| 在线激情网站| 亚洲一区二区福利| 午夜福利一区二区三区| 日韩一区二区三区在线| 中文字幕在线日亚洲9| 午夜电影一区二区三区| 九九九在线视频| 亚洲日本乱码在线观看| 久久久久亚洲AV成人无在| 26uuu国产在线精品一区二区| 久久精品无码一区二区三区毛片| 麻豆久久久久久久| 久久久国产欧美| 久久亚洲国产精品一区二区| www.99热这里只有精品| 很黄很黄激情成人| 麻豆视频传媒入口| 欧美在线精品一区| av电影一区二区三区| 99视频精品全部免费在线视频| 欧美一级二级三级| 九九热精品视频在线观看| 久久影视中文粉嫩av| 日韩av字幕| 精品网站在线看| 开心激情综合| 久久本道综合色狠狠五月| 久久综合社区| 鲁丝一区鲁丝二区鲁丝三区| 日韩成人动漫在线观看| 欧美国产一区二区在线| 免费av一区| 欧美成人综合一区| 欧美精品一区二区三区中文字幕| 日本视频一区二区不卡| 日韩电影在线视频| 亚洲一区二区三区免费观看| 欧美jizz| 男人草女人视频| 极品中文字幕一区| 777777av| 日韩国产欧美一区二区三区| 另类小说第一页| 精品亚洲porn| 日本泡妞xxxx免费视频软件| 成人免费视频一区二区| 国产又粗又猛又色| 久久色视频免费观看| www色com| 亚洲免费av观看| 九九九国产视频| 色av一区二区| 97国产精品久久久| 欧美成人高清电影在线| 婷婷五月综合久久中文字幕| 亚洲人成电影在线观看天堂色| av在线女优影院| 九九久久久久99精品| 女人高潮被爽到呻吟在线观看| 国产成人啪精品视频免费网| 全球最大av网站久久| 91精品国产91久久久久青草| 久久午夜影院| 伊人色综合影院| 136国产福利精品导航网址| 十八禁视频网站在线观看| 精品一区二区三区免费观看| 亚洲一区二区三区四区av| 久久久精品黄色| 国产性生活大片| 精品久久久一区二区| 中文字幕免费观看视频| 日韩欧美一级片| 国产中文字幕在线播放| 久久综合伊人77777尤物| 桃色av一区二区| 91视频九色网站| 免费短视频成人日韩| ijzzijzzij亚洲大全| 翔田千里一区二区| www.色欧美| 久久蜜桃一区二区| 欧美国产在线看| 日本道色综合久久| 色婷婷激情五月| 久久精品这里热有精品| 欧美黑人粗大| 国产精选一区二区| 欧美激情国产在线| 无码人妻丰满熟妇区五十路百度| 国产不卡视频在线播放| 久久午夜精品视频| 精品欧美国产一区二区三区| 99热这里只有精品1| 亚洲人成在线一二| 91在线三级| 97人人干人人| 香蕉综合视频| 天天爽人人爽夜夜爽| 91在线丨porny丨国产| 中文字幕另类日韩欧美亚洲嫩草| 欧美伊人久久大香线蕉综合69| 日韩一级片免费看| 欧美老少做受xxxx高潮| 日韩毛片免费看| 日韩福利视频| 欧美亚洲网站| 国产乱了高清露脸对白| 洋洋av久久久久久久一区| 97国产精品久久久| 最近2019中文免费高清视频观看www99| 成av人片在线观看www| 91国产在线播放| 亚洲国产成人精品女人| 午夜免费看视频| 国产精品福利一区| 中文字幕av网站| 一区二区欧美激情| 极品美女一区| 免费看成人午夜电影| 国产日韩1区| 亚洲一区二区三区四区五区六区| 亚洲va韩国va欧美va精品| 亚洲国产中文字幕在线| 久久国产精品久久久| 国产精品视频首页| 特色特色大片在线| 国产乱码精品一区二区三区五月婷| 色www亚洲国产阿娇yao| 欧美日韩中文字幕一区二区| 成人av毛片| 成人激情视频在线观看| 自拍视频亚洲| 在线观看欧美一区二区| 亚洲永久精品大片| 成人毛片在线精品国产| 欧美精品久久久久久久久| 国产极品模特精品一二| 欧美 日韩 亚洲 一区| 91伊人久久大香线蕉| 天天干天天干天天| 亚洲人线精品午夜| 天天综合91| www.xxx麻豆| 久久综合九色综合欧美亚洲| 五月天婷婷导航| 中文字幕无线精品亚洲乱码一区| 日本成人一区二区| 成人污网站在线观看| 成人免费的视频| 精品国产乱子伦| 久久精品国产一区二区三区| 一区二区三区亚洲变态调教大结局| 超碰成人免费在线| 久久久久高清精品| 97精品人妻一区二区三区| 欧美理论片在线观看| 亚洲bt欧美bt精品777| 无人在线观看的免费高清视频| 中文字幕一区二区三区av | 国产一区二区三区直播精品电影 | 欧美aaaaa喷水| 麻豆成人久久精品二区三区小说| 国产精品三区在线观看| 日韩av一区二区在线| 国产成人精品一区二区三区在线 | 超碰激情在线| 亚洲激情一区二区三区| 成人小视频免费在线观看| 国产精品乱码一区二区视频| 精品国产一区二区三区久久久狼 | 亚洲天天在线日亚洲洲精| 99er精品视频| 日韩欧美视频网站| 最新日韩av在线| 视频三区在线观看| 91精品一区二区| 久久av最新网址| 青青草手机在线视频| 夜夜嗨av色一区二区不卡| 亚洲综合色婷婷在线观看|