自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jison_r_wang的专栏

宁欺白头翁,莫欺少年穷。终须有日龙穿凤,唔信一世裤穿窿。

  • 博客(46)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 F-stack源码分析

腾讯f-stack源码分析

2023-09-30 13:11:41 250 1

原创 用qemu搭载Linux内核+文件系统步骤

用qemu搭载linux内核

2023-01-27 16:39:36 539

原创 ucore实验八

ucore实验八,文件系统

2023-01-27 16:27:26 521

原创 ucore实验七

ucore实验七,同步与互斥

2023-01-27 15:04:31 194

原创 ucore实验六

ucore实验六,调度器

2023-01-27 14:06:29 165

原创 ucore实验五

ucore实验五,进程

2023-01-27 10:47:53 203

原创 ucore实验四

ucore实验四,内核线程管理

2023-01-26 21:28:59 317

原创 ucore实验三

ucore实验三,虚拟内存管理

2023-01-26 15:44:04 367

原创 ucore实验二

ucore实验二,物理内存管理

2022-10-29 13:29:55 943

原创 ucore实验一

ucore lab1的笔记

2022-10-04 12:10:23 1582 2

原创 简易直播系统搭建

ffmpeg、nginx、nginx的rtmp模块、potplayer、vlc播放器、ubuntu、直播、点播、推流、拉流、流媒体服务器

2022-02-19 15:28:37 3032

原创 GZIP压缩原理分析(33)——第五章 Deflate算法详解(五24) 动态哈夫曼编码分析(13)构建哈夫曼树(05)

构建CCL树

2016-07-31 13:11:20 4540 27

原创 GZIP压缩原理分析(32)——第五章 Deflate算法详解(五23) 动态哈夫曼编码分析(12)构建哈夫曼树(04)

构建literal/length树

2016-07-31 11:11:40 4072 8

原创 GZIP压缩原理分析(31)——第五章 Deflate算法详解(五22) 动态哈夫曼编码分析(11)构建哈夫曼树(03)

构建distance树

2016-07-31 11:09:49 6566 5

原创 GZIP压缩原理分析(30)——第五章 Deflate算法详解(五21) 动态哈夫曼编码分析(10)构建哈夫曼树(02)

*范式哈夫曼编码使用静态哈夫曼编码的编码/解码双方同时拥有一张完全相同的码表,这张码表是事先规定好的,只要使用这种压缩方式并且使用这种压缩方式对应的静态哈夫曼编码,那么压缩方就照着码表压缩,解码方照着码表直接解压。就好比我们使用莫尔斯码通讯,双方在通讯之前就约定好使用莫尔斯码(什么时候约定的?可能是某次吃饭的时候,或者聊天的时候,或者一起喝酒的时候……),双方都有一张莫尔斯码表,通讯的时候,一

2016-07-31 11:08:28 3454 3

原创 GZIP压缩原理分析(29)——第五章 Deflate算法详解(五20) 动态哈夫曼编码分析(09)构建哈夫曼树(01)

现在已经完成了对字符串“As mentioned above,there are many kinds of wireless systems other than cellular.”进行压缩的第一步,LZ77算法通过用长度距离对儿替换匹配串的方式将这句话在“字节”层面上压缩,压缩结果为“Asmentioned above,there a(3,4)many kinds of wireless

2016-07-31 11:07:59 2399

原创 GZIP压缩原理分析(28)——第五章 Deflate算法详解(五19) 动态哈夫曼编码分析(08) LZ77过程(07)

哈希函数以及哈希值计算初探

2016-07-31 11:06:54 2316 2

原创 GZIP压缩原理分析(27)——第五章 Deflate算法详解(五18) 动态哈夫曼编码分析(07) LZ77过程(06)

LZ77结果

2016-07-31 11:05:58 2092

原创 GZIP压缩原理分析(26)——第五章 Deflate算法详解(五17) 动态哈夫曼编码分析(06) LZ77过程(05)

找不到匹配怎么办?

2016-07-31 11:05:38 2158 1

原创 GZIP压缩原理分析(25)——第五章 Deflate算法详解(五16) 动态哈夫曼编码分析(05) LZ77过程(04)

如何找到最长匹配?

2016-07-31 11:05:08 3989 14

原创 GZIP压缩原理分析(24)——第五章 Deflate算法详解(五15) 动态哈夫曼编码分析(04) LZ77过程(03)

如何高效查找匹配串?

2016-07-31 11:04:08 3941 2

原创 GZIP压缩原理分析(23)——第五章 Deflate算法详解(五14) 动态哈夫曼编码分析(03) LZ77过程(02)

匹配串由几个字符构成?

2016-07-31 11:03:39 2241

原创 GZIP压缩原理分析(22)——第五章 Deflate算法详解(五13) 动态哈夫曼编码分析(02) LZ77过程(01)

LZ77要解决的几个问题

2016-07-31 11:03:17 2721 1

原创 GZIP压缩原理分析(21)——第五章 Deflate算法详解(五12) 动态哈夫曼编码分析(01) 本节说明

存储、静态哈夫曼编码的原理较为简单,在分析格式的过程中就可以顺带介绍。在压缩原理中,最麻烦、最难、最绕的地方就是动态哈夫曼编码这里了,比较烧脑子。

2016-07-31 11:02:43 2390 1

原创 GZIP压缩原理分析(20)——第五章 Deflate算法详解(五11) 算法分析(05) 格式说明(04) 动态哈夫曼编码

动态哈夫曼编码(Compression with dynamic Huffman codes),这部分内容只介绍动态哈夫曼编码的格式,对格式中的各个字段做一个简单说明,详细分析见下一节。动态哈夫曼编码格式, 图中每一个“*”代表一比特,蓝色部分为经过压缩之后的数据,其他部分,除了首部块,都用于构建动态哈夫曼树。

2016-07-30 14:56:54 2481

原创 GZIP压缩原理分析(19)——第五章 Deflate算法详解(五10) 算法分析(04) 格式说明(03) 静态哈夫曼编码

静态哈夫曼编码(Compression with fixed Huffman codes),这部分内容只要看格式就好,出现在这里的码表只是为了说明,细节此时可能不懂,但是后面会铺开来讲,不用担心。静态哈夫曼编码使用一张固定的literal/length码表,码表如下,Lit Value Bits

2016-07-30 14:56:12 4477

原创 GZIP压缩原理分析(18)——第五章 Deflate算法详解(五09) 算法分析(03) 格式说明(02) 存储类型

存储类型(store)的格式如下, 0 1 2 3 4...+---+---+---+---+================================+| LEN|NLEN |... LEN bytes of literal data...|+---+---+---+---+========================

2016-07-30 14:55:09 2903 10

原创 GZIP压缩原理分析(17)——第五章 Deflate算法详解(五08) 算法分析(02) 格式说明(01) 块首部

以下内容包含我对RFC1951部分内容的翻译与总结,不足之处还请大家指出,小弟感激不尽。在压缩中,哈夫曼编码有两种方式,分别是静态哈夫曼编码(Compression with fixed Huffman codes)和动态哈夫曼编码(Compressionwith dynamic Huffman codes),前者针对不同的字符有一张固定的编码表,压缩的时候直接按照这张码表对原始字符一一

2016-07-30 14:53:57 4238 2

原创 GZIP压缩原理分析(16)——第五章 Deflate算法详解(五07) 算法分析(01) 本节概述

本节内容,是整个该系列文章的灵魂所在,后面的源码分析不过是肉体罢了。所有使用deflate算法的压缩格式,gzip、PKzip等等,也许他们互相之间的头和尾不同,但是这部分,属于瓤的这部分,是基本相同的。 压缩是分块(block)输出的,即每处理一定数量的数据就将这部分数据的压缩结果输出一次,而不是一口气将全部数据压缩并输出。这一点其实我们在上一节中从哈夫曼编码的角度提到过一次,这里还会继

2016-07-30 14:52:53 2713 2

原创 GZIP压缩原理分析(15)——第五章 Deflate算法详解(五06) 预备知识(05) 预备知识总结

这一节我们主要介绍了分析deflate算法所要用到的一些基本知识,这些基本知识非常重要,是分析deflate算法必不可少的,后面的章节已经假定各位看官掌握了这些基本知识,不再介绍这些知识的具体内容。本节内容预先提到了几个deflate算法中的哈夫曼编码会使用到的性质,这些性质非常重要,在这个地方有一个基本认识,后面分析源码的时候才能事半功倍(经验之谈)。关于性质,我做个总结,a)  2n-1与

2016-07-30 12:39:09 1760

原创 GZIP压缩原理分析(14)——第五章 Deflate算法详解(五05) 预备知识(04) 前缀码、原始哈夫曼编码原理以及deflate所用哈夫曼编码的性质

1.前缀码在一个字符集中,任何一个字符的编码都不是另一个字符编码的前缀,即前缀码。例如,有两个码字111与1111,那么这两个码字就不符合前缀码的规则,因为111是1111的前缀。放到二叉树里来讲,只用叶子节点编码的码字才是前缀码,如果同时使用中间节点和叶子节点编码,那结果就不是前缀码。因为压缩中经过编码的码字全部是前缀码,所以在对照码表解压的时候,碰到哪个码字就是哪个码字,不用担心出现某个字

2016-07-30 12:30:33 4481 3

原创 GZIP压缩原理分析(13)——第五章 Deflate算法详解(五04) 预备知识(03) 游程编码

有关游程编码的定义,在网上有很多较为专业的版本,但我觉得那些较为专业的版本就是把简单的东西搞复杂然后看起来高大上罢了,入门太麻烦。这里我们沿用本章开始提到的那篇博客中的内容:“什么叫游程呢?就是一段完全相同的数的序列。什么叫游程编码呢?说起来原理更简单,就是对一段连续相同的数,记录这个数一次,紧接着记录出现了多少个即可。”,这样说多浅显易懂。举个简单的例子,有如下数列,1,1,1,1,2,2,

2016-07-30 12:29:23 2931

原创 GZIP压缩原理分析(12)——第五章 Deflate算法详解(五03) 预备知识(02) 压缩“窗口”概念

压缩的过程使用了“窗口”这一概念。压缩时,将需要处理的数据拷贝到窗口中,然后直接在窗口中分析并处理这些数据。这个窗口就好比一张工作台,每次把要处理的东西放到这张工作台上,人们站在工作台旁边收拾这些数据,等到快收拾完的时候(还没收拾完!!!),再去库房把后面的数据取到工作台上……基本就是这样一个过程。需要注意的是,窗口的概念是贯穿压缩始终的,真的就像个工作台一样。在源码中,指针window

2016-07-30 12:28:24 2902

原创 GZIP压缩原理分析(11)——第五章 Deflate算法详解(五02) 预备知识(01) LZ77算法

词典,分为静态词典与自适应词典两种,而大多数基于自适应词典的技术都源于Jacob Ziv和Abraham Lempel在1977年和1978年发表的两篇里程碑式的论文。这两篇论文提供了两种不同的方法,用于自适应的构建词典,每种方法都衍生出多种变体。人们将基于1977年论文的方法划归LZ77系列,将基于1978年论文的方法划归LZ78系列。第二章链接中的文章对这部分内容的背景以及各种变体有更加详细的

2016-07-30 12:25:52 2986

原创 GZIP压缩原理分析(10)——第五章 Deflate算法详解(五01) 章前语

本章不对deflate算法背景做过多介绍,但是对Phil Katz的敬重是永远的!!!这里会用整整一个章节的内容来详细分析第三章中简略提到的“文件体”,也就是gzip压缩中的瓤,或者说虾的身子部分。其实不仅仅是gzip,只要是使用的deflate算法的文件压缩格式,它们的中间部分,即保存实际压缩数据的部分,基本都是一样的,因为deflate本身有自己的格式。本章能够成文,以及我对压缩能够

2016-07-30 12:23:54 5177

原创 GZIP压缩原理分析(09)——第四章 基于gzip的HTTP压缩详解(四03) 处理细节(关于流压缩的问题)以及本章总结

我们构建负载均衡设备的模型来描述流压缩的问题。模型是这样的:负载均衡设备在服务器前端,客户端访问服务器实际上是访问这个负载均衡设备,由该设备将来自客户端的请求发送给服务器并将服务器回复的应答发送给客户端。HTTP压缩功能就做在这个负载均衡设备上,服务器发送给负载均衡设备的HTTP应答是未经过压缩的明文。由负载均衡设备将明文应答压缩后再将压缩结果发送给客户端。负载均衡设备在压缩明文应答数据

2016-07-30 10:18:34 2669 1

原创 GZIP压缩原理分析(08)——第四章 基于gzip的HTTP压缩详解(四02) 原理

经过压缩的HTTP应答报文是由浏览器解压的,用wireshark抓包可以看到客户端主机接收到的HTTP应答报文仍然是压缩的,而且wireshark可以将该HTTP应答解压(是否让wireshark解压是可以设置的,兹不赘述)。比起压缩,解压的速度是非常快的(只要数据正常,可以解压的话),所以不用担心浏览器用于解压的时间会降低用户体验。事实上,浏览器解压消耗的这点时间比起数据包因为网络拥堵而耽误的时

2016-07-30 10:15:54 3669 1

原创 GZIP压缩原理分析(07)——第四章 基于gzip的HTTP压缩详解(四01) 章前语

简单来讲,HTTP压缩就是将HTTP应答报文数据部分压缩(所谓数据部分,是用于区分HTTP头的),这对于减小网络带宽来讲有极大的好处。目前大型网站基本都会使用HTTP压缩功能,比如百度、腾讯、新浪等,使用wireshark抓包可以非常直观的看到被压缩的报文。 压缩本身是比较消耗CPU性能的(后续章节分析源码时会有更深的体会,因为压缩要涉及大量的位操作,比较考验CPU的运算能力),对内存的要

2016-07-30 10:14:30 2725 3

原创 GZIP压缩原理分析(06)——第三章 gzip文件格式详解(三04) gzip文件格式实例分析以及本章总结

这里简单提一下字节顺序的问题,为了理解起来更快更清晰,我不说大小端的问题,只要各位看官记住分析套路先把gzip文件格式分析清楚,知道实际的二进制存储方式即可。后续章节分析压缩源码的时候会结合代码说明。实例一:原始文件的文件信息如下,使用UE打开将该文件经过gzip压缩后的结果,如下图所示,我们逐字节分析,开始的10个字节是固定头部,即00000000h行

2016-07-30 10:09:07 5798

原创 GZIP压缩原理分析(05)——第三章 gzip文件格式详解(三03) gzip文件尾和文件体

1、文件尾相比gzip文件头,gzip文件尾较简单,只由四个字节构成,0 1 2 3 4 5 6 7+---------+---------+---------+---------+---------+-

2016-07-30 10:07:23 3295

appnote.txt

gzip1.2.4源码注释中提到的appnote.txt

2016-07-31

RFC1952 gzip格式介绍

主要介绍gzip的格式

2016-07-31

RFC1951 deflate格式

deflate压缩算法基本格式介绍

2016-07-31

RFC1950(zlib compress)

RFC1950,zlib库提供的压缩方式

2016-07-31

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

TA关注的人

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