自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 Make Correct Code Look Correct

这是以前从一本书上看到的一篇文章,在网上也找到了英文原版http://www.joelonsoftware.com/articles/Wrong.html这里仅仅想用一个简单的例子把原文思想再复述一下,再掐个头去个尾,添点油加点醋。匈牙利命名法貌似匈牙利命名法挺有争议的,说实话,我也没怎么感受到它的好处。像C语言,编译器会帮我们检查类型,又何必再在名字上画蛇添足呢;名字前缀上类

2013-01-04 20:09:59 602

原创 变长参数入参VS数组入参

gzip写烦了,先写个小题目。当函数的参数个数可变时,我们可以采用变长参数入参或者数组入参(重载不在此讨论之列)。通常还都会有一个参数来标明实际的参数个数:Func_va(int num, ...)Func_array(int num, type array[])那么这两者有什么区别呢?区别一:类型检查可变参数:不需要定义类型,编译器也不会做检查。甚至可变参数之间忘加逗

2013-01-01 13:49:18 1715

原创 Gzip源代码分析(四)

哈弗曼编码首先说明一下涉及到的数据结构:typedef struct ct_data { union { ush freq; /* frequency count */ ush code; /* bit string */ } fc; union { ush dad; /

2012-12-31 11:05:15 1872

原创 GZIP源代码分析(三)

接上回经LZ77算法处理后,原始数据被归为两类数据对象:literal,即没有被匹配上的字节,以及(length, distance)二元组。Gzip按照扫描产生的先后顺序把它们有序保存在两个缓冲数组中l_buf和d_buf,其中l_buf保存literal和length,d_buf保存distance。由于literal和length混杂保存在同一个数组中,因此还需要一个叫做flag_b

2012-12-30 15:14:46 1582

原创 Gzip源代码分析(二)

LZ77算法的实现LZ77算法其实就是一个字符串匹配的算法。就是要顺序扫描待压缩文件的每一字节,查找当前这一字节开头的串(以下称“当前串”,当前串起始地址确定,但长度不确定)是否在已扫描过的文本中出现过,以及出现的位置。为了快速查找当前串的匹配串,需要一张哈希表来记录之前出现的字符串的位置。但是这张哈希表可能非常之庞大。因为,单是从某一字节开始的串就有长度从1,2,3,……的一系列串, 要

2012-12-25 21:45:25 2055

原创 GZIP源代码分析(一)

Gzip是Linux下的压缩软件,.gz后缀的文件就是经gzip压缩后的文件。Gzip的源码当然由压缩和解压缩两部分构成,但本文只打算介绍其压缩部分,这部分的代码风格良好,且注释充分,并能很好的体现所用到的算法,而解压的代码完全是没有注释的一坨,其解压思路我们大致可以根据压缩过程反向推理出来,所以就不管它了。目录一、算法介绍二、实现介绍……一、Gzip中涉及的压

2012-12-09 19:17:18 4041

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除