午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > Lua中的一些常用函數庫實例講解

Lua中的一些常用函數庫實例講解

熱門標簽:武漢百應人工智能電銷機器人 百度地圖標注位置網站 智能語音電銷的機器人 開通400電話申請流程 上海企業外呼系統排名 揚州電銷外呼系統軟件 如何利用高德地圖標注家 400手機電話免費辦理 電腦外呼系統輻射大嗎

前言

這篇文章將會來一些比較輕松的內容,就是簡單的介紹一下Lua中幾個常用的庫。簡單的說就是幾個API的介紹。所以說,看起來比較容易,也沒有多大的分量。就是純粹的總結。使用庫就是為了方便我們的開發,提高開發效率,同時也能保證代碼的質量。希望大家以后也不要重復造輪子了。

數學庫

數學庫(math)由一組標準的數學函數構成。這里主要介紹幾個常用的函數,其它的大家可以自行百度解決。

三角函數(sin,cos,tan……)

所有的三角函數都使用弧度單位,可以用函數deg(角度)和rad(弧度)來轉換角度和弧度。示例代碼:

復制代碼 代碼如下:

print(math.sin(math.rad(30))) -- 0.5

謹記:三角函數的參數都是弧度,在實際使用中不要忘了,是弧度。

取整函數(floor,ceil)

floor:返回不大于x的最大整數;向下取整;
ceil:返回不小于x的最大整數;向上取整。示例代碼:

復制代碼 代碼如下:

print(math.floor(5.6)) -- 5
print(math.ceil(5.6)) -- 6

最大值和最小值(max,min)

max:取參數中的最大值;
min:取參數中的最小值。示例代碼:

復制代碼 代碼如下:

print(math.max(2, 3, 2, 14, 2, 30, -3)) -- 30
print(math.min(2, 3, 2, 14, 2, 30, -3)) -- -3

生成偽隨機數的函數(random,randomseed)

在實際開發中,生成隨機數的需求是經常有的。使用random和randomseed這兩個函數就可以輕易的完成。math.random用于生成偽隨機數,可以用3種方式來調用它:
(1)如果在調用時不提供任何參數,它將返回一個在區間[0, 1)內均勻分布的偽隨機實數;
(2)如果提供了一個整數n作為參數,它將返回一個在區間[1, n]內的偽隨機整數;
(3)如果提供了兩個整數參數m和n,它將返回一個在區間[m, n]內的偽隨機整數。
示例代碼如下:

復制代碼 代碼如下:

print(math.random()) -- 輸出一個大于等于0,小于1的值
print(math.random(2)) -- 輸出不是1就是2
print(math.random(3, 4)) -- 輸出不是3就是4

如果你按照上面的代碼運行,然后再看著我寫的注釋,你可能就要罵我了,什么破注釋了,明顯就是錯的么?每次運行的輸出結果都是一樣的。是的,結果是一樣的,這就要說到即將出場的math.randomseed。函數math.randomseed用于設置偽隨機數生成器的種子數。(看到這里,我姑且認為你是已經有過一年編程經驗的人員了,所以,你就不要問我什么是種子了,這種概念性的東西,我想百度百科或者維基百科比我更有指導意義)math.randomseed的唯一參數就是一個我們稱為種子數的值。一般我們的做法是在一個程序啟動時,用一個固定的種子數來調用它,以此初始化偽隨機數生成器。那么如何設置這個math.randomseed的種子值呢?如果使用同一個種子值的話,每次得到的隨機數就會是一樣的,在實際開發中,一般都是使用當前時間作為種子值,比如:

復制代碼 代碼如下:

math.randomseed(os.time())

這樣就好了。一般在我們的程序啟動時,初始化一次種子就足夠了。我曾經傻傻的在一個循環中,使用math.random取隨機數,每次都調用math.randomseed(os.time())設置種子值(為什么不可以?你可以自己試一試,看看結果。如果不懂,留下你的迷惑,我們繼續交流)。
復制代碼 代碼如下:

math.randomseed(os.time())
print(math.random()) -- 輸出一個大于等于0,小于1的值
print(math.random(2)) -- 輸出不是1就是2
print(math.random(3, 4)) -- 輸出不是3就是4

這樣就好了,運行一下,看看結果吧。

table庫

table庫是由一些輔助函數構成的,這些函數將table作為數組來操作(重點:作為數組來操作的)。

插入和刪除函數

table.insert用于將一個元素插入到一個數組的指定位置,它會移動后續元素以空出空間。如果在調用table.insert時沒有指定位置參數,則會將元素添加到數組末尾。示例代碼:

復制代碼 代碼如下:

local tb = {10, 20, 30}
table.insert(tb, 40) -- 在table的最后插入,結果為:{10, 20, 30, 40}
table.insert(tb, 2, 15) -- 在table的位置2插入,結果為:{10, 15, 20, 30, 40}

函數table.remove會刪除并返回數組指定位置上的元素,并將該位置之后的所有元素前移,以填補空缺。如果在調用這個函數時不指定位置參數,它就會刪除數組的最后一個元素。示例代碼:
復制代碼 代碼如下:

local tb = {10, 20, 30}
print(table.remove(tb)) -- 刪除最后一個元素,并返回30;最后,tb = {10, 20}
print(table.remove(tb, 1)) -- 刪除第一個元素并返回10;最后,tb = {20}

現在有了這兩個操作,實現數據結構中的堆棧那就輕而易舉了。等什么?自己試一試吧。

排序

對數組進行排序,這種需求,在實際開發中那是100%會遇到的。所以了,不會使用Lua對數組進行排序,那是會被別人笑掉大牙的。廢話少說。在Lua中,我們可以用table.sort完成這個任務。它可以對一個數組進行排序,還可以指定一個可選的次序函數。這個次序函數有兩個參數,如果希望第一個參數在排序結果中位于第二個參數值前,就應當返回true;如果沒有提供這個函數,table.sort就使用默認的小于操作。實例代碼:

復制代碼 代碼如下:

local tb = {20, 10, 2, 3, 4, 89, 20, 33, 2, 3}
 
-- 默認是升序排序
table.sort(tb)
for _, v in ipairs(tb) do
    print(v)
end
 
print("=======")
 
-- 修改為降序排序
table.sort(tb, function (a, b) if a > b then return true end end)
for _, v in ipairs(tb) do
    print(v)
end

但是,在實際開發中,我們經常犯這樣的錯誤,總是試圖對一個table的索引進行排序。在table中,索引是一個無序的集合。如果對它們進行排序,則必須將它們復制到一個數組中,然后對這個數組進行排序。這就是我為什么一開始強調的,table庫是對數組進行操作的。示例代碼:
復制代碼 代碼如下:

local tb = {x = 20, z = 10, y = 30, m = 2, n = 8} -- 這是一個key無序的table
-- 如果想按照key的升序排列,下列代碼是不起作用的
table.sort(tb)
for k, v in pairs(tb) do
    print(k .. " = " .. v)
end

正確做法是將這個table的所有key放入到一個數組中,對這個數組進行排序。示例代碼:
復制代碼 代碼如下:

local tb = {x = 20, z = 10, y = 30, m = 2, n = 8} -- 這是一個key無序的table
 
local keyTb = {}
for k, _ in pairs(tb) do
    keyTb[#keyTb + 1] = k
end
 
table.sort(keyTb)
 
for _, v in ipairs(keyTb) do
    print(v .. " = " .. tb[v])
end

現在就是按照key的升序排列了。

連接

使用table.concat可以完成數組的連接。它接受一個字符串數組,并返回這些字符串連接后的結果,它有一個可選參數,用于指定插到字符串之間的分隔符,同時這個函數另外還接受兩個可選參數,用于指定第一個和最后一個要連接的字符串索引。示例代碼:

復制代碼 代碼如下:

local tb = {"Jelly", "Think", "Is", "Good"}
local strTb = table.concat(tb, " ")
print(strTb)

字符串庫

重點來了,學習每種語言,在實際工作時,我們總是在和字符串進行打交道。Lua也不例外,在Lua中真正的字符串操作能力來源于字符串庫,字符串庫中的所有函數都導出在模塊string中。現在就來對string庫進行總結。

基礎字符串函數

直接通過代碼來說吧,示例代碼:

復制代碼 代碼如下:

local str = "Jelly Think"
 
-- string.len可以獲得字符串的長度
local len = string.len(str)
print(len) -- 11
 
-- string.rep返回字符串重復n次的結果
str = "ab"
local newStr = string.rep(str, 2) -- 重復兩次
print(newStr) -- abab
 
-- string.lower將字符串小寫變成大寫形式,并返回一個改變以后的副本
str = "Jelly Think"
newStr = string.lower(str)
print(newStr) -- jelly think
 
-- string.upper將字符串大寫變成小寫形式,并返回一個改變以后的副本
newStr = string.upper(str)
print(newStr) -- JELLY THINK

這里重點介紹一下string.sub(s, i, j)函數,它可以從字符串s中提取第i個到第j個字符。在Lua中,字符串的第一個字符的索引是1,但是,索引也可以是負數,表示從字符串的尾部開始計數,索引-1代表字符串的最后一個字符,以此類推。
復制代碼 代碼如下:

local str = "[Jelly Think]"
local newStr = string.sub(str, 2, -2)
print(newStr) -- Jelly Think
newStr = string.sub(str, 2, 6)
print(newStr) -- Jelly

(重點:在Lua中,字符串和其它語言的一樣,是不可變的,以上的操作,都會返回一個新的值,但并不會修改原來的字符串。謹記,謹記!!!)
函數string.char和函數string.byte用于轉換字符及其內部數值表示;string.char函數接受零個或多個整數,并將每個整數轉換成對應的字符,然后返回一個由這些字符連接而成的字符串。string.byte(s, i)返回字符串s中第i個字符的內部數值表示,它的第二個參數是可選的,調用string.byte(s)可返回字符串s中第一個字符的內部數值表示。示例代碼:
復制代碼 代碼如下:

print(string.char(97)) -- a
 
local i = 98
print(string.char(i, i + 1, i + 2)) -- bcd
 
print(string.byte("abc")) -- 97
print(string.byte("abc", 2)) -- 98
print(string.byte("abc", 2, 3)) -- 98 99
print(string.byte("abc", -1)) -- 99

在Lua中也有一個神奇的函數,string.format。和C語言中的printf是一致的。之所以說它神奇,因為它用的太多了,也太好用了。以至于我這里就不多廢話了,我相信你們都會的。

模式匹配

由于模式匹配的東西比較多,所以,準備單獨寫篇博文單獨總結。

I/O庫

I/O庫為文件操作提供了兩種不同的模型,簡單模型和完整模型。簡單模型假設有一個當前輸入文件和一個當前輸出文件,它的I/O操作均作用于這些文件。完整模型則使用顯式地文件句柄。它采用了面向對象的風格,并將所有的操作定義為文件句柄上的方法。

簡單I/O模型

簡單模型的所有操作都作用于兩個當前文件。I/O庫將當前輸入文件初始化為進程標準輸入(stdin),將當前輸出文件初始化為進程標準輸出。在執行io.read()操作時,就會從標準輸入中讀取一行。

用函數io.input和io.output可以改變這兩個當前文件。io.input(filename)調用會以只讀模式打開指定的文件,并將其設定為當前輸入文件;除非再次調用io.input,否則所有的輸入都將來源于這個文件;在輸出方面,io.output也可以完成類似的工作。說完了input和output,在來聊聊io.write和io.read。

io.write接受任意數量的字符串參數,并將它們寫入當前輸出文件;它也可以接受數字參數,數字參數會根據常規的轉換規則轉換為字符串。如果希望有更多的控制,可以使用string.format進行控制。函數io.read從當前輸入文件中讀取字符串,它的參數決定了要讀取的數據:

“*all” 讀取整個文件
“*line” 讀取下一行
“*number” 讀取一個數字
num> 讀取一個不超過num>個字符的字符串

直接看一段示例代碼吧:

復制代碼 代碼如下:

-- 先建立input.txt和output.txt兩個文件
-- 在input.txt文件中寫入以下內容:
--[[
https://www.jb51.net
果凍想 | 一個原創文章分享網站
88
--]]
io.input("input.txt") -- 從input.txt文件中讀取
io.output("output.txt") -- 寫入到output.txt文件
 
-- 向input.txt寫入一些測試數據
io.write("JellyThink", "\n")
io.write("果凍想", "\n")
io.write("https://www.jb51.net", "\n")
io.write(88)

讀取一整個文件的示例代碼:

復制代碼 代碼如下:

str = io.read("*all") -- 讀取所有
--[[
print(str)
https://www.jb51.net
果凍想 | 一個原創文章分享網站
88
--]]
print(str)

每次讀取一行的示例代碼:

復制代碼 代碼如下:

-- 用來判斷是否已經讀到了文件末尾
-- 如果已經到了末尾,就返回nil;否則返回空字符串
local mark = io.read(0)
while mark do
    print(io.read("*line"))
    mark = io.read(0)
    if not mark then
        print("File end.")
        break
    end
end

完整I/O模型

簡單I/O功能太受限了,以至于基本沒有什么用處,而用的更多的則是這里說的完整I/O模型。完整I/O模型可以進行更多的I/O控制,它是基于文件句柄的,就好比與C語言中的FILE*,表示一個正在操作的文件。

要打開一個文件,可以使用io.open函數,它有兩個參數,一個表示要打開的文件名,另一個表示操作的模式字符串。模式字符串可以有以下四種取值方式:

(1)”r”:以讀取方式打開文件;只能對文件進行讀取操作;
(2)”w”:以寫入方式打開文件;可以對文件進行寫入操作,但是會覆蓋文件原有內容;
(3)”a”:以追加方式打開文件;可以對文件進行寫入操作;會在原來文件的基礎在,進行追加寫入;
(4)”b”:表示打開二進制文件,這種模式一般都是和前面三種混合使用,比如:”rb”,”wb”。

open函數會返回表示文件的一個句柄;如果發生錯誤,就返回nil,一條錯誤消息和一個錯誤代碼。示例代碼:

復制代碼 代碼如下:

-- 訪問一個不存在的文件
print(io.open("ooxx.txt", r))
--[[
輸出以下內容:
nil    ooxx.txt: No such file or directory    2
--]]

當成功打開一個文件以后,就可以使用read/write方法讀寫文件了,這與read/write函數相似,但是需要用冒號語法,將它們作為文件句柄的方法來調用,示例代碼:

復制代碼 代碼如下:

local hFile = io.open("input.txt", r)
if hFile then
    local strContent = hFile:read("*all")
    --local strContent = hFile.read(hFile, "*all") 你也可以使用這種方法
    print(strContent)
end

我們也可以將完整I/O模式與簡單I/O模式混合使用。通過不指定參數調用io.input(),可以得到當前輸入文件的句柄;而通過io.input(handle),可以設置當前輸入文件的句柄,比如,需要臨時改變當前輸入文件,可以這樣做:
復制代碼 代碼如下:

-- io.input()不傳入參數時,獲取當前的輸入文件句柄
local hCurrent = io.input()
 
-- 打開一個新的文件
io.input("input.txt")
 
-- 在新的文件上進行操作
local strContent = io.read("*all")
print(strContent)
 
-- 關閉當前文件
io.input():close()
 
-- 操作完成以后,恢復到以前的狀態
io.input(hCurrent)

其它文件操作

函數tmpfile返回一個臨時文件的句柄,這個句柄是以讀/寫方式打開;這個文件會在程序結束時自動刪除。我們在使用時,可以直接io.tmpfile()就ok了。
函數flush會將緩沖區中數據寫入文件,它與write函數一樣,將其作為一個函數調用時,io.flush()會刷新當前輸出文件;而將其作為一個方法調用時,f:flush()會刷新某個特定的文件f。

函數seek可以獲取和設置一個文件的當前位置。它的一般形式是f:seek(whence, offset),其參數的具體含義如下:

(1)whence取值set,offset表示為相對于文件起始的偏移量;
(2)whence取值cur,offset表示為相對于當前位置的偏移量;
(3)whence取值end,offset表示為相對于文件末尾的偏移量。

函數的返回值與whence無關,它總是返回文件的當前位置,即相對于文件起始處的偏移字節數。根據上述的描述,來一小段示例代碼:

復制代碼 代碼如下:

function GetFileSize(hFile)
    local currentPos = hFile:seek() -- 獲取當前位置
    local size = file:seek("end") -- 獲取文件大小
    file:seek("set", currentPos)
    return size
end

操作系統函數

操作系統庫定義在table os中,其中包含了文件操作函數、獲取當前日期和時間的函數。為了保證Lua的可移植性,所以對于文件庫來說,就比較簡單,它只包含兩個函數:

用于文件改名的os.rename函數;
用于刪除文件的os.remove函數。

但是對于獲取日期和時間的函數,還是有必要花費一點時間總結一下的。

日期與時間

在Lua庫中提供了兩個非常重要的日期和時間函數,分別是time和date。那就先從time函數開始。

time

如果不帶任何參數調用time函數,它會以數字形式返回當前的日期和時間。返回的數值表示當前時間到某個特定時間的秒數,在不同的系統上,這個特定的時間是不一樣的。如果用一個table作為參數調用它,它會返回一個數字,表示該table中所描述的日期和時間。這種table具有以下有效字段:

year 一個完整的年份
month 01-12
day 01-31
hour 00-23
min 00-59
sec 00-59
isdst 一個布爾值,true表示夏令時

前三個字段是必須要有的,比如:

復制代碼 代碼如下:

print(os.time()) -- 輸出當前時間的描述
print(os.time({year=2014,month=8,day=14}))

date

函數date是time的一個反函數,它可以將一個表示日期和時間的數字轉換成某些高級的表現形式。其第一個參數是格式字符串,指定了期望的表示形式;第二個參數是日期和時間的數字,默認為當前日期和時間。例如:

復制代碼 代碼如下:

local tbCurrentTime = os.date("*t")
 
for k, v in pairs(tbCurrentTime) do
    print(k .. "=" .. tostring(v))
end

這樣就會輸出當天的時間,你運行以下代碼看看。其實data函數沒有多少需要說的。只是data函數的第一個參數的格式種類是非常多的,可以去百度一下。我一般用一個*t就夠了。但是了解一下其它的也還不錯。

對于這里說到的time和date兩個函數,一般time函數返回的描述不適合人去讀,我們一般都是保存這個數字,在后臺進行處理;對于date函數,它返回的內容適合人去讀,所以,一般使用date返回的數據在UI上顯示。

總結

對于任何語言來說,一個標準庫都是一個非常龐大的東西,Lua也是這樣,所以這篇文章寫的也比較長。抱歉,這只是第一部分,后面還有第二部分。所以呢,大家還是將就著看吧。雖然深的東西沒有多少,但是這也是我們入門一門語言的必經之路。少年們,努力吧。

您可能感興趣的文章:
  • Lua中os庫詳細介紹
  • Lua中的常用函數庫匯總
  • Lua中的數學庫總結
  • 簡介Lua腳本與Redis數據庫的結合使用
  • Lua教程(十六):系統庫(os庫)
  • Nginx+lua 實現調用.so文件

標簽:黑龍江 宜賓 張掖 延邊 武漢 江西 新余 嘉峪關

巨人網絡通訊聲明:本文標題《Lua中的一些常用函數庫實例講解》,本文關鍵詞  Lua,中的,一些,常用,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中的一些常用函數庫實例講解》相關的同類信息!
  • 本頁收集關于Lua中的一些常用函數庫實例講解的相關信息資訊供網民參考!
  • 推薦文章
    国产亚洲精品久久777777| 亚洲精品一级片| 中文字幕第一页在线播放| 国产精品男女视频| 天天干天天操天天操| 中文精品久久久久人妻不卡| 免费在线观看黄网站| 成人免费视频毛片| 日韩欧美国产另类| 在线观看国产成人| 欧美另类视频在线观看| 中文字幕在线欧美| 欧美一区二区公司| 精品亚洲欧美一区| 极品少妇xxxx偷拍精品少妇| 99视频国产精品| 91一区二区三区在线播放| 一区二区三区在线观看欧美 | 青青草原免费观看| 国产在线观看免费视频软件| 偷偷操不一样的久久| 97成人在线观看| 热久久国产精品| 免费看日韩精品| 国产精品1024| 亚洲黄色av一区| 色999日韩国产欧美一区二区| 欧美 另类 交| 国产三级精品在线观看| www毛片com| 亚洲欧美日韩一级| 亚洲欧美日韩在线综合| 欧美在线一二三区| 欧美一级片免费播放| 美女被爆操网站| 国产精品无码一区二区三区免费| 欧美日韩亚洲国产另类| www.蜜臀av| 久久av老司机精品网站导航| 国产综合久久久久久鬼色| 国产精品美女久久久久av爽李琼 | 久久99精品久久久久久久久久久久| 国产欧美一区二区精品性色| 亚洲女女做受ⅹxx高潮| 亚洲一区二区在线观看视频| 色呦呦一区二区三区| 日韩免费一区二区| xvideos亚洲人网站| 欧美专区日韩视频| 成人av在线亚洲| 黄色一级大片免费| 欧美做受喷浆在线观看| www.日韩一区| 国产91高潮流白浆在线麻豆| 国产女人18毛片水真多成人如厕 | 成年人网站在线观看视频| 国产三级中文字幕| xx欧美撒尿嘘撒尿xx| 久久黄色免费视频| 蜜臀久久久久久久| 精品国产福利视频| 久久亚洲电影天堂| av男人天堂av| 成人在线视频一区二区| 狠狠色狠狠色综合日日小说| 日韩视频第一页| 亚洲精品国产一区| 日本成人精品视频| 国产精品亚洲综合一区在线观看| 欧美一区二区三区小说| 亚洲va欧美va在线观看| 青娱乐国产精品视频| 亚洲女同精品视频| 欧美日韩精品免费观看视频| 久久欧美在线电影| 青草青青在线视频| 天天操天天摸天天干| 国产亚洲婷婷免费| 久久国产精品久久久| 日韩xxxx视频| 青青国产在线观看| 亚洲免费av观看| 日本高清+成人网在线观看| 亚洲最大综合网| 国产不卡av在线播放| 亚洲国产cao| 国产精品久久久久久久久| 亚洲一一在线| 成人在线免费观看视视频| 一区二区久久精品| 日本人妻丰满熟妇久久久久久| 色狠狠色狠狠综合| 国产精品污www一区二区三区| 善良的小姨在线| 裸体在线国模精品偷拍| 亚洲精品一区二区在线| 丁香六月激情婷婷| 成人乱码一区二区三区| 欧美成人vps| 国产精品丝袜高跟| 国产精品乱子乱xxxx| 777777国产7777777| 亚洲欧洲成人自拍| 国产在线观看一区二区三区 | 精品国产一区二区三区日日嗨 | 欧美久久在线观看| 中文字幕69页| 免费在线不卡视频| 国产精品美女久久久久久| 亚洲午夜色婷婷在线| 波多野结衣乳巨码无在线| 中文字幕一区二区人妻| 欧美日韩中文字幕在线| a级国产乱理论片在线观看99| 亚洲综合欧美综合| 久久蜜桃香蕉精品一区二区三区| 欧美极品欧美精品欧美视频| 国产精品裸体一区二区三区| 久久精品人成| 特级西西人体高清大胆| 国产日韩高清在线| 欧美在线性视频| 女同毛片一区二区三区| 国产91高潮流白浆在线麻豆| 日韩中文av在线| 777av视频| 人妻精品无码一区二区| 亚洲乱码一区av黑人高潮| 99se婷婷在线视频观看| 欧美 亚洲 视频| 亚洲免费视频二区| 中文字幕中文字幕一区| 2020国产精品视频| 久久久国产欧美| 五月激情丁香婷婷| 欧美一级在线免费| 中文字幕久久综合| 精品人妻一区二区三区含羞草| 精品国产sm最大网站| 日韩一级特黄毛片| 天堂久久久久va久久久久| 中文字幕亚洲精品| 最新版天堂资源在线| 国产亚洲欧美激情| 高清免费日韩| 亚洲在线免费观看视频| 亚洲国产精品网站| 久久精品国产99久久99久久久| 国产成人免费网站| 国产精品电影在线观看| 日韩三级久久久| 欧美亚洲国产bt| 久久无码高潮喷水| 麻豆中文一区二区| 5252色成人免费视频| 我要看黄色一级片| 欧美高清视频在线高清观看mv色露露十八| 亚欧无线一线二线三线区别| 国产成人免费视频网站高清观看视频| 国产成人综合av| 天天干天天干天天| 日韩精品一二三四区| 精品人妻一区二区三区日产| 亚洲va中文字幕| 视频在线99| 久久国产夜色精品鲁鲁99| 国产精品美女免费| 久久国产精品系列| 亚洲精品综合精品自拍| 无码人妻精品一区二区三区温州| 国产精品免费av| 免费人成在线观看视频播放| 99视频有精品| 国产91精品入口17c| 亚洲精品一区二区三区四区| 91国产精品91| 亚洲欧美自拍视频| 欧美精品一区二区免费| 国产精品免费在线视频| 日韩精品久久久久 | 亚洲精品永久免费| 国产午夜精品福利视频| 精品国产一区二区三区久久影院| 色噜噜在线观看| 日韩精品中文字幕在线不卡尤物| 欧美深性狂猛ⅹxxx深喉| 91精品国产综合久久香蕉麻豆| 69亚洲乱人伦| 日韩欧美一级片| 亚洲无人区码一码二码三码| 国产电影一区在线| 国产日韩二区| 蜜臀久久99精品久久久久久9| 亚洲在线免费视频| 美女视频黄免费的久久| 日本高清视频一区二区三区| 91色porny在线视频| a级黄色小视频| 亚洲一区二区不卡免费| 国模大尺度视频| 欧美性生活大片视频| 国产jk精品白丝av在线观看| 日韩成人高清在线| av资源免费观看| 91av视频导航| 日本不卡的三区四区五区| 久久久com| 久久久久久久综合狠狠综合| 欧美成人xxxxx| 91久久精品一区二区二区| www.狠狠爱| 日韩在线免费观看视频| 一级黄色免费看| 国产精品亚洲欧美导航| 国产aⅴ综合色| 日本成年人网址| 欧美日韩一区不卡| 久久精品国产亚洲av高清色欲| 午夜精品久久久久久久99热| 日本免费一区视频| 国产精品久久久久久久久久久久午夜片 | 国产原创中文av| 久久爱av电影| 亚洲欧美日韩成人高清在线一区| 韩国三级hd中文字幕有哪些| 日韩精品中文字幕在线播放| 中文字幕一区二区久久人妻| 国产一区二区三区高清视频| 亚洲视频一二区| 污污免费在线观看| 欧美老女人在线视频| 久久天堂成人| 日本免费不卡一区二区| 精品日韩在线一区| 无码人妻久久一区二区三区| 97视频热人人精品| 国产精品一区二区免费不卡| 久久久免费视频网站| 亚洲精品短视频| 午夜精品久久久久久久爽 | 奇米一区二区三区| 久久久久久久久久网| 亚洲国产精品久久精品怡红院| 国产美女免费视频| 中文字幕一区二区三区5566| 狠狠躁夜夜躁人人躁婷婷91| 极品久久久久久久| 国产精品jizz在线观看麻豆| 国产亚洲成aⅴ人片在线观看| 日本黄色网址大全| 97免费视频在线| 国精品**一区二区三区在线蜜桃| 亚洲熟妇av日韩熟妇在线| 日韩欧美亚洲国产另类| 99精品视频免费看| 91动漫在线看| 精品国产乱码久久久久久久| 黄色片一区二区| 国产精品视频二| 日韩精品中文字幕在线播放| 经典三级在线一区| 亚洲麻豆一区二区三区| 欧美制服第一页| 久久综合一区二区| 九九热免费在线| 国内一区在线| 色综合夜色一区| 无码黑人精品一区二区| 国产在线精品一区二区三区》| 色综合视频一区二区三区高清| 亚洲综合视频在线播放| 欧美老熟妇喷水| 欧美激情精品在线| 亚洲欧洲日本在线| 波多野结衣一区二区三区在线| 欧美综合第一页| 91福利区一区二区三区| 久久国产在线观看| 国产精品久久久久久搜索| 亚洲一区国产视频| 最新中文字幕免费| 漂亮人妻被中出中文字幕| 91精品国产乱码久久久久久蜜臀| 91小视频在线| 日韩欧美激情视频| www.成年人视频| 久久国产精品影片| 亚洲最色的网站| 黄色www视频| 亚洲精品色午夜无码专区日韩| 欧美精品一区二区三区在线看午夜| 欧美一区二区三区四区在线观看| 日av在线不卡| 精品无码国产污污污免费网站| 91嫩草国产在线观看| 亚洲人午夜精品| 91麻豆国产在线观看| 中文字幕在线2019| 久久久国产精品久久久| 国产一区二区三区四区hd| 亚洲性xxxx| 国产精品人成在线观看免费| 国产男女猛烈无遮挡| 91蝌蚪视频在线| 国产精品免费一区二区三区四区| 欧美成人a∨高清免费观看| 大尺度一区二区| 亚洲精品www久久久久久| 五月天av在线播放| 久久综合中文色婷婷| 中日韩午夜理伦电影免费| 欧美网站在线观看| 国产电影一区二区三区| 亚洲国产成人精品女人久久| 欧美日本视频在线观看| 午夜精品一区二区三区在线视频| 91成人免费在线| 99re视频精品| av图片在线观看| 日本黄色免费观看| 欧美大黑帍在线播放| 日产日韩在线亚洲欧美| 精品视频在线导航| 亚洲靠逼com| 狠狠色丁香久久婷婷综| 中文字幕人妻色偷偷久久| 久久婷婷中文字幕| 日韩精品一区二区三区电影| 国产精品亚洲欧美导航| 日韩黄色高清视频| 欧美性极品xxxx娇小| 久久久久久久久蜜桃| 成人黄色免费视频| 三级黄色在线观看| 少妇丰满尤物大尺度写真| 免费cad大片在线观看| 国产欧美日韩一区| 国产亚洲一区二区在线| 在线观看日产精品| 成人欧美一区二区三区黑人麻豆| 国产麻豆精品在线观看| 国产精品一区二区6| 女人裸体性做爰全过| 久久久国产欧美| 色一情一乱一伦一区二区三区丨| 91最新国产视频| 欧美一级片久久久久久久| 日韩欧美一区在线| 亚洲精品乱码久久久久久久久 | 天天干在线播放| 少妇愉情理伦三级| 国产九九九视频| av网址在线观看免费| 午夜精品福利一区二区| 成人在线观看91| 国产999精品| 国内精品久久久久| 日韩不卡在线观看| 欧美一区二区在线不卡| 色婷婷av一区二区| 亚洲成人综合在线| 一区二区国产视频| 久久免费看少妇高潮| 国产aⅴ综合色| 久久中文在线| 成人爽a毛片一区二区| 亚洲高清视频免费观看| 天天射天天干天天| 国产伦精品一区二区三区视频我| 久久不卡免费视频| 国产午夜激情视频| 国产精品www爽爽爽| 99精品欧美一区二区| 久久久久国产精品区片区无码| 中文字幕成人免费视频| 色一情一区二区三区| 日本久久久久久久久久久久| 狠狠躁狠狠躁视频专区| 8x8x成人免费视频| 国产视频1区2区3区| 中文字幕99页| 国产男女无遮挡猛进猛出| 一区二区在线播放视频| 日本特黄在线观看| 在线观看免费av网址| 白嫩情侣偷拍呻吟刺激| 香蕉视频黄色在线观看| 免费看污片网站| 91成人精品一区二区| 麻豆成人在线视频| 国产成人在线观看网站| 伊人网av在线| 亚洲精品一区二区三区蜜桃| 亚洲精品喷潮一区二区三区 | www国产精品视频| 日韩暖暖在线视频| 国产精品久久99久久| 91亚洲国产精品| 国产九区一区在线| 日韩一区不卡| 99色精品视频| 久久久九九九热| 国产一级淫片久久久片a级| www.超碰在线观看| 中文字幕在线视频免费| 亚洲av无码乱码在线观看性色| 天天综合永久入口| 成人精品一区二区三区中文字幕| 国产女主播一区| 亚洲一线二线三线视频|