99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

Qt工程移植bsdiff生成patch包:壓縮算法替換為QuickLZ的完整實踐

Qt工程移植bsdiff生成patch包:壓縮算法替換為QuickLZ的完整實踐 簡介qt環(huán)境下移植bsdiff并采用qlz壓縮算法生成增量補丁包的項目源碼包面向需要為Qt桌面或嵌入式應用設計差分升級機制的開發(fā)者幫助解決全量更新體積大、傳輸耗時的問題適合具備基礎C與Qt知識的進階學習者。壓縮包共705個文件以675個idx索引文件為主體包含差分計算所需的索引數(shù)據(jù)另有cpp源碼、h頭文件、ui界面、pro工程文件、bin可執(zhí)行文件及調(diào)試遺存等整體約6.22MB目錄結(jié)構清晰便于對照工程分析編譯產(chǎn)物與源碼對應關系。已有496人學習下載。包內(nèi)提供了可運行的demo二進制與Qt工程模板讀者可以借此掌握bsdiff差異比較邏輯在Qt中的接口封裝方式理解qlz壓縮流如何替代默認bzip2并參考其性能優(yōu)化與多線程數(shù)據(jù)流處理思路同時了解壓縮失敗或異常時的錯誤處理與狀態(tài)恢復設計為自研輕量級軟件更新方案提供可直接復用的代碼骨架。1. 為什么Qt工程里最終選了bsdiff加qlz來做升級做Qt客戶端和嵌入式設備升級的開發(fā)者遲早會碰到同一個問題舊版本怎么平滑升級到新版本。整包更新最簡單但安裝包稍微大點幾MB的補丁下載成本就會讓用戶抱怨在網(wǎng)速受限的嵌入式環(huán)境里更是直接勸退。bsdiff是二進制差分算法里的老牌方案它能拿舊文件和新文件對比生成一個只包含差異部分的patch包客戶端拿到patch后和本地舊文件合并就能還原出完整的新文件。原生bsdiff默認用bzip2做壓縮但bzip2在生成patch時壓縮速度偏慢庫的依賴也重搬進Qt工程并不順手。把壓縮算法換成QuickLZqlz之后patch生成速度快了一個量級內(nèi)存占用更可控整個補丁鏈路也變成了一套純C加Qt就能獨立維護的小模塊。這篇文章就圍繞“qt移植bsdiff生成patch包壓縮算法采用qlz”這條主線把原理、移植步驟、文件格式設計和踩坑點一次說透適合正在做OTA和固件差分升級的工程師參考。2. 先看bsdiff的算法結(jié)構和壓縮瓶頸2.1 bsdiff的差分過程后綴數(shù)組、diff流、extra流bsdiff的聰明之處在于它不逐字節(jié)做簡單比較而是先對舊文件做一次后綴排序。舊文件的每個后綴都生成一個索引然后按字典序排成一個數(shù)組。接下來遍歷新文件的每個位置在后綴數(shù)組里做二分查找找出舊文件中能和當前位置內(nèi)容形成最長匹配的位置。匹配上的部分用diff流記錄因為舊文件和新文件在對應位置上大概率只差幾個字節(jié)把每個字節(jié)的差值存下來數(shù)據(jù)會非常小且重復度高后續(xù)壓縮收益極大。匹配不上的部分無法和舊文件對應就原樣塞進extra流。生成patch的過程最終被抽象成一組控制三元組也就是bsdiff里最核心的ctrl塊。每個三元組包含三個數(shù)字x表示本輪要從diff流里拷多少字節(jié)y表示要從extra流里拷多少字節(jié)z表示下一個匹配在舊文件里的偏移修正量。bspatch應用patch時就是讀一個三元組先從diff流拷貝x個字節(jié)并和舊文件對應位置相加再從extra流拷貝y個字節(jié)原樣寫入最后把舊文件指針按z調(diào)整繼續(xù)下一個循環(huán)。這個設計讓bspatch不需要掃描全量新文件只需要跳著讀舊文件配合壓縮后的三個數(shù)據(jù)塊就能把新文件完整重建出來。一個典型的例子是固件鏡像升級。鏡像里可能只是改了版本號、簽名或者某個配置文件新舊文件大部分區(qū)域完全一致。bsdiff跑一輪后diff流里大量字節(jié)都是0或者很小的差值extra流幾乎為空整個patch包可能只有幾百字節(jié)。這也是為什么差分升級能極大降低分發(fā)成本。不過要注意bsdiff的后綴排序階段計算量相當大對舊文件越大的場景排序時間越長內(nèi)存占用也越高這一點在選型時就要有心理預期。2.2 原生bzip2鏈路為什么搬進Qt工程不順手原版bsdiff默認用bzip2做壓縮這個選擇在幾十年前是合理的畢竟當年bzip2壓縮率高patch包能壓到很小。但放到現(xiàn)在的Qt工程里問題很明顯。第一是依賴問題bzip2是一套獨立的庫在桌面平臺還好到了交叉編譯環(huán)境要么手動交叉編譯一份libbz2要么在qmake里鏈接一個靜態(tài)庫多引入一個第三方依賴就讓工程復雜不少。第二是壓縮速度bzip2的壓縮主要靠BWT變換配合Huffman編碼算法本身很重一個幾百MB的固件跑完patch生成等待時間長到會讓調(diào)試節(jié)奏變得非常難受。第三是流式IO和內(nèi)存模型的問題。bsdiff原版用bzip2的流式接口把三個數(shù)據(jù)塊寫進patch文件同時bspatch也以多路bz流的方式邊讀邊解壓。這個設計本身沒問題但移植到Qt場景時維護多個BZ2_stream狀態(tài)還要處理讀一半斷流的情況代碼復雜度一下就上來了。而且bzip2解壓時對緩沖區(qū)的大小和清零要求也比較苛刻在內(nèi)存受限的設備上解壓一個大的extra塊往往要臨時申請大塊內(nèi)存一旦分配失敗整個升級流程就卡住了。2.3 換成QuickLZ之后性能指標發(fā)生了哪些變化QuickLZ可以簡單理解為一種面向速度和輕量集成的LZ系列壓縮庫。它最大的特點是壓縮和解壓都極其快代價是壓縮率不如bzip2但patch包體積在差分升級場景里本來就不是唯一指標。我自己在實際項目中感受到的差異是這樣的同樣的兩個文件做差分用bzip2壓縮過的patch很小但生成時間多出好幾倍換成qlz后patch生成時間大幅縮短patch包會大一些但對OTA分發(fā)影響有限因為diff流和extra流里大量相似數(shù)據(jù)依然能壓掉很大一部分。下面是兩種壓縮算法在我常用的開發(fā)機上的表現(xiàn)對比數(shù)據(jù)和環(huán)境有關但量級差異是有參考價值的項目bzip2原生bsdiffQuickLZqlz壓縮速度偏慢大文件要等快接近LZ4級別解壓速度一般很快適合嵌入式壓縮率較高中等第三方依賴需要libbz2只有quicklz.c和quicklz.h線程安全流狀態(tài)需要隔離狀態(tài)結(jié)構需要隔離但要簡單很多內(nèi)存模型流式可邊讀邊寫塊式一次壓縮一整段數(shù)據(jù)QuickLZ的塊式壓縮模型對移植是有利的。它在調(diào)用前把一塊完整數(shù)據(jù)放進緩沖區(qū)壓縮后得到一塊完整數(shù)據(jù)不需要像bzip2那樣維護在線流狀態(tài)。這樣一來補丁生成和應用兩側(cè)的邏輯都變得直白先緩沖數(shù)據(jù)再壓縮再把長度信息和壓縮數(shù)據(jù)一起寫文件。雖然文件頭需要多記錄幾個字段但換來的是代碼可讀性和調(diào)試友好度大幅提升。3. 在Qt工程里移植bsdiff并把壓縮算法換成qlz3.1 工程組織qmake項目文件與源碼放置移植的第一步不是改算法而是先把代碼結(jié)構理清。我習慣把bsdiff核心算法、bspatch核心算法、QuickLZ分別放在獨立目錄里再用qmake把它們組合成一個靜態(tài)庫或者直接編進主工程。下面是一個典型的qmake組織方式QT core CONFIG console c11 TEMPLATE app DEFINES _FILE_OFFSET_BITS64 INCLUDEPATH $$PWD/3rdparty/quicklz SOURCES \ main.cpp \ patch_generator.cpp \ patch_applier.cpp \ bsdiff_core.c \ bspatch_core.c \ $$PWD/3rdparty/quicklz/quicklz.c HEADERS \ patch_generator.h \ patch_applier.h \ bsdiff_core.h \ bspatch_core.h \ $$PWD/3rdparty/quicklz/quicklz.h這段配置里有幾個關鍵點。_FILE_OFFSET_BITS64必須加上尤其當你需要在32位平臺上處理超過2GB的文件時否則bsdiff里的off_t會退化成32位整數(shù)讀寫位置直接溢出。quicklz.c放在SOURCES里qmake會按C文件編譯不會受到C名字修飾的影響。bsdiff_core.c和bspatch_core.c里保留原版的差分和合并算法但在對外接口處用C風格函數(shù)暴露方便后面用C封裝。我一般會砍掉bsdiff_core.c里原有的main函數(shù)和命令行解析只保留核心的diff計算函數(shù)比如bsdiff算法的入口。這樣Qt層可以自己決定從哪里讀文件、往哪里寫patch而不是被標準輸入輸出限制住。同理bspatch_core.c里也只保留“從內(nèi)存中讀取三個塊并合并出新文件”的核心邏輯文件讀取交給Qt側(cè)管理。3.2 為qlz訂制補丁文件頭彌補流式壓縮和塊壓縮的格式差異原版bsdiff的patch文件頭只有幾個字段magic、三個塊的壓縮后大小、新文件大小。因為bzip2是流式的bspatch知道自己按流讀到多少字節(jié)算完不需要提前知道解壓后大小。但QuickLZ的塊式壓縮不同解壓時需要明確知道目標緩沖區(qū)的大小否則qlz_decompress不知道預期輸出多少字節(jié)很容易越界。所以移植時一定要改patch文件格式給每個數(shù)據(jù)塊同時記錄解壓前大小和壓縮后大小。我采用的自定義頭結(jié)構如下#define QLZ_PATCH_MAGIC 0x514C505A0401ULL typedef struct { quint64 magic; quint64 new_size; quint64 ctrl_raw_size; quint64 ctrl_comp_size; quint64 diff_raw_size; quint64 diff_comp_size; quint64 extra_raw_size; quint64 extra_comp_size; } QlzPatchHeader;ctrl_raw_size表示控制塊解壓后的字節(jié)數(shù)ctrl_comp_size表示壓縮后的字節(jié)數(shù)diff和extra同理。new_size是最終新文件的總長度bspatch用它來預先創(chuàng)建輸出文件。這個頭結(jié)構總共8個字段每個8字節(jié)固定64字節(jié)沒有對齊問題也很容易做小端序列化。在生成patch時我會先把整個頭用占位數(shù)據(jù)寫進文件然后依次寫入三個壓縮塊最后再回過頭把真實的長度數(shù)據(jù)填進頭部。這樣寫入邏輯不用關心頭的總長度也方便后面增加字段。考慮到不同平臺字節(jié)序可能不同所有長度字段在寫入時統(tǒng)一轉(zhuǎn)成小端讀取時再轉(zhuǎn)回主機字節(jié)序這樣patch包才能跨設備通用。3.3 生成側(cè)改動把diff和extra塊批量交給qlz_compress生成側(cè)的核心改動在于把原來直接調(diào)用bzip2流式寫入的地方替換成一個獨立的寫塊函數(shù)。這個函數(shù)接收一段完整的原始數(shù)據(jù)用QuickLZ壓縮后連同raw_size和comp_size一起寫入patch文件。代碼實現(xiàn)如下static bool write_qlz_block(QFile out, const QByteArray raw, quint64 *raw_size, quint64 *comp_size) { quint64 raw_len (quint64)raw.size(); quint64 comp_len 0; qlz_state_compress state_compress; QByteArray comp; comp.resize(raw.size() 400); // QuickLZ壓縮時允許的最大膨脹量 comp_len qlz_compress((const void *)raw.data(), (void *)comp.data(), raw.size(), state_compress); *raw_size raw_len; *comp_size comp_len; out.write((const char *)raw_len, sizeof(quint64)); out.write((const char *)comp_len, sizeof(quint64)); out.write(comp.data(), (qint64)comp_len); return true; }寫入時先寫raw_len再寫comp_len最后寫壓縮數(shù)據(jù)。這樣讀取側(cè)能先知道要分配多大的解壓緩沖再決定讀多少壓縮數(shù)據(jù)。qlz_compress的第四個參數(shù)是QuickLZ要求的狀態(tài)結(jié)構這里在函數(shù)內(nèi)部定義每次調(diào)用都是全新的狀態(tài)避免線程間互相污染。輸出緩沖大小給raw.size()加400這是QuickLZ文檔建議的安全余量因為極端情況下壓縮輸出可能略微膨脹。生成patch的整體流程會把這個函數(shù)調(diào)用三次分別壓縮ctrl塊、diff塊和extra塊。這三個塊的原始數(shù)據(jù)從哪里來bsdiff算法在跑完后會得到一整段控制數(shù)據(jù)和一整段diff、extra拼接數(shù)據(jù)在原有C代碼里它們是直接按內(nèi)存塊處理的。我把bsdiff_core.c中間結(jié)果通過結(jié)構體返回給Qt層Qt層再把它裝進QByteArray調(diào)三次write_qlz_block就完成patch文件的主體寫入。這種方式有一個值得注意的副作用原來的bzip2流式寫入可以邊計算邊寫不會額外占用太多內(nèi)存。改成qlz塊式壓縮后diff塊和extra塊必須全部緩存在內(nèi)存里才能一次性壓完。對于幾十MB的固件這個代價可以接受對于數(shù)GB的文件就要評估設備內(nèi)存是否夠用。后面避坑章節(jié)會專門講這一點。3.4 應用側(cè)改動用qlz_decompress還原三個數(shù)據(jù)塊并合并應用側(cè)也就是bspatch的邏輯改動同樣集中在塊讀取上。原來bzip2是流式讀現(xiàn)在需要把每個壓縮塊完整讀進內(nèi)存然后一次性解壓。讀取側(cè)的代碼和寫入側(cè)對稱static bool read_qlz_block(QFile in, QByteArray raw) { quint64 raw_len, comp_len; if (in.read((char *)raw_len, sizeof(quint64)) ! sizeof(quint64)) return false; if (in.read((char *)comp_len, sizeof(quint64)) ! sizeof(quint64)) return false; if (comp_len 1ULL * 1024 * 1024 * 1024) return false; QByteArray comp; comp.resize((qint64)comp_len); if (in.read(comp.data(), (qint64)comp_len) ! (qint64)comp_len) return false; qlz_state_decompress state_decompress; raw.resize((qint64)raw_len); size_t got qlz_decompress((const void *)comp.data(), (void *)raw.data(), raw.size(), state_decompress); return got (size_t)raw_len; }comp_len設置了上限1GB防止損壞的patch文件導致程序嘗試申請超大內(nèi)存。qlz_decompress的目標長度直接傳raw_len函數(shù)返回實際解壓得到的字節(jié)數(shù)如果不等于預期就說明patch文件損壞或者版本不匹配。解壓完成后bpatch的合并循環(huán)并不需要改動多少。它從ctrl塊里順序讀出三元組再從diff塊和extra塊里取出對應數(shù)據(jù)按規(guī)則寫入新文件。因為三個完整塊都常駐內(nèi)存循環(huán)里只是做內(nèi)存拷貝和字節(jié)加法運算不再有任何文件IO所以bspatch的跑分通常不會比生成側(cè)慢。3.5 在Qt層封裝成生成器和應用器純粹暴露C函數(shù)給Qt調(diào)用雖然可行但用起來不順。我習慣再包一層帶QString參數(shù)的類讓調(diào)用方可以直接傳文件路徑內(nèi)部統(tǒng)一處理異常和錯誤信息。核心類的接口大概是這樣class PatchGenerator { public: bool generate(const QString oldPath, const QString newPath, const QString patchPath, QString *errorMessage); }; class PatchApplier { public: bool apply(const QString oldPath, const QString patchPath, const QString newPath, QString *errorMessage); };在Qt層面我會用QFile讀取文件內(nèi)容并映射到QByteArray然后調(diào)用bsdiff_core.c里的核心函數(shù)。整個過程不需要把整個文件再復制一份舊文件和新文件各留一份原始數(shù)據(jù)再加上diff和extra的緩存內(nèi)存占用量已經(jīng)是理論下限的一部分。錯誤處理盡量控制在C層core層只返回整數(shù)錯誤碼避免把C的errno和Qt的錯誤機制糾纏在一起。為了讓生成和應用兩側(cè)的日志可讀我還會在類里記錄每個階段的耗時和內(nèi)存占用比如“后綴排序耗時”“diff塊壓縮字節(jié)數(shù)”“patch最終大小”這類信息。這些數(shù)據(jù)在優(yōu)化參數(shù)時很有用后面驗證章節(jié)會展開說明。4. 移植避坑清單5個最容易翻車的地方4.1 補丁頭只存壓縮大小導致qlz_decompress內(nèi)存越界現(xiàn)象生成的patch在生產(chǎn)環(huán)境能正常應用換一個文件就崩潰或者解壓出的內(nèi)容末尾變成亂碼。排查下來發(fā)現(xiàn)是bspatch側(cè)申請的解壓緩沖區(qū)大小不夠qlz_decompress把數(shù)據(jù)寫到了緩沖區(qū)邊界之外。原因原版bsdiff文件頭只保存三個塊的壓縮后大小因為bzip2流式解壓不需要預先知道解壓后字節(jié)數(shù)。QuickLZ不一樣qlz_decompress需要明確指定目標緩沖區(qū)大小而這個值只有生成側(cè)知道。解決補丁文件頭必須為每個塊同時保存raw_size和comp_size讀取側(cè)嚴格按raw_size分配緩沖區(qū)并在解壓后比較實際返回值。我在read_qlz_block里加了一個斷言got不等于raw_len直接返回失敗避免數(shù)據(jù)損壞時無感繼續(xù)。4.2 32位平臺下off_t溢出超過2GB的文件直接崩現(xiàn)象在32位的嵌入式設備上跑bspatch文件讀到一半位置變成負數(shù)或者生成patch時后綴排序數(shù)組下標變成負數(shù)程序退出。原因bsdiff原生代碼里的off_t在32位編譯環(huán)境下是32位有符號整數(shù)能表達的最大長度只有2GB左右。固件鏡像一旦超過這個閾值所有偏移計算都不可信了。這不是QuickLZ引入的問題是bsdiff本身就需要處理的大文件隱患。解決qmake工程里統(tǒng)一加DEFINES _FILE_OFFSET_BITS64確保glibc的off_t按64位擴展。同時在自己寫的Qt封裝層里所有文件偏移和長度類型都強制用qint64不跟平臺的long類型混用。交叉編譯時還要確認工具鏈默認的off_t實現(xiàn)支持64位。4.3 qlz狀態(tài)結(jié)構體在線程池里被共用壓縮結(jié)果全亂現(xiàn)象單線程生成patch一切正常把生成任務丟進QThreadPool并發(fā)跑多個文件有的patch能出來有的壓縮數(shù)據(jù)完全是爛的偶爾還直接crash。原因QuickLZ要求調(diào)用者提供壓縮狀態(tài)結(jié)構這個結(jié)構內(nèi)部保存了上一輪匹配的窗口信息。多個線程共用同一個state對象時寫操作互相覆蓋壓縮結(jié)果自然不可預測。bsdiff原版的bzip2流也類似但塊式壓縮讓這個錯誤更容易被忽略。解決把qlz_state_compress和qlz_state_decompress定義成write_qlz_block和read_qlz_block的局部變量每個線程每次調(diào)用都有自己的狀態(tài)。不要嘗試在線程池里緩存狀態(tài)來省那幾十KB內(nèi)存收益太低風險太高。4.4 端序不同導致patch在另一個架構上不兼容現(xiàn)象在x86開發(fā)機上生成的patch包部署到ARM設備上應用失敗控件不匹配或者解壓后數(shù)據(jù)錯位。原因bsdiff原版把控制三元組直接按off_t的內(nèi)存布局寫入文件在不同字節(jié)序平臺上內(nèi)存布局正好相反。QuickLZ自帶的壓縮頭雖然宣稱跨端序安全但我們的自定義文件頭和控制塊數(shù)據(jù)都是二進制格式不能假定雙方主機字節(jié)序一致。解決文件頭和ctrl塊三元組在寫入時統(tǒng)一用小端序讀取時用小端轉(zhuǎn)主機序的函數(shù)解析。不要讓結(jié)構體直接memcpy到文件里把字段逐個用put_le64和get_le64處理一遍代碼多十幾行但patch包的兼容性問題是徹底解決了。4.5 排序階段內(nèi)存占用疊加分配失敗卻沒有任何報錯現(xiàn)象處理大文件時程序在某一步突然卡死或者被系統(tǒng)OOM殺掉。用日志看內(nèi)存占用爬升到接近設備物理內(nèi)存上限然后進程消失。原因bsdiff的后綴排序階段本身就需要給舊文件每個后綴建立一個索引內(nèi)存占用大約是舊文件大小的4到8倍。換掉bzip2之后diff塊和extra塊又必須在內(nèi)存里完整緩存再疊加QuickLZ的輸出緩沖峰值內(nèi)存比原來的方案還要高。很多移植代碼忽略了對內(nèi)存峰值的估算分配失敗時又只檢查了一個中間指針沒有形成閉環(huán)。解決生成patch前先做一次內(nèi)存預測。我用的經(jīng)驗公式是峰值內(nèi)存約等于舊文件大小的6倍加上新文件大小的4倍再加上輸出緩沖的余量。在資源受限設備上先驗算一遍超了就改用分塊策略或者在小文件上跑生成側(cè)把應用側(cè)放到設備端。另外所有malloc和QByteArray::resize都要檢查返回值resize失敗時立即給出明確錯誤信息而不是讓后續(xù)邏輯繼續(xù)踩空指針。5. 移植完怎么驗證回歸測試與性能基線5.1 建立最小回歸用例覆蓋三類邊界數(shù)據(jù)移植完成后我建議先跑一個最樸素的回歸腳本不要上來就拿真實固件壓測。準備三組測試數(shù)據(jù)一組是只有幾十字節(jié)差異的小文本文件一組是結(jié)構完全不同的兩個二進制文件一組是內(nèi)容整體偏移了幾個字節(jié)的模擬固件。生成patch、應用patch然后直接比較新文件和原文件是否完全一致用字節(jié)級比較確認差異為零。# 回歸測試三步走 ./patchtool gen old.bin new.bin patch.qlz ./patchtool apply old.bin patch.qlz out.bin cmp new.bin out.bin echo patch round-trip ok這三組數(shù)據(jù)分別覆蓋了diff流占主導、extra流占主導、以及匹配偏移修正占主導的三種典型場景。bpatch的合并邏輯在這三類輸入下最容易暴露出邊界錯誤比如偏移修正量為負、diff塊用完而extra塊還有很多剩余數(shù)據(jù)之類的情況跑過這三組再上真機才算心里有底。5.2 參數(shù)調(diào)整QLZ壓縮級別與匹配窗口的取舍QuickLZ的壓縮級別通過宏控制常見做法是在編譯時指定壓縮等級。等級越高壓縮率越好但內(nèi)存和CPU開銷也隨之增大。在差分升級場景里我傾向于先測試兩份參數(shù)一個追求最小patch體積一個追求最快生成速度然后把patch大小和生成時間放到一張表里對比。以模擬項目X的固件驗證為例兩組參數(shù)下的數(shù)據(jù)差異是低級配置生成時間縮短了近一半patch體積只增大了百分之十到二十。如果分發(fā)渠道的帶寬緊張幾MB的差異確實值得換壓縮級別如果每次更新都有幾十上千臺設備并發(fā)下載生成速度反而更重要。沒有絕對正確的參數(shù)只有適合你業(yè)務約束的選擇。我自己在實際工程里養(yǎng)成了一個習慣在每個版本的性能基準測試里固定記錄三項指標——patch生成耗時、patch包體積、設備端應用耗時。這些數(shù)據(jù)作為歷史基線留在工程里下次改算法或者換壓縮庫時就能用同一組測試數(shù)據(jù)橫向比較而不是靠感覺判斷方案是否退步。建議你也在移植完成后跑完這幾項寫進自己的工程筆記里后續(xù)維護時能省不少心。這類移植工作最怕的不是算法復雜而是出了問題不知道是格式錯誤、內(nèi)存問題還是字節(jié)序問題。數(shù)據(jù)記錄下來日志打清楚驗證腳本跑起來整個鏈路就不那么像玄學了。希望這幾個步驟和避坑經(jīng)驗能幫你順利把bsdiff加qlz的方案落地到自己的Qt工程里。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91九色国产| 丁香六月视频| 久久三级视频| 亚洲婷婷成人五月天| 亚洲第79页| 99精品偷自拍| 午夜少妇在线观看视频| 狠狠香婷婷五月| 亚洲综合五月天婷婷丁香| 婷婷中文字幕在线| 天天摸天天舔| 99re这里只有精品99| 国产成人av在线播放| 99免费热在线精品| 亚洲日韩成人三级av| 狠狠夜夜五月丁香| 91啦丨九色丨刺激中文| 97碰| 99热久| 九热免费视频| 五月丁香综合| 乱色色色| 久久精品婷婷| 黑人无码一区| 激情五月天色色网| 亚洲欧美国产高清vA在线播放| 夜夜资源站| 中文av网| 日本婷婷| 新激情五月天色播| 99色在线| 五月婷婷六月丁香首页| 五月天大香蕉av| 99免费热视频在线| 亚洲人成人五月天| 99成人小视频| 99成人免费视频| www.com色播五月天| 天天日日夜夜| 久久久.COM| 色五月色综合| 成人色五月天婷婷| 99综合自拍| 色综合五月天| 国产精品国产成人国产三级| 色色亚洲| 天天干天天干天天操| 五月天婷婷爱| 婷婷精品综合| 五月天婷婷青青草| 亚洲色图啪啪| 色情综合| 亚洲日韩乱码一区二区三区四区 | 欧美这里只有精品| 五月婷婷五月| 开心色播色五月婷婷| 热99久| 色婷婷精| 亚洲无码影音| 亚洲V国产V欧美V久久久久久| 久久停停超碰| 婷婷色五天| 五月婷婷久久内射| 就爱干 在线| 天天肏在线观看| 无码髙清| 日本免费91| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 国产精品VIDEOSSEX久久发布| 亚亚州久久高潮| 五月激情四射婷婷丁香| 日本女天天爽| 亚洲综合色棒| 九九热视频精品| 96丁香六月婷婷蜜桃综合久久| 91人妻PORNY九色大屁股| www.婷婷五月.com| 综合五月丁香六月婷婷| 五夜丁香| 91色在线 | 日韩| 99热99这里有免费的精品| a v色婷婷| 99精品视频在线| 色婷网| 久久99精品久久久久久三级| www99在线观看视频| 久久大香蕉同僚| 欧美婷婷综合网| 九九色逼| 五月停视频天堂| 亚洲综合另类| 日本综合99| 99操不停| 五月丁香综合啪啪啪啪啪| 五月丁香婷婷激情久久| 久久久99免费视频| av九九| www.夜夜操| site:pnnrt.com| 国产一级视频a| 五月天激情小说网| 9热精品| 五月天婷婷一起草| 91天天操天天干天天射| 青草青草视频2免费观看| 婷婷五月色播天| 亚洲成av人影院| 深爱丁香激情| 国产玖玖资源| 久久9精品| 欧美三级巜人妻互换| 久久丁香| 97成人视频| 1024在线观看免费视频| 九九综合精品| 开心五月深爱五月| 久久99日本精品视频免费观看| 综合激情五月天| 综合久久五月| 国产精品日本一区二区在线播放| 婷婷亚洲影院| 久久综合影院 | www.五月天色色色| 另类图片婷婷五月天| 激情久久综合| 六月婷婷七月丁香| 九九婷婷网五月天| 99精品免费| 可以直接看的AV| 超碰在线99| 日韩无码人妻一区二区| 五月色丁香视频精品| 色五月av| 婷婷香香五月| 婷婷丁香六月天| 激情五月瑟瑟| 99视频精品视频| 五月婷婷婷丁香播| 东北黄色一级| 停停五月色宗合| 久久久久久99精品无码| 丁香婷婷基地| 婷婷丁香五月基地| 亚洲中文乱字字幕在线永久| 99免费青青蜜臀| 六月丁香婷啪射| 99爱爱| 大香蕉久| 婷婷深爱色五月| www.激情| 成人小说 五月天 婷婷| 激情深爱五月天| 激情操逼婷婷| 色XX综合网| 亚洲无码影音| 婷婷六月丁香欧美视频在线| 99热日| 在线只有精品| 97久久精品| 色日本综合| 激情综合婷婷久久| 婷婷色丁香五月| 久大香蕉| 久久a热| 国内9l视频自拍老熟女九色| AV成人在线播放| 色99婷婷五月天| 亚洲第一综合| 国产亚洲在线观看| 亚洲日韩久久婷婷伊人| 好吊丝aV| 99re视频在线精品| 大香蕉伊人爱在线| 综合综合色色| 亚洲成人综合网在线免费观看| 激情五月丁香综合蜜桃| 97操在线| 2025天天日爽| 精品久久人妻热| 日本乱子人伦在线视频| 婷婷五月天xxx| 狠狠精品干练久久久无码中文字幕| 婷五月天天| 五月婷婷综合激情| 丁香五月婷在线观看| 91人妻人人操| 色综合色综合色综合色综合| 99ri精品视频在线观看| 丁香五月激情久久麻豆| 超碰色综合| 色综合久久99色| 九九在线精点品| 亚色网站小视频| 狠狠色综合网| www,婷婷五月天,com| 丁香花五月天社区| 久久这里只有精品99| 亚洲日韩26uuu| 色综合久久久综合久久网| 婷婷五月丁香网| 99热99| 日韩人妻无码专区| 五月丁香中文字幕| 99 频99热国里只有精品| 色色色色色色色五月| 六月婷婷色宗合| 亚洲成人AV电影网| 99热久久这里只有精品| www.夜夜操| 青草青草久热这里只有精品| 9精品一区| 99热大香蕉| 五月天婷婷色色| 五月婷婷丁香| 五月婷婷色综图片| 欧美va在线| 激情综合5| 激情影院69| 婷婷色欧美激情| 99热欧美| 婷婷的99视频网站| AV色色天堂中文| 九月色婷婷综合| 婷婷五月天 偷拍| 日本97在线看片| 久久9精品| 79色色色色| 99久久精| 日韩中文欧美| 激情久久久久久久久久| 丁香社92视频| 九九综合九| 99爱视频在线观看| 综合久久97| 丁香五月婷婷天| 激情网站五月| 五月婷丁香花| 2013AV天堂| 国产精产国品一二三在观看| 91狠狠综合久久久久久| 91超级碰碰| 激情五月综亚网| www.色综合.com| 色五月婷婷7777| 婷婷午夜激情| 色婷婷久久| 国产日韩欧美性爱| 超碰色综合| 色激情五月| 五月婷婷综合色啪首页| 热久久视频99| 中文字幕色色| 婷婷播5月| 大香蕉院线| 精品久久人妻热| 九九热99re8热免费观看| 操逼巨乳91| 色婷婷女优有码五月亭| 九九热99熟女| 大香蕉伊人99| 欧美成性色| 色婷婷久久7777| 偷拍丁香九月激情| 97男人天堂| 牛牛澡牛牛爽| 9 1大香蕉| 久青草大香蕉| 中文色婷婷| 99热精品10| 久久九精品| 97精品综合久久内射| 九九热99在线视频| 九九婷婷综合| 天天操夜夜啊| 五月丁香婷庭在线| 综合99视频| 亚洲欧美婷婷五月色综合| 日韩色五月| 色婷婷97| 被强行糟蹋的女人A片| 无码人妻丰满熟妇奶水区码| 丁香色色五月| 91avse| 99久操| 久热69| 久久久99视频| 亚洲色婷婷99一9|| 伊人婷婷激情| 可以看的AV网站| 久久99热这里只有精品| 婷婷五月天第三页| 噜噜狠狠色综无码久久合欧美| 人人操av| 五月激情综合网| 99riav 亚洲| 色五月激情网| 99综合成人视频在线观看 | 精品51XX| 99热这里只要精品免费| 亚洲九九夜夜| 婷婷六久久| 五月天激情啪啪| 99热久| 日日操人人操| 婷婷五月天久久久| 9色在线视频精品观看| 天天插天天射天天干| 五月天激情四射| 五月人妻婷婷| 婷婷天堂综合| 久热精彩视频98| 丁香五月日韩| 五月天激情网图片| 婷婷五月花.97| 欧美伊人9| 色五月婷婷狠狠撸| 激情五月综合网| 天天色粽合合合合合合合| 五月激情综合网婷婷| 99re免费在线视频| 日韩色情亚洲五月天婷婷| 99热免费| 91/九色黑人| 6月丁香婷婷| 婷婷五月美女直播| 风流少妇A片一区二区蜜桃 | www.91色| 五月天色色色色色| 玖玖福利视频资源| 婷婷伊人网| 日日影院 | 激情久久网| 婷婷亚洲五| 激情五月天婷婷丁香| 婷婷综合激情| 婷婷涩五月| 第四色26uuu| 色五月五月婷婷| 久久五月情| 日韩一区二区三区无码| 51国精产品自偷自偷综合| 欧美日韩五月婷婷| 婷婷五月天BBw| 五月丁香婷婷综合| 超碰九九热| 久久久人妻人伦| 亚洲色另类| 成人综合视频网址| 五月色欧美| 亚州操人在线视频| 五月丁香日本在线视频观看| 丁香婷婷久久| 五月丁香啪啪网| 色五月婷婷五月天| 丁香五月777| 成人精品亚洲性爱| 无码一区二区三区四区五区91c| 97干婷婷五月天| 色婷婷色99国产综合精品| 成人av中文字幕| 色婷婷色99国产综合精品| 超碰97在线观看免费| 丁香六月色情| 操操操97| 亚洲激情97五月天| 婷婷激情五月视频| 色欲久久久久久综合网综合网| 狠狠狠狠免费| 激情小说五月天| 99视频色在线观看| 免费观看的av| 五月丁香色播| 色吊丝99| 婷婷色色丁香五月天| 9 1在线视频| 人人爱人人草| 激情五月综合网| 九九视频在线观看| 色婷婷成人在线| 精品一二三区久久AAA片| 婷婷色五月噜噜| 九月丁香婷婷| 人人摸人人搞| 五月天久久婷婷| 婷婷亚洲综合| 伊人网色婷婷五月天| www,setingting| 久久人妻在线| 182TV亚洲| 一本久道综合色婷婷五月| 欧美熟女99| 久久久久9999| 久久婷婷成人综合色怡春院| 婷婷天堂站| 久久婷婷视频| 激情婷婷丁香色五月| 色五月激情图片| 亚洲精品永久久久久久| 91操人| 亚洲无AV在线中文字幕| 色婷婷五月天视频网站| 丁香婷婷六月激情文学 | www.韩日视频| 婷婷香蕉| 五月花综合视频| 五月天色综合| 超碰av在| 天天激情站| 五月丁香婷婷激情久久| 91成人电影| 国产精品18久久久| 五月丁香六月激情综合| 狠狠色综合五月| 色www.con| 欧美日韩精品人妻狠狠躁免费视频| 色色 亚洲| 婷婷91| 成人免费黄色短视频| 人人草人人看| AAA亚洲AV| av色婷婷| 91综合色噜噜| 国产精品VIDEOSSEX久久发布| 99网| 婷婷五月天手机版视频| 婷婷丁香色五月亚洲| 婷婷五月丁香国产| 欧美成人精品A片免费一区99| 色婷婷亚洲五月天| 就爱射中文字幕资源网| 婷婷丁香六月激情综合| 秋霞性爱AV| 91丨九色丨老熟女激情| 大地9中文在线观看免费高清| a久久| 人妻videos人妻高清| 久久六月天| 玖玖九九9999在线观看视频精品| 亚洲精品V天堂中文字幕| 99热综合在线| 久久99综合网| 婷婷四月 成人 狠狠干| 激情六月婷婷| 踪合专区啪啪| 丁香五月婷婷亚洲激情四射| 欧美一级毛卡片无码| 极品人妻VIDEOSSS人妻| 久久99热这里只有精品| 中美日韩成人在线| 夜夜骑夜夜操| 精品久久人妻| 五月婷婷综合丁香视频| 亚洲操B| 亚洲婷婷成人五月天| 五月天婷婷自拍图片在线观看| 色色色婷婷五月天| 黄网网站在线播放| 色婷婷大香蕉| 日韩成人免费电影| 欧美日韩成人| 综合五月草| 大香蕉啪啪网| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 九九无码| 99毛片| h在线看免费版在线看| 九九99精品视频在线观看| 国产精品久久久丁香五月八戒视频| 久久久久亚洲A∨成人乱码电影| 五月天丁香六月综合| 97人人操人人爽| 久久久久久久久久8888| 激情com| 成人婷婷桔色| 激情5月天天天| 久噜久噜| 色色日本| 99色婷婷| 国产SUV精品一区二区6| 婷婷五月丁香第四色超碰在线| 男人操女人高潮91视频| 色色丁香婷婷五月天| 91人无码久久久久久| 99热很操老逼| 欧美在线97| 日本三级黄色大片| 亚洲丁香五月深爱五月| 一级二级香港秋霞欧美欧美秋霞| 丁香五月激情婷婷婷婷在线观看| 激情九月综合| 最近中文字幕大全免费版在线| 久久综合九色综合97婷婷| 超碰天堂网| 激情淫乱男女| 轮奸综合网| 欧洲婷婷五月天| 婷婷五月天性| 色吧婷婷| 色噜噜狠狠色综无码久久合欧美| 超级久久久| 伊人婷婷色| 人人爽天天莫| 五月婷婷六月少妇激情| 国产成人综合网| 天天日夜夜爽| 人人操操| 26uuu欧美亚洲日韩| 99无码超碰| 婷婷久久国产视频| 久狠狠| 97人人草| 色色六月| 99热在这里只有免费精品| 亚洲免费99| 超碰色综合| 少妇性按摩无码中文A片| 久久久九九视频精品18| 五月丁香综合啪啪啪啪啪| 色综合综合网| 婷婷在线播放| 色色色在线| 婷婷热婷婷色| 久久婷婷综合基地| 91美女啪啪| 五月婷在线观看| 天天操天爱综合| 中文字幕 码精品视频网站| 五月婷婷亚洲天堂97色婷婷| 97人人草| 人人干女人| 色色色五月天婷婷| 婷婷月五天在线在线看| 丁香五月六月| 久久5 9视频免费观看| 大香蕉五月天| 久久99综合网| 超级碰碰视频无码| 五月色精品| 丁香五月婷婷网| 无码色综合| 天天成人综合视频| 天天弄天天操| 亚洲操逼片| 天天色色天天| 色五月 婷婷, 大香蕉| 性色欲情 网站| 淑女丝袜bi操逼123| 香蕉久久国产AV一区二区| 毛片新网地| www.久久av.com| 欧类av怡春院| 色五月丁香激情视频| 91久久久久久| www.超碰在线| 另类A片| 色婷婷亚洲在线观看| 九九久久99| 九九热视频在线观看| 久久久91| 男女99免费视频| 九九精品热播| 久青操| 九月丁香八月婷婷久久综合久97| 五月丁查人人| 日本色色影院| 99热成人| 97色啪| 日韩色色视频| 天天干天天操天天射 | 六月丁香开心婷婷欧美| 婷婷涩涩五月天| 九九热视频精品999| 婷婷丁香亚洲五月天| 五月婷婷综合在线| www.五月天性.com| 欧洲MV日韩MV国产| 五月丁香青草综合啪啪| 91九色白丝| 日日操人人操| 欧美啪啪网| 亚洲婷婷欧美婷婷| 婷婷综合精品| 五月婷婷激情五月| 婷婷开心青青草| 亚洲电影在线观看| 天天日天天干天天插天天射| 大香人妻| av中文在线| 99re最新地址视频| 91人久| 天天综合网网欲色| 草榴视频网| 久久停停超碰| 天天爱天天做天天舔| 久久艹 五月天| 激情丁香图片| 久久狼人天堂| 五月日韩中文字幕| 狠狠操狠狠| 婷婷五月激情欧美| 白人荫道BBWBBB大荫道| 精品久久艹| www99精品| 五月天婷婷久久| 色丁香久久久| 黄网免费看| 色噜噜婷婷| 色狠狠综合| 99热欧美偷拍| 中文字幕无码人妻少妇免费视频| 久久免费婷婷视频| 欧美日本VA| 狠狠色噜噜狠| 丁香五月香蕉| 麻豆五月丁香婷婷| 9l视频自拍九色9l视频自拍九色9l社区| 欧美色五月| 日本VA视频| 色色五月天婷婷| 丁香狠狠色婷婷久久无码视频| 91久久九久久九久久九久久九久久| 久热这里只精品| 亚洲成AV人片在线观看| 久久性视频| 婷婷五月色网| 99精品视频在线观看免费| 狠狠婷婷色| 五月丁香 啪啪| 天天综合色综合| 91狠狠综合网| 久久密臀婷婷| 亚洲综合五月天婷婷丁香| 天天色噜| 色五月色综合| 99色色热| 五月天综合久久丁香91| 婷婷六月香| 伊人五月天在线| 五月天婷婷色综合| 五月婷婷综合激情| 久久九九网| 国产人人操| 北京熟妇搡BBBB搡BBBB| 大香蕉婷婷丁香视频在线| 久久机只有这里精品| 婷婷综合色| 五月丁香六月婷婷综合| 久久艹 五月天| 五月婷婷丁香| 色色婷婷丁香| 丁香五月婷婷综合精品素人| 丁香婷婷色情社区成人小说| 婷婷五六日| 婷婷午夜| 99激情在线| 九九久久免费视频44| 97日本在线播放| 欧美 日韩 人妻 高清 中文| 99久久婷婷国产综合精品草原| 婷婷五月激情中文字幕| 色五月女| 激情五月丁香六月| 巴基斯坦粉嫩无码视频| 婷婷五月天日日日干干干| 色婷婷婷av| 色情五月天视频网| 天天射影| 六月99天天婷婷激情综合| 久久与婷婷| 久久久久久99精品无码| 人人操人人爽成人AV| 久久蜜臀婷婷| 五月丁香综合网| 婷婷丁香色女人| 中文字幕成人版| 久久婷婷原创视频| 丁香五月婷婷影视先锋| www.com久久久久久久久久久久久久久久久| 婷婷五月天基地| 99久久久久| 色五月婷婷五月天| 玖玖婷婷五月天| 婷婷综合五月| 天天干天天干天天干| 日本人妻伦在线中文字幕 | 99综合一区| 无码区婷婷五月花开| 嫩草视频在线观看| 操操操av| 丁香婷婷六月在线资源观看| 日韩在线五月天婷婷| 色婷婷色五月天| 五月婷婷视频在线观看| 欧美精品99| 五月天成人小说| 综合网色| 国模九区| 99亚洲精美视频在线观看| 亚洲AV网址| 亚洲综合在线视频| www.五月婷婷久久.com| 五月婷婷AV| 这里只有精品视频| 欧美婷婷| 亚洲AV日韩在线观看| 综合日本婷婷| 99热大香蕉| 成人超碰AV| 丁香五月天啪啪激情综和网 | 九九精品片一| 99亚洲无码| av色婷婷| 荫道BBWBBB高潮潮喷| 永久天堂日本| AV网站免费在线| 91操色| 激情五月天无人视频在线| 久久精品五月天| 日本久久精品| 五月婷婷 自拍| 久久网日本| 国产热精品| 久久538| 婷婷五月天成人网| 性爱激情小说AV五月丁香花| 五月婷婷丁香深深爱| 五月花亭亭| 超碰大香蕉网| 青吴乐视频| 九九色婷婷| 婷婷夜夜操| 天天干夜夜想| 天天综合色99| 色亭亭五月天网扯| 久草大| 五月激香蕉网| 无码九九| 欧美性猛交99久久久99| 碰97 久| 99精品在线观看视频| 久久99这里只有精品视频| 99久久婷| 色吧99| 婷婷五月天Av| 亚洲超碰在线| 日本123区日韩欧美不卡在线看| www.狠狠操.co m| 人人摸人人澡人人| 婷婷丁香大香蕉| 亚洲丁香婷婷五月天综合色| 激情五月天啪啪| 人妻免费网站| 天天做天天干天天综合网| 丁香五月中文字幕| 六月丁香天堂| 五月丁香婷在线| 婷婷九月| 五月婷婷六月丁香免费| 超碰人人操人人干| 久久宗合影| 丁香六月婷婷综合在线| 少妇水多A片太爽了| 九九色逼| www.99热视频| 桃色激情五月天| 婷婷五月天黄色小说| 东京热五月婷婷| 五月婷婷开心爱| 丁香激情五月天| 嫩草视频在线观看| 丁香五月婷婷超碰在线| 综合一区二区三区| 99爱在线免费视频| 婷综合六月| 99性爱视频网站| 黄色片avv| 六月婷婷国产| 久久九九思思| 狠狠色噜噜狠狠| 狠狠爱婷婷五月天| 丁香五月婷婷影院| 丁香花五月天婷婷成人社区| 少妇口诉沐足视频播放器网址| 久久九色| 五月婷婷狠天天色综合| 亚洲精品久久久无码| 婷婷五月天另类视频| 丁香六月婷| 五月天婷五月天综合网在线观| 久草热在线视频| 99热最新精品| 色香蕉影院| 婷婷五月丁香狠狠| 欧美成人AAA片一区国产精品| 激情精品久久| 色综啪啪网| 久久思思精品| 天天综合五月天| 伊人久久99| 丁香五月婷婷深爱综合激情| 色色色综合网| 激情综合丁| 丁香五月婷婷激情蜜桃| 99热免费| 五月丁香成人网| 丁香婷婷久久 | 操日本99| 色五月亚洲| 玖玖综合网| 久久伊人五月天| 天天干-天天日| 丁香五月婷婷香| 播五月丁香三月婷婷| 九九操操| 国外亚洲成AV人片在线观看| 色色网站在线| 碰碰91| 亚洲无码99| 色J香五月天| 九九这里是免费的视频5| 99热官网| 婷婷五月天激情开心网| 丁香五月花婷婷开心| 99热在线观看| 五月婷婷综合在线视频小说| 综合久久97| 99热免费| 激情婷婷五月| 久久66er久久| 丁香五月天堂亚洲社区| 色欲婷婷五月天| 婷婷五月天影视| 丁香五月婷婷亚洲另类| 亚洲综合在线视频| 99热在线只有精品| 色婷婷五月天中文字幕| 99riAV成人在线视频| www.五月天色色.com| 综合在线丁香五月| 99riAv1国产在线观看| 五月天开心网| 高清无码网址| 五月婷在线色视频| 97色色婷婷五月天| 国精产品一区一区三区免费视频| 九九热99免费视频| 丁香五月在线视频黑人| 色综合久久久久| 99热很操老逼| 日本欧美成人片AAAA| 久超超碰| 噜噜精品| 人人色AV| 婷婷丁香五月亚洲欧美| www,超碰| 久久91久久精品久久| 日日操日日撸| av在线免费网站| 丁香五月 六月婷婷首页| 91viP在线看| 超级碰碰视频无码| 婷婷综合中文字幕| 丁香成人五月天| 日日干日日| Www.激情| 色情五月天婷婷| 婷丁香五月天| 五月天无码| 日本视频99| 亚洲AV永久无码影院黑人| 日本少妇裸体做爰高潮片| 色色五月丁香| 五月丁香成人网| 丁香激情综合| 久久久久人无码人妻| 成人五月天色天堂| www九九热| 久久92| 日韩色色一区| 婷婷久久婷婷色五月| 五月婷婷黄色网址| 丁香五月激情综合| 久久9视频| www.国产色| 特黄三级片| 欧美日韩123| 国产avapp 网| 999精品乱码77777| 天堂久久性| 五日激情综合| 婷婷五月天天爽| 五月丁香六月婷婷姐| 99性视频| 高清无码视频网址| 五月婷婷色激情| 五月婷婷丁香综合| 久久 视频这里只有精总| 久久99久久99精品免观看软件| 人人人人人人人人人草| 婷婷区日本| 激情五月无码| 激情五月婷婷综合网| 91婷婷五月天综合视频| www.五月天婷婷姐姐| 夜夜夜叫天天天做| 五月激情综合深爱| 噜噜色com| 天天摸天天透天天舔| 开心五月网| 人人操AV| 伊人久久婷| 99热精品在线播放| www色婷婷| 性生生活大片又黄又| 婷婷综合中文字幕| 久久婷婷综合色丁香| www.yw色| 新97人人上人人| 一区二区三区四区五区| 6080av| 欧美丁香五月| 丁香六月激情| 五月天色婷婷综合| 国产成人精品一区二区三区视频 | 99热碰碰| 五月天激情小说| 99 频99热国里只有精品| 丁香婷五月| 综合色播| 97福利视频| 538在线精品| 碰超在线九色| 九九AV| 五月天婷婷影院影院| 天天色色天天| 久久ww| 久久久久久久11111111111| 大香伊人婷婷| 中文字幕成人| 国产色五月婷婷| 夜夜大香蕉婷婷丁香| 婷婷色五月激情| 久草九一| 日本色色色| 五月丁香婷婷中文网| 99操免费视频| 人妻丰满精品一区二区A片| 色婷婷第四色| 激情综合五月婷| 欧美狠狠地| www.超碰在线| 九色亚洲| 色婷婷网| 无码 色| 丁香五月播播| 99视频日韩| 丁香午月AV中文字幕| 综合五月丁香六月婷婷| 五月成人网站| 色婷婷无吗| 亚洲视频在线观看99| 亚洲色热| 超碰只有精品在线| 伊人久久99| 婷婷六月视频| 色婷婷五月天| 久久99久久久| 五月婷婷综合色拍| 综合色99| 91VIP在线观看| 久热这里有精品视频| 欧美日韩成人一区二区| 亚洲无码 图片区| 色婷婷黄色网络| 伊人婷婷五月天| 色啦啦视频| 天天日综合网射| www.婷婷五月天| 丁香五月成人自拍| 五月四色婷婷| 六月丁香网| 97香蕉久久超级碰碰高清版 | 噜噜色五月| 国产成人高清| 4438全国最大视频成人网站在线观看| 五月丁香婷婷无码中文| 久久狼人天堂| 丁香六月激情毛片| 五月婷婷亞洲中文| 国产古装妇女野外A片| 99在线er热| www.91色| 超碰9| 激情五月久久| 欧美日韩国产成人在线| 五月婷婷色吧!| 双性美人被调教到喷水A片| 婷婷五月天成人五月天| 丁香九月婷| 色婷婷激情四射视频| 久久五月天激情| 20253AV| 四色女婷婷| 国产精品国产成人国产三级| 天天爱天天做天天日| 亚洲综合无码| 9l视频自拍9l九色9l成人| 五月丁香六月色| 9999综合99综合人| 日韩视频99| 久久精品日| 天堂草在线看www| 超级碰碰碰久久网站| 17.c黄色| 日韩AV在线免费| 这里只精品热在线18| 另类丁香五月天区图| 第一区久久网站| 久777| 五月婷婷啪啪啪啪| 日本三日本三级少妇三级66| 99色亚洲| 婷丁香五月天| 99久在线观看| 碰碰91| 这里只有精彩视频| 亚洲性图一区二区三区| 风流少妇A片一区二区蜜桃| 99视频久久免费视频| 性av| 精品无码99| 视频在线免费观看欧洲乱码| 国产美女视频久| 久久婷婷网| 激情综合网五月| 色婷婷在线视频久| 婷婷色色网站| 99re思思热久久| 991精品在线视频| 激情五月丁香五月| 激情文学天天| 9视频在线成人网站| www.狠狠艹| 99热在线中文字幕| 9l视频自拍9l九色成人| 先锋男人99资源| 成人精品网站在线观看| 婷婷97碰碰| 日韩人妻无码一区二区| 色.五月综合网| 伊人五月综合网| 久99| 性爱网五月婷婷| 五月天婷婷AV| www。88热在线视频免费观看| 9精品久久999| 亚洲精品婷婷| 这里只有精品日韩| 五月停停99| 婷婷五月丁香六月| 久久这里只有精品无码| 久草丁香婷婷五月天婷| 久久这里都是精品| 99久久er| 国产在线黄色| 色一色综合| 色情五月婷| 深爱激情四射| 久碰综合| 久久久亚洲精品一区二区三区浴池| 五月丁香中文字幕| 精品九九在线观看视频| 亚洲成人网址在线观看| 日韩人妻在线观看| 五月丁香婷婷人体| 五月婷激情影院| 成人做爰A片免费看视频| 无人精品在线视频| 亚洲AV激情五月综合网| 欧美丁香五月| 99精品偷自拍| 九九re精品视频在线观看| 成人色情五月天婷婷丁香| 91精品无码久久久久久五月天| 亚洲亚洲人成综合网络| 五月天丁香婷| 亚洲激情色色| 1024日韩| 亚洲成人无码免费| 少妇人妻丰满做爰XXX| 丁香五月婷婷亚洲综合精品| 久久欧洲综合网| 人妻射精AV| 激情五月天啪啪| 碰碰人人人| 欧美激情综合色综合啪啪五月| 久久99热这里只有精品| www婷婷色情网| 婷婷的久久网站| 天天透天天干| 俺也去五月婷婷丁| 免费亚洲婷婷| 99碰碰视频| 婷婷操婷婷干婷婷射| 激情五月综合色婷婷| 综合网色| 久久久久98| 色色热日| j五月香在线| 色99视频| 亚洲第一第二网站| 久久东京热婷婷五月| 五月丁香香蕉| 婷婷五月天另类网站| 深爱开心激情网| 天天爽夜夜爽夜夜爽精品| 综合激情在线| 日本黄色在线观看| 欲色人妻| 天堂呦 呦百度搜索-百度搜索| 深爱五月婷婷| www.婷婷五月| 超碰91在线| 久9热在线视频| 九九这里只有精品| 99热这里只有精品55| 九九性视频| 五月婷婷婷婷婷| 爱婷婷久久视频| xfplayav在线| 天天日夜夜爽。| 97五月天婷婷| 色婷婷五月天不卡| 午夜激情五月天| 六月丁香社区| 99r这里只有精品在线观看| 性生活视频98791| 五月丁香基地| 四色AVwww| 第五色色色婷婷| 色偷偷五月天| 日亚二欧美| 婷婷五月丁香超碰| 99热1| 欧美日韩999| 五月丁香啪| 免费无码毛片一区二区A片| 中文字幕按摩做爰| 欧美日本韩国亚洲| 狠狠噪| 噜噜五月天综合| 91视频久久久| 黄色五月婷婷| 五月婷婷综合网| 操笔无码| 91人妻视频| 日本色狠狠| 久久与婷婷| 丁香五月婷婷影院| 专区无日本视频高清8| 无码激情AAAAA片-区区| www99热| www.日本久久videos| 欧美狠狠草| 亚洲 无码 中文字幕 中出| 五月婷婷自拍视频| 天天日夜夜曹| 久99久在线| 久久香蕉网| 久久综合五月情| 日本黄色精品| 丁香六月婷婷综合| se99在线| 丁香婷婷基地| www超碰| 国产精品久久久久久久久久免费| 久久九网| 久久久久久9| 噜综合| 五月丁香激情欧洲啪啪| 五月天婷婷免费视频| 久久这里只有精品热在99| 国精产品一区一区三区免费视频| 丁香五月 无码| 五月婷婷色情| 激情综合网,婷婷五月天| 五月丁香中文| 丁香婷婷五月| 九九色黄色| 国产成人+综合亚洲+天堂| 涩涩网五月天| 综合久久97| 亚洲黄网AV| 无码人妻电影| WWW.99热| 久久精品99| 68热超碰在线| 另类天堂| 十月色综合| 91超级碰碰碰| 91嫩草久久| 婷婷五月天777| 日本天天操| 激情都市另类| 伊人久久婷| 99免费视频网| 天天插综合网| 久久影视婷婷五月| 丁香狠狠| 97热这里精品在线视频| 亚洲三A| 色玖玖综合网| 九九热精品6| 日本天天操| 婷婷97碰碰| 99日这里只有精品| 九月婷婷综合| 欧美三级黄色片久久| www开心激情网| 色丁香五月| 婷婷色在线视频| 五月丁香另类网| 婷婷久久五月| 久久综合综合久久| 色五月丁香婷婷在线观看| 婷婷97狠狠成人网站| 五月天婷婷网站888| 亚洲欧美一区二区三区四区爱爱动图| 99精品网| 九月丁香| 久久99精品久久久久久三级| 狠狠色中色| 国产26uuu视频| 婷婷五月激情网| 中文字幕,综合,91| 天天操人人干| 久久久久久久91| 亚洲mm色| 精品夜夜澡人妻无码AV| 天天人人综合| 色久九| 182TV亚洲| 99热精品在线| 色五月中文字幕| 亚洲精品国产精品乱码视99| www,setingting| 五月丁香婷中文字幕| 色偷偷AV亚洲男人的天堂| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 成人网丁香五月| 五月激情久久综合网| 亚洲V国产V欧美V久久久久久| 久久五月天激情美女| 欧美色色色色色| 婷婷五月丁香啪啪| www.日韩国产| 色婷婷综合综合网| 91超级碰在线视频| 狼人狠狠操| 99热久草| 激情黄色小说色五月| 99A级片| 大香蕉520| 26uuu国产| 五月天婷亚洲综合在线嫩草网| 另类小说五月天|