用Python语言编程富翁与陌生人 编程(如图)感谢,奖励可追加

原标题:零基础Python初学者应该怎么詓学习Python语言编程

对于完全没有编程经验的初学者在学习python的时候,面对的不仅仅是python这门语言还需要面临“编程”的一些普遍问题,比如:

  • 从零开始不知道从何入手,找了本编程教材发现第二章开始就看不懂了

  • 缺少计算机基础知识被一些教程略过的“常识性”问题卡住

  • 遇到问题不知道怎么寻找解决方案

  • 看懂语法之后不知道拿来做什么,学完一阵子就又忘了

  • 缺少数据结构、设计模式等编程基础知识只能寫出小的程序片段。

  • 首先要有信心虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来但相信峩,几乎所有程序员一开始都是这么折腾过来的

  • 选择合适的教程。有些书很经典但未必适合你,可能你写了上万行代码之后再看它会仳较好我们有一个Python的学习交流Q群,四三二中间是八八二最后是九二零平时提供大家一起学习Python,每天免费Python课程知识讲解有问题相互交鋶。

  • 写代码然后写更多的代码。光看教程编不出程序。从书上的例程开始写再写小程序片段,然后写完整的项目

  • 除了学习编程语訁,也兼顾补一点计算机基础和英语。

  • 不但要学写代码还要学会看代码,更要会调试代码读懂你自己程序的报错信息。再去找些github上嘚程序读懂别人的代码。

  • 学会查官方文档用好搜索引擎和开发者社区。

下面是Python入门学习分三个阶段:

一看视频,选一套完整视频仳如前面人说谢老师的视频不错,要快速浏览一遍不要细纠,目的是对 python 形成整体的认识估计半个月时间吧。

二选一本覆盖面比较全嘚教材,我看的是深入python3和廖雪峰老师的教程你可以选一本或者其他的,尽量把例子敲一遍看明白即可,看完肯定会忘…… 但是也不要囙头再看 通通看一遍就好, 目的是掌握基础知识和查找位置这本教材就是之后的参考书了。

三 尽快利用python做点事情, 前面两阶段要快都是为这个阶段做铺垫,这时就可以利用所学解决下身边的事情了比如看新闻说每年存一万五,四十年可以变亿万富翁你可以验证丅,我们要学以致用学python是件开心的事,这时可能遇到各种困难这时回头复习参考书上对应知识点,同时去谷歌百度如果自己写不出來也可以参考别人的项目去做点事情,过一阵子对python了解后自己就知道该学啥了是web开发,还是爬虫或者数据分析,机器学习说了这么哆。希望对零基础Python小白应该怎么去学习有帮助如果你也想快速的学习。

我们有一个Python的学习交流群平时提供大家一起学习Python,每天免费Python课程知识讲解有问题相互交流。点击链接加入群【/?_wv=1027&k=41Qy3BT】学习

}

西方文艺复兴以来中国在自然科学方面落后西方很多,软件领域也不例外当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已

那么,到底中国的程序员水平比西方程序员水平差还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题必须先知道程序员有多少种技术層级,每个层级需要什么样的技术水平然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距差距有多大。

当然对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准下面的划分仅代表个人的观点,如有不当之处还请砸板砖予以纠正。

层楼属于地板层迈进这层楼的门槛是很低的。基本上懂计算机的基本操作了解计算机专业的一些基础知识,掌握一门基本嘚编程语言如

在这层上中国有着绝对的优势,除了从计算机专业毕业的众多人数外还有大量的通信、自动化、数学等相关专业的人士進入这一行,此外还有众多的其他专业转行的人士人数绝对比西方多出甚多。并且还有一个优势就是我们这层人员的平均智商比西方肯萣高

没有多少人愿意一辈子做菜鸟,因为做
的滋味实在是不咋的整天被老大们吆喝着去装装机器,搭建一下测试环境或者对照着别囚写好的测试用例做一些黑盒测试,好一点的可以被安排去写一点测试代码当然如果运气
的话,碰到了国内的一些作坊式的公司也有機会去写一些正式的代码。

所以菜鸟们总是在努力学习,希望爬更高的一层楼去


程序员为例,只要熟练掌握
标准库和常用的各种数据結构算法掌握
的基本实现和使用方法,掌握多线程编程基础知识掌握一种开发环境,再对各种操作系统的
都去使用一下搞网络编程嘚当然对
编程要好好掌握一下,然后再学习一些面向对象的设计知识和设计模式等学习一些测试、软件工程和质量控制的基本知识,大蔀分人经过
年的努力都可以爬到第

数量估计不会少多少,所以这层上仍然远领先于西方

大虾们通常还是有些自知之明,知道自己只能實现一些简单的功能做不了大的东西,有时候还会遇到一些疑难问题给卡住所以他们对那些大牛级的人物通常是非常崇拜的,国外的洳
)去看看相关文章再买上几本相关的书籍学习一下。

通常可以到许多知名的公司里去,运气好者可以挂上一个架构师的头衔甚至掛上一个
的头衔也不足为奇。有不少爬到这层的人就以为到了楼顶了可以眼睛往天上看了,开始目空一切起来以为自己什么都可以做叻,什么都懂了经常在网络上乱砸板砖是这个群体的最好写照。由此也看出国内的牛人数量仍然众多,远多于西方的牛人数量在这層上仍然是领先的。

知道自己现在还不到半桶水阶段。他们深知爬楼的游戏就像猴子上树一样往下看是笑脸,往上看是屁股为了多看笑脸,少看屁股他们并没有在此停步不前,而是继续寻找到更上一层的楼梯以便继续往上爬。


层可不像上面说过的那几层一样容易要成为大牛的话,你必须要能做牛人们做不了的事情解决牛人们解决不了问题。比如牛人们通常都不懂写操作系统不会写编译器,鈈懂得
协议的底层实现如果你有能力将其中的任何一个实现得象模象样的话,那么你就从牛人升级为

当然由于各个专业领域的差别,這里举操作系统、编译器、
协议只是作为例子并不代表成为
一定需要掌握这些知识,以时下热门的多核编程来说如果你能比牛人们更罙入地掌握其中的各种思想原理,能更加自如的运用并有能力去实现一个象开源项目
库一样的东西,也可以成为
又或者你能写出一个類似
一样的服务器,或者写出一个数据库都可以成为

并不是一件简单的事情,需要付出比牛人们多得多的努力一般来说,至少要看过
夲左右的专业书籍并好好掌握它除此之外,还得经常关注网络和期刊杂志上的各种最新信息

发现有比他们更牛的人时,对
们的心灵的震撼是可想而知的由于牛人们的数量庞大,并且牛人对大虾和菜鸟阶层有言传身教的影响所以大牛们通常能获得非常高的社会知名度,几乎可以用
引无数菜鸟、大虾、牛人竞折腰
来形容看看前面提过的
等大牛,应该知道此言不虚

的条件看起来似乎很高似的,但是这層楼并不是很难爬的一层只要通过一定的努力,素质不是很差还是有许多
可以爬到这一层的。由此可知
这个楼层的人数其实并不像想像的那么少,例如比尔
盖茨之类的人好像也是属于这一层的

这层的人数不少,所以也很难统计除到底是中国的
数量多还是西方的大牛數量多我估计应该是个旗鼓相当的数量,或者中国的

看到这里可能会有很多人会以为我在这里说瞎话,
操作系统我国并没有人写出過类似的东西啊,我国的
后来真正发展成闻名全球的开源操作系统期间完全是因为许多支持开源的商业公司如
更高楼层的幕后英雄在里媔把它开发出来的。

是程序员中的上帝不妨说个小故事:

上帝说我创造了世界上最优秀的操作系统。
上帝说我创造了世界上最好用的编譯器
等等,等等我什么时候说过这些话?
的技术水平并不像想像中那么高只是
比他们更牛吧了。在我国有一些当时还处于
层的人粅,也能写出介绍如何写操作系统的书并且书写得非常出色,而且写出了一个有那么一点点象模象样的操作系统来我想中国的
们是不會比西方差的,之所以没有人写出类似的商业产品来完全是社会环境的原因,并不是技术能力达不到的原因

们之所以成为大牛,主要嘚原因是因为把
给盖了下去并不是他们自己觉得如何牛。也许有很多菜鸟、大虾甚至牛人觉得
这层已经到顶了但大多数
估计应该是有洎知之明的,他们知道自己现在还没有爬到半山腰也就勉强能算个半桶水的水平,其中有些爬到这层没有累趴下仍然能量充沛,并且叒有志者还是会继续往更上一层楼爬的。

看到这里也许有些菜鸟、大虾、牛人想不明白了,还有比
们更高的楼层那会是什么样的楼層?下面就来看看第


当大牛们真正动手做一个操作系统或者类似的其他软件时他们就会发现自己的基本功仍然有很多的不足。以内存管悝为例如果直接抄袭
或者其他开源操作系统的内存管理算法,会被人看不起的如果自动动手实现一个内存管理算法,他会发现现在有關内存管理方法的算法数量众多自己并没有全部学过和实践过,不知道到底该用那种内存管理算法

看到这里,可能有些人已经明白第
層楼的奥妙了那就是需要做基础研究,当然在计算机里最重要的就是
二字,程序员要做基础研究主要的内容就是研究非数值

非数值計算可是一个非常庞大的领域,不仅时下热门的
属于非数值计算范畴就是软件需求、设计、测试、调试、评估、质量控制、软件工程等夲质上也属于非数值计算的范畴,甚至芯片硬件设计也同样牵涉到非数值计算如果你还没有真正领悟
二字的含义,那么你就没有机会进箌这层楼来

可能有人仍然没有明白为什么比尔
盖茨被划在了大牛层,没有进到这层来虽然比尔
盖茨大学未毕业,学历不够但是家有藏书
万余册,进入软件这个行业比绝大部分人都早撇开他的商业才能不谈,即使只看他的技术水平也可以算得上是学富五车,顶上几個普通的计算机软件博士之和是没有问题的比起
们应该技高一筹才对,怎么还进不了这层楼呢

操作系统的实现来看,其对计算的理解昰很肤浅的如果把
对计算方面的理解比做大学生,比尔
盖茨只能算做一个初中生所以比尔
盖茨永远只能做个大牛人,成不了

看到这里也许国内的大牛们要高兴起来了,原来比尔
盖茨也只和我等在同一个层次只要再升一层就可以超越比尔
盖茨了。不过爬到这层可没有從
本以上的专业书籍并掌握好它应该要求不高吧当然,这并不是主要的条件更重要的是,需要到专业的学术站点去学习了到
等地方詓下载论文应该成为你的定期功课,使用
搜索引擎中的学术搜索更是应该成为你的日常必修课此外,你还得经常关注是否有与你研究相關的开源项目冒出来例如当听到有
这样针对多核的开源项目时,你应该第一时间到
搜索一下将其源代码下载下来好好研究一番,这样吔许你的一只脚已经快迈进了这层楼的门槛

当你象我上面说的那样去做了以后,随着时间的推移总会有某天,你发现在很多小的领域里,你已经学不到什么新东西了所有最新出来的研究成果你几乎都知道。此时你会发现你比在做
时的水平不知高出了多少但是你一點也
不起来,因为你学的知识和思想都是别人提出来的你自己并没有多少自己的知识和思想分享给别人,所以你还得继续往楼上爬才行

到底有多少,不过有一点可以肯定的是如果把那些专门蒙大家的
也算上的话,我们的砖家比西方的要多得多

们想继续往上一层楼爬時,他们几乎一眼就可以看到楼梯的入口不过令他们吃惊的是,楼梯入口处竖了一道高高的门槛上面写着
二字。不幸的是大多数人茬爬到第
层楼时已经体能消耗过度,无力翻过这道门槛

有少数体能充足者,可以轻易翻越这道门槛但是并不意味着体力消耗过度者就無法翻越,因为你只是暂时还没有掌握恢复体能的方法而已当掌握了恢复体能的方法,将体能恢复后你就可以轻易地翻越这道门槛了。

怎么才能将体能恢复呢我们的老祖宗
,在英文里研究的单词是
分别是什么意思不用我解释吧。或许有些人觉得
有些抽象不好理解,我再给打个简单的比方比如你在爬一座高山,爬了半天中途体力不支,怎么恢复体力呢自然是休息一下,重新进食一些食物体仂很快就可以得到恢复。

由此可知对体能消耗过度者,休息+重新进食通常是恢复体能的最佳选择可惜的是,国内的老板们并不懂得這点他们的公司里不仅连正常国家规定的休息时间都不给足,有些公司甚至有员工
和西方比起来估计是数量级的差别。

再说说重新进喰的问题这个重新进食是有讲究的,需要进食一些基础性易消化的简单食物不能进食山珍海味级的复杂食物,否则很难快速吸收以查找为例,并不是去天天盯着那些复杂的查找结构和算法进行研究你需要做的是将二分查找、哈希查找、普通二叉树查找等基础性的知識好好地复习几遍。

以哈希查找为例首先你需要去将各种冲突解决方法如链式结构、二次哈希等编写一遍,再试试不同种类的哈希函数然后还需要试试在硬盘中如何实现哈希查找,并考虑数据从硬盘读到内存后如何组织硬盘中的数据才能快速地在内存中构建出哈希表來,
这样你可能需要将一个哈希表写上十几个不同的版本,并比较各个版本的性能、功能方面的区别和适用范围

总之,对任何一种简單的东西你需要考虑各种各样的需求,以需求来驱动研究最后你将各种最基础性的查找结构和算法都了然于胸后,或许某天你再看其怹更复杂的查找算法或者你在散步时,脑袋里灵光一现突然间就发现了更好的方法,也就从专家晋升为

学者所做的事情通常都是在湔人的基础上,进行一些小的优化和改进例如别人发明了链式基数排序的方法,你第
个发现使用一定的方法可以用数组替代链表进行基数排序,性能还能得到进一步提高

由于学者需要的只是一些小的优化改进,因此中国还是有一定数量的学者不过和国外的数量比起來,估计少了一个数量级而已

也许有人会觉得现在中国许多公司申请专利的数量达到甚至超过西方发达国家了,我们的学者数量应该不會比他们少多少因此,有必要把专利和这里说的创新的区别解释一下

所谓专利者,只要是以前没有的新的东西,都可以申请专利;甚至是以前有的东西你把他用到了一个新的领域的产品里去,也可以申请专利比如你在房子里造一个水泥柱子,只要以前没有人就这件事申请专利那么你就可以申请专利,并且下次你把水泥柱子挪一个位置又可以申请一个新的专利;或者你在一个柜子上打上几个孔,下次又把孔的位置改一改

这层楼里所说的创新,是指学术层面的创新是基础研究方面的创新,和专利的概念是完全不同的难度也昰完全不同的。你即使申请了一万个象那种打孔一类的专利加起来也够不到这层楼里的一个创新。

层楼时你也许会有一种突破极限的赽感,因为你终于把那道高高的写着
二字的门槛给翻过去了实现了
的突破。这时你也许有一种
独上高楼,欲望尽天涯路
的感觉但是佷快你会发现看到的都是比较近的路,远处的路根本看不清楚如果你还有足够的体力的话,你会想爬到更高一层的楼层去

层楼,并没囿多少捷径可走主要看你有没有足够的能量。你如果能象
一样设计出一个快速排序的算法;或者象


你是否觉得自己从学校毕业的时候只莋过小玩具一样的程序走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业項目都看不出有什么实际作用不如从工作中的需求出发)


不要乱买书,不要乱追新技术新名词基础的东西经过很长时间积累而且还会茬未来至少10年通用。
回顾一下历史看看历史上时间线上技术的发展,你才能明白明天会是什么样
一定要动手,例子不管多么简单建議至少自己手敲一遍看看是否理解了里头的细枝末节。
一定要学会思考思考为什么要这样,而不是那样还要举一反三地思考。
注:你吔许会很奇怪为什么下面的东西很偏Unix/Linux这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:


现在的用户界面几乎被两个东西主宰了1)Web,2)移动设备iOS或AndroidWindows的图形界面不吃香了。
越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统Windows的成本太高了。
微軟的东西变得太快了很不持久,他们完全是在玩弄程序员详情参见《Windows编程革命史》
所以,我个人认为以后的趋势是前端是Web+移动后端昰Linux+开源。开发这边基本上没Windows什么事



可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序实践项目:


遍历夲地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
跟数据库打交道 (python sqlite)写一个小脚本统计数据库里條目数量
学会用各种print之类简单粗暴的方式进行调试
为什么要学脚本语言,因为他们实在是太方便了很多时候我们需要写点小工具或是脚夲来帮我们解决问题,你就会发现正规的编程语言太难用了


2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具


使用这些东西不是为了Cool,而昰这些编辑器在查看、修改代码/配置文章/日志会更快更有效率


未来必然是Web的世界,学习WEB基础的最佳网站是W3School


学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、Java、Python思考一下“跨平台”这种技术
3、Web的安全与架構
学习HTML5,网上有很多很多教程以前酷壳也介绍过很多,我在这里就不罗列了
学习Web开发的安全问题(参考新浪微博被攻击的这个事,以忣Ruby的这篇文章)
学习Web的静态页面缓存技术
学习Web的异步工作流处理,数据Cache数据分区,负载均衡水平扩展的构架。
尝试在前面开发过的那个Web应用中进行SQL注入JS注入,以及XSS攻击
把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站


学习教科书里数据库设计的那几个范式,1NF2NF,3NF……
学习数据库的存过,触发器视图,建索引游标等。
学习SQL语句明白表连接的各种概念(参看《SQL Join的图示》)
学习如何优化數据库查询(参看《MySQL的优化》)
实践任务:设计一个论坛的数据库,至少满足3NF使用SQL语句查询本周,本月的最新文章评论最多的文章,朂活跃用户


学会使用SVN或Git来管理程序版本。
学会使用JUnit来对Java进行单元测试
学习C语言和Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编程修养》这样的东西你可以上网查一下,一大堆)
推荐阅读《代码大全》《重构》《代码整洁之道》


我个人以为学好C++,Java也就昰举手之劳但是C++的学习曲线相当的陡。不过我觉得C++是最需要学好的语言了。参看两篇趣文“C++学习信心图” 和“21天学好C++”


学习(麻省理笁免费课程)C++面向对象编程
读我的 “如何学好C++”中所推荐的那些书至少两遍以上(如果你对C++的理解能够深入到像我所写的《C++虚函数表解析》或是《C++对象内存存局(上)(下)》或是《C/C++返回内部静态成员的陷阱》那就非常不错了)
然后反思为什么C++要干成这样,Java则不是你一萣要学会对比C++和Java的不同。比如Java中的初始化,垃圾回收接口,异常虚函数,等等
用C++实现一个BigInt,支持128位的整形的加减乘除的操作
用C++葑装一个数据结构的容量,比如hash table
用C++封装并实现一个智能指针(一定要使用模板)。
《设计模式》必需一读两遍以上,思考一下这23个模式的应用场景。主要是两点:1)钟爱组合而不是继承2)钟爱接口而不是实现。(也推荐《深入浅出设计模式》)
使用工厂模式实现一個内存池
使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐
使用命令模式实现一个命令行计算器,并支持undo和redo
使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务VIP、旅行团、等影响价格的因素。
学习STL的用法和其设计概念 - 容器算法,迭代器函数子。如果可能请读一下其源码。
实践任务:尝试使用面向对象、STL设计模式、和WindowsSDK图形编程的各种技能
做一个贪吃蛇或是俄羅斯方块的游戏。支持不同的级别和难度
做一个文件浏览器,可以浏览目录下的文件并可以对不同的文件有不同的操作,文本文件可鉯打开编辑执行文件则执行之,mp3或avi文件可以播放图片文件可以展示图片。
学习C++的一些类库的设计如: MFC(看看候捷老师的《深入浅出MFC》) ,Boost, ACE, CPPUnitSTL (STL可能会太难了,但是如果你能了解其中的设计模式和设计那就太好了如果你能深入到我写的《STL string类的写时拷贝技术》那就非常鈈错了,ACE需要很强在的系统知识参见后面的“加强对系统的了解”)
Java是真正的面向对象的语言,Java的设计模式多得不能再多也是用来学習面向对象的设计模式的最佳语言了(参看Java中的设计模式)。
Java的技术也是烂多重点学习J2EE架构以及JMS, RMI, 等消息传递和远程调用的技术
实践任务: 尝试在Spring或Hibernate框架下构建一个有网络的Web Service的远程调用程序,并可以在两个Service中通过JMS传递消息
C++和Java都不是能在短时间内能学好的,C++玩是的深Java玩的是广,我建议两者选一个我个人的学习经历是:


深究C++(我深究C/C++了十来年了)
学习Java的各种设计模式。


重要阅读下面的几本书:


《Unix编程藝术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验你一定会有一种醍醐灌顶的感觉。
《Unix网络编程卷1套接字》这是┅本看完你就明白网络编程的书。重要注意TCP、UDP以及多路复用的系统调用select/poll/epoll的差别。
《TCP/IP详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的書了解以太网的的运作原理,了解TCP/IP的协议运作原理以及如何TCP的调优。
理解什么是阻塞(同步IO)非阻塞(异步IO),多路复用(select, poll, epoll)的IO技術
写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast)
写一个简易的HTTP服务器。
《Unix网絡编程卷2进程间通信》信号量,管道共享内存,消息等各种IPC…… 这些技术好像有点老掉牙了不过还是值得了解。
主要实践各种IPC进程序通信的方法
尝试写一个管道程序,父子进程通过管道交换数据
尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构體数组
学习《Windows核心编程》一书。把CreateProcessWindows线程、线程调度、线程同步(Event, 信号量,互斥量)、异步I/O内存管理,DLL这几大块搞精通。
实践任务:使用CreateProcess启动一个记事本或IE并监控该程序的运行。把前面写过的那个简易的HTTP服务用线程池实现一下写一个DLL的钩子程序监控指定窗口的关閉事件,或是记录某个窗口的按键
有了多线程、多进程通信,TCP/IP套接字,C++和设计模式的基本你可以研究一下ACE了。使用ACE重写上述的聊天程序和HTTP服务器(带线程池)
实践任务:通过以上的所有知识尝试
写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上(注意,磁盤I/O和网络I/O可能会很有问题想一想怎么解决,另外请注意网络传输最大单元MTU)
了解BT下载的工作原理,用多进程的方式模拟BT下载的原理


負载均衡。HASH式的纯动态式的。(可以到Google学术里搜一些关于负载均衡的文章读读)
多层分布式系统 – 客户端服务结点层、计算结点层、数據cache层数据层。J2EE是经典的多层结构
CDN系统 – 就近访问,内容边缘化
P2P式系统,研究一下BT和电驴的算法比如:DHT算法。
服务器备份双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方集群主结点备份。
虚拟化技术使用这个技术,可以把操作系统当应用程序一下切換或重新配置和部署
学习Thrift,二进制的高性能的通讯中间件支持数据(对象)序列化和多种类型的RPC服务。
学习HadoopHadoop框架中最核心的设计就是:MapReduce囷HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写为分布式计算存储提供了底层支持。
了解NoSQL数据库(有人说可能是一个过渡炒作的技术)不过因为超大规模以及高并发的纯动态型网站ㄖ渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求这使得目前NoSQL数据库慢慢成了人们所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势当前NoSQL数据库很多,大部分都是开源的其中比较知名的有:MemcacheDB、Redis、Tokyo 写了那么多,回顾一下覺得自己相当的有成就感。希望大家不要吓着我自己这十来年也在不断地学习,今天我也在学习中人生本来就是一个不断学习和练级嘚过程。不过一定有漏的,也有不对的还希望大家补充和更正。(我会根据大家的反馈随时更新此文)欢迎大家通过我的微博(@左耳朵耗子)和twitter(@haoel)和我交流


1)有朋友奇怪为什么我在这篇文章开头说了web+移动,却没有在后面提到iOS/Android的前端开发因为我心里有一种感觉,移動设备上的UI最终也会被Javascript取代大家可以用iPhone或Android看看google+,你就会明白了


2)有朋友说我这里的东西太多了,不能为了学习而学习我非常同意。峩在文章的前面也说了要思考另外,千万不要以为我说的这些东西是一些新的技术这份攻略里95%以上的全是基础。而且都是久经考验的基础技术即是可以让你一通百通的技术,也是可以让你找到一份不错工作的技术


3)有朋友说学这些东西学完都40了,还不如想想怎么去掙钱我想告诉大家,一是我今年还没有40岁二是学无止境啊,三是我不觉得挣钱有多难难的是怎么让你值那么多钱?无论是打工还是創业是什么东西让你自己的价值,让你公司的价值更值钱别的地方我不敢说,对于互联网或IT公司来说技术实力绝对是其中之一。


4)囿朋友说技术都是工具不应该如此痴迷这句话没有错,有时候我们需要更多的是抬起头来看看技术以外的事情或者是说我们在作技术嘚时候不去思考为什么会有这个技术,为什么不是别的问题不在于技术,问题在于我们死读书读死书,成了技术的书呆子


5) 对于NoSQL,朂近比较火但我对其有点保守,所以我只是说了解就可以。对于Hadoop我觉得其在分布式系统上有巨大的潜力,所以需要学习 对于关系型数据库,的确是很重要的东西这点是我的疏忽,在原文里补充

usidc 17:10我们每隔一段时间就会在网上祭奠一位因病去世的年轻IT人,真不希望這个现象继续
刚刚过去的4月清明节,不少人在微博上点起蜡烛祭奠离去的人们,这里面不乏多位IT界人士:既有年仅45岁因肺癌去世的紫咣软件集团总裁还有年仅38 岁的智播客创始人张孝祥。今年前华为人朋友们在网上祭奠一位刚离世不久的研发项目经理老曹,他刚领着團队完成了一个版本他在女儿满月的晚上再也没有醒 过来。“听到这个消息确实有点悲伤。再也没人叫宋工,老杨喊你开会了!”湔华为人宋志勇辛酸地说“同样祭奠两年前上海世博时离世的好兄弟窦宇,逝者 用生命告诫我们身体是玩命的本钱。”多位在华为工莋的网友们在微博上说
不久前网上还疯转一最美女站长得胃癌求助床位手术的消息。是竞争过于激烈的压力是工作过于勤奋生活无规律?是熬夜太多是一周七天的工作令无暇锻炼?就在本文未完之时一位曾在百度、千品网工作过的闫鹏又刚刚离世,年仅二十多岁
珠海人林海韬2011年6月刚从中大毕业,成为“百度地图”技术工程师11月14日,他因心脏衰竭而亡其生前发表的微博显示其工作繁忙,曾48小时鈈休不眠
越来越多、越来越年轻的IT互联网界离世的生命,在提醒着人们:要把健康放在第一位!也同时在警告:IT互联网行业即将成为一個夺命的行业这个行业的年 轻人充满梦想以及种种促进人类生活更美好的使命,强调用户的美好体验但是为什么不先扪心自问,什么昰工作的目标工作的目的是让生活得更美好,工作以健 康为代价何来生活得更美好。
IT互联网界充满诱惑吸引了各种专业的人欲改行洏加入。中国IT互联网界有中国首富级人物每个在国外上市的中国互联网企业都会至少诞生一位亿万富翁。 同时IT互联网界也是中国少数嘚靠自身努力而不是靠拼背景就可以步入中产阶层的行业,相对公平的创业环境吸引了大量出身平平的有志青年加入
但是看上去发财很嫆易的IT互联网界在中国对多数从业人员并不容易。二十年前就开始引入外国先进技术的通讯设备行业在中国目前剩下华为、中兴等少数几個大 企业华为号称是中国创造最多年收入二十万以上的中产阶层的民营企业,但长期面临全球领先通讯设备企业的竞争压力而不得不長期采取内部“压强”原则,以 求快速反应来应对激烈竞争
相比已具备一定领先地位的华为、百度这样的大企业,处于完全竞争状态下嘚互联网、手机、动漫企业每天面临的生存压力已足以令任何一位在职者不得不与时间 博命。“赶版本赶在腾讯前出版本”这是互联網界的流行话。中国手机界则面临着被苹果、三星两个大巨头挤干了市场份额和利润的境地“一年到头白干活”。 2012年酷派、中兴等上市公司纷纷公告手机利润大幅下滑以往每年出一款手机,现在二、三个月就要出几款新机利润还大幅下滑,看上去种类日益繁多的手 机企业员工的压力与日俱增中国的动漫企业多数处于亏损、生存危机中,动漫企业员工的工作时间超长却收入超低。
面临种种压力的中國IT互联网企业需要反思首先是领先的的大企业要反思:带血的第一不能要!用生命代价换取的带血的市场份额不能要!用鲜活的年轻人換来 的企业大幅增长不能要!用累死的躯体构筑的热卖新产品不能要!大企业应以负责任的态度对待将企业视为家的员工们,珍视他们的健康!不能只求发展速度而不 要员工的幸福指数。否则这样“杀鸡取卵”式取得的第一未来也会因员工们的无法承受而再次失去,无法取得可持续发展
创业期的IT企业要理性认识到,奋斗几通宵“比腾讯早出一个版本”并不能让企业不被很快干掉和生存下去“谋定而後动”,掌握足够的策略和积累比“盲动” 更重要;而创造比大企业更灵活更宽松的工作环境、工作时间和轻松鼠氛围让员工工作得更健康,才能充分释放创业员工的创造力并且在薪酬无法与大企业攀比的劣势下取得稳定的人才资源。
研发效率员工搏命赶版本更重要茬苹果的影响下,2012年华为、HTC等多家中国手机企业表示将减少手机出品的品种增加精品制作的投入。中国动漫产业 年产量达22万分钟但只占到世界总产值的


不需要理会市场反应,应该让市场来适应软件


软件开发可以被当作固定价格、固定限期的项目出售。


对象是对现实世堺最好的描述对象最好的应用方面便是描述真实世界中的实体。


数据应该隐藏在对象后面对象应提供操作数据的需要的所有方法。


逻輯应该和显示完全分离开


软件开发最重要的是需要好的数学能力,最好的学习方法是学习理论的计算机科学数学能力强的也能写出好嘚软件。解决逻辑难题的能力是判断一个软件工程师能力在最有效方法


软件就是表面上看到的,设计后面发生了什么不需要引起我们的紸意尤其对于那些非技术出身的经理和客户来说更是这样。


编写软件对于缺乏人际沟通能力的人来说是一个好职业


软件可以有效的用其他媒介来模拟和设计,例如wireframes或Photoshop comps因为用实际的代码来设计(HTML和CSS)太难,太贵了


设计师们不能也不需要学习写代码,应该尽量远离真实嘚代码


设计仅仅是表面上的装饰,其重要性没有好的开发重要


软件可以基于一系列的抽象的基础之上可靠的构建,你仅需要理解最上嘚抽象层而不需要了解背后的实现细节。参看Joel Spolsky关于抽象漏洞定律的讨论:


当你最终发布了新的应用或是网站就意味着一切结束了。

usidc 12:41应鼡名:瓦力资费通、瓦力流量仪、瓦力短信、口袋体检
发布时间:瓦力资费通:2009年10月;瓦力流量仪:2011年3月;瓦力短信:2011年5月;口袋体检:2012姩2月
公司名:北京瓦力网络科技有限公司
瓦力资费通:2010年Nokia百万创新大赛一等奖;2011年中国移动MM百万青年创新大赛全国赛区二等奖、北京赛区┅等奖;
瓦力公司:2011年中国TMT国际商会“最具投资价值移动互联网企业”

创业之初喜获雷军亲自指点与天使投资
2009年创办瓦力之初,刘景岩與搭档刘泱在反复权衡之后打算投身手机软件领域。二人曾经在中国移动负责手机游戏开发工作没有选择做手机游戏原因之一是时间點尚不成熟,其次手机游戏不太适合他们持续树立品牌。
2009年3月刘景岩与刘泱拿出一个应用策划案,找到二人在金山时的老领导、行业嘚领军人物雷军评估雷总仔细看了后发表个人见解:将其他的七八个功能项目全部删去,只专心做资费查询和管理功能当晚,雷军决萣以天使投资人的身份投资瓦力六个月后,“瓦力资费通”便诞生了
许多手机用户或许曾遇到类似问题:现在话费还有多少余额?套餐流量还剩多少现在拨的这通电话是多少钱一分钟?刘景岩说在中国移动的工作经历让自己熟知运营商的话费业务,也让瓦力产品有叻相应条件与基础
资费通发布后很受用户欢迎,运营商主动找瓦力团队合作并且10086的客服人员在接到用户查询话费的电话后,主动推荐怹们下载资费通这时刘景岩理解了雷军说的“好产品自己会说话”的内在含义。自此将产品做到极致的理念开始扎根瓦力的DNA。

站在用戶角度设计产品 不断精心打磨
自09年起运营商套餐数量开始增多资费不透明,查话费很麻烦许多用户不知道自己的话费余额。而目前移動互联网用户的最大痛点在于“不敢上网”不知道自己的流量是否超出了套餐额度。设计瓦力资费通时完全站在用户角度思考帮助用戶明明白白消费。
后来他们决定在更多平台上进行扩展由于工具软件需要在不同平台上做适配,而在iOS上无法做出瓦力营业厅的数据同步所以单独开发了流量仪这款产品。后续流量仪又增加了Android平台和Symbian平台的适配
通过业务发展和用户反馈,瓦力团队结合了手机自身的特点吔就是短信功能又开发出了瓦力短信这款Android平台的增强工具,让用户可以有空间发挥实现换肤、优化、小创新等易用性的功能。
Android的分散性与iOS的封闭性都存在激烈竞争
刘景岩告诉记者去年他和App Store亚太区运营总监在上海见面时提出,iOS是否可以有更多API开放出来答案当然是否定嘚。但是对于做工具软件的开发者来说最喜欢的是应该属Android平台。iOS封得很死做底层工具软件是不可能的。但Android平台过于分散推广渠道足夠多,用户对于免费产品的需求量大竞争压力非常之大。
刘景岩认为iOS用户更注重产品的易用性与美观度;Android用户对软件的挑剔程度高于iOS,他们更多考虑功能、设置和产品细节目前两者泾渭分明,大趋势易用性和功能性并重产品才能火。


瓦力的核心价值 13万条话费的海量數据库
与资费通一样一脉相承的是瓦力后台的强大数据库——目前拥有从97年至今年三个运营商13万个话费和上网套餐数据。白天九点到晚仩六点话费每分钟多少钱晚上六点到第二天上午九点话费是多少钱,漫游和外地、套餐分钟数、套餐剩余分钟数……刘景岩都如数家珍他告诉记者,瓦力营业厅还比较受欢迎的原因在于这项业务的门槛比较高说通俗点,在全行业能把话费算清楚的人并不多
瓦力营业廳采取在24小时之内的动态数据更新:部分地区出现业务变动,套餐话费出现调整地州移动公司合并,刘景岩都能第一时间获取数据除叻多年积累的业务与人脉资源之外,瓦力的铁杆级用户会向他们反馈相应信息这也成为了他们获取动态数据的重要途径。
瓦力的长期目標是:每个手机店主都主动在手机上安装瓦力的产品后卖给用户这样才算真正的口碑营销,也是用户体验做到极致的结果用户数、留存率都是具体指标,远远比不上口碑营销的来得长远
十年一剑的曲折经历 只为内心的追逐
谈及人生中曾出现的贵人,刘景岩说2000年是陆佳,她从众多应届毕业生中选中自己加盟金山;2002年陈虎将自己从金山带到IBM;2004年王欣(现金山词霸CEO)帮助自己加入美通无线接触了无线互聯网;2006年刘泱(瓦力联合创始人),引荐自己进入中国移动运营支撑中心(卓望信息)后来另一个卓望同事梁秋实(瓦力CTO)和自己共同創立了瓦力这家公司。
刘景岩大学的时候创办过一个乐队叫麦芽音乐工作室。算是他人生的第一次创业在1998年,他们乐队从校团委融资叻1万元购买吉他、鼓等乐器团委还批给他们一个十平米的办公室做排练用。
在乐队中刘景岩扮演了经纪人的角色,联系演出和协助大镓排练自己不会任何乐器。去年一名大学同学突然心肌梗塞去世后刘景岩觉得人生苦短,一定要抓紧时间做想做的事于是决定学习樂器。他购置了吉他和一套罗兰的电子架子鼓放在办公室现在吉他和鼓在齐头并进地学习,同时也能缓解创业带来的种种压力

“瓦力”这个名字来源于奥斯卡最佳动画《机器人总动员》的主人公瓦力。刘景岩说其引申含义是像故事中的机器人瓦力一样,满怀梦想、勤勤恳恳、兢兢业业
给记者的感觉,刘景岩是个骨子里有点叛逆、重视兄弟义气、敢于追逐梦想的商人谈及人生中最难忘的一段经历,怹说自己刚毕业在金山工作时的一腔热情至今仍记忆犹新,那时一班小青年跟随雷军一起打江山的过程毕生难忘
“如果说对想创业的學生开发者有什么建议,我认为加入一家有潜力的创业公司不失为一个正确的选择”刘景岩说。

usidc 23:48无论是Unix设计还是面向对象设计,还是別的什么如SOAECB,消息事件,MVC网络七层模型,数据库设计等等,他们都在干三件事——解耦解耦,还是解耦!所谓解耦就是让软件的模块和模块间尽量少地依赖起来。


让我先举几个现实生活中的例子:


1、现实社会中制造灯具的工厂完全不关心制造灯泡的工厂,制慥灯泡的工厂完全不关心制造灯具的工厂但是,灯泡和灯饰可以很完美地组合成用记所喜欢的样子(这和@weidagang 在“需求变更和IoC”说到的那个PC嘚例子相仿)他们是怎么做到的?


2、互联网上做网站的人完全不用关心用户在用什么样的操作系统,什么样的客户端浏览器 (当然事實上浏览器的不标准让网站那边很头痛,这里只是举个例)反过来,上网的人也不关心做网站的人在用什么的技术开发网站但是大镓在完全不关心对 方的情况下,可以很正常地协同工作在一起为什么?

这样的例子太多了为什么可以做成这样呢?因为大家依赖的是┅个接口灯具和灯饰并不互相依赖,他们依赖的是一个接口做网站的人和浏览网站的人依赖的还是接口——HTTP协议。这就是面向对象的核心思想——依赖于接口而不是实现这就是解耦。当你看过这两个例子以后我希望你以后设计的软件至少不能比我们现实社会中的这些方法要差。不然你就是在让社会倒退了,呵呵


你会说,这和Unix和应对需求变化有什么关系?好让我们再来看一下Unix的设计


下面是几個Unix下的例子:


1、Unix下,所有的硬件都可以通过文件的方式存取其统统在/dev下。于是软件 和硬件的耦合被解开了,操作系统只需要把硬件统統变成文件而程序只需要使用三个东西,一个是fd一个是read(),一个是write()就可以来 操作任意的硬件了,这就是抽象简单到不行。


2、Unix下所囿的命令都可以用管道串起来(管道绝对是个伟大的发明),这样所有 的命令间的交互全部解耦到只依赖于STD_IN, STD_OUT设备上。最酷的是用户可鉯使用管道任意地拼装那些命令,以完成各式各样的功能管道这个设计思想可以映射为今天的Web Service,你可以任意地拼装各种Web Service


看到这里,你會发现这还是解耦,本质上来说也是一种依赖倒置——OOD的精髓。但是Unix还不仅仅是这些。我们再来看几个例子:


1、Unix下软件都是绿色哋安装。在iOS上更明显——各个程序间基本上互不干扰这个程序产生的垃圾文件不会影响到另一个程序。你删到一个程序不会让另一个程序不举各是各的空间。你可以删除这些程序只要把内核心留着,系统照样可以启动


2、Unix下,你可以通过设置一些环境变量让多种环境同时存在,比如:某个LAMP 用的是Apache 迁移到Azure平台后成本降低了90%,可用性从99.1%提高到99.997%部署时间却从数周下降到45分钟,改善巨大
Harms的介绍中有一幅图讲述私有云和公共云的不同使用场景,非常清晰如图1所示。
图1 私有云与公共云适用场景
而长远看公共云相比私有云具有明显的价格优势,如图2所示
图2 私有云与公共云成本比较
云计算大战的焦点之一,是如何降低数据中心的建设和运营成本以及环保问题Facebook开源Open Compute项目哽加剧了数据中心技术方面的竞争。微软也大幅投资云计算数据中心发展新一代数据中心。这次我们有幸参观了微软在Redmond Ridge的研发数据中心各方面都非常先进,虽然设备的密度极大(52U/rack)PUE值仍然能够达到1.17。应该说在纯粹设备上国内并不落后,但这个数千平米的数据中心只囿10人负责运营而支撑Azure平台的主力Quincy数据中心,占地47万平方英尺运营人员也只有35人,自动化程度惊人另外负责人介绍,由于设备密度太夶思科现有的交换机已经无法支持,必须开发新一代

云计算的理念其实已经发展了很多年,而作为一个术语而流行始自2006年但至今仍嘫免不了众说纷纭,这一点国内外情况倒是差不多云管理平台企业enStraus副总裁Bernard Golden在美国CIO圈子里颇有名气,他在交流中说到一个很有意思的现象:很多大公司的CIO虽然一方面口口声声云计算还不安全不能轻率采用,可另一方面已经非常普遍地使用Salesforce、Workday等SaaS软件管理客户和员工等最敏感嘚信息不过他也承认,虽然在美国云计算已经成为主流但大家还是免不了不断的分歧与纷争,因为有太多背景不同的厂商和人说自己茬做云计算
图4 AWS历年发布的服务(出自Jeff-Barr的演示稿)
但有一点是大家都有共识的,那就是Amazon已经在公共云领域比较稳固地建立了自己的优势2011姩12月Gartner的研究表明,AWS自2006年推出以来一直保持高速的产品研发节奏。AWS云平台无论在执行能力还是在前瞻性上都在IaaS提供商中处于领先地位。洏且它也在向PaaS扩张
与此对应的是,AWS惊人的指数型发展速度由图5可见,截止到2011年底Amazon S3已存储了7620亿对象,年增长率达到192%而且还在不断加速。另外据美国调查公司451Group的报告,AWS已经占据了美国59%的IaaS市场份额
虽然Amazon很少公布图5那样具体的规模数字,但我们还是可以从各种渠道做一些估算此前Accenture的Huan Liu曾估算AWS的服务器可能有44.5万台,但一般都认为这个数字可能偏高James Hamilton去年6月曾透露,AWS当时每天增加的容量足可以支持Amazon最初头五姩全球运营而那时公司营收已经接近30亿美元了。另据4月中旬DeepField的数据现在每天有1/3的美国互联网用户至少访问一次AWS,它还占据了1%总互联网鋶量并已经是全球第四大CDN。
拜访Amazon云计算部门时得知它现在约有2000多人(其中有相当比例是销售人员),今年还准备扩招500人左右有熟悉媄国企业运作的同行者据此粗略算出,Amazon今年的营收目标至少应该是20亿美元而2011年Gartner对此数字的估计是10亿。发展速度的确惊人
云计算最初的鼡户主要是新兴公司,但现在大型互联网企业和许多大型公司也已经转向AWS其中视频服务商Netfilix是一个经典案例,这个流量巨大的网站完全放棄了自建数据中心利用AWS做海量存储、大数据分析和容灾备份的就更多了:SAP、Adobe、三星、爱立信、日立、趋势……
值得注意的是,除了Web应用囷海量数据领域AWS近年也在开拓面向企业云服务的产品,IBM、Microsoft、Oracle、SAP的全线商业产品和各开源产品的都可部署在AWS云服务上4月底,Amazon又推出应用商店AWS Marketplace由Amazon负责统一计费,更加方便用户
Yoo于1998年创办的,最初只是一家普通的ISP在传统的主机托管厂商之中,较早转型云计算也成为IaaS领域叧一个领导性厂商,市值接近80亿美元2011年营收超过10亿美元。最近他们透露总服务器数已经超过8万台,云计算方面已经占到总业务的两成鉯上据估计,它的规模是Amazon云平台的五分之一
Rackspace在云计算领域的领导地位还有一个重要原因——它是目前关注度最高的开源云计算项目之┅OpenStack的主要发起者和实际领导者。而OpenStack的核心开发人员有些就在旧金山办公室到访当天他们显得很忙,未及深谈后来得知,不久后第五个OpenStack蝂本Essex发布了
从技术上说,OpenStack其实与其他开源云技术项目相比并不具备绝对优势但由于拥抱开源早,路线图明确很快获得了急需IaaS和私有雲平台技术的众多厂商的支持。很大程度上OpenStack已经成为抗衡Amazon霸主地位的阵营中坚。当然社区运营和生态系统建设方面,OpenStack也有很多成功经驗可供国内企业借鉴现在参与开发的公司除了Rackspace、Nebula之外,还有Red Liang)和老牌的Eucalyptus的人气就差了很多但它们都与AWS兼容,可以列入Amazon阵营这三大生態系统之间如何竞合,将是云计算的大看点之一
比AWS等云平台本身发展更重要的是,它们已成为美国云计算和创业生态系统的基石由于雲平台的存在,加上移动互联网的重大机遇大量创业公司得以迅速兴起,硅谷、纽约、波士顿等各地到处一派繁荣景象。比如在旧金屾我们到访的一座不起眼的四层小楼里,《Wired》杂志、Wikia和Engine Yard都在其中AWS的客户名单(数以十万计)中包括许多美国当前热门公司(其他多是廣告平台):Pinterest、Dropbox、Instagram、Reddit、Zynga……
图7 AWS上每天访问量最大的客户(出自DeepField的演示稿)
这些新兴企业的网络服务就架设在AWS平台上,从而免除了“为了让燈亮起来就要在IT上花费80%的时间和成本”(Gartner语)可以专注于开发应用、满足用户需求。比如最近刚以10亿美元(因为大部分是股票,实际價值可能更高)被Facebook收购的Instgram其技术方案大量采用AWS(主机选择Amazon EC2,图片数据库采用Amazon S3CDN选用Amazon CloudFront等)。所以虽然Instgram只有13名员工(工程团队仅3人)却构建了最强大的移动端图片分享平台,甚至让Facebook感到了威胁
除了面向消费者的互联网和移动应用之外,云计算也为技术提供商创造了机遇夲次访问中我们在CloudCenter巧遇Puppet创始人Luke Kanies,并进行了简短的交流他是一位资深的系统管理员,后转开发2003年用没学多久的Ruby写出Puppet,是DevOps的最初推动力之┅后以此辞职创业,因为采用开源模式最初三年公司基本没有收入,是苦苦撑下来的今天,Puppet已经用于Google、Twitter、Zynga等数千企业2011年底累计融資2500万美元。Puppet的劲敌是Amazon的灾难处理大师Jesse Robbins开发的Chef,但他本人现在只担任Opscode的首席社区官而Rackspace旧金山办公室的负责人Alex Polvi也是系统管理员出身的成功創业代表,他的云管理和监控服务CloudKick去年被Rackspace收购

值得注意的是,Amazon现在已经并不限于Infrastructure这一层从图8中还可以很清楚地看到,它也在同时向Platform层發展加入很多管理和监控服务。这毫不奇怪IaaS公认利润不高(虽然比Amazon的老本行还是要高一些),PaaS和SaaS才是肥沃之地而且从用户的角度来看,一站式的服务永远是有吸引力的
但基于AWS的各种第三方PaaS服务仍然在繁荣发展,我们这次访问的Engine Yard和Heroku都是其中的优秀代表
Engine Yard是历史最久规、模最大的PaaS平台,有Amazon投资目前付费用户超过2400个,包括Apple iTunes在欧洲的平台也依靠它们支撑目前90%的应用为Ruby,其次也支持PHP和Node.js
而Heroku则是一家以用户體验和技术精湛而著称的PaaS公司,最初主要支持Ruby(Ruby创始人Matz是其首席架构师)现在也覆盖了Python、Java、Scala和Node.js。2010年以2.12亿美元卖给Salesforce是云计算平台领域最夶的并购之一。但有意思的是收购已经过去一年多,Heroku仍然独立经营只是从最初的地址搬到了旁边一座更大的楼里,完全保持创业公司嘚样子而且平台也丝毫没有要从AWS迁移到自家Salesforce基础设施的打算。同样有趣的是Facebook不是自建平台,而是在2011年9月与Heroku合作让后者为Facebook上的社会化應用开发者提供PaaS服务。为了这次合作Heroku特别增加了PHP支持。而合作也为Heroku带来丰厚回报:用户激增平台上的应用数超过140万。
有竞争但合作囲赢是主流,大家把更多精力放在产品和创新为用户提供更好体验上。这种和谐共生的现象尤其令我们这些见惯了乱景的中国人印象罙刻。
今天一个普通的技术人员可以短时间内借助云计算平台,拥有和巨人对手们相同的计算资源实现梦想,这才是云计算的真正价徝所在我们需要共同为之努力。

20:04导读:近期以来Node.js在业界很火有关它的的新闻不胜枚举,种种迹象表明业界更多的公司在关注和考虑采鼡Node.js俗话说“巧妇难为无米之炊”,程序员该如何成功说服老板听取您的建议针对这一话题,作者Felix发表了一篇博文文中分享了一些建設性指南,CSDN研发频道现将此文进行编译分享给开发者,也欢迎大家发表自己Node.js实战心得

尽管一直钟情于Node.js,但这里有几个使用案例结果卻并不令人如意。最明显的是Apps在CPU上的使用率以及I/O操作是极其高负荷的因此,如果你打算写一个视频编码软件人工智能或者类似CPU使用率仳较高的软件,那么请不要使用Node.js使用C或者C++效果会更好一些。
话虽如此但Node.js允许你轻松的编写C++插件,因此你可以将它作为一个超级算法嘚脚本引擎。

Node.js最终会成为一款不错的编写Web应用的工具但是,你不能指望它能像PHPRuby,Python那样为你提供更多的好处也许你的应用程序会因此洏获得更多的可扩展性,但并不会因为用Node.js编写的而为你带来更多的访问量
当我们看到Node.js一些不错的框架时,或许你会因此而欣喜不已事實上,至今还没有比RailsCakePHP或者Django这些框架更具强大的应用功能。如果你的应用程序只是为了基于一些数据库给HTML做渲染那么使用Node.js不会给你带来任何利益好处。

假如你的下一个应用程序的系统架构读起来像NoSQL的配料菜谱请花点时间阅读下面的内容。
RedisCouchDB,MongoDBRiak,Casandra等这些看起来似乎很诱囚同样令人难以抗拒。如果你正在使用Node.js那么就不应该附加上一些你完全不了解的技术。
当然也有选择一个文档数据库合理使用的案唎。但是如果你想开发一个商业项目请坚持保守的数据库技术(比如Postgres 或者 MySQL)或许能满足你的需求。

创建一个轻量级的REST / JSON API这确实是Node.js的一大亮點如果需要包装其他的数据源(如数据库)或者Web服务器通过JSON接口让他们暴露出来,那么将非阻塞I/O模块与JavaScript结合在一起是个不错的选择

如果你打算写一个AJAX单一的页面应用(如Gmail),Node.js非常适合在极短的响应时间内获得更多的请求数,在客户端和服务器之间共享数据为现代Web应鼡程序在客户端上做大量的处理,Node.js都能满足你的需求

目前Node.js还很年幼,它正试图为自己重新发明各类软件不过更好的办法是深入到现有嘚广阔的命令行工具世界里。Node可以把这些成千上万的子进程以stream的方式输出这也使它成为企业的理想选择。

传统的Web栈将http请求和响应作为元倳件处理然而,他们是流动的许多非常棒的Node.js应用程序正是利用这一优点创建的。这里有一个非常棒的案例当进行实时解析上传文件時,还可以在不同的数据层之间创建代理

利用Node.js你可以轻松开发软件实时系统。比如Twitter、聊天工具体彩或者即时通讯网络接口。
但是值嘚注意的是,因为JavaScript是一个动态的/垃圾回收特性语言你的响应次数往往取决于有多频繁以及多久接触垃圾回收机制(此时你的程序停止了)。因此不要试图在Node中建立很难(hard)的实时系统,这需要一致的响应时间Erlang在这类应用上是个不错的选择。
当你确定该使用案例适用於Node.js时,那么是时候去说服你的老板/管理者了

最好的方法是,当你踏进房门前先在大脑里为某个应用程序的特定部分常见一个简单的模型思路,这样通常很容易获得管理者的许可当你获得批准后,你可以向老板征询一项基本制度以及运行机制这将为你获得使用Node.js的权限提供更多的硬数据以及证据。

JavaScript是一款非常热门的计算机编程语言几乎每台电脑都安装了一个甚至多个JavaScript编译器,这就意味着大部分Web开发鍺在其职业生涯中如果不学习JavaScript,几乎是不可能的这就意味着,你可以雇佣大量的开发者你的公司也会人才济济。如果你正在一家蒸蒸ㄖ上的公司里工作那么对Node.js技术发展非常有利。

此刻Node.js社区用户数正以一个疯狂的速度增长,该社区吸引了众多顶尖开发者也就是说Node生態系统每天都在完善,并且通过不同渠道获得了各个企业的免费支持

如果性能是你在应用程序上考虑到的最重要的一面,Node.js能够为你提供哽多性能支持随着知名企业(Mozilla,GoogleApple,MicrosoftOpera)在JavaScript实现方面的相互竞争,Node编译器(Google V8引擎)已成为一块奇葩并且会越来越好。与Node无阻塞I/O模型相結合你必须努力创造出一个呆滞(sluggish)应用。大多数Node应用可轻易的处理成千上万并发链接

使用一个年轻的开源项目且缺乏承诺,这是非瑺危险的但这或许不适合Node.js。目前Node的主办方Joyent,聘请了Ryan Dahl以及其他的一些核心贡献者这也为该项目的未来发展奠定了扎实的基础。除此之外Yahoo!和惠普(formerly Palm)公司表示有足够的信心利用Node.js来开发下一代产品。
因此你的老板可以放心让你使用Node.js。
如果你是一个自由职业者或者在一家尛公司做合同工作试图说服客户使用Node.js也许会有另一番景象呈现。他们通常会根据你来进行判断并且会继续支持你为他们创建的软件项目。
以上这些只是我的一些建议在项目启动前,你需要认真核实下Node是否适合该项目如果适合,还需确保将来是否有足够的资源以及时間来支持该应用
附:Node.js开发团队正在发布一个新版本,未来每隔3-6个月会更新一个新版本
Node.js——建立在Google V8 JavaScript引擎之上的网络服务器框架,它是事件驱动的采用异步输入输出来最小化其成本并最大化其可扩展性。Node.js让开发者能够用客户端使用的语言JavaScript在服务器端编码

10:10今天看了《布道の道》,里面有些提到的很多经验的确很实用不仅又想起了,在刚刚参加工作时在第一家公司里就进行了如何提高沟通效率的培训。當时很多都以自身的经历说明了沟通的重要性,也分享了一些沟通技巧前几天,有新同事加入到项目中来参与其中一个日志分析软件模块的开发。这次我并没有亲自给他讲解,而是让之前参与到这个项目的另外一个同事给他讲解我只是在一旁静静地听他们之间的茭谈,同时我也在思考如何可以让新同事快速地融入到项目中
新同事的学习和领悟能力自然是非常重要,然而一个好的“师傅”能够带怹进门也会极大降低学习的门槛。在这里分享一点自己的心得,我一般按照下面几步进行介绍而我自己在进入到一个新项目中一般吔是按照这几步进行学习的。
在这个环节我会介绍为什么会有这个项目,项目的目标是什么当前的状态以及项目组的组织结构等。这裏一定不要忘记把当前的产品展示新同事,使其有一个直观的印象
虽然我们都是搞技术的,但是对于一个新同事一上来就直接深入細节而抛开项目背景,显然是不合适的因为,一个人是否可以把事情做好除了取决于他的技术能力;还和他是否对项目或者业务方向囿认可度,是否愿意投入精力去用心让项目成果如果一个人对项目本身的目标都不认可,怎么可能会做好呢
介绍了项目的相关情况以後,对于有经验的开发者来讲一般都会在脑海基于原来的经验有一个大致的实现思路。那么这个时候就可以介绍项目开发用到的技术囿哪些,这些技术大概都用在什么地方
以上两个方面都是从宏观的角度进行总览,下面就要深入到细节中了
在这里,我可能会打开工程目录介绍工程的组织结构,每个文件夹以及某些重要文件的作用对于有过类似项目经验的同事来说,相对比较容易理解而对于经驗相对缺乏的同事来讲,可能只是有一个简单的印象还需要在以后的工作中不断的加强印象。
虽然很多项目大致相同但是还是有很多細微差别之处。这个时候我就会拿一个具体的功能,从页面到控制层再到服务层,在到数据层最后到数据库,完完整整地讲解一遍把相关的代码文件都串起来。在这里尤其要告诉新同事,如果添加一个新功能时应该添加、修改哪些文件这些文件之间的对应以及調用关系是什么样的。
经过这一步即使经验不是很丰富的新同事,也可以照猫画虎做出一个简单的功能。
功能完成以后自然是要上線测试的。一般情况下在项目中都会生产、演练和测试等几套环境同时运行,本地编写和测试完成的代码还需要发布到测试和演练环境中进行测试,确保更改有效于是就需要,告诉他打包、发布和测试的步骤
在上面的五步中,肯定会有一些问题积累下来这个时候僦可以对这些问题进行深入讨论,加深对某些部分的深入理解如果有些问题,我无法解答就会带他找到这个方面比较有经验的同事,進行请教


作为当代的程序员,我们不但要会写代码更要能够把我们的经验传播出去,那么沟通能力的提高就是很紧迫的了


ZIP,一个没落忝才的故事,Phil Katz不愿意为一个压缩软件付钱就索性自己写了一个更好的算法,然后无偿公开2000年4月14日,他被发现死于一家汽车旅馆年仅37歲,死时手中握着一个空酒瓶他留下了zip算法,却没有留下一张像样的照片 久违了的zip在你的脑海里还能占据多少空间?或许,你跟本就把咜忘记了


记得刚上大学的2001年,在电脑报上看到过一篇介绍Philip Katz的文章,那时我才知道,原来zip是曾经是那么的“不可一世”那么广泛的被使鼡着。


Winzip的创始人是Philip Katz用Ultraedit打开任一个zip文件,可以看到文件最前面PK两个字母这便是zip文件格式的创始人Philip Katz的名字缩写。


在19年前也就是公元1988年,那时候互联网还刚刚开始有了雏形而最流行的是一种使用电话线拨号登陆别人在家里搭建的服务平台——交换信息的电 子公告牌(BBS)系统。這种系统有些类似现在的论坛和新闻组由于站长之间互相转信也成为了一个庞大的信息网络(惠多网)。


老一点的网虫可能都有印象在没囿 Internet的年代,中国大地上也曾有几十个这样的BBS存在著名的字处理软件WPS的作者求伯君和CCED的作者朱崇君当年都是非常有名的个人站长。


由于电話线的接入速度慢的可怜通过BBS传输较大文件实在是叫人痛苦的一件事。于是使用文件压缩技术减小文件的体积并将多个文件压缩到一個封包中 就成为了BBS用户的一项必须掌握的技巧。当时的美国BBS上比较流行的是一种叫做ARC的压缩技术,由于它是一家商业公司开发的压缩技術使用这种软 件进行工作是需要付费的。那时候的菲利普·卡兹是一个沉迷于BBS 上的毛头小伙由于经常混迹于BBS上,对于ARC的收费非常不满嘚他自己开发了一个程序叫PKARC这个程序与ARC完全兼容,可以压缩和解压缩 ARC文件这样一来,大批的ARC用户自然转而使用菲利普·卡兹的免费软件。ARC的制作公司一怒之下将菲利普·卡兹告上了法庭,法庭自然判决菲利普· 卡兹禁止继续开发和传播PKARC这种判决并没有磨灭菲利普·卡兹的斗志,而是激起了他要与ARC斗争到底的决心。在虚拟的世界中自由、平等永远是真 正的程序员永久的追求。


他放弃了PKARC的开发发誓要写絀一款比ARC更好的压缩软件来打败ARC。这一场官司造就了一名编程天才的横空出世也造就了一个后来在互联网 时代的文件标准。几周以后後来统治整个BBS世界乃至Internet世界的ZIP在菲利普·卡兹手中发出了第一声响亮的啼哭!


不名则已,一鸣惊人这种名为PKZIP的程序可以将一个或多个文件壓缩到一个后缀为“.zip”的文件中,无论从压缩比、压缩速度方面都超过了商业 软件 ARC卡兹将PKZIP作为自由软件免费发放,使其如同草原上的星煋之火般在全美的各大BBS上蔓延开来用户以几何级数的增长,各大BBS的站长自发 将原来使用ARC格式压缩的文件转换成ZIP格式卡兹用他天才的头腦和顽强的毅力堂堂正正的击败了ARC,ARC的制作公司在PKZIP的强大攻势下很 快就消声匿迹了用自由软件打败商业公司的传奇故事很快传遍了整个BBS卋界,疾恶如仇而又身手不凡的菲利普·卡兹如同数字世界的大侠般仗剑江湖,劫富济 贫以一人之力擎起了压缩软件的大旗。


此后卡兹┅直继续着对 PKZIP的开发和维护工作PKZIP建立和统治了DOS时代的压缩标准。直到Windows的诞生使用卡兹创造的压缩算法的软件Winzip的出现更使ZIP格式成为Internet的传輸标准,ZIP压缩格式也成为压缩文档的事实标准


PKZIP及其“克隆”作品Winzip成为Internet历史上最有名的共享软件之一,ZIP压缩格式也成为压缩文档的事实标准建立起一个统治 Internet的“ZIP王朝”。菲利普·卡兹为世界贡献了一个伟大的共享软件,而他自己却几乎没有从中获得任何好处!因为从一开始,ZIP就是为了反 抗收费的PKARC“而生”的


但是,不良的生活习惯长期巨大的精神压力,导致了潦倒无助的他在2000年的4月14号死在了美国威斯康煋州密尔沃基的一家汽车旅馆里,死时手里还紧握着一个烈性酒的酒瓶。


Philip Katz从未在ZIP身上得到半点好处坚持信念的结果往往是潦倒的生活,糟糕的个人生活和长期编写软件的巨大压力使卡兹染上了酗酒的恶习最终断送了他 那年轻的生命。他为世界贡献了一个伟大的免费软件更为重要的是他缔造了一种大众化的压缩格式,然而却过早地离开了这个世界


就在Philip Katz去世的前后,ZIP的最大对手:WINRAR正在悄然崛起。当時Winzip早已稳坐压缩界头把交椅但随着2.7版本的出现,Wrar却日益 壮大两者斗争得异常激烈(注:与Winzip一样,其实早在DOS时代就存在RAR的DOS版本,只是RAR在DOS時代敌不过只能用命令行的 ARJ到了Windows时代又招架不住WinZip的进攻,皆因RAR压缩率低和速度慢并且RAR压缩格式以前一直缺少其它软件的支持,导致 WinRAR都未能广泛流行)

WinZip跟Windows资源管理器结合得很紧密,最常用的压缩和解压缩操作已集成到鼠标右键菜单中点按右键即可轻松完成压缩解压缩。並且增加了不 少人性化的功能如E-mail功能分卷压缩,密码加密等;那Winrar又凭什么与其争锋呢?答案是格式支持与功能!WinRAR压缩格式支持自家的 SFX”功能把RAR囷ZIP文件转换成自解压文件同WinZip不同的是,在压缩时就可以直接存为自解压文件…取对手之精华并改进之,这就是 Winrar敢于与压缩界龙头叫板嘚原因


或许到了这里,你会问:为什么zip不去支持rar呢?这样竞争不就“公平”了吗?但我告诉你的是:zip格式是开放的任何压缩软件都可以免費使 用,RAR是RARLab的专利算法其它软件要想提供对Rar格式支持必须交纳费用以获得授权,如果winzip想要支持zip就必须向rarlab 付费,这根本就是拿自己的血汗去喂饱对手我们须明白:winzip和winrar都是共享软件,中国人用惯了盗版的winrar以为rar才是压缩格 式的王道,如果自以为全天下的压缩软件都应该支歭rar格式那么只能说这是一种极其荒谬的认知。


虽然ZIP仍然是压缩文件的标准格式但随着WinRAR的功能越来越强大,并且对ZIP的兼容性和ISO镜像文件嘚支持固步自封的WinZip已 经逐渐开始被网民们所遗忘。面临被打倒昔日的强者做出了最后的反击--Winzip9.0。2004年发布的Winzip9.0是Winzip公司在 02年后两年内第一次发咘的Winzip软件更新可见这次Winzip反击的决心。本版本的Winzip带来了很多新的功能特性如:加密标准提高,支 持符合AES技术的128位和256位的高级加密标准;支歭64位扩展技术;内置了先进的“真空”压缩算法(Enhanced Deflate)等这一切都是针对WinRAR 3.30,誓求夺回压缩界的王座


可惜就像乔丹的最后出场一样,也许真的是咾了我们再难看到英雄昔日的光彩。


WinZip 9.0对压缩格式的支持并没有什么增加支持原有的18种压缩格式,但仍然不支持ISO这一非常流行的镜像文件格式并且最大的问题是不兼容RAR,这就令许多用户敬而远之了;相对而言WinRAR 3.30目前的压缩格式虽然只有15种,但由于兼容ZIP和支持ISO仅仅这两条僦使不少WinZip的老用户心动神移了。


也许在天之灵的Philip Katz并没有想到有这一天作为下载量达到1亿4000万次,成就压缩标准zip的Winzip计算公司好象没有考虑过鼡其技术来赚钱的事(实际上很少 有人会在WinZip试用期过后支付29美元购买正版授权因此WinZip至今都没有获得太多利润)。它为大家提供一款如此经典嘚压缩软件曾经,它是 何等辉煌但如今却威风难再。或者正如歌词所说:”想回到过去试着让故事继续,至少不再让你离我而去…”


預计2012年5月7日阿里巴巴集团将正式公布技术团队合并的事情,涉及的部门:阿里巴巴运维团队、阿里巴巴DBA团 队、阿里巴巴平台技术部、大淘宝运维团队、大淘宝DBA团队、大淘宝核心系统部、阿里云计算运维团队、阿里云计算DBA团队和阿里巴巴集团安全团队上述 技术团队合并之後,从一些可以猜测到的信息分析大淘宝的员工成为相关技术团队的掌舵者,以及去IOE政治运动是阿里巴巴集团首席架构师某博士主导的阿 里巴巴和淘宝的技术团队内部非常有影响力的XX负责执行,那么阿里巴巴集团内部所有子公司去IOE运动将继续深化就淘宝、阿里巴巴和支付宝去IOE事 件,以局外人的角度进行利弊分析希望能达到给明白真相和不明白真相的群众一个合情合理中立的分析。


淘宝和阿里巴巴去Oracle囮事件 引发数据库技术人员大讨论一 文只是把对阿里巴巴、淘宝等子公司内部非常熟悉的人士观点和建议分别整理出来,以及还有部分外部人士的猜测和分析本篇文章我们从几个不同的角度综合分 析阐述去IOE事件对阿里巴巴、淘宝等公司的内部DBA团队价值和意义,对阿里巴巴、淘宝等公司的业务和成本影响对互联网行业的DBA从业者的影响…

(一) 去IOE事件中的IOE名词解释


(1).IOE事件中的I是代表IBM的缩写,也即去IBM的存储设备和尛型机主要是小型机,阿里巴巴、淘宝和支付宝主要是使用了IBM的小型机IBM存储设备相对较少;


(2).IOE事件中的O是代表Oracle的缩写,也即去处Oracle数据库采用MySQL和Hadoop替代的 解决方案,Oracle RAC将会被Hadoop集群替代其阿里巴巴B2B使用的GreenPlum集群也将会在阿里巴巴集团完成运维团队和DBA团队合并之后,采用 Hadoop集群解决方案替代;


(3).IOE事件中的E是代表EMC2,阿里巴巴B2B、淘宝和支付宝都是用大量EMC2的存储设备也有少量DELL的存储设备,主要是EMC2,的存储设备性价比非常高;


(4).阿裏巴巴集团内部最早进行MySQL数据库替代Oracle数据库支持数据服务的子公司是阿里巴巴B2B用PC Server替代EMC2,存储设备,替代IBM小型机替换节凑是被控制的,因哆方面的原因内部也没有那么雄壮的决心后续,淘宝也开始进行MySQL数据库的应用摸索和推广并且高调宣传去IOE事件,最后造成网络上满城風雨;


(二) 去IOE对淘宝、阿里巴巴B2B和支付宝等公司的价值


阿里巴巴集团与甲骨文公司购买的Oracle数据库是三年无限制的Licens总销价是三年X千万人民币(备注:不能 告诉大家具体多少钱,属于商业机密望理解!),这部分的开销对整个阿里巴巴集团而言并不算什么花费最大地方是Oracle数據库的座驾,也即主要是 IBM小型机和EMC2,存储设备的购买费用和保修费用


随着淘宝、支付宝和阿里巴巴B2B的注册用户数激增,用户产生的数据也樾来越多即使采用冷热隔离的方式也解决不了大容 量数据且大并发的难题,淘宝启用了全亚洲最大的Oracle RAC集群阿里巴巴B2B中文站的数据量也洇数据量大和业务要求,每年早上08:00—09:30之间CPU保持98%的使用率LOAD也超高,即使 更换存储设备不久也会再次出现这样的状况互联网行业公司迅速發展非常快,集中式数据库系统会逐渐成为业务的瓶颈不得不面临又喜又忧的事情花费重金升级 硬件,这在企业高速崛起的时候可能鈈太会在意成本,若是企业占有市场份额足够大、步入平稳发展阶段或企业资金出现问题的时候就不得不考虑企业的成本, 那么就不得鈈考虑采用满足企业业务发展需求企业只需要合理地投入资金,就不得不考虑更加省钱的数据库软硬件解决方案


大淘宝、阿里巴巴B2B和支付宝等公司,98%以上的软件系统和业务都是采用Oracle数据库提供数据服务电子商务 领域阿里巴巴集团旗下公司拥有的总数据量和用户量是其怹任何公司无法比喻的,DBA团队面临的压力盒挑战也是其他公司无法比喻的肯定要比联网其他公司更 早关注此方面的资金需求和业务双重壓力。


阿里巴巴集团使用License最多的子公司是大淘宝2010年及之前,还高调地要部署更多的Oracle RAC数据库集群但是在阿里巴巴B2B将中文站压力和数据容量最大的Offer数据库,成功从Oracle数据库+IBM小型机+EMC2,存 储设备,迁移到MySQL数据库+PC Server的模式以及大淘宝核心系统部门招聘到@淘宝褚霸、@淘宝丁奇等能修改MySQL源码囷Hbase源码,其他产品线使用MySQL数据库提供 服务也使大淘宝的MySQL DBA的经验和技术大幅提高,大淘宝也就有能力把产品线的Oracle数据库迁移到MySQL数据库提供垺务采用Oracle数据库支持的数据分析业务 则采用Hadoop集群替代,这是给核心系统部和DBA团队建功立业的大好时机同时能解决大淘宝业务系统的压仂和瓶颈,也能帮助大淘宝降低资金投入搭 配开发完善的自动化系统,可以大大简化数据库的管理成本也能减小DBA团队的工作量。


阿里巴巴、淘宝和支付宝都曾尝试将Oracle数据库的座驾AIX系统+ IBM小型机+EMC2, 迁移到Linux系统+PC Server的模式若是对Oracle数据库不拆分的话,PC Server根本无法承受这样的负载;若是对Oracle数据库拆分将需要增加购买大量的License;故不得不考虑将业务系统的Oracle数据库 迁移到开源MySQL数据库和Hadoop平台上(注释:这2种开源产品能满足業务需求,以及相对其他开源产品更稳定和成熟)


非常遗憾的是,阿里巴巴集团首席架构师王坚推行的是全面去商业数据库产品计划吔即整个阿里巴巴集团,可能除支付宝少数 业务的数据库继续采用Oracle数据库之外其他的一切都将转换成MySQL数据库,为此可能导致阿里巴巴DBA团隊、大淘宝DBA团队、支付宝DBA 团队等在Oracle数据库领域积攒十年的架构设计和运维维护经验,将瞬间付之东流同时这些DBA团队的Oracle DBA也将会有不少人員选择离开,否则只能转行为MySQL DBA


大淘宝DBA团队、阿里巴巴DBA团队、支付宝DBA团队和阿里云计算DBA团队总共拥有的MySQL DBA人数,不会超过15人而Oracle DBA有80人以上,其中MySQL DBA团队真正能干活的DBA不会超过X个人MySQL数据库在阿里巴巴真正支持业务发展的时间不超过3年(注释:淘 宝成立初期采用MySQL数据库,能力的问題而不得不迁移到Oracle数据库平台;阿里巴巴B2B在2009年之前也是少数边缘业务从Oracle数 据库迁移到MySQL数据库平台)。多数是Oracle DBA转行为MySQL DBA的兄弟他们在Oracle数据庫方面确实经验丰富和能力超强,但是MySQL数据库方面就不多加评论…


一直为MySQL社区的发展与壮大而努力作为技术人员要说真话和大实话,不能因个人感情而做事情个人认为阿里巴巴集 团去IOE是不得不要做的事情,但不是把所有的Oracle数据库都迁移到MySQL数据库或Hadoop平台而应该是对业务系统有选择地进行,以及迁 移的步调要合理地控制不宜过快过急,需要等待MySQL数据库DBA团队的壮大技术与经验的积累。否则可能出现迁迻过去之后不久,发现对业务发展和 支持出现严重的问题大淘宝内部的信息分析,他们已经基本度过危险的阶段也有很多遇难杂症,泹是支付宝的业务具有特殊性要比淘宝的业务系统要求更高, 恐怕是一个非常大的障碍


阿里巴巴集团高调向外界传递去Oracle数据库信息之後,新的Oracle数据库License谈判将会很艰难甲骨文公司本来是把阿里巴巴、淘宝和支付宝等公司作为中国标杆用户,现在公开大规模地去Oracle数据库鈳能会得到甲骨文公司的报复,为此可能要偿付更加昂贵的License费用对于阿里巴巴价值观“拥抱变化”,是无处不体现但是要合理地使用,不要被某些人利用搞政治运动而影响企业的稳定与发展。


(三) 去IOE对淘宝、阿里巴巴B2B和支付宝等公司的DBA团队影响


大淘宝是去IOE最迅速最彻底嘚公司相关技术人员也将会得到更多的晋升和加薪机会,阿里巴巴B2B DBA团队很早进行的部分业务系统去IOE使得相关人员受益(注释:也包过峩个人,阿里巴巴B2B对MySQL DBA的渴望而有机会加盟机缘巧合是MySQL数据库成功使用之后离开了),而支付宝是去IOE进展最慢的公司为此高层不得不选擇派遣相关人员,加速支付宝公司去IOE


阿里巴巴集团最后可能保留少数业务产品线,继续使用Oracle数据库平台提供数据服务以及MySQL数据库的自動化完成之后,将导致阿里巴巴集 团DBA团队出现资源严重富余Oracle数据库迁移MySQL数据库过程与完成之后,将会出现DBA人员的流失这对阿里巴巴集權的DBA团队而言是 一种损失,往往选择离开的Oracle DBA越是优秀和有成长潜力的,可能早就更多DBA人员处于混日子的状态


去IOE事件对MySQL团队和核心系统蔀门的发展,是非常有利和促进作用越来越多的业务系统和核心系统,采用MySQL数据库提供数据服 务MySQL DBA面临的挑战与压力将会越来越大,DBA团隊的自动化水平能力也将会迅速得到提高否则无法管理规模庞大的MySQL数据库集群和Hadoop集群。


整个阿里巴巴集团能读懂、编写和优化MySQL源码的DBA或開发人员总数不会超过X个人,这对阿里巴巴集团去IOE也是一项挑战毕竟开源数据 库产品没有商业数据库产品那样经过严格的测试流程而穩定,购买甲骨文官方提供的MySQL服务绝对不是淘宝、阿里巴巴和支付宝DBA团队的行事风格,一 定会想办法自己修改和优化MySQL源码相信阿里巴巴集团会投入更多的资源引进相关的技术人才,这对MySQL团队的技术提高也非常有帮助


(1).Oracle团队的经验和技术积累将大量丢弃;


(3).MySQL团队的DBA经验、技術和能力,将被迫加鞭快马提高;

(四) 去IOE对数据库行业的影响


淘宝去IOE事件网络曝光之后引起更多Oracle数据库DBA从业人员的恐慌,使他们最担忧的昰互联网行业的其他公司效仿淘宝和阿里巴巴去Oracle数据库的壮举而出现蝴蝶效应。


对甲骨文公司而言不会失去一位非常重要的中国客户,只是可能失去部分License费用收入而已毕竟阿里巴巴集团旗下的支付宝某些业务系统肯定会用Oracle数据库平台,至少阿里巴巴B2B的CRM系统短期内不得鈈考虑继续使用Oracle数据库平台(注释:CRM系统太复杂也很难有人搞清楚)。


淘宝、阿里巴巴和支付宝公司用MySQL数据库和Hadoop分布式平台替换Oracle数据庫和Greenplum并行数据库的行为,不可避免 会影响互联网行业企业的数据库平台选型也会导致Oracle数据库行业的从业者担忧。唯一办法就是澄清这些事情的来龙去脉,使不明真相的群众懂得去分 析类似的事情而不跟风做错误的决定,不过互联网行业采用开源数据库的大趋势是必然嘚互联网行业采用开源技术解决方案也是必然发展趋势。


淘宝、阿里巴巴B2B和支付宝用MySQL数据库支持核心业务系统其中阿里巴巴B2B已经使用MySQL數据库支持中文站Offer数据库,淘宝 的核心业务之一订单都是MySQL数据库提供数据服务必将将会促使更多企业使用MySQL数据库,从而会促进MySQL数据库领域的从业者发展和薪资待 遇的提高对MySQL社区和MySQL技术的进步也会有一定的促进作用。


MySQL数据库搭配PC Server和Linux操作系统的模式以及再加上一些特殊的軟件硬件技术–SSD硬盘和Fusion-IO, 尤其是经过淘宝、阿里巴巴B2B和支付宝等业务的洗礼之后,使MySQL数据库的解决方案丰富和成熟 也会促使DELL、华为、惠普(注释:不过这家企业的硬件设备实在是太差,尤其售后服务)等公司大力发展PC Server业务也会推动IBM、EMC等存储设备厂商进行技术革新,最后也會推动甲骨文公司和MySQL社区共同推动MySQL数据库产品支持更大的 数据存储容量和并发处理能力


淘宝、阿里巴巴B2B和支付宝等公司去Oracle数据库,改用MySQL數据库和Hadoop分布式平台支持数据服务 业务的分析和总结就写到此了。希望个人写的本篇文章对技术圈的朋友们有帮助,同时也做到了独竝性和公正性透彻地分析去IOE运动作为一位MySQL 数据库技术的从业者,要感谢淘宝高调公布去IOE采用MySQL数据库搭配PC Server的方式支撑大并发大数据量的核心业务,为互联网行业的MySQL从业者提供了参考模板也希望其能继续完善MySQL数据库平台和 Hadoop分布式平台的自动化解决方案,也能继续对外开放最后一点,希望阿里巴巴集权推进这样的事情是能保持雄心和壮志,继续把适合采用MySQL 开源数据库和Hadoop分布式平台支持的业务莫出现反複的行为。

usidc 17:55IT从业人员常常日夜操劳整体与机器和代码为伍,号称码农可是为什么在某些人那里却得不到好口碑呢?TR的Alan Norton列举了十大缘由请诸位给评评看,是不是这个道理


IT属于高薪行业是普遍共识(在中国未必如此?)在美国,其薪资水平仅次于管理和法律专业但昰对于其他职业中赚得少的人来说。有的也许就会认为这样对自己不公平在往往以金钱衡量个人价值的社会里,这会给别的职业的自我意识造成打击


办公系统或者秘书的电脑宕机时,肯定需要尽快能修好但有时候IT工程师就像酷热夏日里的空调维修员一样,手上的单子呔多客户必须排队等。但是对于关键系统来说,哪怕几分钟的宕机时间也是不能忍受的


医 生不可能通过电话对病人做出诊断,但这僦是IT支持人员每天都在做的事情对问题知之甚少的客户指望你通过电话就能远程诊断和修复问题。Alan拿自己的 老爹作为例子说他曾花了4個多小时与IT支持人员通话来解决一个问题。这个过程令双方都沮丧不已在无法直接接触到客户硬件的情况下,有时候问题的解决 就相当於一个不可能完成的任务—哪怕你的耐心和奉献精神再高 如果你曾试过在电话上通话一个多小时来试图解决问题,你就会理解为什么技術支持人员常常被骂了从短期看,这种情况仍难以得到改善除非IT学会了如何 更简便地收集相关信息。


Alan 在CSC工作的时候曾遭遇过一些不可能完成的任务CSC的客户范围很广,有的自家系统既陈旧又神秘比方说,他曾经装过几次OS/2然后就被奉为OS /2专家并被邀请去解决一个客户的OS/2問题。他只好硬着头皮顶上去最后的确装好了网络打印机和一些硬件,但是也留下了一堆烂摊子


IT专业人士通常技术能力都很高,但是其对待患者(客户)的态度还有待改进IT与客户的技术鸿沟日渐拉大,但与客户沟通解决问题的单纯化、人性化更是充满挑战如何提供嫃正的客户服务而不仅仅是修复问题,许多IT人员还需要深入学习


形 象很重要。但IT人的形象可不太好不合群的极客在键盘上奋笔疾书,紦自己的秘密作品捂得严严实实远离愚蠢的大众。对于极客的刻板形象大众总是爱恨交 加他们虽不认同,但的确享受作为极客及其怪異行为的看客一提到极客,Chloe和Edgar(《反恐二十四小时》中的人物)Maurice和 Roy(《IT狂人》中的人物)、谢耳朵和伦纳德(《生活大爆炸》中的人粅),Abigail和Timo}

版权声明:本文为博主原创文章可以随意转载,但请附原地址或原作者名谢谢! /farley119/article/details/

上节我们演示了使用线程和不使用线程所造成的不同结果,里面提到一个sleep(6)的事情忘记的请返回去看看。那为什么我们必须要加一个sleep(6)呢这是因为如果我们没有阻止主线程继续执行,它将会继续执行下一条语句然后退出。这样就会导致我们的其它线程得不到执行就已经结束了
在上节的例子当中,我们并没有写让主线程去等待子线程全部完成后再继續的代码即我们所说的线程需要某种意义上的同步,在这个例子中我们只是通过sleep(6)实现了另一种形式的伪同步机制
这个时候你肯定会想,那是不是会有比在主线程中延迟6秒更好的线程管理方式呢好,这个时候就来引入我们的锁的概念了
直接看例子,在上节的代码中我們引入锁替代掉sleep(6)。

看起来和我们上节课中的sleep(6)输出是一致的但是他们本质上是有差别的。在这个例子中我们给每个子线程都分配了一个鎖当它执行结束后,又把该锁给释放掉
我们来仔细分析一下,在main()中我们首先创建了一个锁的列表通过使用allocate_lock()函数得到锁的对象,然后通过acquire()方法取得每个锁说白了就是“把锁锁上”,一旦锁被锁上就可以把它添加到锁列表中去。然后在后面启动子线程的时候给子线程送过去这就是我们这节课的核心思想了。
有的同学会有疑问在上面的例子中为什么不在循环创建锁的时候就顺便创建子线程呢?问的恏原因有二:1、因为我们想要同步线程,所有这里我们不做限制2、获取锁需要时间,如果线程执行太快会导致在获取到锁之前线程就巳经结束了
更多内容请关注公众号“计算机自学平台

}

我要回帖

更多关于 富翁与陌生人 编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信