欧美日韩国产综合网_欧美精品大片_亚洲一区二区三区高清不卡_一区二区三区免费看_亚洲综合好骚_亚洲欧美影院_国产视频不卡_亚洲高清视频一区_免费精品视频_欧美精品一级

  • 開源嵌入式數據庫Bericel ey DB和SQLite的比較
    單片機及嵌入式系統應用

    1 嵌入式數據庫  

        通常,我們采用數據庫來實現對數據的存儲、檢索等功能。像MySQL這類基于C/S結構的關系型數據庫系統,雖然代表著目前數據庫應用的主流,卻并不能滿足所有應用場合的需要。很多的應用,僅僅利用到了這些數據庫產品的基本特性而已。有時我們需要的可能只是一個簡單的基于磁盤文件的數據庫系統,這樣就不必安裝龐大的數據庫服務器,以簡化數據庫應用程序的設計。在某些特殊應用場合,比如在嵌入式系統中,由于系統的硬件軟件資源都有限,這些數據庫產品就明顯有一些臃腫,甚至是不可實現的。在這些情況下,嵌入式數據庫的優勢就特別明顯了。 

    嵌入式數據庫通常與操作系統和具體應用集成在一起,無須獨立運行的數據庫引擎,由程序直接調用相應的API去實現對數據的存取操作。更直白地講,嵌入式數據庫是一種具備了基本數據庫特性的數據文件。嵌入式數據庫與其它數據庫產品的區別是,前者是程序驅動式,而后者是引擎響應式。嵌入式數據庫的一個很重要的特點是它們的體積非常小,編譯后的產品也不過幾十KB,在一些移動設備上極具競爭力。 

    從目前嵌入式應用的發展趨勢來看,嵌入式數據庫的實現必須充分體現系統的可定制性,即系統選擇的技術路線要面向具體的行業應用,因而研究源碼開放的嵌入式數據庫具有特殊意義。 

    2 Berkeley DB和SQLite  
        DBkeley DB是一款健壯的、高速的工業級開放源代碼的嵌入式數據庫管理系統。應用它,程序員只需要調用一些簡單的API就可以完成對數據的訪問和管理。 
    Berkeley DB的源代碼有C和Java兩種,函數庫本身只有300KB左右,但卻能夠用來管理多達256TB的數據。Berkeley DB作為一種嵌入式數據庫系統在許多方面有著獨特的優勢。首先,由于其應用程序和數據庫管理系統運行在相同的進程空間當中,進行數據操作時可以避免繁瑣的進程間通信,因此耗費在通信上的開銷自然也就降低到了極低程度。其次,Berkeley DB使用簡單的函數調用接口來完成所有的數據庫操作,而不是在數據庫系統中經常用到的SQL語言,避免了對結構化查詢語言進行解析和處理所需的開銷。 

        SQLite的源代碼是C,其源代碼完全開放。SQLite第一個Alpha版本誕生于2000年5月。今年5月,SQLite又迎來了一個新的里程一SOLite 3。 

        SQLite有以下特性:支持ACID事務;零配置一無需安裝和管理配置;儲存在單一磁盤文件中的一個完整的數據庫;數據庫文件可以在不同字節順序的機器間自由共享;支持數據庫大小至2TB;足夠小,全部源碼大致3萬行c代碼,250KB;比目前流行的大多數數據庫對數據的操作要快;提供了對事務功能和并發處理的支持,應用Transaction既保證了數據的完整性,也會提高運行速度,因為多條語句一起提交給數據庫的速度會比一條一條的提交方式更快;獨立,沒有額外依賴。 

    目前,對Berkeley DB的研究開發工作主要是美國的sleepycat公司在進行,在國內幾乎沒有關于這方面的研究;而SQLite在國內也是鮮有人問津。 

    2.1 Berkeley DB和SOLite的數據庫操作 
        與常用的數據庫管理系統(如MySQL和Oracle等)有所不同,在Berkeley DB中并沒有數據庫服務器的概念。應用程序不需要事先同數據庫服務建立起網絡連接,而是通過內嵌在程序中的Berkeley DB函數庫來完成對數據的保存、查詢、修改和刪除等操作。所有與數據庫相關的操作都由函數庫負責統一完成,這樣無論是系統中的多個進程,或者是相同進程中的多個線程,都可以在同一時間調用訪問數據庫的函數;而底層的數據加鎖、事務日志和存儲管理等都在Berkeley DB函數庫中實現。它們對應用程序來講是完全透明的。 

        Berkeley DB不是關系型的數據庫,不能應用標準的SQL語句對數據庫操作,對它的操作要調用專用的API實現。這些API提供了查詢、插入、刪除等功能。比如com.sleepycat.db.Db類代表數據庫對象。Db類的put( )方法完成的是插入功能;get( )方法完成的是讀出數據的功能;com.sleepycat.db.Dbc是Berkeley DB的游標類,提供了遍歷數據庫記錄的功能。 

    使用Berkeley DB提供的函數來進行數據庫的訪問和管理并不復雜。在大多數場合下,只需按照統一的接口標準進行調用就可以完成最基本的操作,Berkeley DBEnvironment為一組數據庫同時提供參數設置。更為重要的是,如果要應用更高級的特性,必須要使用Environment功能,比如在要對保存的數據進行加密存儲、利用其Transaction、數據加密、同步加鎖控制、錯誤日志等功能的時候。 

        SQLite的SQL語言很大程度上實現了ANSI SQL92標準,特別是支持視圖、觸發器、事務,支持嵌套SQL。它通過SQL編譯器(SQL Complier)來實現SQL語言對數據庫進行操作,支持大部分的SQL命令,如attach database、begin transaction、comment、commit transaction、copy、create index、create table、create trigger、create view、delete、detach database、drop index、drop table、drop trigger、drop view、end transaction、explain、expression、insert、On conflict clause、pragma、replace、rollback transaction、select、update。 
    當然,也有一部分SQL命令SQLite并不支持。比如:不支持:Exists,雖然支持in(in是Exists的一種情況);不支持多數據庫,如create table dbl.tablel as select*from db2.table 1;:不支持存儲過程;不支持Alter View/Trigger/Table:不支持Truncate, 在SQLite中Delete不帶Where字句時和Truancate的效果是一樣的;不支持Floor和Ceiling函數,還有其它許多的函數;沒有Auto Increment(自增)字段,但其實SQLite是支持Auto Increment的,即在將該字段設置為“INTEGER PRIMARY KEY”的時候;不支持If Exists等。 

    2.2 Berkeley DB和S0Lite與普通數據庫的差別 
        Berkeley DB引入了一些新的基本概念,使得數據庫應用程序訪問和管理數據庫變得相對簡單起來。 

    (1)關鍵字和數據 

        關鍵字(key)和數據(data)是。Berkeley.DB用來進行數據庫管理的基礎,由這兩者構成的key/data對,組成了數據庫中的一個基本結構單元。整個數據庫實際上就是由許多這樣的結構單元構成的。通過使用這種方式,在通過API函數訪問數據庫時,只需提供關鍵字就能夠訪問到相應的數據。 

    關鍵字和數據在Berkeley DB中都是用一個名為DBT的簡單結構來表示的。實際上兩者都可以是任意長度的二進制數據。DBT的作用主要是保存相應的內存地址及其長度,其結構如下所示: 

    typedef struct {  
    void*data;  
    u_int32_t size;  
    u_int32_t ulen;  
    u_int32_f dlen;  
    u_int32_f doff;  


    u_int32_f flags;  
    }DBT;  

        在使用Berkeley DB進行數據管理時,缺省情況下是一個關鍵字對應于一個數據;但也可以將數據庫配置成一個關鍵字對應于多個數據,而鍵值和數據必須是類com.sleepycat.db.Dbt的對象或其子類的對象。 

    (2)對象句柄 

        在Berkeley DB函數庫定義的大多數函數都遵循同樣的調用原則:首先創建某個結構,然后再調用該結構中的某些方法。從程序設計的角度來講,這一點同面向對象的設計原則是非常類似的,即先創建某個對象的一個實例,然后再調用該實例的某些方法。正因為如此,.Berkeley DB引入了對象句柄的概念來表示實例化后的結構,并且將結構中的成員函數稱為該句柄的方法。對象句柄的引入使得程序員能夠憑借面向對象的思想,來完成對Berkeley DB數據庫的訪問和操作。 

    (3)錯誤處理 

        對于任何一個函數庫來說,如何對錯誤進行統一的處理都是需要考慮的問題。Berkeley DB提供的所有函數都遵循同樣的錯誤處理原則,即函數成功執行后返回零,否則返回非零值。 

    對于系統錯誤(如磁盤空間不足),返回的是一個標準的值;而對于非系統錯誤,返回的則是一個特定的錯誤編碼。例如,如果在數據庫中沒有與某個特定關鍵字所對應的數據,那么在通過該關鍵字檢索數據時就會出現錯誤。此時函數的返回值將是DB—NOTF0uND,表示在數據庫中并沒有所請求的關鍵字。所有標準的e rrn0值都大于零,而由Berkeley DB定義的特殊錯誤編碼則都小于零。 

        Berkeley。DB提供了相應的函數來獲得錯誤代號所對應的錯誤描述。一旦有錯誤發生,只需首先調用db_strerror( )函數來獲得錯誤描述信息,然后再調用DB一>err()或DB->errx()就可以很輕松地輸出格式化后的錯誤信息。 

    而SQLite最大的特點在于其數據類型為無數據類型(typelessness)。這意味著可以保存任何類型的數據到所想要保存的任何表的任何列中,無論這列聲明的數據類型是什么。雖然在生成表結構的時候,要聲明每個域的數據類型,但sQLite并不做任何檢查。開發人員要靠自己的程序控制輸入與讀出數據的類型。這里有一個例外,就是當主鍵為整型值時,如果要插入一個非整型值時會產生異常。 

        誠然,SQLite允許忽略數據類型,但是,仍然建議在Create Table語句中指定數據類型,因為數據類型有利于增強程序的可讀性。SQLite支持常見的數據類型,如VARCHAR、NVARCHAR、TEXT、INTEGER、FLOAT、BOOLEAN、CLOB、BLOB、TIMESTAMP、NUMERIC、VARYING、CHARACTER、NATl0NAI, VARYINGCHARACTER。 

    另外,雖然在插入或讀出數據的時候是不區分類型的,但在比較的時候,不同數據類型是有區別的。比如:CREATE TABLE MyTable (a INTEGER,b TEXT);  

        INSERT INT0 MyTable VALIUES(0,0);  
        當執行查詢  
        SELECT count(*)FROM MyTable WHERE a==’00’;時,會返回一條記錄。因為字段a的類型是整型,而數字00與0是相等的。而執行查詢  
        SELECT count(*)FROM MyTable WHERE b==’00’:時,則不會返回記錄。因為字段b是字符類型,字符"00"與“0”是不相等的。 
    2.3 Betkeley DB和SQLite數據存儲方式比較 

        Berkeley DB對任何存入的數據都是按原樣直接存儲到數據文件中去,無論其是二進制數據還是A S C I I或Unicode等編碼的文本。Berkeley DB提供了四種存儲數據的模式:Btree、Hash、Queue和Recno。在打開數據庫的時候,要指定一種存儲模式。比如,上例中open( )方法中的參數Db.DB_BTREE就是指定以Btree模式打開數據庫。 

    SQLite只提供了Btree存儲數據的模式。對二進制數據,SQLite不能直接保存,但可以先將二進制的數據轉換成ASCII編碼,然后再保存。Base64.編碼機制是最常見的把二進制數據轉換成ASCII編碼的手段。在SQLite的C語言代碼encode.c中,提供了Base64編碼的功能。 

        Btree模式是以排序的二叉樹的方式存儲的,Hash是以線性哈希表的方式存儲。Queue用邏輯記錄號作為鍵值,以定長的數據為記錄值。Recno方式也以邏輯記錄號作為鍵值,但可以保存定長或變長的記錄值。這里提到的邏輯記錄號有兩種,即可變的和固定的。可變邏輯記錄號會根據數據記錄的增加與刪除作相應的變化。Queue模式下,邏輯記錄號只能是固定方式。Recno模式則可通過配置來選擇是采用哪種類型的記錄號作為鍵值。Btree模式也可以通過設置,將可變的邏輯記錄號作為鍵值。 

    這幾種存儲模式各有優缺點,當鍵值不想用邏輯記錄號時,Btree或Hash是必須的選擇。Btree方式比較適合連續的順序讀取。比如,當鍵值是時間值,如果經常有從某一時間點開始連續讀取后繼的記錄的操作,Btree是一種很好的選擇。對隨機的跳躍式讀取,Hash模式則更為恰當。Queue和Recno都以記錄號為鍵值,但前者適合先進先出的讀取方式。Recno則通常是存取變長文本記錄的理想存儲模式。 

    2.4 Berkeley DB和S0Lite適用的系統 

        Berkeley DB為許多編程語言提供了實用的API接口,包括C、C++、Java、:Perl、Tcl、Python和PHP等。它適用平臺UNIX/POSIX systems、win32以及嵌入式操作系統WinCE、VxWorks等。 
    通過Wrapper,SQLite實現了與其它語言的連接。所謂Wrapper即對SQLite提供的接口進行封裝,使其它語言可以訪問,使用SQLite 

    。SQLite本身提供C和Tcl的接口,世界各地的程序員還提供了各種語言的SQLite的接口封裝, 如Python、C++、Java、.Net等幾乎所有流行的語言基本都有。sQLite提供一個抽象的操作系統接口層,來保證其在POSIX 與 Win32系統之間的兼容性。 

    2.5 其它方面  

        Berkeley DB沒有數據庫服務器的概念,使用簡單的函數調用接口來完成所有的數據庫操作,不使用SQL語言;接口簡明實用,避免了對結構化查詢語言進行解析和處理所需的開銷,提高了執行速度;速度極快,可靠性高,但學習起來有一定難度。SQLite則簡單易用,速度也很快,但功能卻較Berkeley略有遜色,比如加密功能、二進制數據的處理等。 

    Berkeley DB雖然是開源的產品,但對某些條件下的商業性應用,卻不是免費的,而且價格頗為昂貴。這些商業條件包括排除了開源的情況,不發放分布版本的情況等。SQLite是源代碼完全的開放,可以免費用于任何用途,包括商業目的。 

    結語 

        隨著人們對移動數據處理和管理需求的不斷提高,與各種智能設備緊密結合的嵌入式數據庫技術已經得到了學術界、工業界、民用部門等各方面的廣泛重視。嵌入式數據庫將會使得人們希望隨時隨地存取任意思數據信息的愿望成為現實,嵌入式數據庫將無處不在。開源的嵌入式數據庫Berkeley DB和SQLite,內核微小,有能夠充分適應硬件的能力,能很好地適應嵌入式系統的需要。在具體的嵌入式應用中可以根據具體情況選擇應用。 


     
     
    網站首頁  |  關于我們  |  聯系我們  |  廣告服務  |  版權隱私  |  友情鏈接  |  站點導航
     
    欧美日韩国产综合网_欧美精品大片_亚洲一区二区三区高清不卡_一区二区三区免费看_亚洲综合好骚_亚洲欧美影院_国产视频不卡_亚洲高清视频一区_免费精品视频_欧美精品一级
    亚洲精品乱码久久久久久蜜桃麻豆 | 久久久久久穴| 欧美精品日本| 午夜欧美精品| 欧美~级网站不卡| 麻豆av一区二区三区| 香蕉精品999视频一区二区| 免费试看一区| 性欧美videos另类喷潮| 国产精品一区二区三区观看| 久久久久久黄| 黄色亚洲精品| 国产精品一二| 欧美激情1区| 一本色道久久综合亚洲精品高清 | 欧美精品不卡| 久久青青草综合| 韩国在线视频一区| 国产女主播一区二区三区| 噜噜噜在线观看免费视频日韩| 欧美午夜免费影院| 国产精品乱码| 国产伊人精品| 免费中文字幕日韩欧美| 国产精品国产精品| 一区二区三区欧美成人| 欧美人与禽猛交乱配视频| 国内精品嫩模av私拍在线观看| 亚洲人体大胆视频| 久久精品五月| 国产一区白浆| 一区二区三区国产盗摄| 亚洲激情社区| 国产主播一区| 午夜视频精品| 欧美成人免费在线| 久久久蜜桃一区二区人| 欧美亚洲专区| 国产亚洲精品自拍| 亚洲福利国产| 精品成人在线| 黄色亚洲免费| 欧美性久久久| 国产一在线精品一区在线观看| 久久久一本精品99久久精品66| 正在播放亚洲| 一区二区三区精品国产| 国产欧美一区二区三区另类精品| 欧美日韩国产三区| 欧美体内she精视频在线观看| 牛夜精品久久久久久久99黑人| 国产日韩三区| 国产精品伊人日日| 亚洲永久网站| 99av国产精品欲麻豆| 亚洲福利电影| 国产精品久久久久久久久婷婷 | 欧美精品二区| 欧美激情第六页| 欧美激情日韩| 国内精品久久国产| 日韩视频在线播放 | 国产精品久久久久久久久久直播| 亚洲青涩在线| 亚洲欧美日韩综合国产aⅴ| 很黄很黄激情成人| 在线观看欧美一区| 亚洲二区三区四区| 国产精品夜夜夜一区二区三区尤| 久久亚洲高清| 亚洲一级高清| 99www免费人成精品| 国产日韩综合| 欧美福利一区二区三区| 亚洲激情av| 蜜乳av另类精品一区二区| 久久综合伊人| 欧美精品自拍| 国产日韩欧美一区二区三区在线观看| 久久久国产精品一区二区中文 | 久久久99爱| 欧美午夜免费影院| 国产农村妇女精品一二区| 午夜精品亚洲| 一区二区三区四区五区精品| 久久aⅴ乱码一区二区三区| 亚洲综合欧美| 亚洲视屏一区| 欧美激情日韩| 久久久夜夜夜| 国产精品v欧美精品v日本精品动漫 | 欧美a级片一区| 日韩视频三区| 国产精品v欧美精品v日本精品动漫| 99热精品在线| 欧美日韩专区| 免费亚洲视频| 狠狠爱成人网| 欧美69视频| 亚洲一区高清| 日韩视频在线一区二区三区| 欧美国产专区| 亚洲另类黄色| 欧美日韩伊人| 久久综合久久综合这里只有精品| 日韩一级免费| 亚洲欧洲一区二区在线观看| 久久综合狠狠| 中文一区在线| 伊人成人网在线看| 欧美久久99| 免费在线成人| 亚洲一区二区三区精品在线观看| 国产在线成人| 国产精品v欧美精品∨日韩| 欧美一区1区三区3区公司 | 蜜乳av另类精品一区二区| 在线欧美不卡| 韩日成人av| 午夜精彩国产免费不卡不顿大片| 亚洲一区二区三区四区中文| 中日韩男男gay无套| 在线日本成人| 极品尤物久久久av免费看| 香蕉av777xxx色综合一区| 亚洲一区二区三区色| 亚洲影音一区| 麻豆久久婷婷| 久久综合一区二区三区| 欧美在线一二三区| 午夜精品一区二区三区四区| 亚洲女人av| 国产日韩精品久久| 久久国产高清| 久久综合影音| 亚洲午夜一区| 一本色道久久综合亚洲二区三区| 国产亚洲毛片| 美女久久一区| 看欧美日韩国产| 国产一区在线免费观看| 在线欧美福利| 亚洲欧美激情诱惑| 亚洲免费大片| 久久综合福利| 雨宫琴音一区二区在线| 亚洲视屏一区| 亚洲一区图片| 狠狠色狠狠色综合人人| 亚洲人成免费| 性感少妇一区| 韩日成人在线| 国产亚洲福利| 欧美精品二区三区四区免费看视频| 国产精品对白刺激久久久| 亚洲国产免费看| 国产欧美二区| 欧美亚洲免费高清在线观看| 好看的av在线不卡观看| 亚洲日本无吗高清不卡| 中文有码久久| 国产主播一区| 久久久久久一区| 在线不卡视频| 欧美福利视频| 亚洲欧美卡通另类91av| 韩日在线一区| 久久精品五月| 亚洲一区三区视频在线观看| 乱人伦精品视频在线观看| 欧美另类视频| 亚洲精品综合| 久久影院亚洲| 亚洲一区日韩在线| 日韩亚洲视频在线| 在线观看欧美一区| 影音先锋久久久| 在线观看福利一区| 欧美视频不卡| 久久久噜噜噜久久狠狠50岁| 国产精品永久| 一区二区三区四区五区精品视频| 国内精品久久国产| 黄色亚洲大片免费在线观看| 欧美午夜a级限制福利片| 欧美福利网址| 欧美区高清在线| 99视频精品| 亚洲天堂偷拍| 欧美日韩一区二区视频在线观看 | 国产欧美91| 亚洲一级一区| 国产精品美女黄网| 国产日韩欧美三级| 亚洲午夜91| 久久综合中文色婷婷| 欧美精品1区| 久久久久高清| 国产伦精品一区二区三区视频黑人| 国产一区免费视频| 亚洲免费激情| 在线免费观看欧美| 黄色亚洲免费| 国语精品中文字幕| 亚洲欧洲日本mm| 国内精品99| 国语自产精品视频在线看8查询8| 久久亚洲风情| 在线播放豆国产99亚洲| 国产精品hd| 国产在线欧美日韩| 亚洲小说欧美另类婷婷| 亚洲精品一级| 亚洲天堂偷拍| 亚洲高清二区| 国产精品v欧美精品v日韩| 亚洲人人精品| 在线午夜精品| 一区二区精品| 一本色道久久综合一区| 久久精品一二三区| 亚洲午夜精品久久| 夜夜精品视频| 一区二区三区三区在线| 国产一区成人| 欧美日韩在线大尺度| 欧美日韩综合网| 欧美日韩一区二区国产| 亚洲国产日本| 久久中文在线| 亚洲视频精品| 中日韩在线视频| 久久久国产亚洲精品| 最新国产乱人伦偷精品免费网站| 99精品99| 久久精品盗摄| 亚洲午夜在线观看| 久久久久国产精品午夜一区| 久久三级视频| 欧美日韩在线观看一区二区三区| 今天的高清视频免费播放成人| 1024日韩| 99视频一区| 久久婷婷麻豆| 亚洲人成久久| 欧美精品一区二区视频| 亚洲一区二区动漫| 国产伦精品一区二区三区视频孕妇| 香蕉精品999视频一区二区| 欧美日韩三级电影在线| 久久一二三四| 最新日韩欧美| 欧美成人国产| 国产欧美日韩在线播放 | 亚洲激情网址| 欧美ab在线视频| 亚洲少妇一区| 国产亚洲一区在线| 影音先锋久久精品| 午夜国产一区| 亚洲欧美高清| 亚洲福利免费| 欧美精品aa| 性欧美暴力猛交另类hd| 亚洲欧美日韩国产一区| 伊人色综合久久天天五月婷| 久久久久se| 亚洲永久字幕| 午夜宅男久久久| 一区二区三区欧美成人| 亚洲视屏一区| 香蕉成人久久| 老色鬼久久亚洲一区二区| 狠狠色综合网站久久久久久久| 欧美中文字幕| 日韩视频在线一区二区三区| 夜夜嗨av一区二区三区网站四季av| 欧美福利专区| 欧美永久精品| 亚洲小说欧美另类婷婷| 欧美久久久久久久| 欧美成人蜜桃| 老妇喷水一区二区三区| 性欧美videos另类喷潮| 国产欧美一区二区色老头| 影音先锋国产精品| 国产精品久久九九| 中文精品视频| 亚洲一区二区伦理| 久久一二三四| 欧美在线网站| 欧美国产精品| 国产精品大片| 国产日韩1区| 国产乱码精品| 久久一区二区三区av| 亚洲高清资源综合久久精品| 性欧美videos另类喷潮| 久久激情一区| 欧美私人啪啪vps| 国产伦一区二区三区色一情| 国产精品一区二区a| 久久久精品性| 国内自拍一区| 久久亚裔精品欧美| 亚洲午夜一级| 国产亚洲欧美一区二区三区| 欧美不卡一区| 永久域名在线精品| 中文在线一区| 亚洲欧美日韩精品综合在线观看| 国产综合自拍| 国产三级精品在线不卡| 久久一区欧美| 国产精品久久久久久久免费软件 | 夜夜嗨一区二区| 美女精品在线| 亚洲性人人天天夜夜摸| 欧美成熟视频| 亚洲精品一区二区三区蜜桃久| 国产精品美女| 国产视频一区在线观看一区免费| 欧美黄污视频| 国产亚洲一区在线播放| 午夜精品一区二区在线观看| 先锋亚洲精品| 黄色精品免费| 国产乱人伦精品一区二区| 18成人免费观看视频| 久久久久久久久久久久久久一区| 国语精品中文字幕| 999亚洲国产精| 亚洲国产精品毛片| 久久五月激情| 国产午夜精品在线| 国产亚洲毛片在线| 好看的日韩av电影| 老色鬼久久亚洲一区二区| 久久久精品动漫| 一区二区三区四区五区精品| 欧美国产综合视频| 国产精品一区二区三区四区五区| 欧美理论在线| 久久精品国产第一区二区三区最新章节 | 亚洲一区二区三区在线观看视频 | 国产欧美日韩一区二区三区| 亚洲精品国产日韩| 国产精品va| 久久久久久色| 亚洲欧美亚洲| 久久香蕉精品| 欧美中日韩免费视频| 欧美在线视频二区| 久久天堂成人| 久久综合九色99| 国产一区二区无遮挡| 午夜精品久久99蜜桃的功能介绍| 午夜在线一区二区| 国产伦精品一区二区三区照片91| 亚洲精品一二| 欧美国产综合视频| 国产日韩免费| 国产精品久久一区二区三区| 一区二区三区欧美在线| 欧美精品尤物在线| 欧美精品二区三区四区免费看视频| 久久精品日韩| 久久精品国产综合精品| 久久精品中文字幕一区二区三区| 久久激情久久| 欧美另类专区| 国内久久视频| 狠狠入ady亚洲精品| 好吊视频一区二区三区四区 | 性娇小13――14欧美| 国产精品五区| 久久www成人_看片免费不卡| 欧美日韩一区二区三| 久久激情婷婷| 欧美女激情福利| 亚洲一区观看| 欧美成人综合一区| 亚洲午夜精品久久| 久久蜜桃精品| 国产一区二区三区四区老人| 欧美日韩另类丝袜其他| 国产精品视频福利| 久久亚洲国产精品一区二区| 久久精品毛片| 亚洲毛片av| 久久久www| 国产精品s色| 日韩视频中文| 久久久综合网| 国产伦精品一区| 国模吧视频一区| 国产精品日本| 99热精品在线| 欧美日一区二区三区在线观看国产免| 在线不卡欧美|