Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1105005
  • 博文数量: 141
  • 博客积分: 3161
  • 博客等级: 中校
  • 技术积分: 3011
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-27 14:53
文章存档

2012年(28)

2011年(113)

分类: IT职场

2011-09-29 12:33:30

脚踏实地,不要飘忽不定

   前言:老老实实,扎扎实实,把基本动学好,不要动辄“架构”,“模式”。 很有段时间没有写博客了,不知道大家想我了没有!呵呵!

            

   最近接触到了不少开发人员,有刚刚踏入IT的,也有刚刚毕业的,也有已经工作了好几年的,总是问我一些比较莫名其妙的问题:“如何培养抽象的思维?”,“如何学习架构?“等等诸如之类的问题。之所以说”莫名其妙“,是因为这些问题任谁也不好回答,看起来是个问题,其实等于没有问!

 

   在后来和这些开发人员讨论的过程中,发现很多的基本都是“随大流,舍本逐末”。例如,认为ASP.NET就是拖控件,如果会开发自定义控件的,就算是牛X了。学了一点JQuery,越是网页中到处是JQuery,开始鄙视服务端控件。学了一点Ajax,所有的请求都是异步的了。学习了MVVM,就算是精通WPF,SL了。学习了.NET中的反射,不得了了:高级东西啊,到处用!学习了一点设计模式,于是认为“已经精通架构设计”,架构就是“设计模式”等。

 

    有些朋友也认为“做网站“没有技术含量,我就随便问了几个问题,例如:如何一ASP.NET站点,并且全球的用户量不断增加,已经达到了日访问量上百万,以后还会增加,于是性能成为了很大的问题,如何解决?

1.      请求优化,开启多少TCP链接,是否DNS缓存,

2.      页面加载优化:页面资源加载策略(jscss,图片,都是各不相同的)

3.      Web Farm负载均衡使用

a.      负载均衡的原理

4.      IIS优化,例如数据压缩,IIS内核缓存。

5.      数据读取优化,例如采用缓存,减小数据库压力(可以提出分布式缓存问题)

6.      缓存的相关策略,例如缓存什么数据,缓存多长时间。

7.      数据库分压问题:

a.      如,什么时候需要采用数据群集技术,

b.      如何进行数据库读写分离,

c.      如何进行主动数据库之前的数据同步,

d.      如何对数据库进行水平拆分,

e.      如何对数据库进行垂直拆分。

 

    有时候,只要反问一个简单问题,那些人基本就熄了:既然你精通ASP.NET,能不能把 从在浏览器中输入一个Url地址开发,到看到这个页面的输出,这其中涉及到的每个过程具体的描述一下?

 

    到现在为止,还没有见过几个人能够把这个过程描述清楚的,很多人都是简单的描述:发送请求,IIS接受,ASP.NET 运行时处理,返回结果。稍微好点的还知道有个“页面生命周期”?如果问问“请求经过的管道处理周期”,基本就看不住了。如果随意在其中任意挑一个小细节问下去,很多人就开始打马虎眼了!

    

   其实上面的问题,回答起来,是需要一定的功力的,从浏览器发送TCP请求,通过DNS寻找域名,然后“三次握手”,然后服务器开始处理,http.sys检测,IIS接受请求,加载ASP.NET运行时,然后为初始化Domain,读一些config,加载相应的权限等等。

 

    很多时候就是这样,对技术,很多的开发人员都大体上知道是个什么东西,如果稍微深入细节一点,知道的人就很少了。一旦问了问题,或者在做设计的时候,考虑的往往就不周详,漏洞百出!其实有个体会“知道的越多,发现自己知道的越少”!“细节决定成败!”

 

    也曾经告诉一些做.NET开发的朋友,把基本功能搞好(这里不是指的计算机学科的那些基本可能)。例如,知道程序集是什么东西,有什么组成,什么是清单,PE表头,知道一些IL的知识,了解一些垃圾回收的机制,了解什么是对象复苏,知道委托和事件是怎么做的,知道对象在哪里分配的等等。起码先把把语言关过了,再谈后面!

 

    今天算是即兴发言!有机会大家一起探讨!

阅读(1448) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~