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

Go原生插件使用問題全解析

開發 前端
通常而言,在計算機編程語言領域,“運行時”的概念和一些需要使用到vm的語言相關。程序的運行由兩個部分組成:目標代碼和“虛擬機”。比如最為典型的JAVA,即Java Class + JRE。

一、導言

本人在設計和落地基于Go原生插件機制的擴展開發產品時踩到了很多坑,由于這方面相關資料很少,因而借此機會做一個非常粗淺的總結,希望能對大家有所幫助。

本文只說問題和解決方案,不讀代碼。

二、一些背景知識

2.1 運行時

通常而言,在計算機編程語言領域,“運行時”的概念和一些需要使用到vm的語言相關。程序的運行由兩個部分組成:目標代碼和“虛擬機”。比如最為典型的JAVA,即Java Class + JRE。對于一些看似不需要“虛擬機”的編程語言,就不太會有“運行時”的概念,程序的運行只需要一個部分,即目標代碼。但事實上,即使是C/C++,也有“運行時”,即它所運行平臺的OS/Lib。

Go也是一樣,因為運行Go程序不需要前置部署類似于JRE的“運行時”,所以它看起來似乎跟“虛擬機”或者“運行時”沒啥關系。但事實上,Go語言的“運行時”被編譯器編譯成了二進制目標代碼的一部分。

圖片

圖2-1. Java程序、runtime和OS關系

圖片

??圖2-2. C/C++程序、runtime和OS關系?? 

圖片

圖2-3. Go程序、runtime和OS關系?

2.2 Go原生插件機制

作為一個看起來更貼近C/C++技術棧的Go語言來說,支持類似動態鏈接庫的擴展一直是社區中較為強烈的訴求。如圖2-5,Go在標準庫中專門提供了一個plugin 包,作為插件的語言級編程界面,src/plugin 包的本質是使用cgo機制調用unix的標準接口:dlopen() 和dlsym() 。因此,它給C/C++背景的程序員一種“這題我會”的錯覺。

圖片

圖2-4. C/C++程序加載動態鏈接庫

圖片

圖2-5. Go程序加載動態鏈接庫

典型問題解決

很遺憾,與C/C++技術棧相比,Go的插件的產出物雖然也是一個動態鏈接庫文件,但它對于插件的開發、使用有一系列很復雜的內置約束。更令人頭大的是,Go語言不但沒有對這些約束進行系統性的介紹,甚至寫了一些比較差的設計和實現,導致插件相關問題的排錯非常反人類。本章節重點跟大家一起看下,在開發、使用Go插件,主要是編譯、加載插件的時候,最常見、但必須定位到Go標準庫(主要包括編譯器、鏈接器、打包器和運行時部分)源碼才能完全弄明白的幾個問題,及對應的解決方法。?

簡而言之,Go的主程序在加載plugin時,會在“runtime”里對兩者進行一堆約束檢查,包括但不限于:

  • go version一致
  • go path一致
  • go dependency的交集一致

代碼一致

path一致

  • go build 某些flag一致

3.1 不一致的標準庫版本

主程序加載插件時報錯:

plugin was built with a different version of package runtime/internal/sys

從這個報錯的文本可以得知,具體有問題的庫是runtime/internal/sys ,很顯然這是一個go的內置標準庫。看到這里,你可能會有很大的疑惑:我明明用的是同一個本地環境編譯主程序和插件,為什么報標準庫不是一個版本?

答案是,go的error日志描述不準確。而這個報錯出現的根本原因可以歸結為:主程序和插件的某些關鍵編譯flag不一致,跟“版本”沒啥關系。?

比如,你使用下面的命令編譯插件:

GO111MODULE=on go build --buildmode=plugin -mod readonly -o ./codec.so ./codec.go

但是你使用goland的debug模式調試主程序,此時,goland會幫你把go build命令按下面的例子組裝好:

/usr/local/go/bin/go test -c -o /private/var/folders/gy/2zv22t710sd7m0x9bcfzq23r0000gp/T/GoLand/___Test_TaskC_in_github_com_fdingiit_mpl_test.test -gcflags all=-N -l github.com/fdingiit/mpl/test #gosetup

注意,goland組裝的編譯命令里包含關鍵的-gcflags all=-N -l 參數,但是插件編譯的命令里沒有。此時,你在嘗試拉起插件時就會得到一個有關runtime/internal/sys的報錯。?

圖片

圖3-1. 編譯flag不一致導致的加載失敗

解決這一類標準庫版本不一致問題的方案比較簡單:盡可能對齊主程序和插件編譯的flag。事實上,有一些flag是不影響插件加載的,你可以在具體的實踐中慢慢摸索。

3.2 不一致的第三方庫版本

如果你使用vendor來管理Go的依賴庫,那么當解決3.1的問題之后,你100%會立即遇到以下這個報錯:

plugin was built with a different version of package xxxxxxxx

其中,xxxxxxxx 指的是某一個具體的三方庫,比如github.com/stretchr/testify 。這個報錯有幾個非常典型的原因,如果沒有相關的排查經驗,其中幾個可能會燒掉開發人員不少時間。

3.2.1 Case 1. 版本不一致

如報錯所示,似乎原因很明確,即主程序和插件所共同依賴的某個第三方庫版本不一致,報錯中會明確告訴你哪一個庫有問題。此時,你可以對比排查主程序和插件的go.mod 文件,分別找到問題庫的版本,看看他們是否一致。如果這時候你發現主程和插件確實有commitid或tag的不一致問題,那解決的方法也很簡單:對齊它們。

但是在很多場景下,你只會用到三方庫的一部分:如一個package,或者只是引了一個interface。這一部分的代碼在不同的版本里根本就沒有變更;但其他沒用到的代碼的變更,同樣會導致整個三方庫版本號的變更,進而導致你成為那個“版本不一致”的無辜受害者。

而且,此時你可能立即會遇到另一個問題:以誰為基準對齊?主程序?還是插件?

從常理上來說,以主程序為基線進行對齊是一個比較好的策略,畢竟插件是新添加的“附屬品”,且主程序與插件通常是1對多的關系。但是,如果插件的三方庫依賴因為任何原因就是不能和主程序對齊怎么辦?在嘗試了很久以后,我暫時沒有找到一個完美解決這個問題的辦法。?

如果版本無法對齊,就只能從根本上放棄走插件這條路。

Go語言的這種對三方庫的、幾乎無腦的強一致性約束,從一方面來說,避免了運行時因為版本不一致帶來的潛在問題;從另一方面來說,這種刻意不給程序員靈活度的設計,對插件化、定制化、擴展化開發非常的不友好。? 

圖片

?

圖3-2. 共同依賴的三方庫版本不一致導致的加載失敗

3.2.2 case 2. 版本號一致,代碼不一致

當你按照3.2.1的思路排查go.mod 文件,但是驚訝的發現報錯的庫版本是一致的時候,事情就會變得復雜起來。你可能會拿出世界上最先進的文本查驗工具,并花掉一個上午去diff 三方庫的commitid,但它們就是一模一樣,似乎陷入了薛定諤的版本。?

出現這個問題可能的一個不是原因的原因是:有人直接修改了vendor目錄下的代碼,Go插件機制會對代碼內容的一致性進行校驗。

這真的是一個非常令人頭大,并難以排查的原因。除了修改代碼的那個人,和已經在其他case中被“坑”過的那些人,沒人會知道這件事情。如果修改的vendor代碼出現在主程序里,你就幾乎沒有任何靠譜的辦法讓它們正常工作起來。

不要直接在vendor里改代碼,回饋開源社區,或者fork-replace。

好消息是,你不需要解決這個問題。因為即使解決了,也還會有更大的問題等著你。?

圖片

?   

圖3-2. 共同依賴的三方庫代碼被就地修改導致的加載失敗

3.2.3 case 3. 路徑不一致

當按照3.2.1和3.2.2的思路都把問題排查、解決完,但它還是報different version of package的時候,可能你就會開始對Go的插件機制口吐芬芳了:版本真的一毛一樣,代碼真的一行沒動,為什么還報不同版本???

原因是:插件機制會校驗依賴庫源碼的「路徑」,因此不能使用vendor管理依賴。

舉個例子:你的主程序源碼放在/path/to/main目錄下,因此,你的某個三方庫依賴的目錄應該是/path/to/main/vendor/some/thrid/part/lib;同理,你的插件源碼放在/path/to/plugin目錄下,因此,同一個三方庫依賴的目錄應該是/path/to/plugin/vendor/some/thrid/part/lib。這些「文件路徑」數據會被打包到二進制可執行文件里并用于校驗,當主程序加載插件時,Go的“運行時”“聰明的”通過「文件路徑」的差異認定它和插件用的不是同一份代碼,然后報了個different version of package。

圖片

圖3-3. 使用vendor機制管理第三方庫導致的加載失敗

同樣的問題也可能會出現在使用不同機器/用戶,分別編譯主程序、插件的場景下:用戶名不同,go代碼的路徑應該也會不一樣。

解決這類問題的方法很暴力直接:刪掉主程序和插件的vendor目錄,或者使用-mod=readonly 編譯flag。

到這里,如果你是使用同一臺機器進行主程序和插件的編譯,那么常見的問題應該都基本解決了,插件機制理應能夠正常工作。另一方面,由于不再使用vendor管理依賴,因此3.2.2的問題也會在這里被強制解決:要么提PR給社區,要么fork-replace。?

圖片

  

圖3-4. 成功加載

3.3 不一致的Go版本

fatal error: runtime: no plugin module data

除了上面的那些問題以外,還有一個在多機器分別編譯主程/插件場景下的常見報錯。這個報錯的一個可能原因是Go版本不一致,對齊它們即可。(如果從機器層面就是不能對齊怎么辦?)?

圖片

圖3-5. Go版本不一致導致的加載失敗

統一解決方案

從3.1到3.3,我們看了一些很難排查,也不是很好處理的問題。除此之外,其實還有一些問題沒有被重點介紹進來。作為一個編程語言官方支持的擴展機制,做的如此用戶不友好確實出人意料。

我所在的團隊由于重點依賴Go的插件機制做定開,因此必須拿出一個系統化的方案把這些問題統統解決掉。在嘗試直接修改Go源碼無果以后(吐槽:Go插件機制源碼寫的令人略感遺憾),我重點從以下幾個方面入手開展了相關工作:

  • 統一編譯環境:

提供一個標準的docker image用來編譯主程序和插件,規避任何go版本、gopath路徑、用戶名等不一致所帶來的問題

預制go/pkg/mod,盡可能減少因為沒有使用vendor模式導致每次編譯都要重新下載依賴的問題

  • 統一Makefile:

提供一套主程序和插件的編譯Makefile,規避任何因為go build命令帶來的問題

  • 統一插件開發腳手架:

由腳手架,而不是開發者拉齊插件與主程序的依賴版本。并由腳手架解決其他相關問題

  • ACI化:

將編譯流程aci化,進一步避免出現錯誤

圖片

?

圖4-1. 統一解決方案

?至此,關于Go插件的常見問題及解決方法介紹就暫告段落了,希望對你有所幫助。

Bonus

如果真的想從根本上搞清楚插件校驗的機制,那這里為你提供一些快速進入源碼閱讀狀態的入口。我使用的Go源碼為1.15.2版本。

相關Go源碼位置:

  • compiler

go/src/cmd/compile/*

  • linker

go/src/cmd/link/internal/ld/*

  • package loader

go/src/cmd/go/internal/load/*

  • runtime

go/src/runtime/*

5.1 go build到底在做啥

你可以在go build 命令里添加-x 參數,以顯式的打印出Go程序編譯、鏈接、打包的全流程,例如:

go build -x -buildmode=plugin -o ../calc_plugin.so calc_plugin.go

5.2 目標代碼生成

  • go/src/cmd/compile/internal/gc/obj.go:55 :注意第67和第72行,這里是兩個入口
  • go/src/cmd/compile/internal/gc/iexport.go:244 :注意280行,這里會記錄path相關數據

5.3 庫哈希生成算法

go/src/cmd/link/internal/ld/lib.go:967 :注意第995~1025行,這里計算pkg的hash

5.4 庫哈希校驗

  • go/src/runtime/symtab.go:392 :關鍵數據結構
  • go/src/runtime/plugin.go:52 :鏈接期hash與運行時hash值校驗點
  • go/src/cmd/link/internal/ld/symtab.go:621 :鏈接期hash賦值點
  • go/src/cmd/link/internal/ld/symtab.go:521 :運行時hash賦值點

責任編輯:武曉燕 來源: 阿里開發者
相關推薦

2011-08-29 14:50:08

jQuery插件

2010-02-02 13:32:32

Python繼承

2010-02-06 17:17:17

Android手機

2016-12-02 19:00:13

Android FraAndroid

2011-09-13 09:49:59

PhoneGap插件

2010-02-03 17:52:11

Python 2.0

2009-05-05 17:52:48

系統安全密碼安全Windows

2010-03-01 18:21:08

Python測試

2025-05-30 07:10:19

2010-03-10 13:29:01

以太網交換機

2010-08-03 10:46:41

Flex代碼格式化

2022-07-26 07:47:14

架構

2024-06-12 08:54:49

Go切片參數

2025-06-12 00:21:27

2020-07-16 08:05:15

JavaGo

2025-06-04 10:08:00

Go開發云原生

2022-05-08 09:11:44

WiFi樹莓派GO

2025-04-11 09:10:38

2019-07-28 21:05:47

ICMPIP網絡協議

2022-04-06 08:19:13

Go語言切片
點贊
收藏

51CTO技術棧公眾號

国产精品丝袜久久久久久不卡| 欧美午夜丰满在线18影院| 91精品久久久久久久久青青 | 久久综合色播五月| 热久久美女精品天天吊色| 人妻无码一区二区三区免费| 久久综合偷偷噜噜噜色| 欧美日韩国产影院| 一区二区三区在线视频看| 亚洲精品字幕在线| 免费在线看成人av| 98精品国产自产在线观看| 久久久国产一级片| 久久99精品国产自在现线| 欧美三区在线观看| 黄页免费在线观看视频| 91看片在线观看| av亚洲精华国产精华精华| 国产欧美日韩精品丝袜高跟鞋| 国产一级视频在线观看| 天天综合网91| 亚洲欧美国产高清va在线播 | www.在线成人| 91免费在线视频网站| 国产无套丰满白嫩对白| 欧美天天视频| 精品国内亚洲在观看18黄| a视频免费观看| 2021年精品国产福利在线| 欧美三级蜜桃2在线观看| 欧美丰满熟妇bbbbbb百度| 超碰在线免费播放| 国产精品久久久久三级| 欧美激情专区| 亚洲欧美日本在线观看| 国产91精品一区二区麻豆亚洲| 国产精品久久久久久久av电影 | 欧美亚洲综合色| 亚洲 高清 成人 动漫| 欧洲一区二区三区| 亚洲精品国产第一综合99久久 | 男女啪啪在线观看| 国产日产欧美一区二区视频| 久久精品日韩精品| 你懂的网站在线| 国产大陆a不卡| 亚洲精品欧美一区二区三区| 一级黄色片在线看| 久久精品国产色蜜蜜麻豆| 国产精品流白浆视频| 中文字幕精品视频在线观看| 免费久久99精品国产自在现线| 国外成人免费在线播放| www.av视频在线观看| 国产精品草草| 97香蕉久久超级碰碰高清版 | caoporn免费在线| 亚洲视频免费观看| 51xx午夜影福利| 欧美理论电影| 亚洲成在线观看| 少妇人妻在线视频| 成人午夜视屏| 欧美性生交片4| 亚洲一区日韩精品| 久久亚洲人体| 欧美一卡二卡三卡四卡| 日本美女视频网站| 午夜精品影视国产一区在线麻豆| 亚洲欧美国内爽妇网| www在线观看免费视频| 欧美三级情趣内衣| 久久视频在线视频| 久久精品波多野结衣| 狠狠入ady亚洲精品| 国模私拍视频一区| 天堂免费在线视频| 国产一区二区三区香蕉| 51国产成人精品午夜福中文下载 | 国产一区一区| 亚洲精品久久久久久下一站| 女女互磨互喷水高潮les呻吟| 91综合久久| 久久久久在线观看| 91黑人精品一区二区三区| 蜜桃传媒麻豆第一区在线观看| 亚洲iv一区二区三区| 天堂在线视频网站| 中文字幕欧美日韩一区| 国产内射老熟女aaaa| 老牛影视精品| 在线电影欧美成精品| 在线观看免费视频国产| 沈樵精品国产成av片| 久久久精品国产网站| 中文字幕在线观看视频网站| 久久国产精品免费| 黄色国产精品一区二区三区| 9191在线| 欧美日韩国内自拍| 中文字幕剧情在线观看| 四虎5151久久欧美毛片| 久久精品国产一区二区电影| 欧美精品亚洲精品日韩精品| 精东粉嫩av免费一区二区三区| 国产精品白丝jk白祙| av黄色在线观看| 一区二区欧美在线观看| 五月婷婷之综合激情| 盗摄系列偷拍视频精品tp| 国产亚洲欧洲高清一区| 日韩精品成人一区| 国产一区二区免费在线| 日韩aⅴ视频一区二区三区| 黑人精品视频| 7777精品伊人久久久大香线蕉超级流畅 | 国产剧情在线观看一区二区| 日本一区视频在线| 色yeye免费人成网站在线观看| 欧美亚洲国产一卡| 一本加勒比北条麻妃| 狠狠爱综合网| 97碰碰视频| 黄色在线免费| 欧美日韩一区精品| 欧洲av一区二区三区| 亚洲区第一页| 国产精品国产亚洲精品看不卡15 | 国产一区二区在线| 欧美成人黄色小视频| 精品国产成人系列| 国产精品日产欧美久久久久| 日韩精品一区二区三区四区视频| 欧美aaa在线观看| 精品人妻一区二区三区浪潮在线| 国产拍欧美日韩视频二区| 日韩精品 欧美| 国产福利一区二区精品秒拍| 欧美成人激情视频免费观看| 黑人糟蹋人妻hd中文字幕 | 国产调教视频一区| 欧美黄色免费影院| 亚洲人成伊人成综合图片| 97国产精品免费视频| 亚洲精品一区二区三区四区| 亚洲一二三四区| 老司机av网站| 亚洲午夜av| 国产一区二区三区四区hd| a天堂资源在线| 亚洲国产精品久久精品怡红院| 国产一级做a爰片在线看免费| 国产91精品久久久久久久网曝门 | 欧美不卡三区| 欧美片第一页| 一本一本久久a久久精品牛牛影视| 国产视频1区2区| 国产欧美精品国产国产专区 | 日韩久久一区| 久久精品视频在线观看| 国产女人高潮的av毛片| 亚洲一区二区三区不卡国产欧美| 男男一级淫片免费播放| 一区二区毛片| 天堂资源在线亚洲资源| 国产精品高清一区二区| 欧美国产激情18| 视频污在线观看| 在线视频一区二区三区| 亚洲精品自拍视频在线观看| 国产美女精品在线| 老太脱裤让老头玩ⅹxxxx| 外国成人在线视频| 国产欧美精品xxxx另类| 欧美午夜大胆人体| 日韩av在线影院| 午夜视频网站在线观看| 亚洲欧美偷拍三级| av无码一区二区三区| 日韩精品国产精品| 蜜桃成人精品| 五月天综合网站| 欧美黄色片在线观看| 少妇无码一区二区三区| 色88888久久久久久影院野外| 后入内射无码人妻一区| 国产.欧美.日韩| 一色屋精品亚洲香蕉网站| 午夜免费久久久久| yw在线观看| 日韩精品一区在线观看| 日本一区二区免费电影| 一区二区中文视频| 亚洲一区二区乱码| 国内成+人亚洲+欧美+综合在线| www.国产在线视频| 日韩精品午夜| 久久www免费人成精品| 国产麻豆一区二区三区| 日产日韩在线亚洲欧美| 在线黄色网页| 伊人伊成久久人综合网站| 亚洲男人第一天堂| 欧美日韩一区二区三区在线| 日本亚洲欧美在线| 日韩理论片在线| 一道本在线观看| 成人网页在线观看| 亚洲午夜激情影院| 久久婷婷影院| 18禁裸男晨勃露j毛免费观看 | 欧美精品一区二区三区高清aⅴ | 丁香婷婷综合激情五月色| 日本美女高潮视频| 国产精品亚洲综合久久| 黄色特一级视频| 93在线视频精品免费观看| 性色一区二区三区| 久久精品一二三区| av成人综合| 92看片淫黄大片看国产片| 韩国成人在线| 日韩女优在线播放| 国产乱码精品一区二三赶尸艳谈| 久久激情视频免费观看| 国产日产精品久久久久久婷婷| 亚洲成在人线av| 国产 日韩 欧美 精品| 91精品国产91综合久久蜜臀| 中文字幕福利视频| 在线免费观看视频一区| 国产成人无码av| 五月婷婷激情综合| 国产第100页| 一区二区三区日韩| 老女人性淫交视频| 一区二区三区资源| 三级影片在线看| 亚洲日韩欧美一区二区在线| 成年人视频软件| 国产精品丝袜黑色高跟| 91激情视频在线观看| 久久精品欧美一区二区三区不卡 | 成人性生生活性生交12| 午夜亚洲视频| 精品久久久久久无码国产| 久久久精品午夜少妇| 欧美激情成人网| 久久在线精品| xx欧美撒尿嘘撒尿xx| 免费美女久久99| 中文字幕丰满乱码| 国产福利精品一区二区| 香蕉在线观看视频| av一本久道久久综合久久鬼色| 六十路息与子猛烈交尾| 久久影院视频免费| 欧洲美熟女乱又伦| 中文字幕一区二区5566日韩| 九九这里只有精品视频| 亚洲精品视频在线观看网站| 久久久精品视频在线| 精品久久久久久国产91| 国产成人自拍偷拍| 欧美一区二区三区啪啪| 亚洲精品久久久狠狠狠爱| 亚洲精品国产电影| 国产在线视频你懂得| 日韩亚洲第一页| 在线免费观看污| 青青久久aⅴ北条麻妃| www.精品国产| 成人av网站观看| 久久99影视| 波多野结衣三级在线| 伊人久久婷婷| 999精品视频在线| 国产高清成人在线| 国产全是老熟女太爽了| 国产精品卡一卡二卡三| 久久免费在线观看视频| 91久久精品网| 亚洲精品国偷拍自产在线观看蜜桃| 精品视频—区二区三区免费| www免费网站在线观看| 欧美国产中文字幕| 超碰这里只有精品| 国产欧美一区二区三区另类精品| 国产亚洲一区二区三区不卡| 青青草综合在线| 老牛嫩草一区二区三区日本| 亚洲一级片av| 2021国产精品久久精品| 国产探花视频在线| 午夜精品福利一区二区三区av | 视频一区视频二区视频三区视频四区国产 | 九九热精品在线观看| 色婷婷久久一区二区三区麻豆| 99国产精品99| 在线观看中文字幕亚洲| av第一福利在线导航| 国产男女猛烈无遮挡91| 日韩精品导航| 97久久国产亚洲精品超碰热| 日韩av一区二| 亚洲国产综合视频| 亚洲女与黑人做爰| 日本欧美www| 精品一区二区亚洲| 久久99亚洲网美利坚合众国| 国产欧美精品在线| 精品国产一级毛片| 天天夜碰日日摸日日澡性色av| 国产精品一区二区不卡| 一级片黄色录像| 色香蕉成人二区免费| 日韩一级中文字幕| 欧美国产乱视频| 国产精品毛片aⅴ一区二区三区| 日韩av在线电影观看| 在线综合亚洲| 日韩少妇一区二区| 亚洲国产欧美在线| www.亚洲天堂.com| 美女撒尿一区二区三区| 四虎视频在线精品免费网址| 日韩精品欧美一区二区三区| 免费在线观看成人av| 中文文字幕文字幕高清| 亚洲成人福利片| 精品久久国产视频| 久久综合九色九九| 国产精品久久久久久久久久辛辛| 在线天堂一区av电影| 久久国内精品视频| 五月天免费网站| 欧美欧美欧美欧美首页| 国产视频三级在线观看播放| 国产ts一区二区| 久久99国产精品视频| 成人在线观看黄| 国产色产综合色产在线视频| 国产性生活视频| 亚洲天堂影视av| 影音成人av| 一级二级三级欧美| 国产一区二区电影| 国产av无码专区亚洲av毛网站| 91精品国产综合久久久久久久 | 亚洲精品成人精品456| 99视频在线观看免费| 欧美精品一区二区免费| 亚洲精品18| www.com毛片| 国产嫩草影院久久久久| 亚洲熟女乱色一区二区三区久久久| 最新中文字幕亚洲| 日本免费精品| 奇米精品一区二区三区| 2024国产精品| 亚洲系列在线观看| 欧美理论电影在线播放| 美女一区2区| 欧美性猛交xxx乱久交| 亚洲人成在线播放网站岛国| 亚洲精品国产手机| 日本老师69xxx| 久久精品青草| 下面一进一出好爽视频| 婷婷综合在线观看| 成人影院免费观看| 91九色露脸| 国产精品永久| 蜜桃视频最新网址| 精品欧美一区二区在线观看| 午夜影院在线播放| 国产免费色视频| 成人av在线一区二区| 久久久久久亚洲av无码专区| 久久影视电视剧免费网站| 欧洲精品一区| 天堂av2020| 欧美网站在线观看| 美女隐私在线观看| 久久超碰亚洲| 九九视频精品免费| 日本三级小视频| 久久夜精品va视频免费观看| 久久夜色精品国产噜噜av小说| 免费涩涩18网站入口| 亚洲成人综合视频| 巨大荫蒂视频欧美大片| 久久资源av| 国产成人无遮挡在线视频| 午夜精品久久久久久久蜜桃| 欧美激情精品久久久久久久变态| 国产免费播放一区二区| 国产国语老龄妇女a片| 欧美日韩小视频| 中文字幕色婷婷在线视频|