日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

基于Golang的监听读取配置文件的程序包开发——simpleConfig_v1

發(fā)布時(shí)間:2023/11/28 生活经验 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Golang的监听读取配置文件的程序包开发——simpleConfig_v1 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基于Golang的監(jiān)聽(tīng)&讀取配置文件的程序包開(kāi)發(fā)——simpleConfig_v1 【閱讀時(shí)間:約10分鐘】

  • 一、配置文件概述
  • 二、系統(tǒng)環(huán)境&項(xiàng)目介紹
    • 1.系統(tǒng)環(huán)境
    • 2.項(xiàng)目的任務(wù)要求
  • 三、具體程序設(shè)計(jì)及Golang代碼實(shí)現(xiàn)
    • 1. 數(shù)據(jù)結(jié)構(gòu)
    • 2. init函數(shù)模塊
    • 3.listen函數(shù)模塊
    • 4.watch函數(shù)模塊
  • 四、設(shè)置自定義錯(cuò)誤
  • 五、程序測(cè)試
    • 1.封裝并使用程序包
  • 2.功能測(cè)試
  • 3.單元測(cè)試
  • 六、中文 api 文檔
  • 七、完整代碼
  • 八、References

一、配置文件概述

配置文件(Configuration File,CF)是一種文本文檔,為計(jì)算機(jī)系統(tǒng)或程序配置參數(shù)和初始設(shè)置。傳統(tǒng)的配置文件就是文本行,在 Unix 系統(tǒng)中隨處可見(jiàn),通常使用 .conf,.config,.cfg 作為后綴,并逐步形成了 key = value 的配置習(xí)慣。在 Windows 系統(tǒng)中添加了對(duì) section 支持,通常用 .ini 作為后綴。面向?qū)ο笳Z(yǔ)言的興起,程序員需要直接將文本反序列化成內(nèi)存對(duì)象作為配置,逐步提出了一些新的配置文件格式,包括 JSON,YAML,TOML 等。

本次監(jiān)聽(tīng)&讀取配置文件的程序包()開(kāi)發(fā),主要應(yīng)用于ini配置文件。
開(kāi)發(fā)過(guò)程中使用的配置文件config.ini格式案例如下:

# possible values : production, development
app_mode = development[paths]
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
data = /home/git/grafana[server]
# Protocol (http or https)
protocol = http# The http port  to use
http_port = 9999# Redirect to correct domain if host header does not match domain
# Prevents DNS rebinding attacks
enforce_domain = true



二、系統(tǒng)環(huán)境&項(xiàng)目介紹

1.系統(tǒng)環(huán)境

操作系統(tǒng):CentOS7
硬件信息:使用virtual box配置虛擬機(jī)(內(nèi)存3G、磁盤(pán)30G)
編程語(yǔ)言:GO 1.15.2

2.項(xiàng)目的任務(wù)要求

  1. 核心任務(wù):包必須提供一個(gè)函數(shù)

    Watch(filename,listener) (configuration, error)
    
    • 輸入 filename 是配置文件名
    • 輸入 listener 一個(gè)特殊的接口,用來(lái)監(jiān)聽(tīng)配置文件是否被修改,讓開(kāi)發(fā)者自己決定如何處理配置變化
      • type ListenFunc func(string)
      • type inteface Listener { listen(inifile string) }
      • ListenFunc 實(shí)現(xiàn)接口方法 listen 直接調(diào)用函數(shù)
      • 優(yōu)點(diǎn)
        • 所有滿(mǎn)足簽名的函數(shù)、方法都可以作為參數(shù)
        • 所有實(shí)現(xiàn) Listener 接口的數(shù)據(jù)類(lèi)型都可作為參數(shù)
    • 輸出 configuration 數(shù)據(jù)類(lèi)型,可根據(jù) key 讀對(duì)應(yīng)的 value。 key 和 value 都是字符串
    • 輸出 error 是錯(cuò)誤數(shù)據(jù),如配置文件不存在,無(wú)法打開(kāi)等
    • 可選的函數(shù) WatchWithOption(filename,listener,...) (configuration, error)
  2. 包必須包括以下內(nèi)容:

    • 生成的中文 api 文檔
    • 有較好的 Readme 文件,包括一個(gè)簡(jiǎn)單的使用案例
    • 每個(gè)go文件必須有對(duì)應(yīng)的測(cè)試文件
    • 必須提供自定義錯(cuò)誤
    • 使有 init 函數(shù),使得 Unix 系統(tǒng)默認(rèn)采用 # 作為注釋行,Windows 系統(tǒng)默認(rèn)采用 ; 作為注釋行。
  3. 不能使用第三方包,但可以參考、甚至復(fù)制它們的代碼。例如:

    • ini 讀寫(xiě)包。 Github,中文支持

    • Viper 讀配置集成解決方案包。Github

      live watching and re-reading of config files (optional)

    • fsnotify 文件系統(tǒng)通知包。 Github

    • 你可以參考這些代碼,但不能在你的包中 import



三、具體程序設(shè)計(jì)及Golang代碼實(shí)現(xiàn)

根據(jù)任務(wù)要求可知,simpleConfig_v1程序包中的watch函數(shù)相當(dāng)于load、read、listen這三個(gè)函數(shù)的結(jié)合。在調(diào)用該函數(shù)時(shí),首先會(huì)輸出配置文件的原始信息,然后會(huì)一直監(jiān)聽(tīng)配置文件有無(wú)改動(dòng),若有改動(dòng)則會(huì)提示并展示最新的配置文件信息。

simpleConfig_v1程序包的函數(shù)架構(gòu)如下:

下面按照simpleConfig_v1程序包的源碼順序來(lái)依次介紹數(shù)據(jù)結(jié)構(gòu)和相關(guān)函數(shù)。

1. 數(shù)據(jù)結(jié)構(gòu)

var sys string
var flag int//three layer, like [server] -> protocol -> http
type Config [](map[string](map[string]string))

sys用于標(biāo)記注釋行, Unix 系統(tǒng)默認(rèn)采用 # 作為注釋行,Windows 系統(tǒng)默認(rèn)采用 ; 作為注釋行。
flag用于標(biāo)記watch函數(shù)只能輸出一次原始配置文件的信息。
Config是配置文件的數(shù)據(jù)結(jié)構(gòu),一個(gè)簡(jiǎn)單的配置文件最多可有三層,比如:

FirstLayer->SecondLayer->ThirdLayer
[server] -> protocol -> http



2. init函數(shù)模塊

func init() {flag = 0if runtime.GOOS == "windows" {sys = ";"} else {sys = "#"}
}

使有 init 函數(shù),使得 Unix 系統(tǒng)默認(rèn)采用 # 作為注釋行,Windows 系統(tǒng)默認(rèn)采用 ; 作為注釋行。


3.listen函數(shù)模塊

type Listener interface {Listen(filename string)
}type ListenFunc func(filename string) (Config, error)func (fun ListenFunc) Listen(filename string) (Config, error) {return fun(filename)
}func Watch(filename string, listener ListenFunc) (Config, error) {...//listenreturn listener.Listen(filename)
}func main() {var listener ListenFunc = OnConfigChangefilename := "config.ini"for {configuration, err := Watch(filename, listener)if err != nil {fmt.Println(err.Error())} else {fmt.Println(filename + "文件發(fā)生改變,改變后的配置信息如下:")//fmt.Println(configuration)for key, value := range configuration {fmt.Println(key, ":", value)}fmt.Println("")}time.Sleep(time.Duration(2) * time.Second)}
}

輸入 listener 一個(gè)特殊的接口,用來(lái)監(jiān)聽(tīng)配置文件是否被修改,讓開(kāi)發(fā)者自己決定如何處理配置變化。
- type ListenFunc func(string)
- type inteface Listener { listen(inifile string) }
- ListenFunc 實(shí)現(xiàn)接口方法 listen 直接調(diào)用函數(shù)
- 優(yōu)點(diǎn)
- 所有滿(mǎn)足簽名的函數(shù)、方法都可以作為參數(shù)
- 所有實(shí)現(xiàn) Listener 接口的數(shù)據(jù)類(lèi)型都可作為參數(shù)

在上述例子中,listen函數(shù)的執(zhí)行流程為

watch函數(shù) -> listener.Listen(filename)函數(shù) -> OnConfigChange函數(shù)

其中OnConfigChange函數(shù)具體實(shí)現(xiàn)如下:


func OnConfigChange(filename string) (Config, error) {temp := new(Config)config1, err := temp.ReadConfig(filename)if err != nil {return config1, err}flag2 := falsefor {temp2 := new(Config)config2, err := temp2.ReadConfig(filename)if err != nil {return config2, err}if len(config1) != len(config2) {return config2, nil}for _, i := range config2 {for j, k := range i {for l, m := range k {flag2 = falsefor _, n := range config1 {map1 := n[j]map2 := map1[l]if map2 == m {flag2 = true}}if flag2 == false {return config2, nil}}}}}
}

每當(dāng)listen函數(shù)模塊監(jiān)聽(tīng)到配置文件由發(fā)生修改,便會(huì)提示修改信息和輸出修改后的配置文件信息。


4.watch函數(shù)模塊

//Watch = load + read + listen
func Watch(filename string, listener ListenFunc) (Config, error) {//load + readif flag == 0 {config := new(Config)configuration, err := config.ReadConfig(filename)if err != nil {fmt.Println(err.Error())} else {fmt.Println("")fmt.Println(filename + "文件原始的的配置信息如下:")//fmt.Println(configuration)for key, value := range configuration {fmt.Println(key, ":", value)}fmt.Println("")}flag = 1}//listenreturn listener.Listen(filename)
}

watch函數(shù)相當(dāng)于load、read、listen這三個(gè)函數(shù)的結(jié)合。在調(diào)用該函數(shù)時(shí),首先會(huì)輸出配置文件的原始信息,然后會(huì)一直監(jiān)聽(tīng)配置文件有無(wú)改動(dòng),若有改動(dòng)則會(huì)提示并展示最新的配置文件信息。

其中l(wèi)oad&read的函數(shù)為ReadConfig函數(shù),其具體實(shí)現(xiàn)如下:

func (c *Config) ReadConfig(filename string) (Config, error) {file, err := os.Open(filename)if err != nil {return nil, err}defer file.Close()var element map[string]map[string]stringvar FirstLayer stringbuf := bufio.NewReader(file)for {l, err := buf.ReadString('\n')line := strings.TrimSpace(l)if err != nil {if err != io.EOF {return nil, err}if len(line) == 0 {break}}switch {case len(line) == 0:case string(line[0]) == sys:case line[0] == '[' && line[len(line)-1] == ']':FirstLayer = strings.TrimSpace(line[1 : len(line)-1])element = make(map[string]map[string]string)element[FirstLayer] = make(map[string]string)default:index := strings.IndexAny(line, "=")value := strings.TrimSpace(line[index+1 : len(line)])if FirstLayer == "" {FirstLayer = "FirstLayer"}element = make(map[string]map[string]string)element[FirstLayer] = make(map[string]string)valmap := strings.TrimSpace(line[0:index])element[FirstLayer][valmap] = value*c = append(*c, element)}}return *c, nil
}



四、設(shè)置自定義錯(cuò)誤

利用errors包,可以在【三】的基礎(chǔ)上添加自定義錯(cuò)誤如下:

func OnConfigChange(filename string) (Config, error) {temp := new(Config)config1, err := temp.ReadConfig(filename)if err != nil {err2 := errors.New("Could not read the config file.")return config1, err2}...temp2 := new(Config)config2, err := temp2.ReadConfig(filename)if err != nil {err2 := errors.New("Could not read the config file.")return config2, err2}...
}func (c *Config) ReadConfig(filename string) (Config, error) {file, err := os.Open(filename)if err != nil {err2 := errors.New("Could not open the config file.")return nil, err2}...l, err := buf.ReadString('\n')line := strings.TrimSpace(l)if err != nil {if err != io.EOF {err2 := errors.New("Could not read the config element.")return nil, err2}if len(line) == 0 {break}}...
}



五、程序測(cè)試

1.封裝并使用程序包

將項(xiàng)目simpleConfig_v1的simpleConfig_v1.go文件的main函數(shù)注釋掉,package改為package simpleConfig_v1,然后執(zhí)行如下指令:

go build

在其他路徑下建立main.go,內(nèi)容如下(listen函數(shù)可由用戶(hù)自定義設(shè)置,此處使用simpleConfig_v1自帶的OnConfigChange函數(shù)):

//main.go
package mainimport ("fmt""time""github.com/user/simpleConfig_v1"
)func main() {var listener simpleConfig_v1.ListenFunc = simpleConfig_v1.OnConfigChangefilename := "config.ini"for {configuration, err := simpleConfig_v1.Watch(filename, listener)if err != nil {fmt.Println(err.Error())} else {fmt.Println(filename + "文件發(fā)生改變,改變后的配置信息如下:")//fmt.Println(configuration)for key, value := range configuration {fmt.Println(key, ":", value)}fmt.Println("")}time.Sleep(time.Duration(2) * time.Second)}}

并在main.go的目錄下存放config.ini配置文件,內(nèi)容如下:

# possible values : production, development
app_mode = development[paths]
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
data = /home/git/grafana[server]
# Protocol (http or https)
protocol = http# The http port  to use
http_port = 9999# Redirect to correct domain if host header does not match domain
# Prevents DNS rebinding attacks
enforce_domain = true



2.功能測(cè)試

功能測(cè)試主要從用戶(hù)角度測(cè)試程序包的功能,步驟如下:




[henryhzy@localhost user]$ go run main.goconfig.ini文件原始的的配置信息如下:
0 : map[FirstLayer:map[app_mode:development]]
1 : map[paths:map[data:/home/git/grafana]]
2 : map[server:map[protocol:http]]
3 : map[server:map[http_port:9999]]
4 : map[server:map[enforce_domain:true]]config.ini文件發(fā)生改變,改變后的配置信息如下:
0 : map[FirstLayer:map[app_mode:development]]
1 : map[paths:map[data:/home/git/grafana]]
2 : map[server:map[protocol:http]]
3 : map[server:map[http_port:18342026]]
4 : map[server:map[enforce_domain:true]]config.ini文件發(fā)生改變,改變后的配置信息如下:
0 : map[FirstLayer:map[app_mode:henryhzy]]
1 : map[paths:map[data:/home/git/grafana]]
2 : map[server:map[protocol:http]]
3 : map[server:map[http_port:18342026]]
4 : map[server:map[enforce_domain:true]]^Csignal: interrupt

由此可知程序包的功能測(cè)試正常,調(diào)用程序包后首先會(huì)輸出配置文件的原始信息,然后會(huì)一直監(jiān)聽(tīng)配置文件有無(wú)改動(dòng),若有改動(dòng)則會(huì)提示并展示最新的配置文件信息。通過(guò)鍵盤(pán)ctrl+c可以終止監(jiān)聽(tīng)程序。


3.單元測(cè)試

單元測(cè)試主要從程序員角度,對(duì)程序包的具體函數(shù)進(jìn)行測(cè)試。

①init函數(shù)
測(cè)試代碼:

func Test_init(t *testing.T) {var test_sys string = "#"got := syswant := test_sysif got != want {t.Errorf("\n got %s\n want %s\n", got, want)}
}

測(cè)試結(jié)果:

②ReadConfig函數(shù)
測(cè)試代碼:

func Test_ReadConfig(t *testing.T) {filename := "config.ini"temp := new(Config)_, err := temp.ReadConfig(filename)if err != nil {t.Errorf("ReadConfig function failed\n%s\n", err)}
}

測(cè)試結(jié)果:

③listen函數(shù)
測(cè)試代碼:

func Test_listen(t *testing.T) {var listener ListenFunc = OnConfigChangefilename := "error_name.ini"_, err := listener(filename)got := fmt.Sprintf("%s", err)err2 := errors.New("Could not read the config file.")want := fmt.Sprintf("%s", err2)if got != want {t.Errorf("\nListen function failed\n%s\n%s", err, err2)}
}

測(cè)試結(jié)果:

④watch函數(shù)
測(cè)試代碼:

func Test_watch(t *testing.T) {var listener ListenFunc = OnConfigChangefilename := "error_name.ini"_, err := Watch(filename, listener)got := fmt.Sprintf("%s", err)err2 := errors.New("Could not read the config file.")want := fmt.Sprintf("%s", err2)if got != want {t.Errorf("\nListen function failed\n%s\n%s", err, err2)}
}

測(cè)試結(jié)果:

通過(guò)簡(jiǎn)單的單元測(cè)試可知,程序包的函數(shù)均可正常調(diào)用。


六、中文 api 文檔

首先安裝godoc如下:

git clone https://github.com/golang/tools $GOPATH/src/golang.org/x/tools
go build golang.org/x/tools

將項(xiàng)目simpleConfig_v1的simpleConfig_v1.go文件的main函數(shù)注釋掉,package改為package simpleConfig_v1,然后執(zhí)行如下指令:

go install
go doc
godoc -url="pkg/github.com/user/simpleConfig_v1" > API.html

便會(huì)在當(dāng)前目錄下生成API.html文件:



七、完整代碼

具體代碼可見(jiàn)gitee倉(cāng)庫(kù):gitee


八、References

  1. ini 讀寫(xiě)包。 Github
  2. Viper 讀配置集成解決方案包。Github
  3. fsnotify 文件系統(tǒng)通知包。 Github

總結(jié)

以上是生活随笔為你收集整理的基于Golang的监听读取配置文件的程序包开发——simpleConfig_v1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

激情五月综合网 | 视频一区二区免费 | 干狠狠 | 免费看一级片 | 2021国产精品视频 | 免费av电影网站 | 成人网在线免费视频 | 亚洲天天综合网 | 久久综合福利 | 狠狠狠狠狠操 | 国产成人精品一区二区在线 | 欧美日本不卡视频 | 日本韩国在线不卡 | 国产成人精品一区二区三区网站观看 | 久久精品一区二区国产 | 欧美亚洲xxx | 91精品国自产在线观看 | 国产精品一区二区av影院萌芽 | 天天操比 | 久久国际影院 | 一级黄色在线免费观看 | 一级黄色免费 | 久久精品欧美日韩精品 | 国产精品女人久久久 | 伊人中文字幕在线 | 国产一级片久久 | 久艹在线播放 | 亚洲日韩中文字幕 | 又黄又色又爽 | 国产亚洲精品日韩在线tv黄 | 在线欧美最极品的av | 福利视频第一页 | 国产精品免费在线视频 | 久久黄色片子 | 99久久精品国 | 欧洲精品视频一区二区 | 国产成人精品av久久 | 狠狠狠狠狠色综合 | 久久久久亚洲精品成人网小说 | 久久高清免费观看 | 亚洲综合色视频在线观看 | 国产91粉嫩白浆在线观看 | 免费av黄色 | 国产91在线免费视频 | 九九热免费观看 | 中文字幕在线观看免费观看 | 国产一区久久 | 成人欧美在线 | 99久久久国产精品 | 伊人久久一区 | 91在线免费播放视频 | 久久精品国产亚洲精品 | 国产成人一区二 | 久久一区二区三区日韩 | a级一a一级在线观看 | 国产精品久久久久免费a∨ 欧美一级性生活片 | a黄色影院| 精品国产欧美 | 欧美亚洲专区 | 麻豆一级视频 | 天天躁日日躁狠狠 | 国产97在线观看 | 日韩一区二区三区观看 | 日韩三级精品 | 午夜精品福利一区二区三区蜜桃 | 久人人 | 黄色tv视频 | 天天干夜夜夜操天 | 国产精品乱码久久 | 99精品视频在线观看免费 | 国产丝袜一区二区三区 | 国产精品黄网站在线观看 | 日韩免 | 在线成人高清电影 | 成年人免费在线观看网站 | 久久久久久久久久久精 | 久久免费视频在线观看30 | 久久久久久久久久国产精品 | 观看免费av | 国产成人精品亚洲 | 国产精品区二区三区日本 | 99久久精品国产一区二区成人 | 亚洲精品小视频 | 国产精品 视频 | 97狠狠干 | 91精品一区在线观看 | 精品在线视频一区二区三区 | 中文在线a√在线 | 中文av在线免费观看 | 东方av免费在线观看 | 婷婷婷国产在线视频 | 一区二区精 | 久久 地址 | 人人爽人人爽av | 久久99视频免费 | 国产99精品| 97视频在线观看网址 | 99精品在线免费视频 | 欧美专区日韩专区 | 亚洲开心色 | 亚洲成年人在线播放 | 在线一二三区 | 国产精品成人在线 | 天天爱综合 | 波多野结衣精品视频 | 国产精品一区二区免费看 | 国产美女免费看 | 国产日韩高清在线 | 91看片淫黄大片一级在线观看 | 久久久久久黄色 | 欧美一性一交一乱 | 91中文字幕在线视频 | 岛国av在线免费 | 一级片观看| 992tv又爽又黄的免费视频 | 国产一级电影免费观看 | 精品久久久久久电影 | 国产精品日韩久久久久 | 国产永久网站 | 美女在线观看网站 | 国产 日韩 在线 亚洲 字幕 中文 | 亚洲国产视频在线 | 在线观看理论 | 97久久精品午夜一区二区 | 天天摸天天舔天天操 | 九九九九热精品免费视频点播观看 | 在线观看视频黄 | 久久国产二区 | 99九九99九九九视频精品 | 在线观看黄网 | 久久综合影音 | 婷婷网址 | 国产一区二区精品久久91 | 精品av在线播放 | 亚洲国产精品成人女人久久 | www四虎影院 | 久久久91精品国产一区二区三区 | 色婷婷综合久久久久中文字幕1 | 亚洲高清视频一区二区三区 | 国产精品久久久久久久毛片 | 欧美韩国日本在线 | 中文字幕在线观看1 | 91免费高清在线观看 | 国内毛片毛片 | 91最新在线观看 | 日日干精品 | 免费精品国产va自在自线 | 国产精品美女网站 | 黄色av影视 | 国产午夜精品免费一区二区三区视频 | 日韩欧美一区二区三区视频 | 久久综合婷婷国产二区高清 | 欧美日韩成人 | 国产成人精品一区二区三区免费 | 久久精品国产99 | 天天射综合网站 | 一级国产视频 | 亚洲 综合 激情 | 日本中文字幕视频 | a天堂在线看 | 国产色资源 | 香蕉久草 | 国产精品久久久一区二区三区网站 | 插久久 | 久久人人精品 | 欧美日韩精品综合 | 超碰在线最新地址 | 狠狠色综合网站久久久久久久 | 精品国产1区2区3区 国产欧美精品在线观看 | 免费一级片在线 | 在线国产高清 | 91高清在线看 | 成年人黄色大片在线 | 久久久久久久福利 | 久久婷婷一区 | 日韩欧美电影网 | 香蕉视频在线视频 | 日本精品久久久久影院 | 色伊人网 | 丰满少妇久久久 | 国产一级黄大片 | 国产精品亚洲视频 | 四虎在线免费观看视频 | 国产精品久久久久久超碰 | 日日夜夜人人精品 | 99久久国产免费看 | 国产精品一区二区免费 | 国产麻豆剧果冻传媒视频播放量 | 麻豆视频一区二区 | 久久久高清一区二区三区 | 日韩成人在线免费观看 | aaa毛片视频| 国产原创在线 | 精品一二区 | 久久综合久久综合这里只有精品 | 五月天伊人网 | 欧美激情奇米色 | 国产乱码精品一区二区三区介绍 | 黄网站免费看 | 久久国产精品系列 | 成人av中文字幕 | 黄色片网站av | 韩国在线一区二区 | www.夜夜操 | 久久精品国产久精国产 | 亚洲精品97 | 日韩中文字幕a | 99精品偷拍视频一区二区三区 | av福利在线看| 天天综合网入口 | 日本黄色免费大片 | 免费看一级黄色大全 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 天天天干夜夜夜操 | 日韩中文字幕视频在线观看 | 人人爽人人干 | av高清在线观看 | 怡红院av| 一本一本久久a久久精品综合小说 | 97精品一区二区三区 | 久久久www成人免费精品张筱雨 | 国产精品一级在线 | av在线进入 | 国产精品欧美激情在线观看 | 久久久福利视频 | 免费日韩精品 | 亚洲三级毛片 | 91精品在线观看视频 | 精品视频亚洲 | 欧美天天综合 | 97视频播放 | 婷婷亚洲最大 | 久久久免费看片 | 操久| 国产精品麻豆欧美日韩ww | 色综合欧洲 | 日批网站在线观看 | 国产精品美乳一区二区免费 | www.色综合.com| 中文字幕视频观看 | 日本精品久久久久中文字幕 | 四虎精品成人免费网站 | 欧美日韩久久一区 | 日批视频在线播放 | 国产精品成人久久久 | 中文字幕a∨在线乱码免费看 | 亚洲欧洲精品久久 | 国产精品一区二区中文字幕 | 青青草国产在线 | 日批视频在线观看免费 | 夜夜躁日日躁狠狠久久av | 99久久综合精品五月天 | 美女福利视频在线 | 中文字幕a∨在线乱码免费看 | 狠狠狠狠狠狠狠干 | 亚洲一级片在线看 | 操操综合网 | 久久久久久片 | 亚洲精品影院在线观看 | 国产精品一二三 | 激情婷婷综合网 | 97国产大学生情侣酒店的特点 | 免费精品国产 | 精品国产亚洲一区二区麻豆 | 亚洲成人黄色在线观看 | 91爱爱免费观看 | 久久99精品国产一区二区三区 | 天天干天天干天天 | 欧美日韩一区二区在线 | 国产精品剧情 | av一级网站 | 国产精品电影在线 | www.夜夜骑.com | 亚洲精品国偷自产在线91正片 | 国产黄色在线看 | 精品国产一区二区三区男人吃奶 | 久草a视频 | 国产字幕av | 黄视频色网站 | 日韩av网站在线播放 | 91日韩在线播放 | 91九色国产蝌蚪 | 日本中文字幕久久 | 插插插色综合 | 久久观看免费视频 | 久草在线免费新视频 | 亚洲精品看片 | 免费av大全 | 99在线热播精品免费 | 中文字幕精品一区久久久久 | 在线 精品 国产 | 超碰公开在线观看 | 欧美大香线蕉线伊人久久 | 中文av免费 | 国产成人三级 | 日本黄色大片儿 | 黄视频色网站 | 久草在线手机视频 | 夜夜躁狠狠躁日日躁 | 国产成年免费视频 | 欧美在线视频一区二区三区 | 又黄又爽又刺激的视频 | 免费看色的网站 | 99一级片 | 国产精品久久久久一区二区 | 久香蕉| 丁香久久综合 | 亚洲综合成人在线 | 国产偷在线 | 久久视频网 | 成人免费在线视频 | 精品国产伦一区二区三区观看方式 | 激情网在线视频 | 久久精品最新 | 国产激情久久久 | 婷婷综合久久 | 超碰97免费| 天天色天天艹 | 国产精品久久久久久久久久尿 | 日韩videos | 美女在线免费观看视频 | 最近高清中文在线字幕在线观看 | 欧美日韩一区二区免费在线观看 | 91大神精品视频在线观看 | 国产免费观看高清完整版 | 国产系列 在线观看 | 日夜夜精品视频 | 天天射天天干天天 | 一区二区三区高清在线 | 在线视频99 | 久久精品国产亚洲a | 亚洲激情综合 | 中文在线天堂资源 | 精品99久久 | 97av影院| 97国产超碰在线 | 国产男男gay做爰 | 久草在线视频中文 | 五月天激情开心 | 在线视频亚洲 | 日韩欧美精品在线观看 | 欧美日韩国产在线精品 | 国产 日韩 欧美 中文 在线播放 | av三级在线免费观看 | 不卡的av在线 | 99精品欧美一区二区蜜桃免费 | 国产涩涩在线观看 | 中文字幕在线久一本久 | av黄色成人 | 天天色综合三 | 日韩精品一区二区三区免费观看 | 欧美激情综合五月色丁香 | 午夜精品久久久久久中宇69 | 久爱综合| 久久99久久99久久 | 亚洲91视频| 国产九九精品 | 91av综合| 午夜精品剧场 | 2024av在线播放 | 中国一级片在线播放 | 国产黄色a | 国产精品一区二区三区久久久 | 久久久久久久久久久免费 | japanese黑人亚洲人4k | 狠狠干网址 | 99久久精品一区二区成人 | 久草在线视频看看 | 精品毛片一区二区免费看 | 2019中文最近的2019中文在线 | 91九色精品女同系列 | 中文字幕在线看视频国产中文版 | 久久激情片 | 伊人久久av | 国产原创在线视频 | 欧美日韩高清国产 | 色久天 | 国产免费专区 | 色福利网站 | 国产精品高潮呻吟久久av无 | 亚洲国产网址 | 四虎视频 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 在线中文字幕网站 | 91自拍视频在线观看 | 国产精品96久久久久久吹潮 | 亚洲国产97在线精品一区 | 欧美日韩免费看 | 欧美狠狠色 | 国产精品一区二区精品视频免费看 | 欧美一区二区在线 | av品善网 | 国产视频一区二区三区在线 | 成人97人人超碰人人99 | 手机看片久久 | 国产精品久久一卡二卡 | 91成人精品一区在线播放 | 精品黄色片 | 日女人电影| 成人免费大片黄在线播放 | 日韩欧美高清一区二区三区 | 日韩视频在线播放 | 99久热在线精品视频成人一区 | 天天色成人 | 国产91精品久久久久 | 免费福利片2019潦草影视午夜 | 色综合天天综合在线视频 | 91毛片在线| 久久久观看 | 天天操天天能 | 丁香高清视频在线看看 | 99久久爱 | 色噜噜在线观看视频 | 久久久黄色免费网站 | 黄色三级免费 | 九九综合在线 | 欧美午夜精品久久久久久孕妇 | 日韩黄色免费看 | 四虎影院在线观看av | 成人aaa毛片 | 欧美最猛性xxxxx(亚洲精品) | 手机在线观看国产精品 | 天天曰夜夜爽 | 一区二区久久久久 | 久久国产精品影片 | 国产日韩中文字幕 | 一区二区在线影院 | 五月婷婷在线观看 | 天堂av观看 | 激情开心网站 | 久久综合九色综合久久久精品综合 | 免费69视频| 成人在线一区二区 | 视频在线在亚洲 | 91色蜜桃| 91看片在线观看 | 麻豆视频免费在线观看 | 91视频下载 | 久久综合给合久久狠狠色 | 国产精品丝袜久久久久久久不卡 | 久草电影在线观看 | 久久不卡日韩美女 | 中文字幕在线观看视频一区二区三区 | 日韩深夜在线观看 | 日本精品久久久久久 | 国产精品久久久久久久久久久久午夜片 | 成人国产一区二区 | 亚洲精品成人 | 久久精品99北条麻妃 | 国产96在线观看 | 精品av网站 | 伊人视频 | 欧美日韩国产区 | 中文字幕av在线不卡 | 国产色网站 | 国产黄色免费看 | 狠狠干,狠狠操 | 九九久久成人 | 三级av中文字幕 | 一级α片免费看 | 超碰激情在线 | 好看的国产精品视频 | 黄色片网站免费 | 久久免费视频这里只有精品 | 久久久久免费精品国产小说色大师 | 九九三级毛片 | 又爽又黄又无遮挡网站动态图 | 狠狠网亚洲精品 | 精品久久国产一区 | 在线观看视频一区二区 | 伊人婷婷| 亚洲专区路线二 | 精品国产一区二区三区男人吃奶 | 波多野结衣视频一区 | 国产在线观看你懂得 | 亚洲色图 校园春色 | 色综合久久久久久中文网 | 色av男人的天堂免费在线 | 天天干 天天摸 天天操 | 婷婷射五月 | 伊人久久影视 | 精品国产乱码久久久久久浪潮 | 伊人伊成久久人综合网小说 | 一区二区视频在线免费观看 | 久草在线视频资源 | 91中文在线观看 | 波多野结衣在线观看一区 | 天天插一插 | 亚洲精品成人在线 | 国产69精品久久久久9999apgf | 国产精品美乳一区二区免费 | 97超碰人人爱 | 国产99一区二区 | av观看网站 | 亚洲精品免费在线观看视频 | 亚洲精品视频在线播放 | 新版资源中文在线观看 | 91麻豆看国产在线紧急地址 | 日韩视频在线观看免费 | 国产精品一区二区白浆 | 最新国产一区二区三区 | 国产一区二区久久久久 | 午夜视频一区二区 | 日本中文字幕视频 | 久久66热这里只有精品 | 婷婷在线网站 | 成人日批视频 | 欧美日本高清视频 | 中文字幕 第二区 | 国产不卡在线播放 | 99色人 | 日本精品一区二区三区在线播放视频 | 国产99久久久国产 | 精品国产一区二区三区四区vr | 成人a视频| 久久综合九色综合欧美狠狠 | 日本 在线 视频 中文 有码 | 国产中年夫妇高潮精品视频 | 99国产视频 | 久久不射网站 | 青草视频在线 | 色播五月激情五月 | av经典在线 | 五月天久久综合网 | 天天操天天操天天操天天操天天操天天操 | 高清不卡免费视频 | www.天堂av | 国产精品一区免费在线观看 | 久久兔费看a级 | 久久久久国产精品厨房 | 婷婷六月综合网 | 欧美黑吊大战白妞欧美 | 九九激情视频 | 日本黄色特级片 | 激情小说 五月 | 开心丁香婷婷深爱五月 | 综合网婷婷 | 亚洲国产成人av网 | 国产黄a三级 | 午夜精品一区二区三区免费视频 | 久久精品一区二区 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 在线成人一区 | 五月花激情 | 色综合久久久久久久 | 99久免费精品视频在线观看 | 日韩性xxxx| 在线看日韩 | 丝袜美腿亚洲 | 精品1区2区3区 | 精品专区一区二区 | 日本少妇久久久 | 久久免费视屏 | 国产精品久久久久久久久久久久午夜片 | 九九热国产| 中文字幕欲求不满 | 91黄在线看| 在线视频你懂 | 国产精品精 | 99免费观看视频 | 亚洲国产999| 国产亚洲免费的视频看 | 黄免费网站| av观看在线观看 | 在线观看av国产 | 亚洲国产日韩欧美在线 | 日韩视频图片 | 国产伦理久久精品久久久久_ | 天堂va在线高清一区 | 成人黄色一级视频 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 在线观看中文字幕一区二区 | 国产精品久久在线 | 亚洲成人精品久久久 | 国产精品观看在线亚洲人成网 | 一区二区三区影院 | 久草在线91 | 一级黄色电影网站 | 色视频网址 | 99色精品视频 | 99色免费视频 | 日韩a在线播放 | 精品国产中文字幕 | 久久观看| 美女免费视频观看网站 | 黄色一级在线观看 | 高清在线一区二区 | www.五月婷婷 | 久产久精国产品 | 99久久久久久 | 视频在线观看亚洲 | 操老逼免费视频 | 国产一区免费在线观看 | 天天骚夜夜操 | 亚洲电影久久久 | 欧美在线观看禁18 | 精品国产99国产精品 | 高清不卡免费视频 | 草久视频在线观看 | 免费涩涩网站 | 久草视频网 | 精品久久久国产 | 中文字幕91视频 | 亚洲激情精品 | 91麻豆精品国产自产 | 亚洲精品国产免费 | 亚洲欧洲精品视频 | 日日夜夜精品视频天天综合网 | 激情视频免费观看 | 日韩精品中文字幕有码 | 少妇av片 | 中文字幕免费高清av | 91av色 | 国产亚洲视频中文字幕视频 | 久久激情小说 | 天天天天色射综合 | 国产高清区 | 国产精品久久嫩一区二区免费 | 亚洲在线a | 色橹橹欧美在线观看视频高清 | 中文字幕在线免费观看视频 | 午夜私人影院久久久久 | 日韩高清网站 | 色www.| 黄色三级视频片 | 狠狠综合久久 | 国产精品18久久久久久首页狼 | 久草在线视频网 | 美女视频久久久 | 久久看看| 国产成人综合在线观看 | 色www免费视频 | 亚洲一级黄色大片 | 欧美精品久久久久久久久久 | 国产精品日韩久久久久 | 国产大片免费久久 | 天天干天天色2020 | 中文av网站 | 超碰97中文 | 免费黄色网址网站 | 亚洲欧美日韩精品久久奇米一区 | 97视频在线观看播放 | 久久久精品欧美一区二区免费 | 91视频xxxx| 69热国产视频 | 欧美性网站 | 国产成免费视频 | 久久精品99国产国产精 | 日本久久综合视频 | av电影在线免费 | 国产91粉嫩白浆在线观看 | 中文字幕免费高清 | 97国产精品一区二区 | 久久a久久 | a天堂最新版中文在线地址 久久99久久精品国产 | 国产不卡免费视频 | www久久久久 | 超碰人人在线观看 | 国产日韩欧美综合在线 | 国内精品免费久久影院 | 国产一级黄色av | 久久伊人爱| 亚洲综合在线视频 | 免费色网 | 亚洲成人网av | 国产精品婷婷 | 国产在线观看国语版免费 | 免费观看黄 | 欧美午夜视频在线 | 91精品在线免费观看视频 | 99自拍视频在线观看 | 久久久久免费精品国产小说色大师 | 国产自产在线视频 | 欧美另类69 | 亚洲女同ⅹxx女同tv | 亚洲综合色播 | 成人a在线观看 | 久久高视频 | 色噜噜狠狠色综合中国 | 女人18毛片90分钟 | 久久激情视频 | 久久伊人婷婷 | 日本在线观看一区二区三区 | 免费一级特黄毛大片 | 超碰电影在线观看 | 国产成人一区二区在线观看 | 不卡精品| 九色精品免费永久在线 | 精品久久久久久综合 | 五月色婷| 在线免费观看视频a | 成片视频在线观看 | 91亚洲在线观看 | 99久久精| 91香蕉亚洲精品 | 国产区高清在线 | 国产精品久久久久久久久久免费看 | 97人人人人 | 天天操天天干天天操天天干 | 免费av 在线 | 亚洲国产精品va在线 | 久草免费福利在线观看 | 久久av免费电影 | 欧美日韩不卡一区二区 | 婷婷在线免费 | 亚洲国产精品一区二区久久hs | 日韩性网站 | 国产精品嫩草55av | 九九热免费视频在线观看 | 美女性爽视频国产免费app | 13日本xxxxxⅹxxx20 | 色a网| 一区二区三区在线免费播放 | 成人免费色 | 中文字幕在线看视频国产中文版 | 久久久久久久网 | 成年人在线视频观看 | 91pony九色丨交换 | 日本一区二区不卡高清 | www麻豆视频 | 国产免费美女 | 国产高清视频免费最新在线 | 又色又爽又激情的59视频 | 成人网在线免费视频 | 亚洲乱码中文字幕综合 | 激情欧美一区二区免费视频 | 日韩av电影中文字幕 | 91久久国产综合精品女同国语 | 欧美激情第八页 | 国产91对白在线 | 麻花天美星空视频 | 人人爽人人看 | 在线免费黄色av | 高清有码中文字幕 | 久久视屏网| 久久99精品久久久久久久久久久久 | 久久久精品综合 | 伊人久久在线观看 | 中文字幕乱码视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 五月婷婷色丁香 | 免费日韩三级 | 99久久er热在这里只有精品66 | 国产精品久久久久av福利动漫 | 久久久香蕉视频 | 五月婷婷丁香 | 91av电影在线观看 | 精品国产免费人成在线观看 | 天天操操 | 乱男乱女www7788 | 久久综合中文色婷婷 | 四虎www.| 国产高清视频色在线www | 天堂入口网站 | 91免费视频网站在线观看 | 国产精品欧美久久久久无广告 | 国产精品18毛片一区二区 | 狠狠躁夜夜躁人人爽视频 | 亚洲天堂网在线视频 | 香蕉视频国产在线观看 | 成人黄色小说视频 | 成人在线视频免费观看 | 午夜.dj高清免费观看视频 | 99久久久久久久 | 精品视频在线看 | 成人免费观看在线视频 | 最近日本中文字幕a | 毛片美女网站 | 久黄色 | 久久国产精品免费一区二区三区 | 亚洲伦理中文字幕 | 久久99精品国产麻豆宅宅 | 午夜影视一区 | 亚洲伊人成综合网 | 久久av免费 | 欧美a级成人淫片免费看 | 国产视频在线观看一区二区 | 在线成人观看 | 麻豆视频免费版 | 国产黄色免费 | 国产精品亚洲精品 | 欧美一级性生活片 | 欧美日韩国产高清视频 | 最近免费中文字幕大全高清10 | 又黄又爽又刺激视频 | 国产精品高清在线 | 国产成年免费视频 | 亚洲一区不卡视频 | 超碰人人在线观看 | 性色av免费在线观看 | 精品一区二区电影 | 激情大尺度视频 | 免费av黄色| 欧美精品一区在线 | 免费视频91蜜桃 | 日本午夜免费福利视频 | 亚洲一区二区91 | 俺要去色综合狠狠 | 日韩视频在线一区 | 国产一在线精品一区在线观看 | 91c网站色版视频 | 亚洲视频在线视频 | 久久国产一区二区三区 | 色偷偷网站视频 | 国内精品久久久久影院优 | 亚洲人视频在线 | 国产一区二区精 | 国产精品视频线看 | 在线观看a视频 | 亚洲少妇自拍 | 久久伊人精品一区二区三区 | 天堂va在线高清一区 | 天天干天天搞天天射 | 日韩欧美视频在线免费观看 | 日韩中文在线视频 | 黄色三级免费片 | 欧美亚洲免费在线一区 | 国产亚洲精品久久久久久大师 | 蜜桃av观看 | 国产精品黑丝在线观看 | 国产精品免费观看久久 | 天天操天天操天天操天天 | 91免费观看网站 | 日韩中文字幕电影 | 91观看视频 | 午夜视频亚洲 | 精品国内自产拍在线观看视频 | 日韩一区二区三区视频在线 | 国产中文字幕一区二区 | 日韩免费视频播放 | 一区二区亚洲精品 | 在线看成人 | 亚洲视频播放 | 在线激情电影 | 91精品啪在线观看国产线免费 | 麻豆视频免费播放 | 亚洲小视频在线 | 国产字幕av| 免费成人短视频 | 五月婷婷在线观看视频 | 丁香九月婷婷 | 91麻豆看国产在线紧急地址 | 国产四虎在线 | av免费在线网站 | 成人在线观看资源 | 草久草久| 五月天综合激情网 | av福利在线导航 | 久久久精品国产免费观看一区二区 | 欧美日韩亚洲一 | 成人国产网址 | 九九电影在线 | 亚洲国产美女精品久久久久∴ | 一区二区三区在线观看 | 四虎永久免费 | 成人午夜影视 | 欧美性春潮 | 麻花豆传媒mv在线观看网站 | 粉嫩av一区二区三区四区在线观看 | 特级西西444www高清大视频 | 少妇性bbb搡bbb爽爽爽欧美 | 免费人成在线观看网站 | 久久成人福利 | 人人狠狠 | 色婷婷五 | 日日操天天爽 | 久久av在线 | 国产日韩在线视频 | 97人人模人人爽人人喊网 | 国产1区在线 | 日韩高清成人在线 | 国产一区二区网址 | av在线免费观看黄 | 中国精品少妇 | 手机看片99| 成人久久视频 | 国产一区二区在线免费播放 | 久久婷婷影视 | 精品久操 | 91精品国产成人观看 | 日韩一区二区免费在线观看 | 日韩欧美在线观看一区二区三区 | 久久久999免费视频 日韩网站在线 | 色综合天天综合 | 18女毛片 | 在线看av网址 | 粉嫩av一区二区三区四区在线观看 | 97人人澡人人爽人人模亚洲 | 99久久精品国产欧美主题曲 | 免费看黄的视频 | 国产精品综合在线观看 | 99视频在线免费看 | 国产福利精品视频 | 欧美性猛片, | 91香蕉视频污在线 | 中文字幕在线视频一区 | 国产精品女同一区二区三区久久夜 | 精品黄色视 | 中文字幕人成乱码在线观看 | 色多多污污在线观看 | 97精品国产手机 | 国产高清在线看 | 日韩伦理一区二区三区av在线 | 九九热.com | 久草在线视频免费资源观看 | 欧美爽爽爽 | 成年人免费电影在线观看 | 成人看片| 精品福利在线 | 91麻豆产精品久久久久久 | 在线激情影院一区 | 国产成年免费视频 | 国产一区二区三区四区在线 | 探花视频在线观看免费 | 久章草在线观看 | 亚洲无线视频 | 成人黄在线 | 精品国模一区二区 | 日韩中文字幕电影 | 日本成人黄色片 | 人人天天夜夜 | 手机看国产毛片 | 999久久久免费精品国产 | 91九色国产在线 | 九九免费在线观看视频 | 国产第一福利 | 高清国产在线一区 | 久艹在线免费观看 | 欧美a在线看 | 精品国产亚洲在线 | 国产96在线观看 | 91九色pron| 在线观看国产一区二区 | 国产精品99久久久久久人免费 | 超碰国产在线观看 | 国产高h视频 | 国产精品1区2区在线观看 | 亚洲欧美国产精品va在线观看 | 成人免费在线观看入口 | 五月婷婷激情 | 欧美在线观看视频一区二区三区 | 中文字幕在线观看一区 | www.久久免费视频 | 日韩性久久 | 在线精品亚洲 | 中文字幕色婷婷在线视频 | www.色国产 | 韩国在线一区二区 | 黄色成人影院 | 精品久久久久久久久久久久 | 日韩视频免费观看高清 | 国产女教师精品久久av | 国产97在线视频 | 免费在线色 | 美女久久久久久 | 日本91在线 | 久草影视在线 | 欧美日本在线观看视频 | 一二区av| 欧美日韩精品综合 | 亚洲欧美日韩在线看 | 一级免费观看 | 中文字幕超清在线免费 | 首页国产精品 | av夜夜操| 欧美日韩不卡在线视频 | jizzjizzjizz亚洲 | 亚洲成av人影片在线观看 | 激情婷婷久久 | 99免费在线视频观看 | 中文字幕免费看 | 国产欧美久久久精品影院 | 久久艹国产| 亚洲成年人av| 黄色a一级视频 | 在线视频日韩一区 | 国产一区二区三区免费观看视频 | 在线之家免费在线观看电影 | 日韩啪啪小视频 | 欧美极品一区二区三区 | 精品久久久久久亚洲综合网 | 欧美日韩高清国产 | 激情av网 | 国产精品va在线 | 成 人 黄 色视频免费播放 | 亚洲爱av| 国产一区 在线播放 | 在线黄色免费 | 精品成人a区在线观看 | 91黄色小视频 | 国产91在线 | 美洲 | 久草久草视频 | 日韩欧美精品在线 | 精品久久免费 | 九九热免费观看 | 亚洲精品午夜久久久久久久久久久 | 国产精品久久久久久爽爽爽 | 最新日韩视频 |