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

如何在Rust中操作JSON,你學會了嗎?

開發(fā) 前端
sonic-rs ?還具有一些額外的方法來進行惰性評估和提高速度。例如,如果我們想要一個 JSON? 字符串文字,我們可以在反序列化時使用 LazyValue? 類型將其轉(zhuǎn)換為一個仍然帶有斜杠的 JSON 字符串值。如果我們不怕不安全行為,或者確信它不會出錯,還有很多未經(jīng)檢查的方法可供我們使用。

前言

我們之前在Rust 賦能前端-開發(fā)一款屬于你的前端腳手架中有過在Rust項目中如何操作JSON。

圖片圖片

由于文章篇幅的原因,我們就沒詳細介紹這塊的內(nèi)容,而今天我們就抽空聊聊這個話題。-- 「如何在Rust中操作JSON,以及對最流行的庫進行比較」

好了,天不早了,干點正事哇。

我們能所學到的知識點

  1. 操作JSON數(shù)據(jù)
  2. 比較 Rust 的 JSON crates

1. 操作JSON數(shù)據(jù)

創(chuàng)建JSON數(shù)據(jù)

要在Rust中處理JSON,我們可以借助相關(guān)的JSON庫。其實市面上有很多相關(guān)的庫,但是我們還是選擇一種我們比較熟悉并且流行度高的庫。--serde-json[1]

我們可以通過運行以下命令來安裝它:

cargo add serde-json

完成后,我們可以像這樣手動創(chuàng)建JSON:

use serde_json::{Result, Value};

fn untyped_example() -> Result<()> {
    // 一些JSON輸入數(shù)據(jù),作為一個&str。也許這些數(shù)據(jù)來自用戶。
    let data = r#"
        {
            "name": "Front789",
            "age": 18,
            "ability": [
                "Front-end development",
                "Rust",
                "AI"
            ]
        }"#;

    // 將數(shù)據(jù)字符串解析為serde_json::Value。
    let v: Value = serde_json::from_str(data)?;

    // 通過使用方括號索引來訪問數(shù)據(jù)的部分。
    println!("我是{}。一個專注于{}/{}及{}應用知識分享**的Coder", 
    v["name"], v["ability"][0],v["ability"][1],v["ability"][2]);

    Ok(())
}

然而,我們可以做得比這更好。例如,我們可以將JSON序列化為結(jié)構(gòu)體,這在許多應用中都有用途。我們可以在JSON模板、Web服務、CLI參數(shù)(這點我們的f_cli[2]就使用了它)等方面使用它。

當然,我們也可以使用std::fs::write來將這些JSON數(shù)據(jù)寫入到磁盤文件中。

使用Serde解析JSON

Serde是一個crate,它幫助我們將數(shù)據(jù)序列化和反序列化為各種格式,其中一個流行的用途是用于JSON。Serde提供了兩個主要的trait來幫助我們完成這一點:Serialize和Deserialize。我們可以添加了一個派生宏實現(xiàn)來幫助我們完成這一點。

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
pub struct MyStruct {
    message: String
}

fn convert_json_to_struct() {
    // 從json!宏創(chuàng)建一個原始的JSON字符串,并將其轉(zhuǎn)換為MyStruct結(jié)構(gòu)體
    let raw_json_string = json!({"message": "Hello Front789!"});
    let my_struct: MyStruct = serde_json::from_str(raw_json_string).unwrap();
}

我們還可以創(chuàng)建「嵌套的JSON」,方法是將實現(xiàn)Serialize和Deserialize的結(jié)構(gòu)體作為另一個也實現(xiàn)Serialize和Deserialize的結(jié)構(gòu)體的字段:

use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
pub struct Post {
    nested_json: PostMetadata,
    title: String,
    body: String
}

#[derive(Serialize, Deserialize)]
pub struct PostMetadata {
    timestamp_created: DateTime<Utc>,
    timestamp_last_updated: DateTime<Utc>,
    categories: Vec<String>,
}

上面的代碼可以用于我們用Rust創(chuàng)建一個Web服務(還記得我們之前介紹過的Rust Web 開發(fā)之Axum使用手冊嗎),并且返回一個嵌套JSON。例如,當我們的Web服務器收到一個POST請求,其Body中是一個Json數(shù)據(jù)時,我們通常會將相關(guān)的Json類型作為處理程序函數(shù)的參數(shù)傳遞。

use axum::Json;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
pub struct Post {
    nested_json: PostMetadata,
    title: String,
    body: String
}

#[derive(Serialize, Deserialize)]
pub struct PostMetadata {
    timestamp_created: DateTime<Utc>,
    timestamp_last_updated: DateTime<Utc>,
    categories: Vec<String>,
}

async fn receive_some_json(
  // 這個提取器消耗一個JSON主體,并將其轉(zhuǎn)換為給定的結(jié)構(gòu)類型
    Json(json): Json<Post>
) -> Json<Post> {
    println!("{:?}", json);
    Json(json)
}

我們還可以從其字節(jié)表示形式轉(zhuǎn)換為結(jié)構(gòu)體:

let json_as_bytes = b"
        {
            \"message\": \"Hello Front789!\",
        }";

    let my_struct: MyStruct = serde_json::from_slice(json_as_bytes).unwrap();

上面的處理方式,在我們想將一個結(jié)構(gòu)體存儲在某個地方作為字節(jié)數(shù)組,然后再將其轉(zhuǎn)換回結(jié)構(gòu)體時,有奇特的效果!

類似地,我們還可以從JSON的「IO流」中讀取JSON并將其轉(zhuǎn)換為結(jié)構(gòu)體,使用.from_reader()方法。以下代碼中展示了如何在TCP流中使用它:

use serde::Deserialize;
use std::error::Error;
use std::net::{TcpListener, TcpStream};

#[derive(Deserialize, Debug)]
struct User {
    name: String,
    age: String,
}

fn read_user_from_stream(tcp_stream: TcpStream) -> Result<User, Box<dyn Error>> {
    let mut to_be_deserialized = serde_json::Deserializer::from_reader(tcp_stream);
    let user = User::deserialize(&mut to_be_deserialized)?;

    Ok(user)
}

fn main() {
    let listener = TcpListener::bind("127.0.0.1:7890").unwrap();

    for stream in listener.incoming() {
        println!("{:#?}", read_user_from_stream(stream.unwrap()));
    }
}

這樣,當我們在遇到需要處理JSON的數(shù)據(jù)時,我們就可以直接從流中反序列化,而不是在內(nèi)存中添加緩沖區(qū)。

2. 比較 Rust 的 JSON crates

其實,在大部分情況下,serde-json已經(jīng)能夠滿足我們的需求了。但是,在一些特殊情況下,例如數(shù)據(jù)量過大,此時serde-json就有點吃力了。所以,市面上又有了一些提高 JSON 解析性能的crate。(simd-json/sonic-rs)

圖片圖片

從上圖可知serde-json有碾壓式優(yōu)勢,也就是不到萬不得已,我們還是使用serde-json。不過,本著知己知彼,方能百戰(zhàn)不殆。我們也需要知曉額外的解決方案。

這些 crates 大部分具有相同的 API。除非另有說明,否則我們可以安全地在這些庫之間切換,并期望在每個庫中使用 JSON 時具有大致相同的接口。

serde-json

serde-json 是 Rust 中下載和使用最多的 JSON 庫之一。

就性能而言,serde-json 本身并不慢。然而,然后對比其他兩個crate就有點稍遜了。這主要是因為它被采用非并行化的 CPU 使用架構(gòu)。這樣的話,serde-json就無法在x86 CPU的系統(tǒng)架構(gòu)上,發(fā)揮更強的作用。

x86 是一種廣泛使用的中央處理單元 (CPU) 計算機架構(gòu)。它已成為個人計算機和服務器的主導架構(gòu)。x86這個名稱源自 8086,這是英特爾? 發(fā)布的早期處理器。x86 CPU 使用「復雜指令集計算機」 (CISC) 設計,允許它們在「單個周期內(nèi)執(zhí)行多條指令」。x想了解更多關(guān)于x86 CPU的內(nèi)容,可以參考x86介紹[3]

simd-json

simd-json[4] 是 simdjson C++ JSON 解析器的 Rust 版本,內(nèi)置了 serde 兼容性。正如其名稱所示,此庫使用 SIMD(單指令多數(shù)據(jù))。這是一種用于能夠使用并行處理處理多個數(shù)據(jù)點的技術(shù),使其速度顯著更快!然而,作為一個注意事項,它要求我們的系統(tǒng)具有 x86 能力,并且在運行時會選擇最佳的 SIMD 特性集以獲得性能。

文檔中提到 simd-json 可以在本機目標編譯時充分發(fā)揮作用。我們可以通過在運行程序時啟用 rustc 中的以下編譯器選項來實現(xiàn)此目標,例如:

rustc -C target-cpu=native

然而,如果我們像大多數(shù)使用 Cargo 的人一樣,我們可能想使用 cargo run。與示例中一樣,我們可以在 .cargo/config 中創(chuàng)建一個配置,然后添加以下內(nèi)容:

[build]
rustflags = ["-C", "target-cpu=native"]

在.cargo/config配置相關(guān)的內(nèi)容,我們在Rust交叉編譯Windows環(huán)境時候,也涉及到。

[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"

一般來說,盡管這個庫非常快,但應該注意到這個 crate 中有相當多的不安全代碼,因為它是 C++ crate 的一個移植。這并不意味著我們不應該使用它,而是要謹慎使用。

還應該提到的是,為了獲得最佳性能,通常最好啟用 jemalloc 或 mimalloc 特性,以充分利用庫。

通常情況下,simd-json 的 API 與 serde-json 相同,因此如果我們想在任何時候切換,通常不應該遇到任何問題。

sonic-rs

sonic-rs[5] 是具有 SIMD 功能的 JSON 操作的 Rust 實現(xiàn)。這個庫還有一個 C++ 和 Go 的對應庫!盡管它曾經(jīng)需要 Rust nightly 工具鏈,但現(xiàn)在支持穩(wěn)定的 Rust。與 simd-json 類似,它也需要 x86 CPU 架構(gòu)才能充分發(fā)揮作用。

與 simd-json 一樣,要使用 sonic-rs,我們需要在運行程序時啟用 rustc 中的以下編譯器選項:

rustc -C target-cpu=native

我們可以在 .cargo/config 中創(chuàng)建一個配置,然后添加以下內(nèi)容以在使用 cargo run 時啟用它:

[build]
rustflags = ["-C", "target-cpu=native"]

這樣我們就可以構(gòu)建支持 SIMD 的程序而無需做其他操作!

與 simd-json 類似,這個庫中使用了相當多的不安全代碼。然而,如果我們在庫中搜索不安全代碼,我們會發(fā)現(xiàn)比之前的庫中的不安全代碼可能更多。

sonic-rs 還具有一些額外的方法來進行惰性評估和提高速度。例如,如果我們想要一個 JSON 字符串文字,我們可以在反序列化時使用 LazyValue 類型將其轉(zhuǎn)換為一個仍然帶有斜杠的 JSON 字符串值。如果我們不怕不安全行為,或者確信它不會出錯,還有很多未經(jīng)檢查的方法可供我們使用。

盡管 sonic-rs 是一個非常快的庫,但它也是一個較新的 crate,因此某些方法,如 from_reader(允許從 IO 流讀取)在 crate 中缺失。

Reference

[1]

serde-json:https://crates.io/crates/serde_json

[2]f_cli:https://www.npmjs.com/package/f_cli_f

[3]x86介紹:https://www.lenovo.com/us/en/glossary/x86/

[4]simd-json:https://crates.io/crates/simd-json

[5]sonic-rs:https://crates.io/crates/sonic-rs

責任編輯:武曉燕 來源: 前端柒八九
相關(guān)推薦

2023-10-10 11:04:11

Rust難點內(nèi)存

2023-12-27 07:31:45

json產(chǎn)品場景

2024-01-05 07:46:15

JS克隆對象JSON

2024-04-09 13:16:21

Rust命名規(guī)范

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-12-05 10:53:02

JSON數(shù)據(jù)服務器

2024-04-29 06:55:34

RustMIDI應用程序

2023-10-31 14:04:17

Rust類型編譯器

2022-11-30 09:54:57

網(wǎng)絡令牌身份驗證

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機器學習模型

2022-11-23 14:57:04

2022-08-29 08:05:44

Go類型JSON

2023-03-17 16:44:44

Channel進程模型

2023-01-28 10:40:56

Java虛擬機代碼

2024-11-29 08:53:46

2023-12-26 10:12:19

虛擬DOM數(shù)據(jù)
點贊
收藏

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

美女日韩一区| av资源种子在线观看| 亚洲精品中文字幕乱码| 欧美一区二区三区色| 99er在线视频| 性xxxx视频| 免费成人av在线播放| 久久天天躁狠狠躁夜夜av| 日韩欧美中文在线视频| 欧美调教sm| 欧美国产禁国产网站cc| 亚洲自拍另类欧美丝袜| 亚洲日本韩国在线| 青青草国产成人a∨下载安卓| 7777精品伊人久久久大香线蕉完整版| 九一免费在线观看| 免费在线看v| 国内精品伊人久久久久av一坑| 欧美激情精品久久久久久黑人| 99久久国产精| а天堂中文最新一区二区三区| 亚洲一区在线视频| 日韩wuma| 日本黄色不卡视频| 久久国内精品视频| 欧洲美女7788成人免费视频| 国产suv精品一区二区68| 欧美巨大xxxx| 4hu四虎永久在线影院成人| 日本a视频在线观看| 日本三级在线播放完整版| caoporn国产精品| 国产日韩av在线| 国产区在线观看视频| 中文字幕一区二区三三| 国产亚洲欧美aaaa| 制服丝袜在线第一页| 四虎国产精品免费久久| 欧美性猛交xxxx免费看久久久| av不卡在线免费观看| 国产黄色免费在线观看| 99热在这里有精品免费| 亚洲自拍av在线| 亚洲在线精品视频| 爽好多水快深点欧美视频| 久久免费视频网| 久久国产高清视频| 欧美日韩亚洲在线观看| 亚洲男女自偷自拍图片另类| 白丝校花扒腿让我c| 国产电影一区二区| 精品视频在线看| 欧美黄色一级片视频| 国产黄a三级三级三级av在线看 | 综合欧美亚洲日本| 日韩欧美电影一区二区| 欧美新色视频| 91麻豆文化传媒在线观看| 国产伦精品一区二区三区照片91| 国产精品主播一区二区| 久久99精品久久久久久动态图| 国产成人精品免费久久久久| 丁香六月婷婷综合| 亚洲日本久久| 97在线免费观看视频| 久久久精品视频免费| 欧美日韩成人| 久久久久久成人| 国产亚洲精品成人| 伊人久久大香线蕉av超碰演员| 欧美插天视频在线播放| 久久亚洲国产成人精品性色| 黄色在线成人| 国外视频精品毛片| 日本特级黄色片| 日韩在线卡一卡二| 国产中文欧美精品| 精品人妻一区二区三区麻豆91 | 国产免费亚洲高清| 91精品国产综合久| 国产精品一区二区91| 69174成人网| 日本免费不卡视频| 久久久国产精华| 视频一区视频二区视频| 麻豆网站在线看| 有坂深雪av一区二区精品| av在线com| jizzjizz中国精品麻豆| 午夜欧美视频在线观看| 欧美日韩二三区| 日韩欧美精品电影| 欧美剧情片在线观看| 香蕉视频xxxx| 欧美午夜寂寞| 色99之美女主播在线视频| 日韩一区二区三区四区在线| 亚洲欧洲一区| 国产精品美女呻吟| www.五月婷婷| 久久免费的精品国产v∧| 亚洲精品一区二区三区蜜桃久| www久久日com| 精品久久久久久中文字幕一区奶水| 国产激情在线观看视频| 国产精品一区二区美女视频免费看| 精品国产污网站| av女人的天堂| 欧美韩国一区| 国产91在线播放九色快色| 国产精品久久久久久免费| 不卡的av中国片| 亚洲一区高清| 欧美极品videos大乳护士| 欧美酷刑日本凌虐凌虐| 人人妻人人澡人人爽人人精品| 日韩成人精品一区| 国内免费久久久久久久久久久| www.五月婷婷.com| 成人午夜碰碰视频| 综合视频免费看| 天堂电影一区| 日韩欧美美女一区二区三区| 国产熟女一区二区| 亚洲黄网站黄| 亚洲aa中文字幕| 久青草国产在线| 亚洲一卡二卡三卡四卡无卡久久| www.色偷偷.com| 高潮按摩久久久久久av免费| 日韩在线高清视频| 五月婷婷激情视频| 成人午夜伦理影院| 97超碰人人爱| 久久亚洲资源中文字| 国产丝袜一区二区| 久久精品www| 激情综合五月婷婷| 亚洲欧美精品| 欧美日韩尤物久久| 亚洲九九九在线观看| 欧美亚洲天堂网| 国产精品一区二区在线看| 丝袜足脚交91精品| 91精品xxx在线观看| 日韩成人av在线| 日产欧产va高清| 国产成人激情av| 路边理发店露脸熟妇泻火| 久久久国产精品网站| 夜夜嗨av一区二区三区四区| 黄色片中文字幕| 91女神在线视频| 久久久久久免费看| 牛牛精品成人免费视频| 国内精品久久久久| 色婷婷综合视频| 亚洲成人免费在线| 男人网站在线观看| av成人天堂| 精品视频高清无人区区二区三区| 秋霞在线午夜| 精品久久人人做人人爱| 久久久国产精品黄毛片| 福利电影一区二区| 奇米777四色影视在线看| 亚洲小说春色综合另类电影| 欧美高清视频一区二区| 亚洲精品国产精品乱码不卡| 亚洲国产va精品久久久不卡综合| 国产精品果冻传媒| 国产精品日韩| 欧美一区免费视频| 国产精品videossex撒尿| 中文字幕亚洲综合| 国产免费的av| 亚洲国产乱码最新视频| 给我看免费高清在线观看| 久久蜜桃精品| 亚洲精品日韩精品| 日本在线视频一区二区三区| 欧美国产中文字幕| 天天色综合久久| 日本韩国欧美一区二区三区| 肉色超薄丝袜脚交69xx图片| 国产成人综合在线观看| a在线视频观看| av一区二区在线观看| 91免费看片网站| 国产理论在线| 中文欧美在线视频| www.com欧美| 精品国产91久久久| 国产主播av在线| 粉嫩一区二区三区在线看| 国产精品宾馆在线精品酒店| 成人动漫免费在线观看| 91久久偷偷做嫩草影院| 色多多在线观看| 视频在线观看一区二区| 国产91久久久| 欧美日韩在线三级| 国产网友自拍视频| 中文字幕精品三区| av天堂一区二区| 久久中文欧美| 成人免费在线视频播放| 国产精品一区二区av日韩在线| 91久久精品国产91久久性色| 九色porny丨国产首页在线| 丝袜美腿精品国产二区| 天天干天天爱天天操| 欧美一区二区三区喷汁尤物| 精品国产一区二区三区四| 国产精品福利影院| 日韩片在线观看| 国产精品综合一区二区三区| www日韩视频| 在线播放一区| 午夜啪啪免费视频| 精品一级毛片| 久久久久久国产精品mv| 奇米一区二区| 国产精品日韩欧美综合| 精品丝袜在线| 久久99视频免费| 中文字幕在线视频区| 亚洲男人第一网站| 日韩有码第一页| 日韩一区二区三区电影在线观看| 日韩黄色一级视频| 欧美日韩激情小视频| 黄色一级视频免费观看| 1024精品合集| 久久久国产一级片| 久久久久久久免费视频了| 一级黄色免费视频| 国产一区二区按摩在线观看| 成人亚洲视频在线观看| 99精品视频免费全部在线| 日本女人高潮视频| 欧美成人精品一区二区三区在线看| 精品欧美一区二区在线观看视频| 国产精品久久久久77777丨| 日本一区二区在线播放| 136福利第一导航国产在线| 久久综合亚洲社区| 欧美69xxx| 尤物yw午夜国产精品视频| 少妇人妻偷人精品一区二区| 精品国产青草久久久久福利| 97在线视频人妻无码| 色婷婷久久久亚洲一区二区三区| www.av免费| 亚洲男同1069视频| www.xx日本| 国产精品欧美一区喷水| 你懂得在线观看| 国产精品久久午夜| 影音先锋男人看片资源| 国产精品不卡一区二区三区| 午夜精产品一区二区在线观看的| 91一区二区在线观看| 精人妻一区二区三区| 国产一区二区三区美女| 羞羞的视频在线| 亚洲一区一卡| 一本久道中文无码字幕av| 久久精品一本| 欧美一级片中文字幕| 日韩成人av影视| 在线免费观看视频黄| 青青草原综合久久大伊人精品优势| 天天操天天爱天天爽| 久久精品国产一区二区三 | 亚洲成人三级| 中文字幕亚洲欧美日韩高清 | 亚洲欧美制服第一页| 欧美日本韩国一区二区| 精品日韩一区二区三区免费视频| 人人妻人人澡人人爽久久av| 亚洲精品电影久久久| 欧美一区二区视频| 亚洲人成在线观看网站高清| 超碰在线影院| 久久久久www| av在线看片| 亚州精品天堂中文字幕| 亚洲日本天堂| 国产精品wwwwww| 国产日韩一区二区三免费高清| 97碰碰视频| 久久久久高潮毛片免费全部播放| 国产亚洲精品自在久久| 欧美黑人巨大videos精品| 欧美日韩三区四区| 清纯唯美亚洲经典中文字幕| 一本色道久久99精品综合| 91成人超碰| 国产乱子伦精品视频| 日韩电影在线一区二区三区| 中文字幕国产高清| 成人免费视频播放| 殴美一级黄色片| 一区二区三区欧美日韩| 999这里只有精品| 欧美一区二区三区在| 五月激情六月婷婷| 色综合亚洲精品激情狠狠| 国产在线88av| 国产日本欧美视频| 高清精品视频| av磁力番号网| 久久尤物视频| 99日在线视频| 久久精品一二三| 成人免费视频国产免费观看| 欧美日韩国产页| www.国产免费| 在线观看日韩www视频免费| 日本中文字幕在线看| 91福利视频在线观看| 中文幕av一区二区三区佐山爱| 97视频中文字幕| 欧美电影一区| 动漫av网站免费观看| 精品亚洲porn| 国产精成人品免费观看| 亚洲午夜精品久久久久久久久| 激情五月婷婷网| 亚洲成人在线网| 久草中文在线观看| 国产精品入口免费视频一| 成人盗摄视频| 裸模一区二区三区免费| 亚洲最大黄网| 国产小视频精品| 91老师国产黑色丝袜在线| 免费中文字幕视频| 一本一本久久a久久精品综合麻豆| 国产三级第一页| 最近2019中文字幕在线高清| 成人国产电影在线观看| 91免费版黄色| 欧洲激情综合| 女人另类性混交zo| 成人免费电影视频| 日本视频www| 欧美大片拔萝卜| 137大胆人体在线观看| 清纯唯美亚洲综合| 91综合久久爱com| 手机成人在线| 日韩精品一二区| 在线观看福利片| 午夜a成v人精品| 成人午夜精品福利免费| 欧美大奶子在线| 日本少妇精品亚洲第一区| 国产日本欧美在线| 麻豆成人综合网| av中文字幕免费观看| 欧美日韩国产中文字幕| 亚洲欧洲成人在线| 欧美亚洲激情视频| 91精品啪在线观看国产爱臀| 日韩亚洲欧美一区二区| 久久国产精品无码网站| 中文乱码字幕高清一区二区| 欧美日本高清视频在线观看| www亚洲人| 国产日韩在线观看av| 欧美日韩p片| 日韩黄色一区二区| 亚洲高清视频中文字幕| 色婷婷av一区二区三区之红樱桃 | 91香蕉视频污在线观看| 91精品国产色综合久久久蜜香臀| 国内精品一区视频| 国产精品精品久久久久久| 久久精品影视| 国产成人精品一区二区在线小狼| 中文字幕av一区二区三区免费看| 在线观看国产小视频| 亚洲欧洲午夜一线一品| 香蕉久久一区| 成人污网站在线观看| 成人精品视频网站| 日韩在线播放中文字幕| 最近2019中文免费高清视频观看www99 | av网站在线看| 国产精品日韩二区| 天堂一区二区在线| 美女网站视频色| 欧美日韩视频在线第一区 | 欧美美女15p| 日韩一二三区| 国产福利一区视频| 亚洲免费视频成人| 国产在线观看黄|