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

亚洲激情国产| 亚洲一区二区三区久久久| jizz一区二区| 国产精品免费视频久久久| fc2ppv在线播放| 岛国精品一区| 欧美性色欧美a在线播放| 手机在线视频你懂的| 人妻一区二区三区四区| 蜜臀久久99精品久久久久宅男 | 国产精品露脸av在线| 少妇人妻丰满做爰xxx| 亚洲bt欧美bt精品777| 91麻豆精品91久久久久同性| 啊啊啊一区二区| 国产精品久久麻豆| 久久美女高清视频| 69堂成人精品视频免费| 无码人妻精品一区二区三区9厂 | 欧美大片在线看免费观看| 久久久精品人妻无码专区| av国产精品| 日本高清无吗v一区| 996这里只有精品| 在线日本视频| 26uuu精品一区二区在线观看| 91精品中文在线| 懂色av蜜臀av粉嫩av分享吧最新章节| 国产一区二区三区自拍| 日韩视频永久免费观看| 性欧美一区二区| 日本亚洲不卡| 精品国产乱码久久久久久老虎 | 国产精品x8x8一区二区| 欧美日韩aaa| 日本爱爱免费视频| 男女羞羞在线观看| 亚洲国产成人av网| 欧美另类videosbestsex日本| eeuss影院在线观看| 91日韩在线专区| 国产视色精品亚洲一区二区| 99久久一区二区| 久久精品国产第一区二区三区| 日av在线播放中文不卡| 国产黄色片免费看| 一区久久精品| 欧美精品久久久久久久免费观看| 国产精品国产精品88| 日韩一区自拍| xx视频.9999.com| 国产黄a三级三级| 日韩国产欧美一区二区| 有码中文亚洲精品| 日日操免费视频| 天天插综合网| 久久精品国产欧美亚洲人人爽| 欧美日韩中文字幕视频| 日韩在线观看| 久久综合伊人77777| 欧美偷拍第一页| 黄色一区二区三区四区| 欧美精品xxx| 国产免费观看av| 亚洲一区二区三区四区五区午夜 | 亚洲最新视频在线| 一区二区三区伦理片| 精品国产乱码久久久久久蜜坠欲下| 亚洲日本成人女熟在线观看| 波多野结衣a v在线| 欧美极品在线观看| 日韩有码片在线观看| 欧美成人三级视频| 亚洲精品日本| 国产精品mp4| 91影院在线播放| 国产精品一二三四五| 国产高清精品一区| 欧美孕妇性xxxⅹ精品hd| 国产三级一区二区三区| 亚洲欧美影院| 韩国成人免费视频| 色悠久久久久综合欧美99| 超碰在线公开97| 国产一区二区高清在线| 亚洲国产欧美一区二区三区同亚洲 | 91成人国产综合久久精品| 国产一区二区精品久久91| 国产成人免费电影| 国产三区四区在线观看| 亚洲欧美乱综合| 国产三区在线视频| 国产精品日韩精品在线播放| 亚洲精品电影网| 国产高清视频免费在线观看| a91a精品视频在线观看| 国产精品成人久久久久| 性生活黄色大片| 久久精品一级爱片| 欧美一区二区视频在线播放| 四虎影视4hu4虎成人| 日韩欧美一级片| 一区二区三区伦理片| 好吊一区二区三区| 国产精品激情自拍| 人人妻人人澡人人爽人人欧美一区 | 182tv在线播放| 日本韩国欧美国产| 中文字幕人妻一区| 我不卡影院28| 国产成人精品在线视频| 精品久久在线观看| 国产精品私房写真福利视频| 欧美人成在线观看| 国产精品久久久久久久久久久久久久久 | 亚洲日本视频| 91精品视频免费观看| 免费人成在线观看网站| 亚洲一区二区在线观看视频 | aiss精品大尺度系列| 在线成人一区二区| 波多野结衣国产| 国产99久久久国产精品免费看| 小说区图片区图片区另类灬| 国产高清中文字幕在线| 日韩欧美亚洲国产精品字幕久久久| 久久精品无码一区| 亚洲午夜黄色| 91久久久一线二线三线品牌| 求av网址在线观看| 91福利国产成人精品照片| 久久人妻少妇嫩草av无码专区| 亚洲国产不卡| 成人欧美在线观看| 在线看免费av| 欧美日韩国产免费| 一级黄色毛毛片| 蜜桃视频一区二区| 日韩区国产区| 久久xxx视频| 亚洲最新在线视频| 日本成人一级片| 国产欧美一区二区精品性 | 国产精品自拍网站| 亚洲AV无码成人精品一区| av成人免费| 中文字幕精品视频| 中国精品一区二区| 日本一二三不卡| 少妇一级淫免费放| 日韩激情图片| 成人做爽爽免费视频| 欧美a在线看| 91精品午夜视频| 欧美黑人猛猛猛| 风间由美一区二区三区在线观看| 欧美xxxx吸乳| 99久久香蕉| 69久久夜色精品国产7777| 四虎影视在线观看2413| 色综合中文综合网| 亚洲一二三四视频| 国产一区啦啦啦在线观看| 强开小嫩苞一区二区三区网站| 国产午夜精品一区在线观看| 欧美精品在线观看91| 亚洲精品成人电影| 狠狠色狠色综合曰曰| 成都免费高清电影| 久久99国产乱子伦精品免费| 中国一级大黄大黄大色毛片| 哺乳一区二区三区中文视频 | 四虎地址8848精品| 久久中文字幕一区| 开心激情综合网| 日本道免费精品一区二区三区| 东京热无码av男人的天堂| 国产在线乱码一区二区三区| www.欧美黄色| 国产毛片一区二区三区 | 琪琪久久久久日韩精品| 国产不卡在线观看| 成人av免费| 日韩成人高清在线| 夜夜躁狠狠躁日日躁av| 亚洲线精品一区二区三区| aa一级黄色片| 国产一区视频导航| 久久国产乱子伦免费精品| 99热国内精品| 蜜桃精品久久久久久久免费影院| 99久久精品一区二区成人| 色综合久久久久久中文网| 你懂得网站在线| 日韩欧美中文字幕精品| 国语对白永久免费| 亚洲欧美乱综合| 91成年人网站| 粉嫩在线一区二区三区视频| 国产真人无码作爱视频免费| 国产一区二区三区自拍| 亚洲欧美国产不卡| 久久大胆人体视频| 成人综合国产精品| 日韩毛片免费观看| 欧美人与性动交a欧美精品| 黄色av免费在线观看| 日韩精品一区二区在线| 国产成人无码专区| 亚洲va韩国va欧美va| 99热这里只有精品4| 91欧美一区二区| 在线播放第一页| 裸体在线国模精品偷拍| 免费日韩中文字幕| 亚洲午夜电影| 97在线免费视频观看| 日韩成人精品一区| 欧洲亚洲一区二区三区四区五区| 伊人久久噜噜噜躁狠狠躁| 国产精品自产拍高潮在线观看| 欧亚在线中文字幕免费| 欧美老女人性视频| 国产激情视频在线| 日韩一区二区av| av在线收看| 亚洲片在线资源| 色在线免费视频| 亚洲精品一区二区三区精华液| 国产精品呻吟久久| 欧美少妇bbb| 中文字幕人妻丝袜乱一区三区| 黑人欧美xxxx| 日韩色图在线观看| 欧美日韩精品在线观看| 国产精品30p| 亚洲午夜精品17c| 青娱乐国产精品| 一区二区三区在线免费观看| 九九这里只有精品视频| 一区精品在线播放| 五月婷婷婷婷婷| 中文字幕一区二区三区在线不卡| 日本成人免费视频| 久久久久久电影| 四虎永久免费在线观看| 久久久三级国产网站| 波多野吉衣中文字幕| 久久久久久一级片| 欧洲av一区二区三区| 国产亚洲欧美日韩俺去了| www.日本高清视频| 国产精品久久久久久福利一牛影视 | 色综合久久精品亚洲国产| 永久免费网站在线| 欧美精品videosex极品1| 国产白浆在线免费观看| 2025国产精品视频| 香蕉视频亚洲一级| 国产精品久久久久aaaa九色| 男人亚洲天堂| 亚洲综合中文字幕在线| 国产厕拍一区| 牛人盗摄一区二区三区视频| 欧美日韩在线二区| 国产一二三四五| 日韩视频一区| 中文字幕永久视频| 国产一区欧美日韩| 日本一区二区在线免费观看| 26uuu久久天堂性欧美| 欧美福利第一页| 亚洲乱码国产乱码精品精可以看| 加勒比av在线播放| 午夜天堂影视香蕉久久| caoporn国产| 91麻豆精品国产无毒不卡在线观看| www男人的天堂| 亚洲欧美日韩一区二区在线| 日本高清中文字幕在线| 久久久最新网址| 日韩av福利| 91精品天堂| 精品在线观看入口| 黄色高清视频网站| 亚洲影音先锋| 女人高潮一级片| 99久久伊人精品| 992在线观看| 精品国产精品三级精品av网址| 无码免费一区二区三区| 91精品国产欧美一区二区| 日本精品999| 日韩最新在线视频| 欧美巨大丰满猛性社交| 国产在线观看一区二区三区| 波多野结衣欧美| 自拍偷拍99| 欧美中文日韩| www.成年人| 久久精品视频一区| 国产一级性生活| 欧美日韩国产片| 久久久久久女乱国产| 久久久精品欧美| 欧美无毛视频| 精品乱码一区二区三区| 欧美激情777| 欧美丰满熟妇xxxxx| 高清av一区二区| 国产高潮国产高潮久久久91| 色天天综合久久久久综合片| 亚洲国产精品suv| 日韩在线观看高清| 亚洲www.| 久久久久天天天天| 怡红院精品视频在线观看极品| 亚洲欧美激情网| 99久久久无码国产精品| 欧美丰满艳妇bbwbbw| 欧美日韩国产在线观看| 男人的天堂在线| 久久久久久com| 国产精品视频一区二区三区| 亚洲国产精品一区二区第一页| 美女国产一区| 日本丰满少妇裸体自慰| 亚洲香肠在线观看| 精品人妻一区二区三区含羞草| 日韩中文av在线| 成人1区2区| 日韩久久不卡| 日韩精品乱码av一区二区| 五月婷婷综合在线观看| 精品国产精品三级精品av网址| 蜜桃av中文字幕| 久久久久久中文| 9l亚洲国产成人精品一区二三| 男女爱爱视频网站| 国精产品一区一区三区mba视频| 国产主播av在线| 欧美日韩精品一区二区三区蜜桃| xxxxx日韩| 国产精品自产拍在线观看| 久久麻豆精品| 做a视频在线观看| 中文字幕在线不卡一区二区三区| 曰批又黄又爽免费视频| 色小说视频一区| www.久久草.com| 热久久最新网址| 国产成人精品1024| 久热精品在线观看| 欧美精品一区二区久久久| 黄毛片在线观看| 日韩成人av网站| 久久se精品一区精品二区| 久久一级免费视频| 宅男在线国产精品| 黄网站在线观| 久久偷窥视频| 日韩电影免费一区| 懂色av粉嫩av浪潮av| 欧美一区二区日韩一区二区| 欧美xxxx免费虐| 久久精品国产精品青草色艺| 久久久久看片| 成人高潮免费视频| 精品乱码亚洲一区二区不卡| 成人bbav| 色噜噜色狠狠狠狠狠综合色一| 久久成人麻豆午夜电影| 久久精品免费av| 亚洲欧洲国产伦综合| 玖玖精品在线| 亚洲 欧美 综合 另类 中字| 久久精品在线观看| 一级二级三级视频| 国内精久久久久久久久久人| 深爱激情综合| 亚洲精品久久久久久| 狠狠躁夜夜躁人人躁婷婷91| 91.xxx.高清在线| 成人在线观看网址| 青娱乐精品视频在线| 欧美三级免费看| 亚洲日本aⅴ片在线观看香蕉| 久久在线观看| av动漫在线观看| 亚洲视频在线观看三级| 日中文字幕在线| 亚洲a∨日韩av高清在线观看| 国产精品日本| 美女的奶胸大爽爽大片| 亚洲欧洲一区二区三区久久| 日韩免费成人| 在线观看免费黄网站| 五月婷婷激情综合网| 日本天堂在线观看| 欧美日韩一区在线观看视频|