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体系结构
…阅读更多>>

奇葩的FTP协议分析

文件传输协议(FTP)诞生于1971年,至今已经有40多年历史,作为最基础常用的互联网协议之一,它到现在依然发挥着重要作用。和大多数网络协议不一样,FTP是一个非常奇葩的网络协议,说它奇葩主要是有以下两点原因:第一是FTP有两个通道,数据通道和控制通道,数据通道用来传递数据,而指令通道用来传送客户端发送给服务器的指令。第二是FTP有主动和被动两种操作模式,他们的不同在于数据通道的连接方式,接下来我们来详细分析一下FTP协议。

和HTTP协议一样,FTP协议也是文本协议,和其不同的是,FTP是有状态的信息,和SMTP更为相似,它的所有指令如下:
CWD XCWD CDUP XCUP SMNT* QUIT PORT PASV
EPRT EPSV ALLO* RNFR RNTO DELE MDTM RMD
XRMD MKD XMKD PWD XPWD SIZE SYST HELP
NOOP FEAT OPTS AUTH* CCC* CONF* ENC* MIC*
PBSZ* PROT* TYPE STRU MODE RETR STOR STOU
APPE REST ABOR USER PASS ACCT* REIN* LIST
NLST STAT SITE MLSD MLST …阅读更多>>

河内塔与递归

河内塔,又叫汉诺塔,是法国数学家爱德华·卢卡斯于1883年发明,给定一个由八个圆盘组成的塔,这些圆盘按照大小递减的方式在三根桩柱上,需要把整个塔一道另一根桩柱上,一次只能移动一个圆盘,并且必须保证较大的圆盘永远在下面。在电影《猩球崛起》中有这样一个片段,凯撒的妈妈美瞳(Bright eyes)在实验室内在服用一种药物后,智商堪比人类,在对她进行河内塔游戏的测试中,有非常优秀的表现。
实验中的黑猩猩
河内塔还有一个美丽的传说:有64个这样的圆盘组成的塔,上帝命令一群牧师夜以继日的工作,当牧师完成上面的任务时,塔将坍塌,世界也将毁灭。 …阅读更多>>