精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

国产suv一区二区| 欧美午夜aaaaaa免费视频| 精品免费久久久| 亚洲成人资源| 日韩精品视频中文在线观看| 免费黄色日本网站| 国产三级在线免费观看| 麻豆精品一二三| 美女av一区二区| 中国免费黄色片| 澳门成人av网| 国产精品成人免费在线| 国产不卡一区二区在线观看 | 免费成人黄色| 国产91精品精华液一区二区三区| 性色av一区二区三区| 特级西西www444人体聚色 | 性久久久久久久久久久久久久| 99福利在线| 91天堂素人约啪| 国产精品偷伦一区二区| 99精品久久久久| 偷拍一区二区| 91麻豆精品国产综合久久久久久 | 精品久久久免费| 亚洲人成77777| www国产一区| 1024日韩| 日韩中文字在线| 一边摸一边做爽的视频17国产| 欧美成人ⅴideosxxxxx| 一区二区成人在线| 玛丽玛丽电影原版免费观看1977 | 大片免费播放在线视频| 粉嫩av一区二区三区| 国产精品精品一区二区三区午夜版 | 日韩一级在线观看| 欧美精品成人网| 免费网站在线观看人| 国产喷白浆一区二区三区| 成人av免费在线看| 无码人妻精品一区二| 一级毛片免费高清中文字幕久久网| 亚洲精品日韩在线| 又黄又爽又色的视频| 亚洲天堂一区二区| 午夜精品福利一区二区蜜股av| 制服国产精品| 久久电影中文字幕| 91丝袜高跟美女视频| 99电影网电视剧在线观看| 一区二区三区精彩视频| 视频一区视频二区中文| 欧美精品亚州精品| 国精产品视频一二二区| 尤物tv在线精品| 亚洲级视频在线观看免费1级| 欧美一级小视频| 成人深夜福利| 欧美视频你懂的| 777久久久精品一区二区三区 | 日韩不卡在线播放| 亚洲激情网站| 久久久久日韩精品久久久男男| 日韩av手机在线免费观看| 欧美**vk| 亚洲人成在线观| 日韩人妻一区二区三区| 神马久久影院| 亚洲欧美国产一本综合首页| 一区二区视频观看| 嫩草国产精品入口| 欧美日韩成人一区| 午夜天堂在线视频| 国产精品1luya在线播放| 亚洲精品乱码久久久久久按摩观| 国产黄色网址在线观看| 日本一本不卡| 欧美刺激性大交免费视频| 久久艹精品视频| 国产亚洲精品v| 国产一区二区在线免费| 成人av无码一区二区三区| 91网站最新网址| 制服国产精品| 丁香花在线电影小说观看| 日韩欧美a级成人黄色| 国产精品区在线| 91精品日本| 亚洲欧洲一区二区三区在线观看| 超碰人人人人人人人| 欧美激情综合色综合啪啪| 91精品国产91久久久| 中文 欧美 日韩| 粉嫩嫩av羞羞动漫久久久 | 国产视频网站在线| 亚洲欧美另类图片小说| 干日本少妇首页| 亚洲人体在线| 国产视频久久网| 国产一区二区视频在线观看免费| 亚洲一区中文| 91久久伊人青青碰碰婷婷| 日本啊v在线| 一区二区三区丝袜| 91制片厂毛片| 麻豆精品少妇| 久久精品久久久久| 69亚洲精品久久久蜜桃小说| 国产成人精品免费网站| 午夜午夜精品一区二区三区文| av中文字幕电影在线看| 欧美日韩色一区| 亚洲精品视频大全| 韩国在线一区| 成人淫片在线看| 国产资源在线播放| 精品久久中文字幕| 无码人妻一区二区三区免费n鬼沢| 国产影视一区| 91av中文字幕| 免费观看的毛片| 亚洲男女一区二区三区| 国产福利在线免费| 国产成人三级| 欧美与欧洲交xxxx免费观看| 蜜桃av噜噜一区二区三区麻豆| 污污网站在线看| 曰韩精品一区二区| 小泽玛利亚视频在线观看| 免费精品国产| 97在线观看免费| www.看毛片| 亚洲男人电影天堂| 超碰成人在线播放| 奇米影视亚洲| 国产精品福利网站| 经典三级在线| 欧美性猛交xxxxx水多| 香港三日本8a三级少妇三级99| 欧美不卡高清| 成人欧美一区二区三区在线湿哒哒 | 国产一区不卡在线| 一区二区视频在线播放| 日韩精品免费观看视频| 亚洲天堂男人天堂女人天堂| 中文字幕av影院| 91在线你懂得| 男人揉女人奶房视频60分| 亚洲人成亚洲精品| 国产不卡av在线免费观看| 国产天堂在线| 欧美四级电影网| 亚洲欧美另类日本| 韩国一区二区视频| 4444在线观看| 成人性生交大片免费看96| 久久久亚洲影院| 亚洲a视频在线观看| 亚洲国产精品久久久久婷婷884| 久久久久国产免费| 亚洲东热激情| 国产丝袜不卡| 日韩电影大全网站| 中文字幕视频一区二区在线有码| 一级黄色大毛片| 亚洲人成7777| 波多野结衣办公室双飞| 99热免费精品| 视频一区视频二区视频三区高| 精品176极品一区| 久久久www成人免费精品| 99国产在线播放| 亚洲已满18点击进入久久| 亚洲一区二区三区综合| 亚洲制服少妇| 亚洲电影一二三区| 欧美国产亚洲精品| 欧美影院久久久| 日本成人在线播放| 亚洲成人久久网| 无码人妻一区二区三区免费| 亚洲欧美怡红院| 性高潮免费视频| 日韩中文字幕麻豆| 99中文字幕在线观看| 亲子伦视频一区二区三区| 国产精品电影网站| 亚洲夜夜综合| 国产亚洲精品久久| www.av在线.com| 色哟哟国产精品| 欧美丰满熟妇bbbbbb| 91原创在线视频| 国产永久免费网站| 国产一区二区高清| 大桥未久一区二区| 自拍欧美一区| av免费观看久久| 日韩毛片一区| 久久久亚洲国产| 精品51国产黑色丝袜高跟鞋| 日韩经典一区二区三区| 99riav国产| 欧美艳星brazzers| 国产成人在线免费观看视频| 国产精品久久久久四虎| 成人手机在线免费视频| 国产一区二区毛片| 色婷婷成人在线| 久久大逼视频| 免费高清一区二区三区| 久久综合av| 青青草久久网络| 国产一区调教| 91精品久久久久久蜜桃| 国产一区一一区高清不卡| 午夜精品三级视频福利| 超碰公开在线| 亚洲片在线观看| 天堂中文资源在线观看| 欧美哺乳videos| 国产在成人精品线拍偷自揄拍| 色欧美乱欧美15图片| 国产乱码久久久久久| 亚洲欧美韩国综合色| 国产视频123区| 国产三级久久久| 国内精品久久99人妻无码| 成人免费看黄yyy456| 久久精品一卡二卡| 韩国毛片一区二区三区| 天天爽人人爽夜夜爽| 久久视频一区| 久久美女福利视频| 国产亚洲精品v| 无码精品a∨在线观看中文| 亚洲午夜久久久久久尤物| 青青草免费在线视频观看| 999视频精品| 亚洲一区二区在线看| 日韩不卡一区| 自拍偷拍一区二区三区| 色综合色综合| 在线成人性视频| 99久久久久国产精品| 亚洲一卡二卡| 天天做天天爱天天综合网2021| 色综合影院在线观看| 日韩av自拍| 影音欧美亚洲| 91精品99| www.夜夜爱| 亚洲青色在线| 国产精品自拍片| 美女久久一区| 在线视频日韩一区| 老司机一区二区| 亚洲精品国产一区二区三区| 极品少妇一区二区| 古装做爰无遮挡三级聊斋艳谭| 国产91对白在线观看九色| 亚洲av无码一区东京热久久| av电影天堂一区二区在线观看| 北岛玲一区二区| 国产亚洲美州欧州综合国| 国产综合精品久久久久成人av| 国产精品理论在线观看| 一区二区视频免费看| 舔着乳尖日韩一区| 亚洲中文一区二区| 69堂国产成人免费视频| 亚洲国产精品二区| 日韩国产在线播放| √新版天堂资源在线资源| 欧美大成色www永久网站婷| 色吧亚洲日本| 国产欧美精品久久久| 一区二区三区免费在线看| 久久精品国产精品国产精品污| 不卡视频在线| 韩日视频在线观看| 日韩电影在线观看一区| 亚洲在线观看网站| 99国产精品一区| 影音先锋男人看片资源| 亚洲图片欧美综合| 久久精品五月天| 日韩一区二区电影| 男女污污视频在线观看| 久久精品久久久久| 性欧美18xxxhd| 成人在线播放av| 久久成人高清| 伊人再见免费在线观看高清版| 中文亚洲字幕| 欧美一级小视频| 国产亚洲精品aa| 国产亚洲欧美久久久久| 在线观看91精品国产入口| 国产999久久久| 亚洲丝袜在线视频| 国内在线视频| 国产在线精品自拍| 中文字幕中文字幕精品| 精品国产av无码一区二区三区| 日本成人中文字幕| 国产老熟女伦老熟妇露脸| 18涩涩午夜精品.www| 天天操夜夜操视频| 精品乱码亚洲一区二区不卡| 1区2区3区在线观看| 欧美在线视频播放| 国产精品22p| 日韩精品福利片午夜免费观看| 日韩综合一区二区| 加勒比精品视频| 一级女性全黄久久生活片免费| 中国一级片黄色一级片黄| 国产视频丨精品|在线观看| 影音先锋男人在线资源| 91精品国产综合久久久久久久久| 亚洲成人一品| www在线观看免费| 成人一区二区三区在线观看| 四虎884aa成人精品| 欧美三区在线视频| 国模吧精品人体gogo| 亲子乱一区二区三区电影| 农村少妇一区二区三区四区五区 | 国产精品久久久久久久小唯西川| 外国成人激情视频| 亚洲色图 在线视频| 久久影音资源网| √资源天堂中文在线| 日韩风俗一区 二区| 国产丝袜精品丝袜| 国产成人精品福利一区二区三区| 一区二区中文| 国产成人美女视频| 亚洲三级理论片| 国产精品九九九九| 久久成人一区二区| 久久精品一级| 4444在线观看| 成人免费视频一区| 不卡的免费av| 亚洲成人激情在线| 国产理论在线| 蜜桃精品久久久久久久免费影院| 国产精品婷婷| 成都免费高清电影| 欧美亚洲愉拍一区二区| 91涩漫在线观看| 91精品久久久久久久久久| 国产精品x453.com| 国产男女无遮挡猛进猛出| 一区二区三区高清在线| 亚洲第一天堂在线观看| 国产69精品久久久| 亚洲福利网站| 亚洲 欧美 另类人妖| 国产精品久久久久桃色tv| 99久久精品日本一区二区免费| 欧美成人精品xxx| 精品三级av在线导航| 欧美 日韩 国产一区| 国产亚洲制服色| 国产露脸国语对白在线| 欧美精品在线免费观看| 久久超级碰碰| 一本色道无码道dvd在线观看| 国产精品久久久久久久岛一牛影视 | 狠狠色综合色区| 日韩国产欧美在线观看| 天天色影综合网| 亚洲第一区在线| 欧美xxxx做受欧美护士| 91制片厂免费观看| 成+人+亚洲+综合天堂| 亚洲图片欧美日韩| 欧美插天视频在线播放| 亚洲欧美成人vr| 国产精品嫩草影院8vv8| 亚洲午夜在线视频| 二区三区在线| 成人黄视频免费| 日韩精品一卡二卡三卡四卡无卡| 国产大片免费看| 亚洲欧美国产日韩天堂区| 免费欧美网站| 亚洲精品高清无码视频| 一区二区三区国产精品| yourporn在线观看中文站| av一区二区在线看| 日本色综合中文字幕| 国产一级aa大片毛片| 中文字幕亚洲欧美一区二区三区 | 久久久久久久久久影院| 久久精品国产91精品亚洲|