- 論壇徽章:
- 0
|
工作9年了,對算法有點感觸,我來說說。
有次看電視,采訪一個廚師里面的大師,他的招牌菜是魚香肉絲。
這個菜,估計中國非常多的廚師都會做。
采訪他時,他說,他炒菜時,要先看看這菜是給誰吃。
如果是上海人,他辣子少放點,多放點糖。
如果是四川人,他辣子和花椒會多放點。
如果是江西人,他多放辣子。
如果里面男人居多,他多放肉。
......
我個人認為,這個廚師大師,如果來寫程序的話,他應該會在算法上花費很多功夫的。
另外,中國絕大多數的廚師,炒菜時,又有幾個象他這樣用心去琢磨嗎?
其實,解決了生存問題后,任何程序員都可以用心去琢磨自己的程序,慢慢地在自己的開發(fā)中涉及到算法。
當然,那些還沒解決生存問題的程序員們,能把老板交代的工作完成了,是第一重要的,算法離他們還太遠。
這個就如同普通的一個士兵,在戰(zhàn)場上,第一重要的是如何保護自己的性命,如果這點都做不到,那里能談到殺敵,更不用說戰(zhàn)法,戰(zhàn)術,戰(zhàn)略......
我運氣比較很好,從2002年7月份到現在,我差不多一直和搜索引擎打交道,在這個領域里面,算法往往很重要。
舉個例子,URL排重的問題。
spider抓取回來很多URL,如何發(fā)現這些URL是新找到的?還是已找到的?
估計很多程序員,解決這個問題會有下面類似步驟:
step 1:
使用數據庫進行存儲,建立庫表結構,新找到一個URL,就把它扔到數據庫中,如果已有了就不存儲進去。
/****************************
*后來出現問題
*(1)URL有上億個,數據庫存儲不了,數據庫的存儲和查詢速度太慢。
*(2)a.asp?a=1&b=2和a.asp?b=2&a=1實際上同樣一個URL。
****************************/
step 2:
建立URL參數序列化處理,把各個參數按照一定規(guī)則來處理。
比如說:把URL中參數按照ASCII碼大小進行序列化,a.asp?b=2&a=1的全部轉化為a.asp?a=1&b=2。
另外,使用STL中的MAP來進行存儲,存儲/查詢時間快。
/****************************
*后來出現問題,URL過多后,MAP還是比較慢。
****************************/
step 3:
自己寫hash,取代MAP,提高速度。
/****************************
*后來出現問題,單臺服務器的內存,存儲空間有限,繼續(xù)改進hash算法,用多臺服務器進行分步存儲。
****************************/
step 4:
......
/****************************
*發(fā)現新的問題,繼續(xù)改進........
****************************/

[ 本帖最后由 xtthnfr 于 2007-8-31 18:43 編輯 ] |
評分
-
查看全部評分
|