JPEG文件分析与无损压缩实践

JPEG格式的图片是最常见的图片格式,它采用有损压缩算法,很好的处理了图片体积和质量之间的关系,更有利于传播,所以JPEG也是最常见的网络标准文件格式。使用JPEG格式压缩的图片文件一般也被称为JPEG Files,最普遍被使用的扩展名格式为.jpg。但JEPG标准只是一些压缩压法的描述,它并没有指定一个文件格式,为了能够保存和传输文件,一些文件格式标准被发明出来,最常见的文件格式是JPEG/Exif和JPEG/JFIF。JPEG和JIFF/Exif的关系类似于unicode和utf-8,一个用来编码一个用来存储。

…阅读更多>>

Web开发中的响应式图片处理

目前手机等移动设备网站开发已经有比较好的解决方案,一种是响应式网站,像笔者博客一样,PC网站就是移动网站,一种是把移动网站和PC网站分开,类似淘宝那样。从网站SEO的角度来说,两者并无差别,也各有利弊,不论采取那种方式也都能解决移动设备浏览问题。随着移动设备和类型越来越多,我们几乎不太可能针对某一类设备建设单独的网站,不论PC网站和移动网站是否分开建设,那都意味着我们的移动网站将会面临越来越多各不相同设备进行访问,也就是说即使是建设单独的移动网站,我们也必须要考虑网站符合用户的设备特性。
响应式图片
…阅读更多>>

zlib gzip与zip

在运维与web开发中,我经常听说这三个名词,常用的使用环境有编译nginx需要添加zlib库,启用ngx_gzip_static_module,php中增加个zip模块可以用来处理zip文件,web服务器启用gzip压缩可以节省传输宽带和时间,HTTP/1.1协议中Content-Encoding的gzip和defalte等等等,那么这三个东西到底是什么,有什么关系,我想很多人都跟我一样,被搞糊涂了。 …阅读更多>>

浮点运算,浮点数与定点数(一)

我们评测CPU性能的时候,经常会说道一个概念:浮点运算,我经常在想,浮点运算到底是一个什么样的东西,用得着把它当成评测CPU性能的关键点吗?搞清楚这个问题,首先要说到浮点数和定点数,先看一个例子,用javascript执行console.log(0.1+0.2), 查看其输出,发现0.1+0.2≠0.3!,为什么会这样?这简直太反常识了!

计算机中数字的表示

我们知道,计算机中通过内存存储数据,一个字节有8个位,可以最大表示256个数据,如果用来表示数字,则一个字节可以用来表示0-255,我们可以通过用多个字节来表示更大的数字,如32位计算机中,我们可以直接在CPU中表示和计算最大32位整数,如果大于32位,还可以通过分步的方式进行。但即使是这样,我们还是遇到了一些问题,如果引入非整数,我们发现很多数字根本就无法全部表示,整数之间都有无穷多个数,还有一些无理数,圆周率π,√2等,也是无法进行精确表示的,所以我们在计算机中我们采用近似的方法对其进行表示。 …阅读更多>>

计算机是如何启动的?

相信很多人和我一样,从接触计算机开始,就一直在思考这个问题,当按下电脑的开机键之后,到底发生了什么,为什么这样就能启动电脑了?这篇文章我试着分析一下计算器的启动原理和过程。
计算机起动流程

CPU

CPU全称是中央处理器,是计算机的核心,包括控制单元,运算单元,存储单元和时钟等,它的主要功能是解释计算机指令以及处理各类数据。包括基本的算术操作,从存储器或者各个接口卡(外设)读取或者写入数据等。
CPU内部包含若干个寄存器,用来暂存数据或者指导CPU的运行,8086中常见的寄存器有,AX,BX,CX,DX,CS,DS,SS,ES,DI,SI,SP,BP,IP,Flag等。
我们都知道计算机只能识别二进制数据,例如指令101110000000是把寄存器ax的值设为0,因为二进制指令比较难以理解,所以人们发明了汇编语言,上述指令用汇编语言(Intel写法)描述就是mov ax,0。 …阅读更多>>

深入了解函数调用与栈

有人把程序员比作魔术师,几行简单的代码就能指示电脑作出各种各样不同的操作,作为一个合格的魔术师,只有一步一步掌握魔法的底层运行原理,才能不断创新,创造出更新,效率更高的魔法。在计算机科学中,函数是一个非常重要概念,与此相关的栈,栈如此重要,以至于CPU从底层硬件上实现了它,下面我试着分析一下函数的调用和数据栈,水平有限,如有疏漏和错误欢迎指出。

系统的硬件组成

现代计算机遵守冯·诺依曼体系结构,一般来说由CPU(中央处理器),主存储器(内存),I/O总线和各种外设组成,如下:
IA32体系结构
…阅读更多>>