日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

protobuf message定义_巧用 Protobuf 反射来优化代码,拒做 PB Boy

發(fā)布時(shí)間:2025/3/15 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 protobuf message定义_巧用 Protobuf 反射来优化代码,拒做 PB Boy 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:iversonluo,騰訊 WXG 應(yīng)用開發(fā)工程師

有些后臺(tái)同學(xué)將自己稱為 SQL Boy,因?yàn)樨?fù)責(zé)的業(yè)務(wù)主要是對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查。經(jīng)常和 Proto 打交道的同學(xué),是不是也會(huì)叫自己 PB Boy? 因?yàn)榇蟛糠止ぷ饕彩菍?duì) Proto 進(jìn)行 SET 和 GET。面對(duì)大量重復(fù)且丑陋的代碼,除了宏是否有更好的解決方法?本文結(jié)合 PB 反射給出了我在運(yùn)營(yíng)系統(tǒng)開發(fā)工作中的一些代碼優(yōu)化實(shí)踐。

一、背景

Protobuf(下文稱為 PB)是一種常見的數(shù)據(jù)序列化方式,常常用于后臺(tái)微服務(wù)之間傳遞數(shù)據(jù)。

筆者目前主要的工作都是和表單打交道,而表單一般涉及到大量的數(shù)據(jù)輸入,表單調(diào)用方一般將數(shù)據(jù)格式化為 JSON 后傳給 CGI,而 CGI 和后臺(tái)服務(wù)、后臺(tái)服務(wù)之前會(huì)用 PB 傳遞數(shù)據(jù)。

在寫代碼時(shí),經(jīng)常會(huì)遇到一些丑陋的、圈復(fù)雜度較高、較難維護(hù)的關(guān)于 PB 的使用代碼:

  • 對(duì)字段的必填校驗(yàn)硬編碼在代碼中:如果需要變更校驗(yàn)規(guī)則,則需要修改代碼;
  • 一個(gè)字段一個(gè) if 校驗(yàn),圈復(fù)雜度較高:對(duì)傳進(jìn)來(lái)的字段每個(gè)字段都進(jìn)行多種規(guī)則校驗(yàn),例如長(zhǎng)度,XSS,正則校驗(yàn)等,一個(gè)校驗(yàn)一個(gè) if 代碼,代碼圈復(fù)雜度很高;
  • 想要獲取 PB 中所有的非空字段,形成一個(gè) map<string,string>,需要大量的 if 判斷和重復(fù)代碼;
  • 在后臺(tái)服務(wù)間傳遞數(shù)據(jù),由于模塊由不同的人開發(fā),導(dǎo)致相同字段的命名不一樣,從一個(gè) PB 中挑選一部分內(nèi)容到另外一個(gè) PB 中,需要大量的 GET 和 SET 代碼。
  • 是否可以有方法解決上面的幾個(gè)問題呢?

    答案是使用PB 反射。

    二、PB 反射的使用

    反射的一般定義如下:計(jì)算機(jī)程序在運(yùn)行時(shí)可以訪問、檢測(cè)和修改它本身狀態(tài)或行為。

    protobuf 的類圖如下:

    從上圖我們可以看出,Message 類繼承于 MessageLite 類,業(yè)務(wù)一般自定義的 Person 類繼承于 Message 類。

    Descriptor 類和 Reflection 類都聚合于 Message,是弱依賴的關(guān)系。

    類名類描述

    所以一般使用 PB 反射的步驟如下:

    1. 通過Message獲取單個(gè)字段的FieldDescriptor 2. 通過Message獲取其Reflection 3. 通過Reflection來(lái)操作FieldDescriptor,從而動(dòng)態(tài)獲取或修改單個(gè)字段

    獲取 Descript、Reflection 的函數(shù):

    const google::protobuf::Reflection* pReflection = pMessage->GetReflection(); const google::protobuf::Descriptor* pDescriptor = pMessage->GetDescriptor();

    獲取 FieldDescriptor 的函數(shù):

    const google::protobuf::FieldDescriptor * pFieldDesc = pDescriptor->FindFieldByName(id);

    下面分別介紹上面的三個(gè)類。

    2.1 類 Descriptor 介紹

    類 Descriptor 主要是對(duì) Message 進(jìn)行描述,包括 message 的名字、所有字段的描述、原始 proto 文件內(nèi)容等,下面介紹該類中包含的函數(shù)。

    首先是獲取自身信息的函數(shù):

    const std::string & name() const; // 獲取message自身名字 int field_count() const; // 獲取該message中有多少字段 const FileDescriptor* file() const; // The .proto file in which this message type was defined. Never nullptr.

    在類 Descriptor 中,可以通過如下方法獲取類 FieldDescriptor:

    const FieldDescriptor* field(int index) const; // 根據(jù)定義順序索引獲取,即從0開始到最大定義的條目 const FieldDescriptor* FindFieldByNumber(int number) const; // 根據(jù)定義的message里面的順序值獲取(option string name=3,3即為number) const FieldDescriptor* FindFieldByName(const string& name) const; // 根據(jù)field name獲取 const FieldDescriptor* Descriptor::FindFieldByLowercaseName(const std::string & lowercase_name)const; // 根據(jù)小寫的field name獲取 const FieldDescriptor* Descriptor::FindFieldByCamelcaseName(const std::string & camelcase_name) const; // 根據(jù)駝峰的field name獲取

    其中FieldDescriptor* field(int index)和FieldDescriptor* FindFieldByNumber(int number)這個(gè)函數(shù)中index和number的含義是不一樣的,如下所示:

    message Student{optional string name = 1;optional string gender = 2;optional string phone = 5; }

    其中字段phone,其index為 5,但是其number為 2。

    同時(shí)還有一個(gè)我們?cè)谡{(diào)試中經(jīng)常使用的函數(shù):

    std::string Descriptor::DebugString(); // 將message轉(zhuǎn)化成人可以識(shí)別出的string信息

    2.2 類 FieldDescriptor 介紹

    類 FieldDescriptor 的作用主要是對(duì) Message 中單個(gè)字段進(jìn)行描述,包括字段名、字段屬性、原始的 field 字段等。

    其獲取獲取自身信息的函數(shù):

    const std::string & name() const; // Name of this field within the message. const std::string & lowercase_name() const; // Same as name() except converted to lower-case. const std::string & camelcase_name() const; // Same as name() except converted to camel-case. CppType cpp_type() const; //C++ type of this field.

    其中cpp_type()函數(shù)是來(lái)獲取該字段是什么類型的,在 PB 中,類型的類目如下:

    enum FieldDescriptor::Type {TYPE_DOUBLE = = 1,TYPE_FLOAT = = 2,TYPE_INT64 = = 3,TYPE_UINT64 = = 4,TYPE_INT32 = = 5,TYPE_FIXED64 = = 6,TYPE_FIXED32 = = 7,TYPE_BOOL = = 8,TYPE_STRING = = 9,TYPE_GROUP = = 10,TYPE_MESSAGE = = 11,TYPE_BYTES = = 12,TYPE_UINT32 = = 13,TYPE_ENUM = = 14,TYPE_SFIXED32 = = 15,TYPE_SFIXED64 = = 16,TYPE_SINT32 = = 17,TYPE_SINT64 = = 18,MAX_TYPE = = 18 }

    類 FieldDescriptor 中還可以判斷字段是否是必填,還是選填或者重復(fù):

    bool is_required() const; // 判斷字段是否是必填 bool is_optional() const; // 判斷字段是否是選填 bool is_repeated() const; // 判斷字段是否是重復(fù)值

    類 FieldDescriptor 中還可以獲取單個(gè)字段的index或者tag:

    int number() const; // Declared tag number. int index() const; //Index of this field within the message's field array, or the file or extension scope's extensions array.

    類 FieldDescriptor 中還有一個(gè)支持?jǐn)U展的函數(shù),函數(shù)如下:

    // Get the FieldOptions for this field. This includes things listed in // square brackets after the field definition. E.g., the field: // optional string text = 1 [ctype=CORD]; // has the "ctype" option set. Allowed options are defined by FieldOptions in // descriptor.proto, and any available extensions of that message. const FieldOptions & FieldDescriptor::options() const

    具體關(guān)于該函數(shù)的講解在 2.4 章。

    2.3 類 Reflection 介紹

    該類提供了動(dòng)態(tài)讀、寫 message 中單個(gè)字段能力。

    讀單個(gè)字段的函數(shù)如下:

    // 這里由于篇幅,省略了一部分代碼,后面的代碼部分也有省略,有需要的可以自行閱讀源碼。 int32 GetInt32(const Message & message, const FieldDescriptor * field) conststd::string GetString(const Message & message, const FieldDescriptor * field) constconst Message & GetMessage(const Message & message, const FieldDescriptor * field, MessageFactory * factory = nullptr) const // 讀取單個(gè)message字段

    寫單個(gè)字段的函數(shù)如下:

    void SetInt32(Message * message, const FieldDescriptor * field, int32 value) constvoid SetString(Message * message, const FieldDescriptor * field, std::string value) const

    獲取重復(fù)字段的函數(shù)如下:

    int32 GetRepeatedInt32(const Message & message, const FieldDescriptor * field, int index) conststd::string GetRepeatedString(const Message & message, const FieldDescriptor * field, int index) constconst Message & GetRepeatedMessage(const Message & message, const FieldDescriptor * field, int index) const

    寫重復(fù)字段的函數(shù)如下:

    void SetRepeatedInt32(Message * message, const FieldDescriptor * field, int index, int32 value) constvoid SetRepeatedString(Message * message, const FieldDescriptor * field, int index, std::string value) constvoid SetRepeatedEnumValue(Message * message, const FieldDescriptor * field, int index, int value) const // Set an enum field's value with an integer rather than EnumValueDescriptor. more..

    新增重復(fù)字段設(shè)計(jì)如下:

    void AddInt32(Message * message, const FieldDescriptor * field, int32 value) constvoid AddString(Message * message, const FieldDescriptor * field, std::string value) const

    另外有一個(gè)較為重要的函數(shù),其可以批量獲取字段描述并將其放置到 vector 中:

    void Reflection::ListFields(const Message & message, std::vector< const FieldDescriptor * > * output) const

    2.4 options 介紹

    PB 允許在 proto 中自定義選項(xiàng)并使用選項(xiàng)。在定義 message 的字段時(shí),不僅可以定義字段內(nèi)容,還可以設(shè)置字段的屬性,比如校驗(yàn)規(guī)則,簡(jiǎn)介等,結(jié)合反射,可以實(shí)現(xiàn)豐富豐富多彩的應(yīng)用。

    下面來(lái)介紹下:

    import "google/protobuf/descriptor.proto";extend google.protobuf.FieldOptions {optional uint32 attr_id = 50000; //字段idoptional bool is_need_encrypt = 50001 [default = false]; // 字段是否加密,0代表不加密,1代表加密optional string naming_conventions1 = 50002; // 商戶組命名規(guī)范optional uint32 length_min = 50003 [default = 0]; // 字段最小長(zhǎng)度optional uint32 length_max = 50004 [default = 1024]; // 字段最大長(zhǎng)度optional string regex = 50005; // 該字段的正則表達(dá)式 }message SubMerchantInfo {// 商戶名稱optional string merchant_name = 1 [(attr_id) = 1,(is_encrypt) = 0,(naming_conventions1) = "company_name",(length_min) = 1,(length_max) = 80,(regex.field_rules) = "[a-zA-Z0-9]"];

    使用方法如下:

    #include <google/protobuf/descriptor.h> #include <google/protobuf/message.h>std::string strRegex = FieldDescriptor->options().GetExtension(regex);uint32 dwLengthMinp = FieldDescriptor->options().GetExtension(length_min);bool bIsNeedEncrypt = FieldDescriptor->options().GetExtension(is_need_encrypt);

    三、PB 反射的進(jìn)階使用

    第二章給出了 PB 反射,以及具體的使用細(xì)節(jié),在本章中,作者結(jié)合自己日常的代碼,給出 PB 反射一些使用場(chǎng)景。并且以開發(fā)一個(gè)表單系統(tǒng)為例,講一下 PB 反射在開發(fā)表單系統(tǒng)中的進(jìn)階使用。

    3.1 獲取 PB 中所有非空字段

    在業(yè)務(wù)中,經(jīng)常會(huì)需要獲取某個(gè) Message 中所有非空字段,形成一個(gè) map<string,string>,使用 PB 反射寫法如下:

    #include "pb_util.h"#include <sstream>namespace comm_tools { int PbToMap(const google::protobuf::Message &message,std::map<std::string, std::string> &out) { #define CASE_FIELD_TYPE(cpptype, method, valuetype) case google::protobuf::FieldDescriptor::CPPTYPE_##cpptype: { valuetype value = reflection->Get##method(message, field); std::ostringstream oss; oss << value; out[field->name()] = oss.str(); break; }#define CASE_FIELD_TYPE_ENUM() case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: { int value = reflection->GetEnum(message, field)->number(); std::ostringstream oss; oss << value; out[field->name()] = oss.str(); break; }#define CASE_FIELD_TYPE_STRING() case google::protobuf::FieldDescriptor::CPPTYPE_STRING: { std::string value = reflection->GetString(message, field); out[field->name()] = value; break; }const google::protobuf::Descriptor *descriptor = message.GetDescriptor();const google::protobuf::Reflection *reflection = message.GetReflection();for (int i = 0; i < descriptor->field_count(); i++) {const google::protobuf::FieldDescriptor *field = descriptor->field(i);bool has_field = reflection->HasField(message, field);if (has_field) {if (field->is_repeated()) {return -1; // 不支持轉(zhuǎn)換repeated字段}const std::string &field_name = field->name();switch (field->cpp_type()) {CASE_FIELD_TYPE(INT32, Int32, int);CASE_FIELD_TYPE(UINT32, UInt32, uint32_t);CASE_FIELD_TYPE(FLOAT, Float, float);CASE_FIELD_TYPE(DOUBLE, Double, double);CASE_FIELD_TYPE(BOOL, Bool, bool);CASE_FIELD_TYPE(INT64, Int64, int64_t);CASE_FIELD_TYPE(UINT64, UInt64, uint64_t);CASE_FIELD_TYPE_ENUM();CASE_FIELD_TYPE_STRING();default:return -1; // 其他異常類型}}}return 0; } } // namespace comm_tools

    通過上面的代碼,如果需要在 proto 中增加字段,不再需要修改原來(lái)的代碼。

    3.2 將字段校驗(yàn)規(guī)則放置在 Proto 中

    后臺(tái)服務(wù)接收到前端傳來(lái)的字段后,會(huì)對(duì)字段進(jìn)行校驗(yàn),比如必填校驗(yàn),長(zhǎng)度校驗(yàn),正則校驗(yàn),xss 校驗(yàn)等,這些規(guī)則我們常常會(huì)硬編碼在代碼中。但是隨著后臺(tái)字段的增加,校驗(yàn)規(guī)則代碼會(huì)變得越來(lái)越多,越來(lái)越難維護(hù)。如果我們把字段的定義和校驗(yàn)規(guī)則和定義放在一起,這樣是不是更好的維護(hù)?

    示例 proto 如下:

    syntax = "proto2";package student;import "google/protobuf/descriptor.proto";message FieldRule{optional uint32 length_min = 1; // 字段最小長(zhǎng)度optional uint32 id = 2; // 字段映射id }extend google.protobuf.FieldOptions{optional FieldRule field_rule = 50000; }message Student{optional string name =1 [(field_rule).length_min = 5, (field_rule).id = 1];optional string email = 2 [(field_rule).length_min = 10, (field_rule).id = 2]; }

    然后我們自己實(shí)現(xiàn) xss 校驗(yàn),必填校驗(yàn),長(zhǎng)度校驗(yàn),選項(xiàng)校驗(yàn)等代碼。

    示例校驗(yàn)最小長(zhǎng)度代碼如下:

    #include <iostream> #include "student.pb.h" #include <google/protobuf/descriptor.h> #include <google/protobuf/message.h>using namespace std; using namespace student; using namespace google::protobuf;bool minLengthCheck(const std::string &strValue, const uint32_t &dwLenthMin) {return strValue.size() < dwLenthMin; }int allCheck(const google::protobuf::Message &oMessage){const auto *poReflect = oMessage.GetReflection();vector<const FieldDescriptor *> vecFD;poReflect->ListFields(oMessage, &vecFD);for (const auto &poFiled : vecFD) {const auto &oFieldRule = poFiled->options().GetExtension(student::field_rule);if (poFiled->cpp_type() == google::protobuf::FieldDescriptor::CPPTYPE_STRING && !poFiled->is_repeated()) {// 類型是string并且選項(xiàng)非重復(fù)的才會(huì)校驗(yàn)字段長(zhǎng)度類型const std::string strValue = poReflect->GetString(oMessage, poFiled);const std::string strName = poFiled->name();if (oFieldRule.has_length_min()) {// 有才進(jìn)行校驗(yàn),沒有則不進(jìn)行校驗(yàn)if (minLengthCheck(strValue, oFieldRule.length_min())) {cout << "the length of " << strName << " is lower than " << oFieldRule.length_min()<<endl;} else {cout << "check min lenth pass"<<endl;}}}}return 0; }int main() {Student oStudent1;oStudent1.set_name("xiao");Student oStudent2;oStudent2.set_name("xiaowei");allCheck(oStudent1);allCheck(oStudent2);return 0; }

    如上,如果需要校驗(yàn)最大長(zhǎng)度,必填,xss 校驗(yàn),只需要使用工廠模式,擴(kuò)展代碼即可。

    新增一個(gè)字段或者變更某個(gè)字段的校驗(yàn)規(guī)則,只需要修改 Proto,不需要修改代碼,從而防止因變更代碼導(dǎo)致錯(cuò)誤。

    3.3 基于 PB 反射的前端頁(yè)面自動(dòng)生成方案

    在我們常見的運(yùn)營(yíng)系統(tǒng)中,經(jīng)常會(huì)涉及到各種各樣的表單頁(yè)面。在前后端交互方面,當(dāng)需要增加字段或者變更字段的校驗(yàn)規(guī)則時(shí),需要面臨如下問題:

    • 前端:針對(duì)新字段編寫 html 代碼,同時(shí)需要修改前端頁(yè)面;
    • 后臺(tái):針對(duì)每個(gè)字段做接收,并進(jìn)行校驗(yàn)。

    每增加或變更一個(gè)字段,我們都需要在前端和后臺(tái)進(jìn)行修改,工作量大,同時(shí)頻繁變更容易導(dǎo)致錯(cuò)誤。有什么方法可以解決這些問題嗎?答案是使用 PB 的反射能力。

    通過獲取 Message 中每個(gè)字段的描述然后返回給前端,前端根據(jù)字段描述來(lái)展示頁(yè)面,并且對(duì)字段進(jìn)行校驗(yàn)。同時(shí)通過這種方式,前后端可以共享一份表單校驗(yàn)規(guī)則。

    在使用上述方案之后,當(dāng)我們需要增加字段或者變更字段的校驗(yàn)規(guī)則時(shí),只需要在 Proto 中修改字段,大大節(jié)省了工作量,同時(shí)避免了因發(fā)布帶來(lái)的風(fēng)險(xiǎn)問題。

    3.4 通用存儲(chǔ)系統(tǒng)

    在運(yùn)營(yíng)系統(tǒng)中,前端輸入字段,傳入到后臺(tái),后臺(tái)校驗(yàn)字段之后,一般還需要把數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。

    對(duì)于某些運(yùn)營(yíng)系統(tǒng)來(lái)說,其希望能夠快速接入一些數(shù)據(jù),傳統(tǒng)開發(fā)常常會(huì)面臨如下問題:

    • 如何在不增加或變更表結(jié)構(gòu)的基礎(chǔ)上,如何快速接入數(shù)據(jù)?
    • 如何零開發(fā)實(shí)現(xiàn)頻繁添加字段、新增渠道等需求?
    • 如何兼容不同業(yè)務(wù)、不同數(shù)據(jù)協(xié)議(比如 PB 中的不同 message)?

    答案是使用 PB 的反射,使得有結(jié)構(gòu)的數(shù)據(jù)轉(zhuǎn)換為非結(jié)構(gòu)的數(shù)據(jù),然后存儲(chǔ)到非關(guān)系型數(shù)據(jù)庫(kù)(在微信支付側(cè)一般存入到 table kv)中。

    以 3.2 節(jié)中的 Proto 為例,舉例如下,學(xué)生類中定義了兩個(gè)字段,name 和 email 字段,原始信息為:

    Student oStudent; oStudent.set_name("xiaowei"); oStudent.set_email("test@tencent.com");

    通過 PB 的反射,可以轉(zhuǎn)化為平鋪的結(jié)構(gòu):

    [{"id":"1","value":"xiaowei"},{"id":"2","value":"test@tencent.com"}]

    轉(zhuǎn)化為平鋪結(jié)構(gòu)后,可以快速存入到數(shù)據(jù)庫(kù)中。如果現(xiàn)在學(xué)生信息里需要增加一個(gè)字段 address,則不需要修改表結(jié)構(gòu),從而完成存儲(chǔ)動(dòng)作。利用 PB 反射,可以完成有結(jié)構(gòu)數(shù)據(jù)和無(wú)結(jié)構(gòu)數(shù)據(jù)之間的轉(zhuǎn)換,達(dá)到存儲(chǔ)和業(yè)務(wù)解耦的特性。

    四、總結(jié)

    本文首先給出了 PB 的反射函數(shù),然后再結(jié)合自己平時(shí)負(fù)責(zé)的工作,給出了 PB 的進(jìn)階使用。通過對(duì) PB 的進(jìn)階使用,可以大大提高開發(fā)和維護(hù)的效率,同時(shí)提升代碼的優(yōu)雅度。有需要更進(jìn)一步研究 PB 的,可以閱讀其源代碼,不得不說,通過閱讀優(yōu)秀代碼能夠極大的促進(jìn)編程能力。

    需要注意的是 PB 反射需要依賴大量計(jì)算資源,在密集使用 PB 的場(chǎng)景下,需要注意 CPU 的使用情況。

    加入我們

    微信支付境外支付團(tuán)隊(duì)在不斷追求卓越的路上尋找同路人:

    崗位詳情 | 騰訊招聘

    更多干貨盡在騰訊技術(shù),官方微信交流群已建立,交流討論可加:Journeylife1900(備注騰訊技術(shù)) 。

    總結(jié)

    以上是生活随笔為你收集整理的protobuf message定义_巧用 Protobuf 反射来优化代码,拒做 PB Boy的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    国内精品久久久久 | av在线日韩 | 97超碰人人模人人人爽人人爱 | 九九爱免费视频 | 成人a视频 | 国产人成免费视频 | 69精品人人人人 | 亚洲丁香久久久 | av一二三区 | av天天色 | 一级精品视频在线观看宜春院 | 久久精品在线 | 国产麻豆精品一区 | 一区免费视频 | 午夜精品av | av高清网站在线观看 | 免费电影播放 | 中文字幕亚洲在线观看 | 黄色资源在线观看 | 伊人www22综合色 | 精品国产欧美一区二区三区不卡 | 日韩av在线小说 | 国产一级电影 | 91自拍视频在线观看 | 国产精品美女视频网站 | 91激情视频在线观看 | 天天操天天干天天摸 | 国产中文视 | 91精品影视 | 久久99精品久久久久婷婷 | 最新国产在线视频 | 日本在线观看一区二区 | 成人免费大片黄在线播放 | 国产精品一区二区三区99 | 丁香五婷| www.狠狠操.com | 久久久免费观看完整版 | 国产视频首页 | 亚洲一级久久 | 天天视频色 | 99在线精品视频 | 日韩精品2区 | 日韩精品一区二区在线观看视频 | 日韩av资源在线观看 | 麻豆视频观看 | 就要干b| 狂野欧美激情性xxxx欧美 | 色88久久| 国产极品尤物在线 | 久久久久久久久久久成人 | 久久久资源网 | 波多野结衣最新 | 探花视频免费在线观看 | 奇米网网址 | 国产淫片免费看 | 色99色| 99精品视频免费在线观看 | 91人人澡 | 99热在线免费观看 | 国产日韩一区在线 | 狠狠狠综合 | 日韩在线观看视频一区二区三区 | 亚洲精品一区二区三区高潮 | 欧美巨大荫蒂茸毛毛人妖 | 中文字幕av网站 | 国产精品久久久久久久久久久久冷 | 国产资源站 | 久久99久久99精品免费看小说 | 一区电影| 日韩高清一区二区 | 日韩www在线| 免费观看日韩 | 欧美日韩国产精品久久 | 成人动漫一区二区 | www.一区二区三区 | 九九欧美视频 | 天天综合中文 | 成人av地址 | 日韩天天干 | 日韩欧美在线观看一区二区三区 | 99九九免费视频 | 99精品免费久久久久久久久 | 欧美久久成人 | 欧美激情第28页 | 久久久亚洲麻豆日韩精品一区三区 | 一区二区欧美日韩 | 探花视频免费观看高清视频 | 国产精品黄色 | 国产美女视频一区 | 国产精品久久久久久久久久久免费 | 精品久久免费 | 亚洲女同videos | 精品久久久久久久 | 日韩免费一区二区在线观看 | 欧美日韩国产亚洲乱码字幕 | 欧美日韩免费一区二区三区 | 国产亚洲观看 | 国产精品高潮久久av | 国产精品99精品 | 国产三级视频在线 | 不卡的av电影在线观看 | 日韩免费在线观看网站 | 国产在线观看不卡 | 91网址在线 | 国产在线看| 在线最新av| 色99之美女主播在线视频 | 激情五月在线视频 | 亚洲高清资源 | 欧美精品久久久久久久久久白贞 | 亚洲高清91| 香蕉视频啪啪 | 色综合天天色 | a在线观看国产 | 亚洲精品mv在线观看 | 最近能播放的中文字幕 | 2000xxx影视 | 亚州欧美精品 | 色婷婷激情综合 | 久久久精品国产一区二区电影四季 | 性色av免费观看 | 中文字幕电影在线 | 91精品久久久久久综合五月天 | 婷婷综合网 | 国产高清在线 | 伊人一级 | 色综合天天做天天爱 | 亚洲激情在线 | 国产欧美日韩视频 | 在线免费av电影 | 欧美一区二区三区在线看 | 九九视频热| 成人宗合网 | 国产精品久久久网站 | av黄色在线 | 91| 婷婷资源站 | 精品国内自产拍在线观看视频 | 天天插天天操天天干 | 丝袜美腿在线播放 | 亚洲国产日韩欧美 | 精品一区二区视频 | 天天操天天爽天天干 | 中文字幕一区二区三区四区视频 | 97在线观看免费高清 | 色婷婷亚洲精品 | 国产精品专区一 | 天天操欧美 | 欧美激情精品久久久久 | 亚洲精品小视频 | 国产精品v a免费视频 | 808电影免费观看三年 | 色av资源网 | 日韩精品久久久久久中文字幕8 | 日韩毛片一区 | 99草在线视频 | 激情久久久久久久久久久久久久久久 | 成人黄色小说在线观看 | 国产精品一区二区三区久久久 | 欧美日韩性视频在线 | 亚洲乱亚洲乱亚洲 | 日韩在线电影 | 亚洲精品字幕在线观看 | 久久综合五月婷婷 | 成人免费在线观看av | 久久综合久久久久88 | 色 免费观看| 国产99黄 | 最近中文字幕高清字幕在线视频 | 日本性生活一级片 | 成人久久18免费网站 | 成人免费观看电影 | 国产精品麻豆一区二区三区 | 天天干 夜夜操 | 97久久久免费福利网址 | 久草在线视频免费资源观看 | 国产精品久久久久婷婷二区次 | 丰满少妇高潮在线观看 | 免费91麻豆精品国产自产在线观看 | 国产香蕉久久 | 亚洲激情视频 | 亚州精品一二三区 | 成人影片在线播放 | 成人羞羞视频在线观看免费 | 在线视频日韩欧美 | 欧美日韩国产高清视频 | 天天综合操 | 中文字幕免费高清在线 | 亚洲美女免费视频 | 在线激情网 | 黄网站免费大全入口 | 日韩美视频 | 日韩午夜视频在线观看 | 成人免费网视频 | 天天色天天干天天色 | 国产视频1区2区 | 日韩久久精品一区二区三区下载 | 精品久久一 | 日韩一区二区三区免费视频 | 九九视频热| 色鬼综合网| 婷婷在线免费观看 | 午夜精品久久久久久久久久久久 | 日韩精品一区二区三区第95 | 欧美福利在线播放 | 久久综合在线 | www.伊人色.com | 精品国产视频一区 | 国产精品久久电影网 | 国产亚洲欧美一区 | 日韩精品在线播放 | 精品国产色 | 在线影院 国内精品 | 手机色站 | 少妇精69xxtheporn| 国内免费久久久久久久久久久 | 全黄色一级片 | 久草视频在线资源 | 久久伦理| 中文字幕视频播放 | 亚洲禁18久人片 | 亚洲国产精品免费 | 亚洲一级片免费观看 | 国产黄在线 | 一区二区三区污 | 午夜精品久久久久久久99热影院 | 亚州av免费 | 久久精品老司机 | 成人免费观看在线视频 | 久草在线播放视频 | 91网址在线| 色资源网在线观看 | 欧美久久久久久 | 久久爱992xxoo | 久久视频精品在线观看 | 亚洲精品视频在线观看网站 | 玖玖综合网 | 99久久免费看 | 色五月成人| 青草视频网 | 免费中午字幕无吗 | 国产免费作爱视频 | 欧美极品xxx| 亚洲精品午夜久久久久久久久久久 | 国产精久久久久久久 | 中文字幕中文字幕在线一区 | 欧美日韩综合在线观看 | 天堂av在线免费 | 国产在线一区二区 | 婷婷综合激情 | 天天综合网 天天综合色 | 美女网站视频免费黄 | 在线观看视频一区二区三区 | 免费三级大片 | 国产一级电影在线 | 婷婷丁香国产 | 91亚洲在线 | 亚洲精品玖玖玖av在线看 | 青青河边草免费直播 | av免费观看网站 | 亚洲无吗av | 欧美精品一区二区三区四区在线 | 高清日韩一区二区 | 一级成人在线 | 久久视频这里有精品 | 久久无码精品一区二区三区 | 日韩av成人在线 | 久草在线高清视频 | 在线视频a | 色国产精品 | av在线一| 九九久久久久久久久激情 | 24小时日本在线www免费的 | 国产美女精品久久久 | 国产精品久久99综合免费观看尤物 | 精品免费一区 | 久久久久久久久久久久久久免费看 | 深夜免费福利网站 | 日韩视频图片 | 日本三级国产 | 免费看国产一级片 | 人人干狠狠干 | 午夜影院先 | 亚洲高清视频在线 | 日韩成人免费电影 | 精品美女国产在线 | 91热爆在线观看 | 91超级碰 | 99r国产精品 | 久久福利小视频 | 97国产情侣爱久久免费观看 | 精品视频资源站 | 九草视频在线 | 色在线高清 | 天天综合色| 免费看片亚洲 | 人人看人人做人人澡 | 国产欧美精品一区二区三区 | 久久99在线 | 日韩电影一区二区在线观看 | 日韩免费观看高清 | 最新中文字幕 | 天天色成人 | 国内精自线一二区永久 | 久久视频这里只有精品 | 国产精品无 | 日韩免费在线一区 | 国产成人免费av电影 | 国模精品在线 | 91精品第一页 | 久久永久免费 | 中文字幕一二三区 | 婷婷六月天丁香 | 精品国产乱码一区二 | 丝袜少妇在线 | 亚洲人成在 | 久久久999精品视频 国产美女免费观看 | 天天操天天色综合 | 免费一级片观看 | 久久理论视频 | 亚洲91网站 | 日韩专区av | 999抗病毒口服液 | 国产精品久久久久久妇 | 99精品一级欧美片免费播放 | 日本一区二区三区免费观看 | 久久超级碰 | 97在线观看| 欧美另类调教 | 久久成人毛片 | 欧美性色黄 | 午夜在线免费观看视频 | 成人97人人超碰人人99 | 久久久久北条麻妃免费看 | 在线看一区二区 | 99电影456麻豆 | 色综合天天 | 天天操天天干天天综合网 | 精品视频在线免费 | 久久久精品国产免费观看同学 | 国产成人精品综合久久久 | 国产精品午夜免费福利视频 | 激情视频一区二区三区 | 亚洲精品视频第一页 | 中文字幕在线视频网站 | 69久久夜色精品国产69 | 亚洲精品资源在线观看 | 国产精品久久二区 | 欧美黄网站 | 国际精品网| 在线三级av | 四川bbb搡bbb爽爽视频 | 久久欧洲视频 | 国偷自产中文字幕亚洲手机在线 | 亚洲区色 | 在线免费性生活片 | 亚洲精品视频免费看 | 天天操夜夜逼 | 国产日本在线播放 | 国产视频在线免费 | 久久爱导航 | 黄色一级动作片 | 开心激情网五月天 | 在线观看国产成人av片 | 久久久久成人精品 | 久久久精品亚洲 | 精品成人在线 | 日韩美女av在线 | 欧美精品一区二区免费 | 日韩欧美在线观看一区二区三区 | 黄色特级毛片 | 亚洲精品美女在线观看播放 | 免费a v视频| 久久成人精品视频 | 日韩在线第一 | 亚洲精品乱码久久久久久蜜桃不爽 | 欧美 激情 国产 91 在线 | 精品在线免费视频 | 九九热精品视频在线观看 | 狠狠色丁香久久婷婷综 | 精品国产一区二区三区久久 | 成人a大片| 免费三级骚 | 久久久亚洲精华液 | 亚洲精品黄 | 国产精品18久久久久久久久 | www黄com | japanese黑人亚洲人4k | 婷婷色网视频在线播放 | 91精品少妇偷拍99 | 这里有精品在线视频 | 亚洲精品中文字幕在线观看 | 91精品久久久久久综合乱菊 | 婷婷网在线 | 四虎影视国产精品免费久久 | 久艹在线免费观看 | 91成年视频 | 婷婷av电影| 国产精品9999久久久久仙踪林 | 久久综合九色综合欧美就去吻 | 91av超碰 | 欧美国产一区二区 | 日本最新高清不卡中文字幕 | 成人免费看电影 | 亚洲我射av | 精品国产精品久久 | 欧美亚洲精品一区 | 日本在线观看黄色 | 国产一区成人在线 | 久草免费在线观看 | 天天干人人 | 黄色一级免费网站 | 蜜臀av性久久久久蜜臀aⅴ流畅 | av中文字幕剧情 | 国产精品国产三级国产aⅴ无密码 | 日韩毛片精品 | 久久精品一区二 | 国产精品九九视频 | 国产人成一区二区三区影院 | 亚洲精品字幕在线观看 | 99精品视频免费观看视频 | 国产精品二区在线观看 | 深爱激情亚洲 | 日韩av一区二区三区 | 视频二区在线视频 | 91激情视频在线观看 | 免费av观看 | 国产手机视频 | 黄色成人91 | 国产人成精品一区二区三 | www.com黄 | 国内免费久久久久久久久久久 | 免费在线观看视频一区 | 99精品视频在线观看免费 | av在线永久免费观看 | 日韩毛片一区 | 国产一区二区在线播放视频 | 亚洲区另类春色综合小说校园片 | 久精品在线观看 | 日韩在线视频免费看 | 手机av在线不卡 | 狠狠色丁香久久婷婷综合_中 | 日韩免费一区二区三区 | 夜又临在线观看 | 久久久久久久久久久高潮一区二区 | www.亚洲黄色 | 久久久久久久久久影视 | 国产美女免费看 | 国产高清不卡 | 日本精品二区 | 一区二区三区三区在线 | 国产精品一区在线观看 | 天天射天天添 | 99riav1国产精品视频 | 日韩.com | 亚洲精品小区久久久久久 | 91xav| 免费一级日韩欧美性大片 | 9在线观看免费高清完整版在线观看明 | 婷婷五天天在线视频 | 久久99视频免费观看 | 96久久欧美麻豆网站 | 亚洲色影爱久久精品 | 精品亚洲视频在线 | 亚洲国产精品va在线看黑人动漫 | 免费观看mv大片高清 | 国内精品久久久久久久久久 | 人人爱在线视频 | 亚洲日本色 | 五月天久久婷婷 | 在线成人高清电影 | 欧美福利在线播放 | 六月丁香色婷婷 | 免费aa大片 | 免费精品在线观看 | 天天操操| 亚洲国产mv | 一级性av| 国产伦理剧 | 国产成人免费在线 | 久久精品一区二区三 | 9999精品 | 狠狠色丁香婷婷综合久久片 | 最新色视频| 999久久a精品合区久久久 | 中文字幕韩在线第一页 | 日韩字幕 | 亚洲精品成人在线 | 亚洲h在线播放在线观看h | 国产黄a三级三级三级三级三级 | 射射射av| 日韩中文免费视频 | 国产精品久久久影视 | 中文字幕 国产专区 | 国产视频精选在线 | 日韩激情久久 | 日本最新高清不卡中文字幕 | 一区二区三区在线免费观看 | 在线国产视频观看 | 亚洲天堂毛片 | 婷婷六月在线 | 五月婷婷丁香网 | 特级西西www44高清大胆图片 | www.xxxx变态.com| 亚洲国产黄色 | 亚洲欧美日本国产 | 天天操狠狠操网站 | av中文字幕在线播放 | 精品国产亚洲一区二区麻豆 | 97在线看片 | 91麻豆精品国产自产在线 | 国产中文字幕在线观看 | 成人免费在线观看入口 | 91久久一区二区 | 久久精品亚洲精品国产欧美 | 黄色美女免费网站 | 日韩高清免费观看 | 欧美日韩久久不卡 | 免费观看视频的网站 | 91久久精品一区二区二区 | 亚洲欧洲日韩在线观看 | 手机看片国产 | 国产码电影 | 一级理论片在线观看 | 亚洲在线看 | 日韩激情第一页 | 国产精品色婷婷视频 | 麻豆久久| 亚洲3级 | www黄com| 热久久这里只有精品 | 特级西西444www大精品视频免费看 | 日批网站在线观看 | 99精品视频免费观看视频 | 97人人模人人爽人人喊网 | 一区二区三区高清在线观看 | 亚洲国产精品久久 | 国产中文字幕在线播放 | 97综合在线 | 91麻豆高清视频 | 在线a亚洲视频播放在线观看 | www.看片网站 | 欧美一级网站 | 狠狠88综合久久久久综合网 | 国产网站在线免费观看 | 国产一级片免费视频 | 精品国产成人av在线免 | 91精选在线 | 久久久久一区二区三区 | 欧美精品黑人性xxxx | 麻豆视频国产在线观看 | 国产亚洲激情视频在线 | 中文在线www| 天天射色综合 | 2019av在线视频| 国产精品一区免费观看 | 欧美伦理电影一区二区 | 五月天综合在线 | 四虎最新域名 | 99国产免费网址 | 国产一二区视频 | 草久在线视频 | 亚洲国产999| 欧美一区二区三区在线 | 国产亚洲精品av | 国内精品久久久久久久影视麻豆 | 免费观看91 | 亚洲国产免费看 | 国产精品中文字幕av | 精品久久国产一区 | 日韩电影在线一区 | 精品久久电影 | 国产精品久久综合 | av综合 日韩 | 久久成人精品电影 | 久久精品国产精品亚洲 | 麻豆久久久久久久 | 天天射天天干天天插 | 欧美午夜性生活 | 色婷婷激情电影 | av软件在线观看 | 国产一区二区在线免费播放 | 国产精品自产拍在线观看网站 | 日韩18p| 超碰97免费| 久久精国产| 一区二区三区在线电影 | 国产精品99久久久久久宅男 | 国产一区二区在线免费 | 手机av资源| 干天天 | 日韩一级片观看 | 日日日日 | 六月婷婷久香在线视频 | 曰韩在线 | 国产精品毛片一区二区在线看 | 成人免费视频网站 | 天天色天天射天天干 | 亚洲婷婷在线视频 | 成人黄色大片 | 玖玖视频国产 | 国产精品久久久久av福利动漫 | 日韩av黄 | 日日干天夜夜 | 99精品视频一区二区 | 青青河边草免费视频 | 四虎影视国产精品免费久久 | 中文字幕中文字幕在线中文字幕三区 | 精品视频久久久久久 | 一级性视频 | 美女久久久久久久久久 | 精品久久久免费视频 | 欧美性天天| 欧美亚洲三级 | 久久国产精品免费一区二区三区 | 国产精品久久麻豆 | 黄网站免费大全入口 | www.国产在线视频 | 五月天丁香视频 | 狠狠色噜噜狠狠狠合久 | 在线免费观看黄色 | 天堂va在线高清一区 | 久草视频中文 | 97国产大学生情侣白嫩酒店 | 一区二区在线影院 | 午夜国产在线 | wwwav视频| 超碰官网| 国产成人一区二区三区影院在线 | 国产一级在线看 | 一区二区三区影院 | 欧美日韩国产高清视频 | 日韩美一区二区三区 | 91亚洲精品乱码久久久久久蜜桃 | 国产自在线 | 国产一区二区三区在线免费观看 | 亚洲黄色精品 | 久久超碰网 | 91一区啪爱嗯打偷拍欧美 | 日韩精品亚洲专区在线观看 | 久久成人精品电影 | 在线免费观看麻豆 | 人人射人人射 | 天天干天天色2020 | 五月天高清欧美mv | 色伊人网| 五月丁香 | 欧美日韩不卡一区二区三区 | 国产精品免费观看在线 | 欧美一级久久久久 | 中文国产在线观看 | 狠狠操欧美 | 天天干天天操天天射 | 亚洲传媒在线 | 最新日韩精品 | 国产午夜视频在线观看 | 成人在线电影观看 | 色偷偷97 | 欧美日韩伦理一区 | 日韩电影精品一区 | 日韩理论电影在线观看 | 国产一区电影在线观看 | 日韩久久精品一区二区 | 亚洲综合激情网 | 天天狠狠干 | 国内视频在线观看 | 中文国产成人精品久久一 | 最近日本韩国中文字幕 | 四虎最新入口 | www.天天射 | 91av在线电影 | 国产精品中文字幕av | wwwwww黄| 91污在线 | 久久精品五月 | 亚洲开心激情 | 91精品久久久久久久久 | 狠狠色伊人亚洲综合网站色 | 天天色天天射天天操 | 五月婷婷中文字幕 | 国产不卡精品 | 激情五月看片 | 激情在线五月天 | 99中文视频在线 | 日韩专区av | 亚洲一二三久久 | 日韩在线观看视频网站 | 五月天天在线 | 国产精品毛片久久久久久久 | 在线你懂 | 日日干美女 | 欧美视频在线观看免费网址 | 国产又粗又猛又黄又爽视频 | 午夜精品电影一区二区在线 | 久久综合久久综合这里只有精品 | 日日夜夜国产 | 成人亚洲精品国产www | 中文字幕日韩伦理 | 免费黄色av片 | 免费毛片一区二区三区久久久 | 在线91视频| 亚洲精品乱码久久久久久久久久 | 日日摸日日碰 | 精品国产中文字幕 | 亚洲高清视频一区二区三区 | 天天干天天干天天 | 麻豆视屏| 一区二区视频电影在线观看 | 国产成人av在线影院 | 91亚洲网站 | 欧美午夜激情网 | 国产小视频在线 | 亚洲国产精品久久久久久 | 久久97久久 | 国产美女无遮挡永久免费 | 日韩中文字幕在线不卡 | 国产精品中文久久久久久久 | 免费高清无人区完整版 | 国产精品白浆 | 免费中文字幕 | 国产手机在线观看视频 | 亚洲人av免费网站 | 人人爱人人添 | 天天操操操操操 | 日日天天狠狠 | 在线黄色免费av | 五月天av在线 | 婷婷色资源 | 久久综合狠狠综合久久激情 | 欧美一二三区在线播放 | 成人av片免费看 | 国产不卡片 | 91视频免费网站 | 免费精品| 99热这里| 欧美韩日视频 | 在线播放视频一区 | 99久久婷婷国产精品综合 | 欧美高清视频不卡网 | 青草视频在线免费 | 国产色区 | 国产精品久久久久av免费 | 我爱av激情网 | 国产免费小视频 | 亚洲黄网站| 国产麻豆剧果冻传媒视频播放量 | 99九九99九九九视频精品 | 丁香视频全集免费观看 | 伊甸园永久入口www 99热 精品在线 | 免费福利在线 | 欧美成人aa | 国产高清视频在线观看 | 中文字幕一区二区三区久久蜜桃 | 91精品国产三级a在线观看 | 青草视频在线 | 日韩在线视频国产 | 日韩精品免费一线在线观看 | 最新av网站在线观看 | 91人人爽久久涩噜噜噜 | 亚洲永久精品一区 | 亚洲视频免费在线 | 91av视频在线播放 | 色偷偷人人澡久久超碰69 | 色av网站 | 一级片免费在线 | 婷婷丁香花五月天 | 人人舔人人插 | 婷婷久草 | 最近日本mv字幕免费观看 | 国产精品免费在线观看视频 | 成人午夜网址 | 国内精自线一二区永久 | 毛片网站免费在线观看 | 99看视频在线观看 | 国产一级二级三级在线观看 | 六月丁香婷婷久久 | 91麻豆精品国产91 | 精品久久久影院 | 激情丁香综合五月 | 国产成人精品在线观看 | 久久综合九色综合欧美狠狠 | 在线你懂| 国产91精品看黄网站在线观看动漫 | 国产精品一区在线观看 | 免费在线观看av电影 | 日韩免费b | 99re在线视频观看 | 久久99精品久久久久久清纯直播 | 久久久久久久久久久免费视频 | 96看片| 国产精品婷婷午夜在线观看 | 亚洲人xxx | 午夜在线国产 | 91九色成人 | 精品国内自产拍在线观看视频 | 最新av在线网站 | 91中文字幕在线播放 | 99久久精品免费看国产免费软件 | 激情影音先锋 | 免费色网站 | a级国产乱理论片在线观看 伊人宗合网 | 黄色高清视频在线观看 | 91高清视频在线 | 日韩免费一区二区 | 亚洲天堂网站视频 | 精品久久久久久久久亚洲 | 日韩中文字幕免费看 | 三级黄色片子 | 69久久99精品久久久久婷婷 | 成人av资源 | 91视频在线免费观看 | 不卡精品视频 | 一区二区三区在线观看 | 一区二区三区免费在线观看 | 亚洲区色 | 黄网在线免费观看 | 日韩欧美在线一区 | 久久丁香网 | 国产黑丝一区二区 | 国产精品s色 | 黄色大片中国 | 亚洲精品成人av在线 | 日日爽视频 | 最近中文字幕mv | 涩涩爱夜夜爱 | 香蕉影院在线观看 | 91毛片视频 | 97在线观看| 天天操夜操视频 | 黄色av免费看 | 天天艹天天干天天 | 亚洲综合在线视频 | 中文字幕av在线免费 | av在线收看 | 99在线免费观看 | 97超碰在线视 | 最新av中文字幕 | 丁香婷五月 | 人人舔人人干 | 99久久日韩精品免费热麻豆美女 | 国产黄色av| 国产精品亚洲片夜色在线 | 国产亚洲激情视频在线 | 国产精品va在线播放 | 99在线高清视频在线播放 | 午夜狠狠操 | 亚洲精选视频在线 | 国产精品欧美久久久久久 | 国产欧美最新羞羞视频在线观看 | 国产综合精品久久 | 午夜精品久久久久久久99无限制 | 日本黄色免费看 | 日本久久免费视频 | 国产视频在线观看一区二区 | 99在线视频观看 | 亚洲欧洲xxxx| 欧美人zozo | 9在线观看免费高清完整版 玖玖爱免费视频 | 玖玖在线视频观看 | 国际精品久久久 | 日韩高清无线码2023 | 99在线观看视频网站 | 精品国产一区二区三区四区vr | 久久久久久久久久久国产精品 | 久久久久网址 | 久久久国产毛片 | 久日精品 | 国产高清久久 | av在线一二三区 | 久久精品男人的天堂 | 久久爱www. | 天天操夜夜摸 | 国产天天综合 | 日韩中文字幕免费视频 | 天天干,狠狠干 | 狠狠操操网 | 亚洲精品午夜一区人人爽 | 97干com| 亚洲免费在线看 | 久久久久国产一区二区三区四区 | 中文字幕欧美日韩va免费视频 | 欧美日韩中 | 91av手机在线观看 | 婷婷视频在线观看 | 四虎视频| 日韩三区在线 | 成人在线电影观看 | 久久字幕网 | 久久免费在线观看视频 | 日韩理论在线观看 | 亚洲三级黄色 | 国产精品黄网站在线观看 | 久久精品成人欧美大片古装 | 三级动态视频在线观看 | 国产免费资源 | 国产精品一区二区在线观看免费 | 天天艹天天操 | 久久国产精品99久久久久 | 最近高清中文在线字幕在线观看 | av网站手机在线观看 | 天天操夜操视频 | 福利视频网站 | 国产 视频 高清 免费 | 国产伦理久久精品久久久久_ | 黄色日本片 | 婷婷久月 | 中文字幕在线观看视频一区二区三区 | 在线亚洲精品 | 一区二区三区四区不卡 | 又黄又爽免费视频 | 色婷婷色 | 国产精品欧美久久久久三级 | 97av免费视频 | 精品一区二区亚洲 | 国产一级做a爱片久久毛片a | 久久视频国产 | 日韩在线视频观看 | 狠狠躁夜夜av | 国产黄色片一级 | 久久爱资源网 | 精品在线免费视频 | 日韩黄色av网站 | 成人在线观看网址 | av短片在线| 在线观看亚洲精品视频 | 91视频免费网址 | 超碰97在线资源 | 久久久久久久99精品免费观看 | 精品欧美一区二区精品久久 | 精品国产一区二区三区久久 | 香蕉精品视频在线观看 | 日韩精品久久久久久 | 在线观看国产日韩欧美 | 国产又粗又猛又黄又爽的视频 | 国产91精品一区二区绿帽 | 久久综合久久综合久久 | 国产精品爽爽久久久久久蜜臀 | 黄色app网站在线观看 | 欧美一级久久久 | 国产网红在线观看 | 91精选 | aaawww| 涩涩网站在线播放 | 91porny九色91啦中文 | 狠狠狠色丁香婷婷综合久久五月 | 天天av资源| 国产精品久久久久久久久久久免费看 | 欧美一区二区三区在线看 | 五月开心六月伊人色婷婷 | 欧洲精品久久久久毛片完整版 | 色亚洲网 | 国产视频久久久 | 日韩一三区 | 国产高清在线一区 | 久久久久久久久久电影 | 激情开心色 | 中文字幕乱码亚洲精品一区 | 国产色网站 | 国产99久久久国产精品免费二区 | 国产高清在线 | 国产高清在线观看av | 天天天色综合 | 成人黄色av网站 | 97精品久久人人爽人人爽 | 精品亚洲免费 | 久久久久久久久福利 | 国内精品久久久久久久久久 | 亚洲成人黄色网址 | 久久影视一区二区 | 国产精品毛片一区二区 | 成人免费视频视频在线观看 免费 | 国产五月 | 96视频在线 | 99精品国产在热久久 | 性日韩欧美在线视频 | 夜夜高潮夜夜爽国产伦精品 | 天天干,夜夜爽 | 亚洲精品成人在线 | 成片视频在线观看 | 色视频网站在线 | 久久精品久久久久 | 一区二精品 | 久久国产精品99久久久久久丝袜 | 丁香一区二区 | 特级西西人体444是什么意思 | 天堂视频中文在线 | 久久不色 | 成人免费电影 | 久久视频一区二区 | 国产三级国产精品国产专区50 | 中文字幕免费播放 | 国产亚洲在 | 五月天六月婷 | 99欧美视频 | 国产美女视频一区 | 日日干天天爽 | 国产又粗又猛又黄 | 中文字幕在线中文 |