lz4 与 lz77 压缩算法举例

lz4算法

abcd efab cdeh

压缩过程:

以长度4为滑窗,1为步长,对abcd计算hash存入hash table,计算 bcde, cdef,defa,efab,fabc的 hash 分别加入 hash table,下一个滑窗 abcd 找到了匹配,于是扩大匹配,bcde 也有匹配,且start 位置是在abcd 之后1位,再扩大匹配,cdeh 没有匹配,所以匹配长度为5,向前偏移为6。

这时前面未出现匹配的abcedf就可以编码了,编码为0b01100000 (token) + abcdef,其中0110是未匹配字节的长度(6),如果未匹配长度为512,大于19(15 + 最小匹配长4),则token编码为0b11110000 0b11111111 0b 11101100(即 4 + 15(第一字节高4位) + 256 (第二字节)+ 237(第三字节)),前一部分编码为了token + abcdef。

后面匹配的abcde编码为0b00000110 (token) + 6(2byte),即0110(低4位表示匹配长度),后两个字节填充6。

编码的格式为
在这里插入图片描述

lz77 算法

在长度为2n窗口内,每3个字节求为一个hash值,以此来找在匹配的hash字符串链,hash表的字符串链中存的是当前窗口内字符串的位置。当滑窗中未读的部分长度小于阈值时,就把前一半丢掉,窗口向后移动一半长度。最后输出三个文件:

  • 文件1:标记:0表示原字符,从文件2读1字节;1表示从文件3读距离,与这后面的长度组成一对,从前面解压的输出中去读。
  • 文件2:原字符:(1字节)
  • 文件3:距离:(两字节)
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/57781.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可视化高级绘图技巧100篇-总论

前言 优秀的数据可视化作品可以用三个关键词概括:准确、清晰、优雅。 准确:精准地反馈数据的特征信息(既不遗漏也不冗余,不造成读者疏漏&误读细节) 清晰:获取图表特征信息的时间越短越好 优雅&…

F5洞察2023年网络威胁,助力网络安全防护

2023已经过半,关于网络安全防护的相关讨论话题热度始终居高不下。对于网络安全领域的从业者来说,应当对相关的前瞻分析有所了解。前段时间,我阅读了F5 安全运营中心工程师对威胁网络安全的预测,深受启发,故此选取了几则…

native vlan tag设置错误,导致交换机无法访问

一同事找来,说他的一个测试交换机,下挂一些测试设备,能正常访问,但交换机的ip192.168.100.128却无法telnet访问,ping过去显示无法访问目的主机,让给看一下原因? 已知组网这个交换机接在交换机的…

【云原生】K8S二进制搭建二:部署CNI网络组件

目录 一、K8S提供三大接口1.1容器运行时接口CRI1.2云原生网络接口CNI1.3云原生存储接口CSI 二、Flannel网络插件2.1K8S中Pod网络通信2.2Overlay Network2.3VXLAN2.4Flannel 三、Flannel udp 模式的工作原理3.1ETCD 之 Flannel 提供说明 四、vxlan 模式4.1Flannel vxlan 模式的工…

【DMA】如何保证 DMA 和 cache 的一致性

一方面,当 CPU 要从cache 读取数据时,会先检查cache是否命中,如果命中就直接返回,此时便不再访问内存;另一方面,DMA 在 向内存写入数据。这样一来就造成了DMA 传输的内容和cache中缓存的内容不一致。 DMA 向…

Nacos单节点部署

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

Linux mmap系统调用视角看缺页中断

问题 1. mmap具体是怎么实现比read/write少一次内存copy的 2.mmap共享映射和私有映射在内核实现的时候到底有什么区别 3.mmap的文件映射和匿名映射在内核实现的时候到底有什么区别 4.父子进程的COW具体怎么实现的 概述 实际开发过程中经常使用或者看到mmap函数&#xff0…

Visual Studio 2022的MFC框架——应用程序向导

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022开发工具下的MFC框架知识。 MFC(Microsoft Foundation Class,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C类的集合&#xf…

OPENCV C++(八)HOG的实现

hog适合做行人的识别和车辆识别 对一定区域的形状描述方法 可以表示较大的形状 把图像分成一个一个小的区域的直方图 用cell做单位做直方图 计算各个像素的梯度强度和方向 用3*3的像素组成一个cell 3*3的cell组成一个block来归一化 提高亮度不变性 常用SVM分类器一起使用…

数字图像处理 --- 相机的内参与外参(CV学习笔记)

Pinhole Camera Model(针孔相机模型) 针孔相机是一种没有镜头、只有一个小光圈的简单相机。 光线穿过光圈并在相机的另一侧呈现倒立的图像。为了建模方便,我们可以把物理成像平面(image plane)上的图像移到实际场景(3D object)和焦点(focal p…

代码分析Java中的BIO与NIO

开发环境 OS:Win10(需要开启telnet服务,或使用第三方远程工具) Java版本:8 BIO 概念 BIO(Block IO),即同步阻塞IO,特点为当客户端发起请求后,在服务端未处理完该请求之前&#xff…

UE中低延时播放RTSP监控视频解决方案

第1章 方案简介 1.1 行业痛点 在各种智慧城市、智慧社区、智慧水利、智慧矿山等数字孪生项目中,经常使用通UE来开发三维可视化场景。在这些场景中通常都需要把现场的各种监控视频在UE的可视化场景中接入,主要包含海康威视、大华、宇视、华为等众多监控…