原创 《Effective C++讀書筆記》--條款08:別讓異常逃離析構函數

在C++中不禁止析構函數拋出異常,但這是不推薦的行爲,比如一個vector<Widget> v,當v被銷燬時,其中的所有widget都會被銷燬,也就會調用它們的析構函數,但如果在析構函數中拋出異常,則會同時出現多個同時作用的異常(每銷燬一

原创 《Effective C++讀書筆記》--條款04:確定對象被使用前已先被初始化

對於C++來說,定義一個值未初始化,其值是一個不確定的數,而當我們使用未初始化的值會導致UB,在不同的平臺上表現不一樣,總之會給程序帶來不可預知的行爲,我們要盡力避免。所以對於內置類型來說,我們要儘量在使用對象之前將他初始化,至於內置成員

原创 關於初始化列表的總結

使用初始化列表主要有兩個方面的原因:一是某些情況下不得不使用初始化列表,二是基於效率方面的考慮,一下我們具體分析這兩種情況: 一:必須使用初始化列表:初始化列表是在構造函數之前執行的,當我們的成員變量中具有常量值,引用或者沒有無參構造函數

原创 《函數指針的理解》

顧名思義,函數指針是一個指向函數的指針,該指針存放了函數的地址,地址中有着函數名,函數參數等信息,其基本語法如下: c++函數指針的定義形式:返回類型 (類名稱::*函數成員名稱)(參數類型,參數類型,參數類型,….);   對於函數指

原创 《Effective C++讀書筆記》--條款05:瞭解C++默默編寫並調用哪些函數

編譯器會默認爲每個類聲明一個默認構造函數,拷貝構造函數,賦值操作符和一個析構函數(如果你自己不聲明),而這些函數都是public且inline的,當這些函數被調用時纔會被編譯器創建出來。此時我們要注意,編譯器產出的析構函數是一個非虛函數,

原创 《Effective C++讀書筆記》--條款29:努力寫出異常安全的代碼

異常安全有兩個條件:①不泄漏任何資源 ②不允許數據破壞 對於資源泄漏的問題我們只要遵循以對象管理資源這條條款就很容易解決,對於數據敗壞的問題,首先我們要知道異常安全函數的概念,異常安全函數提供以下三個保證之一:①基本承諾:如果異常被拋出,

原创 管理Git生成多個ssh key

管理Git生成多個ssh key 轉載於點擊打開鏈接 生成兩個key 生成key的命令ssh-keygen -t rsa -C “Your Email Address” -f 'Your Name',-f後面給的生成key的名字,如果沒

原创 《Effective C++讀書筆記》--條款03:儘可能使用const

--1、const修飾指針和對象的不同方法: 對於const時代表指針指向的地址是const還是該指針指向的地址內的對象是const,只需牢記一點:如果關鍵字const出現在*左邊,表示被指物是常量,如果出現在*右邊,表示指針本身是常量

原创 《Effective C++讀書筆記》--條款13:以對象管理資源

對於剛接觸C++程序員來說,內存泄漏可能是最常遇到的會導致程序崩潰的問題。程序員自己管理內存和資源是一把雙刃劍,用的好會使程序效率大大提高,用的不好便會造成一系列諸如內存泄漏,程序崩潰的致命問題。除了最常用的分配內存,還有許多需要管理的資

原创 Python切片操作

本文參考了點擊打開鏈接的博客,來加深對於切片操作的理解 Python的切片可以理解爲L[開始:結束:步進],例如L[0:6:1]可以理解爲從序號0開始,步進爲1,直到6結束,和C++的循環一樣,數組的選擇規則是左閉右開,即[0,6),從0

原创 Qt源代碼編碼問題

Qt默認使用UTF-8格式保存代碼,當我們編譯的時候出現莫名錯誤提示的缺少“;”,“)”等問題,並且確定代碼沒錯,這時候很有可能是編碼問題,此時我們可以將代碼用記事本打開,然後保存爲UTF-8格式即可。

原创 記錄一次艱辛的Python包持續集成與發佈過程

緣由 爲了保證代碼質量,編寫單元測試是非常必要的,特別是在團隊開發的過程中,編寫有效的單元測試保證每人編寫的模塊能夠正常工作,以免項目後期出現各種不可預知的bug,因此,在提交代碼前運行單元測試,可以有效保證代碼的健壯性。這種工作當然是要

原创 異步IO:Python中的協程

    我們在實際的問題中會遇到一些堵塞線程的場景,比如UI程序進行耗時的計算阻塞主線程;進行IO操作,比如讀寫文檔或者網絡傳輸時會阻塞線程等等,之前我採用的是使用多進程+多線程的處理方式,但這種方式相比於協程來說都比較慢,特別是在Win

原创 在PySide中使用多進程與多線程(multiprocess,threading)

在UI界面程序中,使用到多進程與多線程是很常見的場景,有時候我們需要將一些耗時的操作放在其他的線程或者進程中,避免卡死主線程。而且利用多線程加Qt的信號槽機制我們可以在子進程中實現事件監聽,實時監測進程間的通信。之前一直對線程和進程的理解

原创 《大話設計模式》讀書筆記之C++實現--chapter22橋接模式

橋接模式的核心在於理解好繼承屬於is-a的關係,當我們使用繼承的時候先要在心裏問自己一遍子類是不是一個父類,如果答案是否,那我們就要考慮如何重新定義父類實現更好的抽象,此時我們可以聯想到合成/聚合關係,合成代表的是一種強的擁有關係,也就是