免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
色哟哟性爱av| 久久99热这里只频精品6学生| 9热在线| 婷婷涩涩五月天| 色域五月婷婷丁香| 综合久久十| 婷婷丁香花五月天| 婷婷干五月综合在线播放| 99色网站| 婷婷综合一二三| 婷婷久草| 九九色逼| 久9免费视频| 综合激情网| 伊人五月综合网| 五月天婷婷久久| 深爱五月中文字幕| 大香网伊人久久综合| 色色网站毛片| 婷婷大香蕉| 五月天婷婷社区| 婷婷久久国产视频| site:xmssd.com| 色五月97| av电影在线播放| 精品无码久久久久久久久| 五月天激情小说网| 岛国av网站| 五月丁香六月色情网欧美| www.maotanji.com| 丁香 久久| 婷婷五月丁香亚洲| 一级黄在线| 夜夜爱网站| 9有码中文| 开心五月婷| site:hcxsz888.com| 性爱五月丁香| 精品久热69| 情欲禁地| 五月天另类激情在线| 十一月婷婷激情四射| 色色日韩无码| 五月丁香五月天现场视频| 丁香五月天激情婷婷丁香六月| 色欲久久久久久综合网综合网| 夜色热久| 啪啪操网| 亚洲九九婷婷| 色五月激情五月| av色色国产| 中文成人在线| 久久精品婷婷| 99视频在线精品免费观看2| 日日操日日撸| 天天搞天天色综合| 99热网站| 99热这里有精品| 亚洲日日操| 亚州操操| 国产日比| 无码AV免费精品一区二区三区| 色色网站| .精品久久久麻豆国产精品| 丁香婷婷色五月| 成人五月天丁香婷| 婷婷狠狠操| 夜夜骑夜夜操| 老美AA片| 五月婷婷丁香大香蕉| 99A片| Blackedraw视频一区二区| 秋霞免费视频| 久久亭亭电影| 天天搡日日搡aaaaⅩ| 天天综合网91| 天天成人综合| 狠狠插日日干撸| 少妇人妻综合色6699| 久久综合激情婷婷激情| 久久婷婷网| 特黄三级片| 色色丁香婷婷综合| 欧美日韩精品人妻狠狠躁免费视频 | 国产乱妇乱子在线播视频播放网站| 五月天婷婷色色| 精品一二三区久久AAA片| 亚洲综合五月天婷婷丁香| 粉嫩AV久久一区二区三区| 99免费视频| 精品国产乱码久久久久久免费| 在线视频婷婷| 大香蕉久久草| 亚洲乱码成人| 五月婷六月| 天天日天天舔| 4399精品一区二区| 五月婷婷开心爱| 丁香婷婷伊人| 99碰超| 婷婷色播婷婷| 九九美女视频| 夜夜人妻五月天| 色五月婷婷视频| 色丁香影院| 99热碰碰热| 超碰免费99| 久综合色| 色亭亭丁香五月天| 97福利视频| 亚洲99在线| 2025天天日爽| 爆乳熟妇一区二区三区四区| Av大香蕉| 另类综合色| 色色色色色色网站| 综合激情sV| www.婷婷| 亚洲国产精品VA在线看黑人| 欧美性猛交99久久久久99按摩| 免费观看欧美成人AA片爱我多深| 色999五月色| 国产真实乱了老女人视频| 久热久re| 五月婷婷之六月丁香| 天天日夜夜曹| 黄色热99| 99综合视频在线| 婷婷丁香五月综合激情小说| 成人丁香五月| 天天操B| 狠狠干狠狠干狠狠干狠狠干| 色99色| 久久草大香蕉| 香蕉综合在线| 婷婷五月天亚洲综合| 五月婷婷综合网| 激情 婷婷| 99热99艹在线观看| 亚洲综人色综网| 亚洲中文乱字字幕在线永久| 丁香五月天堂婷婷| 99热日韩这里只有精品| 五月丁香啪啪综合| 另类综合激情| 色婷婷五月天在线观看| 色网站9| site:xmssd.com| 91人人爽久久涩噜噜噜| 伊人久久丁香五月91| 99re热精品在线视频| 九九免费视频| 色综合色色色色色色综合| 婷婷五月成人有| 91婷婷色| 91要啪| 99av视频| 激情五月天综合婷婷网| www.久久色.com| 激情99。| 欧美激情综合| www.久久爱.c n| tingtingjiqingwuyue| 91干视频| 久久久久久久97| 五月丁香婷婷成人网| 人妻丰满精品一区二区A片| 五月丁香婷中文| av人人干| 久久综合影院| 九九色欲网| 色婷婷色五月综合| 五月激情小说| 久热黄色| 五月丁香六月香香蕉| 亚洲色色五月天| 五月丁香六月婷婷无码| 伊人大香久久| 婷婷激情视频| 开心婷婷五月天综合| 日本99热| 婷婷AV丁香| 婷婷五月六月| 天天日天天摸天天| 偷拍九九热| 丁香五月天激情小说| 丁香五月色| 日韩无码成人电影| 99热这里只有精| 久久久网站| 色色色色综合网| 熟女激情网| 大香蕉久| 色欲五月天| 三年高清大片免费观看国语| 五月激情网络| 婷婷射图五月天| 91碰| 五月婷婷亚洲综合网| 欧美人与性动交CCOO| XXXX岛国| 免费视频1区| 婷婷色色欧美| 大香蕉520| 四色永久成人网站| 六月丁香好婷婷| 国产探花一片区| 五月天.com| 99操无码视频观看| 中国丰满熟女A片免费观| 99爱免费在线观看| 青草青草久9视频在线视频| 九九99久久| 国产成人AV在线播放| 日韩操逼大片| 丁香六月 人妻| 1024人妻无码中文字幕| 五月激情综合网| 色婷婷五月天亚洲| 亚洲无码免费看| 中文字幕成人影视| 天天综合天天做天天综合| 国产激情一区| 啊V视频在线观看| 熟女色专区| 亚洲亚洲人成综合网络| 全高清无码视頻| 99视频| 99在线视频精品| 日本三级第一页| 中文久久婷婷| 99热首页在线30| 色五月,com| 五月丁香在线| 99re26视频| www.com任你艹| 亚洲天堂久久| 99热无码| 色婷婷婷婷成人网| 五月天激情久久| 亚洲经典三级| 综合久久97| 婷婷 亚洲图片 丁香| 婷婷无五月无码视频| 综合在线色婷婷| aaa丁香五月天| 91综合色噜噜| 99热国品| 性色五月天| 激情五月四色| 色综合播放| 婷婷色五月天色| 国外亚洲成AV人片在线观看| 五月天丁香网站| 天天日夜夜草进麻麻的子宫| 7月婷婷六月丁香| 超碰cap| 久操热| 色五月天在线观看| 亚洲色综久久五月| 成人五月天在线视频在线观看| 91se在线观看| 丰滿爆乳一区二区三区| 大香蕉啪啪网| 久久丁香五月天| 五月婷婷婷婷| www,99热| 色播五月天天| 亚洲日本激情| 亚洲小视频免费播放| 超碰自拍天堂| 欧美A片在线视频免费观看| av中文在线| 99久热这里只有精品| 久久伊人日日夜夜| 精品九九在线观看| 伦乱美欧| 少妇日麻屄| 99热综合网| 日屌日日操日日色| 成人精品在线| 日韩六六久久电影| 97干网站| 91干| 色欲婷婷夜夜| 久操欧美在线观看97| 亚洲 无码 中文字幕 中出| 中文字幕丰满孑伦无码专区| 天天日日爽| 欧美色必爱| 日韩色五月| 久热精品免费视频4| 五月丁香激情深爱婷婷| 99re热在线观看| 99热这里都是精品| 天天操夜夜夜拍拍拍| 久久大香蕉丁香| av第一二区| 日本九婷婷| 97婷婷狠狠| www.激情| 操逼在线视频| WWW.HENHENL.| 97久久精品| 婷婷丁香五月天哟啪| 国产美女无遮挡裸体毛片A片| 97深爱伊人综合| 久久ri精品| 丁香色婷婷| caop在线视频| WWW色五月| 六月综合在线| 91vip在线观看| 狠狠的日| 日韩爱操视频| 99re热精品视频国| 男人的天堂在线婷婷| 婷婷激情六月视频| 亚洲五月婷婷在线| 无码橾| 天天爽天天| 岛国av电影网站| 日韩肏屄网| 激情五月天小说网| 熟女激情五月天 | 婷婷六月激情啪啪| 激情久久丁香| 欧美人与性动交CCOO| 久久婷婷成人综合色怡春院| 丰满少妇乱A片无码| 天天操天天操天天操天天操天天操| 五月婷婷天堂| 婷婷五月天av小说| 99热日本| 亚洲六月色婷婷| 色噜噜狠狠色综合日日免费| 92国产福利| 成人午夜天| 日韩一级网站| 天天 青草 丝袜制服 在线| 成人网站av免费网站推荐| 天天干天天爽| 色婷久| 激情五月天婷婷| 91人妻人人操| 91日韩在线| 婷婷五月天成人网| 日日懆天天懆| 久热只有这里有精品| yw.av| 天天精品视频免费观看| 五月天播播中文字幕| 久久五月天合网| 日韩美女在线视频19| 久久在线视频免费观看| 另类专区在线观看| 综合网亚洲| 五月婷婷狠天天色综合| 婷婷五月亚洲综合| 99在线爽| 亚洲丁香花五月丁香花| 99色视频| 丁香色五月 97干| www.久久婷婷| 精品久久穴| 天天爽天天日| 五月丁香婷婷成人综合网| 亚洲另类婷婷五月丁香在线播放| 五月丁香亭亭操逼| 第五婷婷伊人丁香| 色婷婷激情视频| 蜜桃人妻无码AV天堂三区| 色婷婷免费视频| 久8色色| 婷婷五月丁香六月伊人网| 亚洲AV第二区国产精品| 丁香五月婷婷高清| 草榴成人影片| 日本综合九九| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 日韩成人无码| 丁香网站| 涩五月婷婷| 色综合丁香| 99re8在这里只有精品| 婷婷五月天视频在线观看| 欧美在线视频99| 六月丁香婷婷色狠狠久久| 久久看九九90| A片天天| 五月丁香影视| 99久在线精品99re8| 青青夜夜狠狠夜夜狠狠| 丁香五月亚洲AV| 另类伊人婷婷| 婷婷五月综合网| 色综合偷拍| 久久一伦| 丁香婷婷婷五月综合色情| 综合六月久久| 亚洲精品又粗又大又爽A片| 色情五月婷婷| 激情综合五月丁香| 最近中文字幕大全免费版在线| 丁香五月AV| 色色色综合色| 99热婷婷| 免费看欧美成人A片无码| 激情五月综合亚洲另类| 色色色综合| 久久曰曰| 丰满人妻妇伦又伦精品国产| www.99热国产| 久久性都花花世界成人免费视频| 97操女视频| 精品视频网| 精品亚洲国产成AV人片传媒| 成人久碰| 激情熟女网| 婷婷丁香五月激情密臀av| 小色小蛇伊人婷婷色香五月| 51XX午夜影福利| 97中文在线| 五月激情丁香五月| 中文无码精品一区二区三区| 狠色狠色综合久久| 激情五月综合婷婷| 国产精品久久..4399| 婷婷五月天av| 极品少妇XXXX精品少妇偷拍| 99人人爽| 日韩av网站在线观看| 婷婷精品综合| 丁香五月婷婷AV| 日韩色色色色色| 丁香五月天大香蕉啪啪| www.91AV.com| 色玖玖综合网| 五月丁香婷婷激情在线视频| 丁香色综合| 美欧成人视频| 日日干日日| 少妇伦子伦精品无吗| 天天日日| 美女激情综合| 欧爱综合视频| 99色网站| 人妻久久久久久久| 色欲五月丁香| 97人人搞| 狠狠色丁香99| 亚洲色激情| av在线观看网站| 色五月婷婷网| 九月婷婷在线观看| 婷婷久草| 另类视频丁香五月| 伊人网碰碰| 狠狠五月天| www五月婷婷88导航| 亚洲色婷婷五月天| 狠狠色婷婷7| 五月婷婷综合潮喷| 国产免费一区二区在线A片视频| 日韩中文欧美| 91性人人| 激情婷婷五六月天| 99视频在线精品| 久久a热| se色婷婷视频| 久草五月婷婷| 中文网av| 亚洲激情五月婷婷日日| 亚洲综合色网| 大地资源色婷婷视频在线| 伊人五月天久久| 金桔一区二区ab地址| 久久九九蜜| 亚洲精品成人| 3DAV亚洲香蕉久久 一区二区| 99超级碰免费视频| 婷婷五月丁香基地| 色婷婷五月天| 久热一本| 99久久玖玖| 五月婷婷啪啪| 丁香狠狠色婷婷久久无码视频| 丁香 亚洲 久久| 《战争与艾拉》完整版| 久久五月天色婷婷| 色婷婷狠狠禁久久| 亚洲日韩乱码一区二区三区四区| 亚洲av成人在线| 六月丁香好婷婷| 九九精品热| 9999热免费视频视频| 亚洲网站在线鸭子av| 玖玖热视频| www.婷婷五月天| 狠狠爱婷婷| 婷婷伊人久久综合| 五月丁香六月激情| 欧洲毛片基地c区| 五月第四色| 激情六月天| 99视频35精品视频在线观看| 99综合色| 色啦啦视频| 综合五月丁香久久| 超碰免费人人| 97九色视频| AV在线收看| 26uuu欧美亚洲日韩| 99热精品在线| 国产精品色婷婷99久久精品| 五月婷婷真爱激情网| 成人美女网| 玖玖婷婷五月| 五月天六月色| 丁香婷婷老司机久操| 激情五月综合ì香亚洲| 人妻av在线| 色色色国产| 亚洲操操操| 色色五月婷婷网| 蜜桃婷婷丁香五月天狠狠久久综合| 九九热自拍| 日本九九九九九九| 免费不卡狠操美女视频网| 91麻豆国产三级精品福利在线观看| 新99思思视频| 久久精品99| 日本色色色| 综合性爱网| 日本全黄一级999| 天天色激情| 丁香情色五月| 毛片新网地| 97在线观视频免费观看| 秋霞电影理论| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 九九成人精品免费视频| AA丁香综合激情| 色色狼人综合| 丁香五月六月综合激情| 久久区区一二三av| 99热精品无码| 久久激情五月| 99久久99九九99九九九| 中文字幕在线免费观看视频| 97干在线| 免费精品99| 五月婷婷色播视频| 国产一区二区三区影院| 色青五月天| 丁香六月成人| 人人爱国产| 欧美男女婷婷| 五月丁香六月激情| 97久久久久| 91干| 丁香六月天AV| 强辱丰满人妻HD中文字幕| 亚洲人妻一区二区 | 99热久久这里只有精品| 日99网站| 色情五月停停丁香| 五月丁香花视频| 99热这里只有精品1025| 五月婷视频久久| 99久久婷婷| 丁香六月婷婷高清| YW无码| 99综合网| 超碰免费人人| 这里只有精品视频在线| 丁香五月六月激情| 激情五月丁香六月综合AVXXXX| 色九亚洲| 日本啪啪天堂| 狠狠精品干练久久久无码中文字幕 | 7777国产盗摄农村女人| 人人爱人人草| 五月丁香婷婷综合网| 另类小说五月天| 国产精品色色色色| 亚洲av网址| 日韩色色网| 色欧美一级| 伊人啪啪网| 日本97在线视频| 久久久久久人妻| 99热精这里只有精品| 久久五月天激情婷婷| 天天综合网91| 中文不卡一二三区| 99久久精彩视频| 亚洲综合激情五月久久| 日韩精品色| 五月丁香毛片| 婷婷色在线| 激情网综合| 久草性爱| 色色欧美色色色| a久久| 亚洲色色图片| 99热九九在线| 国产精产国品一二三在观看| 婷五月天| 天干干夜夜操| 九热免费视频| 亚洲色图欧美色图日本视频| 91.com男女操| 六月色色婷婷| 99在线观看视频| 亚洲黄色网址| 婷婷操逼| 天天做天天摸| 六月丁香五月激情亚洲AV| 日韩 mm 不卡| 五月天婷婷影院| 色播播婷婷| 六月婷婷五月丁香首页| 大香蕉免费9| 丰满少妇猛烈A片免费看观看| 另类小说五月天| 色婷婷精品小视频| 久久久久久9| 青青草大香| 黄网在线播放| 色偷偷色婷婷| www色婷婷久久综合久色 | 丁香婷婷久久综合在线| 久久HD| 99r这里只有精品在线观看| 日本精品在线噜噜噜| 9色天堂| 激情五月婷婷综合| 碰碰女| 少妇人妻综合色6699| 久久丝丝热| 婷婷色色丁香| 色五月丁香A欧美com| 五月丁香 啪啪| 婷婷五月天另类网站| 久久婷婷五月国产激情综合片| 伊人玖玖综合| 日韩在线视频9色| 久热9| 日本啪啪网| 深爱激情五月婷婷| 色色网站免费观看| 天天网站天天爽| 97色片| 综合久久综合综合| 99九九精品视频推荐| 五月丁香综合激情| 丁香五月性爱| 激情五月婷| 激情综合色婷婷六月天| 日日夜夜天天爽| 色色色视频| 中文字幕永久在线| 精品婷婷| 综合大香蕉| 色播五月综合网| 色婷婷网大全在线| 爱99干99| 久久久国产精品黄毛片| 色色色999| 九九99久久| 综合五月婷婷| 亚洲综合九九| 久久婷婷热| 九九re精品视频在线观看| 色色色色色爱| 激情五月婷婷中文字幕| 呦呦AV| 色丁香综合影院| 六月婷婷六月天天在线免费| 天天肏屄夜夜爽| 婷婷久久综合| 丁香五月网站| 99在线观看亚洲| 久这里只有精品99| 五月天成人综合| 8区视频在线| 色婷婷69| 亚洲啪视频| 国产成人网站在线观看| 丁香色色网| 丁香六月啪| 日本综合色图| 久热这里只有精品6官网亚洲| 久久久婷丁香五月天激情综合| 激情伊人网| 成人网站av免费网站推荐| 99re免费在线视频| av国产精品偷| 日韩九九视频| 日日操夜夜操狠狠操| 亚洲性图一区二区三区| 午夜精品777| 五月综合六月丁| 我要看激情五月天| 天天日夜夜曹| www.色色五月天.com| 激情六月丁香| 五月婷婷久久综合| 97干干干丁香| 六月婷婷日| 成人在线视频一区| 婷婷伊人网| 六月亚洲婷婷6月中文字幕| 99在线观看免费精品视频| 婷婷激情五月天亚洲综合| 色情免费视频播放| 婷婷五月天无码| 久99综合婷婷| 欧美色频| 欧美五月停| 日本在线wwww| 激情久久久久| 色五月婷婷、老熟女| 五月丁香婷婷激情澎湃四射| 97五月天| 日韩人妻无码专区| 97日本操| 九月大香蕉| 亚欧州精品视频| 久久久久综合激动五月天| 五月婷AV| 欧美久久网| 五月婷婷久久综合| 丁香六月综合| 中文字幕在线免费观看视频| 婷婷精品在线| 天天狠狠干| 色丁香五月婷婷| 国产在线激情视频| 啪啪六月婷婷| 亚洲激情 久久| 色噜噜狠狠插综合| 日本99热| JlZZJlZZ8JlZZ亚洲熟女| 国产午夜精品一区二区| 99久re热视频精品98| 99爱免费在线视频| 九九热自拍| 麻豆AV一区二区三区| 9久久网| tingtingjiqingwuyue| 狠色色狠网| 99热最新| 亚洲综合视频八| 免费黄色视频网址| 日本 @ va 免费| 色婷婷丁香五月天| 亚洲AV成人在线观看| 五月丁香婷婷色色| 永久AⅤ1| 欧美日韩aaa| av一区免费看| 五月丁了香蕉综合| 亚洲天堂色色| 亚洲精品国产A久久久久久| 婷婷五月色影视先锋| 99热精这里只有精品| 久久狠狠干| 色.五月综合网| 91操人视频| 色久五月天| 99久热| 五月婷婷丁香六月| 丁香五月激情视频在线| 色色网站在线| 中文字幕+中文在线| 99精品视频在线6| 丁香婷五月天开心六月| .青娱乐天天操B| 中文字幕成人| 欧美黄色韩日网| 亚洲精品又粗又大又爽A片 | 91精品婷婷国产综合| 天天成人丁香美女AV| 色五月六月| 五月丁香人妻| 开心五月婷婷99| 五月丁香综合啪啪| 色99在线视频| www.夜夜操.com| 极骚大香蕉伊人| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | av超碰在线| 白天AV月月| 婷婷六月啪啪| 色色婷婷婷丁香五月天| 久热视频这里只有精品68| 激情六月婷婷| 色五月婷婷av| 开心激情站| 日韩有码一区| 五月婷婷色吧!| 色综合五月天| 亚洲天堂大香蕉| 五月丁香亚洲综合| 九日日夜夜69| 五月天色导航| 亚洲中文字幕在线观看| 都市激情久久| 97色色综合| 丁香五月欧美激情| 丁香五月激情啪啪| 99热在线中出| 色婷婷在线视频综合| 在线观看免费视频| 久久黄色网扯| 六月丁香久久| 五月天另类小说亚洲| 天堂综合久| 四川操逼站| 婷婷五月激情视频| 人妻免费网站| 久色国产| 玖玖婷婷五月天毛片| 777精品成人a v久久| 欧美大肥婆大肥BBBBB| .操區COm| 激情五月婷婷综合| 影音先锋xfplay资源男人网| 色婷婷色99国产综合精品| 久久HD| 色五月五月婷婷| 国产小网站| 五月丁香婷婷免费视频| 我去色色网五雨天| 182TV大香蕉| 99超级碰碰| 日韩淑女人妻luan伦激情精品一区二| 97碰碰电影| 青青草原伊人网| 91九色无码日韩 | 婷婷狠狠操| 色婷精品91| 亚洲中文av| 极品色丁香| 婷婷的99视频网站| 色色色激情| 4399成人黄A片| 天天拍天天做视频| 婷婷D区| 五月丁香六月婷婷亚洲视频| 极品五月天| 五月香婷婷| 久久久99视频| 色五月 五月婷婷| 天天色爽| 99超超碰| 天天色天天爱天天爱天天爱y| 色色影院黄大片| 五月停停999| 色婷婷视频| 久久小视频| 伍月婷丁香花全集| www.爱婷婷.com| 99在线视频播放| 激情综合五月婷| 四川BBB搡BBB爽爽视频| 丰满熟女人妻一区二区三| 国产第99页| 色综合久久44| 成人超碰AV| 91色五月在线观看| 免费AV在线| 天天搞夜夜爽夜夜爽| 国产成人精品一区二三区熟女在线 | 五月六月婷婷| 亚洲精品在线视频| 日韩无码专区| 色综合色色色色色| 天堂爱啪啪| 日本天天色| 五月丁香六月婷婷亚洲| AV网在线观看| 91精品久久久久| 思思热精品免费视频| 夜夜爱爱亚洲| 天天干天天干天天干天天干天| 欧美天天干五月丁香| 99资源人人| 久久九九热视频| 一级A片天天操夜夜操| 色婷六月| 国产毛多水多女人A片| 综合五月丁香六月婷婷| 日韩另类| 五月四色激情| 亚洲精品亚洲人成人网| 综合五月天天天天天五月| 热久69| 任你艹| 五月婷婷,六月丁香| 99re6热在线精品视频播放速度| 欧美激情综合色综合啪啪五月| 思思热99在线视频| 狠狠色婷婷777| 丁香六月丁香婷婷激情| 亚洲AV网站| 开心五月婷| 永久免费一区二区三区| 狠狠色丁香| 婷婷丁香五月婷婷| 婷婷综合网在线| 视频一二区| 秋霞少妇AV网站| 婷婷综合五月天| 激情五月天小说视频| 婷婷综合色色| 五月婷丁香久久综合| 九九成人视频| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 五月天婷婷久久视频| 综合激情网激情五月。| 开心久久xxx色| 久久一级片| 农村熟妇高潮精品A片| 99热精品一区| 日本99婷婷| 亚洲视频在线观看| 婷婷色啪| 欧美爆乳一区二区三区| bbwcuckold精品熟妇| 秋霞日本免费毛片A片| 婷婷五月丁香青青草在线| 激情五月天婷婷| 九九色热| 美女婷婷六月色| 国产欧美第五十五页| 国产精品24r| 丁香激情五月天| 大香蕉久操| 亚洲综合激情五月久久| 99只有这里是精品| 都市激情蜜桃婷婷五月天| 9精品视频在线观看| 在线18av | 亚洲激情另类| 91无码视频| 婷婷伊人网| VA婷婷亚洲| 五月婷A V在线| 日韩操人| 色五月婷婷久久| 91九色欧美| 五月婷婷综合色啪首页| 九九蜜臀精品| 五月婷婷啪啪啪| 亚洲AV另类| 色婷婷成人做爰A片免费看网站| 久久伊人大香蕉| 天堂综合久久| 天天日夜夜拍| 五月天激情视频五月天| 26UUU亚洲欧美| 狠狠夜夜五月丁香| 婷婷丁香69精华| 色五月天激情| 99热e| 婷婷九色| 亚洲综合成人网站| 最新日韩AV中文字幕| 五月丁香婷婷五月色| 成人无码髙潮喷水A片| 色五月婷婷网| 深爱激情五月天| 激情五月丁香五月| 超碰碰碰碰| 婷婷色在线播放| 五月婷视频在线| 丁香婷婷婷五月| 婷婷综合爱| 婷婷精品综合| 欧美3AaAa大片| 99爱免费视频| 六月丁香成人网| 婷婷五月天香蕉| 国产午夜精品久久久观看| 午夜婷婷五月天| 亚洲第一色区| 五月激情网站| 婷婷五月丁香基地| 九九婷婷网五月天| 天天爽天天日| 久久999久久999久久999久久| 五月婷婷中文字幕AV| 色五月激情网| 91综合色| 欧美六月| 五月婷综合| 97av在线视频| www.五月天| 热思思九九| www.seqingwuyuetian| 字幕网AV中文字幕| 就去色色五月丁香婷婷久久久| 五月 婷 久| 伊人大香久久| 国产91九色| 色丁香五月天| 日韩人妻无码精品| 婷婷丁香69精华| 欧洲激情五月天婷婷| 丰满人妻一区三区三区| 99热只有精| 五月婷婷五月色| 91成人视频| 伊人在线视频| 丰满人妻妇伦又伦精品国产| www超碰com| 99日在线观看视频| 激情婷婷在线中文字幕| 婷婷亚洲日本| 五月丁香综合伦理片| 丁香五月停停av| 涩综合婷婷| 六月丁香av| AV九九| 99热超碰人| 五月婷婷色啪| 狠狠综合| 日在线V视频在线播放| 九九热在线99| 99久久综合网| 国产欧美日韩综合精品一区二区| 665566 无码| 亚洲色夜| 激情综合五月激情17| www开心激情网| 99视频只有精品| 噜噜操操| 开心婷婷五月| 婷婷五月丁香色色| 色婷婷综合久久久久| 九月婷婷综合八月丁香在线观看| www.五月瑟| 亚洲99综合| 中文字幕免费高清电视剧| 亚洲免费电影2| jiujiu热在线视频| 一级性爱大片| 久久9久| 色综合久久天天综合网| 五月丁香做爱视频| 日本一道久久| 欧美A级成人婬片免费看理论| 午夜九九九九九九| 久热99| 五月婷婷丁香俺日污视频| 91精品久久久久久综合五月天| 美女91一起草| 五月的丁香六月的婷婷| 久色网址| 五月婷丁香久久综合| 狠狠88综合久久久久噜噜噜| 六月婷婷色色色| 五月天福利影院导航| 丁香五月婷婷啪啪| 亚洲中文乱字字幕在线永久| 亚洲欧洲中文日韩久久AV乱码| 狠狠爱婷婷| 色五婷婷| 婷婷丁香久久| 人人性久久| 婷婷丁香人妻天天久久| 香蕉久久国产AV一区二区| 久婷视频| 五月丁香亭亭成人电影| 色噜噜狠狠色综无码久久合欧美 | 激情丁香五月| 五月婷婷黄| 六月亚洲| 97操视频| 亚洲视频在线网| 国产免费一区二区在线A片视频| 九九无码视屏| 五月婷久久| 天堂综合久久| 五月丁香婷中文| 欧美色图天堂网| 久久一操| www·五月天| 亚洲综合婷婷| 丁香五月久久社区| 色国产五月| 色婷婷久久综合| 狠狠色噜噜色狠狠狠综合色 | 久久五月天视频| 人人综合五月人人婷婷| 色99网| 九九热婷婷| 五月天婷婷六月激情网| 69色婷婷| 丁香五月婷婷操逼| 99热欧| 丁香五月婷婷影院| 一级内射毛片| 狠狠色丁香99| 91狠狠综合久久久| 九一九九黄色| 五月丁激情| 深爱婷婷网| 丁香婷婷五月综合影院| 婷婷五月花丁香| 超级碰碰97在线| 婷婷五月综合婷婷| 色狠狠综合网| 丁香狠狠操| 亚洲丁香五月在线观看| 在线理论片| 噜综合| 一级性爱视频| 91九色|疯狂|高潮|对白|| 久9无码视频| 狠狠色97| 久热99热| 99在线精品视频| 欧美色色色色色色色色色色| 婷婷综合影院| 亚洲婷婷五月| 婷婷五月色综合| 亚洲综合视频网| 久操激情| 亚洲成人AV在线播放| 99在线视频播放| 武则天精品久久| 91男同| 丁香婷婷色五月| 亚洲色9| 成人在线日韩| 91视屏在线观看com.wwwvv| 亚洲日韩一页精品发布| 色婷婷伦理| www.99riav99| 婷婷五月婷| 亚洲色图81p| 99色干| 99热最新地址在线| 天天爽夜夜操| 六月婷婷网站| 婷婷激情五月天桃花网| 婷婷五月天激情电影小说| 精品爆操| 五月丁香婷婷综合网| 热九九在线| 免费看欧美成人A片无码| 狠狠狠狠狠操| 五月丁香婷婷99| 丁香五月综合激情啪啪| 九九精品热| 99在线精品免费视频| 五月天深爱激情网| 激情五月婷婷啪啪| 欧美97色| 六月欧美综合色情| 九九精品9| 另类激情五月在线视频欧美| 91黄操| 九九香蕉网| 婷婷五月天第四色| 六月丁香激情| 欧美在线视频99| 婷婷五月开心中文字幕色| 欧洲综合一区| 久久99综合网| 丁香五月色色色色| WWW.亚洲无码| 色色热| 狠狠艹狠狠艹| 9九九久久精品无码专区| 伊人激情影院| www.粉嫩av.com| 五月综合激情啪啪啪啪啪| 久久综合人妻| 9久精品| 五月婷婷涩涩爱| 99网99热| 只有精品在线观看| 68热超碰在线| 婷婷五月天网址| 97丁香花五月天激情小说| 亚洲中文字幕在线电影| 美女精品一级不卡视频| 婷婷五月天777| 婷婷香蕉视频| 综合色五月| 久久久久人妻中文| 色99日韩| 蜜臀久久99精品久久久久久酒店| 丁香五月天激情综合| 日日噜狠狠色综| 禁片二区| 99热这里只有精品66| 五月丁香六月婷婷亚洲| 五月婷婷激情性爱| 亚洲第一成人无码A片| 午夜丁香综合婷婷| 加勒比色色| 六月丁香婷婷色狠狠久久| 日本精品久久久久中文字幕| 九九热视频这里只有精品| 26uuu.| 久久五月婷婷视频| 色五月婷婷网| 日本色色网站| 天天综合天天玩夜夜玩天天玩夜夜玩 | 亚洲亚洲人成综合网络| 色五月婷婷亚洲最大| 五月婷婷视频啪啪美女| 色99在线看| 四川BBB搡BBB爽爽视频| 色六月丁香婷婷啪啪啪| 婷婷网五月| 国产激情视频在线观看| 九月停停| 九九成人视频| 99热只有这里有精品| 日韩一66精品| 亚洲成人av在线| 日韩在线视频9色| 五月激情六月丁香| 99热都是精品| 五月婷婷免费在线观看| 超碰91在线| 中文字幕在线不卡视频| A片试看50分钟做受视频| 日韩99视频| 亚洲va在线| 久思思久视频| 成人网在线视频| 日韩99无码| 91久久久久久| 大香蕉天堂| 五月丁香龟婷婷| 人人人人人人人人人草| 91热久久| 色婷亚洲五月丁香| 婷婷五月丁香五月基地| 婷婷五月天综合网| 天天综合五月| 天天爽免费视频| 婷婷激情鹿城五月天| 久久久久妻| 久久婷婷人人| 免费一区二区三区| 被强行糟蹋的女人A片| 九九色综合| 久9视频免费播放| 性天天中文网| 激情播丁香| 色婷婷丁香五月| 大香蕉久久草| 日韩黄色AV无码| 亚洲中文字幕在线电影| 艹B高清无码| 国产欧美精品AAAAAA片| 狠狠操狠狠|