2010年7月1日
深圳或杭州的兄弟姐妹有誰(shuí)有興趣到華為的嗎?
要求重點(diǎn)本科2年
經(jīng)驗(yàn)/碩士1年經(jīng)驗(yàn),有C語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn)。有興趣的將簡(jiǎn)歷
發(fā)到
kgha@sohu.com,謝謝!
2007年8月12日
經(jīng)過(guò)3天沒(méi)日沒(méi)夜的定位,終于把一個(gè)阻塞近一個(gè)周的問(wèn)題解決了,再拖下去估計(jì)老大要把我給吃了。回想起這三天定位的過(guò)程,簡(jiǎn)直不亞于任何一部偵探小說(shuō)。無(wú)數(shù)次的失望,無(wú)數(shù)次的毫無(wú)頭緒或者千頭萬(wàn)序,但總能在關(guān)鍵時(shí)刻發(fā)現(xiàn)點(diǎn)點(diǎn)蜘絲馬跡,引導(dǎo)問(wèn)題進(jìn)一步深入。猜想、驗(yàn)證、再猜想、再驗(yàn)證。幾乎每次都覺(jué)得問(wèn)題很快就會(huì)找到頭緒了,結(jié)果測(cè)試的數(shù)據(jù)無(wú)情的否定了猜想。但是又能根據(jù)測(cè)試結(jié)果引入更加深層次的問(wèn)題。定位過(guò)程走了很多彎路,現(xiàn)在回想起來(lái)感覺(jué)就是磕磕碰碰的走過(guò)來(lái),很多沒(méi)有必要的工作也浪費(fèi)了大量的時(shí)間。真是有山窮水盡疑無(wú)路、柳岸花明又一村的感覺(jué)。真是佩服古人能用如此精確的語(yǔ)言把這種感覺(jué)說(shuō)出來(lái)。要是我想到死也想不出如何形容當(dāng)時(shí)的感覺(jué)了。^_^
每次定位完一個(gè)問(wèn)題后,在整理思路的時(shí)候,總是感覺(jué)這是多么自然而然的事情啊,居然當(dāng)時(shí)沒(méi)有想到。哈哈,可能很多人都有同樣的感受,可是真正身在其中有太多的因素干擾你,把你引入歧途,等你發(fā)現(xiàn)的時(shí)候又要從頭而來(lái)。由己及人,我們對(duì)待別人的問(wèn)題是否也是這樣,一個(gè)看似很簡(jiǎn)單的邏輯其中也包含了別人在很多錯(cuò)誤基礎(chǔ)上的嘗試。或許我們?cè)诔靶e人犯錯(cuò)誤的同時(shí),更要看到別人正在向正確邁進(jìn)。
呵呵,每次寫B(tài)OLG都發(fā)現(xiàn)腦子有很多東西都混成一團(tuán),不知道從哪里開(kāi)始,寫起來(lái)東一句西一句的,可能這也是我高中語(yǔ)文作文總是不及格的原因吧。看來(lái)要找時(shí)間好好整理下自己的思路了。
2007年6月2日
如何訂閱 一切請(qǐng)看這里:http://news.yaako.com/oeflash/ 今天終于會(huì)用新聞組了。國(guó)內(nèi)的新聞組好像不太多,大部分都是外國(guó),看英文還是比較累的
下面是轉(zhuǎn)載的一篇文章:
使用Usenet(新聞組)的十大理由
1. 全球統(tǒng)一的分類。Usenet(新聞組)上有多達(dá)幾萬(wàn)個(gè)不同類別的組,而且有著嚴(yán)格統(tǒng)一的管理,更重要的是它是按分級(jí)原理組織命名的,有著清楚的脈絡(luò)可尋。組是Usenet(新聞組)的單位,服務(wù)器是居于次要地位的(當(dāng)然,前提是你總得用一臺(tái)服務(wù)器^_^)。在Usenet(新聞組)中有著數(shù)不清的服務(wù)器,來(lái)自全世界的Usenet用戶們不管你連接哪臺(tái)Usenet(新聞組)服務(wù)器,都可以找到一樣的組名、一樣的標(biāo)記,找到依舊的朋友們!論壇就不同了,每個(gè)論壇的分組幾乎都不同,而且各有側(cè)重點(diǎn),有時(shí)提個(gè)比較深的問(wèn)題還得立馬現(xiàn)找新論壇。你說(shuō)為了尋找一個(gè)答案把帖子往幾個(gè)論壇里發(fā),或者在幾個(gè)論壇里面搜索,是不是比較費(fèi)力了一點(diǎn)。
2. 分散的服務(wù)器。你只要能找到Usenet(新聞組)中的一臺(tái)服務(wù)器就行了,剩下的你就不必管了,你根本不需要擔(dān)心是否有人看到,能傳播到多大的范圍,你要相信Usenet(新聞組)的力量是無(wú)所不到的。你更不必?fù)?dān)心由于服務(wù)器突然關(guān)閉使得好不容易在某個(gè)討論組上形成的某種社區(qū)氣氛的消失;像論壇倒閉一樣,大家作鳥(niǎo)獸散,這種現(xiàn)象在Usenet(新聞組)中是絕對(duì)不會(huì)存在的!
3. 有Google替你存檔。你是不是經(jīng)常有這種現(xiàn)象:某個(gè)你曾經(jīng)看過(guò)的帖子,日后由于某種原因你突然感覺(jué)一定要重新找到再看一下,如果是在論壇,你可能得費(fèi)九牛二虎之力還不一定找得到,更不要說(shuō)可能連這個(gè)論壇都不在了;至于用搜索器搜,現(xiàn)在許多論壇都是用動(dòng)態(tài)的腳本,許多搜索器也對(duì)之鞭長(zhǎng)莫及。而在 Usenet(新聞組)中就不會(huì)有這種現(xiàn)象,任何過(guò)去的帖子你都可以用google找到,因?yàn)間oogle為整個(gè)Usenet(新聞組)保存著備份。
4. 高效的交流體驗(yàn)。很少有論壇具備「自動(dòng)跟蹤自己參與過(guò)的討論」之類的功能,菜鳥(niǎo)發(fā)表一帖問(wèn)題,第二天去尋找答案得累死他,找啊找,最后終于找到了別人給他的回復(fù)帖,你看看這要浪費(fèi)多少查找的時(shí)間!如果最終還是沒(méi)找到回復(fù)帖,他就會(huì)疑問(wèn):到底是我沒(méi)找到回復(fù)帖呢,還是根本就沒(méi)有人回復(fù)?由此可見(jiàn),論壇是一個(gè)折磨人的地方。Usenet(新聞組)不一樣,Usenet(新聞組)用新聞組閱讀客戶端獲取帖子,每一封帖子客戶端都會(huì)自動(dòng)識(shí)別,凡是你參與過(guò)的討論,你感興趣而標(biāo)記過(guò)的主題或作者,你討厭而加入黑名單的主題或作者...你的新聞組閱讀客戶端都會(huì)給你分得清清楚楚,配上不同的視圖,讓你一目了然。
5. 集中精力。Usenet(新聞組)的風(fēng)格是簡(jiǎn)樸的,功能又是最強(qiáng)大的。Usenet(新聞組)人性化的設(shè)計(jì)使得你能最大限度的將精力集中于交流本身;不像論壇,每個(gè)論壇都有不同的分類、每個(gè)論壇都有不同的版式,到了個(gè)新的論壇往往找個(gè)回復(fù)鏈接按鈕都要上下左右看一看,由于帶寬的限制以及論壇外表設(shè)計(jì)的越趨復(fù)雜,連接、下載往往會(huì)出現(xiàn)等待的現(xiàn)象(你砸鼠標(biāo)也沒(méi)用),那些和你無(wú)關(guān)的花花綠綠的flash、圖片、背景音樂(lè)充斥著你的感官,你說(shuō)你是來(lái)討論交流的還是來(lái)虐待自己的?
6. 充分的思考。現(xiàn)在幾乎每個(gè)人社會(huì)事務(wù)都很繁忙,使用Usenet可以高效率地分配你的時(shí)間。在現(xiàn)今寬帶逐漸普及的情況下,新聞組離線特點(diǎn)的意義在于能夠充分利用你的每一個(gè)空閑的時(shí)間段。上線取回一批帖子,在離線狀態(tài)下,你可以有充裕的時(shí)間和時(shí)段來(lái)精心回復(fù)你所感興趣、你所「跟蹤」的討論。所謂「文如其人」,你可以將自己的思索經(jīng)過(guò)充分醞釀后展示給世界。你不需要天天在線,只要利用好線索、跟蹤等功能,你不會(huì)錯(cuò)過(guò)你感興趣的任何討論。
7. 論壇需要登陸。你說(shuō)你沒(méi)關(guān)系反正整天掛在網(wǎng)上,靠,你是為顯示你有錢還是顯示你是個(gè)無(wú)事閑人?再說(shuō)了,即使你用隱身登陸掛著也不好啊,總會(huì)有人知道你隱身了:小樣,整天躲在背后,沒(méi)準(zhǔn)內(nèi)心陰暗著呢。你看看,你白擔(dān)了多少虛名。新聞組不一樣,新聞組就沒(méi)有在線、隱身一說(shuō),連上服務(wù)器拉回一批帖子,之后就和它沒(méi)關(guān)系了,你大可以慢慢看,就是斷斷續(xù)續(xù)地看個(gè)十天半月也沒(méi)關(guān)系,看完了,也寫好回帖了,再次連上(別嫌煩,點(diǎn)一個(gè)位置永遠(yuǎn)不變的按鈕而已)服務(wù)器發(fā)出帖子,之后就又和服務(wù)器沒(méi)關(guān)系了。
8. 以「CN」開(kāi)頭中文GB碼頂極組。2001年,正式成立了cn.*頂極組(the top CN hierachy),中國(guó)的Usenet用戶終于有了自己的家園,Usenet(新聞組)終于正式有了中國(guó)的身影。感謝news.cn99.com!感謝 PY!雖然三年過(guò)去了,中文Usenet(新聞組)一直未能真正發(fā)展起來(lái)...但是:我們相信網(wǎng)絡(luò)的力量;我們相信人之為人的自由表達(dá)的天賦權(quán)力;我們相信Usenet(新聞組)應(yīng)有簡(jiǎn)體中文的一席之地。請(qǐng)支持中文Usenet(新聞組)的發(fā)展。
9. 一份歷史文檔。在Usenet(新聞組)中,任何一封帖子都有可能成為一份歷史文獻(xiàn)。例如:當(dāng)年21歲的Linus Benedict Torvalds在Usenet(新聞組)的comp.os.minix組中的一系列關(guān)于開(kāi)發(fā)Inter 80386體系機(jī)構(gòu)的新操作系統(tǒng)的討論已經(jīng)是Linux歷史的一部分;嗯,Linus不是人人能做的,但如果你能在1981年5月11日在自己發(fā)往 Usenet(新聞組)帖子中提到一家名叫Microsoft的小公司,你同樣能名垂史冊(cè)的...
10. 不要小看了自己。Usenet(新聞組)能夠忠實(shí)記錄和實(shí)踐你的生命中每段時(shí)刻的所見(jiàn)所聞所想,你的進(jìn)步、你的困惑、你的迷茫、你的喜悅...即使你終其一生只能是一個(gè)普通人,但幾十年后自己回頭看看你一路走過(guò)的風(fēng)光,那些的只言片語(yǔ)、那些的人生思索、那些曾經(jīng)多么年輕的臉...你一定會(huì)感嘆:「哦,我當(dāng)年也不是不英俊的。」;即使你終其一生只能成為一個(gè)普通人,但并不妨礙你的后輩追隨你的足跡,以彰顯人倫的仰慕和光輝。請(qǐng)記住:人生的意義在于其過(guò)程。
好了,謝謝你終于看完這篇文檔,你愿意試試嗎?請(qǐng)?jiān)贗E或Mozilla(不是Mozilla Firefox)地址欄鍵入 news://news.yaako.com ,訂閱「cn」開(kāi)頭的系列組進(jìn)入中文Usenet(新聞組)世界(這里提醒你一下,yaako服務(wù)器中有近三萬(wàn)個(gè)分類組,下載組列表時(shí)可能要花費(fèi)一點(diǎn)時(shí)間...)。如果你對(duì)怎樣加入U(xiǎn)senet新聞組一無(wú)所知也沒(méi)有關(guān)系,請(qǐng)點(diǎn)擊下面的鏈接:http://news.yaako.com/oeflash/ , 這里有一篇關(guān)于使用Outlook Express(IE就是調(diào)用OE來(lái)進(jìn)入U(xiǎn)senet的)加入U(xiǎn)senet新聞組的視頻教程。
PS:什么?你說(shuō)什么?你說(shuō)論壇有積分,你有榮耀感?拜托,老大!都什么時(shí)代了還搞這套迂腐的東東!大俠不是積分積出來(lái)的,大俠是灌出來(lái)的!你見(jiàn)過(guò)有幾個(gè)真正的大佬,整天扛著塊牌子上寫「我是老大」?相信自己,你就是那么帥!就憑你那光輝燦爛的ID,只要你愿意,你一定能夠像cn.fan組的流星99一樣:就是發(fā)出個(gè)內(nèi)容是「呵呵」簽名有四行的帖子,大家都得認(rèn)真拜讀,從中領(lǐng)會(huì)大俠一顰一笑的真諦。
2007年3月10日
??????也不想寫什么大的東西,最近一個(gè)小的項(xiàng)目需要寫自己管理一塊單獨(dú)的內(nèi)存,包括內(nèi)存的分配和釋放。所以想自己獨(dú)立的寫個(gè)內(nèi)存分配函數(shù),其實(shí)這方面的東西,網(wǎng)絡(luò)上很多現(xiàn)成的算法。也分析了幾種算法的實(shí)現(xiàn)。有很多算法確實(shí)具有很大的誘惑,很復(fù)雜并且很完備,但是不適合簡(jiǎn)單的嵌入式管理內(nèi)存。對(duì)于現(xiàn)在的項(xiàng)目一個(gè)簡(jiǎn)單的首次適配法就足夠滿足了。
??????寫個(gè)首次適配法的內(nèi)存管理程序并不復(fù)雜,很多人在大學(xué)就寫過(guò),書上也有不少現(xiàn)成的范例,但是還是想親自寫一寫,便于對(duì)內(nèi)存分配有個(gè)清楚的認(rèn)識(shí)。
2007年3月4日
??? 最近一直想編寫一個(gè)跨平臺(tái)帶界面的GUI軟件,在linux上可以免費(fèi)用QT提供的GUI類庫(kù),但是Windows上的QT一般是收費(fèi)的(都怪微軟),沒(méi)辦法只好換各類庫(kù),本想用MFC,但是MFC本身太復(fù)雜了,涉及到很多奇怪的宏定義,對(duì)于跨平臺(tái)的軟件編寫不是太理想。如果實(shí)在找不到類似的GUI類庫(kù),只有自己通過(guò)API來(lái)寫一個(gè)了。幸運(yùn)的是,突然發(fā)現(xiàn)在codeproject上一個(gè)比較好的windows下的GUI類庫(kù):Win32++。
??? 本身這個(gè)類庫(kù)就是模仿MFC的風(fēng)格寫的,都是直接調(diào)用windows API函數(shù)完成,代碼比較清晰。很容易就可以看到作者的實(shí)現(xiàn)思路,不像MFC封裝了太多東西,學(xué)習(xí)起來(lái)太麻煩了。
??? 反正就是一個(gè)用起來(lái)很舒服的東西,用它的庫(kù)來(lái)實(shí)現(xiàn)跨平臺(tái)的軟件簡(jiǎn)直太完美了。
??? 下載地址:http://www.codeproject.com/win32/framework.asp
2007年2月10日
在編寫設(shè)備驅(qū)動(dòng)時(shí),
tasklet
機(jī)制是一種比較常見(jiàn)的機(jī)制,通常用于減少中斷處理的時(shí)間,將本應(yīng)該是在中斷服務(wù)程序中完成的任務(wù)轉(zhuǎn)化成軟中斷完成。
為了最大程度的避免中斷處理時(shí)間過(guò)長(zhǎng)而導(dǎo)致中斷丟失,有時(shí)候我們需要把一些在中斷處理中不是非常緊急的任務(wù)放在后面執(zhí)行,而讓中斷處理程序盡快返回。在老版本的
linux
中通常將中斷處理分為
top half handler
、
bottom half handler
。利用
top half handler
處理中斷必須處理的任務(wù),而
bottom half handler
處理不是太緊急的任務(wù)。
但是
linux2.6
以后的
linux
采取了另外一種機(jī)制,就是軟中斷來(lái)代替
bottom half handler
的處理。而
tasklet
機(jī)制正是利用軟中斷來(lái)完成對(duì)驅(qū)動(dòng)
bottom half
的處理。
Linux2.6
中軟中斷通常只有固定的幾種:
HI_SOFTIRQ(
高優(yōu)先級(jí)的
tasklet
,一種特殊的
tasklet)
、
TIMER_SOFTIRQ
(定時(shí)器)、
NET_TX_SOFTIRQ
(網(wǎng)口發(fā)送)、
NET_RX_SOFTIRQ
(網(wǎng)口接收)
、
BLOCK_SOFTIRQ
(塊設(shè)備)、
TASKLET_SOFTIRQ
(普通
tasklet
)。當(dāng)然也可以通過(guò)直接修改內(nèi)核自己加入自己的軟中斷,但是一般來(lái)說(shuō)這是不合理的,軟中斷的優(yōu)先級(jí)比較高,如果不是在內(nèi)核處理頻繁的任務(wù)不建議使用。通常驅(qū)動(dòng)用戶使用
tasklet
足夠了。
軟中斷和
tasklet
的關(guān)系如下圖:
?
???
???上圖可以看出,
ksoftirqd
是一個(gè)后臺(tái)運(yùn)行的內(nèi)核線程,它會(huì)周期的遍歷軟中斷的向量列表,如果發(fā)現(xiàn)哪個(gè)軟中斷向量被掛起了(
pend
),就執(zhí)行對(duì)應(yīng)的處理函數(shù),對(duì)于
tasklet
來(lái)說(shuō),此處理函數(shù)就是
tasklet_action
,這個(gè)處理函數(shù)在系統(tǒng)啟動(dòng)時(shí)初始化軟中斷的就掛接了。
Tasklet_action
函數(shù),遍歷一個(gè)全局的
tasklet_vec
鏈表(此鏈表對(duì)于
SMP
系統(tǒng)是每個(gè)
CPU
都有一個(gè)),此鏈表中的元素為
tasklet_struct
。此結(jié)構(gòu)如下
:
struct tasklet_struct
{
?????? struct tasklet_struct *next;
?????? unsigned long state;
?????? atomic_t count;
?????? void (*func)(unsigned long);
?????? unsigned long data;
};
每個(gè)結(jié)構(gòu)一個(gè)函數(shù)指針,指向你自己定義的函數(shù)。當(dāng)我們要使用
tasklet
,首先新定義一個(gè)
tasklet_struct
結(jié)構(gòu),并初始化好要執(zhí)行函數(shù)指針,然后將它掛接到
task_vec
鏈表中,并發(fā)一個(gè)軟中斷就可以等著被執(zhí)行了。
原理大概如此,對(duì)于
linux
驅(qū)動(dòng)的作者其實(shí)不需要關(guān)心這些,關(guān)鍵是我們?nèi)绾稳ナ褂?/span>
tasklet
這種機(jī)制。
Linux
中提供了如下接口:
DECLARE_TASKLET(name,function,data)
:此接口初始化一個(gè)
tasklet
;其中
name
是
tasklet
的名字,
function
是執(zhí)行
tasklet
的函數(shù);
data
是
unsigned long
類型的
function
參數(shù)。
static inline void tasklet_schedule(struct tasklet_struct *t)
:此接口將定義后的
tasklet
掛接到
cpu
的
tasklet_vec
鏈表,具體是哪個(gè)
cpu
的
tasklet_vec
鏈表,是根據(jù)當(dāng)前線程是運(yùn)行在哪個(gè)
cpu
來(lái)決定的。此函數(shù)不僅會(huì)掛接
tasklet
,而且會(huì)起一個(gè)軟
tasklet
的軟中斷
,
既把
tasklet
對(duì)應(yīng)的中斷向量掛起
(pend)
。
兩個(gè)工作完成后,基本上可以了,
tasklet
機(jī)制并不復(fù)雜,很容易的使程序盡快的響應(yīng)中斷,避免造成中斷丟失。
2007年2月6日
??????終于要準(zhǔn)備第一次在自己的BLOG上發(fā)貼了,以前申請(qǐng)了不少blog,但是網(wǎng)絡(luò)高手無(wú)數(shù),自己實(shí)力尚淺,面對(duì)各路高手總是心虛,其實(shí)仔細(xì)想過(guò),在網(wǎng)絡(luò)能記錄下自己的學(xué)習(xí)心得,讓自己看到每天的進(jìn)步未嘗不是一件好事。不管你是高手也好菜鳥(niǎo)也好,blog是在網(wǎng)絡(luò)上一個(gè)自己的空間,在網(wǎng)絡(luò)上瞎混這么多年總要有點(diǎn)自己的心得體會(huì)吧。
??????很喜歡這樣一個(gè)專門為技術(shù)人員做的blog,一群崇尚技術(shù)熱愛(ài)技術(shù)的狂人們,每天都將自己的學(xué)習(xí)經(jīng)驗(yàn)共享出來(lái)。在網(wǎng)上讀了這么多文章,學(xué)了這么多東西,總感覺(jué)欠了別人的東西一樣,如果不為網(wǎng)絡(luò)付出一些,總是對(duì)不起別人的。網(wǎng)絡(luò)是各公開(kāi)的地方,就像某人說(shuō)的那樣:如果我給你一個(gè)思想,你給我一個(gè)思想,我們就共同擁有了兩個(gè)思想。思想的共享永遠(yuǎn)是有利無(wú)害的。
??????希望能在這里記錄自己的思考,不管對(duì)技術(shù)還是對(duì)人生,總之網(wǎng)絡(luò)的一個(gè)小角落里總留下了自己點(diǎn)點(diǎn)的痕跡!