4 來自 Google 的奇技

2021-05-24 13:15:22 字數 891 閱讀 3109

google 用了很多自己實現的技巧 / 工具使 c++ **更加健壯, 我們使用 c++ 的方式可能和你在其它地方見到的有所不同.

tip如果確實需要使用智慧型指標的話, scoped_ptr

完全可以勝任. 你應該只在非常特定的情況下使用 std::tr1::shared_ptr

, 例如 stl 容器中的物件. 任何情況下都不要使用 auto_ptr.

「智慧型」 指標看上去是指標, 其實是附加了語義的物件. 以 scoped_ptr

為例, scoped_ptr

被銷毀時, 它會刪除所指向的物件. shared_ptr

也是如此, 並且 shared_ptr

實現了引用計數, 所以最後乙個 shared_ptr

物件析構時, 如果檢測到引用次數為 0,就會銷毀所指向的物件.

一般來說,我們傾向於設計物件隸屬明確的**, 最明確的物件隸屬是根本不使用指標, 直接將物件作為乙個作用域或區域性變數使用. 另一種極端做法是, 引用計數指標不屬於任何物件. 這種方法的問題是容易導致迴圈引用, 或者導致某個物件無法刪除的詭異狀態, 而且在每一次拷貝或賦值時連原子操作都會很慢.

雖然不推薦使用引用計數指標, 但有些時候它們的確是最簡單有效的解決方案.

(yulefox 注: 看來, google 所謂的不同之處, 在於盡量避免使用智慧型指標 :d, 使用時也盡量區域性化, 並且, 安全第一)

tip使用 cpplint.py

檢查風格錯誤.

cpplint.py

是乙個用來分析原始檔, 能檢查出多種風格錯誤的工具. 它不並完美, 甚至還會漏報和誤報, 但它仍然是乙個非常有用的工具. 用行注釋 //

nolint

可以忽略誤報.

某些專案會指導你如何使用他們的專案工具執行 cpplint.py

關於Web2 0 來自IBM

web 2.0 具有八個核心模式,它們分別是 群眾智慧型 collective intelligence 建立乙個參與架構,借助網路效應和演算法,使得軟體隨著使用的人越來越多而變得越來越好。資料,下乙個 intel inside 利用獨特 難以複製的資料來源,成為這個時代的 intel inside...

來自Google的圍棋AlphaGo

圍棋起源於三千多年前的中國,孔丘曰 飽食終日,無所用心,難矣哉!不有博弈者乎,為之猶賢乎已。意思是 整天吃飽了飯,什麼都不想,真太難了!不是有下棋 指圍棋 的嗎?下下棋,總比什麼都不做要好。目前,全球共有四千萬人在玩圍棋。玩圍棋的步法主要依靠直覺與構想,因為它精緻而又有極高的智力要求,幾個世紀以來一...

直播 Lucene學習高階 總結1 來自網路

1 正確關閉indexwriter例項?關閉過程中發生問題如何處理?try finally 2 indexwriter有關的3個引數 1.maxbuffereddocs maxbuffereddocs這個引數預設是disabled的,因為lucene中還用另外乙個引數 rambuffersizemb...