精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久久久亚洲蜜桃| 国产精品v日韩精品v欧美精品网站| 天天操天天干天天综合网| 国产精品三区在线| 91看片在线播放| 国产成人久久| 欧美一区二区三区四区在线观看| 久久久国内精品| 日本私人网站在线观看| 秋霞av亚洲一区二区三| 久热精品在线视频| 久久人人爽人人爽人人片| 色老太综合网| 亚洲欧美日韩国产综合| 精品伦精品一区二区三区视频 | 99成人超碰| 精品国产一区久久| 韩国日本美国免费毛片| 色屁屁www国产馆在线观看| 2023国产精品自拍| 91久久极品少妇xxxxⅹ软件| 日韩熟女精品一区二区三区| 日韩中文首页| 日韩电影中文字幕av| 9久久婷婷国产综合精品性色| 男人天堂亚洲| 国产精品久久久久影院| 国产伦精品一区二区三区照片| 成人免费视频国产免费| 狠久久av成人天堂| 久久亚洲精品国产亚洲老地址| 五十路六十路七十路熟婆| 高清一区二区| 精品视频一区 二区 三区| www.av片| 日本伦理一区二区| 国产精品第五页| 欧美韩国日本精品一区二区三区| 国产a级免费视频| 青青草国产成人av片免费| 992tv在线成人免费观看| 182在线观看视频| 国产亚洲精品美女久久久久久久久久| 欧美大片免费久久精品三p| 亚洲欧美自拍另类日韩| 成人性生活视频| 亚洲福利视频一区| 免费看黄色a级片| 香蕉视频在线看| 国产午夜精品一区二区三区嫩草| 国产一区二区黄色| 丰满人妻一区二区三区无码av| 久久精品国产一区二区| 国产精品久久久久久中文字| 亚洲天堂一区在线观看| 亚洲精品影视| 国内精品伊人久久| 国产亚洲色婷婷久久99精品| 欧美成人69| xx视频.9999.com| 国产成人免费在线观看视频| 日本精品黄色| 在线看日韩欧美| 91激情视频在线观看| 少妇精品久久久一区二区三区| 日韩精品视频免费专区在线播放| 少妇被狂c下部羞羞漫画| 操欧美女人视频| 亚洲国产天堂久久综合| 青青草视频播放| 亚洲天堂日韩在线| 亚洲香蕉av在线一区二区三区| 人人人妻人人澡人人爽欧美一区| 精品久久一区| 色综合亚洲精品激情狠狠| 黄色免费一级视频| 国产精品99久久精品| 久久久97精品| 欧美日韩激情在线观看| 亚洲视频综合| 欧美中文在线视频| 欧美高清69hd| 国内精品自线一区二区三区视频| 亚洲影院高清在线| 日韩中文字幕观看| 久久先锋影音av鲁色资源网| 日韩欧美一区二区视频在线播放 | 91美女在线观看| 日本不卡二区高清三区| 91网页在线观看| 亚洲欧美一区二区三区极速播放| 午夜啪啪福利视频| av福利在线导航| 91九色最新地址| 在线观看中文av| 久久国产精品免费精品3p| 亚洲欧美日韩国产中文| 国产视频精品免费| 影音先锋一区| 国产精品国产亚洲伊人久久| 国产精品熟女久久久久久| 成人精品高清在线| 日韩理论片在线观看| 国产区在线观看| 欧美日韩国产影院| 天天干天天色天天干| 久久黄色影视| 中文字幕日韩欧美在线| 久久久综合久久久| 日韩电影在线一区二区| 99国产高清| 国产在线观看网站| 亚洲一区二区在线视频| 婷婷六月天在线| 国产成人夜色高潮福利影视| 国产一区二区三区在线观看视频 | 51午夜精品视频| 国产绿帽刺激高潮对白| www激情久久| 97av中文字幕| 主播大秀视频在线观看一区二区| 精品日韩欧美一区二区| 日本 欧美 国产| 香蕉久久久久久久av网站| 亚洲字幕在线观看| 97在线观看免费观看高清| 午夜精品久久久久久久蜜桃app| 欧美日韩一区二区三区69堂| 日韩有码中文字幕在线| 欧美老女人性视频| 亚洲手机在线观看| 久久精品夜夜夜夜久久| 无码粉嫩虎白一线天在线观看| 日韩福利影视| 一个人看的www久久| 日韩乱码人妻无码中文字幕| 国产一区二区在线免费观看| 亚洲人成影视在线观看| 午夜日韩成人影院| 亚洲精品一区二区在线| 日韩黄色a级片| 国产美女久久久久| 中文字幕日韩一区二区三区不卡| 日本精品在线中文字幕| 日韩禁在线播放| 国产无套粉嫩白浆内谢| 国产成人精品影视| 黄色小视频大全| 99久久久成人国产精品| 日韩中文字幕国产| 亚洲自拍第二页| 中文字幕电影一区| 91热这里只有精品| 日韩激情图片| 国产精品中文字幕久久久| 免费国产在线观看| 一本大道久久a久久精品综合| 97香蕉碰碰人妻国产欧美| 亚洲精品精选| 狠狠色噜噜狠狠狠狠色吗综合| 日本色护士高潮视频在线观看 | 欧美在线亚洲在线| 酒色婷婷桃色成人免费av网| 日本道精品一区二区三区| 精品人伦一区二区三电影| 久久男女视频| 亚洲乱码国产乱码精品天美传媒| 日韩成人在线电影| 久久99久国产精品黄毛片入口| 精品人妻一区二区三区日产乱码| 亚洲专区一二三| 男女一区二区三区| 亚洲欧美日韩国产一区二区| 热re99久久精品国99热蜜月| 成人精品国产亚洲| 欧美另类99xxxxx| 天堂中文网在线| 欧美色另类天堂2015| 一级特黄曰皮片视频| 九九久久精品视频| 久久在线中文字幕| 香蕉久久精品| 国产美女久久久| 人交獸av完整版在线观看| 亚洲国产精品va| 天天综合久久综合| 亚洲码国产岛国毛片在线| 欧美一级片黄色| 老牛嫩草一区二区三区日本| 亚洲精品中文字幕在线| 亚洲国产视频二区| 午夜欧美大片免费观看| 精品国产乱码一区二区三| 亚洲va天堂va国产va久| 国产国语性生话播放| 日韩精品高清不卡| 中文字幕久久综合| 老司机在线精品视频| 国产成人精品视频在线观看| 色老头视频在线观看| 欧美一区二区三区四区五区| www成人在线| 日本一区二区三区高清不卡 | 18精品爽国产三级网站| 精品一区二区三区免费观看| 欧美激情亚洲天堂| 成人羞羞网站| 91成人免费观看| 手机av在线| 色综合影院在线| 高潮毛片7777777毛片| 一本一本久久a久久精品综合麻豆| 国产一二三四区在线| 丁香网亚洲国际| 日本免费a视频| 国产探花一区在线观看| av一区和二区| 欧美不卡高清一区二区三区| 久久精品国产亚洲精品| 欧美色综合一区二区三区| 337p亚洲精品色噜噜狠狠| 日韩精品一区二区av| 日本一区二区三区在线不卡| 亚洲国产综合视频| 国模娜娜一区二区三区| 可以在线看的av网站| 精品视频久久| 欧美日韩国产高清视频| 欧美视频二区欧美影视| 国产精品白丝jk喷水视频一区| 久久综合网导航| 正在播放欧美一区| 天天摸夜夜添狠狠添婷婷| 911精品国产一区二区在线| 国产精品30p| 一区二区三区免费| 国产主播av在线| 91热门视频在线观看| 一二三av在线| 精品一区二区综合| 亚洲一二三区av| 久久福利精品| 激情伊人五月天| 国产精品久久| 最新av在线免费观看| 精品一区二区三区中文字幕老牛| 久久国产精品一区二区三区四区| 日韩视频在线直播| 国产精品一二三在线| 午夜精品成人av| 国产精品国产三级国产aⅴ浪潮| 筱崎爱全乳无删减在线观看 | av在线无限看| 亚洲啪啪91| 国产91xxx| 亚洲激情不卡| 国产精品又粗又长| 精品动漫3d一区二区三区免费版| 妞干网视频在线观看| 你懂的国产精品| 亚洲自拍偷拍一区二区三区| 久久久影院免费| 在线观看污视频| 中文在线日韩| 国产成人三级视频| 中文字幕一区二区av| 熟妇熟女乱妇乱女网站| 精品视频日韩| 最新视频 - x88av| 亚洲综合激情在线| 400部精品国偷自产在线观看| 女人天堂亚洲aⅴ在线观看| 日本三日本三级少妇三级66| 一区二区免费不卡在线| 视色,视色影院,视色影库,视色网| 欧美日韩国产一区精品一区| 福利视频免费在线观看| 亚洲国产一区二区三区a毛片 | 97人妻精品一区二区免费| 国产99久久久国产精品免费看| 人妻精品久久久久中文字幕69| 国产精品亚洲成人| 亚洲成人精品在线播放| 99久久婷婷国产综合精品 | 久久久高清一区二区三区| 成人在线视频免费播放| 国产清纯白嫩初高生在线观看91| 波多野结衣一二三四区| 国产精品白丝在线| 三级全黄做爰视频| 亚洲一区影音先锋| 国产精品视频一区在线观看| 精品久久久久久久久久| 中文字幕在线观看欧美| 欧美一区二区啪啪| 日批视频免费播放| 日日骚久久av| 日韩三级电影视频| 69av在线视频| 97成人超碰| 99精品99久久久久久宅男| 日韩最新在线| 亚洲一区影院| 国产精品一页| 91国内在线播放| 成人美女视频在线观看| 亚洲精品视频久久久| 国产精品久99| 日韩精品一区三区| 欧美图区在线视频| 亚洲av成人精品一区二区三区在线播放 | 国产精品久久久一区二区三区| 亚洲国产最新| 午夜精品亚洲一区二区三区嫩草| 久久精品影视| 成人一级片网站| 国产精品一区二区黑丝| 国产性猛交xx乱| 亚洲国产精品久久久久婷婷884| 欧美成人一区二区三区四区| 欧美大片日本大片免费观看| 成人在线免费视频| 欧美激情精品久久久久久免费印度 | 国产精品福利一区二区三区| 一区二区三区视频免费看| 欧美精品久久99久久在免费线| 噜噜噜久久,亚洲精品国产品| 最近2019中文免费高清视频观看www99 | 香港三日本三级少妇66| 久久影视电视剧免费网站| 亚洲欧美在线成人| 精品婷婷色一区二区三区蜜桃| 国产精品久久观看| 国产福利在线免费| 久久女同互慰一区二区三区| 久久久精品视频免费观看| 欧美日韩精品一区二区三区四区 | 丝袜在线观看| 亚洲一区二区久久久久久| 国产精品一线天粉嫩av| 国产欧美日韩小视频| 国产成人午夜视频| 极品魔鬼身材女神啪啪精品| 欧美亚洲综合色| 国产玉足榨精视频在线观看| 午夜精品久久久久久久白皮肤| 永久免费观看精品视频| 久久久www免费人成黑人精品| 亚洲黄色免费| 在线观看成人动漫| 一区二区三区色| 亚洲毛片在线播放| 九九热这里只有精品免费看| 外国成人毛片| 欧洲xxxxx| 国产麻豆精品久久一二三| 黑人狂躁日本娇小| 337p亚洲精品色噜噜狠狠| 久久99精品久久久久久野外| 国产欧美精品日韩精品| 91精品一区二区三区综合| 性欧美videossex精品| 国产日韩三级在线| 6—12呦国产精品| 精品激情国产视频| 香蕉久久一区| 男女裸体影院高潮| 丁香啪啪综合成人亚洲小说| 久久中文字幕在线观看| 亚洲精品乱码久久久久久金桔影视| h片视频在线观看| 国产精品视频免费一区二区三区| 国产日韩欧美一区| av无码一区二区三区| 色综合久久久久久久久久久| jizz在线观看| 成人精品视频99在线观看免费 | 久久视频一区二区三区| 日本韩国欧美三级| 国产精品刘玥久久一区| 91亚洲精品丁香在线观看| 中文在线播放一区二区| 91精品小视频| 在线观看免费视频综合| 大乳在线免费观看| 91精品免费| 99国产精品视频免费观看一公开| 在线小视频你懂的| 欧美日韩精品免费| a级网站在线播放| 欧美不卡福利| 美女视频黄久久| 中文字幕另类日韩欧美亚洲嫩草| 亚洲电影免费观看高清完整版在线观看| 色综合亚洲图丝熟| 伊人情人网综合| 91影院在线观看| 亚洲天堂avav| 久久久久久久97| 久久在线电影|