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

OpenHarmony輕量系統數據持久化—簡單KV存儲&文件IO

系統 OpenHarmony
本篇介紹一下如何基于輕量系統進行數據的持久化,包括簡單的KV存儲和文件的IO,希望能夠幫助到各位!

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

前言

本篇來聊聊數據持久化,這個東西呢,在應用開發很重要,我對SSM,Vue2 + 3,也有了解,做過相關的Web開發(自己做著玩的,半拉子工程),以后也打算學習一些OpenHarmony北向相關的應用開發。(想南北通吃)

數據持久化簡介

在我們之前玩Hi3861開發板的時候啊,每次重啟,點擊復位鍵,都會以一個全新的效果展現在我們面前,很顯然,這樣的案例都是沒有做數據持久化的,我們的案例運行時的數據僅僅存在于計算機的內存中,當程序關閉(重啟),內存就會釋放或者重新分配,原有的數據就會丟失。常見的數據持久化的方式其實大家都見過,可能沒有意識到,比如最早的時候有光盤,現在每個電腦都有SSD硬盤,還有網盤,我個人也是非常喜歡網盤的,數據可以進行網絡層面的持久化,不占本地空間,需要什么文件,再去獲取,特別適合收藏學習文件然后放進去吃灰。數據庫也是,我們開發的APP,用戶進行注冊,用戶的信息就會永久地存放在數據庫中而不會丟失了。簡而言之,就是以一種手段,把程序運行過程中的數據保存起來。當然,安全性也是需要考慮到的,數據是敏感的,但這里不久細說了。

OpenHarmony數據持久化

強大的OpenHarmony當然也是有數據持久化的,在公共子系統集中,還是看一下OpenHarmony官網的架構圖:

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

公共子系統及中,有可以幫助我們實現數據持久化的API,下面會具體說。

kv_store庫

kv_store.h跟ohos_init.h在一起,看庫名也知道了,key - value 的形式存儲數據,是一種常見的存儲形式,在數據結構Map,以及JSON文件等都是KV鍵值對的存儲形式。下面來看看他的API有什么。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

API

UtilsGetValue:

int UtilsGetValue(const char* key, char* value, unsigned int len);

從文件系統或cache中讀取指定鍵的值

參數解釋:

  • key:鍵;小寫字母、數字、下劃線、點(.);最大32字節(包括字符串結束符)。
  • value:用于存儲值的緩沖區;輸出參數。
  • len:值的長度。

返回值:

  • 操作成功返回值的長度;參數錯誤返回-9;其他情況返回-1;如果值是從cache中讀取的,則返回0。

UtilsSetValue:

int UtilsSetValue(const char* key, const char* value);

在文件系統或cache中添加或更新鍵值

參數解釋:

  • key:鍵;小寫字母、數字、下劃線、點(.);最大32字節(包括字符串結束符)。
  • value:要添加或更新的值;最大128字節(包括字符串結束符)。

返回值:

  • 操作成功返回0;參數錯誤返回-9;其他情況返回-1

UtilsDeleteValue:

int UtilsDeleteValue(const char* key);

在文件系統或cache中刪除鍵值

參數解釋:

  • key:鍵;小寫字母、數字、下劃線、點(.);最大32字節(包括字符串結束符)。

返回值:

  • 操作成功返回0;參數錯誤返回-9;其他情況返回-1

ClearKVCache:

int ClearKVCache(void);

清除緩存中的所有鍵值對

參數解釋:無

返回值:成功時返回0,否則返回-1

案例:鍵值存儲

任務:

將一個數據持久化,“key” - > “value”。

最終效果:

在完成案例后,第一次啟動開發板,通過“key”作為鍵去過去值,獲取失敗,因為什么都沒存儲嘛,然后就會獲得一個小于0的返回值,表示獲取失敗了,我們就可以進行鍵值對的添加,添加完成后,在后續的斷電重啟開發板中,無論啟動多少次,都可以通過“key”去獲取我們的值。

創建如下目錄:

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

編寫源碼:

kv_demo.c:

#include <stdio.h>
#include "ohos_init.h"
// kv_store 庫
#include "kv_store.h"

void kvTest(void){
    // 創建我們的鍵
    const char *key = "key";
    // 創建我們的值,這個值就是一個指針,如果能夠獲取成功,就會通過指針獲取到相應的值。
    char value[32] = {0};
    // 通過 鍵 去讀取我們的 值
    int resGet = UtilsGetValue(key, value, 32);
    // resGet < 0 說明讀取失敗,我們沒有 “key” 的數據 
    if(resGet < 0){
        // 輸出提示信息
        printf("[KVTEST] failed to read the key!\r\n");
        // 添加鍵值對數據,進行數據持久化
        int resSet = UtilsSetValue(key, "value");
        // 輸出提示信息
        if(resSet == 0){
            printf("[KVTEST] success to store!\r\n");
        } else {
            printf("[KVTEST] failed to store!\r\n");
        }
    } else {
        // 如果讀取成功,則直接輸出鍵值數據
        printf("[KVTEST] success to read the key, key = %s, value = %s.\r\n", key, value);
    }
}

APP_FEATURE_INIT(kvTest);

BUILD.gn:

static_library("kvTest"){
    sources = [
        "kv_demo.c"
    ]
    include_dirs = [
        "http://commonlibrary/utils_lite/include",
    ]
}

修改app下的BUILD.gn:

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

編譯燒錄串口調試:

當我們第一次進行串口調試的時候,會觀察到,我們寫的提示信息,先讀取失敗,再進行數據存儲。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

再次重啟開發板,可以觀察到,讀取成功了。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

斷開電源,即將開發板與主機斷開連接,再次連接,啟動開發板,可以看到仍然能夠成功讀取。數據持久化成功。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

報錯分享

在編譯的時候也是出現了一個很奇怪的bug。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

嗯…我也是一頭霧水不知道怎么辦,感覺像是環境問題,卻又不知道具體怎么改,最后我去到了kv_store的接口里,修改了一下他的BUILD.gn文件。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

可能是posix下的文件有些問題吧,然后我修改了他的編譯文件,讓他去編譯hal下的kv_store.c 最后就是這么個意思,不管什么情況都去編譯hal下的文件。等效于下圖所示:

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

雖然不太清楚什么問題,但是似乎換一個文件編譯,整個編譯就成功通過了,運行起來的結果也和預期一樣,沒有bug出現。都是kv_store.c文件,可能也是為了適配不同的需求吧才分了兩個出來吧,如果有知道這個是什么問題的話,也可以評論區留言,我也來學習一下,或者你也出現了跟我一樣的bug,可以試一試按照我的方法進行修改,修改后親測是沒有問題的。

utils_file庫

數據持久化,我們更多的還是傾向于數據庫,文件,這種簡單的kv入門就可以了。文件的操作則更為重要,下面介紹utils_file庫,它可以幫助我們對文件進行IO操作,實現數據持久化。

API

UtilsFileOpen:

int UtilsFileOpen(const char* path, int oflag, int mode);

參數解釋:

  • path:指定要打開或創建的文件的路徑。
  • oflag:指定文件的打開模式。支持的模式有:
  • O_RDONLY_FS:以只讀模式打開文件。
  • O_WRONLY_FS:以只寫模式打開文件。
  • O_RDWR_FS:以讀寫模式打開文件。
  • O_CREAT_FS:如果文件不存在,則創建文件。
  • O_EXCL_FS:與O_CREAT_FS一起使用,如果文件已存在,則打開失敗。
  • O_TRUNC_FS:如果文件存在,將其截斷為空文件。
  • O_APPEND_FS:以追加模式打開文件,在文件末尾寫入數據。 這些模式可以組合使用,每個模式之間使用按位或運算符"|"進行標識。
  • mode:用于函數兼容性,該參數在任何情況下均不起作用。

返回值:

如果文件成功打開或創建,將返回文件描述符,否則返回-1。

UtilsFileClose:

int UtilsFileClose(int fd);

參數解釋:

fd:指定要關閉的文件的文件描述符。

返回值:

如果文件成功關閉,函數將返回0;否則返回-1。

UtilsFileRead:

int UtilsFileRead(int fd, char* buf, unsigned int len);

參數解釋:

  • fd:表示要讀取的文件的文件描述符(file descriptor)。
  • buf:指向存儲讀取數據的緩沖區的指針。這是一個輸出參數,函數將讀取的數據寫入到該緩沖區中。
  • len:表示要讀取的數據的長度。

返回值:

  • 如果成功讀取數據,函數將返回實際讀取的字節數。
  • 如果讀取操作失敗,函數將返回-1。

UtilsFileWrite:

int UtilsFileWrite(int fd, const char* buf, unsigned int len);

參數解釋:

  • fd:表示要寫入數據的文件的文件描述符(file descriptor)。
  • buf:指向要寫入的數據的指針。
  • len:表示要寫入的數據的長度。

返回值:

  • 如果成功寫入數據,函數將返回實際寫入的字節數。
  • 如果寫入操作失敗,函數將返回-1。

UtilsFileDelete:

int UtilsFileDelete(const char* path);

參數解釋:

  • path:表示要刪除的文件的路徑。

返回值:

  • 如果成功刪除文件,函數將返回0。
  • 如果刪除文件操作失敗,函數將返回-1。

UtilsFileStat:

int UtilsFileStat(const char* path, unsigned int* fileSize);

參數解釋:

  • path:表示文件名。
  • fileSize:表示文件大小的變量指針。這是一個輸出參數,用于存儲獲取到的文件大小。

返回值:

  • 如果成功獲取文件大小,函數將返回0。
  • 如果獲取文件大小操作失敗,函數將返回-1。

案例:文件IO

預期效果:

打開指定的文件讀取數據庫的用戶名和密碼,如果文件不存在就先創建文件,再寫入數據。在之后的訪問中,均可成功打開數據讀取數據。跟剛剛的kv流程其實很像。

創建如下目錄:

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

編寫源碼:

file.c:

#include <stdio.h>
#include "ohos_init.h"
// 文件IO庫
#include "utils_file.h"

void fileTest(void){
    // 定義文件名
    char fileName[] = "MyFileName";
    // 定義文件大小,用于獲取文件大小
    int fileSize = 0;
    
    // 統計文件數據
    int resGetFile = UtilsFileStat(fileName, &fileSize);
    
    // 文件不存在時,打開失敗,返回值為 -1
    if(resGetFile == -1){
        // 輸出提示信息
        printf("[FILETEST] failed to open the file, file is not exits!\r\n");
        
        // 創建文件,并寫入數據
        // 定義數據
        char data[] = "root,password";
        // 打開文件
        int resOpenFile = UtilsFileOpen(fileName, O_WRONLY_FS | O_CREAT_FS | O_TRUNC_FS, 0);
        // 寫入數據
        int resWriteFilw = UtilsFileWrite(resOpenFile, data, strlen(data));
        // 關閉文件
        int resCloseFile = UtilsFileClose(resOpenFile);
        
        // 輸出提示信息
        printf("[FILETEST] success to create a file!\r\n");
    } else {
        // 輸出提示信息
        printf("[FILETEST] the file is exist!\r\n");
        
        // 文件存在,讀取文件內容
        int resOpenFile = UtilsFileOpen(fileName, O_CREAT_FS, 0);
        // 定義數據,用于讀取文件數據
        char getData[64];
        int resLen = UtilsFileRead(resOpenFile, getData, 13);
        
        // 輸出讀取的數據
        printf("[FILETEST] get the data = %s.\r\n", getData);
    }
}

APP_FEATURE_INIT(fileTest);

BUILD.gn:

static_library("file"){
    sources = [
        "file.c"
    ]
    include_dirs = [
        "http://commonlibrary/utils_lite/include",
    ]
}

編寫app下的BUILD.gn文件:

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

編譯燒錄調試:

首先第一次啟動開發板會提示我們文件不存在,并且創建好文件。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

此后重啟開發板,都會正常讀取到數據。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

斷開開發板與主機,再次連接,啟動開發板也可以讀取到文件數據。

OpenHarmony輕量系統數據持久化[簡單KV存儲&文件IO]-開源基礎軟件社區

結束語

本篇介紹了一下如何基于輕量系統進行數據的持久化,包括簡單的KV存儲和文件的IO,希望能夠幫助到各位,感謝支持!

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2022-04-15 14:31:02

鴻蒙操作系統

2022-01-21 21:22:24

OpenHarmon操作系統鴻蒙

2022-04-15 11:46:09

輕量系統解耦鴻蒙操作系統

2022-02-09 19:45:41

MQTTOpenHarmon鴻蒙

2024-01-05 15:32:47

鴻蒙SNTP智慧時鐘

2023-04-03 15:39:31

2022-02-10 15:07:10

云平臺OpenHarmon系統開發

2023-03-24 14:39:17

鴻蒙系統開發

2022-02-08 15:21:59

Hi3861開發鴻蒙

2023-12-29 08:19:52

應用程序開發者數據庫

2021-08-20 11:00:04

Redis攜程數據庫

2022-01-24 18:43:20

OpenHarmon操作系統鴻蒙

2022-02-09 19:31:41

Hi3861OpenHarmon鴻蒙

2022-02-09 19:25:49

Hi3861WiFi操作鴻蒙

2022-01-24 18:35:56

OpenHarmon鴻蒙操作系統

2023-05-06 15:41:00

人體傳感器數據鴻蒙

2023-04-24 15:11:51

系統開發鴻蒙

2017-09-21 08:16:33

數據存儲環境

2022-06-09 14:40:14

系統移植鴻蒙

2023-07-28 15:32:26

鴻蒙操作系統
點贊
收藏

51CTO技術棧公眾號

91高潮在线观看| 日韩欧美成人午夜| 亚洲一区二区三区精品在线观看| 中文字幕在线视频免费| 欧美黄污视频| 亚洲精品一区中文| 在线观看视频你懂得| 9999精品成人免费毛片在线看| wwww国产精品欧美| 亚洲在线免费视频| 欧美一级淫片免费视频黄| 久久精品影视| 亚洲深夜福利网站| www.美色吧.com| jvid一区二区三区| 红桃av永久久久| 自拍另类欧美| 国产一二三在线观看| 国产99一区视频免费| 国产精品扒开腿爽爽爽视频| 精品无码久久久久| 97视频精品| 亚洲精品一区二区三区不| gogo亚洲国模私拍人体| 另类一区二区| 色爱区综合激月婷婷| 国产欧美日韩小视频| 欧美精品日韩少妇| 国产日韩精品一区二区三区| 国产一区免费视频| 亚洲精品成人电影| 狠狠色丁香婷综合久久| 国产精品视频最多的网站| 成年人视频在线免费看| 狠狠综合久久| 欧美大秀在线观看| 欧美人禽zoz0强交| 天天做综合网| 中文字幕亚洲一区| 无码人妻aⅴ一区二区三区69岛| 99精品国产一区二区三区2021| 7777精品久久久大香线蕉| 黄色一级免费大片| 怡红院成人在线| 色老头久久综合| 日本久久久精品视频| 国产资源在线观看入口av| 亚洲福利视频一区二区| 日韩中文字幕亚洲精品欧美| 久草资源在线| 1000精品久久久久久久久| 亚洲国产精品一区二区第一页 | 成人免费看视频网站| 亚洲不卡一区二区三区| 成人免费在线网| av资源在线| 亚洲成人手机在线| 秋霞无码一区二区| 青青青免费在线视频| 精品日本美女福利在线观看| 狠狠97人人婷婷五月| 交100部在线观看| 欧美日韩日本国产| 情侣黄网站免费看| 久久91导航| 欧美日韩视频在线一区二区 | 成人免费视频app| 国产精品亚洲综合| 全部免费毛片在线播放网站| 久久久久免费观看| 手机在线观看国产精品| 天天综合视频在线观看| 亚洲激情图片一区| 免费拍拍拍网站| 欧美最新精品| 欧美日韩一区二区欧美激情| 亚洲色图欧美自拍| 欧美xxxx在线| 中文字幕亚洲一区| 久久久久人妻一区精品色欧美| 9国产精品视频| 国产激情视频一区| 99热这里只有精品9| 99久久久久久| 一本色道久久综合亚洲二区三区| www在线免费观看视频| 亚洲高清免费观看高清完整版在线观看| 又粗又黑又大的吊av| 成人国产在线| 日韩三级免费观看| 色哟哟精品观看| 欧美在线91| 日韩美女写真福利在线观看| 国产乱码精品一区二区| av综合在线播放| 一本久久a久久精品vr综合| 福利在线导航136| 欧美亚洲一区二区在线| 亚洲欧美日韩色| 久久国产精品亚洲人一区二区三区| 欧美激情精品久久久久久黑人| 香蕉影院在线观看| 国产v日产∨综合v精品视频| 日韩精品久久一区| 免费看电影在线| 欧美午夜在线观看| 国产又粗又长又爽| 91成人网在线观看| 国产精品6699| 亚洲 欧美 激情 另类| 日韩美女啊v在线免费观看| 国产最新免费视频| av在线亚洲色图| 最新的欧美黄色| 天堂网中文字幕| 国产精品1区2区3区在线观看| 欧美日韩国产精品一卡| 成年网站在线视频网站| 欧美精品一二三| 丰满少妇高潮一区二区| 最新国产乱人伦偷精品免费网站| 成人h猎奇视频网站| 高清国产福利在线观看| 欧美日韩一二三四五区| 日本泡妞xxxx免费视频软件| 欧美a级成人淫片免费看| 国产999精品视频| 亚欧洲精品视频| 午夜激情一区二区三区| 95视频在线观看| 欧美日韩岛国| 亚洲va码欧洲m码| 亚洲s色大片| 欧美亚洲动漫精品| 熟女少妇内射日韩亚洲| 久久亚洲综合| 免费h精品视频在线播放| 天堂а√在线最新版中文在线| 精品欧美一区二区久久| 久草成人在线视频| 国产高清无密码一区二区三区| 欧美亚洲视频一区| 国产精品日本一区二区不卡视频| 色噜噜狠狠色综合网图区| 中文字幕激情视频| 国产精品午夜在线观看| 国产一区二区在线免费播放| 欧美亚洲高清| 国产欧美 在线欧美| 麻豆视频在线观看免费网站| 欧美日韩黄色一区二区| 国产91在线播放九色| 精品一区二区在线免费观看| 中日韩在线视频| 成人久久精品| 欧美激情极品视频| 特黄aaaaaaaaa真人毛片| 偷拍亚洲欧洲综合| 美国黄色a级片| 久久综合中文| 伊人精品久久久久7777| 欧美日本三级| 久久免费在线观看| 欧美老女人性开放| 91福利在线导航| 日本女人性生活视频| 国产原创一区二区| 9色porny| 欧美日韩播放| 国产这里只有精品| 色黄网站在线观看| 亚洲精品国产精品久久清纯直播| 综合网在线观看| 国产精品不卡一区二区三区| 欧美69精品久久久久久不卡| 亚洲国产片色| 日本日本精品二区免费| 麻豆国产一区| 欧美一级高清免费播放| 91在线看片| 日韩欧美一区二区在线视频| 久久亚洲精品国产| 国产精品毛片a∨一区二区三区| 在线观看网站黄| 国产免费成人| 一区二区三区四区欧美| 北条麻妃一区二区三区在线观看| 日本高清视频精品| 国产成人无吗| 亚洲少妇中文在线| 亚洲乱熟女一区二区| 在线观看亚洲一区| a级片在线观看免费| 久久亚洲精华国产精华液| 欧美日韩久久婷婷| 午夜一区在线| 国产激情片在线观看| 国产一区二区三区探花| 91一区二区三区| 欧美性片在线观看| 欧美激情性做爰免费视频| jizz在线观看| 亚洲免费电影一区| www.久久伊人| 欧美精品精品一区| 亚洲不卡在线视频| 亚洲妇女屁股眼交7| 日本一级特级毛片视频| 国产拍揄自揄精品视频麻豆| 黄色性视频网站| 国产精品一级片| 视色视频在线观看| 久久久精品网| 国产黄页在线观看| 精品91视频| 亚洲av综合色区| 日韩一区三区| 日韩久久久久久久久久久久久| 国产伦精品一区二区三区在线播放| 国产精品小说在线| 播放一区二区| 全球成人中文在线| 国产伦理精品| 97久久精品国产| 白白色在线观看| 久久久久久国产精品美女| 在线看福利影| 欧美成人精品h版在线观看| 欧美日韩视频在线播放| 99久久er热在这里只有精品66| 成年人免费大片| 亚洲一区二区三区免费在线观看| 欧美在线观看黄| 亚洲精品久久| 中文字幕日韩一区二区三区| gogogo高清在线观看一区二区| 看欧美日韩国产| 农村少妇一区二区三区四区五区| 国产精品久久久久久久久婷婷 | 久草福利资源在线| 国产亚洲成年网址在线观看| 久操视频免费看| 91片黄在线观看| 亚洲国产欧美视频| 2022国产精品视频| 久久av无码精品人妻系列试探| 91原创在线视频| 国产特黄级aaaaa片免| 91免费看片在线观看| 亚洲天堂成人av| 2022国产精品视频| 精品无码国产污污污免费网站| 久久久久久一二三区| 91视频免费在观看| 1024国产精品| 欧美日韩综合一区二区| 亚洲第一综合色| 成人午夜视频精品一区| 欧美色另类天堂2015| 国产精品va无码一区二区三区| 在线看一区二区| 国产又粗又黄又爽的视频| 欧美一区二区三区成人| 男人天堂av网| 亚洲精品中文字幕女同| av在线电影院| 欧美另类第一页| av岛国在线| 国产精品999999| 91精品麻豆| 国外成人在线视频网站| 国产videos久久| 亚洲第一页在线视频| 国产一区日韩一区| 国产l精品国产亚洲区久久| 蜜桃在线一区二区三区| 中文写幕一区二区三区免费观成熟| 成人av在线播放网站| caopeng视频| 成人免费在线视频| 日韩欧美亚洲国产| 欧美制服丝袜第一页| 国产高清不卡视频| 日韩精品中文字| 日韩欧美小视频| 午夜精品福利在线观看| 黑人一区二区三区| 国产精品区一区二区三在线播放| 一道本一区二区三区| 熟女视频一区二区三区| 亚洲制服少妇| 91丝袜超薄交口足| 久久精品在线免费观看| 九九热精品免费视频| 色94色欧美sute亚洲线路二| 性一交一乱一色一视频麻豆| 亚洲女人被黑人巨大进入| 成人福利片网站| 国产成人av网址| 爱高潮www亚洲精品| 一区二区国产日产| 国产亚洲综合精品| 日本一区二区三区在线免费观看| 久久伊人中文字幕| 欧美日韩精品亚洲精品| 欧美午夜片在线观看| 天天干天天插天天操| 久久国产精品视频| 国产精品99精品一区二区三区∴| 成人性色av| 日韩理论电影大全| 国产成人久久777777| 成年人国产精品| 青青草激情视频| 欧美日本一道本在线视频| 青青久在线视频| 91国产一区在线| 51社区在线成人免费视频| 黄色www在线观看| 日韩成人伦理电影在线观看| avtt香蕉久久| 亚洲国产成人va在线观看天堂| 国产精品久久久久久久成人午夜| 一区二区福利视频| 国产精品扒开腿做爽爽爽视频软件| 国产一区二区不卡视频在线观看 | 欧美亚洲另类色图| 成人午夜激情在线| 欧美色图亚洲天堂| 欧美一级二级三级蜜桃| 日本中文字幕在线视频| 国产精品视频不卡| 欧美日韩久久精品| 色哟哟精品视频| 国产农村妇女毛片精品久久麻豆 | 欧美二区三区的天堂| 番号集在线观看| 国产脚交av在线一区二区| 国产伦精品一区二区三区视频| 国产中文字幕在线免费观看| www.激情成人| 久久久久久91亚洲精品中文字幕| 亚洲激情视频在线| 国产中文在线播放| 农村寡妇一区二区三区| 西西裸体人体做爰大胆久久久| aaaaa级少妇高潮大片免费看| 欧美视频中文字幕在线| 天堂在线视频观看| 欧美一级bbbbb性bbbb喷潮片| 猛男gaygay欧美视频| 成人观看免费完整观看| 久久蜜桃一区二区| 久久久久精彩视频| 日韩在线免费av| 国产专区精品| 婷婷无套内射影院| 久久综合色综合88| 欧美另类高清videos的特点| 丝袜一区二区三区| 深夜福利一区二区三区| 国产在线精品91| 久久久久久久久99精品| 最新中文字幕免费| 久青草国产97香蕉在线视频| 日本一区二区三区播放| www插插插无码视频网站| 久久一夜天堂av一区二区三区| 无码人妻精品一区二区三区不卡 | 男女性高潮免费网站| 精品美女一区二区| 一根才成人网| 中文字幕在线亚洲精品| 成人精品鲁一区一区二区| 青青国产在线观看| 综合网日日天干夜夜久久| 国产精品视频一区视频二区| 亚洲国产成人精品无码区99| 国产午夜精品一区二区三区嫩草| 一区二区视频网| 久久久久久久久91| 欧美精品久久久久久| 无码国产精品一区二区高潮| 欧美三级免费观看| a级网站在线播放| 欧美中日韩一区二区三区| 国产一区二区在线观看免费| 日韩熟女精品一区二区三区| 在线视频精品一| 黑人久久a级毛片免费观看| 青青草精品视频在线观看| 一区二区三区四区av| 免费动漫网站在线观看| 91久久久一线二线三线品牌| 日韩影院在线观看| 麻豆国产尤物av尤物在线观看| 亚洲丝袜在线视频| 国产成人一二片| 国产乱叫456| 日本韩国精品一区二区在线观看|