大数据时代:Hadoop认证变身高薪敲门砖

众所周知,积极的参加各类的培训并获得相关的认证是IT专业人士的显著特征。而在2012年哪种技术会成为热点?毫无疑问是Hadoop。Apache Hadoop作为开源数据管理软件主要用来在分布式环境中的分析大量的结构化和非结构化数据。Hadoop已被用在包括Yahoo,Facebook,LinkedIn和eBay等众多流行的网站之中。
Hadoop大潮正在逐渐席卷所有美国的垂直行业,包括金融、传媒、零售、能源、以及制药等。Hadoop在树立大数据概念的同时,还对海量数据进行实时分析,并从分析得出的数据发现趋势,以提高企业赢利的能力。
IT专业人士对一些Hadoop开发和管理培训课程以及认证非常感兴趣。同时,IT经理(如CIO或CTO)也可以从大数据相关课程中受益良多。包括Cloudera、Hortonworks、IBM、MapR和Informatica都提供了相关的Hadoop培训。总部设在加州一家公司则提供四个不同受众(程序员、数据库分析师、系统管理员以及IT经理)的Hadoop相关课程。
Cloudera产品副总裁Charles Zedlewski表示Hadoop正在影响越来越的的行业。Cloudera所提供Hadoop服务已经持续了三年,同时也为自身企业级Hadoop软件做出了有力的补充。在过去几个月中,通过Cloudera Hadoop培训的相关人才极其抢手。相比于2011年第一季度,2012年第一季度参与培训的人预计会增长4倍。
Cloudera培训服务总监Sarah Sproehnle表示“公司也在努力聘请Hadoop人才,我们的Hadoop培训已经进行了一段时间。我们将最佳实践融入到我们课程之中,这驱使我们可以加快Hadoop从业人员快速成长。获得我们认证的从业人员也受到很多企业的欢迎,在企业中他们负责管理PB级数据”。Cloudera的Hadoop培训持续4天,大约需要2000美元费用。
事实上Cloudera的培训课程的名额在去年十一月纽约举行的第三次Hadoop全球年度大会(近2000人出席了会议)上被抢购一空。在过往的三年内,Cloudera已经培训超过10000名技术从业者。Cloudera计划在2012年底再培训10000名。
Hortonworks在二月也推出了被称为Hortonworks大学的Hadoop培训项目,并为IT专业人士提供标准课程和认证。Hortonworks的Hadoop认证分为开发人员认证与管理员认证。Hadoop开发者认证培训需要4天,费用约为2500美元。Hadoop管理员培训需要两天,费用大约1400美元。
“我们看到相关的Hadoop培训的需求在成倍增长,企业开始将收集的信息细化(客户信息、交易信息),企业都在争先恐后的寻找缩减成本的方法。”Hortonworks全球服务领域高级总监Bob Mahan说道。
相关的Hadoop开发培训需要被培训人具备Java编程经验,而对于Hadoop管理培训而言则需要被培训人具备Linux或Unix的管理经验。IT人员争先恐后参加Hadoop认证培训无非是想获取更高的薪资。据Mahan预测在未来3-5年,全球将有一半的数据通过Hadoop处理。
而IBM则提出了新的倡议,IBM呼吁在大学时代开始培养本科生和研究生,旨在让他们在大学时期就接触大数据概念以及Hadoop。IBM这一倡议自去年十月以来已经吸引了14000学生参与其中。IBM提供了六个在线课程,涉及Hadoop基础上下篇。IBM表示,在庞大的注册人群中,约有1成学生在5个月内完成了相关资格认证。
与此同时,MIT更要求计算机系的学生使用Hadoop MapReduce构建程序。而加州伯克利分校更是使用Hadoop致力于数据科学领域的研究。
最后Cloudera产品副总裁Charles Zedlewski表示“现今Hadoop所处的状况让我想起了1995年时的Java”。

互联网协议入门

我们每天使用互联网,你是否想过,它是如何实现的?
全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?
互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。
下面就是我的学习笔记。因为这些协议实在太复杂、太庞大,我想整理一个简洁的框架,帮助自己从总体上把握它们。为了保证简单易懂,我做了大量的简化,有些地方并不全面和精确,但是应该能够说清楚互联网的原理。

一、概述
1. 1 五层模型
互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。
用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。
如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。

如上图所示,最底下的一层叫做”实体层”(Physical Layer),最上面的一层叫做”应用层”(Application Layer),中间的三层(自下而上)分别是”链接层”(Link Layer)、”网络层”(Network Layer)和”传输层”(Transport Layer)。越下面的层,越靠近硬件;越上面的层,越靠近用户。
它们叫什么名字,其实并不重要。只需要知道,互联网分成若干层就可以了。
1. 2 层与协议
每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。
大家都遵守的规则,就叫做”协议”(protocol)。
互联网的每一层,都定义了很多协议。这些协议的总称,就叫做”互联网协议”(Internet Protocol Suite)。它们是互联网的核心,下面介绍每一层的功能,主要就是介绍每一层的主要协议。
二、实体层(Physical Layer)
我们从最底下的一层开始。
电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。

这就叫做”实体层”,它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送 0 和 1 的电信号。
三、链接层(Link Layer)
3. 1 定义
单纯的 0 和 1 没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?
这就是”链接层”的功能,它在”实体层”的上方,确定了 0 和 1 的分组方式。
3. 2 以太网协议
早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做”以太网”(Ethernet)的协议,占据了主导地位。
以太网规定,一组电信号构成一个数据包,叫做”帧”(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

“标头”包含数据包的一些说明项,比如发送者、接受者、数据类型等等;”数据”则是数据包的具体内容。
“标头”的长度,固定为 18 字节。”数据”的长度,最短为 46 字节,最长为 1500 字节。因此,整个”帧”最短为 64 字节,最长为 1518 字节。如果数据很长,就必须分割成多个帧进行发送。
3. 3 MAC 地址
上面提到,以太网数据包的”标头”,包含了发送者和接受者的信息。那么,发送者和接受者是如何标识呢?
以太网规定,连入网络的所有设备,都必须具有”网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做 MAC 地址。

每块网卡出厂的时候,都有一个全世界独一无二的 MAC 地址,长度是 48 个二进制位,通常用 12 个十六进制数表示。

前 6 个十六进制数是厂商编号,后 6 个是该厂商的网卡流水号。有了 MAC 地址,就可以定位网卡和数据包的路径了。
3. 4 广播
定义地址只是第一步,后面还有更多的步骤。
首先,一块网卡怎么会知道另一块网卡的 MAC 地址?
回答是:有一种 ARP 协议,可以解决这个问题。这个留到后面介绍,这里只需要知道,以太网数据包必须知道接收方的 MAC 地址,然后才能发送。
其次,就算有了 MAC 地址,系统怎样才能把数据包准确送到接收方?
回答是:以太网采用了一种很”原始”的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。

上图中,1号计算机向 2 号计算机发送一个数据包,同一个子网络的 3 号、4号、5号计算机都会收到这个包。它们读取这个包的”标头”,找到接收方的 MAC 地址,然后与自身的 MAC 地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做”广播”(broadcasting)。
有了数据包的定义、网卡的 MAC 地址、广播的发送方式,”链接层”就可以在多台计算机之间传送数据了。
四、网络层(Network Layer)
4. 1 网络层的由来
以太网协议,依靠 MAC 地址发送数据。理论上,单单依靠 MAC 地址,上海的网卡就可以找到洛杉矶的网卡了,技术上是可以实现的。
但是,这样做有一个重大的缺点。以太网采用广播方式发送数据包,所有成员人手一”包”,不仅效率低,而且局限在发送者所在的子网络。也就是说,如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。
互联网是无数子网络共同组成的一个巨型网络,很像想象上海和洛杉矶的电脑会在同一个子网络,这几乎是不可能的。

因此,必须找到一种方法,能够区分哪些 MAC 地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用”路由”方式发送。(”路由”的意思,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及)遗憾的是,MAC 地址本身无法做到这一点。它只与厂商有关,与所处网络无关。
这就导致了”网络层”的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做”网络地址”,简称”网址”。
于是,”网络层”出现以后,每台计算机有了两种地址,一种是 MAC 地址,另一种是网络地址。两种地址之间没有任何联系,MAC 地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。
网络地址帮助我们确定计算机所在的子网络,MAC 地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理 MAC 地址。
4. 2 IP 协议
规定网络地址的协议,叫做 IP 协议。它所定义的地址,就被称为 IP 地址。
目前,广泛采用的是 IP 协议第四版,简称 IPv4。这个版本规定,网络地址由 32 个二进制位组成。

习惯上,我们用分成四段的十进制数表示 IP 地址,从 0.0.0.0 一直到 255.255.255.255 。
互联网上的每一台计算机,都会分配到一个 IP 地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP 地址 172.16.254.1,这是一个 32 位的地址,假定它的网络部分是前 24 位(172.16.254),那么主机部分就是后 8 位(最后的那个1)。处于同一个子网络的电脑,它们 IP 地址的网络部分必定是相同的,也就是说 172.16.254.2 应该与 172.16.254.1 处在同一个子网络。
但是,问题在于单单从 IP 地址,我们无法判断网络部分。还是以 172.16.254.1 为例,它的网络部分,到底是前 24 位,还是前 16 位,甚至前 28 位,从 IP 地址上是看不出来的。
那么,怎样才能从 IP 地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数”子网掩码”(subnet mask)。
所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于 IP 地址,也是一个 32 位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP 地址 172.16.254.1,如果已知网络部分是前 24 位,主机部分是后 8 位,那么子网络掩码就是 11111111.11111111.11111111.00000000,写成十进制就是 255.255.255.0。
知道”子网掩码”,我们就能判断,任意两个 IP 地址是否处在同一个子网络。方法是将两个 IP 地址与子网掩码分别进行 AND 运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。
比如,已知 IP 地址 172.16.254.1 和 172.16.254.233 的子网掩码都是 255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行 AND 运算,结果都是 172.16.254.0,因此它们在同一个子网络。
总结一下,IP 协议的作用主要有两个,一个是为每一台计算机分配 IP 地址,另一个是确定哪些地址在同一个子网络。
4. 3 IP 数据包
根据 IP 协议发送的数据,就叫做 IP 数据包。不难想象,其中必定包括 IP 地址信息。
但是前面说过,以太网数据包只包含 MAC 地址,并没有 IP 地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?
回答是不需要,我们可以把 IP 数据包直接放进以太网数据包的”数据”部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构。
具体来说,IP 数据包也分为”标头”和”数据”两个部分。

“标头”部分主要包括版本、长度、IP 地址等信息,”数据”部分则是 IP 数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。

IP 数据包的”标头”部分的长度为 20 到 60 字节,整个数据包的总长度最大为 65,535 字节。因此,理论上,一个 IP 数据包的”数据”部分,最长为 65,515 字节。前面说过,以太网数据包的”数据”部分,最长只有 1500 字节。因此,如果 IP 数据包超过了 1500 字节,它就需要分割成几个以太网数据包,分开发送了。
4. 4 ARP 协议
关于”网络层”,还有最后一点需要说明。
因为 IP 数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的 MAC 地址,另一个是对方的 IP 地址。通常情况下,对方的 IP 地址是已知的(后文会解释),但是我们不知道它的 MAC 地址。
所以,我们需要一种机制,能够从 IP 地址得到 MAC 地址。
这里又可以分成两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的 MAC 地址,只能把数据包传送到两个子网络连接处的”网关”(gateway),让网关去处理。
第二种情况,如果两台主机在同一个子网络,那么我们可以用 ARP 协议,得到对方的 MAC 地址。ARP 协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的 IP 地址,在对方的 MAC 地址这一栏,填的是 FF:FF:FF:FF:FF:FF,表示这是一个”广播”地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出 IP 地址,与自身的 IP 地址进行比较。如果两者相同,都做出回复,向对方报告自己的 MAC 地址,否则就丢弃这个包。
总之,有了 ARP 协议之后,我们就可以得到同一个子网络内的主机 MAC 地址,可以把数据包发送到任意一台主机之上了。
五、传输层(Transport Layer)
5. 1 传输层的由来
有了 MAC 地址和 IP 地址,我们已经可以在互联网上任意两台主机上建立通信。
接下来的问题是,同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?
也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
“端口”是 0 到 65535 之间的一个整数,正好 16 个二进制位。0 到 1023 的端口被系统占用,用户只能选用大于 1023 的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。
“传输层”的功能,就是建立”端口到端口”的通信。相比之下,”网络层”的功能是建立”主机到主机”的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix 系统就把主机+端口,叫做”套接字”(socket)。有了它,就可以进行网络应用程序开发了。
5. 2 UDP 协议
现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做 UDP 协议,它的格式几乎就是在数据前面,加上端口号。
UDP 数据包,也是由”标头”和”数据”两部分组成。

“标头”部分主要定义了发出端口和接收端口,”数据”部分就是具体的内容。然后,把整个 UDP 数据包放入 IP 数据包的”数据”部分,而前面说过,IP 数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

UDP 数据包非常简单,”标头”部分一共只有 8 个字节,总长度不超过 65,535 字节,正好放进一个 IP 数据包。
5. 3 TCP 协议
UDP 协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。
为了解决这个问题,提高网络可靠性,TCP 协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的 UDP 协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。
因此,TCP 协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。
TCP 数据包和 UDP 数据包一样,都是内嵌在 IP 数据包的”数据”部分。TCP 数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常 TCP 数据包的长度不会超过 IP 数据包的长度,以确保单个 TCP 数据包不必再分割。
六、应用层(Application Layer)
应用程序收到”传输层”的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。
“应用层”的作用,就是规定应用程序的数据格式。
举例来说,TCP 协议可以为各种各样的程序传递数据,比如 Email、WWW、FTP 等等。那么,必须有不同协议规定电子邮件、网页、FTP 数据的格式,这些应用程序协议就构成了”应用层”。
这是最高的一层,直接面对用户。它的数据就放在 TCP 数据包的”数据”部分。因此,现在的以太网的数据包就变成下面这样。

至此,整个互联网的五层结构,自下而上全部讲完了。这是从系统的角度,解释互联网是如何构成的。下一次,我反过来,从用户的角度,自上而下看看这个结构是如何发挥作用,完成一次网络数据交换的。
七、一个小结
先对前面的内容,做一个小结。
我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:

发送这个包,需要知道两个地址:
对方的 MAC 地址
对方的 IP 地址
有了这两个地址,数据包才能准确送到接收者手中。但是,前面说过,MAC 地址有局限性,如果两台电脑不在同一个子网络,就无法知道对方的 MAC 地址,必须通过网关(gateway)转发。

上图中,1 号电脑要向 4 号电脑发送一个数据包。它先判断 4 号电脑是否在同一个子网络,结果发现不是(后文介绍判断方法),于是就把这个数据包发到网关A。网关A通过路由协议,发现 4 号电脑位于子网络B,又把数据包发给网关B,网关B再转发到 4 号电脑。
1号电脑把数据包发到网关A,必须知道网关A的 MAC 地址。所以,数据包的目标地址,实际上分成两种情况:
场景
数据包地址
同一个子网络
对方的 MAC 地址,对方的 IP 地址
非同一个子网络
网关的 MAC 地址,对方的 IP 地址
发送数据包之前,电脑必须判断对方是否在同一个子网络,然后选择相应的 MAC 地址。接下来,我们就来看,实际使用中,这个过程是怎么完成的。
八、用户的上网设置
8. 1 静态 IP 地址
你买了一台新电脑,插上网线,开机,这时电脑能够上网吗?
通常你必须做一些设置。有时,管理员(或者 ISP)会告诉你下面四个参数,你把它们填入操作系统,计算机就能连上网了:
本机的 IP 地址
子网掩码
网关的 IP 地址
DNS 的 IP 地址
下图是 Windows 系统的设置窗口。

这四个参数缺一不可,后文会解释为什么需要知道它们才能上网。由于它们是给定的,计算机每次开机,都会分到同样的 IP 地址,所以这种情况被称作”静态 IP 地址上网”。
但是,这样的设置很专业,普通用户望而生畏,而且如果一台电脑的 IP 地址保持不变,其他电脑就不能使用这个地址,不够灵活。出于这两个原因,大多数用户使用”动态 IP 地址上网”。
8. 2 动态 IP 地址
所谓”动态 IP 地址”,指计算机开机后,会自动分配到一个 IP 地址,不用人为设定。它使用的协议叫做 DHCP 协议。
这个协议规定,每一个子网络中,有一台计算机负责管理本网络的所有 IP 地址,它叫做”DHCP 服务器”。新的计算机加入网络,必须向”DHCP 服务器”发送一个”DHCP 请求”数据包,申请 IP 地址和相关的网络参数。
前面说过,如果两台计算机在同一个子网络,必须知道对方的 MAC 地址和 IP 地址,才能发送数据包。但是,新加入的计算机不知道这两个地址,怎么发送数据包呢?
DHCP 协议做了一些巧妙的规定。
8. 3 DHCP 协议
首先,它是一种应用层协议,建立在 UDP 协议之上,所以整个数据包是这样的:

(1)最前面的”以太网标头”,设置发出方(本机)的 MAC 地址和接收方(DHCP 服务器)的 MAC 地址。前者就是本机网卡的 MAC 地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
(2)后面的”IP 标头”,设置发出方的 IP 地址和接收方的 IP 地址。这时,对于这两者,本机都不知道。于是,发出方的 IP 地址就设为0.0.0.0,接收方的 IP 地址设为 255.255.255.255。
(3)最后的”UDP 标头”,设置发出方的端口和接收方的端口。这一部分是 DHCP 协议规定好的,发出方是 68 端口,接收方是 67 端口。
这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的 MAC 地址是 FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的 IP 地址,才能确定是不是发过自己的。当看到发出方 IP 地址是0.0.0.0,接收方是 255.255.255.255,于是 DHCP 服务器知道”这个包是发过我的”,而其他计算机就可以丢弃这个包。
接下来,DHCP 服务器读出这个包的数据内容,分配好 IP 地址,发送回去一个”DHCP 响应”数据包。这个响应包的结构也是类似的,以太网标头的 MAC 地址是双方的网卡地址,IP 标头的 IP 地址是 DHCP 服务器的 IP 地址(发出方)和 255.255.255.255(接收方),UDP 标头的端口是 67(发出方)和 68(接收方),分配给请求端的 IP 地址和本网络的具体参数则包含在 Data 部分。
新加入的计算机收到这个响应包,于是就知道了自己的 IP 地址、子网掩码、网关地址、DNS 服务器等等参数。
8. 4 上网设置:小结
这个部分,需要记住的就是一点:不管是”静态 IP 地址”还是”动态 IP 地址”,电脑上网的首要步骤,是确定四个参数。这四个值很重要,值得重复一遍:
本机的 IP 地址
子网掩码
网关的 IP 地址
DNS 的 IP 地址
有了这几个数值,电脑就可以上网”冲浪”了。接下来,我们来看一个实例,当用户访问网页的时候,互联网协议是怎么运作的。
九、一个实例:访问网页
9. 1 本机参数
我们假定,经过上一节的步骤,用户设置好了自己的网络参数:
本机的 IP 地址:192.168.1.100
子网掩码:255.255.255.0
网关的 IP 地址:192.168.1.1
DNS 的 IP 地址:8.8.8.8
然后他打开浏览器,想要访问 Google,在地址栏输入了网址:www.google.com

这意味着,浏览器要向 Google 发送一个网页请求的数据包。
9. 2 DNS 协议
我们知道,发送数据包,必须要知道对方的 IP 地址。但是,现在,我们只知道网址 www.google.com,不知道它的 IP 地址。
DNS 协议可以帮助我们,将这个网址转换成 IP 地址。已知 DNS 服务器为 8.8.8.8,于是我们向这个地址发送一个 DNS 数据包(53端口)。

然后,DNS 服务器做出响应,告诉我们 Google 的 IP 地址是 172.194.72.105。于是,我们知道了对方的 IP 地址。
9. 3 子网掩码
接下来,我们要判断,这个 IP 地址是不是在同一个子网络,这就要用到子网掩码。
已知子网掩码是 255.255.255.0,本机用它对自己的 IP 地址 192.168.1.100,做一个二进制的 AND 运算(两个数位相同,结果为1,否则为0),计算结果为 192.168.1.0;然后对 Google 的 IP 地址 172.194.72.105 也做一个 AND 运算,计算结果为 172.194.72.0。这两个结果不相等,所以结论是,Google 与本机不在同一个子网络。
因此,我们要向 Google 发送数据包,必须通过网关 192.168.1.1 转发,也就是说,接收方的 MAC 地址将是网关的 MAC 地址。
9. 4 应用层协议
浏览网页用的是 HTTP 协议,它的整个数据包构造是这样的:

HTTP 部分的内容,类似于下面这样:
GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: … …
我们假定这个部分的长度为 4960 字节,它会被嵌在 TCP 数据包之中。
9. 5 TCP 协议
TCP 数据包需要设置端口,接收方(Google)的 HTTP 端口默认是 80,发送方(本机)的端口是一个随机生成的 1024-65535 之间的整数,假定为 51775。
TCP 数据包的标头长度为 20 字节,加上嵌入 HTTP 的数据包,总长度变为 4980 字节。
9. 6 IP 协议
然后,TCP 数据包再嵌入 IP 数据包。IP 数据包需要设置双方的 IP 地址,这是已知的,发送方是 192.168.1.100(本机),接收方是 172.194.72.105(Google)。
IP 数据包的标头长度为 20 字节,加上嵌入的 TCP 数据包,总长度变为 5000 字节。
9. 7 以太网协议
最后,IP 数据包嵌入以太网数据包。以太网数据包需要设置双方的 MAC 地址,发送方为本机的网卡 MAC 地址,接收方为网关 192.168.1.1 的 MAC 地址(通过 ARP 协议得到)。
以太网数据包的数据部分,最大长度为 1500 字节,而现在的 IP 数据包长度为 5000 字节。因此,IP 数据包必须分割成四个包。因为每个包都有自己的 IP 标头(20字节),所以四个包的 IP 数据包的长度分别为 1500、1500、1500、560。

9. 8 服务器端响应
经过多个网关的转发,Google 的服务器 172.194.72.105,收到了这四个以太网数据包。
根据 IP 标头的序号,Google 将四个包拼起来,取出完整的 TCP 数据包,然后读出里面的”HTTP 请求”,接着做出”HTTP 响应”,再用 TCP 协议发回来。
本机收到 HTTP 响应以后,就可以将网页显示出来,完成一次网络通信。

这个例子就到此为止,虽然经过了简化,但它大致上反映了互联网协议的整个通信过程。
http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

vbox 与 kvm 的区别

vbox 与 kvm 的区别:
vbox 是由 qemu 改写而成,包含大量 qemu 代码。可以使用于 不支持 虚拟化的cpu。值得说的一点:vbox 在图形方面比较好,能进行2D 3D加速。cpu控制不理想(估计是因为图形支持的缘故)。操作上有独立的图形界面,易于上手。
kvm 是linux内核包含的东西,使用qemu作为上层管理(命令行)。cpu 必须支持虚拟化。性能,作为服务器很好,可是图形能力十分的差。即使放电影,图像也是像刷油漆一样,一层一层的。cpu使用率控制很好。 控制上比较简洁,功能比较丰富:比如使用 “无敌功能”所有更改指向内存,你的镜像永远保持干净。 “母镜像”功能让你拥有n个独立快照点。 还有很多参数。另外,kvm作为内核级的虚拟机,刚开始发展关注的公司比较多——但是还没有达到商业应用的水平。
总体而言:在支持 虚拟化的情况下,vbox 和 kvm 的性能差不多,主要是面向对象不同:kvm使用于服务器,vbox使用于桌面应用。
***********************************************
关于kvm:
kvm是开源软件,全称是kernel-based virtual machine(内核级虚拟机)。是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的linux 全虚拟化 解决方案。它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko 或 kvm-AMD.ko)。
kvm还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
kvm能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(ps:它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
在主流的linux内核,如2.6.20以上的内核均包含了kvm核心。
KVM官方地址: http://kvm.qumranet.com/kvmwiki
KVM的Changelog: http://kvm.qumranet.com/kvmwiki/ChangeLog, 可以知道最新的版本是多少,做了那些改变。
KVM下载地址在sourceforge.net上: http://sourceforge.net/project/showfile … _id=180599
KVM的Howto文档: http://kvm.qumranet.com/kvmwiki/HOWTO
Kqemu: http://sourceforge.net/projects/kqemu/
Qemu: http://fabrice.bellard.free.fr/qemu/index.html
**************************入门篇(基于ubuntu9.10)
基本知识:
qemu是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kqemu是该软件的加速软件。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。
所以,大家不要把概念弄错了,盲目的安装qemu和kqemu。
安装准备:
查看你的硬是否支持虚拟化。
命令:
egrep ‘(vmx|svm)’ /proc/cpuinfo
要有 vmx 或 svm 的标识才行。总的说来,AMD在虚拟化方面作得更好一些。
使用intel cpu的朋友还需要进入bios进行设置——因为我的是AMD,所以设置方法不敢乱说。
安装kvm:
打开新立得软件库,安装kvm。系统会自动安装相关的软件包,包括qemu-kvm。什么kvm-AMD 或 kvm-intel模式系统都自动处理好了。现在大多文章都是2008年写的,已经过时了,可惜好多人只知道复制,好多设置已经不需要了,有些跟官方的完全冲突。
创建虚拟镜像:
命令(先cd 到你要保存镜像的位置):
kvm-img create xxx.img 2G
由于是要安装xp精简系统,2G已经足够大了(安装下来只要700M)。xxx 代表名字,想取什么都可以。最好是连续的英文.默认格式为raw,当然你可以自己设定,比如(-f qcow2)加在 create 后面即可。(.img这个后缀是我随便编的,kvm对后缀名没有要求)
其它格式如下:
Supported formats: cow qcow vmdk cloop dmg bochs vpc vvfat qcow2 parallels nbd host_cdrom host_floppy host_device raw tftp ftps ftp https http
安装虚拟机系统:
命令(先cd 到你要保存镜像的位置):
kvm -hda xxxx.img -cdrom /path/to/boot-media.iso -boot d -m 512
说明几点:/path/to/boot-media.iso 只是个举例。具体为你的系统盘镜像位置。-m 为虚拟机内存大小,单位是M默认(不写这个选项)为128M。当然,自己看着给吧。
建议如果虚拟的是xp系统,把页面缓存给关了。
使用虚拟机最简单的命令:
命令(先cd 到你要保存镜像的位置):
kvm -m 1024 -hda xxx.img
由于默认内存是128M,所以不得不指定一下,要不连-m 1024都可以省了。此时是没有声卡的,当然也可加上声音选项。cpu默认是一颗,网络默认启动(为net-内部端口映射)(可以上网,但是主机识别不了,它也无法连接主机)。
你可以使用:
kvm -m 1024 -hda /xxx/xxx/xxx.img
你也可以把它作为桌面“创建启动器”的命令使用。每次轻轻一点就可使用了。
****************************中级篇
命令:
kvm –help
命令:
kvm-img –help
看看具体的选项说明,需要什么功能就在“最简单命令”后面加就是了——特别简单、功能又很多。用的满意了,可以做成“程序启动器”。或者打开gedit,把命令保存进去,把文件名改为xxx.sh。再把属性改为“可执行”,要用就点击。
比如:kvm -m 1024 -hda xxx.img -xxx xx -xxxx xxx -xxxxxx -xxx
现在分功能讲解
1,文件共享
我们希望虚拟机能和主机对一些文件夹进行共享操作。类似于vbox的共享文件夹。
首先安装 samba 。这是linux的共享功能软件,支持windows系统的访问。记住不是samba4
然后,新建一个文件夹,属性。共享选项,把所有选项开启。应用。接受系统的权限的更改。
好了,默认在虚拟机的网上邻居,就能找见了。没有?看看整个网络(侧边任务)。
简单吧,kvm早已升级了。根本不需要什么配置。
关于权限:你是否有“无法访问,权限不够……”的问题?主机无法修改共享文件“你不是该文件的创建者”?
那是因为linux的权限相当的严格,必须要放权别人才能访问、修改。
如果上级文件夹(无论哪个)不让读取(比如: 其它;文件夹访问 无),那么就会出现无法访问的情况。你要设置上级文件夹权限为(其它;文件夹访问 访问文件)就可以了,不必完全放权。
因为安全考虑,我的用户文件夹(其它;文件夹访问 无)。所以一开始就出了权限问题。我的解决办法是使用命令:
sudo gnome-open /home/
在home中再新建一个文件夹,在属性上,把创建者改为非root(改为经常使用的普通用户),组群:sambashare。权限全为:创建和删除。
经测试,外网虽然能显示共享文件夹,却无法访问——保证只有虚拟机可以访问。(我使用了ufw防火墙)
windows虚拟机在共享文件夹中创建的文件,主机是无法更改的。要设置权限:
我的电脑-打开-工具-文件夹选项-查看
把“使用简单的文件共享”选项去掉。在文件(夹)属性——安全:知道怎么弄了吧。
linux的文件夹系统权限作的十分的好。比如你把其它非受权文件夹的链接复制到共享文件夹,依然无法访问。windows那种权限的随意性,看见就想哭。
多说一点:我的电脑右键,可以把共享文件夹设置为网络硬盘。相当于移动硬盘,可以方便的安装软件,保存资料。
2。无敌模式(-snapshot)
-snapshot write to temporary files instead of disk image files
意思是不更改镜像文件,启动后的所有改动均不会往镜像文件上写。临时文件存放在内存中了,具体是cached。
同样的功能,在vbox要独立安装软件。效率可想而知……
在命令后面空格加上:
-snapshot
即可
3.高速网络(-net nic,model=virtio -net user)
表 2. 虚拟网络模块的性能差异
虚拟网络模块 网络传输速度(ssh) 客户机操作系统 网络状态
rtl8029 200-300KB/s SLES10SP2 (kernel 2.6.16-60) 不稳定
e1000 4.8-5.4MB/s SLES10SP2 (kernel 2.6.16-60) 稳定
virtio 10.6-11.1MB/s SLES11 (kernel 2.6.27-19) 稳定
驱动下载地址:
http://sourceforge.net/projects/kvm/files/
名字是 kvm-driver-disc 的 NETKVM-20081229.iso
具体可能有变化,使用命令:
kvm -m 1024 -hda xp.img -cdrom /home/cat650/linux/kvm/NETKVM-20081229.iso -enable-kvm -net nic,model=virtio -net user
其中:-cdrom是加载光驱的意思。网络默认设置是 (-net nic -net user) 这里由于要指定virtio模块所以要把命令加上。然后自动安装驱动就行了。听说速度接近真实网卡——明显是为打造虚拟服务器配置的。
以后在启动虚拟机命令后面加上-net nic,model=virtio -net user就可以了。
4.高速虚拟
VirtIO paravirtual 是 Linux 虚拟机平台上统一的虚拟 IO 接口驱动。通常主机为了让客户机像在真实环境中一样运行,需要为客户机创建各式各样的虚拟设备,如磁盘,网卡,显卡,时钟,USB 等。这些虚拟设备大大降低了客户机的性能。如果客户机不关注这些硬件设备,就可以用统一的虚拟设备代替他们,这样可以大大提高虚拟机的性能。这个统一的标准化接口在 Linux 上就是 VirtIO 。需要注意的是 VirtIO 运行在 kernel 2.6.24 以上的版本中才能发挥它的性能优势。另外 KVM 项目组也发布了 Windows 平台上的 VirtIO 驱动,这样 windows 客户机的网络性能也可以大大提高了。
下载地址:http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
viostor是磁盘的虚拟驱动。
带图片的参考:http://www.linux-kvm.org/page/WindowsGuestDrivers/viostor/installation
命令:把-hda xxx.img 替换为-drive file=/home/cat650/virt/xp.img,if=virtio,boot=on
意思是使用virtio磁盘系统,并作为启动盘(默认是boot=off,作为附加的第二硬盘)。第一次使用的时候记得挂载viostorXXXX.img,来安装驱动。
5.使用金手指“母镜像”功能
要求,镜像格式为 qcow2 。作用:在“母镜像”的基础上,建立一个新的镜像。虚拟机操作这个新镜像时不会对“母镜像”进行任何更改(只读“母镜像”),新镜像只保存由于操作产生的与“母镜像”的数据差异(大小很小)。由此实现超越“快照”“还原点”的金手指功能(数量没有限制)。
命令(先cd 到你要保存镜像的位置):
kvm-img create -b xp.img -f qcow2 xp.test
其中xp.img是“母镜像”(参数 -b xxx),xp.test是新镜像——只能用 qcow2 格式。
新镜像的使用:正常使用即可。
6.镜像格式转换,镜像信息查询
能转换的格式有:raw,qcow2,qcow,cow,vmdk,cloop
如果你记不清你创建的镜像是什么格式的,可以使用命令(先cd 到你要保存镜像的位置):
kvm-img info xxx.img
关于格式的优缺点,请参看高级篇
转换命令(先cd 到你要保存镜像的位置):
kvm-img convert -f raw -O qcow2 xp.img xp.qco
注意:-O是字母o的大写。
这条命令举例的意思是:把名为xp.img格式为raw的镜像转换成新镜像xp.qco格式为qcow2
其它格式”vmdk”是 VMware 3 / 4 兼容镜像格式。
*******************************深入了解
1.kvm-img 命令
用法:kvm-img 后续命令 [命令选项]
后续命令如下
check [-f fmt] filename
create [-F base_fmt] [-b base_image] [-f fmt] [-o options] filename [size]
commit [-f fmt] filename
convert [-c] [-f fmt] [-O output_fmt] [-o options] [-B output_base_image] filename [filename2 […]] output_filename
info [-f fmt] filename
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
部分内容详解:
filename
镜像的文件名(比如:xp.img cat.raw……后缀名随便取,或者不取)
base_image
只读的镜像——有点像“母镜像”。在“母镜像”基础上创建的镜像只储存对“母镜像”的修改。
output_base_image
forces the output image to be created as a copy on write image of
the specified base image; “output_base_image” should have the same
content as the input’s base image, however the path, image format,
etc may differ
base_fmt
base_image(母镜像) 的格式. 参考 fmt
fmt
指镜像格式。建议大多数情况让系统自动选择(不使用该选项)。
主要格式如下:
“raw”
Raw disk image format (默认).该格式精简,易被多种虚拟机接受。
如果你的系统支持 holes (如 linux 的 ext2 ext3 ext4? windows 的 NTFS),那么它将有效节约空间(比如你创建的磁盘是2G,虚拟系统只使用了800M,那么它实际也只占用800M的空间)。使用命令“kvm-img info 镜像文件名”,将显示实际使用的大小。linux用户还可以使用“ls -ls”命令直接查看。
“qcow2”
QEMU 镜像格式, 使用最多的格式. 创建的镜像比较小(用多少就占多少),对于系统文件不支持 holes 的(比如windows系统下使用qemu)很有帮助。可进行AES加密,zlib基本压缩,并支持多种VM的快照(snapshots)。
“qcow”
古老的 QEMU 镜像格式. Left for compatibility.
“cow”
User Mode Linux Copy On Write image format. Used to be the only
growable image format in QEMU. It is supported only for
compatibility with previous versions. It does not work on
win32.不能运行win32.
“vmdk”
VMware 3 / 4 兼容镜像格式
“cloop”
Linux Compressed Loop image, useful only to reuse directly
compressed CD-ROM images present for example in the Knoppix CD-
ROMs.
size
镜像文件的大小比特. 一般单位使 “M” (megabyte, 1024k) 、 “G” (gigabyte, 1024M)、 T (terabyte, 1024G) 。 “b” is ignored.
output_filename
生成的镜像文件名
output_fmt
生成的镜像文件格式

我想我已经活到了一个尴尬的年龄

我想我已经活到了一个尴尬的年龄
作者:他城
以前听说,人的长大是突然之间的事儿。我并不知道什么是所谓的长大、成熟,但是我突然清楚地意识到自己不再年轻。昨天还以为自己的未来还有无限的可能,像是还没有分化的细胞,可以分裂成任意器官。今天就发现很多世界冠军都比自己年轻很多、那些不大自己几岁的人已经坐上了现在还不敢想的位子。还在考虑着如何把前浪拍在沙滩上,突然自己就已经被后浪拍在沙滩上。
在25岁这个年纪,每隔几步就一个路口,少有人知道该走哪一边,像是吃饭的时候要选人多的餐馆一样,很多人挤向本来就人满为患的路。偏偏很前方的路口又很窄,千军万马去闯独木桥,想来世上已无阳关道。公务员、事业单位这些香饽饽让意气风发的年轻人们明争暗斗,为的不是什么理想、自我价值,只是稳定的一个月几千块的皇粮。干什么不重要,拿多少才重要。工资不重要,福利才是王道。
话又说回来,这并不是我们的错,我们也是被诅咒的一代。
一、梦想
好久没听人说过这个词,也很久没有见过这个词了。谁的心里没有梦想的种子?可偏偏这个时代使用这种文字的地方不是一块肥沃的土壤。在这片土地上,如何生长不重要,长成什么样不重要,唯一重要的是结了什么样的果实。每每当我看到国外很多作家简介里有哲学家这个称谓时,我总是感到无比的同情:这个职业的人如何生存啊……在咱这个全球第二大经济体,干这行的人估计比省长还少,因为咱不需要哲学家,哲学家还不如妓女能拉动GDP。
太久没有看见身边的谁实现他的梦想,也太久没有听见谁实现了梦想,因为看看身边的人,都梦归梦想归想,该干嘛还是干嘛。所以我在想,到底有没有梦想这种东西?它会不会像小时候不盖好被子睡觉时,妈妈说的会吃脚丫子的怪兽一样,只是童年时让我们按照某种方式成长的工具。长大后我们在课本上学到其实没有会吃脚丫子的怪兽,可是没有人告诉我们其实也没有什么梦想。
我听过很多人对我说,真希望你能实现自己的梦想,像是把最后的希望寄托给我一样。后来我看新闻听说有人打算开始环游世界,我内心非常希望他能走完。那一瞬间我才发现,原来藏在心底的那些很难实现的愿望,总是需要找个寄托。
如果单说梦想本身,那是一件十分美好的事物。俞敏洪说每条河流都有一个梦想,那就是奔向大海。多么令人向外啊!可以穿过森林、越过石头、飞跃瀑布,在这个国家甚至还有可能冲开大坝,然后流过良田……最后进入大海。我终于明白为什么如海子这样能写出“为每一棵树取一个温暖的名字”的诗人,如梵高这样能画出最明亮的黄的画家,最后都选择结束自己的生命。
大海很遥远,但并没有遥不可及,只是我们的生命过于沉重。
二、房
如果进行“中国最重的字”评选活动,这个字应当是毫无悬念的胜出。如果说“不要迷恋哥,哥只是个传说”这样的话语是一种洒脱的话,那么“不要迷恋哥,哥没有房”一定是最黑色的幽默。记得两年前我刚毕业的时候,成天算着怎么才能买房子,可左算右算不吃不喝都得20来年。正当在这个梦魇中挣扎之际,一条手机报拯救了我,报上明确指出北京房价5环均价已经过万,而且今后只会涨不会跌。突然之间,世界一片光明,那是我到北京几年天空最蓝的一天,空气最好的一天。因为我终于不用再痛苦,我清楚的知道自己不会搭上环游世界的钱去买一个厨房。
不买归不买,可难免受到身边人的影响,尤其是可能是未来丈母娘的广大中年妇女们。当去年某专家抛出“丈母娘需求”是刚性需求的时候,我这两个蛋疼的啊、两个乳酸的啊。那段时间对于丈母娘这个物种的普遍印象跌倒了历史最低点,后来社会上的某个群体让我找到了阿Q的点,这个群体就是传说中的小三。我发现虽然丈母娘都要求有房子,但是基本都只要一套,而现在的情况是有一套房子就可以有一个女人。想到此,我心情开朗许多。虽然我对女人商品化一直不能接受,但是至少这让我看到在社会主义市场经济的调节下,男性同胞们可以有更多选择,而这完全是一个买方市场。
如果我没记错的话中国男女比例大概是110:100,也就是说按照理论,每110个男人就有10个没有配对的女人。但实际情况是GAY比LES多,也就是说男同胞们可以内部消化一部分,所以从性向选择来说这个比例基本是合适的。但是如果把那些有多套房的老总们纳入考虑范围的话,还是会有一部分男人没有老婆。简而言之,大龄单身汉的数量和有钱人们多余房子的数量成正比。
无论你是以一套房为目标,还是以多套房为目标,你都绕不开”房”这个字。每一滴水都背负着一块砖的重量,怎么还能激情的奔向大海。
三、城市
与梦想最相关的,应该是度过时间的方式,即生活方式。没有什么生活方式是一定正确的,每个人都责无旁贷的要去考虑并选择自己的生活方式。这个时候“城市”的选择就成了如今大多数北漂青年最纠结的话题。一线城市节奏快、刺激、机会多、牛人多、帅哥多、美女多、吃的多、玩儿的多……总之就是选择多。而现代社会有一个物质发展解决不了的社会问题,就是面对多元化选择的时候,人如何能够从选择中获得最大的幸福感和满足感。因为从经济学角度来说,选择多意味着机会成本大。简单而言就是,如果某天晚上有两个朋友约你,一个去逛街,一个去聊天,那么你的选择只会造成一个机会的丢失。可当某天晚上有10个朋友约你干不同的事的时候,你就会开始痛苦,每一个约会都有你想要的方面,这时候你得到的是1,失去的机会是9。而最痛苦莫过于恋爱的时候,其实每个人都会是真爱,问题是你俩有没有真正去爱。吃着碗里的看着锅里的是人类的本性,只不过不同的人有不同的骑驴找马的资本,不同人有不同的骑驴不找马的淡定。
我一直觉得我向往小城市的生活。在这样一个城市有另一个我,可以每天下班陪家人吃饭,然后看看书,写写字,和朋友出去聚聚……不用挤地铁,不用每天用两个小时“在路上”。到底有什么东西是我放不下的呢?或许只是一个自命不凡的平凡人对自己不平凡的期望。每种价值观背后一定都有某种哲学思想的倾向。
四、哲学
很早的时候刚开始接触哲学书籍时看到过一句话:哲学是一场危险的旅行,在救赎之前会有很长的迷失。现在我懂了,因为我已迷失在各种观点之中。正如也许你不知道弗洛伊德是谁,但是你一定知道“潜意识”这个词,你也许不知道柏拉图所描绘的世界是什么样,但是你一定或多或少受到他的影响。柏拉图是苏格拉底的学生,而苏格拉底就是那个成天在街上与人辩论,最后由于坚持自己的理念而被处死的那个爱智慧的人。他几乎没有留下任何著作,而他所有的哲学思想都是通过柏拉图写的对话来表达的(这个很像中国的孔老夫子)。柏拉图认为世界存在原型,每个事物都有原型,而目前盛行的“柏拉图式爱情”毫无疑问是对爱情原型的谬误,我甚至一度认为这种谬误和饭岛爱大姐那本书有因果关系。
哲学讨论的是人,更多关注的是人的本质,存在的意义。而每种观点都能够催生出截然不同的人和生活方式。可以说每种向往背后都有一种哲学取向在左右,就算是没有看过任何哲学书籍的人。因为哲学不是一门科学,需要专门的学习,而是一门对于世界看法的学科,每个人都可以有意见。
中国的古代史是贯穿了儒、道、佛的历史,尤其儒家思想是整个民族思想上最深的烙印。如今,儒家思想在与成功学的对垒中屡屡挫败,三十而立指的不再是思想上有明确的方向,坚定而果敢,而是有房有车。看过一则研究表明,长时间在高强度、高压力环境下工作会使人的性功能退化。如果继续本着以经济建设为中心的指导思想,那么“三十而立、四十不惑”将成为最具幽默感的社会现象,那时候年轻小伙子将成为市场上的抢手货,但是目前看这篇文章的人都已经老了。
初中的时候我们只知道好好读书是为了上好高中,然后上好大学,然后找好工作,当毕业了才开始去思考:什么是好工作?当我们还不能理清思绪,就得被迫接受一个巨大的标准:收入。然后就有各种各样的广告,告诉你有钱的好处,然后就一头扎进经济浪潮之中。生活理想、生活方式、自我价值统统抛在后面。不知道自己想要什么,不知道真正要追求的是什么,本着打哪指哪的态度蜗居在城市之中。
在国外思想家纷纷研究”中庸”的时候,我们自己对这种思想却一知半解,很多人甚至觉得中庸是一种消极退让的思想。相比起古代,现代社会我们面临的抉择和冲击更多,如果说以前是多多益善,那么现在则是越多越乱。我一直挺佩服金庸的,因为他的武侠小说里有很多深刻的哲学思想。比如天龙八部里扫地僧对萧峰和慕容复老爹说,少林每一门绝学都有副作用,需要修相应的佛法才能化解。当你掌控的外在越多,想要保证没有负面作用,那么你内心就要相应的强大。所以说不怕人有钱,就怕有钱人没文化,没文化的人有更不受束缚的想象力,同时却缺乏一定的道德感。中国很多有钱人造成的悲剧、闹剧正源于此。
如果你是一滴水,你有一个奔向大海的梦想,你是想有一颗矛盾的心,还是一个盲目的目标?
五、恋爱
这绝对是史上最能乐此不疲的老生常谈。十几岁的时候如果听到“最美的不是下雨天,是和你一起躲过雨的屋檐”,眼前一定会浮现某个面孔,然后内心激动的一塌糊涂。而到了我这个年纪听到这句词,眼前浮现的只是一个模糊的样子,像是给每个过去分一个权重,然后取了加权平均后计算出的样子。前几天我在文化巷突逢倾盆大雨,雨暴躁地下了1个多小时,我就无奈的在屋檐下站了一个多小时。一开始是很烦躁的,后来慢慢的平静下来,最后甚至开始欣赏雨打在不同材质上的声音,欣赏雨划过每一种颜色的透亮。然后我突然明白,从来不曾有什么屋檐,最美的始终是下雨天。顺便说一下,对于方文山这种30来岁的老男人还能够写出如此单纯的句子,我感到十分开心,想想咱们人才济济的大陆居然“亲爱的你慢慢飞”都能响彻大街小巷,我顿时对台湾的社会氛围刮目相看。
前段时间流行一个签名“我想早恋,可是已经晚了”。看到的时候,我和众多人一样报之一笑,再之后我认真想过这句话。我们怀念的不是早恋,而是为了爱情冲破禁忌的激情和勇气。以前总是听说大学里的爱情有多单纯,当时不相信,毕业了才知道。当爱情被作为一件华丽的旗袍掩盖在种种利益之上放在台面上讨价还价的时候,你才会知道单车后座上那紧贴背的拥抱是多么的真实。我不否认,我羡慕,甚至嫉妒那些从大学走过来的爱情。
当我们这个年纪的人进入准婚年龄,单纯的”爱情”却已束之高阁。很多实际的问题浮出水面,我并不是排斥这些东西,可是似乎我们走的有点儿远了。参加过很多婚礼,每场婚礼上都会有誓词:“无论贫穷、疾病巴拉巴拉……,我都愿意和你在一起”。可真正包含泪水说出誓言的并不多。陆川在参加完刘烨婚礼时说,西式的婚礼和葬礼都能让人思考很多,关于生命、关于意义,而中式的就是图个热闹。当我们什么都想要,硬把西式婚礼加入仪式时,并没有看到人家精华的东西,而是照虎画猫的学了个形式。当誓言都只是一个过场,我们还能把什么当真。
前几天去民政局开未婚证明,有一个窗口没人,我屁颠屁颠的跑过去办。那位大叔悠闲的看着报纸,但是又聚精会神,我叫了两声才会过头来。我说,师傅我要开一个未婚证明,他随口即问,结婚了没。我一时被问傻了……要是结婚了,我开个P的未婚证明啊。然后他递给我一张单子说,填好了隔壁办。当我填好单子后,隔壁的女士很热情的招呼我,小伙子过来这边办。我还纳闷儿为啥服务态度这么好,她随即接着说,他那难得今天清闲,让他休息一下吧,平时忙得不行。我这才仔细看了他的窗口,有一个其实很显眼的牌子上写着”离婚手续办理”。我顿时就乐了,听说过结婚排不上号的,原来离婚也得排队啊。而与他一桌之隔的是”结婚手续办理”。临走时又看了一眼那位大叔,作为一个纳税人,能养这样一个闲人,也未尝不好。
虽然爱情是不分阶级的,但是我如今真有“Too poor to love”的感觉。我不排斥也不反对物质的享受,可是如果物质消费是为了填补内心缺乏的安全感、存在感、关注感,那你将把自己活生生变成一个黑洞。我一直很赞同孔子“素其位”的说法,素富贵、行乎富贵。前几天还和朋友说,有钱了也不能买宝马,会被当成为富不仁的暴发户。当然我承认对于马啊、驴啊我还处于意淫阶段。西方社会有宗教可以帮助人们解决、至少缓解内心和外界的冲突,他们富余的精神活动也并不简单是建立在高度发达的物质基础上。中国没有大范围的宗教信仰,所以解决内心与外界的关系是个很复杂的问题。早期蔡元培校长提出过”美育代替宗教”的救赎思想,如今考艺术的很多是为了成名,而有些则是肚子里没什么墨水,写不出什么字。记得有哲学家说过,爱情说穿了是一种信仰——相信,相信他/她是爱你的,相信你们终会在一起。而如今爱情更像是一场囚徒困境的博弈。
不过,倘若你敢牵我的手,我还是敢拉着你一直走到坟墓。
六、社会
有些事情,明白了是很可怕的。比如对于这个社会的理解,其实从古至今人性变化不大,在我有生之年也不会有重大转折。所以我想是时候停止去独善其身了,没有书生一个国家照样发展。以前我相信文字、图片虽然不能改变世界,但是能改变人们对世界的看法。现在我不这么觉得了,人不经历刻骨铭心的痛就不会反思,欧洲悲剧的意义正在于此。而在这片土地上,有一个很有意思的现象。当某个社会事件独立出现时是一场悲剧,而一旦成风就成为了潜规则式的喜剧。前段时间老郭被封杀我就想,以前翻墙看到的都是悲剧,以后翻墙终于有可能看到喜剧了。
我们从小就学习很多规则,长大以后会发现,越是剑走偏锋越容易成事。规则就像是火锅里的菜,有的人一直告诉你菜好吃,但是他拼命夹肉。我也终于明白当初辞职时老板跟我说的那些束缚着我的东西究竟是什么。我们似乎处于一个突破道德底线无所谓,甚至游走在法律边缘也可以的社会。对于那位西太平洋博士的“宽容”显示的并不是我们民族博大的胸怀,而是极度的功利态度。马云说,一旦你成功了,那你说什么都是对的。他是有智慧的,因为这句话是对这个社会现象较为和谐和华丽的形容。在此问题上韩寒是很识时务的,及时把自己的学历从高中改到了初中,大有大势难违之意。
一个愤青变得不愤青其实是一件很“可怕”的事情,因为他知道的太多了……

linux下用rpm安装mysql

下载地址:http://dev.mysql.com/downloads/mysql/5.1.html,打开网址,找到linux generic项,里面找到5.5.25_x86_64版本下载,需下载两个文件:
MySQL-client-5.5.25a-1.linux2.6.x86_64
MySQL-server-5.5.25a-1.linux2.6.x86_64
1、安装server端:
[root@host127 mysql_5.5.25]# rpm -ivh MySQL-server-5.5.25a-1.linux2.6.x86_64.rpm
Preparing… ########################################### [100%]
ls: cannot access /var/lib/mysql/*.err: No such file or directory
ls: cannot access /var/lib/mysql/*.err: No such file or directory
1:MySQL-server ########################################### [100%]
有以上信息显示为数据库安装成功。
测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。
[root@host127 mysql]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:55982 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 248 172.21.48.127:22 172.21.35.203:1930 ESTABLISHED
tcp 0 0 172.21.48.127:22 172.21.35.203:2163 ESTABLISHED
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::35056 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:631 :::* LISTEN
tcp 0 0 :::12865 :::* LISTEN
2、安装client端
[root@host127 mysql_5.5.25]# rpm -ivh MySQL-client-5.5.25a-1.linux2.6.x86_64.rpm
Preparing… ########################################### [100%]
package MySQL-client-5.5.25a-1.linux2.6.x86_64 is already installed
有以上信息,也表示数据库client端安装成功。
3、登陆Mysql
用下面的命令连接mysql,测试是否成功。
登陆Mysql的命令是mysql,mysql的初始管理账号是root,没有密码。
[root@host127 mysql_5.5.25]# mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.5.25a MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
mysql>

linux下安装JDK

1、通过官网下载软件
版本:jdk-6u31-linux-x64-rpm.bin
2、在cd /usr下生成jdk1.6.0_31文件夹,并将软件上传到此文件夹
给jdk-6u31-linux-x64-rpm.bin添加执行权限:chmod +x jdk-6u31-linux-x64-rpm.bin
执行文件:./jdk-6u31-linux-x64-rpm.bin
生成文件:jdk-6u31-linux-amd64.rpm
给jdk-6u31-linux-amd64.rpm添加执行权限:chmod +x jdk-6u31-linux-amd64.rpm
安装jdk-6u31-linux-amd64.rpm,提示安装成功。(默认的安装位置,在/usr/java/下,即/usr/java/jdk1.6.0_31)
3、设置环境变量
#vi /etc/profile
在最后面加入:
JAVA_HOME=/usr/java/jdk1.6.0_31
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME PATH
保存后退出。
4、重启
reboot后,通过java -version查看版本
[root@host127 ~]# java -version
java version “1.6.0_31”
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
表明JDK安装成功。
5、卸载JDK
找到JDK安装目录的_uninst子目录;
在shell终端执行./uninstall.sh即可卸载JDK。

Linux下安装tomcat

Linux下安装tomcat
先从官网下载安装包:apache-tomcat-6.0.32.tar
1、在usr下建文件夹为tomcat6.0.23,将tar文件放入文件夹中。然后进行解压缩:
tar -zxvf apache-tomcat-6.0.32.tar
解压后生成文件夹tomcat-6.0.23
2、设置环境变量
设置两个环境变量CATALINA_HOME和CATALINA_BASE。
vi ~/.bashrc,加入export CATALINA_BASE=/usr/tomcat6.0.23/tomcat-6.0.23
export CATALINA_HOME=/usr/tomcat6.0.23/tomcat-6.0.23
3、保存后重启
查看下是否设置成功:
[root@127]# echo $CATALINA_HOME
/usr/tomcat6.0.23/tomcat-6.0.23
[root@127]# echo $CATALINA_BASE
/usr/tomcat6.0.23/tomcat-6.0.23
4、运行tomcat
[root@127]# cd /usr/tomcat6.0.23/tomcat-6.0.23/bin
在此目录下,执行startup.sh文件
[root@host127 bin]# ./startup.sh
Using CATALINA_BASE: /usr/tomcat6.0.23/tomecat-6.0.32
Using CATALINA_HOME: /usr/tomcat6.0.23/tomecat-6.0.32
Using CATALINA_TMPDIR: /usr/tomcat6.0.23/tomecat-6.0.32/temp
Using JRE_HOME: /usr/java/jdk1.6.0_31
Using CLASSPATH: /usr/tomcat6.0.23/tomecat-6.0.32/bin/bootstrap.jar
5、验证tomcat
登陆http://localhost:8080查看是否可以登陆tomcat的web界面。

再谈如何成为技术领袖

再谈如何成为技术领袖
——技术不是充分条件
被访者:IBM软件集团两岸三地大中华区
总工程师 寇卫东
文/卢鸫翔
要想成为一名优秀的技术领袖,需要具备哪些方面的素质?我在IBM辅导很多年轻同事,如何才能帮助他们在职业生涯中成长为技术领军人物?是否只要拥有了过硬的技术本领,就能成为技术领袖?许多年轻的朋友技术拔尖,然而却觉得没有得到领导的赏识, 这又是什么原因呢?我常常都在思考这些问题。去年这个时候,我同读者朋友们分享了一些心得,我想结合自己多年的高校教育和IT从业经验,再同大家谈谈这一话题。
1.我很清楚地告诉大家,要成为技术领袖,技术是必要条件,但不是充分条件。如果一个人技术基础不够扎实,他几乎等同外行,领导其他技术人员不说没有可能,但至少会相当困难。另一方面我们在国内外都能看到不少拔尖的技术人员,有的是一流的科学家,有的是一流的技术专才,可一旦把他们放在领导岗位上,却都以失败告终。他们虽然技术出色,但是没有当领袖的能力,工作中四处碰壁,缺乏凝聚力,不得人心。
2.要成为技术领袖就要清楚公司的业务,知道技术应当如何配合业务需求。作为技术领袖,只有做到这点,才能使公司业务有大的发展,才会得到高层领导的认同。如果你只懂技术而不懂公司业务,或者你在大学工作而不懂领导教学科研,是没有办法胜任技术领袖的。我们钻研技术的朋友往往忽略了这一点,对某项技术非常专注,但是两耳不闻窗外事,没有把注意力放到公司的发展需求上来。
为了更好地协调个人职业发展与企业业务发展,需要处理好工作的优先级,分清主次。在日常工作当中,我常常为同事画下面这幅图,帮助他们进行分析。
如果有一项工作摆在面前,我们如何定义它的重要性,应该花多少力气去做?我们可以通过象限分析找出答案。第I象限表示此项工作对企业业务发展和个人职业发展都很重要,这是最完美的结合,优先级应该放在最高级。我们在企业中应该多做此类工作。第II象限表示此项工作对企业业务非常重要,但是对个人目前的职业发展看似并不特别重要。我们要以企业的利益为重,所以优先级应该放在第二位。第III象限表示此项工作对个人职业发展很重要,但是对企业业务发展不那么重要,我们应该把它放在第三位。第IV象限表示此项工作对企业业务发展和个人职业发展都不重要,优先级应该是最低的。对这类工作,自己最好不做或者少做;就是做,也应该尽可能少花时间去做;或是请其他同事去做,因为对你的个人职业发展不重要的工作不等于对其他同事的个人职业发展也不重要,换言之,此项工作可能对其他同事的个人职业发展很重要呢。
许多企业都在创造一种文化,希望能将企业业务发展和员工的个人职业发展紧密结合起来,尽管有时候很难兼顾。作为一名领袖人物,他一定更多地在关注大局,而不是仅仅看到自己。关注大局的人会处处从公司的业务、公司的需求出发。在实际工作中我们常常可以看到,一个真正把大局放在第一位的人,即便今天不是领袖,明天也一定非他莫属。现在的领导不欣赏,将来必会为其他领导所赏识。
3.一个能把握大局的人需要具备很多能力,其中非常重要的一项就是我下面要谈到的第三点——决策力。作为技术领袖,要有坚强的领导能力,敢于面对各种困难的挑战,敢于决断。有些人天生就有准确的决策能力,而更多人需要靠后天来培养。
在我的孩子还小的时候,我就给他灌输这种思想,培养锻炼他。如果他要问我,我就让他自己做决定,不论决定是对是错、是好是坏,在我看来都是正确的。因为最大的错误是该做决定时你举棋不定。再举一个例子,美国前总统布什刚刚上任的时候,很多人批评他没有总统的风范,但是经过几年的洗礼他的确拥有了总统的气质。原因又是什么呢?因为那个职位训练了他,很多情况他必须要做出决策。
对于程序员来说,虽然无法像领导那样做重大的决定,但仍然可以在自己的范围内做出决策。例如使用什么样的技术手段, 采用何种算法实现, 选择哪种数据结构,如何撰写文档,同谁一起合作,这些并不一定非要等老板或者构架师来判断。大家应该有意识地锻炼自己,慢慢成长,直到将来能够领导大的项目。每个人不可能一开始就能对一个完整的系统做出决策,可是如果不从当程序员的时候就开始锻炼自己,将来也做不了。
面对决策失败可能带来的后果,我们应该学会坦然面对,学会承担。如果不去做决策,不愿承担责任,就永远无法取得进步,无法获得做技术领袖的能力。
4.要想成为技术领袖必须有远见,有智慧。有远见有智慧的人才能有承担。我有一个在加拿大的同事,开始的时候只是一般的技术人员,很短的时间内就变成经理,再后来没有经过多长时间又被提升为主管。原因很简单:他有远见,并且有足够的智慧知道应该如何去做。像他这样的员工虽然刚开始的职位很低,但是公司领导觉得这样的人才对公司将来的发展大有帮助,另外,如果这样的员工离职,不但是公司的损失,还会助长竞争对手的实力。所以公司一旦有职位就会提升这样的员工。我们作为技术人员也是一样的道理,面对一套大的系统方案,只有穿透障碍看到未来,才有机会获得提升,成为技术领袖。
5.成为技术领袖需要自信、自觉和自律。自信,这和领导能力有关,没自信怎么来领导别人呢?自觉包含两个方面的内容:自我感知和自我解嘲。自我感知是要对自己有一个正确的评价,“人贵有自知之明”——我们老祖宗都这样讲。有些人不知道自己的情况,要么估计过低,要么估计过高,对自己没有一个公正的评价。很多事情要靠下意识的感觉,你可能并不知道具体发生了什么事情,但是凭感觉就能判断出对错。自嘲是能给自己台阶下,这很重要,往往很多人都做不到,一不小心就陷入骑虎难下的境地。另外对自己有一个正确的评价,才不会弄得自己下不来台。
自律就是要约束自己,保持良好的品行。自律不是做给别人看,也不是做给领导看,而是为自己而做。每个人心中都应该有把标尺,衡量什么事情该做,什么事情不该做。自律很关键,年轻人尤其应该加以重视。有好的人品才会得到大家信任,如果不自律,没有良好的品行,有谁会对他心悦诚服,又怎样来做大家的榜样呢?
6.勇于承担,敢于付出。也就是说一个人的工作既不是为了金钱,也不是为了名誉,单单只是为了实现自己人生的价值,获得成功。自己驱动自己,不畏艰难险阻,不达目的誓不罢休。不愿意承担,不愿意付出,处处计较得失的人是没有办法成为领袖的。
这里所说的成功,并非单纯的职位上的成功,还包括技术上的成功,做人的成功等。其中做人的成功最重要,往往却被最多的人所忽视。职位只不过是领导给的一个头衔,技术领袖所具有的影响力并不是单单靠领导所给的头衔就能获得的。不管大公司小公司,很重要的一点就是先做人。我认为衡量一个人是否成功,首先看做人,然后看技术,最后才是职位、名誉、金钱。而且往往人和技术做好了,金钱名誉就会随之而来。正如诺贝尔奖得主们无一人不是勤勤恳恳做事,假使一开始就想着名誉、奖金,或许他们永远都无法取得举世瞩目的成就。
成功是一个很宽泛的概念,如何衡量成功是因人而异的。一般来说,成功是一个正态分布的频谱,不是一个单脉冲。有些人拥有很高的职位、很丰厚的收入,但却没有家庭、没有生活,因为他们把所有心思都放在了工作上,最终获得了事业上的成功,一个脉冲式的成功。相对他们的度量标准来说是成功了,然而对另一些人来说,他们并不成功、或者不值得效仿。因为事业成功只是一方面,除了工作,我们还有生活,还有家庭的维系、子女的教育、八小时后的个人爱好。一个和谐的成功是一个频谱式的成功:也许没有哪一方面是特别突出的,但是有几个方面是相当好的,其他方面也还可以,这样综合来看是最好的。
7.能领会别人的感觉和想法,会与他人相处。一个拥有领袖潜质的人,往往能够很快感知周围的氛围,别人的感受,他能够通过简单的语言、位置调整,使大家轻松舒服地投入工作。
8.能把大家团结起来,人气旺。很多时候,某个人并不是领导,但是大家都愿意听他的话,成了无冕之王,这样的人即便现在不是,将来也必然会成为领袖,这只是时间的问题。
读者朋友们大多都是技术人员,但是大家不要被技术所束缚。我年轻的时候也走过弯路,希望这些心得体会能对年轻的朋友们有所帮助。成为技术领袖并非遥不可及,只需要比别人多付出一点坚定和执著,多注重先做人后做事。
http://www.programmer.com.cn/1127/

Top5 things the cloud is not

It’s clear that the technology industry is moving from the PC era to the cloud era in several significant ways. While cloud represents a new way for IT to deliver — and end users to consume — IT applications and services, this transition also represents a significant change in how applications, services and systems are defined. The move to cloud computing is the most important technology disruption since the transition from mainframe to client-server, or even since Al Gore invented the internet. While industry veterans like Oracle’s commander in chief declared it a fad, this is a decade-long trend that is here to stay, and one that will define the next generation of IT.
The movement itself has been in play for the last decade, however there continues to be a lot of (mis)information in the marketplace about the cloud. So much so that it is difficult for organizations to figure out what is real and what is not to help them develop a successful cloud strategy, or simply learn about technologies that have been specifically designed and purpose-built to meet this dramatic shift in technology. While it’s important to know what the cloud is, it’s just as important to separate the wheat from the chaff, and for IT to understand what cloud is not.
To this end, I encourage you not to add yet another definition of the cloud to your glossary, but to truly understand the top 5 things the cloud is not.
1. Cloud is not a place. People often talk about moving to the cloud as if they were moving to another city. But the cloud is not a place. In fact, the cloud can be anywhere, in your data center or someone else’s. Organizations that believe they are moving to a strategy that leaves legacy apps and systems behind are in for a rude awakening. The single most important way for enterprise organizations to prepare themselves for the cloud is to understand that the cloud is a radically new way of delivering, consuming and adopting IT services in a far more agile, efficient, and cost-effective manner, which will spread throughout the ether and be a mix of public, private, managed or hybrid clouds. By looking holistically at the cloud, organizations can optimize its benefits for their budgets, privacy needs, geographies and overall business needs.
2. Cloud is not server virtualization. Despite what many believe, and what many will tell you, the cloud is not the same as next-gen server virtualization. It doesn’t surprise me that many believe that by virtualizing their data center they will create a private cloud. Some vendors are intentionally trying to blur that line, aiming to convince customers that their vCenter clusters somehow deliver a private cloud. On the contrary, that is a gross exaggeration of the term cloud.
If you take a look at the way Amazon has built its cloud architecture, it becomes very clear that there are some fairly stark differences between a server virtualization environment and a true cloud architecture. While Amazon starts with Xen virtualization technology, the brains of its architecture comes with a new layer of software that Amazon built in an effort to create a new control plane, a new cloud orchestration layer that can manage all the infrastructure resources (compute, storage, networking) across all of their data centers. This is at the heart of the cloud’s technology disruption. Some analysts refer to this as the “hypervisor of hypervisors,” or a “new software category of cloud system software.”
The fact of the matter is that some of the major players are doing cloud without server virtualization. Take Google for example. They have deployed a cloud architecture that is not using server virtualization, but rather a bare metal infrastructure. So while virtualization can be an important ingredient of cloud, it is not always a requirement.
3. Cloud is not an island. Depending on what you’re reading, you’ll hear a lot about public clouds versus private clouds, and it may feel as if enterprises must make a wholesale decision on which way to go. But the cloud is not an island, it is not a place where you put all of your IT services, and then lose all interconnectivity and access. The recent Amazon outages have proven this to be an important point for any organization leveraging the cloud. The right cloud strategy will be one that enables you to have a hybrid approach with the ability to easily connect private and public clouds. Even the recent move by NASA to include Amazon Web Services as part of its cloud rollout after a significant investment in the build-out of its own technology proves that the market is moving to open, interoperable multi-cloud environments.
4. Cloud is not top-down. The cloud has up-ended the traditional IT approach to delivering services. The lines of business have been leading the charge in making the decision to move to cloud computing. With specific needs to get to market quickly, functional business leaders are consuming cloud services to avoid traditional IT processes. But we don’t need surveys to clarify this movement. The reality is that with the simple swipe of a credit card and the creation of an account, end users can gain instant access to infinite pools of IT resource to help test out a new idea, get their job done or even become more agile in their daily work. This is part of why this revolution is so powerful. The Consumerization of IT is driving this new movement. Users are already there and the C-level offices are just now trying to catch up with them. Those that embrace this move sooner rather than later will learn how to use the cloud as a strategic weapon before their competitors do. So the cloud is not top down, but rather a bottoms-up phenomenon.
5. Cloud is not hype. As I started this piece, I wrote about the (mis)information that has flooded the market and slowed progression and adoption of the cloud for some organizations. I’ve spoken with people in many organizations who are still skeptical of the cloud and believe that it is something that is very far off into the future. No doubt there is a lot of noise in the market with many claiming early victory in the hearts and minds of developers, with open source momentum, or beta products. The reality is that the cloud is ready now, and Citrix has more than 100 organizations that are running clouds in production today. Companies like AutoDesk, Edmunds.com, Nokia, Chatham Financial and others, already reaping the benefits.
My words of advice to companies considering a move to the cloud – learn from others who have already built highly scalable, successful clouds that have helped them transform the way they deliver and consume IT resources.
This is just the beginning of the discussion. There are many more topics that we will continue to talk about in the coming weeks, months, years (such as, cloud is not only an infrastructure and cloud is not just for service providers). All with the goal of helping organizations and the market understand what the cloud is and what it is not.
 
http://www.wired.com/cloudline/2012/06/top-5-things-the-cloud-is-not/