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

為什么我覺得GoFrame的Garray比PHP的Array還好用?

開發 后端
gf框架有個特點,提供的組件基本都支持設置并發安全開關。顯然PHP是不支持并發安全開關的,PHP的數組是并發安全的。PHP-FPM是阻塞的單線程模型,PHP-FPM每個進程里只有一個線程,一個進程同時只能服務一個客戶端。

前言

寫過PHP的同學都知道 PHP的數組Array非常好用,特別靈活。

我在寫PHP之前使用Java做安卓開發,在接觸PHP的數組Array之后,直呼太香了!

而在學習Go基礎知識的時候了解到Go的數組和PHP的數組并不一樣;從一定程度上講,Go的slice切片類型和PHP的數組array比較像(不固定長度、引用類型、動態擴容等),但是在開發使用中遠遠不像PHP的array靈活。

初識GoFrame

最近在使用基于Go語言的GoFrame框架擼項目,發現GoFrame封裝的garray竟然比PHP的array還要好用。

gf框架有個特點,提供的組件基本都支持設置并發安全開關。顯然PHP是不支持并發安全開關的,PHP的數組是并發安全的。PHP-FPM是阻塞的單線程模型,PHP-FPM每個進程里只有一個線程,一個進程同時只能服務一個客戶端。

garray特點簡介

  1. garray支持int/string/interface{}三種常用的數據類型。
  2. garray支持普通數組和排序數組,普通數組的結構體名稱定義為Array格式,排序數組的結構體名稱定義為SortedArray格式,如下:Array, intArray, StrArray,SortedArray, SortedIntArray, SortedStrArray
  3. 其中排序數組SortedArray,需要給定排序比較方法,在工具包gutil中也定義了很多ComparatorXXX的比較方法,用起來很方便。當然也支持自定義排序方式。

基本使用

package main

import (
"fmt"
"github.com/gogf/gf/container/garray"
)

func main() {
//創建并發安全的int型數組
a := garray.NewIntArray(true)
//添加數組項
for i := 0; i < 10; i++ {
a.Append(i)
}
// 打印結果:
fmt.Println(a) //"[0,1,2,3,4,5,6,7,8,9]"

fmt.Println("數組長度:", a.Len())
fmt.Println("數組的值:", a.Slice())
fmt.Println((a.Get(5))) //根據索引取值 返回值和是否取到了值 5 true

// 在指定索引前后插入值
_ = a.InsertAfter(9, 10)
_ = a.InsertBefore(0, -1)
fmt.Println(a.Slice())

// 搜索數據項,返回對應的索引
fmt.Println("搜索值,返回對應索引:", a.Search(5))

// 刪除
a.Remove(0)
fmt.Println(a.Slice())

// 并發安全 寫鎖操作
a.LockFunc(func(array []int) {
//將最后一項的值改為100
array[len(array)-1] = 100
})
fmt.Println(a) //"[0,1,2,3,4,5,6,7,8,9,100]"

// 并發安全 讀鎖操作
a.RLockFunc(func(array []int) {
fmt.Println(array[len(array)-1]) //100
})

// 清空數組
a.Clear()
fmt.Println("清空數組之后:", a.Slice())
}

打印結果

圖片

數組出棧

  1. 數組出棧使用Pop*關鍵字
  2. 數組可以按順序出棧,而gf提供的另外一個數據類型gmap的pop*方法是隨機出棧 (關注我,會在后續的文章中更新說明)
  3. garray中隨機出棧,我們可以使用rand()或者popRand()
package main

import (
"fmt"
"github.com/gogf/gf/container/garray"
"github.com/gogf/gf/frame/g"
)

//數組出棧 pop 數組可以按順序出棧 map的pop是隨機出棧
func main() {
a := garray.NewFrom([]interface{}{1, 2, 3, 4, 5, 6})
fmt.Println(a.PopLeft())
fmt.Println(a.PopLefts(2))
fmt.Println(a.PopRight())
fmt.Println(a.PopRights(2))
fmt.Println(a) //全部出棧后 數組為空
/**
打印結果:
1 true
[2 3]
6 true
[4 5]
[]
*/

// 有什么辦法能像map一樣隨機出棧呢? 在garray中我們使用rand()或者popRand()
a1 := garray.NewFrom(g.Slice{1, 2, 3, 4, 5, 6, 7})
fmt.Println("----------")
fmt.Println(a1.Rand()) //隨機取值
fmt.Println(a1.PopRands(2)) //隨機出棧
fmt.Println(a1)

}

包含判斷

  1. 注意:Contains()是區分大小寫
  2. 空值過濾使用:FilterEmpty
  3. nil過濾使用:FilterNil
package main

import (
"github.com/gogf/gf/container/garray"
"github.com/gogf/gf/frame/g"
)

//包含 contains 區分大小寫
func main() {
var a garray.Array
a.Append("a")
g.Dump(a.Contains("a")) //true
g.Dump(a.Contains("A")) //false

// 空值過濾
a1 := garray.NewFrom([]interface{}{0, 1, "2", nil, false, g.Slice{}, "王中陽"})
a2 := garray.NewFrom([]interface{}{0, 1, "2", nil, false, g.Slice{}, "王中陽"})
g.Dump("empty過濾:", a1.FilterEmpty()) //empty過濾:"[1,2,"王中陽"]"
g.Dump("nil過濾:", a2.FilterNil()) //nil過濾:"[0,1,2,"false","[]","王中陽"]"

a3 := garray.NewFrom([]interface{}{1, 2, 3, 4, 5, 6, 7})

g.Dump("數組翻轉:", a3.Reverse())

g.Dump("數組隨機排序:", a3.Shuffle())
}

打印結果

圖片

排序數組

  1. 我們可以自定義NewSortedArray的排序規則,以實現是升序數組還是降序數組;
  2. 排序數組還有唯一性校驗的功能:garray.SetUnique(true)
  3. gf框架的gutil工具包定義好了常用的排序規則
package main

import (
"github.com/gogf/gf/container/garray"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gutil"
)

//我們可以自定義NewSortedArray的排序規則,以實現是升序數組還是降序數組;排序數組還有唯一性校驗的功能
func main() {
//自定義排序數組:降序排列
a := garray.NewSortedArray(func(a, b interface{}) int {
if a.(int) < b.(int) {
return 1
}
if a.(int) > b.(int) {
return -1
}
return 0
})
// 排序規格可以使用gutil中定義好的
a.Add(2) //數組的賦值用add map的賦值用set
a.Add(1)
a.Add(3)
g.Dump("a:", a) //打印結果:"[3,2,1]"

//升序數組
a2 := garray.NewSortedArray(gutil.ComparatorInt)
a2.Add(2)
a2.Add(1)
a2.Add(3)
g.Dump("a2:", a2)
// 添加重復元素
a2.Add(2)
g.Dump("a2添加重復元素后:", a2)
a2.SetUnique(true) //設置不允許重復元素
g.Dump("a2設置不允許重復元素之后:", a2)
}

打印結果

圖片

join、chunk、merge

  1. 數據項串聯是相當常用的場景,比如多個id以逗號分隔入庫存儲,我們使用join關鍵字即可
  2. garray支持將一個數組拆分成指定數量的二維數組,使用chunk關鍵字
  3. garray支持使用merge關鍵字合并數組
package main

import (
"fmt"
"github.com/gogf/gf/container/garray"
"github.com/gogf/gf/frame/g"
)

func main() {
//join 串聯 常用于逗號分割
a := garray.NewFrom(g.Slice{1, 2, 3, 4, 5})
fmt.Println("串聯結果:", a.Join("_")) //1_2_3_4_5

//數組拆分 chunk
fmt.Println("數組拆分:", a.Chunk(2)) //[[1 2] [3 4] [5]]

// 數組合并 可以合并數組 也可以合并slice(原生切片和g.Slice都支持)
a1 := garray.NewFrom(g.Slice{1, 2})
a2 := garray.NewFrom(g.Slice{3, 4})
s1 := g.Slice{5, 6}
s2 := []string{"7", "8"}
s3 := []int{9, 0}
a1.Merge(a2)
a1.Merge(s1)
a1.Merge(s2)
a1.Merge(s3)
fmt.Println("合并結果:", a1) // [1,2,3,4,5,6,7,8,9,0]
}

打印結果:

圖片

遍歷

  1. garray天然支持升序遍歷和降序遍歷
  2. 函數Iterator()是IteratorAsc()的別名
package main

import (
"fmt"
"github.com/gogf/gf/container/garray"
"github.com/gogf/gf/frame/g"
)

//數組遍歷 iterate
func main() {
a := garray.NewFrom(g.Slice{"a", "b", "c"})
fmt.Println("升序遍歷結果")
a.Iterator(func(k int, v interface{}) bool {
fmt.Printf("%v,%v \n", k, v)
return true
})

// 數組倒序遍歷
fmt.Println("倒序遍歷結果:")
a.IteratorDesc(func(k int, v interface{}) bool {
fmt.Printf("%v,%v \n", k, v)
return true
})
}

打印結果

圖片

遍歷修改 walk函數

非常好用!!!

看到這個方法,更堅信了我一個觀點:GF的作者一定寫了幾年PHP。

package main

import (
"github.com/gogf/gf/container/garray"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gconv"
)

//walk遍歷修改 修改數組的值
func main() {
var a garray.Array
tables := g.Slice{"user", "user_detail"}
a.Append(tables...)
prefix := "gf_"
a.Walk(func(value interface{}) interface{} {
return prefix + gconv.String(value)
})
g.Dump(a)
}

打印結果

圖片

序列化和反序列化

  1. 這里重點提一下:gf container容器包下的對象都實現對原生json包的支持,都支持序列化和反序列化。
  2. gf非常重視對序列化的支持,Go學習專欄[2] 文章中介紹了gmap、glist、gqueue、gset、gtree...等gf組件,都是支持序列化和反序列化的。
package main

import (
"encoding/json"
"fmt"
"github.com/gogf/gf/container/garray"
"github.com/gogf/gf/frame/g"
)

//gf container容器包下的對象都實現對原生json包的支持,即都支持序列化和反序列化
func main() {
//序列化
type student struct {
Name string
Age int
Scores *garray.IntArray
}
s := student{
Name: "王中陽",
Age: 28,
Scores: garray.NewIntArrayFrom([]int{100, 98}),
}

bytes, _ := json.Marshal(s)
g.Dump(bytes) //{"Name":"王中陽","Age":28,"Scores":[100,98]}

//反序列化
data := []byte(`{"Name":"王中陽","Age":28,"Scores":[100,98]}`)
s2 := student{}
_ = json.Unmarshal(data, &s2)
fmt.Println(s2) //{王中陽 28 [100,98]}
}

打印結果

圖片

總結

綜上我們了解到:

  1. garray支持設置并發安全開關
  2. 支持排序數組
  3. 支持數組出棧、包含判斷、join、chunk、merge等常用的工具方法
  4. 天然支持升序遍歷、遍歷修改
  5. 天然支持序列化和反序列化

大家是不是明顯感覺到GoFrame的garray比PHP的array還要好用。

更加堅信GoFrame的作者是寫過PHP的??.

參考資料

[1]Go語言學習專欄: https://juejin.cn/column/7064777730532835336

[2]Go學習專欄: https://juejin.cn/column/7064777730532835336

[3]Go語言學習路線圖: http://github.com/wangzhongyang007/Go

本文轉載自微信公眾號「 程序員升級打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關注。

轉載本文請聯系「 程序員升級打怪之旅」公眾號。

責任編輯:武曉燕 來源: 程序員升職加薪之旅
相關推薦

2022-10-26 10:15:53

GoFramePHP數組

2014-01-17 14:39:18

12306 搶票

2022-07-07 08:59:37

requestsPython爬蟲框架

2021-07-31 07:11:01

WPSExcel軟件

2022-12-28 12:11:57

PHPGo框架

2021-01-07 05:12:27

Persepolis應用下載神器

2021-06-15 05:15:30

DeepL翻譯神器應用

2020-06-18 15:53:06

Python代碼摳圖

2019-08-15 16:48:30

2020-02-27 09:51:39

電腦軟件Windows

2024-08-13 17:29:24

2021-05-19 05:39:03

數據恢復軟件電腦

2020-10-07 22:26:02

微信工具電腦

2022-11-16 07:52:11

ORM鏈式GoFrame字段

2025-07-04 01:25:00

DebianMacWindows

2022-04-25 10:04:56

df命令Linux

2022-04-20 12:17:50

命令Batcat

2016-06-14 09:48:19

框架

2022-03-09 10:00:00

數字藏品區塊鏈

2020-08-14 09:11:29

RedisQPS數據庫
點贊
收藏

51CTO技術棧公眾號

精品久久久久久久久久中文字幕| 国产91av在线| 成人黄色在线免费| 久草福利在线观看| 精品人妻一区二区三区浪潮在线| 日韩一区电影| 欧美一区日本一区韩国一区| 成人h猎奇视频网站| 三级黄色免费观看| 亚洲七七久久综合桃花剧情介绍| 国产在线麻豆精品观看| 日韩一级免费观看| 日本一区免费看| www,av在线| av在线免费一区| 精品福利电影| 欧美在线三级电影| 日本一区二区三区四区在线观看| 国产网友自拍视频| 亚洲精品3区| 欧美日韩精品系列| 精品日韩电影| 强制高潮抽搐sm调教高h| 亚洲精品伦理| 成人在线视频首页| 日本一区二区在线播放| 性生活在线视频| 国产精品一区二区婷婷| 久久9热精品视频| 亚洲精品视频免费| 中文字幕欧美人与畜| 中文字幕第四页| 日韩色淫视频| 国产激情一区二区三区四区| 亚洲人成网在线播放| 亚洲精品综合在线观看| 亚洲av毛片成人精品| 欧美激情性爽国产精品17p| 色综合色狠狠综合色| 亚洲一区尤物| 黄色污污视频软件| 国产精品欧美一区二区三区不卡| 91女厕偷拍女厕偷拍高清| 欧美激情中文字幕乱码免费| 亚洲精品国产成人av在线| 日韩不卡在线| 亚洲超丰满肉感bbw| 成人免费网视频| 国产嫩bbwbbw高潮| 国产一区视频在线观看免费| 欧美一二三四在线| 黄色高清无遮挡| 国产精品久久久久一区二区国产| 国产成人99久久亚洲综合精品| 国产成人激情视频| 欧美丰满熟妇bbb久久久| 亚洲天堂导航| 午夜精品福利久久久| av中文字幕av| 国产精品伦一区二区三区| 91精品电影| 67194成人在线观看| 国产在线观看福利| 免费看男男www网站入口在线| 国产亚洲成人一区| 亚洲国语精品自产拍在线观看| 日韩av新片网| 欧美女v视频| 91麻豆成人久久精品二区三区| 91一区二区三区| 日本丰满少妇做爰爽爽| 免费亚洲网站| 国产一区二区日韩精品欧美精品| 91视频在线免费| 风间由美性色一区二区三区四区| 欧美一区二区视频网站| 色91精品久久久久久久久| 成人在线高清| 欧美视频一区二区三区在线观看| 致1999电视剧免费观看策驰影院| 国产免费av在线| 久久看人人爽人人| 国产999精品| 国产综合精品视频| 亚洲欧美日韩一区在线观看| 668精品在线视频| 麻豆av免费观看| 六九午夜精品视频| 欧美日韩亚洲综合一区二区三区 | а天堂中文最新一区二区三区| 91成人国产精品| 国产精品69页| 电影亚洲一区| 欧美一区二区三区视频免费播放| 亚洲欧美日韩一二三区| 亚洲一二三区视频| 亚洲国产一区在线观看| 成年人网站免费视频| 久久国产精品黑丝| 欧美视频精品一区| 深夜黄色小视频| 精品国产一区二| 精品久久久久久| 黄色片一级视频| 日韩制服一区| 日韩欧美国产高清| 男男做爰猛烈叫床爽爽小说| 久久国产三级| 精品日韩欧美一区二区| 精品中文字幕在线播放 | 欧洲亚洲精品在线| 在线观看日本www| 国产精品videossex| 精品一区二区三区四区| 国产精品视频在| 国产精品极品国产中出| 欧美本精品男人aⅴ天堂| 最近日本中文字幕| 久久中文字幕二区| 韩剧1988免费观看全集| 手机av在线看| 亚洲黄色免费| 欧美综合激情网| 中国毛片直接看| 国产精品日韩欧美一区| 国产区精品视频| 香蕉人妻av久久久久天天| 久久久不卡网国产精品二区| 成人高清视频观看www| 免费观看a视频| 国产精品久久久久久久岛一牛影视| 欧美日韩视频免费| 热色播在线视频| 日韩一区二区精品在线观看| 91精彩刺激对白露脸偷拍| 伊人久久大香线蕉综合四虎小说| 日日摸夜夜添一区| 国产精品成人av久久| 久久国产麻豆精品| 国产精品劲爆视频| 人妻无码中文字幕| 自拍偷拍亚洲综合| 五月婷婷狠狠操| 深夜成人在线| 欧美mv日韩mv| 欧美在线视频第一页| 日韩av不卡一区二区| 狠狠色噜噜狠狠狠狠色吗综合| 成人在线播放| 欧美日韩的一区二区| 色无极影院亚洲| 在线看片一区| 99九九视频| 大片免费在线看视频| 欧洲av一区二区嗯嗯嗯啊| 亚洲自拍偷拍精品| 欧美午夜一区| 亚洲一区二区三区四区在线播放| 137大胆人体在线观看| 欧美极品美女视频| 国产男女无遮挡| 牛牛视频精品一区二区不卡| 欧美国产中文字幕| 精品久久久中文字幕人妻| 综合久久一区二区三区| 我要看一级黄色大片| 精品国产午夜| 国产极品jizzhd欧美| 久草在线青青草| 91久久一区二区| 中文字幕在线1| 久热精品在线| 欧美一区二区三区精美影视 | 菠萝蜜影院一区二区免费| 日韩欧美国产另类| 亚洲国产岛国毛片在线| 成人观看免费完整观看| 香蕉视频一区| 国产精品96久久久久久又黄又硬 | 欧美二三四区| 正在播放欧美一区| 99成人在线观看| 精品一区二区久久| 免费观看黄色的网站| 丰满大乳少妇在线观看网站| 欧美成人三级电影在线| 国产在线精品观看| 老司机精品视频网站| 欧美福利精品| 成人a在线观看高清电影| 日韩在线观看免费| 91theporn国产在线观看| 国产乱码精品一区二区三区忘忧草 | 日本在线视频免费| 91丨九色丨国产丨porny| 欧美日韩中文在线视频| 欧美日韩精品一区二区视频| 成人高h视频在线| 黄色大片在线| 亚洲图中文字幕| 国产精品呻吟久久| 亚洲精品水蜜桃| 国产老熟女伦老熟妇露脸| 久久久人人人| 亚洲最新免费视频| 影音先锋欧美激情| 日韩免费高清在线观看| 老司机在线看片网av| 精品日韩一区二区| 久久精品国产亚洲av麻豆蜜芽| 国产精品无人区| 国产成人av片| 日本91福利区| 婷婷五月综合缴情在线视频| 你懂的一区二区三区| 91久久精品美女| 蝌蚪视频在线播放| 色综合天天综合在线视频| а天堂中文在线资源| av中文一区二区三区| 天天干天天干天天干天天干天天干| 综合在线一区| 欧美日韩高清在线一区| 人人九九精品视频| 国产国语刺激对白av不卡| 2024最新电影在线免费观看| 欧美中文字幕久久| 成年人av电影| 日本一区二区三区在线观看| 色综合久久久无码中文字幕波多| 老司机精品福利视频| 国产 国语对白 露脸| 精品久久久久久久久久久下田| av色综合网| 日韩一级特黄| 国产精品电影观看| 欧美videossex另类| 中文字幕日韩欧美| 无码国产精品96久久久久| 91精品国产aⅴ一区二区| 在线观看日本网站| 亚洲成a人片在线不卡一二三区| 中文字幕第69页| 国产午夜亚洲精品不卡| 国产真实乱人偷精品| 国产美女一区二区| 亚洲国产日韩欧美在线观看| 欧美一级专区| 男人天堂网视频| 99精品视频免费| 性高湖久久久久久久久aaaaa| 日韩精品三级| 国产在线一区二区三区| 国产在线|日韩| 日本高清久久天堂| 手机在线观看av| 韩国19禁主播vip福利视频| 亚洲奶汁xxxx哺乳期| 欧美精品三级日韩久久| 成人黄色片在线观看| 91九色最新地址| 久久久蜜桃一区二区| 国产精品理论在线观看| aaaaa级少妇高潮大片免费看| 99久久精品一区二区| 色婷婷精品久久二区二区密| 成人av网站在线观看免费| 又色又爽又黄18网站| 国产91精品精华液一区二区三区| wwwwwxxxx日本| 激情深爱一区二区| 麻豆精品国产传媒| 国产不卡高清在线观看视频| 午夜性福利视频| av资源网一区| 中国毛片在线观看| 日本一区二区动态图| 少妇太紧太爽又黄又硬又爽小说| 成人午夜激情片| 日韩aaaaa| 国产精品大尺度| 日本三级中文字幕| 欧洲另类一二三四区| www.成人免费视频| 亚洲精品永久免费| 国产视频一区二区| 午夜精品一区二区三区在线视 | 在线精品视频播放| 国产丝袜欧美中文另类| 翔田千里88av中文字幕| 精品福利在线看| 国产精品一区二区av白丝下载 | 毛片免费不卡| 91黑丝在线观看| av日韩久久| 麻豆91av| 欧美精品97| 超碰在线97免费| 懂色av一区二区三区免费看| 小早川怜子久久精品中文字幕| 亚洲美女精品一区| 日韩电影在线观看一区二区| 日韩欧美一区二区视频| 国产一级二级三级在线观看| 欧美肥臀大乳一区二区免费视频| 欧美性片在线观看| 国产美女99p| 亚洲综合婷婷| 手机看片福利盒子久久| 成人精品视频.| 91成人福利视频| 欧美日韩视频专区在线播放| 亚洲人午夜射精精品日韩| 欧美精品做受xxx性少妇| 欧美91在线|欧美| 欧美极品一区| 99热这里只有成人精品国产| 6080国产精品| 国产精品美日韩| 国产黄网在线观看| 亚洲精品久久久一区二区三区| а√天堂官网中文在线| 国产精品永久免费视频| 亚洲国产精品嫩草影院久久av| 日韩精品一区在线视频| 国产精品一区久久久久| 韩国一级黄色录像| 欧洲精品视频在线观看| 噜噜噜在线观看播放视频| 欧美亚洲在线视频| 欧美黑人巨大videos精品| 国产亚洲黄色片| 丁香啪啪综合成人亚洲小说 | 在线一区电影| 亚洲 激情 在线| 欧美国产乱子伦| 久久精品偷拍视频| 一区二区三区国产在线观看| 中文字幕人成乱码在线观看| 久久久久九九九| 亚洲欧美日韩专区| 亚洲黄色免费在线观看| 精品国产福利视频| 午夜福利理论片在线观看| 午夜精品福利在线观看| 国产伦理久久久久久妇女 | 日韩成人免费看| 舐め犯し波多野结衣在线观看| 色先锋aa成人| 国产永久免费高清在线观看视频| 日本精品久久久| 国产伦精品一区二区三区视频| 日本精品一区二区三区四区 | 日韩免费一区二区三区| 三级影片在线观看欧美日韩一区二区| 久久精品国产亚洲av麻豆| 色欲综合视频天天天| 国产在线你懂得| 国产精品专区第二| 在线国产一区| 日本一区二区在线观看视频| 欧美日韩视频免费播放| 久久久久久青草| 国产日韩欧美在线| 亚洲精品极品少妇16p| 在线观看欧美一区二区| 五月婷婷久久丁香| 国产视频在线看| 成人精品视频99在线观看免费| 欧美在线首页| aaaaa一级片| 精品视频在线免费观看| 99热国产在线| 久久久久久亚洲精品不卡4k岛国| 日韩精品乱码免费| 国产日韩欧美在线观看视频| 精品欧美久久久| 日韩精品影片| 2022中文字幕| 久久综合99re88久久爱| 亚洲在线精品视频| 国模极品一区二区三区| 欧美日韩精品一区二区视频| 伊人成人免费视频| 欧美午夜激情小视频| 嫩草在线视频| 久久精彩视频| 国产在线麻豆精品观看| 色av性av丰满av| 精品自拍视频在线观看| 国产不卡一区| 久久久久久久穴| 欧美婷婷六月丁香综合色| 欧美v亚洲v| 艳色歌舞团一区二区三区| 99久久久无码国产精品| 91精品视频免费在线观看 | 麻豆传媒网站在线观看| 国产亚洲精品aa| 色窝窝无码一区二区三区|