在这个难以入眠的夜里,乔布斯年在斯坦福的演讲里说的“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. linux下Apache+Svn环境搭建(五)

    在搭建之前先准备好如下包,建议去apache官网去下载:http://httpd.apache.org/ apr-1.4.6.tar.gzapr-util-1.4.1.tar.gzhttpd-2.2. ...

  2. python time模块 sys模块 collections模块 random模块 os模块 序列化 datetime模块

    一 collections模块 collections模块在内置的数据类型,比如:int.str.list.dict等基础之上额外提供了几种数据类型. 参考博客 http://www.pythoner ...

  3. 关于后台返回excel文件的问题

    一般情况ajax请求只能获取解析非流文件类型,而excel是流文件类型,这个时候获取到的数据会是一串乱码的字符串 想要下载这个excel文件,通过form表单模拟的方式可以解决 var form = ...

  4. LA 6450 social advertising(dfs剪枝)

    6450 Social AdvertisingYou have decided to start up a new social networking company. Other existing ...

  5. javaweb学习总结(九)—— 通过Servlet生成验证码图片(转)

    (每天都会更新至少一篇以上,有兴趣的可以关注)转载自孤傲苍狼 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  6. 解决使用webbrowser请求url时数据传递丢失问题

    问题: 使用“ this.webBrowser.Url = new Uri(webBrowserUrl);”方式请求Action(Java Web)并传递数据,在webBrowserUrl中携带的参数 ...

  7. R语言实战读书笔记(七)基本统计分析

    summary() sapply(x,fun,options):对数据框或矩阵中的每一个向量进行统计 mean sd:标准差 var:方差 min: max: median: length: rang ...

  8. free如何知道释放内存长度:vs与glibc分配内存时编译器内部处理

    鉴于网上这个资料实在太少,将以前整理过却未完全的一篇文章贴出来,希望大牛指正vs下内存管理方式.可联系gaoshiqiang1987@163.com vs分配内存 vs没有源码,编译器在分配内存时,分 ...

  9. 网络流24T 太空飞行计划问题

    题目背景 题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的 ...

  10. javascript --- 兼容的那些事

    绑定事件 var addEvent = function( obj, type, fn ) { if (obj.addEventListener) obj.addEventListener( type ...