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

十分鐘學會用 Go 編寫命令行工具

開發 后端
最近因為項目需要寫了一段時間的 Go ,相對于 Java 來說語法簡單同時又有著一些 Python 之類的語法糖,讓人大呼”真香“。

前言

最近因為項目需要寫了一段時間的 Go ,相對于 Java 來說語法簡單同時又有著一些 Python 之類的語法糖,讓人大呼”真香“。

[[437098]]

 

但現階段相對來說還是 Python 寫的多一些,偶爾還得回爐寫點 Java ;自然對 Go 也談不上多熟悉。

于是便利用周末時間自己做個小項目來加深一些使用經驗。于是我便想到了之前利用 Java 寫的一個博客小工具。

那段時間正值微博圖床大量圖片禁止外鏈,導致許多個人博客中的圖片都不能查看。這個工具可以將文章中的圖片備份到本地,還能將圖片直接替換到其他圖床。

 

十分鐘學會用 Go 編寫命令行工具

 

我個人現在是一直在使用,通常是在碼字的時候利用 iPic 之類的工具將圖片上傳到微博圖床(主要是方便+免費)。寫完之后再通過這個工具一鍵切換到 [SM.MS](http://sm.MS) 這類付費圖床,同時也會將圖片備份到本地磁盤。

改為用 Go 重寫為 cli 工具后使用效果如下:

 

十分鐘學會用 Go 編寫命令行工具

需要掌握哪些技能

之所以選擇這個工具用 Go 來重寫;一個是功能比較簡單,但也正好可以利用到 Go 的一些特點,比如網絡 IO、協程同步之類。

同時修改為命令行工具后是不是感覺更極客了呢。

再開始之前還是先為不熟悉 Go 的 Javaer 介紹下大概會用到哪些知識點:

  • 使用和管理第三方依賴包(go mod)
  • 協程的運用。
  • 多平臺打包。

下面開始具體操作,我覺得即便是沒怎么接觸過 Go 的朋友看完之后也能快速上手實現一個小工具。

使用和管理第三方依賴

  • 還沒有安裝 Go 的朋友請參考官網自行安裝。

首先介紹一下 Go 的依賴管理,在版本 1.11 之后官方就自帶了依賴管理模塊,所以在當下最新版 1.15 中已經強烈推薦使用。

它的目的和作用與 Java 中的 maven,Python 中的 pip 類似,但使用起來比 maven 簡單許多。

 

 

根據它的使用參考,需要首先在項目目錄下執行 go mod init 用于初始化一個 go.mod 文件,當然如果你使用的是 GoLang 這樣的 IDE,在新建項目時會自動幫我們創建好目錄結構,當然也包含 go.mod 這個文件。

在這個文件中我們引入我們需要的第三方包:

 

  1. module btb 
  2.  
  3. go 1.15 
  4.  
  5. require ( 
  6.  github.com/cheggaaa/pb/v3 v3.0.5 
  7.  github.com/fatih/color v1.10.0 
  8.  github.com/urfave/cli/v2 v2.3.0 

 

我這里使用了三個包,分別是:

  • pb: progress bar,用于在控制臺輸出進度條。
  • color: 用于在控制臺輸出不同顏色的文本。
  • cli: 命令行工具開發包。

 

  1. import ( 
  2.  "btb/constants" 
  3.  "btb/service" 
  4.  "github.com/urfave/cli/v2" 
  5.  "log" 
  6.  "os" 
  7.  
  8. func main() { 
  9.  var model string 
  10.  downloadPath := constants.DownloadPath 
  11.  markdownPath := constants.MarkdownPath 
  12.  
  13.  app := &cli.App{ 
  14.   Flags: []cli.Flag{ 
  15.    &cli.StringFlag{ 
  16.     Name:        "model"
  17.     Usage:       "operating mode; r:replace, b:backup"
  18.     DefaultText: "b"
  19.     Aliases:     []string{"m"}, 
  20.     Required:    true
  21.     Destination: &model, 
  22.    }, 
  23.    &cli.StringFlag{ 
  24.     Name:        "download-path"
  25.     Usage:       "The path where the image is stored"
  26.     Aliases:     []string{"dp"}, 
  27.     Destination: &downloadPath, 
  28.     Required:    true
  29.     Value:       constants.DownloadPath, 
  30.    }, 
  31.    &cli.StringFlag{ 
  32.     Name:        "markdown-path"
  33.     Usage:       "The path where the markdown file is stored"
  34.     Aliases:     []string{"mp"}, 
  35.     Destination: &markdownPath, 
  36.     Required:    true
  37.     Value:       constants.MarkdownPath, 
  38.    }, 
  39.   }, 
  40.   Action: func(c *cli.Context) error { 
  41.    service.DownLoadPic(markdownPath, downloadPath) 
  42.  
  43.    return nil 
  44.   }, 
  45.   Name:  "btb"
  46.   Usage: "Help you backup and replace your blog's images"
  47.  } 
  48.  
  49.  err := app.Run(os.Args) 
  50.  if err != nil { 
  51.   log.Fatal(err) 
  52.  } 

 

代碼非常簡單,無非就是使用了 cli 所提供的 api 創建了幾個命令,將用戶輸入的 -dp、-mp 參數映射到 downloadPath、markdownPath 變量中。

之后便利用這兩個數據掃描所有的圖片,以及將圖片下載到對應的目錄中。

更多使用指南可以直接參考官方文檔。

可以看到部分語法與 Java 完全不同,比如:

  • 申明變量時類型是放在后邊,先定義變量名稱;方法參數類似。
  • 類型推導,可以不指定變量類型(新版本的 Java 也支持)
  • 方法支持同時返回多個值,這點非常好用。
  • 公共、私用函數利用首字母大小寫來區分。
  • 還有其他的就不一一列舉了。

協程

緊接著命令執行處調用了 service.DownLoadPic(markdownPath, downloadPath) 處理業務邏輯。

這里包含的文件掃描、圖片下載之類的代碼就不分析了;官方 SDK 寫的很清楚,也比較簡單。

重點看看 Go 里的 goroutine 也就是協程。

我這里使用的場景是每掃描到一個文件就利用一個協程去解析和下載圖片,從而可以提高整體的運行效率。

 

  1. func DownLoadPic(markdownPath, downloadPath string) { 
  2.  wg := sync.WaitGroup{} 
  3.  allFile, err := util.GetAllFile(markdownPath) 
  4.  wg.Add(len(*allFile)) 
  5.  
  6.  if err != nil { 
  7.   log.Fatal("read file error"
  8.  } 
  9.  
  10.  for _, filePath := range *allFile { 
  11.  
  12.   go func(filePath string) { 
  13.    allLine, err := util.ReadFileLine(filePath) 
  14.    if err != nil { 
  15.     log.Fatal(err) 
  16.    } 
  17.    availableImgs := util.MatchAvailableImg(allLine) 
  18.    bar := pb.ProgressBarTemplate(constants.PbTmpl).Start(len(*availableImgs)) 
  19.    bar.Set("fileName", filePath). 
  20.     SetWidth(120) 
  21.  
  22.    for _, url := range *availableImgs { 
  23.     if err != nil { 
  24.      log.Fatal(err) 
  25.     } 
  26.     err := util.DownloadFile(url, *genFullFileName(downloadPath, filePath, &url)) 
  27.     if err != nil { 
  28.      log.Fatal(err) 
  29.     } 
  30.     bar.Increment() 
  31.  
  32.    } 
  33.    bar.Finish() 
  34.    wg.Done() 
  35.  
  36.   }(filePath) 
  37.  } 
  38.  wg.Wait() 
  39.  color.Green("Successful handling of [%v] files.\n", len(*allFile)) 
  40.  
  41.  if err != nil { 
  42.   log.Fatal(err) 
  43.  } 

 

就代碼使用層面看起來是不是要比 Java 簡潔許多,我們不用像 Java 那樣需要維護一個 executorService,也不需要考慮這個線程池的大小,一切都交給 Go 自己去調度。

使用時只需要在調用函數之前加上 go 關鍵字,只不過這里是一個匿名函數。

而且由于 goroutine 非常輕量,與 Java 中的 thread 相比占用非常少的內存,所以我們也不需要精準的控制創建數量。

不過這里也用到了一個和 Java 非常類似的東西:WaitGroup。

它的用法與作用都與 Java 中的 CountDownLatch 非常相似;主要用于等待所有的 goroutine 執行完畢,在這里自然是等待所有的圖片都下載完畢然后退出程序。

使用起來主要分為三步:

  • 創建和初始化 goruntime 的數量:wg.Add(len(number)
  • 每當一個 goruntime 執行完畢調用 wg.Done() 讓計數減一。
  • 最終調用 wg.Wait() 等待WaitGroup 的數量減為0。

對于協程 Go 推薦使用 chanel 來互相通信,這點今后有機會再討論。

打包

核心邏輯也就這么多,下面來講講打包與運行;這點和 Java 的區別就比較大了。

眾所周知,Java 有一句名言:write once run anywhere

這是因為有了 JVM 虛擬機,所以我們不管代碼最終運行于哪個平臺都只需要打出一個包;但 Go 沒有虛擬機它是怎么做到在個各平臺運行呢。

簡單來說 Go 可以針對不同平臺打包出不同的二進制文件,這個文件包含了所有運行所需要的依賴,甚至都不需要在目標平臺安裝 Go 環境。

  • 雖說 Java 最終只需要打一個包,但也得在各個平臺安裝兼容的 Java 運行環境。

我在這里編寫了一個 Makefile 用于執行打包:make release

 

  1. Binary name 
  2. BINARY=btb 
  3. GOBUILD=go build -ldflags "-s -w" -o ${BINARY
  4. GOCLEAN=go clean 
  5. RMTARGZ=rm -rf *.gz 
  6. VERSION=0.0.1 
  7.  
  8. release: 
  9.  # Clean 
  10.  $(GOCLEAN) 
  11.  $(RMTARGZ) 
  12.  # Build for mac 
  13.  CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 $(GOBUILD) 
  14.  tar czvf ${BINARY}-mac64-${VERSION}.tar.gz ./${BINARY
  15.  # Build for arm 
  16.  $(GOCLEAN) 
  17.  CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(GOBUILD) 
  18.  tar czvf ${BINARY}-arm64-${VERSION}.tar.gz ./${BINARY
  19.  # Build for linux 
  20.  $(GOCLEAN) 
  21.  CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOBUILD) 
  22.  tar czvf ${BINARY}-linux64-${VERSION}.tar.gz ./${BINARY
  23.  # Build for win 
  24.  $(GOCLEAN) 
  25.  CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GOBUILD).exe 
  26.  tar czvf ${BINARY}-win64-${VERSION}.tar.gz ./${BINARY}.exe 
  27.  $(GOCLEAN) 

 

可以看到我們只需要在 go build 之前指定系統變量即可打出不同平臺的包,比如我們為 Linux 系統的 arm64 架構打包文件:

CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build main.go -o btb

便可以直接在目標平臺執行 ./btb 運行程序。

總結

本文所有代碼都已上傳 Github: https://github.com/crossoverJie/btb

感興趣的也可以直接運行安裝腳本體驗。

 

  1. curl -fsSL https://raw.githubusercontent.com/crossoverJie/btb/master/install.sh | bash 

目前這個版本只實現了圖片下載備份,后續會完善圖床替換及其他功能。

這段時間接觸 Go 之后給我的感觸頗深,對于年紀 25 歲的 Java 來說,Go 確實是后生可畏,更氣人的是還趕上了云原生這個浪潮,就更惹不起了。

 

一些以前看來不那么重要的小毛病也被重點放大,比如啟動慢、占用內存多、語法啰嗦等;不過我依然對這位賞飯吃的祖師爺保持期待,從新版本的 Java 可以看出也在積極改變,更不用說它還有無人撼動的龐大生態。

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2016-12-22 21:47:04

SEDLinuxUnix

2023-11-09 14:44:27

Docker鏡像容器

2024-03-04 15:19:52

Python編程內建函數

2020-12-17 06:48:21

SQLkafkaMySQL

2019-04-01 14:59:56

負載均衡服務器網絡

2024-06-19 09:58:29

2021-09-07 09:40:20

Spark大數據引擎

2022-06-16 07:31:41

Web組件封裝HTML 標簽

2023-04-12 11:18:51

甘特圖前端

2019-08-13 09:11:26

2023-04-12 08:21:30

ChatGPTQQDiscord

2012-07-10 01:22:32

PythonPython教程

2023-11-30 10:21:48

虛擬列表虛擬列表工具庫

2024-05-13 09:28:43

Flink SQL大數據

2015-09-06 09:22:24

框架搭建快速高效app

2025-04-30 09:37:07

2024-11-07 16:09:53

2009-10-09 14:45:29

VB程序

2022-08-26 09:01:07

CSSFlex 布局

2019-09-16 09:14:51

點贊
收藏

51CTO技術棧公眾號

国产一区二区三区丝袜| 一区二区三区日韩欧美| 国产精品丝袜久久久久久高清 | 97福利一区二区| a毛片毛片av永久免费| 精品久久在线| 午夜激情久久久| 日韩三级电影免费观看| 国产日本精品视频| 免费日韩一区二区| 色综合天天综合网国产成人网| 波多野结衣办公室33分钟| 伊人久久大香线蕉综合影院首页| 欧美色videos| 91.com在线| 求av网址在线观看| 不卡大黄网站免费看| 成人国内精品久久久久一区| 能在线观看的av| 丁香六月激情综合| 成人高潮a毛片免费观看网站| 欧美视频中文字幕| www.com毛片| xxx.xxx欧美| 国产精品久99| 视频在线99re| 麻豆导航在线观看| 97精品电影院| 国产亚洲精品久久飘花| 国产三级视频在线播放| 久久精品国产精品亚洲精品| 欧美一级淫片aaaaaaa视频| 久久久国产精品黄毛片| 91成人看片| 精品国产一区二区三区久久久| 在线不卡av电影| 香蕉久久精品| 亚洲精品久久久久中文字幕欢迎你| 一区二区三区四区毛片| 日本一区二区中文字幕| 欧美影视一区在线| wwwwxxxx日韩| 成人国产一区二区三区精品麻豆| 色噜噜夜夜夜综合网| 国产免费毛卡片| 蜜臀久久精品| 精品国产福利视频| 草草久久久无码国产专区| www视频在线观看| 亚洲成人自拍一区| 97超碰人人澡| av资源中文在线天堂| 午夜视频久久久久久| 国精产品一区一区三区视频| 久草免费在线视频| 黑人巨大精品欧美一区二区| 国产日韩一区二区在线| 精品亚洲美女网站| 欧美午夜精品久久久久久超碰| 北条麻妃av高潮尖叫在线观看| 另类激情视频| 午夜亚洲性色福利视频| 91久久精品国产91性色tv| 女人喷潮完整视频| 深夜视频一区二区| 69精品人人人人| 最好看的中文字幕| 国产精东传媒成人av电影| 日韩av中文在线| 亚洲黄色小说视频| 久久久9色精品国产一区二区三区| www.国产一区| 久久久久久久久久99| 亚洲深夜福利| 国产精品男人的天堂| 国产视频第二页| 成人av在线网| 日韩精品国内| 9191在线播放| 一本一道综合狠狠老| 激情五月俺来也| 精品国产麻豆| 亚洲久久久久久久久久| 成年人免费视频播放| 欧美日一区二区三区在线观看国产免| 韩国v欧美v日本v亚洲| 欧美国产一级片| 国产毛片精品国产一区二区三区| 精品国产91亚洲一区二区三区www| 九一国产在线| 一区二区三区四区视频精品免费| 久久精品国产sm调教网站演员| 78精品国产综合久久香蕉| 日韩视频免费直播| 亚洲欧美视频在线播放| 亚洲v在线看| 3344国产精品免费看| 97视频免费在线| 91免费观看国产| 最新av网址在线观看| 韩国主播福利视频一区二区三区| 7777精品伊人久久久大香线蕉的 | av在线网页| 午夜精品一区二区三区国产 | 日韩精品有码在线观看| 日本免费网站视频| 欧美资源在线| 99久久无色码| 欧美69xxxx| 色婷婷av久久久久久久| www.美色吧.com| 三区四区不卡| 国产91久久婷婷一区二区| 亚洲乱码精品久久久久..| 国产嫩草影院久久久久| 国产中文字幕视频在线观看| 国产人与zoxxxx另类91| 伊人伊人伊人久久| 久久精品久久久久久久| 成人18视频在线播放| 自拍偷拍99| 国产精品.xx视频.xxtv| 亚洲欧美另类自拍| 日韩欧美三级视频| 成人黄色一级视频| 男人天堂新网址| gogo大尺度成人免费视频| 亚洲精品视频免费| 91国产丝袜播放在线| 国产99精品国产| 影音先锋欧美在线| 国产精品蜜月aⅴ在线| 国产亚洲欧美另类中文| 黄色在线免费观看| 99精品一区二区| 国产日韩欧美精品在线观看| 一区二区三区视频免费视频观看网站| x99av成人免费| 国产精品欧美久久久久天天影视| 欧美高清在线一区| 在线观看av网页| 久久久影院免费| 成人福利网站在线观看11| 99se视频在线观看| 欧美精品aⅴ在线视频| www成人啪啪18软件| 青青草国产精品97视觉盛宴| 五月天国产一区| 欧美黄色网络| 久久精品小视频| 国产高清视频免费| 亚洲国产综合人成综合网站| 国产人妻黑人一区二区三区| 亚洲激情视频| 久久国产手机看片| 怡红院成人在线| 色婷婷久久一区二区| 国产精品国产av| 一区二区三区四区五区视频在线观看 | 色网在线免费观看| 亚洲性生活视频| 国产成人精品一区二区色戒| 国产精品毛片久久久久久| 国产又黄又猛的视频| 欧美jjzz| 老牛影视免费一区二区| 99欧美精品| 日韩视频一区在线| 国产高中女学生第一次| 亚洲午夜av在线| 第四色在线视频| 久久精品主播| 一本色道久久综合亚洲精品婷婷| 2019中文亚洲字幕| 久久国产视频网站| 五月婷婷久久久| 欧美中文一区二区三区| 日日噜噜夜夜狠狠久久波多野| 国产成人在线观看免费网站| 少妇高潮毛片色欲ava片| 精品视频日韩| www.成人三级视频| 欧美电影免费观看高清完整| 日韩午夜在线视频| 丰满岳乱妇国产精品一区| 福利微拍一区二区| 美国黄色片视频| 99热在这里有精品免费| 羞羞的视频在线| 99视频一区| 国产精品亚洲天堂| 日韩a级大片| 国产日产久久高清欧美一区| sm在线观看| 日韩三级成人av网| 天堂av在线资源| 91精品国产综合久久久久久久久久| 日本一级黄色大片| 国产精品成人一区二区艾草| 日本在线不卡一区二区| 麻豆精品在线播放| 久久免费视频3| 午夜精品久久| 亚洲不卡中文字幕| 国产精品18hdxxxⅹ在线| 国产噜噜噜噜噜久久久久久久久| 国产精品13p| 美女啪啪无遮挡免费久久网站| 国产系列电影在线播放网址| 亚洲国产97在线精品一区| 国产在成人精品线拍偷自揄拍| 色婷婷久久99综合精品jk白丝| 精品肉丝脚一区二区三区| 国产精品久久久久久久久久久免费看 | 国产精品欧美大片| 91传媒视频在线观看| 97精品国产综合久久久动漫日韩 | 欧美色片在线观看| 97精品国产97久久久久久春色| www在线免费观看视频| 亚洲天堂av图片| 亚洲人视频在线观看| 日韩欧美高清dvd碟片| 国产精品一区二区人人爽| 欧美自拍丝袜亚洲| 亚洲GV成人无码久久精品 | 久久6免费高清热精品| 91女主播在线观看| 一区二区在线免费视频| 午夜视频免费看| 精品国产第一区二区三区观看体验| 999久久久久久| 欧美一区欧美二区| 国产手机av在线| 69堂精品视频| 国产手机视频在线| 欧美大片在线观看| 日韩在线观看免费全集电视剧网站| 日日夜夜操视频| 狠狠色噜噜狠狠狠狠97| 亚洲欧美在线视频免费| 亚洲亚洲精品在线观看| 欧美激情精品在线| 久久综合九色综合久| 亚洲人在线视频| 久久久久国产精品嫩草影院| 日韩av一卡二卡| 色哟哟在线观看| 亚洲天堂av电影| 欧美成人三区| 蜜臀久久99精品久久久无需会员 | 亚洲精品国产精品粉嫩| 麻豆久久久9性大片| 亚洲欧美校园春色| 日韩精品第一页| 欧美激情777| 久久观看最新视频| 激情综合视频| 国产裸体舞一区二区三区| 日韩精品欧美成人高清一区二区| 五月婷婷激情久久| 黄色日韩网站视频| 特级特黄刘亦菲aaa级| 91视频在线看| 欧美三级视频网站| 亚洲色图19p| 四虎影视成人精品国库在线观看 | 综合久久精品| 日本高清视频免费在线观看| 亚洲手机在线| 一本大道熟女人妻中文字幕在线| 欧美专区在线| 超碰中文字幕在线观看| 成人黄色小视频在线观看| 熟女少妇一区二区三区| 国产精品福利影院| 国产亚洲精品成人| 91国模大尺度私拍在线视频 | 精品少妇一区二区三区在线视频| 噜噜噜久久,亚洲精品国产品| 亚洲嫩模很污视频| 搞黄网站在线观看| 欧洲美女7788成人免费视频| 99精品视频99| 欧美亚洲动漫制服丝袜| 国产黄色一级大片| 亚洲美女视频网站| 亚洲夜夜综合| 国产成+人+综合+亚洲欧洲| 欧美影院视频| 欧洲在线视频一区| 亚洲视频日本| 天天影视色综合| 久久影音资源网| 免费网站看av| 欧美无砖专区一中文字| 日韩一卡二卡在线| 久久深夜福利免费观看| 激情都市亚洲| 国产精品久久久久免费| 日韩综合一区| 日本新janpanese乱熟| 丁香婷婷综合激情五月色| 国产1区2区在线观看| 亚洲第一福利视频在线| 国产乱淫片视频| 国产亚洲成av人片在线观看桃| 青草在线视频在线观看| 国产一区二区香蕉| 最近国产精品视频| 国产成人永久免费视频| 国内成人免费视频| 五月天精品视频| 亚洲国产成人av网| 99免费在线视频| 精品国产欧美一区二区三区成人| 91看片一区| 久久精品欧美| 亚洲精品乱码久久久久久蜜桃麻豆| 国内av一区二区| 国产精品视频在线看| 亚洲av无码精品一区二区| 精品国产青草久久久久福利| 18加网站在线| 91九色在线视频| 97精品国产福利一区二区三区| 欧美性猛交久久久乱大交小说| 99久久久国产精品免费蜜臀| 精品一区二区三区四| 欧美一区二区成人| 国产精品久久久久久福利| 国产日韩欧美影视| 久久国产中文字幕| 日本超碰在线观看| 国产精品免费视频网站| 中文字幕激情视频| 一区二区三区国产在线观看| 新片速递亚洲合集欧美合集| 欧美大陆一区二区| 模特精品在线| 久久成人激情视频| 在线观看不卡视频| 3d成人动漫在线| 国产综合久久久久| 国产精品成人av| 中文字幕第66页| 一区二区三区波多野结衣在线观看| av一级黄色片| 欧美极品少妇xxxxⅹ喷水| 国产伦精品一区二区三区免费优势| 无码 制服 丝袜 国产 另类| av爱爱亚洲一区| 久久精品视频5| 中文字幕亚洲情99在线| 成人自拍视频| 欧美国产综合在线| 91免费国产在线| 中文字幕你懂的| 免费av一区二区| 精品综合久久88少妇激情| 亚洲国产精品久久久久婷蜜芽| 国产日韩欧美不卡| 国产伦理吴梦梦伦理| 欧美激情aaaa| 九九久久精品| 91女神在线观看| 一级日本不卡的影视| 日韩大片b站免费观看直播| 国产精品视频xxxx| 欧美全黄视频| 中文字幕一区二区三区人妻| 欧美三片在线视频观看| 直接在线观看的三级网址| 精品视频免费观看| 青青草视频一区| 久久久久亚洲AV| 亚洲欧美制服第一页| 色8久久久久| 久久综合久久久久| 欧美韩日一区二区三区四区| 国内老熟妇对白xxxxhd| 清纯唯美亚洲综合| 亚洲精品一区二区在线看| 污污内射在线观看一区二区少妇 | 少妇人妻一区二区| 国产精品久久久久久久久借妻| 欧美在线资源| 久久久久久久久久久久| 日韩欧美中文字幕精品| 成人影院av| 99久久久精品视频| 国产农村妇女毛片精品久久麻豆| 亚洲美女综合网| 国产精品亚洲自拍| 国产偷自视频区视频一区二区| 极品色av影院| 亚洲毛片一区二区| 日韩一区二区三区xxxx| 三级福利片在线观看| 欧洲亚洲一区|