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

世界上最流行的數(shù)據(jù)庫(kù),竟然是套殼的 !

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
SQLite的源代碼使用Fossil來管理,而Fossil又依賴SQLite來存儲(chǔ)代碼倉(cāng)庫(kù)的信息,這就產(chǎn)生了一個(gè)在后人看來類似先有雞還是先有蛋的問題。

世界上最流行的數(shù)據(jù)庫(kù)是什么?

Oracle? MySQL? PostGreSQL?

都不是,答案是SQLite。

你可能沒聽說過它,但是它就在你身邊的:

每一臺(tái)智能手機(jī)中(Android 和iOS)

每一臺(tái)Mac電腦中

每一臺(tái)Windows 10 電腦中

每一個(gè)主要的瀏覽器中(Chrome, Firefox,Safari)

大部分的機(jī)頂盒當(dāng)中

每個(gè)PHP和Python安裝目錄中

很多流行的桌面應(yīng)用(微信、QQ、 DropBox、 Skype、iMessage、WhatsApp、 Adobe Acrobat Reader....)

......

不信的話可以在電腦中搜索一下 “*.db”,看看能發(fā)現(xiàn)多少個(gè)。

每個(gè)流行的軟件都是為了解決一個(gè)痛點(diǎn)問題,SQLite也不例外。

時(shí)光回到2000年,Richard Hipp為美國(guó)海軍的驅(qū)逐艦開發(fā)軟件,這個(gè)軟件要對(duì)船上所有的閥門進(jìn)行管理和操作。

當(dāng)時(shí),美國(guó)海軍使用的是IBM的Informix數(shù)據(jù)庫(kù),這個(gè)軟件需要通過網(wǎng)絡(luò)訪問它來讀取數(shù)據(jù)。

但是有時(shí)候Informix所在的服務(wù)器會(huì)掛掉,閥門管理軟件就會(huì)報(bào)錯(cuò):不能連接到服務(wù)器!

更糟糕的是,他們對(duì)這個(gè)數(shù)據(jù)庫(kù)服務(wù)器沒有任何控制權(quán),結(jié)果不出意外,誰彈的報(bào)錯(cuò)對(duì)話框,誰背鍋。

為了解決這個(gè)問題,Richard團(tuán)隊(duì)想了一招:將所有數(shù)據(jù)讀入內(nèi)存!

好在他們的程序不需要增、刪、改數(shù)據(jù),只要將數(shù)據(jù)全部讀入內(nèi)存,就萬事大吉了。

此時(shí),Richard腦中閃現(xiàn)出一個(gè)大膽的想法:既然如此,還要啥Informix呢?

直接從本地硬盤讀取數(shù)據(jù)就得了!這樣只要計(jì)算機(jī)能正常工作,程序就能正常運(yùn)行。

這其實(shí)就是嵌入式數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)和用戶程序位于同一臺(tái)機(jī)器的同一個(gè)進(jìn)程當(dāng)中。

圖片圖片

不過當(dāng)時(shí)還沒有這樣的數(shù)據(jù)庫(kù),這時(shí),一位同事提醒Richard:“那你為什么不自己寫一個(gè)呢?”

當(dāng)時(shí)紐特·金里奇和比爾·克林頓正在“打架”,所有政府合同都暫停執(zhí)行,所以Richard失業(yè)了幾個(gè)月。

沒事兒可干的Richard決定把這個(gè)嵌入式數(shù)據(jù)庫(kù)給寫出來。

于是,SQLite誕生了!

SQLite第一版的提交歷史記錄SQLite第一版的提交歷史記錄

SQLite第一版其實(shí)也是個(gè)套殼數(shù)據(jù)庫(kù)

就像今天TiDB使用RocksDB作為其存儲(chǔ)引擎,SQLite的第一版也只不過是在GDBM——可謂是NoSQL的鼻祖——上套了個(gè)殼。SQLite第一版的README文件中這樣寫道:

SQLite: An SQL Database Built Upon GDBM

GDBM衍生自DBM,而DBM(DataBase Manager的縮寫)是來自Unix的鍵值數(shù)據(jù)庫(kù)(key-valuedatabase),支持通過主鍵快速訪問數(shù)據(jù),最初由計(jì)算機(jī)界的大佬Ken Thompson編寫。

圖片

所以,我們可以把GDBM的數(shù)據(jù)庫(kù)看作是存儲(chǔ)在硬盤上的哈希表。

GDBM僅僅以代碼庫(kù)(library)的形式向用戶提供一系列API,并不支持SQL語句。

雖然是套殼數(shù)據(jù)庫(kù),但這個(gè)殼套得可不簡(jiǎn)單。

上世紀(jì)90年代,編程語言界誕生了不少基于字節(jié)碼的語言,也因此出現(xiàn)了各種虛擬機(jī)。

例如,Java有JVM,PHP有Zend Engine,Python和Ruby也有自己的虛擬機(jī)。

擁有豐富編譯器經(jīng)驗(yàn)的Richard也如法炮制,他也搞了虛擬機(jī),將SQL語句轉(zhuǎn)化為字節(jié)碼,在虛擬機(jī)上執(zhí)行。

下面我們就來梳理一下SQLite第一版的架構(gòu),看看它是怎么套殼GDBM的。

SQLite第一版的架構(gòu)

SQLite采用了典型的分層架構(gòu),一條SQL語句依次經(jīng)過

  • 用戶接口(UI)層 
  • 詞法分析器(Tokenizer)層 
  • 語法解析器(Parser)層 
  • 字節(jié)碼生成器(Code Generator)層 
  • 虛擬機(jī)(虛擬數(shù)據(jù)庫(kù)引擎〔Virtual DataBase Engine〕)層 
  • 數(shù)據(jù)庫(kù)后端(DataBase BackEnd〔DBBE〕)層

最終到達(dá)GDBM數(shù)據(jù)庫(kù)層,變?yōu)閷?duì)GDBM數(shù)據(jù)庫(kù)的CRUD(通過調(diào)用GDBM提供的API)。

這些層在下圖中都用方框表示,方框內(nèi)寫有該層的名稱,名稱下方括號(hào)內(nèi)是實(shí)現(xiàn)層的源代碼文件。

SQLite第一版的架構(gòu)SQLite第一版的架構(gòu)

以圖中的INSERT INTO語句為例,首先,UI層將用戶輸入的這條SQL語句傳遞給Tokenizer(詞法分析器)。

Tokenizer會(huì)將一條SQL語句分割為Token的序列(通過sqliteGetToken()函數(shù)),類似[INSERT,INTO, examp, VALUES, (, 'Hello, World!'...]。

接下來由Parser(語法分析器)根據(jù)語法規(guī)則(如圖中的cmd::= INSERT INTO...)解析來自Tokenizer的Token的序列,并調(diào)用與匹配的語法規(guī)則對(duì)應(yīng)的處理函數(shù),這里是INSERT語句的語法規(guī)則對(duì)應(yīng)的處理函數(shù)sqliteInsert()。

值得一提的是,SQLite第一版中的詞法分析器和語法分析器(叫做Lemon)都是Richard自己編寫的,他從一開始就沒有采用lex和yacc等成熟的現(xiàn)成工具,這或許是源于他對(duì)自由的極度渴望。

文章最后我們會(huì)聊聊Richard在軟件世界中的生存態(tài)度,到時(shí)候就更能理解Richard為什么要重復(fù)造輪子了。

回到架構(gòu)圖中,在語法規(guī)則處理函數(shù)sqliteInsert()中(位于字節(jié)碼生成器〔Code Generator〕層),SQL語句被翻譯(通過sqliteVdbeAddOp()函數(shù))成了如下圖左側(cè)黃色方框中的字節(jié)碼(OpCode)(我這里進(jìn)行了簡(jiǎn)化,實(shí)際的字節(jié)碼要比這里的復(fù)雜一些)。

可以看到,此時(shí)一條INSERT語句被分解成為若干簡(jiǎn)單的指令:

Open examp——打開名為examp的數(shù)據(jù)表;

Integer 99——添加一個(gè)整型的數(shù)據(jù)項(xiàng),值為99;

Put——向數(shù)據(jù)表中寫入記錄……

SQLite第一版的架構(gòu)(續(xù))SQLite第一版的架構(gòu)(續(xù))

當(dāng)虛擬機(jī)(也叫VDBE,Virtual DataBaseEngine,虛擬數(shù)據(jù)庫(kù)引擎)接收到這一串指令后,就會(huì)根據(jù)指令的類型(是Open、是Put,還是……)調(diào)用對(duì)應(yīng)的函數(shù)。

如對(duì)于Put這個(gè)指令,就需要調(diào)用sqliteDbbePut()來處理。

現(xiàn)在處理流程終于進(jìn)入到了DBBE(DataBase BackEnd,數(shù)據(jù)庫(kù)后端)層,這里才是最貼近GDBM的那層殼。

既然Put指令(對(duì)應(yīng)sqliteDbbePut()函數(shù))要插入記錄,那就調(diào)用gdbm_store()這個(gè)GDBM的API完成數(shù)據(jù)寫入。

至此,SQLite第一版就處理完了一條INSERT語句,向examp表中插入了一條新紀(jì)錄("Hello,World!", 99)。

從設(shè)計(jì)模式的角度看,DBBE層相當(dāng)于接口,而GDBM相當(dāng)于實(shí)現(xiàn)類;從MySQL架構(gòu)的角度看,DBBE層相當(dāng)于MySQLServer層,而GDBM相當(dāng)于MyISAM或InnoDB,是一種Pluggable Storage Engine。

也許Richard一開始就想到了不能在GDBM一棵樹上吊死,底層的存儲(chǔ)引擎應(yīng)該是可以替換的。

果然,到了2001年,Richard就決定干掉GDBM了。

他從書架上取出高德納(Donald Knuth)的巨著The Art ofComputer Programming(《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》),用B樹替代掉了GDBM。

用B樹替代GDBM的提交記錄用B樹替代GDBM的提交記錄

圖片

B樹替代GDBM后,README文件的diff

“末日準(zhǔn)備者”Richard

最后我們來聊一聊Richard這個(gè)人。

圖片

世界上有這樣一類人,他們?cè)谝恍K土地上自己種植食物,生活完全靠自給自足,甚至不使用自來水、電、天然氣等公共設(shè)施。

人們稱他們?yōu)樯嬷髁x者(survivalist)或末日準(zhǔn)備者(preppers)。

而Richard仿佛也是他們之中的一員,時(shí)刻都在為軟件世界的“末日”做著準(zhǔn)備:

要是現(xiàn)有的語法分析器不能滿足我的需求怎么辦?——那我自己寫一個(gè)吧——于是有了Lemon。

要是版本控制系統(tǒng)不好用怎么辦?——那我自己寫一個(gè)吧——于是有了Fossil。

要是文本編輯器……——那我自己寫一個(gè)吧。

在一檔名為FLOSS Weekly的訪談節(jié)目的結(jié)尾(我搬運(yùn)到了B站??https://www.bilibili.com/video/BV1Hj411W7xc/?t=2944.1)

主持人問了Richard一個(gè)例行問題:“你最喜歡的編輯器是?”

“當(dāng)然是我自己寫的那個(gè),哈哈哈”

為了管理SQLite的代碼迭代,Richard還自己造了個(gè)叫做Fossil的版本控制系統(tǒng)。

更有意思的是,SQLite的源代碼使用Fossil來管理,而Fossil又依賴SQLite來存儲(chǔ)代碼倉(cāng)庫(kù)的信息,這就產(chǎn)生了一個(gè)在后人看來類似先有雞還是先有蛋的問題。

毫不夸張地說,除了C編譯器和libc中的一些東西之外,SQLite基本上只依賴Richard自己構(gòu)建的軟件。

而這正是Richard所要的自由——自己編寫的組件越多,就越自由,就越少受到束縛。

日本動(dòng)畫片《新世紀(jì)福音戰(zhàn)士EVA》電視版的第26集也有一段對(duì)“自由”的描述(??https://www.bilibili.com/video/BV1yK411b7AT/),看過后可能會(huì)覺得絕對(duì)的自由會(huì)讓人感到不安、寂寞、迷茫。

而Richard卻堅(jiān)定地認(rèn)為,如果想要自由,就得自己動(dòng)手。如果有人跟你說“讓我們?yōu)槟憬鉀Q問題”,那你就要有所警惕,因?yàn)樗麄冋嬲胝f的是,“我們將會(huì)剝奪你的一些自由”。

Richard不想讓別人控制自己的命運(yùn),他要牢牢掌握自己的命運(yùn),縱使會(huì)付出很多努力。

(完)

本文來自“胡譯胡說” 的投稿。

如需轉(zhuǎn)載,請(qǐng)通過作者微信公眾號(hào)coderising獲取授權(quán)。

責(zé)任編輯:武曉燕 來源: 碼農(nóng)翻身
相關(guān)推薦

2025-10-10 03:00:00

2025-03-27 00:45:00

2023-07-31 08:59:46

軟件FossilSQLite

2025-03-13 00:35:00

2013-04-24 09:57:08

Excel微軟

2023-06-28 11:14:18

2024-10-14 10:58:13

2025-11-11 02:55:00

OracleJavaScriptES5

2018-11-06 12:22:18

排序算法代碼

2010-09-02 13:21:46

2021-10-18 13:42:52

加密貨幣金融工具

2015-11-25 09:41:05

數(shù)據(jù)中心

2018-07-16 09:12:00

程序員奇葩開發(fā)

2014-09-05 09:08:58

2013-06-09 08:52:50

哈希表

2017-12-04 23:25:24

2023-02-28 08:59:47

PythonJavaJavaScript

2014-02-11 09:58:19

環(huán)保數(shù)據(jù)中心泰坦

2020-07-23 18:31:55

開源數(shù)據(jù)庫(kù)PostgreSQL

2024-01-05 08:37:41

前端項(xiàng)目開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲最大的av网站| 亚洲一区二区福利| av之家在线观看| 国产午夜在线视频| 韩国精品在线观看| 国内久久久精品| 谁有免费的黄色网址| 在线视频成人| 狠狠躁夜夜躁人人躁婷婷91| 宅男av一区二区三区| 免费看国产片在线观看| 日韩精品每日更新| 欧美国产中文字幕| 法国空姐电影在线观看| 天堂va欧美ⅴa亚洲va一国产| 午夜视频在线观看一区二区三区| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 亚洲欧美一区二区三区在线观看| 97精品中文字幕| 日韩精品www| 亚洲精品久久久久久| 人人视频精品| 亚洲国产精品影院| 致1999电视剧免费观看策驰影院| 五月婷婷在线观看视频| 韩国女主播成人在线| 国产精品久久久亚洲| 久久久久久久九九九九| 我不卡伦不卡影院| 亚洲丝袜在线视频| 亚洲国产精品成人综合久久久| 亚洲免费资源| 欧美天堂一区二区三区| 五十路熟女丰满大屁股| 羞羞视频在线免费国产| 中文字幕一区视频| 亚洲国产一区二区三区在线播 | 疯狂欧洲av久久成人av电影| 在线精品视频免费播放| 免费在线a视频| 国产理论电影在线| 一区二区久久久| 亚洲一区 在线播放| 中文日本在线观看| 亚洲国产成人午夜在线一区| 欧洲亚洲一区| 你懂的在线免费观看| 97国产精品videossex| 国产精品久久久久久久久久久久午夜片 | 久久66热这里只有精品| 亚洲国产www| 国产不卡在线视频| 不卡一区二区三区四区五区| 99热这里只有精品在线| 国产精品中文有码| 91成人免费在线观看| 国产成人麻豆精品午夜在线| 韩国女主播成人在线观看| 91色中文字幕| 国产乱淫a∨片免费观看| 国产在线播放一区| 成人三级视频在线观看一区二区| 99精品免费观看| 国产精品69久久久久水密桃 | 国产精品美女久久久久久不卡| 日韩av中文在线| 中文字幕在线免费看线人| 亚洲三级精品| 国产一区二区成人| 久久一级免费视频| 欧美成人69av| 国a精品视频大全| 偷偷操不一样的久久| 天堂成人国产精品一区| 国产精品第一区| 一级特黄aa大片| 国产凹凸在线观看一区二区| 97av自拍| 你懂的在线看| 国产精品电影一区二区三区| 蜜桃视频一区二区在线观看| av老司机在线观看| 在线观看91精品国产入口| 污污网站在线观看视频| 清纯唯美激情亚洲| 精品亚洲精品福利线在观看| 日本美女xxx| 亚洲一区在线| 欧洲亚洲在线视频| 国产精品乱码一区二区| 成人免费毛片片v| 日韩精品伦理第一区| 国产视频中文字幕在线观看| 亚洲h动漫在线| 在线免费av播放| 一区二区三区在线免费看| 亚洲欧美中文字幕| 欧美三级黄色大片| 亚洲欧美高清| 91色视频在线导航| 日韩有码电影| 亚洲欧美一区二区三区国产精品| 欧妇女乱妇女乱视频| 欧美成人精品三级网站| 精品国产一区二区三区忘忧草 | 天堂av资源在线| 中文字幕一区二区三区av| 免费不卡av在线| 日韩黄色三级在线观看| 日韩av资源在线播放| 国产成人无码aa精品一区| 日韩和的一区二区| 懂色av一区二区三区在线播放| 成全电影播放在线观看国语| 亚洲成人在线观看视频| 色婷婷激情视频| 久久99视频| 国内自拍欧美激情| 精品国产一级片| 中文字幕一区二区三区乱码在线| 日韩精品一区二区三区久久| jizz久久精品永久免费| 日韩亚洲欧美成人| 国产成人麻豆免费观看| 2024国产精品| 可以看毛片的网址| 国产精品一站二站| 日韩中文字幕在线视频播放| 中文字幕在线播| 白白色 亚洲乱淫| 日韩美女爱爱视频| 国内精品视频| 色噜噜国产精品视频一区二区| 久久夜色精品国产噜噜亚洲av| 国产不卡高清在线观看视频| 欧洲金发美女大战黑人| 日日夜夜精品| 最新69国产成人精品视频免费| 日韩手机在线视频| 久久综合色天天久久综合图片| 国产高清av在线播放| jazzjazz国产精品久久| 欧美俄罗斯性视频| 国产成年妇视频| 亚洲精品午夜久久久| 尤物网站在线看| 中文字幕av亚洲精品一部二部| 国产日韩欧美一二三区| 91精品专区| 欧美美女一区二区三区| 91 在线视频| 狠狠色狠狠色合久久伊人| 中文字幕日韩一区二区三区| 欧美jizz18| 久久久国产一区二区三区| 国产精品自拍电影| 亚洲伦在线观看| 成人啪啪18免费游戏链接| 国产一区视频在线观看免费| 国产视频一区二区不卡| 天堂电影一区| 一本一道久久a久久精品逆3p| 国产主播第一页| 国产精品美女久久久久久 | 99久久婷婷国产精品综合| 国产av天堂无码一区二区三区| 欧洲精品一区| 国产精品久久二区| 毛片网站在线免费观看| 日韩欧美一级精品久久| 国产一国产二国产三| www国产成人| 无码少妇一区二区三区芒果| 99精品在线观看| av电影成人| 在线视频cao| 在线播放日韩专区| av观看在线免费| 香蕉加勒比综合久久| 37p粉嫩大胆色噜噜噜| 蜜臀av一区二区在线观看| 熟妇熟女乱妇乱女网站| 超碰地址久久| 国产精品999999| 91国内在线| 精品香蕉在线观看视频一| 亚洲视频在线观看一区二区 | 伊人久久综合97精品| 96日本xxxxxⅹxxx17| 亚洲精品成人a在线观看| 国产精品久久不卡| 狠狠色丁香久久婷婷综合_中| 国产日韩av网站| 99久久精品费精品国产风间由美| 国产精品制服诱惑| 日韩av黄色| 热久久这里只有精品| www免费视频观看在线| 亚洲日本欧美中文幕| av网站在线观看免费| 色哟哟亚洲精品| 精品99在线观看| 日本一区二区视频在线| 第一页在线视频| 免费观看成人av| 成人免费观看视频在线观看| 亚洲二区三区不卡| 任我爽在线视频精品一| aaa国产精品视频| 成人激情春色网| 黄色亚洲网站| 欧美激情在线视频二区| 女女色综合影院| 国产一区二区日韩精品欧美精品| 成人午夜免费福利| 777xxx欧美| 国产美女激情视频| 性感美女久久精品| 久久久久久久久艹| 一卡二卡欧美日韩| 成人在线观看高清| 中文字幕国产一区二区| 日本少妇高潮喷水xxxxxxx| 99re热这里只有精品视频| 爱情岛论坛亚洲自拍| 麻豆成人久久精品二区三区小说| 欧美色图另类小说| 亚洲国产欧美国产综合一区| 国产资源第一页| 91久久高清国语自产拍| 色一情一乱一伦一区二区三欧美 | 亚洲欧美偷拍视频| 婷婷开心激情综合| 国产在线观看99| 亚洲综合一二三区| 国产亚洲精品久久777777| 亚洲精选视频免费看| 日本黄色免费片| 国产精品沙发午睡系列990531| 最新中文字幕视频| 久久久久久97三级| 精品人妻一区二区三区视频| 久久综合给合久久狠狠狠97色69| 国产 xxxx| a级高清视频欧美日韩| 人体私拍套图hdxxxx| thepron国产精品| 成人免费毛片日本片视频| 99久久精品国产导航| 性久久久久久久久久久| 久久综合久色欧美综合狠狠| b站大片免费直播| 国产视频一区在线播放| 国产伦精品一区二区三区视频女| 久久久精品国产免费观看同学| 波多野结衣av在线观看| 中文字幕免费在线观看视频一区| 岛国片在线免费观看| 亚洲欧美自拍偷拍| 欧美成人三级视频| 亚洲第一狼人社区| 日韩视频在线观看一区| 色老汉一区二区三区| 日韩不卡手机在线v区| 欧美一区二区三区在线视频| 在线观看中文字幕2021| 欧美日韩二区三区| 国产欧美久久久精品免费| 日韩一区二区三区av| 性欧美videos另类hd| 精品国产乱码久久久久久浪潮 | 丝袜亚洲另类丝袜在线| 青青青国产在线视频| 老色鬼精品视频在线观看播放| 日韩av片免费观看| 成人性视频免费网站| 女人又爽又黄免费女仆| 中文字幕一区二区在线观看| 久久精品欧美一区二区| 精品日本高清在线播放| 亚洲综合精品视频| 亚洲第一男人av| 成人午夜在线观看视频| 蜜臀久久99精品久久久久久宅男 | 韩国三级hd两男一女| 91视视频在线观看入口直接观看www | 黄色网在线播放| 久久久久久久一区二区| 日本高清不卡一区二区三区视频 | 亚洲最色的网站| 亚洲天堂一区在线| 欧美群妇大交群的观看方式| 色窝窝无码一区二区三区| 亚洲欧美综合v| 中文字幕资源网在线观看| 欧美一区二三区| 一区二区三区| 欧美日韩在线精品| 午夜欧美精品久久久久久久| 蜜臀久久99精品久久久酒店新书| 国产在线一区二区综合免费视频| 亚洲の无码国产の无码步美| 亚洲国产成人午夜在线一区| 日韩黄色在线视频| 欧美人动与zoxxxx乱| 久草在现在线| 久久久久国产精品免费| 青青青国产精品| 免费成人深夜夜行视频| 自拍欧美日韩| 日本不卡一区二区在线观看| 91麻豆swag| 国产精品99re| 欧美一级免费大片| 亚洲天天影视| 国产精品444| 麻豆成人入口| 亚洲熟妇无码av在线播放| 美女诱惑一区二区| 日韩精品电影一区二区| 婷婷综合另类小说色区| 国产精品视频一二区| 一区二区三区视频免费在线观看| 涩涩视频在线播放| 国产 高清 精品 在线 a| 天天超碰亚洲| 九色porny自拍| 久久久不卡影院| 国产精品免费精品一区| 日韩h在线观看| √天堂8资源中文在线| 99r国产精品视频| 欧美在线日韩| 国产精品999.| 亚洲另类春色国产| 国产精品一区二区av白丝下载| 在线视频日本亚洲性| 天天综合网天天| 日韩一本精品| 全国精品久久少妇| 欧美性受xxxx黑人| 在线中文字幕一区| 成年在线观看免费人视频| 国产精品久久9| 日韩在线视频精品| 九九九九九九九九| 自拍偷拍国产精品| 国产免费叼嘿网站免费| 久久人体大胆视频| 欧美不卡在线观看| 中文精品无码中文字幕无码专区| 国产成人日日夜夜| 国产第一页第二页| 亚洲美女自拍视频| 久久久人成影片一区二区三区在哪下载 | 香蕉视频国产在线| 日本一欧美一欧美一亚洲视频| 国产精品欧美在线观看| 一道本视频在线观看| 亚洲欧洲性图库| 成人福利小视频| 91精品国产乱码久久久久久蜜臀| 亚洲区小说区图片区qvod按摩| 亚洲精品高清无码视频| 日韩一区有码在线| 狠狠躁日日躁夜夜躁av| 欧美性资源免费| 日韩av专区| 午夜诱惑痒痒网| 五月激情丁香一区二区三区| 可以直接在线观看的av| 国产欧美日韩精品专区| 欧美在线亚洲| 欧类av怡春院| 欧美午夜片在线观看| av网站在线免费| 精品久久一区二区三区蜜桃| 天堂资源在线中文精品| 天天看片中文字幕| 日韩成人av在线播放| 亚洲精品无播放器在线播放| 成人一级生活片| 久久精子c满五个校花| 国产乱子伦精品无码码专区| 91精品国产色综合久久不卡98口| 精品国产99| 麻豆tv在线观看| 91久久国产综合久久| 欧美女同一区| 天堂√在线观看一区二区| 国产+成+人+亚洲欧洲自线| 亚洲 欧美 中文字幕| 欧美精品一区在线播放| 影视先锋久久| 欧美人与性动交α欧美精品| 91激情在线视频| 国内在线视频| 亚洲人久久久| 97se亚洲国产综合在线| 国产三级按摩推拿按摩|