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

陋見:從商業到開源的一些思考

開源
開源項目通常有一個非常突出的特點:人力緊缺,畢竟能全心全意為愛發電的人并不多,多數時候,參與者是在本職工作(解決生存問題)之外,花費個人寶貴的休息時間參與開源(解決情懷問題),因而能投入的有效時間非常有限。

本文討論了 商業項目 vs 開源項目 在多個方面的差異,關鍵要點包括:

  • 交付品:開源項目交付品更復雜,源碼、開發過程等都需透明,對各方面要求更高。
  • 工程化:開源項目人力緊缺,對工程化、自動化需求更高,需預先設計搭建適用環境。
  • 自動化測試:開源項目對自動化測試要求高,需體系化設計測試系統。
  • 依賴管理:開源項目依賴管理需更嚴格,要合理設計依賴結構,降低復雜性。
  • 溝通:開源項目多使用異步溝通工具,如 Github Issue 等,可配合工程化手段提升效率。

前言

在正式開始討論之前,需要各位讀者先思考一個問題:開源的收益是什么?具體答案在不同上下文中可能略有偏差,但大致上至少有這兩方面的收益:

  1. 擴大個人或團隊影響力:讓社區更多人了解到有這么個擅長解決某一問題的個人或團隊,甚至成為這個方向的權威人物,擁有更大話語權,參考 @evan、@zack、@Langchain 等;
  2. 生態共建:理想情況下,開源方式更容易引入更多優秀工程師參與到產品開發中,群策群力,對需求與問題更敏感,因而迭代速度可能更快,相比人數有限的商業團隊更有可能開發出滿足諸多長尾需求的技術產品;

這些收益能切實解決許多現實問題,因而對許多從業者而言“開源”似乎已經某種程度上成為“政治正確”的默認選項,于是經常出現一些團隊或個人,在沒有做好充分調研的情況下,匆忙進入開源領域,“天真”(這個詞確實不太好聽)地認為只要將代碼掛載在 Github 上“開放”給社區就算是達到開源狀態了,但通常 后繼乏力,即使堅持投入時間精力許多時候也很難達到預期目標,究其根本,我認為主因在于:許多人并沒有意識,商業開發與開源開發是兩件差異極大的事情!

說來慚愧,雖然我已經從事前端超過 10 年,但從未正式參與過稍具影響力的開源項目,因此我個人更熟悉商業項目的運作方式 —— 相信這也是大多數讀者的真實狀態,好在工作關系日常需要深入理解各類開源產品的底層實現,多多少少也摸索出了一些門道,對商業項目與開源項目的區同點有了一些自己的看法,拋磚引玉吧。

商業項目 vs 開源項目

首先,商業項目通常只需要交付應用的最終執行界面即可,因此相對更著重于滿足功能、穩定性、性能等方面的需求,具體實現細節從外部視角看完全是個黑盒。但開源項目的交付品要復雜的多,在功能基礎上,所有源碼、開發過程、工程設施甚至溝通討論過程都是對外透明的,因此開源產品不僅僅要對結果負責,還需要對過程負責,也因此對于優秀的開源項目而言,代碼質量、穩定性、接口易用性、可擴展性、分支模型、開發規范、版本管理、工程化設施等等維度,都是產品的一部分,都需要仔細斟酌維護的。

舉一個非常細節的例子:分支模型,分支應該如何命名?那些分支可以往那些分支合并?特性分支何時合入主干分支?那些分支必須確保穩定,又如何確保穩定?進一步的,那些分支可以發布正式版本?什么時候應該打什么 Tag?是否需要保持 Linear-history ?等等。

并且分支模型規范還必須足夠簡單,讓各類背景的開發者能迅速參與到項目;最好還可以補充一些自動化工具,確保參與者不犯低級錯誤。國內許多商業團隊可能已經習慣于火車模型 —— 本質上是 FBD 的變種,但這種方式太過復雜,理解、操作成本過高,多數情況下并不適配開源環境,因此多數時候會轉而采用 TBD,但 TBD 模型對穩定性要求極高,進而又催生非常復雜而重要的自動化測試需求。

圖片圖片

再比如說,版本管理,我們都知道 semver 模型(參考:NPM 依賴管理的復雜性),但什么時候應該發 patch,什么時候應該發 minor 呢?判斷標準是什么?誰來做這個判斷?什么時候能從 0.x 切換到 1.0 呢?是否需要保持向后兼容?又有哪些特性、接口需要保持向后兼容?總之,當你預期開發一個優秀的開源項目時,你必須仔細思考這些平時并不需要關注的問題,否則在未來總會引發一些技術、PR 風險。

當然,這并不是說開源就必然比商業項目更難更復雜,相反,許多優秀開源項目通常只聚焦于解決某個具體問題,并在架構上留出足夠靈活的邏輯插槽,交由社區按需擴展實現各類長尾需求,例如 Webpack、ESLint、 RSPack、Vite 等等,因此開源項目通常有比較高的技術復雜度,但功能通常是非常收斂的。反觀商業產品的功能復雜度幾乎沒有上限,例如淘寶、抖音、火山引擎等,當功能足夠復雜時,也必然會反推整體架構、技術復雜度的非線性增長,雖然可能內在的許多技術細節并不是最優,也不具備可遷移復用性,但也不能否認這里面存在深層次的技術難度。因此,我認為兩者并沒有絕對優劣之分,歸根結底只是在解決不同場景下的不同問題罷了,并沒有明顯的優劣之分。

我認為更重要的,在進入開源之前一定要理解這件事情的成本與收益,理解各類工程處理細節的差異,評估 ROI 是否能打正,團隊是否有足夠能力與技術品味等等,切忌為了開源而開源。

工程化

開源項目通常有一個非常突出的特點:人力緊缺,畢竟能全心全意為愛發電的人并不多,多數時候,參與者是在本職工作(解決生存問題)之外,花費個人寶貴的休息時間參與開源(解決情懷問題),因而能投入的有效時間非常有限。但同時,優秀的開源項目通常有比較高的準入門檻,且不說深入理解項目的實現原理、架構設計,之后提交符合整體設計、代碼風格的 PR,光是理解如何初始化環境并運行項目、如何提交有意義的 PR、如何按照提交高質量 ISSUE,可能已經需要耗費比較多的學習時間。

而站在項目管理者視角,當參與開發的人數到達一定數量時,成員良莠不齊必然會衍生一系列過程質量問題,例如提交一堆連單測都跑不通的 PR,又如未按各類規范準則編寫代碼,再如提交的代碼存在明顯性能問題等等。原則上,問題越早發現修復成本越低,因此要求倉庫管理者們投入比較多的時間精力前置做好質量把控,攔住這部分低質量開發行為。

這兩類案例,究其根本都是時間、空間復雜度問題。在商業項目中,可以通過配置分工合理的團隊結構,完善開發流程及規范,在有限空間復雜度內通過增加人力與行為約束的方式緩解團隊協作引發的熵增。

但開源項目不可能采用這種方案,因為參與項目的群體可能比較龐大且地理位置分布廣泛,技術水平參差不齊,文化背景多種多樣,很難照搬商業公司的管理模式,將每一位成員按在特定的職責范圍上 —— 多數情況,反而是由個體按照其擅長的領域自發地解決某些特定問題(實際上這也正是開源的魅力所在),但這種個體視角的解決方案在倉庫上下文環境中不一定是最優的;其次,在開源環境中通常也很難通過規范文檔方式約束個體的開發行為,即使編撰了一堆完美的開發說明書,一是很少有人有耐心完整看完,并認可;二是文檔約束力非常薄弱,需要配置相應監督者持續關注研發細節,而這很不敏捷。

這些問題最終會導向一個相對可行的解決方案:工程化。注意,工程化并不僅僅是一堆工具的簡單堆疊,而是一個復雜、綜合的工程學問題,通常,開源環境對工程化、自動化的需求要遠高于商業項目,不僅需要配置好常見的 Bundle、Lint、UT、E2E 等基礎設施,還需要根據具體場景進一步搭建各類自動化工作流。

在發起開源項目時,非常值得投入一部分精力預先設計、搭建好適用的工程化環境,因為這些自動化流程能夠長期以極低的成本防止項目質量劣化 —— 至少能規避許多來自四海八方的低級問題,減少管理者審核負擔;能在出錯時及時給出適當反饋,降低項目的準入門檻;也能規范化各類關鍵流程,避免人的隨機性帶來的隨機謬誤。

當然,工程化也并不是銀彈,有許多邊界問題無法或很難被自動化解決,例如項目架構設計是否足夠優秀,或者用戶文檔是否足夠完備清晰,又或者整體項目規劃等,這類問題依然強依賴于人力介入。

自動化測試

這是需要著重強調的點:開源項目對自動化測試的要求比常規商業項目高出許多!商業團隊通常會設置專職測試者定期檢查產品的質量情況,對最終質量負責 —— 或者至少起兜底作用吧。但如上所述,開源項目很難出現這類專職角色,因而開發者自身直接對產品質量負責,需要親自完成各類測試動作,但為愛發電的開發者們很難投入時間反復做各類測試,也很難做的很細致。

因此,在開源項目中很自然地采用了另一種更敏捷,對人力需求更低的方案 —— 自動化測試,由代碼負責測試代碼的穩定性。具體的測試技術有很多類型,單元測試、E2E 測試、性能測試、接口測試等等,視乎具體情況,許多優質開源項目會采用其中一種或多種自動測試方案,為功能代碼編寫若干測試用例,之后在合碼前、發布前等關鍵節點設置卡口,執行測試代碼,當所有用例都能運行通過,且測試覆蓋率達標后才能繼續推進流程。

某種程度上,測試用例就是項目成員之間的一種非文檔性質的強約束契約,任何人嘗試修改代碼時都必須遵循這份契約,必須保證存量用例都能運行通過 —— 或者,必要時更新這些契約以適應功能代碼的迭代。雖然開發和維護用例代碼本身也是一件比較消耗時間的工作,但這份契約定義的越是詳細,覆蓋面越廣,越是不容易犯錯,即使是完全不了解項目上下文的新人,也能夠在缺乏第三者協助的情況下,單純依靠測試框架及其它質檢工具,就可以寫出符合要求的代碼,而這很契合開源項目的人力分布特點。

理論上測試用例越是完整,項目整體質量越是穩定,但自動化測試也是有技術門檻與人力成本的,要達到上述的理想狀態并不是容易,需要體系化設計測試系統,常見的手段包括:

  1. 借助單元測試(UT)技術實現白盒測試,覆蓋代碼模塊內部的各邏輯分支。需要注意的是,單純追求覆蓋率其實意義不大,而應該進一步思考并推導出各類邏輯上的邊界場景(雖然這很難) —— 特別是異步、并發等復雜時序場景。舉個例子,在測試一個按鈕組件時,不僅要驗證它的基本功能,還要設計用例來測試連續點擊是否會導致事件的連續觸發;
  2. 借助 E2E 技術,對產品界面做黑盒測試,從最終用戶視角與產品交互,驗證過程與結果的正確性。相比于單測,這種測試方案更關注代碼模塊集成后的運行效果,更接近用戶體驗,適合作為 UT 的一種補充;
  3. 其次,必要時還可以使用 Benchmark 等工具對產品的核心算法,或執行頻率較高的代碼片段補充性能測試,保證性能下限。

等等。

依賴管理

依賴管理是一個較為復雜的工程問題(詳見:《NPM 依賴管理的復雜性》),若處理不當,容易引發性能、穩定性等質量問題,因此理論上,無論是商業項目還是開源項目,通常都需要設計一些精細的管理方法,控制三方依賴的使用情況,避免濫用。而對于 NPM Package 形態的產品而言,這類管控措施需要更加嚴格一些 —— 許多開源項目最終提供的使用方式也正恰恰是 NPM Package 形態。

在使用 npm/pnpm/yarn 等包管理器安裝 Package 時,工具會向下遞歸分析并安裝依賴下游的所有子孫依賴,因此對用戶而言,每增加一個 Package 就需要導入該依賴對應的依賴關系圖,最終依賴結構越復雜越是容易出問題,包括:

  • 容易出現依賴安裝的性能問題;
  • 底層依賴的問題會向上擴散,影響上層應用穩定性;
  • 依賴關系圖不穩定,實際安裝版本容易出現大范圍變動,最終影響項目穩定性;
  • 容易出現重復依賴,例如 NPM Package 聲明了 lodash@1.2.0 依賴,而用戶的 package.json 中也聲明了 lodash@1.3.0 依賴,那么最終會在用戶項目就需要安裝兩個 lodash 版本;

圖片圖片

毫不夸張的說,NPM Package 的子依賴數量越多,性能與穩定性越差,用戶的使用成本就越高,進而會給人一種強烈的“難用”的感覺。因此在這類場景中務必保持一定的克制,合理設計依賴結構,盡可能降低依賴圖的復雜性,為此可以視情況有意識地采用一些緩解手段,例如:

  • 可以將一些相對簡單的代碼片段(例如:escape-string-regexp)直接復制進倉庫中,不必為此額外增加子依賴項。雖然在軟件工程中,“復制”通常為人所不屑,但適當的冗余確實能非常有效降低方案復雜性;
  • 也可以將一些簡單依賴與項目代碼整體打包成一個 Bundle 文件,同時將子依賴聲明為 devDependencies 類型,避免在用戶側重復安裝。這種方式本質上就是子依賴以快照方式與項目代碼捆綁發布,雖然也存在一定冗余,但不會受到子依賴版本變化的影響,穩定性與性能相對更好一些;
  • 對于復雜依賴,也可以考慮將其設置為 peerDependencies,由用戶自行管理三方依賴版本,雖然這可能會引發其它復雜問題,但能有效避免沖突。

歸根結底,依賴管理容易被忽視但又比較復雜,處理不當會直接影響用戶口碑,推薦讀者擴展閱讀《NPM 依賴管理的復雜性》一文,更深入了解前因后果,以及關于依賴管理的各類最佳實踐。

溝通

商業開發團隊通常會采用一些 IM 軟件(飛書、企業微信、Bear Chat 等)作為主要溝通手段。但在開源項目中很少見到使用 IM 的情況,多數時候更偏向于使用 Github Issue、Disco、Reditt 等工具溝通各類項目細節,如 Bug 反饋、RFC、用法咨詢等。

雖然這類論壇形態的工具遠不如 IM 即時溝通帶來的高效率與便利性,但確實存在許多特質使之成為開源項目的首選,包括:

  1. 這類工具以 Timeline 形態組織信息流,圍繞特定話題展開討論,使得溝通主題非常聚焦,不容易發散走偏,信噪比會高出許多;
  2. 足夠開放,甚至幾近透明,任何人都可以極低的門檻進入這類信息環境;同時,非常有利于搜索引擎檢索;
  3. 歷史記錄更容易追溯,方便新人了解歷史上下文,使得這類 Issue 本身自然形成項目文檔的一部分;
  4. 開源項目成員來自世界各地,時區對不上,實時溝通意義不大,天然更適合使用異步溝通工具。

因此,推薦在開源環境中優先使用 Github Issue、Disco 等工具作為主流溝通手段,雖然這會部分喪失 IM 實時性帶來的溝通效率。

不過,可能很多同學沒有定期看郵箱或 Github Notice 的習慣,接觸開源項目的前期可能比較難適應這一點,所幸這類工具都提供了非常便利的開放接口體系,可借此設計實現一些自動化工具提升信息流轉效率,例如在 Github Issue 中可以使用 Github Actions 實現:

  1. 監聽 Issue 變化,回調 IM 接口(例如飛書:feishu-bot-webhook-action)將動態轉發到對應群組,提升實時性;
  2. 定期匯總活躍 Issue、PR 等,整理成報表發送到 IM 軟件,避免信息阻塞;
  3. 定期關閉不活躍 Issue,避免信息泛濫;
  4. 配合 LLM,在創建 Issue 后由 AI 分析內容,自動給出初步反饋;
  5. 等等,不一而足。

總之,開源環境不推薦使用 IM 作為主要溝通手段,建議切換為 Github Issue 等異步溝通工具,之后配合各類工程化手段提升信息流轉效率即可。

最后

文章內容比較散,雖然聊了很多,但實際上開源與商業的差異遠不止如此,這里只是蜻蜓點水,求個拋磚引玉吧。但最核心的,我認為商業團隊在進軍開源領域之前,務必先停下來,想清楚預期與成本,以及兩者之間文化差異所帶來的解決問題的方式方法上的變化。

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

2011-12-12 11:00:45

OpenStack開源商業

2020-02-03 16:03:36

疫情思考

2009-06-25 09:50:32

JSF

2011-11-30 15:57:18

2011-08-01 10:37:29

軟件項目管理

2018-06-14 09:35:35

2021-06-10 10:02:19

優化緩存性能

2020-07-14 09:23:49

安全運營甲方乙方

2019-09-17 09:21:01

2018-07-11 14:06:04

數據質量數據治理數據清洗

2017-12-21 07:54:07

2017-09-01 12:48:34

DevSecOps安全運維

2021-01-14 23:24:38

incaseforma蠕蟲病毒

2013-04-19 10:01:19

jQueryJS

2022-06-16 14:59:34

端到端語音翻譯系統對話翻譯翻譯模型

2019-08-15 14:33:26

2012-12-19 09:36:49

測試自動化測試

2020-08-20 10:16:56

Golang錯誤處理數據

2024-12-27 10:51:53

2009-08-27 11:02:22

JavaScript事
點贊
收藏

51CTO技術棧公眾號

国产精品国产三级国产aⅴ原创| 中文字幕免费精品| 色先锋资源久久综合| 欧美日本韩国一区二区三区| 超碰在线97观看| 国产精品久久久久久久久久10秀| 欧美草草影院在线视频| 欧美 国产 日本| 国产成人在线视频免费观看| www.亚洲免费av| 国产精品爽爽爽爽爽爽在线观看| 免费在线一级片| 日产午夜精品一线二线三线| 日韩免费在线观看| 国产又粗又长又大的视频| 在线看一级片| 国产精品免费观看视频| 精品国产一区二区三区四区vr | 三级a在线观看| 色视频在线观看免费| 久久精品国产一区二区| 国产91成人在在线播放| 亚洲色图综合区| 国产欧美日韩视频在线| 欧美不卡一区二区| www.夜夜爽| 成人欧美一区二区三区的电影| 亚洲欧美视频在线观看视频| 青青草成人激情在线| 六月婷婷综合网| 九一久久久久久| 国产成+人+综合+亚洲欧美丁香花| 久久一区二区三| 99精品电影| 国产一区二区三区视频| a天堂视频在线观看| 日本一区二区三区电影免费观看 | 操日韩av在线电影| 91资源在线播放| 蜜乳av综合| 欧美精品一区二区高清在线观看| 亚洲日本黄色片| 黑人一区二区三区| 欧美视频自拍偷拍| 亚洲成人av免费看| 日韩精品专区| 色婷婷av一区| 最近免费中文字幕中文高清百度| 麻豆网站免费在线观看| 欧美日韩国产区| 免费看国产一级片| 白白色在线观看| 亚洲一区二区三区四区的| 日本大胆人体视频| 香蕉久久aⅴ一区二区三区| 亚洲欧洲精品天堂一级| 一区二区三区四区国产| 日本中文字幕在线观看| 国产精品欧美久久久久一区二区| 无码免费一区二区三区免费播放 | 欧美激情一区| 欧美日韩一级二级| 天天色综合社区| 亚洲欧美综合久久久久久v动漫| 欧美特级限制片免费在线观看| 国产精品久久久毛片| 欧美三级电影网址| 91精品国产aⅴ一区二区| 久久久久亚洲av片无码v| av成人资源| 亚洲国产中文字幕在线观看| 成人网站免费观看| 不卡日本视频| 久久手机精品视频| 久久国产精品波多野结衣av| 国产亚洲精品v| 国产精品久久久久7777婷婷| 夜夜狠狠擅视频| 国产丶欧美丶日本不卡视频| 国产欧美在线一区二区| 久草在线青青草| 亚洲色大成网站www久久九九| 激情五月六月婷婷| 成人短视频app| 欧美群妇大交群中文字幕| 巨乳女教师的诱惑| 亚洲精品国产动漫| 久久精品色欧美aⅴ一区二区| 九九热精彩视频| 久久一区亚洲| 91色视频在线导航| 亚洲人成色777777老人头| 国产欧美一区二区三区沐欲| 精品嫩模一区二区三区| 色黄视频在线观看| 69堂成人精品免费视频| 欧美一区二区免费在线观看| 欧美日韩伦理在线免费| 色综合老司机第九色激情| 欧美精品韩国精品| 久久99精品国产麻豆不卡| 国产欧美欧洲| 永久av在线| 岛国精品视频在线播放| 午夜国产福利在线观看| 青青草原在线亚洲| 日韩在线播放视频| 天码人妻一区二区三区在线看| 少女频道在线观看高清 | 岛国精品一区二区三区| 精品福利久久久| 久久久久久香蕉网| 一区二区视频免费| 97久久精品人人爽人人爽蜜臀| 伊人久久大香线蕉成人综合网| 色是在线视频| 精品国产91乱码一区二区三区 | 成人在线免费观看91| 91精品国产乱码久久久久久久久| 国产免费不卡av| 国产午夜亚洲精品午夜鲁丝片| 国产夫妻自拍一区| 国产精品一区二区三区四区在线观看| 亚洲免费电影在线观看| 国产主播在线播放| 国内国产精品久久| 亚洲午夜在线观看| 欧美专区福利免费| 日韩成人在线电影网| 欧美成人国产精品高潮| 国产在线观看免费一区| 亚洲成人自拍视频| 香蕉久久免费电影| 日韩国产高清视频在线| 日本少妇激情舌吻| 国产a久久麻豆| 黄色片免费在线观看视频| 亚洲精品tv| 日韩小视频在线观看| 中文字幕黄色av| 欧美激情综合五月色丁香小说| 蜜臀av午夜一区二区三区| 亚洲精品进入| 日本精品一区二区三区在线播放视频 | 国产在线精彩视频| 精品少妇一区二区三区视频免付费| www.xx日本| 久久av中文字幕片| 一区二区三区的久久的视频| 欧美成人一二区| 日韩中文字幕久久| 国产精品探花视频| 亚洲免费资源在线播放| 国产精品一级无码| 日本网站免费观看| 一区二区三区国产盗摄| 狠狠干一区二区| 久草在线资源福利站| 日韩精品欧美国产精品忘忧草| 欧美另类一区二区| 国产午夜久久久久| www.涩涩涩| 一区二区中文| 国产精品区二区三区日本| 9999热视频在线观看| 亚洲另类图片色| 最好看的日本字幕mv视频大全| 欧美激情综合网| 国产一级片中文字幕| 激情欧美日韩| 欧美一级爽aaaaa大片| 日韩一级二级| 欧美猛少妇色xxxxx| 天堂v视频永久在线播放| 欧美午夜精品一区| 九九热精品在线观看| 91丨porny丨首页| 亚洲36d大奶网| 国产一区久久| 色一情一区二区三区四区| 国产精品美女久久久久人| 国自在线精品视频| 第一福利在线| 精品国产一区二区三区不卡| 日本a级c片免费看三区| 亚洲欧美日韩人成在线播放| 国产免费一区二区三区最新6| 天堂成人国产精品一区| 久久最新免费视频| 香蕉久久夜色精品国产使用方法| 国产精品日本精品| 国产网红在线观看| 一区二区三区精品99久久| 国产成人精品av在线观| 色婷婷av一区| 久久一级黄色片| 国产精品色一区二区三区| 4438x全国最大成人| 久久久久国产一区二区| 久青草视频在线播放| 教室别恋欧美无删减版| 91精品国产91久久久久青草| 性xxxxfreexxxxx欧美丶| 欧美成人精品在线| 国模吧精品人体gogo| 精品国一区二区三区| 久久精品99北条麻妃| 亚洲第一在线综合网站| 亚洲女人久久久| 久久不卡日韩美女| 欧美日韩激情小视频| av成人免费网站| 欧美国产日韩亚洲一区| 中文字幕乱码在线| 国产精品一二一区| 欧美伦理片在线观看| 久久福利一区| 欧美高清中文字幕| 一区二区三区网站| 亚洲一区二区精品在线| 视频精品在线观看| 精品无人区一区二区三区 | 久久久久久草| 日韩精品一区二区三区中文| 国产一区二区在线免费视频| 欧美不卡高清一区二区三区| 欧美在线免费观看| 色www免费视频| 亚洲国产福利视频| 亚洲精品国产成人久久av盗摄| 天天干天天舔天天操| 91麻豆视频网站| 亚洲av成人精品一区二区三区| 国产剧情一区二区| 欧美大片久久久| 久久国产精品免费| 午夜免费看视频| 蜜桃91丨九色丨蝌蚪91桃色| 99视频精品免费| 久久综合伊人| 成人免费无码av| 日韩精品成人一区二区三区| 国产日韩一区二区在线观看| 香蕉久久国产| 国产97色在线 | 日韩| 肉丝袜脚交视频一区二区| 日本在线观看a| 视频在线在亚洲| 欧美日韩怡红院| 蜜臀av在线播放一区二区三区 | 欧美中文字幕精在线不卡| 欧美综合第一页| 成人视屏在线观看| 国产精品久久久久久av福利软件| 亚洲欧美在线成人| 国产精品免费一区豆花| 欧美日韩伦理一区二区| 92裸体在线视频网站| 日韩一二三区| 狠狠色综合网站久久久久久久| 久久久久观看| 麻豆视频成人| 欧美日韩激情在线一区二区三区| 影音欧美亚洲| 激情综合网址| 国产成人a亚洲精v品无码| 欧美一级特黄高清视频| 国产午夜精品理论片a级大结局| 日本高清黄色片| 综合激情成人伊人| 国产一级大片在线观看| 性欧美大战久久久久久久久| 亚洲自拍一区在线观看| 欧美吻胸吃奶大尺度电影| 97精品人妻一区二区三区| 日韩精品专区在线影院观看| 四虎在线视频| 爽爽爽爽爽爽爽成人免费观看| 成人短视频在线| 97成人精品视频在线观看| 色尼玛亚洲综合影院| 成人免费在线网址| 高清一区二区三区| 日韩免费一区二区三区| 欧美精品黄色| 欧美丰满熟妇xxxxx| 国产精品白丝av| wwwwww日本| 亚洲色图19p| 东京热一区二区三区四区| 3d成人h动漫网站入口| 午夜成人鲁丝片午夜精品| 在线看日韩av| 欧美裸体视频| 成人网址在线观看| 免费欧美激情| www插插插无码免费视频网站| 三级久久三级久久久| 人妻 丝袜美腿 中文字幕| 国产色爱av资源综合区| 久久免费播放视频| 欧美影院精品一区| 欧美一区二区三区黄片| 日韩在线播放一区| 中文字幕资源网在线观看免费 | 天天天综合网| 18禁男女爽爽爽午夜网站免费| 国产精品原创巨作av| 久久久久久久久福利| 精品久久久久久久中文字幕 | 伊人久久久久久久久久久久 | 亚洲最大的免费| 欧美人妖在线| 久久久亚洲国产精品| 激情亚洲综合在线| 亚洲а∨天堂久久精品2021| 性欧美疯狂xxxxbbbb| www.蜜臀av| www.久久久久久.com| 欧美与亚洲与日本直播| 久久久综合亚洲91久久98| 国内揄拍国内精品久久| 中文字幕线观看| 国产精品女主播在线观看| 亚洲人成免费电影| 亚洲av成人精品毛片| 欧美日韩福利电影| 亚洲伊人伊成久久人综合网| 欧美一区视久久| 亚洲一区二区三区高清不卡| 国产女人18毛片水真多18| 亚洲一区在线播放| 99久久久国产精品无码网爆| 日韩在线免费视频| 99riav视频一区二区| 日本不卡在线观看| 久久免费黄色| 波多野结衣av在线观看| 欧美性生交大片免费| 日韩欧美在线观看一区二区| 97色在线播放视频| 久久精品色综合| 国产白丝袜美女久久久久| 成人av电影免费在线播放| 麻豆一区二区三区精品视频| 精品免费一区二区三区| 黄色小说在线播放| 国产欧美日韩视频一区二区三区| 亚洲国产一区二区精品专区| 中文成人无字幕乱码精品区| 亚洲h精品动漫在线观看| 天天干视频在线| 91av福利视频| 视频一区在线观看| 91网址在线播放| 国产精品乱人伦| 国产麻豆免费视频| 欧美激情区在线播放| 国产精品qvod| 可以免费观看av毛片| 中文在线资源观看网站视频免费不卡 | 亚洲欧美高清在线| 亚洲va欧美va天堂v国产综合| 视频三区在线观看| 国产精品91久久久久久| 日本女优一区| 日本女人性视频| 偷窥少妇高潮呻吟av久久免费| 神马精品久久| 国产精品欧美日韩一区二区| 66视频精品| 欧美夫妇交换xxx| 色婷婷综合五月| 欧美成人性生活视频| 成人xxxxx色| 快she精品国产999| 日韩三级久久久| 精品欧美乱码久久久久久| 色是在线视频| 偷拍盗摄高潮叫床对白清晰| 成熟亚洲日本毛茸茸凸凹| 4438国产精品一区二区| 日韩中文字在线| 风间由美一区二区av101| 亚洲中文字幕久久精品无码喷水| 亚洲色图丝袜美腿| 欧美一区二区视频| 91日韩在线视频| 久久婷婷激情| 九九视频免费在线观看| 亚洲网站视频福利| 日韩高清二区| 超碰在线97免费| 亚洲国产精品久久久男人的天堂| 国产免费a∨片在线观看不卡| 91嫩草在线| 奇米精品一区二区三区四区| 国产在线观看免费av| 日韩最新在线视频| 日本中文字幕在线一区|