原创 .c和.cpp文件的區別

今天在封裝庫時,分別用了兩種後綴的源文件封裝。結果發現兩者編譯後不一樣,甚至影響了接口的使用,就簡單的總結下,不完整後續在添加。 1.gcc認爲.c的爲C程序,.cpp的爲C++程序; 2.g++認爲.c的爲C++程序,.cpp的爲C++

原创 bazel cc_library 鏈接已經編好的動態庫

bazel cc_library 鏈接已經編好的動態庫,必須指定版本號,比如    srcs = ["deps/thrift-0.9.2/lib/libthrift-0.9.2.so",],必須這麼寫,不能直接srcs = ["deps/

原创 [轉]邏輯迴歸代價函數及其梯度下降公式

前言在上一篇隨筆裏,我們講了Logistic迴歸cost函數的推導過程。接下來的算法求解使用如下的cost函數形式:簡單回顧一下幾個變量的含義:表1 cost函數解釋x(i)每個樣本數據點在某一個特徵上的值,即特徵向量x的某個值y(i)每

原创 effective c++20 儘量以傳引用代替傳參,pass-by-reference-to-const 代替pass-by-value

原則:儘量以pass-by-reference-to-const 替換pass-by-value,前者通常情況效率更好,並且可以避免切割問題;但該原則並不適用stl的迭代器,函數對象以及內置類型,對於這些一般傳值效率更高,對於自己定義的類

原创 effective c++ 28 避免返回handles(引用,指針,迭代器)指向對象內部成分

原則:避免返回handles指向對象內部,該條款可增加封裝性,幫助const成員函數的行爲像個const,並將發生“虛吊號碼牌”的可能性降到最低。如下即產生空懸class Rectangle { public: const Point&

原创 effective c++26 儘量延後變量定義出現的時間

原則:儘量延後變量定義出現的時間,最好直到可以初始化變量值時才定義,以避免不必要的構造函數,可提高程序的效率和清晰度;對於循環中使用的情況,如下兩種情況A 方法: Weight w; for (int i=0; i<count; i++)

原创 effective c++22 將成員變量設計爲private

原則:切記將成員變量設計爲private,這可以賦予調用方數據的一致性,可細微劃分訪問控制,約束條件等,而且對於class本身提供了做夠的彈性可修改,具有很高的封裝性;另外,protected並不比publ

原创 effective c++ 14 在資源管理類中謹慎小心copy行爲

原則:自己創建資源管理類時需要謹慎考慮copy行爲,保持如下幾個原則:1、禁止複製,將coping操作定義爲private;2、採用引用計數法,類似shared_ptr,當引用計數變爲0時,刪除指針所指的對象,特別說明的時,對於share

原创 effective c++21 必須返回對象時,不要妄想返回reference

原則:絕不要返回一個point*或者reference指向一個local stack對象,或者返回reference指向一個heap-allocated對象,或者返回point*或reference指向一個stack local對象,而該

原创 windows編譯xgboost-python,不用vs編譯

stackoverflow上看到的,是我所看到最方便的方式。 原文: http://stackoverflow.com/questions/33749735/how-to-install-xgboost-package-in-python

原创 effective c++ 09 不要在構造函數和析構函數中調用virtual函數

原則 不要在構造函數和析構函數中調用virtual函數很直接,如果該類作爲基類,在構造函數就調用類virtual函數,那麼派生類在構造時首先會調用基類的構造函數,基類調用virtual函數此時都沒有構造出來,而且即使virtual本來就有

原创 effective c++ 16 成對使用new,delete時要採取相同的操作

原則:使用數組形式new出來的對象,必須使用delete[]形式銷燬,需要告知delete有多個對象需要析構,否則只有delete只會銷燬首個,帶來未知錯誤,同理如果時非數組形式new出來的,則不可用del

原创 effective c++ 10 令operator=返回一個reference to * this

 原則 對於賦值操作符(=,+=)這些最好要遵循這個協議,最終返回一個左值的引用int x,y,z; x=y=z=15如上賦值連鎖形式,實際上是x=(y=(z=15))所以如果要保留這種連續賦值,需要賦值完成後返回左值的一個引用,如下O

原创 C中內存分佈,以及優化

首先看如下代碼: #include <stdio.h> struct mybitfields { unsigned short a : 4; unsigned short b : 5; unsigned shor

原创 effective c++ 12 複製對象時不要忘了每一個成員

原則1、當增加或刪減了類的成員時,一定記得同步修改複製構造函數和複製操作符函數,同時其他構造函數和任何非標準的operator=函數;原則2、當實現派生類當複製構造函數和operator=函數時,一定記得調用基類當構造函數和operato