您的位置:首页 > 理论基础 > 计算机网络

研究技术要多多思考

2012-05-26 10:09 211 查看
    我们知道一个新知识在大脑中生根发芽,其实是一个跟以往知识发生联系的过程,为什么死记硬背容易忘记?道理是很简单的,孤岛从来都是大脑中遗忘对象的最佳候选,做为一个跟以往经验发生交互和连接的新知识,从生理学的角度来讲,在突触的连接数量和健壮性上有着明显的优势。

    扯完关于生理上的知识后,我们应该得到某些启发,如何让新知识跟已有的认知系统发生足够的联系呢?答案很简答,那就是多去思考,多问自己为什么。

    许多时候你看了一个知识,找到了一篇很好的博客,读到了里面很多你认为很有用东西,你记住了,而且你认为自己已经掌握了。但是你有没有反问过自己,这个东西你真正掌握了吗?有问过自己为什么吗,例如,为什么这样做很有用,这样做是最好的吗,除了这些优点,有没有哪些缺点呢,它跟类似的技术比较,先进性是什么。。。其实值得思考的东西真的不少,就看你是否是那种“最牛角尖”,喜欢追求事情本质的人了。

    这些道理大家也许都懂,但却很少人去做。现在技术的爆炸性增长,新东西不断的涌现,让我们在追赶技术的道路上,叫苦不迭。有这种想法的你是否该好好反思一下呢?你的基础知识和基本理论是否足够扎实。许多时候你在学习技术的道路上所遇到的难点,很大程度上是因为一些基础的东西理解不够深刻造成的。不要看不起那些在你眼里陈谷子烂芝麻的“基础”,它们并没有你想象的那么基础。

说了这么多,你可能都嫌我啰嗦了,那举几个例子来说吧。

1. 大家都学过操作系统课程,那么有个问题你有没有具体想过,32位系统下一个应用程序的线性地址空间是多少呢?4G,你肯定知道。那么你有自己分析过这个结果是怎么来的吗,还是仅仅是在某本书上看到过“32位系统应用程序的线性地址空间为4G“?这4个G可以怎么用,从哪开始用,全部的空间都会用到吗。

2. 大家在编程的时候经常涉及到多进程多线程的概念,那么有没有问过自己,我真正懂了吗?看这样几个问题:
为什么会出现多进程和多线程这样的技术,他们的出现是为了解决什么问题?多进程和多线程有什么优点和缺点,什么样的程序适合多进程,什么程序适合多线程?这些在你脑海里是否足够清晰。如果不是,那么就好好考虑一下吧。

3. 你在做服务器程序的压力测试时候,可能会碰到测试用的客户端端口不够用的情况,那么这个问题怎么办,如何决绝呢?
你可能google了一下,别人告诉你,去改下proc文件下面关于tcp的一些参数,例如tcp_tw_reuse, tcp_tw_recycle,你发现问题神奇般的得到了明显的解决,并且你也查到这个问题是由所谓的TIMEWAIT造成的,你认为你掌握它了吗?这个东西是做什么用的呢?为什么会出现这个东西,既然它经常给我们带来问题,干脆去掉得了,它存在的意义是什么?tcp_tw_reuse和tcp_tw_recycle又跟TIMEWAIT有什么关系呢?

4. 为什么建立连接需要3次握手,断开时需要4次?中间的各种状态迁移的作用和意义是什么?这些有考虑过吗?别人问你,你能很流畅的给别人讲明白吗?

5. http的长连接你可能很熟悉吧,我的问题是为什么会出现长连接的方式?它的需求是什么,它跟短连接相比较,有哪些优点和缺点呢?
如果你说出了长连接的很多优点,那为什么还要短连接干嘛,为什么不全部改成长连接?关于长连接,你有去调研过浏览器的行为吗?他们是如何去做的呢?还是一切都是你想当然?

6. 你也许知道并发请求越多,对于同一太机器,平均响应时间就会变长。但是你是否去考虑过,为什么时间变成长了,机器发生内部发生了什么变化?不要告诉我,那”很显然“,你能很清晰,很条理的讲清楚吗?

   上面的这些例子,只是作为一种启发,要揭示的道理很简单,如果你热爱技术,那么就应该有一个爱问为什么的头脑?多去思考,而不要浮于表面,只有去思考过,问过为什么,大脑中的连接和整合机制才会去运作,你离真正掌握它,才会更近。

   如果你有《TCP/IP协议详解》,《unix环境高级编程》,《深入理解计算机系统》等这些书经典的基础理论书籍,拿出来看吧,当你说你看过了的时候,请反思一下,你问过足够多的为什么吗?自己面对一个喜欢问为什么的菜鸟,你能把许多东西讲的透彻明白吗?找人试试吧^_^.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息