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

Simdjson:一個(gè)超高速的JSON解析工具

新聞 開發(fā)工具
JSON文檔在Internet上無處不在,服務(wù)器花費(fèi)大量時(shí)間來解析這些文檔。我們希望在進(jìn)行完全驗(yàn)證(包括字符編碼)時(shí)盡可能使用常用的SIMD指令來加速JSON本身的解析。

 JSON文檔在Internet上無處不在,服務(wù)器花費(fèi)大量時(shí)間來解析這些文檔。我們希望在進(jìn)行完全驗(yàn)證(包括字符編碼)時(shí)盡可能使用常用的SIMD指令來加速JSON本身的解析。

表現(xiàn)結(jié)果

simdjson使用的指令比解析器RapidJSON少四分之三,比sajson少百分之五十。據(jù)我們所知,simdjson是一個(gè)在商用處理器上以每秒千兆字節(jié)運(yùn)行的完全驗(yàn)證的JSON解析器。

在Skylake處理器上,twitter.json文件上各種處理器的解析速度(以GB / s為單位)如下。

解析器 GB /秒
simdjson 2.2
RapidJSON編碼驗(yàn)證 0.51
RapidJSON編碼驗(yàn)證,原位 0.71
sajson(原狀,動(dòng)態(tài)) 0.70
sajson(insitu,static) 0.97
dropbox 0.14
FASTJSON 0.26
gason 0.85
ultrajson 0.42
jsmn 0.28
cJSON 0.34

要求

我們通過Visual Studio 2017或更高版本支持Linux或macOS等平臺(tái)以及Windows;

帶有高級(jí)矢量擴(kuò)展指令集的處理器(即,2013年發(fā)布的Haswell微體系結(jié)構(gòu)的Intel處理器和2017年發(fā)布的Zen微體系結(jié)構(gòu)的AMD處理器);

最近的C ++編譯器(例如,GNU GCC或LLVM CLANG或Visual Studio 2017),我們假設(shè)C ++ 17。GNU GCC 7或更高版本或LLVM的clang 6或更高版本。

License

此代碼在Apache License 2.0下提供。

在Windows下,我們使用 windows/dirent_portable.h 文件(在我們的庫(kù)代碼之外)構(gòu)建一些工具

代碼示例

  1. #include "simdjson/jsonparser.h" 
  2.  
  3. /... 
  4.  
  5. const char * filename = ... // 
  6.  
  7. //使用您想要的任何方式獲取JSON文檔的字符串 
  8. std::string_view p = get_corpus(filename); 
  9. ParsedJson pj; 
  10. pj.allocateCapacity(p.size());//分配內(nèi)存以解析p.size()字節(jié) 
  11. const int res = json_parse(p, pj); //進(jìn)行解析,成功時(shí)返回0  
  12. //解析完成! 
  13. if(res!= 0){ 
  14.      //您可以使用“simdjson / simdjson.h”標(biāo)頭來訪問錯(cuò)誤消息  
  15.    std::cout << "Error parsing:" << simdjson::errorMsg(res) << std::endl; 
  16. //你可以安全地刪除字符串內(nèi)容 
  17. free((void*)p.data()); 
  18. //可以在這里使用ParsedJson文檔 
  19. // js可以與其他json_parse調(diào)用一起使用。 

如果您不介意為每個(gè)新的JSON文檔分配內(nèi)存開銷,也可以使用更簡(jiǎn)單的API:

  1. #include "simdjson/jsonparser.h" 
  2.  
  3. / ... 
  4.  
  5. const char * filename = ... // 
  6. std::string_view p = get_corpus(filename); 
  7. ParsedJson pj = build_parsed_json(p);  //進(jìn)行解析 
  8. //此時(shí)你不再需要p,可以執(zhí)行aligned_free((void *)p.data()) 
  9. if( ! pj.isValid() ) { 
  10.      //出錯(cuò)了  

用法:簡(jiǎn)單的版本

有關(guān)用法,請(qǐng)參閱“singleheader”存儲(chǔ)庫(kù)的文件“amalgamation_demo.cpp”。這不需要特定的構(gòu)建系統(tǒng):只需在包含路徑中復(fù)制項(xiàng)目中的文件即可。然后,您可以非常簡(jiǎn)單地包含它們:

  1. #include <iostream> 
  2. #include "simdjson.h" 
  3. #include "simdjson.cpp" 
  4. int main(int argc, char *argv[]) { 
  5.   const char * filename = argv[1]; 
  6.   std::string_view p = get_corpus(filename); 
  7.   ParsedJson pj = build_parsed_json(p); // do the parsing 
  8.   if( ! pj.isValid() ) { 
  9.     std::cout << "not valid" << std::endl; 
  10.   } else { 
  11.     std::cout << "valid" << std::endl; 
  12.   } 
  13.   return EXIT_SUCCESS; 

我們需高級(jí)矢量擴(kuò)展指令集指令的硬件支持。您必須確保指示編譯器根據(jù)需要使用這些說明。在GNU GCC或LLVM clang等編譯器下, -march=native 最近的Intel處理器(Haswell或更好)上使用的標(biāo)志就足夠了。為了便于二進(jìn)制文件的可移植性,您還可以直接指定Haswell處理器( -march=haswell )。

注意:在某些設(shè)置中,可能需要預(yù)編譯 simdjson.cpp 而不是包含它。

用法(在Linux或macOS等平臺(tái)上使用舊版Makefile)

要求:最近的clang或gcc,和make。我們建議至少使用GNU GCC / G ++ 7或LLVM clang 6.需要像Linux或macOS這樣的系統(tǒng)。

測(cè)試:

  1. make 
  2. make test 

要運(yùn)行基準(zhǔn)測(cè)試:

  1. make parse 
  2. ./parse jsonexamples/twitter.json 

在Linux下,該 parse 命令提供了性能計(jì)數(shù)器的詳細(xì)分析。

運(yùn)行比較基準(zhǔn)測(cè)試(與其他解析器):

  1. make benchmark 

用法(在Linux或macOS等平臺(tái)上使用CMake)

要求:我們需要新版本的cmake。在macOS上,安裝cmake的最簡(jiǎn)單方法可能是使用 brew然后鍵入

  1. brew install cmake 

在Linux上 有一個(gè) 相同的Brew也可以以相同的方式工作 。

你需要一個(gè)像clang或gcc這樣的新編譯器。我們建議至少使用GNU GCC / G ++ 7或LLVM clang 6.例如,您可以使用brew安裝新的編譯器:

  1. brew install gcc@8 

可選:您需要通過設(shè)置CC和CXX變量告訴cmake您希望使用哪個(gè)編譯器。bash下,你可以用諸如命令這樣做 export CC=gcc-7 和 export CXX=g++-7 。

構(gòu)建:在項(xiàng)目存儲(chǔ)庫(kù)中,執(zhí)行以下操作:

  1. mkdir build 
  2. cd build 
  3. cmake .. 
  4. make 
  5. make test 

默認(rèn)情況下,它構(gòu)建一個(gè)共享庫(kù)(例如,Linux上的libsimdjson.so)。

您可以構(gòu)建一個(gè)靜態(tài)庫(kù):

  1. mkdir buildstatic 
  2. cd buildstatic 
  3. cmake -DSIMDJSON_BUILD_STATIC=ON .. 
  4. make 
  5. make test 

在某些情況下,您可能希望指定編譯器,尤其是在系統(tǒng)上的默認(rèn)編譯器太舊的情況下。您可以按以下步驟操作:

  1. brew install gcc@8 
  2. mkdir build 
  3. cd build 
  4. export CXX=g++-8 CC=gcc-8 
  5. cmake .. 
  6. make 
  7. make test 

用法(使用Visual Studio在Windows上進(jìn)行CMake)

我們假設(shè)您有一臺(tái)普通的Windows PC,至少包含Visual Studio 2017和支持高級(jí)矢量擴(kuò)展指令集的x64處理器(2013 Intel Haswell或更高版本)。

從GitHub獲取simdjson代碼,例如,使用 GitHub Desktop 克隆它;

安裝 CMake 。安裝時(shí),請(qǐng)確保 cmake 從命令行詢問是否可用。請(qǐng)選擇新版本的cmake;

在simdjson中創(chuàng)建一個(gè)子目錄,例如 VisualStudio;

使用shell,轉(zhuǎn)到這個(gè)新創(chuàng)建的目錄;

cmake -DCMAKE_GENERATOR_PLATFORM=x64 .. 在 VisualStudio 存儲(chǔ)庫(kù)中鍵入shell 。(或者,如果要構(gòu)建DLL,可以使用命令行 cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DSIMDJSON_BUILD_STATIC=OFF .. )

末尾一個(gè)命令在新創(chuàng)建的目錄中創(chuàng)建了一個(gè)Visual Studio解決方案文件(例如 simdjson.sln)。在Visual Studio中打開此文件。您現(xiàn)在應(yīng)該能夠構(gòu)建項(xiàng)目并運(yùn)行測(cè)試。例如,在 Solution Explorer 窗口(可從 View 菜單中獲得)中,右鍵單擊 ALL_BUILD 并選擇 Build 。要測(cè)試代碼,仍然在 Solution Explorer 窗口中,選擇 RUN_TESTS 并選擇 Build 。

用法(在Windows,Linux和MacOS上使用vcpkg)

Windows,Linux和MacOS上的 vcpkg 用戶可以 simdjson 使用他們喜歡的shell中的一個(gè)命令下載和安裝。

在Linux和MacOS上:

  1. $ ./vcpkg install simdjson 

將構(gòu)建并安裝 simdjson 為靜態(tài)庫(kù)。

在Windows(64位)上:

  1. .\vcpkg.exe install simdjson:x64-windows 

將構(gòu)建并安裝 simdjson 為共享庫(kù)。

  1. .\vcpkg.exe install simdjson:x64-windows-static 

將構(gòu)建并安裝 simdjson 為靜態(tài)庫(kù)。

這些命令還將打印出有關(guān)如何使用MSBuild或基于CMake的項(xiàng)目庫(kù)的說明。

如果您發(fā)現(xiàn) simdjson 附帶的版本 vcpkg 已過期,請(qǐng)隨時(shí)通過提交 vcpkg 問題或創(chuàng)建PR 向社區(qū)報(bào)告。

工具

json2json mydoc.json 解析文檔,構(gòu)造模型,然后將結(jié)果轉(zhuǎn)儲(chǔ)回標(biāo)準(zhǔn)輸出

json2json -d mydoc.json 解析文檔,構(gòu)造模型,然后將模型(作為磁帶)轉(zhuǎn)儲(chǔ)到標(biāo)準(zhǔn)輸出。磁帶格式在隨附文件中描述 tape.md

minify mydoc.json`縮小JSON文檔,將結(jié)果輸出到標(biāo)準(zhǔn)輸出。縮小意味著刪除不需要的空格字符。

范圍

我們提供快速解析器。它根據(jù)各種規(guī)格完全驗(yàn)證輸入。解析器構(gòu)建一個(gè)有用的不可變(只讀)DOM(文檔 – 對(duì)象模型),以后可以訪問它。

為了簡(jiǎn)化工程,我們做了一些假設(shè):

我們支持UTF-8(以及ASCII),沒有別的(沒有拉丁語,沒有UTF-16)。我們不認(rèn)為這是一個(gè)真正的限制,因?yàn)槲覀冋J(rèn)為沒有任何嚴(yán)重的應(yīng)用程序需要在沒有ASCII或UTF-8編碼的情況下處理JSON數(shù)據(jù);

JSON文檔中的所有字符串最多可包含UTF-8(4GB)中的4294967295個(gè)字節(jié)。要強(qiáng)制執(zhí)行此約束,我們拒絕解析包含超過4294967295字節(jié)(4GB)的文檔。這應(yīng)該適應(yīng)大多數(shù)JSON文檔;

我們假設(shè)高級(jí)矢量擴(kuò)展指令集支持在AMD和英特爾生產(chǎn)的所有主流x86處理器中都可用。盡管可以完成,但不包括對(duì)非x86處理器的支持。我們計(jì)劃支持ARM處理器(請(qǐng)求幫助);

如果發(fā)生故障,我們只會(huì)報(bào)告故障,而不會(huì)指出問題的性質(zhì)。(這可以在不影響性能的情況下輕松改進(jìn));

在規(guī)范允許的情況下,我們?cè)试S對(duì)象內(nèi)的重復(fù)鍵(像sajson這樣的其他解析器也這樣做);

性能針對(duì)跨越至少幾十千字節(jié)到幾兆字節(jié)的JSON文檔進(jìn)行了優(yōu)化:必須解析許多小型JSON文檔或一個(gè)真正龐大的JSON文檔的性能問題是不同的。

我們的目標(biāo)不是提供通用的JSON庫(kù)。像RapidJSON這樣的庫(kù)提供的不僅僅是解析,它還可以幫助您生成JSON并提供各種其他方便的功能。我們只解析文檔。

特征

輸入字符串未修改,(像sajson和RapidJSON這樣的解析器使用輸入字符串作為緩沖區(qū))。

我們將整數(shù)和浮點(diǎn)數(shù)解析為單獨(dú)的類型,這允許我們支持[-9223372036854775808,9223372036854775808]中的大型64位整數(shù),如C / C ++ long long 。在區(qū)分整數(shù)和浮點(diǎn)數(shù)的解析器中,并非所有解析器都支持64位整數(shù)。(例如,sajson拒絕整數(shù)大于或等于2147483648的JSON文件.FreeJSON將解析包含過長(zhǎng)整數(shù)的文件,如18446744073709551616作為浮點(diǎn)數(shù))當(dāng)我們無法將整數(shù)表示為帶符號(hào)的64位時(shí)值,我們拒絕JSON文檔。

在解析過程中進(jìn)行完整的UTF-8驗(yàn)證(像fastjson,gason和dropbox json11這樣的解析器不會(huì)進(jìn)行UTF-8驗(yàn)證);完全驗(yàn)證了這些數(shù)字(像gason和ultranjson這樣的解析器將接受 [0e+] 為有效的JSON);驗(yàn)證未轉(zhuǎn)義字符的字符串內(nèi)容(像fastjson和ultrajson這樣的解析器接受未轉(zhuǎn)義的換行符和字符串中的標(biāo)簽)。

Architecture

解析器分兩個(gè)階段工作:

階段1.(查找標(biāo)記)快速標(biāo)識(shí)結(jié)構(gòu)元素,字符串等。我們?cè)谀莻€(gè)階段驗(yàn)證UTF-8編碼。

階段2.(結(jié)構(gòu)構(gòu)建)涉及構(gòu)建排序的“樹”(具體化為磁帶)以瀏覽數(shù)據(jù)。在此階段解析字符串和數(shù)字。

導(dǎo)航已解析的文檔

以下是將解析后的JSON轉(zhuǎn)儲(chǔ)回字符串的代碼示例:

  1. ParsedJson::iterator pjh(pj); 
  2.     if (!pjh.isOk()) { 
  3.       std::cerr << " Could not iterate parsed result. " << std::endl; 
  4.       return EXIT_FAILURE; 
  5.     } 
  6.     compute_dump(pj); 
  7.     // 
  8.     // where compute_dump is : 
  9.  
  10. void compute_dump(ParsedJson::iterator &pjh) { 
  11.   if (pjh.is_object()) { 
  12.     std::cout << "{"
  13.     if (pjh.down()) { 
  14.       pjh.print(std::cout); // must be a string 
  15.       std::cout << ":"
  16.       pjh.next(); 
  17.       compute_dump(pjh); // let us recurse 
  18.       while (pjh.next()) { 
  19.         std::cout << ","
  20.         pjh.print(std::cout); 
  21.         std::cout << ":"
  22.         pjh.next(); 
  23.         compute_dump(pjh); // let us recurse 
  24.       } 
  25.       pjh.up(); 
  26.     } 
  27.     std::cout << "}"
  28.   } else if (pjh.is_array()) { 
  29.     std::cout << "["
  30.     if (pjh.down()) { 
  31.       compute_dump(pjh); // let us recurse 
  32.       while (pjh.next()) { 
  33.         std::cout << ","
  34.         compute_dump(pjh); // let us recurse 
  35.       } 
  36.       pjh.up(); 
  37.     } 
  38.     std::cout << "]"
  39.   } else { 
  40.     pjh.print(std::cout); // just print the lone value 
  41.   } 

以下函數(shù)將查找所有user.id整數(shù):

  1. void simdjson_traverse(std::vector<int64_t> &answer, ParsedJson::iterator &i) { 
  2.   switch (i.get_type()) { 
  3.   case '{'
  4.     if (i.down()) { 
  5.       do { 
  6.         bool founduser = equals(i.get_string(), "user"); 
  7.         i.next(); // move to value 
  8.         if (i.is_object()) { 
  9.           if (founduser && i.move_to_key("id")) { 
  10.             if (i.is_integer()) { 
  11.               answer.push_back(i.get_integer()); 
  12.             } 
  13.             i.up(); 
  14.           } 
  15.           simdjson_traverse(answer, i); 
  16.         } else if (i.is_array()) { 
  17.           simdjson_traverse(answer, i); 
  18.         } 
  19.       } while (i.next()); 
  20.       i.up(); 
  21.     } 
  22.     break
  23.   case '['
  24.     if (i.down()) { 
  25.       do { 
  26.         if (i.is_object_or_array()) { 
  27.           simdjson_traverse(answer, i); 
  28.         } 
  29.       } while (i.next()); 
  30.       i.up(); 
  31.     } 
  32.     break
  33.   case 'l'
  34.   case 'd'
  35.   case 'n'
  36.   case 't'
  37.   case 'f'
  38.   default
  39.     break
  40.   } 

深入比較

如果您想了解各種解析器如何驗(yàn)證給定的JSON文件:

  1. make allparserscheckfile 
  2. ./allparserscheckfile myfile.json 

對(duì)于性能比較:

  1. make parsingcompetition 
  2. ./parsingcompetition myfile.json 

進(jìn)行更廣泛的比較:

  1. make allparsingcompetition 
  2. ./allparsingcompetition myfile.json 

 

責(zé)任編輯:張燕妮 來源: freebuf
相關(guān)推薦

2013-07-29 09:36:05

100G傳輸100G

2012-04-17 13:12:48

2010-03-04 10:20:59

超高速寬帶谷歌市

2025-04-27 03:22:00

2014-09-04 16:40:17

FTTx

2021-03-08 17:09:14

5G網(wǎng)絡(luò)俄羅斯

2016-12-28 17:04:51

1Gbps寬帶‘網(wǎng)絡(luò)

2014-02-18 09:19:04

LTE100G400G

2023-08-31 14:24:06

5G技術(shù)物聯(lián)網(wǎng)

2009-07-09 11:19:01

2010-03-08 10:52:29

思科超高速互聯(lián)網(wǎng)接入系統(tǒng)

2009-08-18 17:14:47

100G超高速以太網(wǎng)

2015-01-05 15:11:23

日本光纖400Gbit

2010-03-10 09:29:54

寬帶超高速互聯(lián)網(wǎng)思科

2017-07-11 06:23:50

數(shù)據(jù)中心互聯(lián)網(wǎng)球經(jīng)濟(jì)

2015-08-18 15:13:10

2010-02-24 09:07:55

思科Cisco超高速互聯(lián)網(wǎng)

2011-05-25 15:34:17

jQueryJSON

2009-02-04 09:37:14

超高速網(wǎng)絡(luò)下一代寬帶

2024-11-25 12:00:00

C#日志記錄器
點(diǎn)贊
收藏

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

欧美日韩视频免费| 日韩美女福利视频| 好吊操视频这里只有精品| 最新av在线播放| 成人av网在线| 国产精品99久久久久久久久 | 国产aaa免费视频| 婷婷亚洲一区二区三区| 免费国产亚洲视频| 欧美激情在线一区| 精品亚洲aⅴ无码一区二区三区| 激情视频亚洲| 一本一本大道香蕉久在线精品 | 日韩精品色哟哟| 欧美成人精品h版在线观看| 三级黄色片网站| 懂色av色香蕉一区二区蜜桃| 日韩欧美国产骚| 日韩中文在线字幕| 成人福利在线| eeuss影院一区二区三区| 国产精品一区二区三区久久| 国产视频91在线| 91av精品| 色av吧综合网| 久久国产精品无码一级毛片| 日韩精品三级| 欧美人与z0zoxxxx视频| 国产又大又硬又粗| sm久久捆绑调教精品一区| 国产日韩精品一区二区浪潮av| 超碰97人人人人人蜜桃| 欧美三级网站在线观看| 国产精品资源| 蜜乳av综合| 99久久激情| 亚洲丁香婷深爱综合| 毛片毛片毛片毛| 蜜桃视频成人m3u8| 欧美日韩亚洲一区二区| 丁香花在线影院观看在线播放| 久久久国产精品久久久| 色哟哟在线观看视频| 在线中文字幕电影| 国产精品国模大尺度视频| 免费99视频| 天天射天天操天天干| 国产成人三级在线观看| 亚洲iv一区二区三区| 中文字幕码精品视频网站| 爽好久久久欧美精品| 欧美中文字幕视频在线观看| 欧美日韩精品区| 日韩亚洲国产欧美| 91精品国产免费久久久久久| 中日韩精品视频在线观看| 在线观看不卡| 午夜精品www| 国产又色又爽又黄的| 国产手机视频一区二区| 欧美中在线观看| 亚洲天堂男人av| 久久婷婷激情| 国产日韩精品在线| 国产欧美熟妇另类久久久| 国产在线精品一区二区不卡了 | 国产精品久久久久久久久久久久久久久久久 | 亚洲国产成人精品一区二区三区| 国产伦理精品不卡| 亚洲淫片在线视频| 粉嫩小泬无遮挡久久久久久| 成人免费观看av| 免费在线观看一区二区| av在线免费一区| 国产精品久久精品日日| 国产91porn| av在线网页| 色婷婷激情久久| 国产成年人视频网站| 亚洲精品乱码日韩| 欧美成人综合网站| 女尊高h男高潮呻吟| 成人嘿咻视频免费看| 久久精品国产视频| 久久精品99国产精| 亚洲免费影视| 国产在线播放不卡| 欧美一级特黄aaaaaa| 国产午夜亚洲精品羞羞网站| 一区二区不卡在线观看| 免费网站在线观看人| 欧美日韩亚洲91| 日韩av在线综合| 国产日韩欧美中文在线| 亚洲国产精品va在线| 中文字幕欧美激情极品| 欧美视频网站| 国产精品成人一区二区| www国产一区| 久久这里都是精品| 最新av在线免费观看| а√天堂中文资源在线bt| 色婷婷亚洲综合| 国产精品成人免费一区久久羞羞| 免费视频亚洲| 欧美大片免费观看| 成年人视频免费| 成人免费黄色在线| 国产又爽又黄ai换脸| 天堂中文最新版在线中文| 欧美日本一区二区三区四区| 在线观看国产网站| 亚洲色图88| 国产精品九九九| 色婷婷av一区二区三区之红樱桃 | 午夜欧美一区二区三区免费观看| 四季久久免费一区二区三区四区| 91高清视频在线| 国产草草浮力影院| 女生裸体视频一区二区三区| 国产精品美女午夜av| 五月婷婷狠狠干| 亚洲欧美日韩中文字幕一区二区三区 | 影音先锋日韩资源| 国产在线视频91| 大片免费播放在线视频| 精品久久久久久中文字幕大豆网 | 久久国产精品久久国产精品| 人人草在线观看| 97se亚洲国产综合在线| 成人黄色大片网站| 亚洲精品影片| 美女av一区二区三区| 91国产免费视频| 欧美国产日韩在线观看| 国产福利视频在线播放| 欧美变态挠脚心| 久久久视频精品| 午夜精品久久久久久久99老熟妇| 最新国产の精品合集bt伙计| 羞羞的视频在线| 日韩大片在线播放| 国产精品久久久久999| 国产专区在线播放| 日韩欧美精品网址| 噜噜噜在线视频| 极品av少妇一区二区| 懂色一区二区三区av片| 影音先锋中文在线视频| 日韩一区二区在线观看视频| 波多野结衣在线网址| 国产在线观看免费一区| 一区二区在线不卡| а天堂中文最新一区二区三区| 久久精品视频一| www.久久精品.com| 一区二区三区久久| 天天躁日日躁狠狠躁免费麻豆| 欧美日韩午夜| 国产一区二区三区免费不卡| 美女av在线免费看| 亚洲视频日韩精品| 中文字幕在线播放不卡| 亚洲欧洲www| 韩国三级丰满少妇高潮| 在线观看日韩av电影| 欧美精品123| 国产福利亚洲| 久久伊人精品一区二区三区| 亚洲爆乳无码一区二区三区| 欧美日韩亚洲系列| 啪啪一区二区三区| 国产激情视频一区二区三区欧美 | 国产一区成人| 视频一区视频二区视频三区高| 日韩三级一区| 久久久欧美一区二区| 毛片在线播放网址| 欧美群妇大交群的观看方式| 麻豆成人在线视频| 91在线精品秘密一区二区| 五月天婷婷激情视频| 中文字幕乱码亚洲无线精品一区| 国产精品毛片va一区二区三区| 91av亚洲| 欧美成年人视频| 色综合888| 欧美精品 国产精品| 四虎永久在线精品| 国产欧美日韩三级| 久久av一区二区三| 奇米精品一区二区三区四区| 妞干网在线播放| 精品国产91久久久久久浪潮蜜月| 亚洲一区二区三区xxx视频| 色戒汤唯在线| 久久精品国产亚洲精品| 亚州男人的天堂| 91精品国产综合久久福利 | 蘑菇福利视频一区播放| 99热一区二区三区| 欧美激情在线精品一区二区三区| 96pao国产成视频永久免费| 三级中文字幕在线观看| 精品国产自在精品国产浪潮| 少妇激情av一区二区| 欧美一区二区三区色| 久久久久99精品成人片我成大片| 亚洲精品写真福利| 精品久久久久久中文字幕人妻最新| 国产真实乱子伦精品视频| 久久久久久久久久久久久久国产| 亚洲欧美偷拍自拍| 国产精品久久久久久久电影| 亚洲aⅴ男人的天堂在线观看| 99热精品在线播放| 色哟哟日韩精品| 精品肉丝脚一区二区三区| 欧美高清在线一区二区| 亚洲欧美日韩成人| 黄色免费一级视频| 成人午夜碰碰视频| 久久6免费视频| 日韩不卡手机在线v区| 国产一区二区四区| 中文精品电影| 午夜视频久久久久久| 亚洲自拍偷拍色图| 日本成人三级电影| 国产69精品99久久久久久宅男| 欧美激情办公室videoshd| 亚洲色无码播放| 亚洲一级片网站| 午夜国产欧美理论在线播放 | 婷婷中文字幕在线观看| 日韩成人午夜精品| 日韩精品一区二区三区不卡 | 国产精品揄拍500视频| 精品国产视频在线观看| 福利在线导航136| 日韩精品久久久久久福利| www.香蕉视频| 欧美成人高清电影在线| www.xxx国产| 日韩视频在线你懂得| 国产激情视频在线播放 | 999在线免费视频| 久久精品二区三区| 爆乳熟妇一区二区三区霸乳| 日韩中文字幕一区二区三区| 成人3d动漫一区二区三区| 久久影院亚洲| 亚洲欧美另类动漫| 免费在线看成人av| 久久撸在线视频| 久久99最新地址| 中文国产在线观看| 国产成人在线免费观看| 亚洲黄色小说在线观看| 北条麻妃国产九九精品视频| 欲求不满的岳中文字幕| 26uuu国产一区二区三区| 久久精品—区二区三区舞蹈| 国产精品免费丝袜| 国产精品三区在线观看| 亚洲一区二区三区美女| 在线观看国产亚洲| 精品国产福利在线| 久草热在线观看| 欧美一区二区福利视频| 丰满人妻一区二区三区无码av| 日韩高清人体午夜| yw在线观看| 久久天天躁狠狠躁夜夜av| free性欧美16hd| 国产精品99久久久久久人 | 欧美性猛片xxxxx免费中国| 久久久久久久久中文字幕| 亚洲一级少妇| 成人国产精品久久久| www国产精品| 色播亚洲婷婷| 欧美日一区二区在线观看| 欧美一区二区三区爽大粗免费| 美女一区二区视频| 国产人妖在线观看| 国产日韩欧美精品综合| 欧美日韩精品一区二区三区视频播放| 亚洲不卡在线观看| 中文字幕av免费观看| 日韩精品一区二区三区中文精品| 视频二区在线| 久久久97精品| 毛片无码国产| 99re在线观看| 成人精品视频| a级黄色片网站| 久久久精品五月天| 亚洲妇女无套内射精| 国产欧美日韩亚州综合 | 精品久久久一区| 91禁在线观看| 日韩精品在线免费观看| 成人国产免费电影| 国产精品91久久久久久| av毛片精品| 中文字幕av日韩精品| 久久xxxx| 国产69视频在线观看| 国产精品二区一区二区aⅴ污介绍| 国产成人无码精品亚洲| 欧美一区二区三区不卡| 国产高清免费在线播放| 久久久久久伊人| 精品视频在线观看网站| 无码免费一区二区三区免费播放 | 在线视频你懂得一区二区三区| 精品国产99久久久久久宅男i| 亚洲欧美中文在线视频| 超碰在线cao| 国产伦一区二区三区色一情| 婷婷激情图片久久| 国产嫩草在线观看| 91小视频在线观看| 日本网站免费观看| 日韩午夜在线影院| 黄色的网站在线观看| 国产精品久久一区| 九九亚洲视频| 日本a级片免费观看| 成人高清免费观看| 久久久久久久久久久久国产| 欧美一区二区三区人| 免费大片在线观看www| 国产精品久久久久久久久久三级 | 国产精品21p| 日韩国产激情在线| 欧美a级在线观看| 精品蜜桃传媒| 日韩视频免费| v天堂中文在线| 欧美日韩激情小视频| 四虎永久在线精品免费网址| 欧美精品第一页在线播放| 日韩在线观看中文字幕| 国产精品自拍合集| 国产成人精品免费| 国产福利久久久| 亚洲成人黄色网址| 天堂电影一区| 日韩一区二区三区资源| 日产欧产美韩系列久久99| 天天操天天舔天天射| 欧美日韩综合色| 无遮挡的视频在线观看| 91精品一区二区| 欧美理论在线| www.日本高清| 日韩欧美在线第一页| 国产黄色免费在线观看| 国产精品丝袜一区二区三区| 亚洲91精品| 久久久无码人妻精品无码| 亚洲成人精品一区| 日韩在线免费播放| 国产精品狠色婷| 天天射天天综合网| 国产成人av片| 一本大道久久a久久精品综合| jizz日韩| 99国产视频在线| 久久精品官网| 国产午夜手机精彩视频| 亚洲成人教育av| 成人在线视频播放| 黄色网址在线免费看| 99在线视频精品| 小泽玛利亚一区二区三区视频| 久久色免费在线视频| 国产亚洲成av人片在线观黄桃| 99久久久无码国产精品6| 日韩理论片网站| 日韩在线视频观看免费| 国产精品免费久久久| 欧美国产另类| 国产三级av在线播放| 日韩一级大片在线观看| 神马午夜在线视频| 超碰成人在线免费观看| 成人免费视频视频| 中文天堂在线资源| 欧美极品美女视频网站在线观看免费 | freexxx性亚洲精品| 亚洲成人自拍视频| 国产91精品一区二区麻豆网站| 黄色一级视频免费看| 久久影视免费观看 | 亚洲色图都市激情| 久久久久成人黄色影片| 亚洲AV无码精品国产|