工作相關總結一


1、之前做客戶端程序時使用過正則表達式庫boost,當時是第一次使用這個庫,當時感覺真的很方便,讓程序處理方便了很多。後來當由客戶端變爲服務端時,我們想照用原來的boost來完成解析操作。誰知,當做併發測試時,系統直接崩潰,甚至出現莫名其妙的異常。後來,研究了半天,才發現罪魁禍首竟然是我們當初很喜歡的boost造成的。沒辦法,又急急忙忙地找替代產品,後來使用了Pcre,還好,替換起來不算太麻煩,也輕易地解決了我們的問題。但是,原因是什麼一直不清楚。有次,在CSDN上,看到有人大誇boost的好,後來我提到這個問題,也沒有有迴應。就一直懸着。
今天,由於原來的客戶端的需求變更,有些更改需要我幫忙,正好和一個資深的前輩一起。就隨便說起之前遇到的問題。他聽完就哈哈笑。“當然了,你們沒考慮清楚,boost的應用場合,出問題當然是不可避免的。”“哎,當時我就暈了?”“boost本身是不支持多線程併發的。這樣對同一對象,當有多線程進行搶佔時,就可能會出問題。”
“哦,原來是這樣啊。那如果我們在對這樣的對象,進行加鎖操作就可以了,對吧?”“恩,當然了。”他笑了笑。
哎,又學了一招。看來我知道的太少了。

2、今天看同事之前寫的程序,當有關鍵字的存儲時,頻繁使用vector,而通過vector與數組的對應,來依次組成key與value的對應關係。我當時就想,哎,好奇怪哎。爲什麼不使用map呢。這樣在後續通過key來指定某一具體值時,就不需要循環遍歷了呀。是完全可以直接定位查找的。後來,看到他在後續操作時,不僅僅使用了id,type,value,即利用自構造鏈表的方式來實現。當然了,功能實現的確實沒有問題。其實,真的不需要這樣實現。map是支持對象的,所以完全可以按如下方式定義實現:map<key, <id, value>>,只要將值定義成一個結構體對象,或是一個類對象,它本身有自己的屬性就可以了呀。這樣不僅因爲直接利用底層實現,效率提高,而且實現起來也特別方便。
關於vector,map,使用時真的應該好好考慮一下,如果存在key,value,且程序的自動排序對你的業務沒有影響,且需要根據key去查詢value時,完全可以使用map嘛。如果只是單純地存儲某一對象,且使用時,按線性去存取,vector就可以滿足需求了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章