免费国产精品自在自线-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
返回資訊列表
亚洲丁香婷婷五月天综合色| 色色a| 久久男人网婷婷| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 操操综合网婷婷| 亚洲激情免费视频观看| 九九99精品视频| 婷婷丁香五月综合| 中文字幕人妻在线| 国产精品婷婷午夜在线观看| 99色这里| 色婷婷国产精品综合在线观看| 99在线69| 国产色99| 亚洲爱爱无码婷婷色五月| 六月婷婷毛片| 99综合视频| 十月丁香婷婷| 日本3级片偷拍网站| 夫妇交换刺激做爰| 色色丁香| 久久92| renrencaoav| 99玖玖视频| 国产成人+综合亚洲+天堂| 日日撸日日操| 永久99免费视频网站| 日韩天堂久久| 色综合久久久无码中文字幕999| 婷婷丁香五月激情| 五月婷婷丁香综合网| 欧美日综合| 国产干逼片| 五月丁香| 成人丁香五月天| 欧美成人精品老美女噜噜噜| 亚洲婷婷六月天| 一起草无码| 超碰v| 99色在线| 99九九精品视频| 亚洲VA在线| 婷婷五月天激情四射| 天天爱天天天射AV| www.丁香黄色五月天人与| 亚洲色夜| 国产在线黄色| 九色视频91疯狂| 五月婷婷之综合激情| 婷婷开心青青草| AV在线免费网站| 婷婷六月丁综合| 91中文在线| 五月丁香久久网| 99热在线观看精品| 思思热精品在线| 久久久久人妻精选| 色婷婷小说| 日本五月丁香| 六月丁香五月激情婷婷| 婷婷六月伊人| 婷婷五月天电影区小说区| VA国产在线综合网站| 性爱网五月天| 狠狠草在线观看| 亚洲狠狠狠色婷婷综合激情久久久| 色五月婷婷基地| 婷婷人妻激情| 大香蕉伊人99| 综合激情五月丁香9999久久精| 色吧婷婷| 98毛片| 日本啪啪天堂| 秋霞午夜理论| 亚洲最大五月天成人网| 五月丁香免费看| 久色网五月| 婷婷六月天亚州| 青草热视频这里只有精品| 琪琪理论片| 99热综合在线| SS丁香五月婷婷| 丁香婷婷伊人| 五月天婷婷伊人| 999热这里只有精品| 开心激情网在线| 天天搞天天色综合| 91久操| 丁香五月大香蕉| 99久久99九九99九九九| 亚洲AV久久久久久久久久久久久久久久| 亚洲亚洲人成综合网络| 97成人在线视频| 99re视频在线| 色色激情五月天| wuyuedingxiang99| 日本颜色视频人人爱| 日韩啊啊啊| 婷婷激情在线| 丁香六月婷婷缴情欧美| 91视频精品99| 婷婷成人丁香色情基地30 | 天堂在线伊久| 另类视在线| 99re热在线视频| 久久网站免费亚洲| 日日艹思思热| 五月丁香六月激情在线| 激情婷婷五月在线合集| 亚洲综合视频天天精品| 激情综合五月天| 久久久婷婷婷| 月丁香久久久| 五月婷婷色播网| 精品A√| 伊人网碰碰| 色欲天天综合网| 欧美熟女视频 色婷婷| 激情五月天第四色| 五月婷婷m| 另类小说色婷婷| 九九热在线精品视频| 97在线观视频免费观看| 久婷婷| 99视频在线观看欧| 五月天桃色深爱网| 嘿嘿视频免费看9| 成人电影一区| 婷婷成人五月天成人文学| 五月天大香蕉| 五月丁香人妻| 色婷婷综合网站| 婷婷五月综合社区| 欧美婷婷丁香五月| 激情五月天色婷婷综合| 九九成人视频| 五月婷婷在线丁香| 99ri精品视频在线观看| 免费亚洲成人电影AV| 五月色丁香国产在线视频| 另类 在线| 久久精品99国产精品日本| 六月婷婷青青青视频| 99操视频| 婷婷色基地在线看| 亚洲性爱区无码区| 五月丁香在线观看国产| 99精品无码网站| 色五月天激情| 97干免费视频| 激情六月综合| 天堂在线婷婷| 五月婷婷之婷婷| 9久热精品在线视频| 日韩人妻在线观看| 五月婷精品| 精品国产a| 亚洲综合激| 五月丁香激情四射| 大香蕉99| 老司机日日夜夜青草| 97操碰日本女人| 五月久久噜噜| 成 人片 黄 色 大 片| av色婷婷| 五月丁香啪| 丁香五月六月婷婷综合| 99热免费18| 婷婷五月天播| 激情玖玖sh| eeuus五月婷| 99色热| 伊人久久婷婷| 亚洲婷婷五月天| 综合久久婷婷五月丁香| 夫妇交换刺激做爰| 欧美成人精品一区二区| 丁香六月激情综合网| 综合九九| www.99婷婷| 五月天成人免费视频| 天啪色| 91成人性爱视频| 五月丁香亭亭AV女优| 久久这里只有国产视频| 可以看的av网站| 国产黄色大片| 超碰97人人操| 色播五月婷婷综合| 六月丁花香啪啪激情欧美| 欧洲亚洲欧洲99久久| 狠狠狠狠狠狠| 天天插天天插天天插天天插| 久久婷婷色色| 97很鲁在线视频| 69激情小说| 五月丁香婷久久| 亚洲日日日| 五月天激情图片网| 天天色亚洲| 日韩一66精品| 操婷婷基地| 啪啪婷婷五月天激情| 人妻性操逼中文字幕 国产| 激情五月影院| 亚洲激情婷婷| 色婷婷丁香五月天在线视频| 五月天怕怕| 9l视频自拍9l九色9l成人| 嫩草视频在线观看| 久久成人性爱| 五月天婷婷狠狠| 五月婷婷影院| 天天粽合合合合| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 日韩操逼大片| 亚洲性爱日韩无码| 久久伊人婷婷| 五月天综合| 五月色俺婷婷| 99热 免费| 99久热视频在线| 六月婷婷五月丁香| 婷婷丁香五月天在线| 婷婷五月天丁香成人社区| 伊人五月综合网| 丁香六月婷婷基地| 91九九| www.日日夜夜| 婷婷五月激情网| 91a片爽| 久操无码| 色婷婷的五月天| 久久久97| 五月开心啪啪| 日木WWW视频| 亚韩在线视频| 99色色网| 六月色丁香中文字幕| 欧美精品999| 无码AV大香线蕉伊人| 久久停停超碰| 99无码| 激情综合网 激情五月天| 久久婷婷丁香| 免费AV在线网址| 97人妻碰碰中文无码久热丝袜| 色婷婷丁香五月色综合网| AV在线免费播放| 色婷婷狠狠久久综合五月| 欧美成人Va| 91久久久久| 99色网站| 久久机热/这里只有精品| 色五狠狠| 五月丁香婷婷俺| 婷婷美女精品视频| 丁香久色| 色A网| 伊人婷婷大香蕉| 婷婷日韩| 热九九九九| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 天天干天天做| 深爱激情丁香五月| 五月天婷婷在线播放| 久热久| 99热综合| 人人人va亚洲视频在线| 亚洲射激情| 久久一级片| 婷婷五月丁香激情图片 | 5月丁香六月婷婷| 五月丁香视频在线观看| 天天拍久久| AV在线免费播放| 五月激情网站| 涩五月婷婷| 色婷婷色和| 99欧美热| 狠狠色网| 97人凄人人操人人爽| 国产无人区大片| 天天综合 99久久婷婷| www,色综合| 丁香五月婷综合| 久久婷婷青青草| 疯狂做受XXXX高潮A片动画| 久草婷婷| 丁香婷婷激情四射五月| 欧美人人女女精品综合五月天| 91无码一区人妻A片蜜| 午夜69成人做爰视频| 狠狠综合| 伊人久久大香| 婷婷伊人视婷婷婷| 国产精品大香蕉| 武则天精品久久| 丁香五月自拍| 天天干天天日日| aaa日韩| 五月丁香天堂网| 五月狠狠| www.久久| 五月婷婷九九久久| 天天色天天搡| 激情五月综亚网| 九九精品视频在线6| 天天操天天曰| 日日夜夜干| 日韩在线观看网址| 九热久| 久热无码| 成人五月丁香花| 日本情色一区二区| www超碰| 人妻videos人妻高清| 人人人人人人人草| 久热九九| 丁香色情五月综合激情| 久操福利| 五月丁香婷婷中文网| 性爱视频久久| 欧美性生交XXXXX无码小说| 久久se 综合网| www色婷婷com| 五月色欧洲| 婷婷五月天激情开心网| 伊人五月天久久| 91jiuseshunv| 亚洲午夜成人av电影网| 噜噜狠狠| 激情五月,激情综合网| 五月婷婷熟女| 丁香五月天久久| 国产女生爱爱AA| 任我肏| 成人va在线播放| 国产成人精品一区二三区熟女在线| 日韩中文字幕| 2017狠狠干| 99热首页在线30| 天天色天天日| 色色网站日本91| www.色情五月天.com| 秋霞免费三级片| 久草热视频在线观看| 日日天天干| 色约约视频一区二区三区四区五区| 秋霞AV美国| 这里只精品| 99热免费| 久久婷婷东京热大香樵| 丁香五月开心五月激情| 大香网伊人久久综合| 五月丁香婷婷啪啪网| site:esunnet.com| 夜夜躁爽日日| 天天肏夜夜肏| 毛片新网地| www.久操| 国产裸舞表演WWWW| 羞羞嫩草视频| 激情五月,深深爱五月| 97超碰综合| 色婷婷AⅤ| 激情综合色| 婷婷天天色| 黄桃AV无码免费一区二区三区| 色五月婷婷大香蕉| 天天色综合网1| 大战熟女丰满人妻AV| 久久婷婷色情7777网站| 久久色9| 日本人妻操| 久热这里只有精品66| 激情综合五月天| 色五月婷婷中文字幕在线观看| 亚洲网站999| 中文字幕婷婷在线| 久人操| 一区二区三区XXXXXX| 中文不卡一二区| 亚洲乱码日产精品BD| 日韩五月天婷婷| 99在线精品免费视频| 丁香亭亭久久| 国产又爽又猛又粗的视频A片| 综合激情啪啪| 亚洲爆乳无码精品AAA片蜜桃| 狠狠操综合| 亚洲在线综合| 99九色视频在线观看| AV大香蕉| 欧美情色一区| 天天爱天天做天天操| 超碰AV成人| 99人妻碰碰碰久久久久视| 丁香激情五月| 一级性爱视频| 色五月婷婷开心| 国产69久久久欧美黑人A片| 色五月aV| 任你干线上免费视频有3吗| 五月天激情视频网站| 91人久| 免费观看的AV| 大香AV| 九九色色网| 啪啪色激情五月天| 成熟妇人A片免费看网站| 激情五月婷婷综合视频| 91久久18| 亚洲热久久| 五月丁香色婷婷伊人| 五月激情综合网| 五月丁香六月婷婷在线观看| 黄色三级毛片中字| av在线免费网站 | 五月天激情AAAA| 秋霞少妇AV网站| 99热99美国在线观看| 色五月综合网| www。五月,com| 久热只有精品| 狠狠操天天操综合| 九九久久五月天| 中文字幕丰满孑伦无码专区| 99热8| 69精品人人人人| 99九九精品视频推荐| 超碰资源在线| 亚洲婷婷五月天激情综合| 日韩激情网站| 天天色综网| 操操天堂| www.99视频| 狠狠色婷婷在线| 婷婷五月综合免费在线| 涩综合婷婷| 狠狠色综合精品视频在线| www超碰| 精品热九九| 91婷婷色| 伊人大香久久| 日本eVa一区=区视频| 五月婷婷激情日本| 79色色色色| 婷婷五月天色色| 六月婷婷AV| 538在线精品| 91狠狠色色丁香婷婷综合久久| 99在线免费视| 操比激情五月综合| 超碰在线网站| 国产精品男人AV不卡| 婷婷丁香五月激情| 日韩久热| 九九热黄色| 五月天播播| 99 这里只有精品| 日韩成人av在线| 六月丁香AV| 色五月激情五月| 99欧美| 天堂五月婷婷| 丁香婷婷六月| 这里只有精品视频| 99热97| 婷婷五月天成人网站| 五月丁香婷婷久久| 五月丁香黄色| WWW.99热| 九九热视频在线观看| 99热成人在线观看| 婷婷爱五月天人人爱| 99色1| 天天日日天天| WWW.桔色成人.COM入口| va中文资源在线观看| 亚洲激情无码久久| 婷婷五月情色| 婷婷六月天精品| 婷婷色播色五月五色五月天色妇| 婷婷导航| 婷婷丁香六月影视| 亚洲麻豆乱码国产2028| 色综合色综合网| 色性日本| 久re热视频| 能看的AV| 国产67194| 综合色色网| 91精品国产91久久久久青草| 色吧五月婷婷| 欧美性生交XXXXX无码小说| 五月天婷婷小说| 99re在线观看| 日操夜撸| 色综合天天综合成人网| 91干| 少妇熟女视频一区二区三区| 色婷婷色和| 天天操五月天| 99热日本| 婷婷激情蜜桃玖玖丁香| 99视频这里有精品| 色五月婷婷色| 欧美性生交XXXXX无码小说| 国精产品一区一区三区免费视频 | 五月丁香趴趴| 国产99久久久| 丁香六月天堂| 综合啪啪| 久久综合五月天激情小说网站 | 综合五月草| 久久这有这里精品| 国产精品色婷婷AV综合色色| 丁香六月婷婷| 51精品国自产在线| 丁香伊人五月色婷婷五十路| 色五月婷婷影院| 婷婷在线播放av| 97色伦另类图片小说视频| 婷婷丁香五月综合激情小说| 九九这里有精品| 国产成人综合亚洲| 99热这里只有精品1025| 人妻操操色| 婷婷五月天激情综合| 色五月首页| 色综合色综合色综合| 亚洲欧洲国产精品| 夜夜干 夜夜操| 天天爽天天日| 97婷婷五月激情六月丁香伊人| 超碰免费人人| 人人摸人人干| 青青草视频免费观看| 五月丁香婷婷啪啪网| 激情五月天色| 丁香五月天黄色片| 激情五月瑟瑟| va婷婷在线| 五月丁香综合在线| 99惹 精品在线| 丁香五月亚洲激情婷婷射| 91操操操| 色婷婷丁香五月| 色五月婷婷自拍| 天天综合图片| 狠狠草狠狠草| 国产熟女大叫受不了| 丁香五月色五月婷婷宗合| 色99在线视频| WWW久| 色五月丁香激情| 色色色色色色色色网站| 亚洲综合另类| 看久久性爱视频| 大地资源色婷婷视频在线| 99re6热在线精品视频播放速度| 婷婷综合色五月天| 丁香六月婷婷色XXXX| AV九九| 色婷婷免费观看| 欧美在线视频9| 天天干肏夜夜| 人妻丰满精品一区二区A片| www.日本久久videos| 99丁香五月婷| 99碰视频| 综合网啪| 丝袜人妻| 久久伊人五月天| www.99热这里精品| 婷婷五月激情中文字幕| 久久新地此| 色色色99| 久re热视频| 99国产视频网| 六月丁香停| 亚洲综合激情五月久久| 日韩有码久久| 丁香五月激情五月| 色噜噜狠狠色综合成人网| 思思热视频在线| yjzz亚洲国产| 深爱激情网综合| 丁香五月天亚洲综合| 5月婷婷激情6月| 亚洲情综合五月天| 激情婷婷五月天伊人在线观看| 天天插天天插| 激情九九综合网| 天堂呦 呦百度搜索-百度搜索| 性天天中文网| 丁香五月婷婷亚洲另类| 日本啪啪网| 五月色丁香| 五月天激情国产综合婷婷婷| 天天噜天天爱| 色色9 9| 99爱视频免费| 美日韩成人| 六月激情综合| 天天艹夜夜爽| 色婷婷久久视屏| 99热免费精品| 人妻性爱av网站| 色色色综合网| 色五月婷婷丁香五月| 日本三级网址| 狠狠操天天干| 停停五月天激情网| 婷婷六月视频| 99精品网| 五月丁香六月婷婷的女人| 九九色之九九色88| 中文字幕日产A片在线看| 丁香伊人综合| AAA久久久AAA久久久AAA| 26uuu精品国产| 天天粽合合合合| 99精品丰满| 大香蕉手机视频| 国产又黄又爽又激情不遮挡视频在线观看| 91精品刘玥| 欧美综合五月丁香六月婷| 无码G高清天| 五月婷婷色色网址| 五月丁香在线| 天天狠狠色| VA色婷婷| 97在线日韩| 五月婷色色| 99色免费视频| 久久综合婷婷| 东京热人妻一区二区三区在线| 激情五月天综合网| 欧洲综合色| 国产精品日日躁夜夜躁| 精品久久久久成人码免费动漫| 激情久久丁香| 欧美综合婷婷网| 日韩高清久久| 熟女人妻视频| 思思热视频在线| 色婷婷亚洲六月婷婷中文字幕| 五月丁香美女视频| 激情丁香九九五月综合网| 日韩久久成人| 日日干天天| 婷婷五月丁香六月| 成人超碰Av| 99热在线里有精品| 成人av在线网站| 99热 在线播放| 中字幕视频在线永久在线观看免费 | 99热啪啪| 丁香五月在线播放| 综合网五月天123| 成人片久久网站| 97操碰视频| 国产综合A片| av大片在线| 婷婷网五月天| 日韩在线99| 国产VA亚洲VA96| 97色伦另类图片小说视频 | 国产黄色大片| 色无婷婷| 国产精产国品一二三在观看| 人人操AV| 这里只有精品1| 99热思思| 欧美va在线观看| 激情五月丁香亭亭| 六月婷婷在线| 日本va欧美va欧美va| 久久深爱激情网| 六月香五月婷| 色 丁香婷婷| 婷婷五月天日逼| 激情开心五月婷婷| 丁香六月av| 五月婷婷与六月丁香图片激情| 99热综合| 五月丁欧美| 操97| 午夜 外网 精品 在线| 五月激情丁香久久综合网| 色玖玖| 激情无码五月天| wWw色五月| 天天肏屄夜夜爽| 久久五月视频| 午夜无码精品色综合久久| 婷婷一本和五月丁香| 久色视频首页| 九九精品视频在线观看| 亚州色色色| 五月婷婷啪啪网| 无码中文一区二区三区| 天天干天天操天天上| 色五月天激情| 色婷婷视频在线| 久久久久久人妻| 五月丁香中文字幕| aa久久| 亚洲综合色色色| 人妻丰满精品一区二区A片| 97色 五月天丁香| 卡视频1区2区| 婷婷丁香97| 激情婷婷五月天网址| 26uuu91| 五月天婷婷激情综合| 九色视频91| 五月天激情婷婷| 大香伊人久色| 97视频.干com| 亚洲婷婷丁香五月天激情小说| 九九草热在线观看| 五月丁香六月婷婷久久| 人人播| 久久色六月| 色色影院黄大片| 五月婷婷激情综合在线| 天天插天天| 色综合色| 五月婷婷和六月| 欧美性色五月天| 99热官网| ..真实国产乱子伦对白在线_欧| 亚洲成人av在线观看| 大香蕉五月婷婷| 色五月婷婷婷婷| 色婷婷五月天成人网| 色色99| 四季AV综合网| 久婷婷五月激情| 操逼电影免费看| 91人人操人人| 亚州AV超碰人人操| 99性色| 五月婷婷,六月婷婷| 欧美内射AA| 日本色色视频| 天天色综网| 激情五月天丁香| 79精品视频| 亚洲精品久久久无码| 婷婷五月天黄色网址| 另类婷婷丁香| 婷婷久久五月天| 99视频极品在线香蕉| 99丁香五月婷| 99热这里全是精品| 99视频91| 色婷婷九月综合| 天天爱天天操| 五月天堂色| 激情五月,激情综合网| 国产精产国品一二三在观看| 99久在线观看| 五月丁香六月婷婷综合网站| 操B视频在线播放| 99综合视频在线| 波多野结衣AV无码Porn| 99久久婷婷五月| 激情伍月 欧美| 激情文学久久| 九热精品| 天堂久久婷婷| 六月激情网| 五月花综合视频| 五月天色小说| 婷婷射图五月天| 人妻熟女一区二区AV| 99色综合网| 丁香婷婷深情五月亚洲| 久久精品99久久| 五月婷婷第四色| 大香蕉伊然在亚洲90| 这里只有精品在线播放| av九九| se色99| 天天爽人人综合免费7799| 久久五月激情| 99色视频| 久久视网36| 91九色首页| 丁香五月欧美成人| 99热这里只有精品22| 超碰在线精品| 婷婷永久在线| 日韩成人免费电影| 可以免费观看的AV| 综合五月天亚洲婷婷| 开心五月网 | 国产在线中文字幕| 依人大香蕉在钱1| 91大神操美女| 欧美婷婷精品激情| 97AV在线视频| 在线视频激情网站| 久久久久9999| 人人操人人看97干| 五月天伊人| 强壮公让我夜夜高潮A片视频| 97中文在线| 六月丁香久久| 亚州精品色情无码A片| 99这里| 久热视频A.| 天天干天天爽| 色婷婷a三区麻| 久久99草五月婷婷| 五月丁香亚洲综合| 国产欧美大香蕉一区| 深爱五月激情| 97人人看| 白人荫道BBWBBB大荫道| 色综合综合色| 9有码中文| 99精品在线观看视频| 9l视频自拍9l九色成人| 狠狠CAO日日穞夜夜穞AV | 狠狠草狠狠草| 欧美精品99久久久| 最近中文字幕2019视频1| 婷婷激情丁五月| 精品一区二区三区三区| 日韩操人| 久久永久视频| 色婷婷丁香五月天在线视频| 好叼操在线观看| 丁香五月天成人网站| 婷婷丁香人妻天久久| 夫妇交换刺激做爰| 97超碰在线免费观看| 天天射天天干天插色综合| 99热在线播放| 99热日韩| 大香蕉婷婷色| 国产精品久久久久久久久久免费| 深爱五月网| 先锋五月婷婷丁香草草| 国产乱人偷精品人妻A片| 五月丁香啪啪综合| 激情婷婷丁香五月天小说| 久热视频97AV在线观看| AV在线中文| 婷婷五月天深爱| 91日韩美女被插视频| 丁香五月婷久久| 米奇影视资源婷婷狠狠色激情欧美五月丁香| 任我肏视频精品| www.zbzhongsen.com| 久久综合天天综合| 91人人爽狠狠狠| 激情涩播| 激情AV| 亚洲天堂aaaa| 婷婷狠狠五月综合| 91九色在线| 亚洲成人av在线观看 | 国产26uuu视频| 天堂色色色| 欧美性猛交99久久久久99按摩| 美女被肏网站在线看| 99∨VTV| 久久激情五月婷婷| 五月天色婷婷伊人网| 99免费成人网| yiqicaoav| 1000部毛片A片免费观看| 超碰人人99| 人妻精品久久久久久| 色噜噜狠狠色综合无码久久欧美| 久久人妻熟女一区二区| 激情五月综合网最新| 天天日夜夜帕| 亚洲AAAA网| www.日韩国产| 色五月中文字幕| 99燥99日| 中文字幕无码人妻少妇免费视频| 免费亚洲婷婷中文字幕| 免费国产VA国产免费| 九色综合五月天婷五月| 粉嫩AV久久一区二区三区| 五月天另类小说| 久9久成人精品视频| 久久婷婷五月草视频| 色色色在线播放| 99久久婷婷国产综合| 九色视频91疯狂| 碰碰人人漕| 最新日韩AV中文字幕| 人妻体体内射精一区二区| 六月婷婷综合| 日日夜夜狠狠| 激情综合亚洲| 五月天天综合| www.9797国产| 77777亚洲午夜久久| 一区操| 久久激情四射| 影音先锋秋秋五月婷婷| 天堂伊人干| 六月激情婷婷| 亚州色色色| 色婷婷色99国产综合精品| 99精品久久久久| 婷婷五月天社区| 青青草原福利在线| 这里只有精彩亚洲视频推荐| 五月丁香六月激情综合在线| 一本久久亚洲五月婷婷| 亚洲激情电影五月天色婷婷丁香一起草| 99综合久久| 伊人婷婷五月天| 97碰在线| 婷婷丁香视频在线观看免费| 包操45分钟网站| 丁香婷婷偷拍| 五月天激情国产综合AV| 婷婷五月久久| 丁香五月天视频| 8区视频在线| 五月丁香婷婷六月| 99九九精品| 亚洲精品又粗又大又爽A片| Www.se.久久| 99热精品超碰| 五月天丁香综合| a色色色色色| 婷婷色天香| 五月婷婷色吧!| 丁香激激情网| 51国精产品自偷自偷综合 | 国产成人精品亚洲线观看| 人人看人人草人人摸| 色久免费| 青青草tp| 成人做爰A片免费看视频| 久777| 色五月婷婷自拍| 婷婷五月丁香av网站| 国产精品久久7777777精品无码| 天天综合中文| 亚洲综合99| 国产高潮A片羞羞视频涩涩| www.金莲av| www,com,五月色色| 五月丁香猫咪久久婷婷综合视频激情四射网入口| 色五月婷婷狠狠撸| 狠狠五月天激情| 色欲婷婷五月天丁香| 欧美99热| 久久久亚洲成人无码A片| 亚洲色图五月丁香| 激情五月激情综合网一级丸片| 五月婷婷九月婷婷九月婷婷| 欧美日本黄色| 99热精品在线| 激情久久网 | 丁香五月在线观看| 五月激情综合网| 欧美啪啪五月天| 五月在线婷色| 亚洲成人无码网站| 做爰丰满少妇1313| 久热成人| 这里只有精品视频在线看| 婷婷五月天激情小说| aV直接看| 婷婷五月天av| 欧美狠狠色| 色婷婷丁香五月天在线视频| 狠狠草狠狠草| 麻豆AV一区二区三区| 五月99久久| 婷婷激情五月天亚洲综合| 丁香六月婷婷色XXXXX| 黄色aa观看aaguochan| 草草操操| 99热.com| 欧美经典片免费观看大全| 亚洲中文字幕AV| 亚洲亚洲永久无码777777| 久久国产一区二区三区| 九色91视频| 婷婷十月激情综合网| 极品人妻VIDEOSSS人妻| 丁香婷婷综合影院| 熟女五月天久久综合| 丁香五月婷婷基地| 色99视| 人人做人人看人人摸| 五月婷婷色播| 任你爽精品免费视频6| 99精品热| 黄色AAAA韩国guochansanji| 99re26视频| 综合五月婷婷| 九色视频91疯狂| 五月婷婷综合视频| 日韩啪图| 五月婷婷丁香俺日污视频| 青柠影视免费高清电视剧| 91超碰人人操| 久艹大香蕉| 婷婷五月天AV在线| 丁香五月亚洲| 免费99色| 五月色丁香视频精品| 色五月色开心开心五月| 亚洲色情一区二区三区四区| 狠狠狠狠狠干| 日韩色色网| 色婷婷久久| 五月婷婷婷丁香播| 91免费试看| 99热在线观看亚洲区| 四川女人毛多水多A片| 玖操97| 久久小说网| 五月天激情婷婷丁香| 国产精品久久久爽爽爽麻豆色哟哟| 2014天天爽| 婷婷天堂站| 色五月丁香激情| AA片在线观看视频在线播放| 五月婷婷深爱六月| 国产暴力强伦轩1区二区小说| 这里只有精品99www| 久久精品国产AV一区二区三区 | 日韩操人| 久热9| 天天做综合| 国产精产国品一二三在观看| 天天成人综合| 伊人久久大香线蕉精品| 色爱终和网| 超碰97久久| 玖玖色综合网| 婷婷天天插天天爱| 99热 精品在线| www,五月丁,com| 婷婷五月丁香99| 亚洲午夜电影| 综合激情五月丁香| 亚洲成人AV电影在线| 深爱1激情网| 欧美啪啪五月天| 日本精品99网站| 伊人六月丁香婷婷| 北条麻妃伊人 | 五月丁了香蕉综合| 国产日产亚系列精品版优势| 国产色五月婷婷| www.99免费视频| 六月丁香五月婷婷| 夜夜爽日日躁| 操人久久| 婷婷综合在线| 99日韩网站| 婷婷大乡焦噜噜| 国产乱人偷精品人妻A片| 色丁香五月综合网| 日本色婷婷| 91无码色色| www.婷婷五月天| 狠狠色丁香五月婷巨| www。五月,com| 成人版视频在线观看| 婷婷 亚洲图片 丁香| 五月婷婷狠狠久久| 99热这里只有精品4| 婷婷五月丁香久久| 五月丁香亚洲校园欧美| 香蕉人妻AV久久久久天天| 综合性爱网| www.狠狠操.com| www.久久9| 激情av| 人人草人人舔| 再次出发二| 日本高清久| ..真实国产乱子伦毛片| 婷婷精品综合| 五月婷婷影院| 中文字幕在线不卡| 婷婷五月天论坛| 婷婷色女| WWW·色色色·COM| 亚洲妇女熟BBW| 亚洲人妻电影| www.深爱激情| 五月六月丁香激情视频| 玖玖激情五月天| 岛囯综合激情网| 99碰超| 丁香五月天啪啪a日本| 五月婷婷在线短视频| 五月停停色| 日本V在线观看不卡视频网站| 五月婷婷天| 激情五月天综合婷婷网| 色婷婷欧美在线| 亚洲色图日韩网址| 超碰日韩成人| 天天爱天天做天天操| 丁香五月天激情综合| 99综合一区| 色五月婷婷丁香国产在线| 91啪啪视频| 色情五月天丁香社区| 免费91久久精品| 青草青草视频2免费观看| 国产成人网站在线观看| 精品成人a v无码内射| 日本va网站| 91操色| caop在线视频| 日韩日比视频| 亚洲视频码| 国内久久婷婷| 影音先锋91在线资源站| 欧美成人AAA片一区国产精品| 久久五月激情| 精品久久这里热66| 九九热在线视频观看| 亚洲激情综合五月婷婷啪啪| 五月婷婷五月丁香综合| 色色婷| 中文网AV| 五月婷婷色播| 色婷婷久久久| 青青草tp| 婷婷激情小说网| 成人综合AV| 久久免费操| 大香蕉五月天婷婷| 五月丁香成人| www.日本久久videos| 激情综合无码| 日本一级特黄大片AAAAA级| 色色色色色五月| 久久久久8888| 色婷小说| 五月色情婷婷| 99热99操| 伊人碰碰婷婷| 色七七九九| 久久草中文日韩欧美| 亚洲激情综合网| 亚洲天堂99| 亚洲 精品 综合 精品| 日本一级一级一级一级| 色优久久| 欧美大片| 337久久| 97碰碰在线观看视频| 黄色五月婷| 无码人妻电影| 丁香五月婷婷六月婷| 色婷婷激情视频| 天天插天天插天天插天天插| 亚洲欧洲另类| 噼里啪啦完整版中文在线观看 | 日本在线播放97| 丁香五月婷婷香| www.射伊蕉婷婷| 97干在线免费| 婷婷欧美激情| 另类激情五月天。| 亚洲综合网激情小说| 亚洲行行色色| 九九热在线视频观看| 九九综合色| 丁香五月先锋| 色情综合网| 伊人免费视频9| 美腿丝袜AV天堂网| AV在线大香蕉| 26uuu四色| 激情五月天激情五月天| 丁香五月天婷婷中文字幕| 欧美日韩成人免费在线| 中国女人做爰A片| 超碰在线资源| 影音先锋一区| 五月天婷婷在线观看精品男人| 综合网视频| 五月天色色网站| se色婷婷视频| 激情四射五月天| 激情婷婷狠狠干| 婷婷丁香成人| 久9热| 五月激情婷婷四射| 丁香五月婷婷久久久| 99国产小视频| www.五月.com| 91.www综合| 九九色99| 中文字幕+乱码+中文字幕在线观看| 九九热这里只有精品9| 日本丁香五月| 久久香蕉影院| 99热在线观看这里只有精品| 丁香婷婷色色| 国产无套精品一区二区| 五月丁香婷婷基地| 九九热这里只有精品31| 天天日夜夜| 99热精品超碰| 五月丁香亭亭成人电影| 色婷婷19| 伊人九九68| 天天情天天狠天天透| 色五月婷婷在线| 人妻体体内射精一区二区| 五月丁香六月香香蕉| 五月综合婷婷久久在线| 丁香五月天社区| 欧美日本黄色| 99热这里只有免费| 久久婷婷视频| 久久五月天激情婷婷| 激情亚洲色图片丁香综合| 九九精品免费| 婷婷玖玖五月天| 最新丁香六月婷婷| 婷婷色色综合| 全亚洲最大的婷婷五月天网站COM| 丁香五月婷婷激情中文| www.色综合| 婷婷91| 中文字幕不卡+婷婷五月| 婷婷五月精品| 亚洲性色XXXXX| 少妇性按摩无码中文A片 | 久久六月综合| 免费日本aⅴ中文字幕 | 玖玖色综合色| 丁香五月在线伊人| 夜夜干夜夜操| 色九月婷婷丁香| 99er热精品视频| 99精品久久久久久久久| 激情综合色五月六月婷婷| AAA久久| 色丁香五月婷婷| 99ri视频在线播放| 久婷婷五月天影院| 操人妻视频91| 爱iii做iiii日| 色婷婷五月天天天干天天操天天爽| 五月丁久久| 国产婷婷五月中文字幕高清| 色婷婷五月天|