最近工作正好接触到这一块,试着自己总结了一下,给需要的人提供一点帮助. 一.概述 首先看看百度百科里的一句话介绍:“LZW就是通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩.” 简单来说,就是尝试用短的编码代替长的编码达到压缩的目的.LZW其实是三个大牛的名字,这个算法最开始是 Ziv和Lempel这两个人在1977,1978年发明的,在1984年的时候由另一位大牛Terry Welch进行了改进,所以这个算法的名字才叫LZW.它的一个最为人所占的应用是在gif压缩里面的使用.…
    简介: 本文整理自Apple文档<Coding Guidelines for Cocoa>.这份文档原意是给Cocoa框架.插件及公共API开发者提供一些编码指导,实质上相当于Apple内部的编码规范.在多人协作时,一份统一的代码规范大大减少开发者之间的沟通成本,极力推荐.    目录: 一.代码命名基础 二.方法 三.函数 四.Property及其他 五.缩写         一.代码命名基础 1.通用原则 1.1 清晰 尽量清晰又简洁,无法两全时清晰更重要 Code Comment…
[数据压缩]LZ77算法原理及实现 [数据压缩]LZ78算法原理及实现 Lempel–Ziv–Welch 年发表的论文<A Universal Algorithm for Sequential Data Compression>中提出. 基于统计的数据压缩编码,比如Huffman编码,需要得到先验知识——信源的字符频率,然后进行压缩.但是在大多数情况下,这种先验知识是很难预先获得. 因此,设计一种更为通用的数据压缩编码显得尤为重要.LZ77数据压缩算法应运而生,其核心思想:利用数据的重复结构信…
作者:折剑头链接:https://www.zhihu.com/question/49214119/answer/115728034来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 一物理学的办法 小学生:已知冰箱的高为10米,底面为边长30米的正方形…… 初中生:大象在凸透镜2倍焦距外,在冰箱里成倒立放大实象. 高中生:把大象看成一个质点…… 成绩好的高中生:老师这道题不会做,请给我们讲解一下…… 高中老师:这道题属于怪题,考试中遇到一定要果断的舍弃. 大学生:让大…
原文链接: 开始读 Go 源码了 学完 Go 的基础知识已经有一段时间了,那么接下来应该学什么呢?有几个方向可以考虑,比如说 Web 开发,网络编程等. 在下一阶段的学习之前,写了一个开源项目|Go 开发的一款分布式唯一 ID 生成系统,如果你对这个项目感兴趣的话,可以在 GitHub 上拿到源码. 在写项目的过程中,发现一个问题.实现功能是没问题的,但不知道自己写的代码是不是符合 Go 的风格,是不是够优雅.所以我觉得相比于继续学习应用开发,不如向底层前进,打好基础,打好写 Go 代码的基础.…
1.7-ZIP简介 7-zip 是一款免费的压缩解压软件.ZIP格式的文件默认被苹果和微软支持,完全不需要额外安装其他软件就可以解压.但对于非US-ASCII编码的文件名和大于2GB的ZIP文件,可能需要借助如WinRAR和7-ZIP软件也解压.同时7-ZIP完全免费,其支持的7Z压缩格式的压缩率相对RAR压缩格式更好.7-ZIP官网是http://www.7-zip.org/. 2.在VS2015上编译7-ZIP代码的详细步骤 需要的材料: Microsoft Visual Studio 20…
文章出处:http://www.cnblogs.com/snowberg/archive/2011/10/21/2468588.html   3   What is a Suffix Tree Suffix tree, 或 后缀树 ,是一种相当神奇的数据结构,它包含了字符串中的大量信息,能够用于解决很多复杂的字符串问题 —— 事实上,基本上目前为止俺遇到过的所有与字符串有关的问题都可以通过它解决. 我们以字符串 MISSISSIPPI 为例,先列出它所有的后缀: 1. MISSISSIPPI 2…
小结: 1.ASCII编码.GBK编码不是变长编码: 2.数据压缩: 示例: aabacdab → 00100110111010 → |0|0|10|0|110|111|0|10| → aabacdab 3.变长编码: 符号-位长 映射: https://en.wikipedia.org/wiki/Variable-length_code https://baike.baidu.com/item/变长编码表 变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反…
1. 简介 Regmap 机制是在 Linux 3.1 加入进来的特性.主要目的是减少慢速 I/O 驱动上的重复逻辑,提供一种通用的接口来操作底层硬件上的寄存器.其实这就是内核做的一次重构.Regmap 除了能做到统一的 I/O 接口,还可以在驱动和硬件 IC 之间做一层缓存,从而能减少底层 I/O 的操作次数. 2. 使用对比 在了解 Regmap 的实现细节前,我们先来对比一下,传统操作寄存器的方式,与 Regmap 之间的差异. 2.1 传统方式 我们以一个 I2C 设备为例.读写一个寄存…
7z文件格式及其源码的分析(二) 一. 准备工作: 1. 源码下载: 可以从官方中文主页下载:http://sparanoid.com/lab/7z/. 为了方便, 这里直接给出下载链接: http://downloads.sourceforge.net/sevenzip/7z920.tar.bz2 . 2. 工具准备: 源码中给的工程文件都是vc6.0的工程.  作者说他不喜欢新vs的界面. 哎.  不过没关系, 我们使用VS2008也一样可以. 有极少地方需要修改一下.  我们使用VS200…