在这个难以入眠的夜里,乔布斯年在斯坦福的演讲里说的“Connecting the dots”又萦绕耳际,即当我们往回看,就清楚了

自己曾经的生活和现在甚至将来是串联在一起的,这些经历决定了我们事业、生活的走向和方式。韦哥这两年都没有过五

四青年节的权利了,回忆青春,可谓“从前的点点滴滴回涌起,在你五味杂陈的心里”。

大学毕业的时候,我有了一年多的Windows VC++的编程经验,相对于周围的同学来说,算是比较“会写程序”的了,

因为你懂的,大学里普遍被认为正事的是打游戏,即使是计算机专业的学生,也很少有编程经验,而且普遍对编程有

一种恐惧感。10月份的时候,我就去一公司的软件出口事业部进行实习面试,虽然感觉表现不够好,但还是通过了面

试,给的待遇还可以,一个月挣的钱相当于在学校里一年的生活费,让我这个农村出来的穷孩纸受宠若惊。于是没有

想太多就去实习,之后也正式入职了。现在回想起来,我觉得当时在应届生里我还是有一些竞争力的,为什么没有去

多尝试几个公司,多面几次试呢。现在想想,并没有多少后悔,但还是觉得当时应该多试试,多选择。我也曾经年少

轻狂,英语6级考试就是一直不愿意考,因为学校规定大二结束才能考四级,而我大二时已经在背GRE单词了,大三

直接拿牛津字典看了,我觉得大三后再去考6级是对我的侮辱,我北大的同学大一就过6级了。我自认为英语不错,拿

过两次竞赛奖,虽然最好的也只是全国竞赛二等奖,但我认为我大一或大二过6级是没问题的,那样我才会有成就

感。现在看到一些招聘要求写着英语6级时,我只能笑笑。

第一份工作是Windows开发,接下来5年,我顺理成章地继续Windows开发的工作,从应用层到内核驱动,还一度对

软件破解有些兴趣,经常上看雪论坛逛逛,下载一些软件然后使用Olldbg、IDA Pro做一些分析,并学会用Windows

Sysinternals上的那些工具。Windows编程的书籍如《Windows核心编程》、《深入浅出MFC》,《Windows内核原

理与实践》、《Windows驱动开发详解》、《寒江独钓-Windows内核安全编程》、《c++反汇编逆向分析技术揭秘》

等等书籍读了个遍。我最后一份Windows工作试用期结束时,领导给我的评语是“解决问题能力强,尤其在Windows

编程领域,具有专家级的水平”,虽然我自己认为评价过高,但心里还是有些高兴,因为这些年持续不断的学习似乎得

到一些认可。然后我参加微软的远程上机面试,职位是内核驱动开发,给银行做项目。面试后他们给我的评价是:对

Windows内核驱动开发基本了解,但加密算法方面没有达到项目要求。

然后我就找到了现在的这份工作,第一个项目是调试一个开源项目,包括Windows内核驱动、Linux内核驱动和应用

程序。我之前只是装过几次Linux,大部分的命令都不会用,但是为了做项目开始加速学习,一个多月下来,从对

Linux比较陌生到学会调试其内核驱动并分析内核代码,基本的命令使用也熟了。其实在有了Windows经验以后,我

学习Linux还是比较顺畅的,虽然有些东西需要时间的沉淀。比如在Windows下,我会去了解PEB、TEB这些内核的

进程、线程数据结构,PE文件格式,内核同步机制等这些东西,那么到了Linux这边,我也会去找类似的东西是怎么

实现的,于是就会了解task_struct,ELF,spinlock等东西。但是原来有些我在Windows需要借助比如反汇编工具去看

的东西,在Linux下我可以看源代码了,这让我有一种自由和舒畅的感觉。接着,我打算开始研究Linux内核。

现在的业余时间里,我就研究Linux内核源码和虚拟化技术,分析开源云平台如OpenStack代码,这些对于做云计算的

人来说绕不过,虽然有些人可能觉得做云计算就是拿开源的东西来搭建一下就完事,但我自己觉得这样的云计算至少

我自己是不敢用的,同时我认为如果一个公司要做公有云,没有自己的内核和虚拟化团队做支撑,只是想拿个KVM或

Xen装装就能为客户服务,简直就是给自己埋了个定时炸弹。

我有时候会想,如果我从一开始就接触Linux编程而不是Windows,那么我前五年的时间就是在做Linux开发,以我的

性格肯定早就研究了Linux内核,这样我对Windows程序可能一窍不通,但对计算机的理解、对Linux内核的实现机制

的理解、对各个协议栈实现的理解一定会远远高于现在的水平。但是回到乔帮主的“Connecting the dots”,谁又能知道

我因为对Windows的较为深入的理解,加上对Linux内核的继续探索,会在未来给我带来怎么样的连锁反应呢。虽然我

也知道,有些人可能永远不会去了解内核,但同样能用shell、python写出挺溜的东西,喜欢研究内核的,在做同样的

事情时,并没有能表现出多少优势。但是我还是希望自己了解更多底层的知识,不喜欢被蒙在鼓里的感觉,并且相信量

变到一定程度会引起质变。

我有一个缺点同时也能勉强认为是优点,就是醉心于资料收集。不好的地方在于,花了那么多时间去收集资料,而真

正用心去研究带来水平提升的少,没有达到本来的目的。好的地方在于,通过这些我极大开阔了自己的视野,一般同

事们遇到什么技术方面的问题时,我总能告诉他们哪儿有这方面的较好的资料可以学习,或者翻出藏在我电脑某个角

落里的文档让他们看。好的地方还在于,因为长时间的关注,每当我打开微博、微信、RSS阅读器时,那些技术干

货资料、各种技术大会的分享信息就从四面八方涌过来,使我能更迅速地了解行业资讯,更快的找到我想学的东西,

但不是我去google,而是它们给我推送D。

如果你看到这里,应该对我有些了解了,如果你也是搞云计算方向并有意愿交流的,可以跟我联系,邮箱:

wwsh52@sina.com。如果感觉对我还是没什么了解,那我觉得还是婉拒垃圾推销等邮件吧,你知道,我不

会买的。

About me --- Connecting the dots的更多相关文章

  1. 《Connecting the Dots: A Knowledgeable Path Generator for Commonsense Question Answering》一文的理解和总结

    构建常识问答知识路径生成器 论文贡献 ​ 提出学习一个多跳知识路径产生器来根据问题动态产生结构化证据.生成器以预先训练的语言模型为主干,利用语言模型中存储的大量非结构化知识来补充知识库的不完整性.路径 ...

  2. SIGKDD历年Best Papers

    作者:我爱机器学习原文链接:SIGKDD历年Best Papers SIGKDD(Data Mining)(1997-2016) 年份 标题 一作 一作单位 2016 FRAUDAR: Boundin ...

  3. 【乔布斯05年斯坦福大学毕业典礼上的演讲】——Stay Hungry, Stay Foolish.(转)

    Steve Jobs: Commencement Address at Stanford University "Stay Hungry, Stay Foolish." 求知若饥, ...

  4. 每日英语:A New Way to Learn Chinese

    Entrepreneur and author ShaoLan Hsueh thinks that English-speakers can start learning to read Chines ...

  5. You've got to find what you love

    你必须找到你爱的东西 You've got to find what you love 史蒂夫乔布斯2005年6月在斯坦福大学毕业典礼上的演讲 I am honored to be with you ...

  6. Stay Hungry, Stay Foolish--2005斯坦福大学05年毕业演讲

    转自http://www.cnblogs.com/daizhj/articles/1493813.html 斯蒂夫•保罗•乔布斯(Steve Paul Jobs,1955年2月24日出生-)是蘋果電腦 ...

  7. 数据挖掘方面重要会议的最佳paper集合

    数据挖掘方面重要会议的最佳paper集合,兴许将陆续分析一下内容: 主要有KDD.SIGMOD.VLDB.ICML.SIGIR KDD (Data Mining) 2013 Simple and De ...

  8. AGC017 F - Zigzag

    传送门 Time limit : 4sec / Memory limit : 256MB Score : 1600 points Problem Statement There are N(N+1)⁄ ...

  9. Data Visualization – Banking Case Study Example (Part 1-6)

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

随机推荐

  1. Luogu【P1725】琪露诺(单调队列,DP)

    本文是笔者第二篇解题报告.从现在开始,会将练的一些题发到博客上并归类到"解题报告"标签中. 琪露诺是这样一道题 这道题可以用纯DP做,但是据说会超时.(为什么?看起来过河这题比它数 ...

  2. vue当中设置全局变量的方法

    import fn from 'fn' Vue.prototype.fn = fn; 调用的时候 this.fn.way

  3. element-ui复合型输入框的显示问题

    按照官方文档那样发现,最左边的选择器里面的字显示不出来,解决方法是在为el-select设置宽度,就可以正常显示了

  4. 3D标签

    动态实现3D标签, 主要代码: // // XLMatrix.h // XLSphereView // // Created by 史晶晶 on 16/4/4. // Copyright © 2016 ...

  5. jdk1.7升级到1.8遇到的问题

    1.修改project structure 里面的Project , Modules , SDKs jdk的版本 2.修改Java Compiler 里面java的jdk版本 3.tomcat 里面j ...

  6. SharePoint中使用Global.asax

    Global.asax是ASP.Net应用程序的一个文件,用来处理Application级别的事情.可以添加自定义代码到这个文件,详细使用方式见 http://msdn.microsoft.com/e ...

  7. Django 博客首页视图

    Django 处理 HTTP 请求 Web 应用的交互过程其实就是 HTTP 请求与响应的过程.无论是在 PC 端还是移动端,我们通常使用浏览器来上网,上网流程大致来说是这样的: 我们打开浏览器,在地 ...

  8. POJ 3468:A Simple Problem with Integers(线段树[成段更新])

    题意:N个数Q次操作.一共两种操作:Q l r :询问[l,r]这个区间里的数字和,C l r c: [l,r]区间里的每个数都加上c.1 ≤ N,Q ≤ 100000. 方法:线段树的成段更新.注意 ...

  9. LeetCode OJ--Binary Tree Postorder Traversal

    http://oj.leetcode.com/problems/binary-tree-postorder-traversal/ 树的后序遍历,可以使用递归,也可以使用栈,下面是栈的实现代码 #inc ...

  10. 如何循序渐进向.NET架构师发展

    微软的DotNet开发绝对是属于那种入门容易提高难的技术.而要能够成为DotNet架构师没有三年或更长时间的编码积累基本上是不可能的.特别是在大型软件项目中,架构师是项目核心成员,承上启下,因此RUP ...