加载中...
avatar
文章
566
标签
61
分类
66
首页
页面
  • 归档
  • 标签
  • 分类
  • 图库
  • 说说
  • 示例
清单
  • 音乐
  • 电影
  • 书籍
  • 游戏
  • 歌曲
留言板
关于
Logowdfk-prog的个人博客hpatch学习笔记系列 返回首页
搜索
首页
页面
  • 归档
  • 标签
  • 分类
  • 图库
  • 说说
  • 示例
清单
  • 音乐
  • 电影
  • 书籍
  • 游戏
  • 歌曲
留言板
关于

hpatch学习笔记系列

发表于2026-07-31|更新于2026-07-31|hpatch
|总字数:87|阅读时长:1分钟|浏览量:|评论数:

hpatch学习笔记系列

    1. libdivsufsort
    • 1.1. DivSufSort (个人博客链接)
    • 1.2. sssort (个人博客链接)
    • 1.3. trsort (个人博客链接)
    1. SA-IS
    • 2.1. SA-IS (个人博客链接)
  • 3. hdiffpatch (个人博客链接)
  • 4. HPatch (个人博客链接)
  • 5. hpatch_lite (个人博客链接)
  • 6. SuffixString (个人博客链接)
  • 7. tinyuz (个人博客链接)
文章作者: Liya Huang
文章链接: https://wdfk-prog.space/posts/b75715e9/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
hpatch
赞助
  • 微信
    微信
  • 支付寶
    支付寶
cover of previous post
上一篇
uboot学习笔记系列
uboot学习笔记系列 other 1.1. [U-BOOT][STM32]SD卡导入导出环境变量 (个人博客链接) (CSDN链接) 1.2. [U-BOOT][STM32]设置使用SD卡中的linux程序启动 (个人博客链接) (CSDN链接) 1.3. [U-BOOT][STM32F40xx]移植与编写 (个人博客链接) (CSDN链接) 1.4. [UBOOT][STM32]编写LED支持教程 (个人博客链接) (CSDN链接) 1.5. [uboot][stm32]配置LTDC屏幕 (个人博客链接) (CSDN链接) 1.6. objdump反汇编失败的解决办法 (个人博客链接) (CSDN链接) 1.7. U-BOOT CLANGD使用 + 避坑注意事项 (个人博客链接) (CSDN链接) 1.8. U-BOOT 配置按钮功能及使用教程 (个人博客链接) (CSDN链接) 1.9. ubantu st-link 调试 (个人博客链接) (CSDN链接) 1.10. UBOOT 早期串口调试功能CONFIG_DEBUG_UART适配教程 (个人博客链接) (CSD...
cover of next post
下一篇
git学习笔记系列
git学习笔记系列 1. GitHub 开源项目可以用哪些免费的 AI 代码审核工具?CodeRabbit、Qodo OSS、LlamaPReview 怎么选 (个人博客链接) (CSDN链接) 2. GitHub侦探技巧:如何精确查找特定邮箱地址的所有代码提交(Commit) (个人博客链接) (CSDN链接) 3. Git向本地非裸仓库推送的机制与错误处理 (个人博客链接) (CSDN链接) 4. Git子模块(Submodule)合并冲突的原理与解决方案 (个人博客链接) (CSDN链接) 5. Git实战指南:如何从另一个分支同步文件时完整保留Commit提交历史 (个人博客链接) (CSDN链接) 6. Git文件状态显示异常的解决方案 (个人博客链接) (CSDN链接) 7. 修复 Git 仓库损坏全记录 (个人博客链接) 8. 修复 Git 仓库损坏全记录 (个人博客链接) 9. 如何将Git仓库中的特定文件夹及其历史完整迁移到另一个仓库 (个人博客链接) 10. 将 Git 仓库所有文件移入子目录的正确姿势 (个人博客链接) 11. 解决 git cherry-p...
相关推荐
cover
2025-10-04
tinyuz
[TOC] tinyuz\compress\tuz_enc.cpptuz_compress Tuz 数据压缩核心实现 负责执行 Tuz 无损压缩算法,将输入数据流 (data) 压缩后写入输出数据流 (out_code)。该实现同时支持高效的单线程和多线程压缩模式。 原理与设计思路解析tuz_compress 函数是 Tuz 压缩器的核心,它负责编排整个压缩流程。其设计思想围绕着分块处理 (Clipping) 和并行计算,以在处理大规模数据时兼顾内存效率和执行速度。 核心压缩策略 写入文件头 (Header First): 压缩开始时,首先会向输出流写入一个头部。这个头部包含了后续解压所必需的元数据,最主要的是字典大小 (Dictionary Size)。 数据分块 (Clipping): 为了有效管理内存并为并行化创造条件,输入数据不会被一次性加载。相反,它会被切分成连续的、大小适中的数据块,称为 “clip”。每个 clip 的大小会根据字典大小进行策略性计算,以平衡压缩率和处理开销。 分块压缩: 真正的压缩逻辑由 compress_clip 函数(在本代码片段...
cover
2025-10-04
HPatch
[TOC] HDiffPatch\libHDiffPatch\HPatch\patch.cpackUInt & hpatch_packUIntWithTag 可变长度整数编码这组函数实现了一种高效的、类似于 LEB128 (Little-Endian Base 128) 或 VLQ (Variable-length quantity) 的整数编码方案。其核心目标是:用更少的字节来表示小数值,用更多的字节来表示大数值,从而在数据流中实现对数值本身的压缩。 原理与设计思路解析您提供的注释已经非常精彩地概括了其编码方案,我将在此基础上做更详细的解析。 编码规则 (Encoding Scheme):算法将一个整数 uValue 拆分成多个字节进行存储。每个字节都由两部分组成: 数据位 (Data Bits): 每个字节的低7位用于存储 uValue 的一部分数据。 连续标志位 (Continuation Bit): 每个字节的最高位 (MSB) 作为标志位。 如果 MSB 是 1,表示后面还有字节属于这个整数。 如果 MSB 是 0,表示这是这个整数的最后一个字节。 ...
cover
2025-10-04
SA-IS
[TOC] saisxx (顶层API)saisxx 是整个 sais.hxx 库提供给外部使用的公共接口函数。它本身不执行任何复杂的算法逻辑,其主要作用是作为一层封装,进行参数的合法性检查,处理一些简单的边界情况,并调用内部的核心实现 saisxx_private::suffixsort。 原理与设计思路解析 API 设计: 函数签名 template<typename string_type, typename sarray_type, typename index_type> 表明它是一个高度通用的模板函数。它可以接受任何满足随机访问迭代器 (Random Access Iterator) 条件的类型作为输入字符串 T 和输出数组 SA。例如,T 可以是 const char*、std::string 或 std::vector<unsigned char>;SA 可以是 int* 或 std::vector<long>。 k = 256 的默认参数,表明它默认处理的是8位字符(如ASCII, UTF-8字节流)的字符串。 参...
cover
2025-10-03
SuffixString
[TOC] HDiffPatch\libHDiffPatch\HDiff\private_diff\suffix_string.cpp后缀数组后缀 (Suffix):一个字符串的后缀是指从字符串的某个位置开始到字符串末尾的所有字符组成的子串。例如,对于字符串 banana,它的所有后缀是: banana (从位置0开始) anana (从位置1开始) nana (从位置2开始) ana (从位置3开始) na (从位置4开始) a (从位置5开始) 后缀数组 (Suffix Array):后缀数组不是存储这些后缀字符串本身,而是存储这些后缀的起始位置索引。最关键的一步是,这些索引是按照它们所代表的后缀字符串的**字典序(字母顺序)**进行排序的。 我们来为 banana 构建一个后缀数组: 列出所有后缀及其起始位置: 起始位置 后缀 0 banana 1 anana 2 nana 3 ana 4 na 5 a 按字典序对后缀进行排序: a ana anana banana na nana 构建后...
cover
2025-10-03
hpatch_lite
[TOC] 学习笔记HPatchLite\HDiffPatch\libHDiffPatch\HPatchLite\hpatch_lite.cHptach 算法1. Hptach 的核心:加法差分 (Additive Diff)这种方法可以被称为加法差分或增量差分。 核心公式: NewData = OldData + DiffData 反向公式: DiffData = NewData - OldData (在生成补丁时计算) 工作流程图: 1234567891011121314151617181920212223242526272829303132 +----------------------+生成补丁时 (hpatch_diff) | | | 新文件 (New File) | +----------------------+ | (减法) ...
cover
2025-10-03
hdiffpatch
[TOC] hdiffi.cpphdiffi & hdiffi_in_mem 内存模式下的补丁生成这是 HDiffPatch 工具集中负责制作补丁的核心业务逻辑。hdiffi 是一个上层封装,而 hdiffi_in_mem 实现了将整个文件加载到内存中进行差分的核心流程。 原理与设计思路解析这部分代码的 overarching goal 是协调整个补丁制作过程,它是一个高层次的控制器,调用底层的差分算法和压缩库来完成任务。 核心策略:内存模式 (In-Memory) 函数名 hdiffi_in_mem 明确指出了其核心设计:将旧文件和新文件完全读入内存中,然后再进行比较和差分。 优点: 差分算法(特别是基于后缀数组的算法)需要对数据进行大量的、非线性的随机访问。在内存中操作可以极大地提升算法的执行速度,避免了缓慢的磁盘I/O。 缺点: 这种模式的内存消耗巨大,它要求系统的可用RAM必须能同时容纳整个旧文件和新文件。因此,它不适用于超出内存容量的超大文件。 模块化与可配置性 代码通过 TDiffiSets 结构体和 compressPlugin 接口...

评论
avatar
Liya Huang
WORK-LIFE BALANCE
文章
566
标签
61
分类
66
Follow Me
公告
欢迎光临!有任何问题或想法,欢迎在文章下留言交流,或者通过 关于页面 联系我。
目录
  1. 1. hpatch学习笔记系列
最新文章
构建
构建2026-07-31
scripts
scripts2026-07-31
setlocalversion
setlocalversion2026-07-31
shell
shell2026-07-31
u-boot
u-boot2026-07-31
文档
🚀 linux📑 rt-thread📌 uboot⚔️ LoraWan❓ hpatch⚡️ git
其他
图库留言板说说示例友链
框架
HexoButterfly
贊助
wdfk_prog
© 2025 - 2026 By Liya Huang|框架 Hexo 8.0.0|主题 Butterfly 5.5.1
你好,欢迎来到我的 数字花园!
搜索
数据加载中