博文

目前显示的是 四月, 2011的博文

2011-4-30

现在我安安稳稳趟在自己的床上。从北京到陕西,虽说有上千公里,但是一晚上也就到了。也许是我太迟钝了,也许是我之前几年实在太顺了,我现在才体会到,做架构师比做开发工程师难很多倍。这个难不在于技术上,而在于如何让自己的想法展现出来。作为一个架构师,就像产品经理,要有自己的想法自己的风格,既有特色又要能得到普遍赞同,是很难的。每天面对很多信息,有的是确实有价值的技术文档,有些不过是商务部门托人写的软广告。不仅我要能分辨,我还得说服我的队友去分辨。不是你在网上看别人说它好,它就真的好。JAVA更不是别人说它慢,它就真的慢。作为一个普通工程师,很简单,努力把语言学好,努力把OS的API熟悉,把数据结构、把算法、把XXX产品的原理搞明白就行了。而做架构师有时候很苦鳖,如果不是特别有资历,或是职位很高,就得花很大力气去做PPT,去推销。所以陌生人和陌生人初次见面,适合谈具体算法具体工具此时的天气,却不适合谈艺术理念设计思维。Programming Language甚至成了工程师的信仰,当我给一个不会JAVA的Linux工程师说C++是一门弱类型的语言时,我是多么的伤了他的心啊。互联网一直在以轻巧明快的方式发展,总想着用一个什么新工具新技术就刷拉一下解决了问题。可是,你所依赖的,不都是别人的产品吗? 你有何竞争力? 要做好PM,就要把OO的思想理解到骨子里去,贯彻到骨子里去。真是为了做好一个项目,就不要太追求技术上的标新立异。为什么非要搞分布式,明明我能以很简单的方式解决,明明架构越简单越容易做HA,为何要整那么复杂? 明明svn就够用,我为什么要上git?我不知道互联网公司有多少架构师是把精力花在如何提高软件开发效率上的,太少了,太少见了。那么多PPT,没一个提这个。我们面临的问题真的是前无古人后无来者的吗?非要用很特殊的技术手段才能解决?所以总是把精力花在细枝末节上的性能优化上,而不是把软件项目本身看成一个工程项目。在快要离开W公司的时候,我有一个很得意的作品。我花了10天的时间开发了一个小工具,给每个数值策划节省了至少2个月的工作量。不是我王婆自夸,是另一个程序总监这么评价这个小工具的。可是你说,这样的破玩意儿,做起来很简单,根本体现不出来我是一个多么牛B的程序员啊!!!根本体现不出来!!我甚至没脸把它写到我的简历中去。对我的技术水平得不到什么提升。我做它为什么?我做它为什么…

为什么用Btree

Flash、NVM之类的新型存储器的出现,对数据库技术产生了颠覆性的革命。于是我决定从头好好学学数据库理论,以寻找它究竟在哪些方面产生了颠覆性的改革。题外话:今天有个朋友问我,如何在内存中高效的组织和索引数据。我立马就想到了btree,被否。我想到Hash。再被否,从btree泛化到一般的m路平衡查找树。再被否,我无奈了。事后我不得不承认,一个人的思维广度,他的阅历以及内功是决定性的。后来我仔细想想,对于大部分数据都cache在内存中的情况而言,btree的确不是最优选择,红黑树应该远胜于它。Btree的出现,是因为需要在硬盘上检索数据。它对硬盘的理解是:1、基于块(通常是512字节)的方式访问。2、支持随机读写。3、访问延迟高。大约是内存访问延迟的10万倍以上。4、传输带宽小。大约是内存的千分之一左右。Btree的核心思想是,每次查找所需的IO次数基本是常量并且尽可能的小。拿Berkeley DB做例子,每个Node是一个(或几个)Page,Node被分为两种,Leaf Node和Internal Node。Internal Node只用来查找,所以可以称为索引节点,而value都在Leaf Node上,所以Leaf Node也可称为数据节点。Btree是平衡树,就意味着任何两个节点到Root Node的距离基本相等(最多相差1),从这一点保证了每次查找所需的IO次数基本是常量。而为了IO次数尽可能的小,就要控制树的高度,所以才用了m路的方式,即它不是一个二叉树也不是三叉数,而是一个m叉树。m通常很大,所以高度一般都在5以内。继续拿Berkeley DB分析,来估算m最大是多少。它的每个page都有一个唯一整数来标识,且称为page id。那么单表理论上限=2 ^ (sizeof(page id)*8) * pagesize,一般来说,page id是32位整数,那么就是16TB。今天那个朋友质疑我,你用32位来存这个是不是太浪费了?因为他的情况是,实际要存的value也不过是一个32位整数。那么好,假如page id是16位,那么上式的结果是256MB,我相信对于大多数应用都是不能忍的。(这些数据都是我笔算的,而不是从网上找来的。我一直怀疑我会不会哪步算错了。如果你发现了,请告诉我)缩短page id的长度,无非是希望索引页能存更多的key。每个页面的key的…

箭扣,我还会来第三次的

4月3日和4日,我组织了14个人(含我)去爬位于怀柔境内的明代野长城——箭扣。野长城的意思是说,未经开发,无安全保护措施,禁止攀登。但是在中国这个有特色的地方,虽然禁止攀登,但是门票照收。
我第一次来箭扣是09年10月,当时是和一群北外、民大的朋友。当时最大的感触就是:很惊险很刺激。那天我一直爬上了天梯,越过了“短”鹰飞倒仰。基本上就是,凡是领队不阻止的,越危险越刺激越要上。
今年清明小假,是我第二次来箭扣。这次的目的已和上次完全不一样,这次我是领队。事前我查了大量资料,做了详细的活动规划,路线示意图、地形图、费用预算表、订房间,等等。然后我就特别想能把那几千字的文档,也就是活动规划,实实在在的成功实施。Plan it, Do it and Done。我这次最大的收获不在于翻越“北京结”,而在于如何做好一个领队,以及如何做计划、调整计划、实施计划。
箭扣我还会去第三次,只是会更加谨慎。我没有必要跟那些险坡较劲,寻找安全的道路绕过去,散心,看风景,拍照。下次去,就真的是欣赏自然之美了。
活动细节我改天发吧,东西比较乱,需要整理。

我今天被一个小软件愚弄了

我今天打开cheat engine,然后它弹出对话框说,“Your license to use Cheat Engine has expired. You can buy a license to use cheat engine for 1 month for $200, 6 months for only $1000 and for 1 year for only $1800. If you don't renew your license Cheat Engine will be severely limited in it's abilities. (e.g: Next scan has been disabled)”。我当时还琢磨了好一阵子,心想一万多RMB一年,怎么这么贵。后来想,不对啊,这个软件明明是开源的,我机器上还有源代码呢,那我自己编译一个?再一想,今天是愚人节!