- 论坛徽章:
- 0
|
工作9年了,对算法有点感触,我来说说。
有次看电视,采访一个厨师里面的大师,他的招牌菜是鱼香肉丝。
这个菜,估计中国非常多的厨师都会做。
采访他时,他说,他炒菜时,要先看看这菜是给谁吃。
如果是上海人,他辣子少放点,多放点糖。
如果是四川人,他辣子和花椒会多放点。
如果是江西人,他多放辣子。
如果里面男人居多,他多放肉。
......
我个人认为,这个厨师大师,如果来写程序的话,他应该会在算法上花费很多功夫的。
另外,中国绝大多数的厨师,炒菜时,又有几个象他这样用心去琢磨吗?
其实,解决了生存问题后,任何程序员都可以用心去琢磨自己的程序,慢慢地在自己的开发中涉及到算法。
当然,那些还没解决生存问题的程序员们,能把老板交代的工作完成了,是第一重要的,算法离他们还太远。
这个就如同普通的一个士兵,在战场上,第一重要的是如何保护自己的性命,如果这点都做不到,那里能谈到杀敌,更不用说战法,战术,战略......
我运气比较很好,从2002年7月份到现在,我差不多一直和搜索引擎打交道,在这个领域里面,算法往往很重要。
举个例子,URL排重的问题。
spider抓取回来很多URL,如何发现这些URL是新找到的?还是已找到的?
估计很多程序员,解决这个问题会有下面类似步骤:
step 1:
使用数据库进行存储,建立库表结构,新找到一个URL,就把它扔到数据库中,如果已有了就不存储进去。
/****************************
*后来出现问题
*(1)URL有上亿个,数据库存储不了,数据库的存储和查询速度太慢。
*(2)a.asp?a=1&b=2和a.asp?b=2&a=1实际上同样一个URL。
****************************/
step 2:
建立URL参数序列化处理,把各个参数按照一定规则来处理。
比如说:把URL中参数按照ASCII码大小进行序列化,a.asp?b=2&a=1的全部转化为a.asp?a=1&b=2。
另外,使用STL中的MAP来进行存储,存储/查询时间快。
/****************************
*后来出现问题,URL过多后,MAP还是比较慢。
****************************/
step 3:
自己写hash,取代MAP,提高速度。
/****************************
*后来出现问题,单台服务器的内存,存储空间有限,继续改进hash算法,用多台服务器进行分步存储。
****************************/
step 4:
......
/****************************
*发现新的问题,继续改进........
****************************/

[ 本帖最后由 xtthnfr 于 2007-8-31 18:43 编辑 ] |
评分
-
查看全部评分
|