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

別再被序列化搞懵了!用人話告訴你 C++ 里 JSON 和 ProtoBuf 到底咋玩

開發(fā)
今天咱們來聊聊一個聽起來很高大上,但其實超級實用的話題——C++序列化。

今天咱們來聊聊一個聽起來很高大上,但其實超級實用的話題——C++序列化。

先別慌,我知道你現(xiàn)在腦子里可能有好幾個問題:

  • 序列化是個啥玩意兒?
  • JSON不是前端的東西嗎?
  • ProtoBuf又是什么鬼?
  • 它們倆誰更厲害?

別著急,今天我就用最接地氣的話給你掰扯明白。保證看完之后,你不僅知道這些是什么,還能上手寫代碼!

一、序列化到底是啥?先來個生活化的理解

想象一下,你要給遠方的朋友寄一個玩具汽車。你能直接把汽車扔進郵筒嗎?當然不行!你得先把它拆開,放進盒子里,貼上標簽,這樣郵遞員才能送到朋友那里。朋友收到后,再按照說明書把汽車重新組裝起來。

這個過程就是序列化!

  • 拆車裝盒 = 序列化(把內(nèi)存中的對象轉(zhuǎn)換成可傳輸?shù)母袷剑?/li>
  • 重新組裝 = 反序列化(把傳輸格式還原成內(nèi)存中的對象)

在編程世界里,我們經(jīng)常需要:

  • 把數(shù)據(jù)存到文件里
  • 通過網(wǎng)絡發(fā)送數(shù)據(jù)
  • 在不同程序間傳遞信息

這時候就需要序列化了!因為內(nèi)存里的對象就像那個玩具汽車,不能直接"郵寄"。

二、JSON:網(wǎng)紅選手,人見人愛

1. JSON是什么?

JSON全稱是JavaScript Object Notation,但別被名字騙了,它早就不是 JavaScript 的專利了。現(xiàn)在幾乎所有編程語言都支持JSON,因為它有個超大的優(yōu)點:人類看得懂!

看看這個例子:

{
  "name": "張三",
  "age": 25,
  "city": "北京",
  "hobbies": ["游戲", "電影", "音樂"]
}

是不是一眼就看明白了?這就是JSON的魅力,連你奶奶都能看懂(好吧,可能有點夸張)。

22. C++怎么玩JSON?

C++本身不支持JSON,但有很多優(yōu)秀的庫。我推薦用nlohmann/json,因為它用起來就像喝水一樣簡單。

首先,咱們看看怎么把C++對象變成JSON:

#include <nlohmann/json.hpp>
#include <iostream>
#include <string>
#include <vector>

using json = nlohmann::json;
using namespace std;

// 定義一個人的結(jié)構(gòu)體
struct Person {
    string name;
    int age;
    string city;
    vector<string> hobbies;
};

int main() {
    // 創(chuàng)建一個人
    Person p = {"張三", 25, "北京", {"游戲", "電影", "音樂"}};
    
    // 序列化:把對象變成JSON
    json j;
    j["name"] = p.name;
    j["age"] = p.age;
    j["city"] = p.city;
    j["hobbies"] = p.hobbies;
    
    // 輸出JSON字符串
    cout << "序列化結(jié)果:" << endl;
    cout << j.dump(4) << endl;  // 4表示縮進4個空格,好看一些
    
    return 0;
}

// 編譯命令:g++ -o test test.cpp

運行結(jié)果:

序列化結(jié)果:
{
    "age": 25,
    "city": "北京",
    "hobbies": [
        "游戲",
        "電影",
        "音樂"
    ],
    "name": "張三"
}

再看看反序列化,把JSON變回對象:

#include <nlohmann/json.hpp>
#include <iostream>
#include <string>
#include <vector>

using json = nlohmann::json;
using namespace std;

struct Person {
    string name;
    int age;
    string city;
    vector<string> hobbies;
    
    // 方便輸出的函數(shù)
    void print() {
        cout << "姓名: " << name << endl;
        cout << "年齡: " << age << endl;
        cout << "城市: " << city << endl;
        cout << "愛好: ";
        for(const auto& hobby : hobbies) {
            cout << hobby << " ";
        }
        cout << endl;
    }
};

int main() {
    // 假設這是從網(wǎng)絡或文件讀取的JSON字符串
    string json_str = R"({
        "name": "李四",
        "age": 30,
        "city": "上海",
        "hobbies": ["讀書", "旅游", "攝影"]
    })";
    
    // 反序列化:把JSON變成對象
    json j = json::parse(json_str);
    
    Person p;
    p.name = j["name"].get<string>();           // 顯式轉(zhuǎn)換為string
    p.age = j["age"].get<int>();               // 顯式轉(zhuǎn)換為int
    p.city = j["city"].get<string>();          // 顯式轉(zhuǎn)換為string
    p.hobbies = j["hobbies"].get<vector<string>>(); // 顯式轉(zhuǎn)換為vector<string>
    
    cout << "反序列化結(jié)果:" << endl;
    p.print();
    
    return 0;
}

// 編譯命令:g++ -o test test.cpp

運行結(jié)果:

反序列化結(jié)果:
姓名: 李四
年齡: 30
城市: 上海
愛好: 讀書 旅游 攝影

3. JSON的優(yōu)缺點

優(yōu)點:

  • 人類可讀,調(diào)試超方便
  • 支持的語言多,幾乎通用
  • 語法簡單,學習成本低
  • Web開發(fā)的標配

缺點:

  • 體積比較大(因為要存儲字段名)
  • 解析速度相對較慢
  • 不支持二進制數(shù)據(jù)
  • 沒有數(shù)據(jù)類型驗證

三、ProtoBuf:性能怪獸,Google出品

1. ProtoBuf是個啥?

Protocol Buffers(簡稱ProtoBuf)是Google開發(fā)的序列化協(xié)議。如果說 JSON 是個顏值擔當,那 ProtoBuf 就是個實力派。它的特點就是:快!小!強!

但有個小缺點:人類看不懂。序列化后的數(shù)據(jù)是二進制的,就像這樣:

\x08\x96\x01\x12\x04\xE5\xBC\xA0\xE4\xB8\x89\x1A\x06\xE5\x8C\x97\xE4\xBA\xAC...

看懵了吧?這就是為什么它快的原因——計算機處理二進制比處理文本快多了。

2. ProtoBuf怎么用?

使用ProtoBuf需要先定義一個.proto文件,描述數(shù)據(jù)結(jié)構(gòu):

// person.proto
syntax = "proto3";

message Person {
    string name = 1;
    int32 age = 2;
    string city = 3;
    repeated string hobbies = 4;
}

然后用protoc編譯器生成C++代碼:

protoc --cpp_out=. person.proto

這會生成person.pb.h和person.pb.cc文件。

接下來就能在C++里用了:

#include <iostream>
#include <fstream>
#include "person.pb.h"

using namespace std;

int main() {
    // 創(chuàng)建Person對象
    Person person;
    person.set_name("王五");
    person.set_age(28);
    person.set_city("深圳");
    person.add_hobbies("編程");
    person.add_hobbies("健身");
    person.add_hobbies("美食");
    
    // 序列化到字符串
    string serialized_data;
    person.SerializeToString(&serialized_data);
    
    cout << "序列化完成,數(shù)據(jù)大小: " << serialized_data.size() << " 字節(jié)" << endl;
    
    // 模擬網(wǎng)絡傳輸或文件存儲...
    
    // 反序列化
    Person new_person;
    new_person.ParseFromString(serialized_data);
    
    cout << "反序列化結(jié)果:" << endl;
    cout << "姓名: " << new_person.name() << endl;
    cout << "年齡: " << new_person.age() << endl;
    cout << "城市: " << new_person.city() << endl;
    cout << "愛好: ";
    for(int i = 0; i < new_person.hobbies_size(); ++i) {
        cout << new_person.hobbies(i) << " ";
    }
    cout << endl;
    
    return 0;
}

// 編譯命令:g++ -o test test.cpp person.pb.cc -lprotobuf -pthread

運行結(jié)果:

序列化完成,數(shù)據(jù)大小: 31 字節(jié)
反序列化結(jié)果:
姓名: 王五
年齡: 28
城市: 深圳
愛好: 編程 健身 美食

3. ProtoBuf的優(yōu)缺點

優(yōu)點:

  • 體積超小,壓縮效果好
  • 序列化/反序列化速度飛快
  • 跨語言支持好
  • 有版本兼容性(向前向后兼容)
  • 自動生成代碼,減少出錯

缺點:

  • 人類不可讀,調(diào)試困難
  • 需要預先定義schema
  • 學習成本相對較高
  • 不支持動態(tài)結(jié)構(gòu)

四、性能大PK:數(shù)據(jù)說話

好了,說了這么多,到底誰更強?咱們用實際數(shù)據(jù)說話!

我做了個簡單的測試,用相同的數(shù)據(jù)結(jié)構(gòu),分別用 JSON 和 ProtoBuf 進行 1 萬次序列化和反序列化操作:

#include <chrono>
#include <iostream>
#include <nlohmann/json.hpp>
#include "person.pb.h"

using namespace std;
using namespace std::chrono;

struct TestResult {
    int serialize_time_ms;
    int deserialize_time_ms;
    size_t single_size;
    size_t total_size;
};

TestResult test_json() {
    const int iterations = 10000;
    TestResult result = {};
    
    // 測試數(shù)據(jù)
    nlohmann::json test_data = {
        {"name", "測試用戶名字比較長一些"},
        {"age", 25},
        {"city", "這是一個比較長的城市名稱"},
        {"hobbies", {"愛好1描述比較長", "愛好2描述比較長", "愛好3描述比較長"}}
    };
    
    // 序列化測試
    auto start = high_resolution_clock::now();
    vector<string> results;
    for(int i = 0; i < iterations; ++i) {
        results.push_back(test_data.dump());
    }
    auto end = high_resolution_clock::now();
    result.serialize_time_ms = duration_cast<milliseconds>(end - start).count();
    
    // 計算大小
    result.single_size = results[0].size();
    for(const auto& r : results) result.total_size += r.size();
    
    // 反序列化測試
    start = high_resolution_clock::now();
    for(const auto& data : results) {
        auto j = nlohmann::json::parse(data);
        // 模擬使用數(shù)據(jù)
        string name = j["name"];
    }
    end = high_resolution_clock::now();
    result.deserialize_time_ms = duration_cast<milliseconds>(end - start).count();
    
    return result;
}

TestResult test_protobuf() {
    const int iterations = 10000;
    TestResult result = {};
    
    // 序列化測試
    auto start = high_resolution_clock::now();
    vector<string> results;
    for(int i = 0; i < iterations; ++i) {
        Person person;
        person.set_name("測試用戶名字比較長一些");
        person.set_age(25);
        person.set_city("這是一個比較長的城市名稱");
        person.add_hobbies("愛好1描述比較長");
        person.add_hobbies("愛好2描述比較長");
        person.add_hobbies("愛好3描述比較長");
        
        string serialized;
        person.SerializeToString(&serialized);
        results.push_back(serialized);
    }
    auto end = high_resolution_clock::now();
    result.serialize_time_ms = duration_cast<milliseconds>(end - start).count();
    
    // 計算大小
    result.single_size = results[0].size();
    for(const auto& r : results) result.total_size += r.size();
    
    // 反序列化測試
    start = high_resolution_clock::now();
    for(const auto& data : results) {
        Person person;
        person.ParseFromString(data);
        // 模擬使用數(shù)據(jù)
        string name = person.name();
    }
    end = high_resolution_clock::now();
    result.deserialize_time_ms = duration_cast<milliseconds>(end - start).count();
    
    return result;
}

int main() {
    cout << "=== JSON vs ProtoBuf 性能大PK ===" << endl << endl;
    
    auto json_result = test_json();
    auto pb_result = test_protobuf();
    
    // 直觀對比輸出
    cout << "測試結(jié)果對比 (10000次操作)" << endl;
    cout << "┌──────────────┬─────────────┬─────────────┬──────────────┐" << endl;
    cout << "│    指標      │    JSON     │  ProtoBuf   │   ProtoBuf優(yōu)勢 │" << endl;
    cout << "├──────────────┼─────────────┼─────────────┼──────────────┤" << endl;
    
    printf("│ 序列化耗時   │ %8dms │ %8dms │   快 %.1fx倍   │\n", 
           json_result.serialize_time_ms, pb_result.serialize_time_ms,
           (float)json_result.serialize_time_ms / pb_result.serialize_time_ms);
    
    printf("│ 反序列化耗時 │ %8dms │ %8dms │   快 %.1fx倍   │\n",
           json_result.deserialize_time_ms, pb_result.deserialize_time_ms,
           (float)json_result.deserialize_time_ms / pb_result.deserialize_time_ms);
    
    printf("│ 單個對象大小 │ %8zu字節(jié)│ %8zu字節(jié)│ 小 %4.1f%%    │\n",
           json_result.single_size, pb_result.single_size,
           (float)(json_result.single_size - pb_result.single_size) * 100 / json_result.single_size);
    
    printf("│ 總數(shù)據(jù)大小   │ %7.1fMB │ %7.1fMB │ 小 %4.1f%%    │\n",
           json_result.total_size / 1024.0 / 1024.0,
           pb_result.total_size / 1024.0 / 1024.0,
           (float)(json_result.total_size - pb_result.total_size) * 100 / json_result.total_size);
    
    cout << "└──────────────┴─────────────┴─────────────┴──────────────┘" << endl;
    
    cout << "\n結(jié)論:ProtoBuf在所有指標上都完勝JSON!" << endl;
    cout << "如果傳輸10000個對象,ProtoBuf能節(jié)省 "
         << (json_result.total_size - pb_result.total_size) / 1024.0 / 1024.0
         << "MB 流量" << endl;
    
    return 0;
}

測試結(jié)果(在我的虛擬機上跑的):

g++ -o test test.cpp person.pb.cc -lprotobuf -pthread

=== JSON vs ProtoBuf 性能大PK ===

測試結(jié)果對比 (10000次操作)
┌──────────────┬─────────────┬─────────────┬──────────────┐
│    指標      │    JSON     │  ProtoBuf   │   ProtoBuf優(yōu)勢 │
├──────────────┼─────────────┼─────────────┼──────────────┤
│ 序列化耗時   │       22ms │        6ms │   快 3.7x倍   │
│ 反序列化耗時 │      135ms │        5ms │   快 27.0x倍   │
│ 單個對象大小 │      186字節(jié)│      147字節(jié)│ 小 21.0%    │
│ 總數(shù)據(jù)大小   │     1.8MB │     1.4MB │ 小 21.0%    │
└──────────────┴─────────────┴─────────────┴──────────────┘

結(jié)論:ProtoBuf在所有指標上都完勝JSON!
如果傳輸10000個對象,ProtoBuf能節(jié)省 0.371933MB 流量

?? 注意: 測試結(jié)果跟數(shù)據(jù)大小和數(shù)量有關(guān),數(shù)據(jù)越大、數(shù)量越多,ProtoBuf優(yōu)勢越明顯。建議用自己項目的真實數(shù)據(jù)測試一下!

五、實際應用場景:該選誰?

選JSON的情況:

  • Web開發(fā):前后端通信的標配
  • 配置文件:需要人工編輯的配置
  • API接口:特別是REST API
  • 調(diào)試頻繁:需要經(jīng)常查看數(shù)據(jù)內(nèi)容
  • 快速原型:開發(fā)初期,快速驗證想法

選ProtoBuf的情況:

  • 高性能要求:游戲、實時系統(tǒng)
  • 網(wǎng)絡帶寬有限:移動端應用
  • 大數(shù)據(jù)傳輸:微服務間通信
  • 短期/臨時存儲:緩存、消息隊列
  • 跨語言通信:不同語言的服務間通信

六、小結(jié):選擇建議

最后,給你一個選擇建議:

如果你是新手,建議先學JSON:

  • 上手簡單,出錯率低
  • 調(diào)試方便,看得見摸得著
  • 資料多,遇到問題容易解決

如果你追求性能,上ProtoBuf:

  • 速度快,體積小
  • 適合生產(chǎn)環(huán)境的高并發(fā)場景
  • 跨語言支持好

最理想的情況:兩個都會!

  • 不同項目用不同工具,根據(jù)需求選擇
  • 團隊內(nèi)部可以靈活應對各種技術(shù)需求
  • 面試和技術(shù)交流時更有底氣

寫在最后

序列化這個話題,說簡單也簡單,說復雜也復雜。關(guān)鍵是要理解它的本質(zhì):就是為了讓數(shù)據(jù)能夠"旅行"。

就像你出門旅行要打包行李一樣,程序里的數(shù)據(jù)要"旅行"也需要打包。JSON就像是透明的行李箱,你能看到里面裝了什么;ProtoBuf就像是壓縮袋,體積小但看不見內(nèi)容。

選擇哪個,取決于你的具體需求。不過記住一點:沒有銀彈,只有合適的工具。

希望這篇文章能幫你理清楚序列化這個概念。如果還有不明白的地方,歡迎在評論區(qū)留言,咱們一起討論!

記住:編程路上,我們都是學習者,一起加油! 

責任編輯:趙寧寧 來源: 跟著小康學編程
相關(guān)推薦

2025-07-04 09:19:54

2009-08-24 17:14:08

C#序列化

2009-08-06 11:16:25

C#序列化和反序列化

2025-06-17 10:00:00

函數(shù)重載函數(shù)重寫C++

2024-01-30 13:32:51

JSON反序列化序列化

2021-11-18 07:39:41

Json 序列化Vue

2009-08-25 14:24:36

C#序列化和反序列化

2009-07-29 13:39:02

JSON序列化和反序列ASP.NET AJA

2009-08-25 14:43:26

C#序列化和反序列化

2021-01-19 06:05:28

Python數(shù)據(jù)分析編程語言

2015-05-08 12:41:36

C++序列化反序列化庫Kapok

2013-03-11 13:55:03

JavaJSON

2011-05-18 15:20:13

XML

2011-06-01 15:05:02

序列化反序列化

2024-10-07 08:26:53

2011-06-01 14:50:48

2018-01-17 16:38:07

MSONJSON序列化

2009-06-14 22:01:27

Java對象序列化反序列化

2019-11-20 10:07:23

web安全PHP序列化反序列化

2022-08-06 08:41:18

序列化反序列化Hessian
點贊
收藏

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

亚洲午夜精品久久久中文影院av| 国产精品久久国产精品99gif| 亚洲最大视频网| 成人免费网站观看| 国产视频不卡一区| 91视频国产高清| 免费观看一区二区三区毛片| 青青草91久久久久久久久| 欧美一卡2卡三卡4卡5免费| 亚洲人成无码网站久久99热国产| 久蕉在线视频| 国产福利精品导航| 91精品国产91久久久久| 色婷婷国产精品免| 国产丝袜一区| 欧美高清dvd| 日韩精品视频一区二区在线观看| 精品自拍一区| 欧美国产精品一区二区三区| 国产美女99p| 国产情侣av在线| 免费日韩av片| 午夜精品www| 国产suv精品一区二区68| 亚洲人成伊人成综合图片| 欧美一区永久视频免费观看| 九色porny91| a在线视频v视频| 亚洲欧美一区二区三区国产精品| 蜜桃网站成人| 天天操天天干天天爱| 九九视频精品免费| 国产精品视频白浆免费视频| 天天干天天干天天干天天| 亚洲一级一区| 欧美日韩福利视频| 日本黄色免费片| 欧美日韩激情| 亚洲欧美日韩在线高清直播| 手机免费看av片| 在线精品视频一区| 日韩精品自拍偷拍| 成人在线短视频| 亚洲伦理久久| 在线观看91精品国产麻豆| 嫩草影院国产精品| 福利一区和二区| 欧美中文字幕一区二区三区亚洲| 91精品91久久久中77777老牛 | 久久影院中文字幕| 久草福利资源在线| 首页亚洲中字| 日韩精品免费综合视频在线播放| 韩国三级hd两男一女| 9l视频自拍九色9l视频成人| 日韩一区二区三区av| av在线免费观看不卡| 精品国产亚洲一区二区三区大结局 | 四虎精品在线观看| 在线成人av影院| 婷婷中文字幕在线观看| 精品999日本久久久影院| 欧美一区二区三区影视| 农村末发育av片一区二区| 成人资源在线| 精品亚洲aⅴ在线观看| 午夜理伦三级做爰电影| 国产一区二区三区四区| 中文字幕精品久久| 99久久婷婷国产综合| 欧美激情偷拍| 国内精品小视频| 探花视频在线观看| 免费在线观看日韩欧美| 成人免费网站在线看| www.国产黄色| 久久婷婷久久一区二区三区| 日本一区视频在线观看| 天天在线视频色| 亚洲一区二区三区自拍| 欧美牲交a欧美牲交aⅴ免费下载| 中文.日本.精品| 欧美精品欧美精品系列| 久久久久久久久久影视| 亚洲第一福利社区| www.日韩系列| 日韩av电影网| 久久精品国产亚洲高清剧情介绍| 成人午夜电影在线播放| 天堂在线免费av| 国产精品传媒在线| 欧美不卡在线播放| 成人黄色免费观看| 亚洲成人av片在线观看| 正在播放国产对白害羞| 国产尤物精品| 国产精品久久婷婷六月丁香| 国产性色av一区二区| 亚洲欧美va天堂人熟伦| 欧美精品国产一区| 国产成人黄色av| 亚洲第一免费视频| 国产清纯白嫩初高生在线观看91 | 精产国品自在线www| 亚洲aⅴ怡春院| xxww在线观看| 偷窥自拍亚洲色图精选| 久久中文精品视频| 中文字幕手机在线视频| 成人国产精品视频| 中文字幕人成一区| 成人黄色免费短视频| 日韩精品一区二区三区中文不卡| 国产三级黄色片| 韩日在线一区| 91精品中文在线| 福利在线视频导航| 黑人巨大精品欧美一区二区一视频 | 国产一区三区三区| 色综合久久av| 成人免费网站视频| 精品不卡在线视频| 最近2019中文字幕第三页视频| 99九九99九九九99九他书对| 亚洲资源网站| 国内精品小视频在线观看| 99精品在线看| 亚洲欧洲精品一区二区三区不卡| 激情综合网婷婷| 琪琪久久久久日韩精品| 久久久久久成人| www.黄色国产| 亚洲精品高清在线| 日韩av片专区| 色综合久久一区二区三区| 日本精品性网站在线观看| 色呦呦免费观看| 亚洲电影一级黄| 4438x全国最大成人| 久久综合av| 国产精品一区二区三区成人| 噜噜噜噜噜在线视频| 黑人巨大精品欧美一区二区一视频 | 久操手机在线视频| 亚洲码欧美码一区二区三区| 久久精品成人欧美大片| 亚洲专区第一页| 中文字幕欧美三区| 999在线精品视频| 五月婷婷六月综合| 91精品天堂| 肉肉视频在线观看| 亚洲第一精品自拍| 人妻丰满熟妇av无码区| 国产亚洲欧美在线| 999精彩视频| 天天综合一区| 成人在线资源网址| 激情国产在线| 亚洲午夜精品久久久久久久久久久久| 亚洲综合成人av| 中文字幕一区二区三区在线播放| 中文字幕国产高清| 国色天香一区二区| 久久艹中文字幕| 成人日韩精品| 日韩在线观看精品| 成人高潮片免费视频| 午夜不卡av在线| 国产熟妇久久777777| 蜜桃av一区二区| h无码动漫在线观看| 欧美a一欧美| 国产精品美乳一区二区免费| 二区三区在线观看| 亚洲精品国产美女| 中文字幕观看视频| 亚洲一区二区黄色| 免费看黄色av| 国产黄色精品网站| 国产成人在线免费看| 色综合蜜月久久综合网| 国产精品jizz视频| 伊人久久精品一区二区三区| 深夜福利国产精品| 人妻中文字幕一区| 精品视频在线视频| 国产盗摄一区二区三区在线| 91视频国产观看| 色综合久久久888| 91中文字幕永久在线| 麻豆91小视频| 乱妇乱女熟妇熟女网站| 天天天综合网| 免费精品视频一区| 国产精品亚洲综合在线观看| 5278欧美一区二区三区| 69视频在线| 亚洲国产精彩中文乱码av在线播放| 波多野结衣电车痴汉| 亚洲精品你懂的| 最近日本中文字幕| 国产一区二区免费视频| 日韩精品一区二区三区不卡| 在线观看日韩| 欧美亚州在线观看| 在线精品自拍| 成人深夜直播免费观看| 综合毛片免费视频| 欧美激情喷水视频| 自拍视频在线网| 亚洲免费影视第一页| 国产suv一区二区| 在线一区二区三区做爰视频网站| 青娱乐国产在线| 欧美激情综合五月色丁香小说| 欧美性生交xxxxx| 国产自产2019最新不卡| 国产裸体免费无遮挡| 99国产精品久久久久久久| 日日噜噜夜夜狠狠久久丁香五月| 精品国产美女| 麻豆传媒一区二区| 久久影视三级福利片| 91久久精品视频| 日本免费一区二区三区等视频| 国产91精品黑色丝袜高跟鞋| 在线观看中文字幕的网站| 搡老女人一区二区三区视频tv| 精品一二三区视频| 亚洲美女性视频| 神马久久精品| 亚洲高清在线观看| 国 产 黄 色 大 片| 欧美一级理论片| 国产精品国产精品国产专区| 精品1区2区3区| 一区二区三区麻豆| 色妞www精品视频| 日韩一级在线视频| 一本大道久久精品懂色aⅴ| 日本一级一片免费视频| 亚洲va国产天堂va久久en| 久久久国产成人| 一区二区高清免费观看影视大全| 日韩三级在线观看视频| 亚洲日穴在线视频| 三级全黄做爰视频| 亚洲蜜桃精久久久久久久| 日韩一级片大全| 亚洲精品亚洲人成人网| 久久久久久久久久久97| 亚洲图片有声小说| 日韩精品久久久久久久| 精品久久久久久中文字幕一区奶水| 日韩毛片在线视频| 精品国产91久久久| 日日骚av一区二区| 欧美日韩免费观看一区二区三区| 中文有码在线播放| 制服丝袜亚洲网站| 亚洲AV无码精品国产| 日韩欧美精品在线| 婷婷开心激情网| 国产亚洲精品美女| 国产乱色在线观看| 国内精品小视频在线观看| 波多野结衣亚洲一二三| 国产裸体写真av一区二区| 成人激情久久| 国产欧美日韩一区二区三区| 欧美日韩一区二区三区四区不卡| 欧美一区二区三区四区夜夜大片| 欧美丝袜激情| 日韩成人午夜影院| 国产日韩欧美一区在线| mm1313亚洲国产精品无码试看| 蜜桃在线一区二区三区| 亚洲欧美一区二区三区不卡| 高清免费成人av| 中文字幕在线看高清电影| 一区在线播放视频| 国产精品第九页| 欧洲精品一区二区三区在线观看| 亚洲资源在线播放| 亚洲电影第1页| h网站视频在线观看| 欧美精品亚州精品| 国产精品高清乱码在线观看| 成人黄色免费片| 福利片一区二区| 亚洲一区二区高清视频| 在线国产日韩| 九九热精品在线播放| 成人高清免费观看| 貂蝉被到爽流白浆在线观看| 亚洲国产日日夜夜| 在线观看黄色网| 欧美精品一区二区三区高清aⅴ | 国产情侣小视频| 欧美岛国在线观看| 91亚洲精选| 欧美一二三视频| 精品精品视频| 欧美一区二区视频在线| 国产精品mv在线观看| 国产精品区在线| 99久久国产免费看| 草视频在线观看| 欧美亚洲综合网| 天堂在线中文| 欧美极品美女视频网站在线观看免费| 日本欧美一区| 免费一区二区三区在在线视频| 亚洲精品久久| 天天综合网久久| 久久精品男人天堂av| 久久夜靖品2区| 日韩精品一区二区三区视频播放 | 网站一区二区三区| 2020日本不卡一区二区视频| 久久久久亚洲天堂| 91精品国产一区二区人妖| 中文字幕在线免费| 国产成人一区二区在线| 一呦二呦三呦国产精品| 欧美日韩视频免费| 国产精品123| 黄色片在线观看网站| 欧美日韩精品久久久| 国产69久久| 日本最新高清不卡中文字幕| 另类图片第一页| 人人妻人人做人人爽| 国产iv一区二区三区| 顶臀精品视频www| 欧美浪妇xxxx高跟鞋交| 午夜小视频在线| 国产欧洲精品视频| 91亚洲国产高清| 天堂av2020| 亚洲女性喷水在线观看一区| 国产精品亚洲lv粉色| 久久九九免费视频| 999色成人| 99久久久精品视频| 不卡视频一二三| 久久精品性爱视频| 亚洲国产女人aaa毛片在线| av资源在线看片| 久久综合九九| 久久亚洲电影| 俄罗斯毛片基地| 欧美夫妻性生活| 性网站在线观看| 国产一区二区精品免费| 99精品国产福利在线观看免费 | 国产精品欧美综合亚洲| 最新69国产成人精品视频免费| 992tv国产精品成人影院| 一区二区视频国产| 国产精品影视在线| 久久精品一级片| 日韩精品高清在线| 桃子视频成人app| 综合一区中文字幕| 国产福利视频一区二区三区| 国产成人无码精品亚洲| 亚洲摸下面视频| 婷婷激情成人| 日韩 欧美 视频| 久久综合给合久久狠狠狠97色69| 蜜臀尤物一区二区三区直播| 色吧影院999| 国产三级精品三级在线观看国产| 丰满人妻中伦妇伦精品app| 国产欧美日韩在线看| 国产女人18毛片18精品| 久久久久这里只有精品| 国产欧美日韩影院| 中文字幕日韩久久| 精品欧美aⅴ在线网站| 国产精品久久久久久久龚玥菲| 成人午夜黄色影院| 99视频一区| 黑人と日本人の交わりビデオ| 日韩一本二本av| 欧美电影网址| 福利在线小视频| 国产三区在线成人av| 国产黄色大片网站| 国产成人久久久| 亚洲第一黄网| 中文字幕欧美激情极品| 精品国产一区a| 日韩成人综合网| 91视频 -- 69xx| 亚洲精品视频在线看| 男人天堂网在线观看| 成人黄动漫网站免费|