久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

C++ JSON庫選型:rapidjson解析序列化性能與Unicode避坑

C++ JSON庫選型:rapidjson解析序列化性能與Unicode避坑 簡介RapidJSON 源碼包面向需要高性能 JSON 處理的 C 開發(fā)者適用于大規(guī)模數(shù)據(jù)解析、序列化以及 Qt 等 Unicode 環(huán)境下的項(xiàng)目集成。其采用原生 C 類型與模板元編程優(yōu)化內(nèi)存管理和解析算法實(shí)測速度優(yōu)于 jsoncpp、lib_json并兼容多字節(jié)與 Unicode 編碼可降低跨字符集適配成本。壓縮包共 366 個文件約 1.91MB以 104 個 json 測試數(shù)據(jù)、64 個 cpp 與 62 個 h 源碼及頭文件為主另含 42 個 md 文檔和 22 個 png 圖示覆蓋實(shí)現(xiàn)代碼、單元測試與使用說明。已有 927 人學(xué)習(xí)下載適合直接閱讀源碼、對照測試用例理解解析流程并按項(xiàng)目需求裁剪編譯的讀者完整源碼也便于排查編碼與性能問題可作為自研 JSON 模塊的參考實(shí)現(xiàn)。1. 三份 JSON 源碼擺一起我為什么最后留下 rapidjson去年做一條離線數(shù)據(jù)通道單機(jī)每天要處理兩億多條 JSON 記錄峰值 QPS 漲上來之后最先變瓶頸的是 CPU 里那段反序列化。當(dāng)時手邊同時擺著三份源碼rapidjson、jsoncpp還有一份 lib_json 的現(xiàn)代 C 封裝。壓測跑完rapidjson 這套 C 里公認(rèn)好用、速度最快的 JSON 序列化解析器確實(shí)把另外兩個甩開了多字節(jié)和 Unicode 這條路上也最省心。這篇不寫官網(wǎng)的介紹只講我按什么維度比的、源碼里哪些開關(guān)會直接影響結(jié)論、以及哪些坑踩完才知道值不值。如果你正在三個庫里做選擇或者已經(jīng)把 rapidjson 拿進(jìn)項(xiàng)目但對它的內(nèi)存和編碼行為心里沒底下面這些對比記錄能讓你少走一段彎路。2. 解析和序列化誰更快四個維度把 rapidjson、jsoncpp、lib_json 擺上同一張表速度這個東西最容易被測錯。同一份代碼換個編譯選項(xiàng)、換個緩沖區(qū)策略、換個數(shù)據(jù)形態(tài)排名就能翻過來。我一般會先把變量固定住再分四個維度看編譯期開關(guān)、反序列化路徑、序列化路徑、數(shù)據(jù)形態(tài)。這四個維度定下來誰快誰慢就不是玄學(xué)了。2.1 先固定編譯期開關(guān)否則你測的都不是同一個 rapidjson很多人第一次對比就翻車在這里debug 構(gòu)建下 rapidjson 的RAPIDJSON_ASSERT走 assert 分支jsoncpp 那邊也沒有NDEBUG兩邊都在帶檢查跑測出來的時間跟 release 完全不是一個量級。我的做法是三個庫統(tǒng)一-O2 -DNDEBUG綁定同一個編譯器版本同一份 JSON 樣本跑之前先做一次 warmup。# 三個庫統(tǒng)一優(yōu)化級別和斷言開關(guān)否則比較沒有意義 g -stdc17 -O2 -DNDEBUG bench.cpp -I./rapidjson/include -o bench_rapidjson g -stdc17 -O2 -DNDEBUG bench.cpp -I./jsoncpp/include -ljsoncpp -o bench_jsoncpp # lib_json 一派多為 header-only只需要指定頭文件目錄 g -stdc17 -O2 -DNDEBUG bench.cpp -I./lib_json/include -o bench_libjson-O2之外還有幾個宏值得單獨(dú)說明。RAPIDJSON_SSE42和RAPIDJSON_SSE2會讓跳過空白字符的循環(huán)走 SIMD 指令解析器在長空白、格式化輸出場景下更快但要求目標(biāo)機(jī)器指令集支持線上機(jī)器不統(tǒng)一就別開。RAPIDJSON_HAS_STDSTRING打開后std::string能直接參與讀寫省掉一次c_str()加長度的手工傳遞用起來順手代價是多一層模板實(shí)例化。還有RAPIDJSON_NOMEMBERITERATORCLASS它砍掉MemberIterator類能壓一點(diǎn)編譯產(chǎn)物體積代價是遍歷成員時只能走指針式迭代。這些宏不是調(diào)優(yōu)參數(shù)是語義開關(guān)。開著 SSE 測出來的數(shù)和關(guān)著測出來的數(shù)不能放在一張表里比這點(diǎn)我吃過虧早期一版基準(zhǔn)里 rapidjson 領(lǐng)先幅度大得離譜回頭查發(fā)現(xiàn)對比工程一個開了 SSE42、一個沒開結(jié)論直接作廢。2.2 反序列化SAX 流式與 DOM 全量的分界點(diǎn)在內(nèi)存rapidjson 的反序列化有兩條路選錯了性能差異比換庫還大。SAX 走Reader加自定義Handler邊讀邊回調(diào)不建樹內(nèi)存占用跟 JSON 大小基本無關(guān)DOM 走Document::Parse一次性把整棵樹建在內(nèi)存池里之后隨便取。// SAX 路徑只統(tǒng)計(jì) key 數(shù)量不建樹內(nèi)存占用與原文件大小無關(guān) struct CountHandler : rapidjson::BaseReaderHandlerrapidjson::UTF8, CountHandler { size_t keys 0; bool Key(const char*, rapidjson::SizeType, bool) { keys; return true; } }; rapidjson::Reader reader; CountHandler h; // StringStream 只讀不拷貝比 StringBuffer 少一次整串復(fù)制 rapidjson::StringStream ss(json_text); rapidjson::ParseResult ok reader.Parse(ss, h); if (!ok) { // ok.Code() 和 ok.Offset() 直接給出錯誤碼與字節(jié)偏移 }Reader::Parse的第二個參數(shù)是 HandlerStringStream把const char*包成流全程不復(fù)制輸入。ParseResult是可布爾判斷的失敗時Code()返回ParseErrorCode枚舉Offset()是出錯的字節(jié)位置。這條路適合「讀一遍就丟」的場景比如日志過濾、字段抽取、消息轉(zhuǎn)發(fā)。DOM 路徑則是Document doc; doc.Parse(text, len);之后doc[user][id].GetInt64()隨便取。代價是整棵樹的內(nèi)存包括所有 key 和字符串值的副本都從Document自帶的MemoryPoolAllocator里分配Document析構(gòu)時一次性釋放。jsoncpp 的Json::Value是另一套模型每個節(jié)點(diǎn)是獨(dú)立的Value對象字符串走std::string容器走std::map/std::vector插入刪除時零散分配。小 JSON、層級淺的時候差別不明顯一旦節(jié)點(diǎn)數(shù)上到幾十萬分配器調(diào)用次數(shù)就是數(shù)量級差異。lib_json 那一派用的是標(biāo)準(zhǔn)容器加值語義寫法最舒服auto v json::parse(text);一行搞定異常處理也符合現(xiàn)代 C 習(xí)慣。它的代價同樣在分配值語義意味著拷貝容器意味著節(jié)點(diǎn)獨(dú)立解析大文檔時的內(nèi)存峰值和分配次數(shù)都比內(nèi)存池方案高。2.3 序列化Writer 的寫入路徑和緩沖區(qū)復(fù)用序列化這邊rapidjson 的Writer是模板化的輸出流包裝StringBuffer做內(nèi)存輸出FileWriteStream做文件輸出PrettyWriter負(fù)責(zé)帶縮進(jìn)的可讀格式。性能關(guān)鍵點(diǎn)不在 Writer 本身在緩沖區(qū)怎么用。rapidjson::StringBuffer buf; buf.Reserve(64 * 1024); // 預(yù)留容量避免逐次擴(kuò)容時的整塊搬移 rapidjson::Writerrapidjson::StringBuffer writer(buf); for (const auto item : batch) { buf.Clear(); // 復(fù)用同一塊緩沖區(qū)跨輪次只清長度不釋放內(nèi)存 writer.Reset(buf); build_doc(item).Accept(writer); sink.write(buf.GetString(), buf.GetSize()); }Reserve一次把容量要到預(yù)估大小后續(xù)Clear只把size歸零底層內(nèi)存不動循環(huán)里就沒有反復(fù)realloc的開銷。writer.Reset(buf)在復(fù)用緩沖區(qū)時是必須的它把 Writer 內(nèi)部狀態(tài)清干凈不然上一輪的棧殘留會帶進(jìn)下一輪。這個寫法我在批量導(dǎo)出場景里跑過比每輪新建StringBuffer加Writer穩(wěn)定得多GC 壓力如果是混合棧和內(nèi)存碎片都少。jsoncpp 那邊對應(yīng)的是Json::StreamWriterBuilder加writeString每次調(diào)用返回一個新的std::string想復(fù)用就得自己接operator到std::ostringstream。lib_json 是json::dump()返回std::string同樣每輪一次分配。不是致命問題但在每秒幾萬次序列化的路徑上這層分配會積成可觀的耗時。2.4 一份能自己跑的對比把數(shù)據(jù)形態(tài)也當(dāng)成變量只看總耗時容易得出片面結(jié)論因?yàn)?JSON 的數(shù)據(jù)形態(tài)對解析器影響極大。我一般準(zhǔn)備四組樣本純數(shù)字?jǐn)?shù)組、短 key 的扁平對象、深層嵌套對象、含大量\u轉(zhuǎn)義和中文字符串的混合文檔。前兩組考的是數(shù)字解析和哈希查找后兩組考的是字符串處理和編碼轉(zhuǎn)換。同一臺機(jī)器、同一份數(shù)據(jù)、同一套編譯選項(xiàng)下我記錄到的相對耗時大致是這個量級以 rapidjson DOM 解析純數(shù)字?jǐn)?shù)組為 1.0場景rapidjsonjsoncpplib_json備注純數(shù)字?jǐn)?shù)組解析1.02.62.1數(shù)字分支和分配次數(shù)差異扁平對象解析1.03.12.4key 查找結(jié)構(gòu)不同深層嵌套解析1.02.21.9嵌套越深內(nèi)存池優(yōu)勢越明顯含中文與轉(zhuǎn)義解析1.03.42.8編碼轉(zhuǎn)換路徑差異最大序列化同文檔1.02.82.3緩沖區(qū)復(fù)用帶來的差距這些相對值只用來表達(dá)量級差不當(dāng)作絕對值引用換機(jī)器、換數(shù)據(jù)分布都會變。真正要抄的是方法固定編譯選項(xiàng)、分?jǐn)?shù)據(jù)形態(tài)、跑 warmup、看內(nèi)存峰值而不只看耗時。內(nèi)存峰值這一項(xiàng)在容器環(huán)境里比耗時更要命rapidjson 的 DOM 峰值大致是「原文字節(jié)數(shù) × 一個系數(shù)」因?yàn)?key 和字符串都進(jìn)了同一個池子jsoncpp 因?yàn)閟td::map節(jié)點(diǎn)開銷和std::string的 SSO 邊界峰值通常更高。3. 多字節(jié)與 Unicoderapidjson 源碼里編碼是怎么一層層落下去的編碼是三個庫里最容易埋雷的地方。平時測的都是英文 key一上真實(shí)數(shù)據(jù)就是中文、日文、emoji代理對、非法字節(jié)、BOM 全冒出來。rapidjson 對這塊的處理是顯式設(shè)計(jì)源碼里能看到清晰的編碼層這也是它在多字節(jié)場景下更省心的原因。3.1 三種源編碼與 TargetEncoding 的選擇rapidjson 把編碼做成了類型參數(shù)。UTF8、UTF16、UTF32、ASCII、AutoUTF都是編碼類帶Decode字節(jié)序列轉(zhuǎn)碼點(diǎn)和Encode碼點(diǎn)轉(zhuǎn)字節(jié)序列兩個靜態(tài)方法。Document默認(rèn)是GenericDocumentUTF8絕大多數(shù)場景用默認(rèn)的就夠了因?yàn)?JSON 標(biāo)準(zhǔn)規(guī)定傳輸編碼是 UTF-8。需要換編碼的是兩種情況輸入已經(jīng)是 UTF-16比如從某些系統(tǒng) API 拿到的寬字符緩沖或者輸出要 UTF-16/UTF-32。前者用GenericDocumentUTF16后者換 Writer 的TargetEncoding。// doc 是默認(rèn)的 UTF-8 文檔這里把它序列化成 UTF-16 緩沖區(qū) rapidjson::GenericStringBufferrapidjson::UTF16 u16buf; rapidjson::Writerrapidjson::GenericStringBufferrapidjson::UTF16 , rapidjson::UTF8, // SourceEncoding文檔本身的編碼 rapidjson::UTF16 // TargetEncoding輸出目標(biāo)的編碼 u16w(u16buf); doc.Accept(u16w); // u16buf.GetString() 得到 UTF-16 碼元序列長度用 GetSize() 取Writer的模板參數(shù)依次是輸出流、源編碼、目標(biāo)編碼、棧分配器、寫入標(biāo)志。編碼轉(zhuǎn)換在這一層完成Encode會把碼點(diǎn)按目標(biāo)編碼寫出去。AutoUTF用于運(yùn)行時才知道編碼的場景代價是每次編解碼多一次分支判斷能靜態(tài)確定就別用。3.2\u轉(zhuǎn)義、代理對和非法序列怎么處理JSON 里的\uXXXX是必考項(xiàng)。BMP 內(nèi)的字符一個轉(zhuǎn)義就夠超出 UFFFF 的要寫成代理對\uD83D\uDE00這種。rapidjson 在解析字符串時遇到\u會先把四位十六進(jìn)制轉(zhuǎn)成碼點(diǎn)如果落在0xD800–0xDBFF區(qū)段會繼續(xù)向后讀低位代理拼成完整碼點(diǎn)低位不合法時拋kParseErrorStringUnicodeSurrogateInvalid位置直接用GetErrorOffset()拿到。這套行為對我最有價值的地方是它不猜。很多解析器遇到代理對錯誤會悄悄替換成 UFFFD 繼續(xù)走數(shù)據(jù)落庫之后才發(fā)現(xiàn)某幾個字段變成問號回頭查已經(jīng)找不到源頭。rapidjson 直接把錯誤碼和偏移給你配合原始報文能精確定位到第幾個字節(jié)。另一半是編碼校驗(yàn)。kParseValidateEncodingFlag打開后解析器會校驗(yàn)輸入字節(jié)序列是否為合法 UTF-8非法序列報錯而不是放過。不加這個標(biāo)志時非法字節(jié)可能一路穿到業(yè)務(wù)層最后在某個前端頁面上顯示成亂碼。這個標(biāo)志有性能代價我一般在外層入口接收外部數(shù)據(jù)的地方打開內(nèi)部可信鏈路關(guān)掉。3.3 三個庫的編碼行為對照維度rapidjsonjsoncpplib_json 一派內(nèi)部字符串存儲UTF-8默認(rèn)可換 UTF16/UTF32UTF-8不做校驗(yàn)UTF-8容器直接存\u代理對嚴(yán)格校驗(yàn)非法報錯并給偏移寬松處理可能替換通常拋異?;蛱鎿Q非法 UTF-8 檢測需顯式開kParseValidateEncodingFlag基本不檢測部分實(shí)現(xiàn)校驗(yàn)輸出編碼切換換 Writer 的 TargetEncoding輸出統(tǒng)一 UTF-8輸出統(tǒng)一 UTF-8轉(zhuǎn)義輸出策略可配置是否轉(zhuǎn)義非 ASCII默認(rèn)轉(zhuǎn)義非 ASCII可配置最后一行值得展開。rapidjson 的 Writer 默認(rèn)會把非 ASCII 字符原樣輸出成 UTF-8 字節(jié)中文不會變成\u4e2d需要轉(zhuǎn)義時用Writer的寫入標(biāo)志或在業(yè)務(wù)層自行處理。jsoncpp 默認(rèn)傾向于把非 ASCII 轉(zhuǎn)義體積會膨脹但對只認(rèn) ASCII 的下游更友好。這不是誰對誰錯是默認(rèn)值取向不同選型時得對著自己的下游系統(tǒng)確認(rèn)一遍。4. 內(nèi)存池、斷言和數(shù)值精度決定能不能上生產(chǎn)的三個細(xì)節(jié)跑分好看不等于能上生產(chǎn)。三個庫在我手上都出過線上問題回頭看問題集中在內(nèi)存生命周期、錯誤處理、數(shù)值邊界這三塊。rapidjson 在這三塊給了足夠多的旋鈕旋鈕多意味著默認(rèn)值不一定適合你。4.1MemoryPoolAllocator和kParseInsituFlag的真實(shí)代價Document默認(rèn)帶一個MemoryPoolAllocator所有節(jié)點(diǎn)、key、字符串副本都從池子里切。池子按 chunk 向底層CrtAllocator要內(nèi)存默認(rèn) chunk 大小是個常量節(jié)點(diǎn)特別多時會連續(xù)擴(kuò)容。它的好處是析構(gòu)一次全放壞處是生命周期必須嚴(yán)格包住所有引用doc一析構(gòu)doc[name].GetString()拿到的指針立刻懸空。我見過把GetString()的返回值存進(jìn)std::string_view然后跨函數(shù)用的寫法跑測試沒事壓測必崩。kParseInsituFlag更激進(jìn)它在原緩沖區(qū)上就地解析字符串不需要復(fù)制直接指向原文遇到轉(zhuǎn)義時把解碼結(jié)果寫回原位置。省掉全部字符串復(fù)制速度提升明顯尤其在大文檔上。代價有三條緩沖區(qū)必須可寫不能是const char*或字符串字面量、必須以\0結(jié)尾、解析后原緩沖區(qū)的內(nèi)容被破壞不能再用。std::string text load_file(path); // 可寫副本 text.push_back(\0); // insitu 要求以 \0 結(jié)尾 rapidjson::Document doc; // 用 text[0] 而不是 text.c_str()因?yàn)樾枰蓪懼羔?doc.ParseInsitu(text[0]); if (doc.HasParseError()) { // 錯誤處理照舊 } // 此處的 text 已經(jīng)被改寫不能再當(dāng)原始報文使用ParseInsitu內(nèi)部走的就是kParseInsituFlag。用它的前提是「原文用完就丟」日志解析、消息消費(fèi)這類場景完全合適如果解析完還要把原文落盤做審計(jì)就別碰它。這一條是我認(rèn)為 rapidjson 源碼里最需要提前讀一遍的注釋注釋里寫得很清楚但很多人是踩了段錯誤才回去看。4.2 斷言之外的錯誤碼ParseResult才是線上該看的東西RAPIDJSON_ASSERT默認(rèn)映射到assertNDEBUG一開就變成空語句。這意味著 release 構(gòu)建下參數(shù)錯誤、越界訪問不會給你任何提示直接是未定義行為。線上環(huán)境不能靠斷言得靠錯誤碼。rapidjson::Document doc; doc.Parse(json.data(), json.size()); // 傳長度允許內(nèi)容中間出現(xiàn) \0 if (doc.HasParseError()) { rapidjson::ParseErrorCode code doc.GetParseError(); size_t off doc.GetErrorOffset(); // GetParseError_En 只內(nèi)置英文描述中文需要自己映射 fprintf(stderr, parse error: %s at offset %zu\n, rapidjson::GetParseError_En(code), off); return false; }Parse有兩個重載傳長度的那版更安全因?yàn)椴灰蕾嘰0結(jié)尾二進(jìn)制安全。GetParseError()返回枚舉GetParseError_En()把它轉(zhuǎn)成英文短句GetErrorOffset()是字節(jié)偏移。把這三個拼進(jìn)日志線上出問題時能直接定位到報文的哪一段壞了。常見的幾個碼值得記住kParseErrorDocumentEmpty空文檔、kParseErrorDocumentRootNotSingular根節(jié)點(diǎn)后還有多余內(nèi)容通常是拼接了兩條 JSON、kParseErrorStringUnicodeSurrogateInvalid代理對非法、kParseErrorNumberTooBig數(shù)值溢出。kParseErrorDocumentRootNotSingular在消息隊(duì)列場景特別高頻多半是上游把兩條記錄粘在一起發(fā)了。4.3 數(shù)值精度和 int64默認(rèn)值會咬人數(shù)字這塊有個默認(rèn)行為必須知道rapidjson 解析浮點(diǎn)時默認(rèn)走快速路徑追求速度某些十進(jìn)制小數(shù)轉(zhuǎn)double時末位可能和strtod的結(jié)果差一位。要做精確數(shù)值比對比如金額、科學(xué)計(jì)算中間值得開kParseFullPrecisionFlag代價是浮點(diǎn)解析慢一截。整數(shù)這邊Document的IsInt()只在值落在int范圍內(nèi)才為真19 位的訂單號、雪花 ID 用GetInt()會直接失敗或拿到錯誤值。正確姿勢是先判IsInt64()/IsUint64()再取GetInt64()/GetUint64()。更穩(wěn)的做法是對 ID 類字段開kParseNumbersAsStringsFlag讓解析器把數(shù)字原樣當(dāng)字符串保留業(yè)務(wù)層自己轉(zhuǎn)徹底繞開精度和范圍問題。// 對 ID 類字段保留原始字符串避免 int64 邊界和前端精度問題 rapidjson::Document doc; doc.Parserapidjson::kParseNumbersAsStringsFlag(json.data(), json.size()); // 此時 doc[order_id] 是字符串類型IsString() 為真 std::string id doc[order_id].GetString();這個標(biāo)志打開后所有數(shù)字都以字符串形式存在文檔里需要數(shù)值時得自己轉(zhuǎn)換。取舍很清楚ID 類字段要的是「不丟位」數(shù)值計(jì)算要的是「能算」同一份文檔里兩類字段混在一起時我一般用兩次解析或者干脆在業(yè)務(wù)層做字段級處理。5. 避坑與排查五個把我卡到后半夜的 rapidjson 問題下面這五條都是我自己或者身邊人真實(shí)撞過的按「現(xiàn)象 → 原因 → 解決」寫撞上了能直接對照。5.1ParseInsitu傳了字符串字面量進(jìn)程直接沒了現(xiàn)象本地調(diào)試正常切到某條走常量字符串的代碼路徑時進(jìn)程崩潰堆棧停在解析器內(nèi)部看不出所以然。原因ParseInsitu要求可寫緩沖區(qū)字符串字面量在只讀段寫入時觸發(fā)段錯誤。這類崩潰在 debug 下有時被斷言攔住release 下就是硬崩而且崩潰點(diǎn)離調(diào)用點(diǎn)很遠(yuǎn)。解決凡是用 insitu輸入必須是std::string或std::vectorchar這類可寫容器并且手動補(bǔ)\0。更省心的做法是給 insitu 單獨(dú)封一個函數(shù)參數(shù)類型就定成std::string編譯期就把字面量擋在外面。5.2 JSON 中間有\(zhòng)0解析到一半就斷了現(xiàn)象某些二進(jìn)制字段里嵌了\0解析不報錯但后面的字段全丟了GetParseError()也拿不到東西。原因用了doc.Parse(const char*)這個重載它靠\0判結(jié)尾遇到內(nèi)容里的\0就當(dāng)成文檔結(jié)束剩余部分被當(dāng)成「根節(jié)點(diǎn)后的多余內(nèi)容」某些情況下甚至不報錯。解決統(tǒng)一用doc.Parse(ptr, len)兩參數(shù)版本長度從std::string::size()來。這條我寫進(jìn)了團(tuán)隊(duì)規(guī)范凡是解析外部數(shù)據(jù)的地方必須傳長度。5.3 release 下崩潰查不到原因因?yàn)閿嘌员痪幾g掉了現(xiàn)象debug 構(gòu)建一切正常release 構(gòu)建偶發(fā)崩潰日志里什么都沒有。原因NDEBUG下RAPIDJSON_ASSERT變成空語句原本由斷言攔住的非法訪問靜默通過變成未定義行為。典型觸發(fā)點(diǎn)是doc[missing_key]這種訪問不存在成員后直接GetString()debug 下斷言報錯release 下讀越界。解決所有成員訪問先判HasMember/IsString/IsArray不要相信輸入結(jié)構(gòu)。另外把GetParseError()和偏移打進(jìn)日志哪怕是 release 也要能定位。斷言是開發(fā)期工具不是線上防線。5.4 19 位 ID 變成 0 或者負(fù)數(shù)前后端對不上賬現(xiàn)象接口返回的訂單號在 C 側(cè)讀出來是 0前端展示的又是另一個值。原因GetInt()拿一個超出int范圍的數(shù)或者 JS 側(cè)Number精度只有 53 位19 位整數(shù)本身就存不下。兩邊各錯一次對賬時看起來完全對不上。解決ID 類字段全程走字符串解析時開kParseNumbersAsStringsFlag或者序列化時就寫字符串。真要數(shù)值計(jì)算用IsInt64()判過再GetInt64()。5.5 內(nèi)存一路漲MemoryPoolAllocator成了黑匣子現(xiàn)象長跑進(jìn)程 RSS 持續(xù)上漲重啟就好壓測看不出來。原因兩種典型情況。一是每輪都新建Document但又把GetString()的指針存進(jìn)了長生命周期的結(jié)構(gòu)池子釋放后指針懸空表現(xiàn)為臟讀加內(nèi)存異常二是把Document的 allocator 傳給了外部對象生命周期錯配池子該釋放時沒釋放。解決定死一條規(guī)則Document及其派生指針不跨函數(shù)邊界存活需要留存的數(shù)據(jù)一律std::string拷貝出來。如果確實(shí)要共享池子把 allocator 提到外層生命周期顯式包住所有使用者。這條規(guī)則聽起來笨但比事后查內(nèi)存泄漏便宜太多。6. 結(jié)論這三份源碼分別該進(jìn)什么項(xiàng)目把上面這些維度跑完我的結(jié)論比較明確不太需要糾結(jié)。你的場景建議理由高吞吐消息解析、日志處理rapidjson 的 SAX 路徑不建樹、內(nèi)存恒定速度優(yōu)勢最大需要 DOM 且數(shù)據(jù)量大、字段多rapidjson 的 DOM 加內(nèi)存池分配次數(shù)少峰值可控有 UTF-16/UTF-32 輸入輸出rapidjson編碼作為類型參數(shù)轉(zhuǎn)換在編譯期確定團(tuán)隊(duì)偏現(xiàn)代 C、追求開發(fā)效率lib_json 一派值語義、異常、API 順手性能差距在小數(shù)據(jù)量下無感遺留工程已有 jsoncpp 依賴維持 jsoncpp遷移成本高于收益除非熱點(diǎn)明確在 JSON 層對非法編碼零容忍rapidjson 加kParseValidateEncodingFlag顯式校驗(yàn)錯誤碼可定位真正讓我留下 rapidjson 源碼的原因不是跑分是它的行為可預(yù)期。哪個開關(guān)影響性能、哪個標(biāo)志改變語義、出錯時給什么信息源碼里都寫得很直白翻reader.h和writer.h兩遍基本能摸清。相比之下遇到編碼問題只能靠猜的庫在生產(chǎn)環(huán)境里代價太高。上手建議按這個順序先把默認(rèn) DOM 用法跑通再把錯誤碼和偏移接進(jìn)日志然后對熱點(diǎn)路徑切 SAX 或者開 insitu最后才考慮 SSE 和kParseFullPrecisionFlag這類調(diào)優(yōu)開關(guān)。順序反了容易在還沒搞清楚語義的情況下調(diào)出一堆不可復(fù)現(xiàn)的數(shù)字。從那以后我每接一個新 JSON 庫都強(qiáng)制走一遍同樣的流程固定編譯選項(xiàng)、分四類數(shù)據(jù)形態(tài)、看耗時也看峰值、把所有錯誤碼打印一遍、拿一份含中文和代理對的臟數(shù)據(jù)跑一遍。這套流程救過我至少兩次都是在別人覺得「庫都差不多」的地方翻出問題。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
极品出轨视频网站| 日韩国产欧美伦理在线| 亚洲黄色网址| 夜夜爽77777| 一本色道综合久久欧美| 日韩av情韩国爱禁区av一区二区| 淫色网综合| 久久99午夜精品一区人妻| 97免费在线观看| 加勒比综合九九99视频在线播放| 亚洲综合色婷婷| 日韩免费三级黄片电影| 熟女精品日韩一区二区三区 | 9997se| 国产又色又爽又舒服的三级视频| 国产人伦a片信息免费片| 人妻天堂网| 日韩干B| 大香蕉伊在线久草麻豆天堂故事| 嗯嗯啊啊啊好舒服| 精品美女在线视频| 欧美嗯啊……在线观看视频免费| 人、人、摸,人、人、草| AAAA欧美日韩| 密乳视频在线| 26uuu最新| 天天影视综合色| 日韩无码AB| 久妇网| 色五月婷婷在线| 丁香六月啪啪| 高清无码网址| 亚洲综合五月天婷婷丁香| 国产精品一级毛片不卡视| 亚洲国产精品V?在线播放| 亚洲欧美清纯| 欧美一区二区三区不卡高清视频| 亚洲国产激情国产av| 亚洲 欧美 日韩 国产一区二区| 亚洲午夜蜜臀| 日韩在线国产字幕| 亚洲天堂五月天国产| 青娱乐999| 色网色网色网色网色网色| 日韩9区| 色欧美亚洲| 亚洲天天更新| 蜜臀99久久精品久久久懂爱| 曰韩中文人妻视频| 熟女色综合久久| 一级特级aaaa毛片免费观看| 人妻少妇久久久| 日韩三级一区| 成人老鸭窝人人在线视频| 一区二区三区四区姦女| 操曰本熟女| 999九九九九国产动| 加勒比海成人视频网 | www.久久制服糖| 超碰色男人操熟女| 欧美专区日本专区| 91亚·色| 亚州男人的天堂| 在线播放欧洲免费av| 麻豆AV96熟妇人妻| 六月婷激情福利天堂69| 日韩9999| 久久精品人妻一区二区三区| 午夜超碰| 人人操,操人人| 丁香激情五月天| 啊啊啊啊啊操我视频| 九九九九九九九九九九九免费国产| 狼人综合婷婷激情四射| 日韩BBN| 亚洲欧美综合网| 亚洲国产成人7777| 色婷婷电影| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 久久25| 超碰夫妻97| 色欲久久99国产精品久久久久久| 成人自拍三级在线观看| 欧美亚洲日韩人妻在线观看| 亚洲日韩欧美一区二区| 日本韩高清无砖码22o| 中文字幕一区二区三区高清| 久久熟女人| 国产丝袜高跟美女av免费观看| 99re欧美| 美国日韩黄色片| 国产精品禁久久久精品| 亚洲精品一二区| 天天91~综合入口| 日韩天天本| 美女91网站| 91三级理论片播放器| 91美女在线精品视频| 日韩不卡网操逼中文字幕日韩| 男人的天堂1024| 中文字幕高清精品一区| 欧美色图中文字幕| 国产精品久久久无码aV去| 丁香九月激情啪| 麻豆伊人网| 国产精品com| 91日韩在线| 久久人妻无码毛片A片麻豆| 久草免费在线视频| 偷窥自拍A片| B049AV在线播放| 日本爽爽爽爽爽爽免费视频| 日韩99999色| 大鸡巴久久| 秋霞视频一区二区| 97超碰总站| 日日操免费视频| 久久不卡一区二区| 亚洲一区中文精品| 欧美性区| 自拍偷拍国产欧美日韩韩| 午夜精品久久久久久久男人的天堂| 青青草原成人| 国产精选三级在线观看| 中文久久爆乳| 欧美性色欧美| 特级大荫道BBwBBwBBW| 夜色综合| 男女91| 高清国产精品福利网站| 亚州色国| 国产欧美一区激情交| 亚洲成人AB| 新版天堂中文资源8在线| 亚州日韩97| 免费一级黄色录像影片| 老熟妇一区二区三区| 家庭乱伦性爱av| 手机av亚洲丝袜美腿日韩第一页二页| 亚洲AV秘 精品久久老牛影视| 91国产在线精品| 欧美专区日本专区| 国语少妇精| 日韩成人色图| 激情 欧美 亚洲 小说| 综合天天网| 亚洲成人性| 婷婷九月丁香| 日日干日日| 乱性AV| 9997se| 国产精品一区二区密臀| 人人操人人摸人人看人人插| 最新国产精品久久精品| 久久97视频| 婷婷日韩一区二区三区中文字幕在线| 久久精品国产亚洲5555| 天天影视之亚洲综合网| 超碰97玖玖爱| 我想要啊 啊 啊| 色色99| 免费看黄片现成| 搡老女人老91妇女熟女| 九色 人妻 大香蕉| 一区不卡在线观看av| 久久6热精品99视频| 竹菊影视国产一区二区| 三男一女不戴套的A片| 久久99草| 欧美色三级片91| 91三级理论片播放器| 本道综合精品| 欧美日韩制服| 爱妻综合网| 中文字幕高清20页视频| 新版天堂中文资源8在线| 日本色日夜干| 国产天天噜一噜久久久| 在线黄色污污网站| 嫩草伊人久久精品| 亚洲春色激情小说| 熟女被操视频网址| 无码日韩人妻av一| 高清国产成人无码| 熟女乱3伦999| 99999精品| 熟妇一区,二区,三区。| 欧美韩日精品资源| 色爱欲亚洲| 欧洲色色| 中文字幕一区二区无码成人 | 你草精品在线视频| 嗯啊啊啊轻点视频| 亚洲 欧美都市激情| 国产精品自产拍在线观看社区| 99re热有精品视频国产| 人人操肉肉| 啊啊啊操死我| 黄色成人网久久久久久| 天天看天天日天天操| 免费视频观看60秒| 91欧美www| 国外91| 亚洲视频二区 | 97天天| 偷窥自拍亚洲| 欧美国产婷婷久久| 97免费在线视频| 啊啊啊啊操死我| 精品视频一二三中文| 超碰97人人乐| 97色碰| 久久永久无码人妻视频| 国产Av超碰| 人人妻人人爽 97人人看碰人免费公开视频| 亚洲图片91| 中文字幕三四五区| 99精品国产户外露出| 2021国产成人精品久久| 国产精品爆乳懂色蜜乳| 一级成人性爱| 亚洲一卡2卡3卡4卡乱码网站| 美腿丝袜高跟网免费视频免费视频| 狠插 制服 自拍| 欧美日韩亚洲高清不卡一区二区三区| 色鬼在线综合| 久草男人天堂| 好色综合| 26uuu国产| 亚洲综合网电影91| www.高清无码诱惑一区.com | 不卡在线观看视频| 国产操逼网站亚洲一级黄色| 樱花蜜乳av| 每日更新AV| 久久九九网| 久草成人福利导航| 91美乳| 97网址97| 啊啊啊免费视频| 欧美传媒| 探花精品视频| 亚洲天天艹| 蜜屁Av| 久久伊人东京热| 人人性爱视频免费| 欧亚在线视频| 美腿丝袜高跟网免费视频免费视频| 午夜AV污污污| 日本成人免费一区二区三区| 午夜国产成人福利视频| 中出后入| 日韩无码精品综合久久| 欧美三级不卡| 国产黑白丝在线| 又粗又长又大国产不卡| 美中日韩无码| 国产精品久久久777| 破处bbq| 日本影视久久免费| 99精品在线播放| 超碰97玖玖爱| 精品人妻一区二区免费蜜桃视频| 一区二区视频在线播放| 久久久久久久久久黄色网| 亚春色色| 国产超碰人人爽人人做| 日韩传媒在线| www.av家庭乱伦| 久/久精品99看9| 情色五月天网| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 国产亚洲精品第一最新| 婷婷尹人大香蕉免费| 91激情综合| 曰韩人妻中文字幕在线| 色综合久久久久| 麻豆精品三区视频| A级毛片在线看免费| 亚洲 图片 综合91| 久草加勒比一区在线| 秋霞蝌科网日本一区| 蜜臀亚洲中文| A 天堂| 亚洲 欧美 91| 翔田千里AV无码秘 三区| 另类天堂| 三级色影综合网| 国产女人成人精品视频| 最新9久久久9免费视频| 欧美极品性爱天天射| 蜜桃中文字日产乱幕4区| 欧美色图亚洲色| 综合激情婷婷| 综合色欧美| 五月丁香综合激情| 91中文字幕在线观看| 黑人无码一区二区| 国产人妻精品一区二区三区秋霞 | 综合影院亚洲| 超碰78| 久久免费看高潮毛片韩国| 大香蕉伊人网| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 国产品精品自在在线午夜免费| 啊啊啊 在线观看| 国产精品高潮呻吟av久久4虎| 狠狠狠一区二区三区| 九九AV| 91在线|亚| 日本爽爽爽爽爽爽免费视频| 99re69综合| 隔壁邻居波多野结衣中文字幕| 99在线观看无大码| 日本3级一区二区免费| 99热在线只有精品| 九色97| 欲香欲色| 国产吹潮女在线观看| 人人插人人搞人人操| 97伊人超碰| 亚洲一区深夜| 99爱久久视频频| 日日操免费视频| 久色99999| 久久精品美女一区| 神马久久久久久| 国产一区二区久久| 超碰国产在线| 翔田千里AⅤHD无码| 97精品97久久| 久久久久久夜夜夜夜夜| 狠狠中文字幕| 欧美美女视频| 98福利在线视频| 婷婷五月天福利| 五月丁香激情四射| 蜜臀aV午夜一区二区三区| 99性爱视频| 亚洲色系另类精品国产| 97国产精品一区二区传媒公司| yirendaxiangjiashipin| 精品午夜福利国产一区二区在线观看| 精品人妻丰满熟妇一区二区三| 国产在线不卡导航| 五月天开心网| 18禁中文字幕| 天天综合网在线观看| 亚洲第91页| 国产女人高潮视频| 成人日韩欧美| 岛国精品视频在线观看| 深夜国产一区二区三区在线看| 九九九九久久久久| 青青草在线视频播放器| 1024午夜激情男人的天堂| www.97在线| 日本三级韩三级99久久| 一区二区三区成人 | 久久久久幕乱码| 4141514逼喷水三级片| 爱我干综合| 亚洲,日韩,欧美,成人播放| 亚洲97精品| 精品大全99999| 久久一区,青青青青草视频在线播放| 玖玖在线视频| 婷婷亚洲五月***久久| 欧美18 在线观看| 中文字幕99999| 综合少妇网| 亚洲系列欧美| Julia Annxxxxx| 国产五码丝袜屁眼| 老熟妇综合| 欧美丝袜激情| 国产超碰在线一区| 日韩精品人妻中文字幕有码午| 五月丁香网站| 97人人草| 国产乱婷婷精品二区三区| 99色在线| 日韩欧美女优电影| 亚洲国产第一页综合视频| 婷婷久久网| 欧美色色色| 久久香蕉影院| 中文久久一区| 男人久久精品| 麻豆精品天美| 久久久天美| 色欧美色交综合| 久久久久久免费电影| 色99久草| 久久 精品| 欧美日韩另类激情图片| 久久久无码视频| 久久久久亚洲Av无码专区老牛影视| 人妻丝袜二区| 精品亚洲成人免费在线| 手机在线中文字幕国产| 另类 日韩 熟女| 五月婷婷六月色| 乱日视频| 麻豆人妻偷人精品无码视频| 91插B网站| 亚州男人天堂| 日韩精品一区二区日韩| 亚洲高清无码AAA久久久精品| 婷婷香蕉| 97色涩| 亚洲熟妇AV日韩熟妇在线| 久久岛国| 都市久久精品激情亚洲| 大香蕉久| 欧美天天综| 死我十八禁| 熟妇人妻精品一区二区| 国产美女销魂在线观看不卡| 九九热精品视频在线观看| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 超碰中文字幕人妻草一区| 熟女久久久| 丁香九月婷婷| 男男H黄动漫啪啪无遮挡网站| 中文字幕一区av| 国内操逼视频二区| 亚洲国产97| 亚洲成a人片在线观看中文!!!| 色情婷婷| 色偷偷人人玩人人舔人人操人人摸人人爽| 亚洲影院成人| 成年女人18级毛片毛片免费观看| 久久一区,青青青青草视频在线播放| 无码精品啪啪啪一区二区三区三州| 精品国产乱码久久久A| 久久久久久国产成人| 国产精品呦一区二区三区| www.婷婷六月天| 亚洲Av噜噜一区二区三区妖精| 另类欧美| 丁香九月 婷婷| 欧亚综合一卡二卡中文字幕| 久湿久久| 丰满美女一级毛片在线播放| 日韩亚洲美女一区久久| 九九九九免费视频| 国产精品直播在线观看直播| 中文字幕啊啊啊在线观看视频| 丁香婷婷激情五月天无毒不卡| 国产日韩怡红院| 国产树林里野战在线看| 鸥美精品一区二区久久婷婷| 97精品免费视频网站| 色综合九九| 91视频成人福利网站在线一区| 大逼色网站| 福利视频一区二区微拍| 亚洲 欧美 另类 日韩 人妻一区| 久久激情婷婷| 9久久精品| 天操天操夜操夜月操月年年操操| 亚欧毛片基地国产毛片基地| 国内精品999| 亚洲欧洲日韩中文字幕一区| 欧美日韩国内不卡| 蜜臀亚洲综合一二三四区| 岛国激情视频在线观看| 澳门人妻久久| 亚洲福利影院一区久久| 亚洲精品蜜桃久久久一区二区三区| 激情婷婷黑人91| av无码精品久久久久| 久久综合久久综合人久久夜精品| 欧美性爽xyxOOOO| 欧美午夜精品久久久久久3D| 精品九九九九九九| 麻豆黄色五月天| 精品国产乱码久久久久久蜜臀| www.婷婷| 91美女在线观看| 98一区二区精品| 97日亚洲欧美| 夜夜爽妓女| 日韩在线观看三级电影| 国产伦精品免编号公布| 思思视频免费看网站| 96AV久久久| 欧美一区二区三区互相| 亚洲天堂日本| 成人三一级一片aaa| 一二三四视频在线社区中文字幕| 亚洲最大的综合性av| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 91在线色综合| 狠狠久久手机视频精品| 亚洲欧洲第二视频在线观看色图| 亚洲97久久精品亚洲| 91视频综合在线| 国产精品电影| 天天干天天操天天操夜夜操天天操| 91蜜臀熟女| 亚洲欧洲av影音| 青青青艹在线视频| 婷婷丁香六月天| 精品人妻一区二区三区日产| 操人妻丝袜高跟| 日韩亚洲国产视频| 精品一区二区三区蜜桃| 人人操天天爽| 五月婷婷基地| 中文字幕日韩专区精品系列| 中文久久96| 久热免费视频| 国产又黄又爽又刺激久久久久久| 最新av网站在线观看| 久久爱超碰网| 91精品综合久久久久久五月丁香| 日本一级特级毛片视频| 日韩精品人妻中文字幕不卡乱码| 麻豆天美国美国产| 九九综合久久中文字幕| 极品另类| 操死我了啊啊啊| 97久久精品亚洲| 午夜寂寞欧美| 黄色片A级一区二区三区| 欧美玖玖爱免费玖玖| 熟女啪啪视频| 强奸乱亚洲| 国产精品久久天天干| 精品天堂| 亚洲少妇激情一区二区三区| 色色色色色色色色色色色色色色综合| 精品一区二区人妖| 白丝被操91| 高清无码91| 一级黄碟| 久久大线蕉一区| 天天综合精品| www.99色| 久久人人爽人人爽人人片Ⅴ| 亚洲熟妇A V黑人| 亚欧美综合| 校园春色综合色| 国产视频不卡在线观看| 亚洲91在线播放影院| 91亚洲欧洲| 亚洲熟女综合一区二区| 国产嫩草精品A88AV| 亚洲诱惑| 男人的天堂2000| 精品免费一区二区三区在线亚洲人成| 九九香蕉网| 熟女视频久久| 亚洲一本大道中文字幕无码在线| 欧美一区二区福利在线| 精品人妻中文字幕4399| 综合影院永久入口国产| 精品人妻丰满熟妇一区二区三| 男女性扦B| 国产免费久久精品99re韩国| 后入式在线免费观看60秒| 久久久久久久 九九九九九九九| 能直接看AV的网站| www九九热| 日本3级一区二区免费| 粉嫩av在线一区二区| 欧美网站免费| 久久婷婷电影网| 婷婷丁香成人| 久久青青草在线视频| 伊人991| 日本高清熟女久久一区| 久久综合久色欧美综合狠狠 | 日韩精品9999| 黄资源| 超碰久在线天天做| 蜜桃精品一区二区三区久在线| 欧美日本视频一区| 999久久芭蕾| 超碰在线综合97| 中文有码9| 久久啊啊| 嫩草美女久久| 色综合久| 中文字幕二区日韩天堂| 天美传媒一二三区永久网站| 日韩女优中文字幕| 国产精品欧美激在线| 9997se| 狠久久| 白丝AV| 黄色区免费观看中文字幕| 国产小视频91| 中文字幕精品人妻丝袜| 欧美日韩人妻少妇 一区二区三区| 精品天堂| 中国zzijzzijzzwww精品| 国产一区二区啪啪视频| 中文字幕丝袜人妻| 老鸭窝成人| 好吊色综合| av无码av无码专区| 920日本午夜免费| 中文字幕亚洲欧美在线不卡| 97色欧洲| 一本色道久久天天射天天干| 九九综合久久| 大香蕉综合在线| 极品色综合| blacked精品一区国产| www.婷婷| 美女露胸露屁股| 另类图片五月天| 欧美精品三区| 天天干,夜夜爽| 骚熟女吞| 精品九九九九| 婷婷五月天激情四射| 99热在线观看| 亚州高清av| 香蕉国产精品麻豆亚洲欧美日韩| 5月婷婷6月六月丁香| 亚洲精品国产AV天美传媒| 后入式在线免费观看60秒| 国产91 丝袜在线播放00-百度| 在线中文字幕| 口爆综合网| 久久国产精品视频| 国语av最新自产拍在线观看| 性欧美天天| 神马九九| 一区二区偷拍拍视频| 久久久一区二区| 一区二区三区黄片免费观看| 性色高清在线| 粉嫩av在线| 久热这里| 欧美色交| 五月天啪啪| 亚洲素人综合| 亚洲AV永久无码一区仙野| 91久久久老司机| 在线观看一级α片刺激高潮视频| 精品久久在线区一区| 久久久青青草| 日韩精品区二区三区不卡| 九九久久国产精品怡红院| 美国精品国产精品| 精品九九九九九九九九九| 国产无码三级视频在线观看| 色五月69夫妻| 伊人网青青| 色综合加勒比四四季| 男人女人18禁片免费看网站| 亚洲美女精品| 久久透逼视频| 精品无码人妻一区二区免费蜜桃| 97久久久| 啊啊啊不要啊啊受不了了视频在线 | 亚洲国产另类在线中文| 久热久一区二区三区| 91综合色噜噜| 欧美久久久15P| 自拍偷拍亚洲熟女妇人精品| 91五月天| 天天色播| 久操97| 久久久一级| 色综合av综合久久| 精品人妻一区二区免费蜜桃| 韩国一级AAA| 超碰碰小说97| 中文字幕性感少妇av| 人妻第一页| 综合日本女人伊人| 亚洲一区二区三区不卡国产欧美| 安微少妇操BBB| 69精品少妇一区二区三区蜜桃| 欧美成熟性爱精品| 色香综合天天影视综合 | 无码人妻精品一区二区三区九九 | 91精品丝袜在线观看| 色综合天天爱去电影网| 欧洲免费一区二| 一级特级aaaa毛片免费观看 | 99九九久久| 国产激情视频一区区三区| 欧洲亚洲天堂精品| www.色综合| 国产精品999aaa| 91熟女少妇| 人妻激情另类| 亚洲色图亚洲无码强奸乱伦 | 欧美熟妇精品黑人巨大一二三区| 色黄色美女大长腿午夜视频| 99re98| 99re95| 欧美性生活综合| 欧洲亚洲国产综合在线| 国内外激情在线| 东京热精品97综合网| 久久亚洲婷婷| 成人性爱美曰韩| 综合网天天| 操淫穴亚洲五月丁香 | baisiav| 大伊香蕉在线视频免费| 亚洲欧美日韩中文播放| 天天热精品| 欧美日韩精品国产91| 五月天久久久| 熟女人妻一区二区三区| 欧美成人一级麻豆| 欧美色老汉| 秋霞鲁丝午夜无码一区二区三| 大香蕉伊人色偷偷在线| 人妻精品视频一区二区| 色天使亚洲综合在线观看| 一起草三级AV电影在线观看 | 99热99在线| 国产女同视频在线播放| 性色A∨91| 日韩久射综合| 一区二三区四区视频大全套| 熟女网站最新| 97中文字幕色| 60秒试看最爽10分钟网站| 超碰在线国产| 亚洲制服欧美另类内射| 亚洲免费成人精品电影| 伊人网青青| 久久超碰国产一区二区三区| 亚洲综合在线第一页| 亚洲欧美清纯| 人妻熟女一区二区三区视频| 91欧洲入口| 好爽免费视频,| 91久久堂| 97在线资源| 婷婷15月天青娱乐| 新视频sss国产| 超碰1024久久| 丝袜美女诱惑 91 视频| 伊人久久久日韩一区| 久悠悠av| 亚洲天堂另类美腿| 尻女朋友一夜| 884t在线| 91久久18禁| 国产久久久久影院老熟女| 日韩不卡码| 青草园大香蕉| 激情婷婷丁香| 国产999精品久久久| 啊啊啊啊嗯嗯在线久久久| 蜜桃香蕉久草精品在线| 97在线观| 91精品国产91综合久久蜜臀| 人人看人人插| 欧亚成人| 久99| 99re9这里只有精品| 色麻豆AV| 四方色播| 欧美BT 亚洲色图| 欧美在线播放| 国产精品久久天天干| 乱伦AVxx| 99久久婷婷国产综合精品草原| 青青11操操操操操操操操| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 91岛国动作片| 性爱网站一区二区| 污污汅18禁网站在线永久免费观看| 激情网色| 偷拍欧美综合| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 骚货| 99蜜桃臀久久久欧美精品网站| 天天综合网~91综合网| 亚洲天天影视综合网| 婷婷精品国产欧美精品亚洲人人爽| 天天综合中文字幕 91| 被窝影院午夜看片无码| 高清在线偷拍自拍视频| 久久久蜜桃一区二区三区| 亚洲性猛交| 97在线视频免费看| 男女性感激情网站| 亚洲国产日韩欧美熟妇在线| 有码免费观看| 精品9999| 久草精品国产99| 欧美黄色片AAAAA| 韩国轻伦国内自拍一区| 天美一二三在线观看Av| 超碰偷拍| 亚洲性爱免费电影| 婷婷综合久久| 日本免费一区二区不卡| 日本不卡二区| 天天综合网日韩7799| 欧美亚州手机在线| 美女91色黄18| 婷婷丁香九月| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | oumeisetupian| 亚洲性高潮| 白天啪啪晚上啪啪视频| 日韩97超碰中文字幕| 久久视频,这里只有精品| 男人的天堂不卡一区二区 | 成人小电影网站tex| 高清无码 国产精品| 激情四射婷婷四五月天| 中国91AV| 人妻中文字幕日韩电影| 亚洲综合骚逼| 日韩性爱一级片| 精品区9| 精品丰满熟妇人妻一区| 国产精品宅男免费| 亚洲精品天天影视综合网| 日韩av情韩国爱禁区av一区二区| 欧美探花网| 欧美日本久久精品一区 | 久久综合九九| 美国三级日本三级久久99| 日本操大逼| 欧美久久婷婷| 成人免费看吃奶视频网站| www.狠狠干.coom| 超碰欧美97| 狠狠干狠狠色| 女生久久网| 色播五月丁香| 免费国产视频| 国产精品老熟女一区二区| 97综合国产| 男人夜色天堂ss| 久久9久| 亚洲欧美精品91| 欧洲综合色图| 人妻少妇视频在线播放| 欧美亚洲综合高清在线| 五月丁香婷婷综合| 国产精品自拍视频| 国产剧情一区在线观看| 中国人高清www色视频免费| 激情综合五| 日韩欧美日韩| 红桃视频高潮| 国产99精品一区二区三区免费| 麻豆国产原创AV色哟哟| 操逼天美3区| 操b网站亚洲无码| 一级特级aaaa毛片免费观看 | 高清国产精品福利网站| 99精品在线| 乱欲视频| 人人乐大香蕉| 亚洲图片激情综合另类| 久久婷婷亚洲欧| 亚洲欧综合另类无码一区| 欧美草草高清日韩视频| 天天做天天爱天天爽| 日韩成人高清一区二区| 黑人中出21连凳花野真衣| 成人八戒网站| julia国产在线 | 伊人精品久久网站| 日韩乱码Av| 国产精品嫩草久久久久| 草伊人高潮喷水超碰| 成年人一级黄色毛片大全在线观看| 日韩91网| 男人下部插入女人下部| 国产家庭乱伦网址| 欧美 亚洲| 色天堂综合| 凹凸视频特色日本特黄| 88xx成人精品视频| 亚洲日韩欧美一区二区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 920日本午夜免费| 天天夜躁日日躁狠狠2002| 色九九九九九九| 五月天丁香欧洲日韩| 国产亚洲精品美女久久久m| 亚洲情色 自拍| 国产丰满少妇久久久精品影院| 亚洲精品一区二区精品| 91A欧美电影网站| 台湾佬激情综合| 牛黄色久午久| 久久久96| 9999久久久久| 美国久久一二三四| 99性爱| aaaa少妇高潮大片| 精品视频在线观看精品| 久久久久久久久女黄| 精品久久久久瑟瑟| 狠狠干综合| 看一级特黄a大一片| 亚洲视频中文一区| 久热精品在线| 天堂亚洲精品久久老牛| 色呦呦、国产精品| 噜噜噜狠狠色综合| 看一级特黄a大一片| 天天爽夜夜爽夜夜爽精| 久久超碰com| 亚州五月| 97 国产一区| 美女黄页| 97九色人妻| 日本九九九九| 99性视频| 亚洲综合中文字幕有码| 亚洲国产成人精品久久久国产成人一区二区三.| 日日爱99| 97超碰人妻| 加勒比99999| 91欧美www| 欧美亚洲中文字幕| 老熟妇一区二区三区| 超碰是碰在线观看| 狠狠躁天天躁日日躁| 九九热五区| 校园春色之综合网| 亚洲无套久久嗯嗯| av天堂影视中文在字幕在线中文| AV电影在线播放| 中文字幕狠狠玩| 日韩AV熟女乱伦| 久久精品国产亚洲AV高级北京| 色官网色综合| 操死我了啊啊啊| 成人片视频| 大屁股熟女一区二区三区| 欧美少妇性乱| 亚洲区限制级 99| 一区二区三区色综合| 欧美天堂第二区| 久操影视| 欧美日综合| 凌辱美少妇久久aV| 思思热国产高清| 久久精品欧美一区二区三区不卡| 国产老太乱伦一区| 强奸抽插av| 奇米四色网| a天堂视频| 国产呦精品一区二区三区下载| 亚洲中文字幕av| 婷婷伊人网| 亚洲 欧美都市激情| 搡老女人老妇女老妇老熟女怎么读| 性感女人网页在线观看视频| 麻豆天美传媒在线视频天堂| a人欧美综合天堂麻豆| 性交一区二区在线播放| 欧美黑人91| 美女91AV| 国产精品永久免费10000| 极品美女福利在线观看| 婷婷五月天色| 在线 亚洲 网爆 自拍| 九九九九免费视频| 老鸭窝成人| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 亚洲天堂自拍| 欧美综合传媒| 中文字幕三四区| 草莓精品视频在线免费观看| 三级三久久线久久99久目本WW| 夜色五月天| 欧洲亚洲天堂精品| 精品免费成人久久| 亚洲自拍97| 免费超碰97在线观看| 精品国产精品一区二区| 色第一页| 五月天精品| 亚洲图片日本AⅤ欧美在线| 99操99| 日韩国产十八禁| 中文字幕乱妇免费视频| 国产无码精品成人| 大香蕉伊人久久| 成人日本精品九区| 精人妻一区二区三区| 久久这里只精品免费福利| 国产日韩欧美三级片| 欧美老妇综合网| 极品出轨视频网站| 中文字幕奈奈美被公侵犯| 婷婷五月天色色| 欧美国产操逼| 91av一区二区在线观看| 日欧操屄视频| 亚洲综合骚逼| yiqicaoav| 开心五月深爱五月| 人妻密肉在线观看| 91成人精品| 夜夜影视四色| 日本丝袜美腿人妻九九| 91欧美综合| 亚洲天堂人妻熟妇视频| 男人的天堂色偷偷青青草视频婷婷网| 亚洲中文字幕熟女少妇一区二区| 久久黄色性爱视频| 亚洲丝袜B诱惑| 亚洲国产日韩精品久久久| 日韩欧美字幕亚洲一区二区 | 伊人五月天婷婷| 天天爱天天操| 精品十八在线观看| 91丨熟女丨丰满熟女| 久久久久久91香蕉国产| 中文操逼字幕| 最新欧洲欧美日本激情网站| 久久久亚洲熟妇资源| 三男一女不戴套的A片| 亚州情色j区| 欧美激情精品| 五月婷婷性爱| 超碰吊日色| 国产亚洲精品A在线观看下载| 老鸭窝亚洲毛片| 97超碰碰| 艹我哪美一区无码| 97亚洲精品| 免费一级毛片在线视频观看| 自拍第一页| 三级片网站在线播放| 午夜AV污污污| 一区在线观看中文字幕| 高凊专区人人操| 国产精品美女久久久久久网站| 天堂九九九九九九九九九| 极品美女嘿咻| 欧美不卡在线美女| 九九亚洲色在线观看| 国产伦乱91| av影院十区| 天天插天天操| 丰满人妻一区二区三区蜜桃视频| 久久黄色网址| 九九视频黄色片| 蜜乳av一区二区三区四区不卡| 99热在线观看| 日骚逼视频| 熟女一区二区| 韩国一级AAA| 好爽免费视频,| 大香蕉伊人久久| 亚洲视频中文一区| 人妻天天爽夜夜爽精品2| 国产女人和拘做爰视频| 超碰欧美97资源| 麻豆国产免费影片| 欧美性天天| 国产熟女二区| 日韩欧美亚洲一区二区三区影院| 久久久91| 欧美熟女妇同| av网页一区二区三区| 天天干人人乐| 成人国产精品三级A片| 91精品国产91久久青草| 丝袜av一区二区三区| 白嫩国模丰满一二三区| 99久草| 91日日| 亚洲成av人片色午夜乱码| 91免费看一区二区三区| 大香蕉伊在线久草麻豆天堂故事| 96久久精品一二三区色欲| 偷拍 亚洲 欧美| 国产亚洲欧洲在线观看| 人人色人人操在线| 蜜桃天美传媒AV一区二区三区| 黄色无码高清黄色无码网站| 亚洲国产97| 91精品电影18| 欧美日韩香蕉| 精品人妻久久久久一区二区三区| 日韩三级网址| 国产美女高潮叫床视频| 久久超碰日韩精品| 性性欧美| 在线观看AV不卡| 天天操夜夜操狠很操| 亚洲一区二区AV| 91人妻久久久久久久久久久久久| 国产黄a三级三级三级av在线看| 日韩一区二区高清在线观看的| 亚洲色阁| 性欧美| 久操在97| 亚洲男人的天堂一区二区| 五月婷婷基地| 樱花蜜乳av| 国产成人91一区二区三区| 97爱爱官网| 9精品在线| 欧美性战999| 国产丝袜视频| 8050无码八戒| 免费看黄视频亚洲网站| 蜜臀一区二区三区在线| 国产日韩中文字幕欧美| 丝袜美腿校园春色| 麻豆AV一区二区| 熟女一区二区三区四区| 精品97久久综合| 精品射1999| 五月激情小说| 五月天激情影院| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 国产日韩美女小穴视频网站不卡| 欧美亚洲涩涩| 少妇国产不卡| 国产伦精品免编号公布| 色婷婷成人| 手机看片1024你懂的国产| jizzjizz欧美| 亚洲av影音先锋| 一级二级三级黑人无码| 91精品人妻偷情| 日韩免费在线观看不卡| 少妇天堂| 东北熟女91| 我想要 啊 啊 啊| 欧美热图99| 天美麻豆一区二区三区| 东北女人高潮视频| 黑丝制服中文字幕| 综合熟妇一区二区三区| 国产精品农村妇女精品| 97超碰超欧美。| 日本免费一区二区不卡| 亚洲精品国产熟女久久久| 综合97亚洲| 乱操9999| 少妇精品| 玖玖久久久| 啊啊啊啊网站| 欧美亚洲自拍另类人妻| 日韩性爱啪啪视频| 日本操逼aaaaa| 国产免费操逼| 久久精品国产Aⅴ| 久久精品国产亚洲AV高清演员表| 亚洲欧美在线观看免费|