原创 C++ 筆記 線程局部變量 thread_local

c++11 中添加了新的關鍵字thread_local,用來聲明新的存儲期(線程存儲期變量),即線程局部變量。 程序中的所有對象擁有下列存儲期之一: 1 自動存儲期。對象的存儲在外圍代碼塊開始時分配,而在結束時解分配。除了聲明爲 sta

原创 C++ 筆記 關於拷貝構造函數的二三事

C++的拷貝構造函數爲什麼參數是const Test& s? 參考:https://blog.csdn.net/TanJiaLiang_/article/details/86691437 1.Test(Test s)爲什麼不行? 因爲我們

原创 從零開始開發C++高性能服務器框架 學習筆記(二)配置系統

本文是我對B站教學視頻 [C++高級教程]從零開始開發服務器框架(sylar) 的學習筆記。 這個視頻up講得非常好,我從中學到了很多。以下是他的視頻鏈接: https://www.bilibili.com/video/av5360263

原创 C++ 筆記 typename的使用

先說結論,C++引入typename關鍵字是爲了消除二義性 在C++模板常有如下用法: template <typename T> int compare(const T &v1, const T &v2) { if (v1 <

原创 C++ 筆記 dynamic_cast和dynamic_pointer_cast

dynamic_cast 是動態強制類型轉換的意思,它將基類的指針或引用安全地轉換成派生類的指針或引用。 dynamic_pointer_cast 與dynamic_cast類似,將基類的智能指針轉換爲派生類的智能指針。 參考資料: ht

原创 C++ 筆記 shared_from_this()的原理與使用

shared_from_this()的用途 enable_shared_from_this是一個模板類,定義於頭文件<memory>,其原型爲: template< class T > class enable_shared_from_

原创 C++ 筆記 類的前置聲明

類的前置聲明主要解決兩類問題: 1.節約編譯時間 我們平時在寫代碼時會使用#include來包含其他頭文件,然後調用這個頭文件提供的一些類,如果該頭文件裏包含了很多其他沒有被使用到的類,那麼編譯時會被一起編譯,這樣就會浪費一些不必要的時間

原创 C++ 筆記 虛函數 虛函數表 純虛函數 虛析構函數

什麼是虛函數? 允許派生類重新定義與基類同名的函數,並且可以通過基類指針或引用來訪問基類或派生類的同名函數。 什麼是純虛函數? 基類中虛函數只有聲明沒有實現體。含有純虛函數的類爲抽象類,如果基類定義多個純虛函數,子類沒有一一將純虛函數實現

原创 C++ 筆記 類的靜態成員和靜態方法

用static修飾的成員變量在對象中是不佔內存的,因爲他不是跟對象一起在堆或者棧中生成,用static修飾的變量在靜態存儲區生成的,所以用static修飾一方面的好處是可以節省對象的內存空間。 類中的static數據成員需要在類之外進行初

原创 Linux編譯命令 make -j8 的意義

make -j 選項表示並行編譯。 make -j8,讓make最多允許8個編譯命令同時執行,這樣可以更有效的利用CPU資源。 在多核CPU上,適當的進行並行編譯可以明顯提高編譯速度。但並行的任務不宜太多,一般是以CPU核心數目的兩倍爲宜

原创 CMakeLists.txt 編譯參數記錄

-O0: 不做任何優化,這是默認的編譯選項。 -O1:優化會消耗少多的編譯時間,它主要對代碼的分支,常量以及表達式等進行優化。  -O2:會嘗試更多的寄存器級的優化以及指令級的優化,它會在編譯期間佔用更多的內存和編譯時間。  -O3: 在

原创 Linux 查看系統版本 lsb_release 和 cat /etc/issue

LSB是Linux Standard Base的縮寫,lsb_release命令用來顯示LSB和特定版本的相關信息。 -v, --version 顯示版本信息 -i, --id 顯示發行版的ID -d, --description 顯示該

原创 LeetCode 257. 二叉樹的所有路徑 解答

給定一個二叉樹,返回所有從根節點到葉子節點的路徑。 說明: 葉子節點是指沒有子節點的節點。   class Solution { public: vector<string> binaryTreePaths(TreeNode*

原创 LeetCode 441. 排列硬幣 解答

你總共有 n 枚硬幣,你需要將它們擺成一個階梯形狀,第 k 行就必須正好有 k 枚硬幣。 給定一個數字 n,找出可形成完整階梯行的總行數。 n 是一個非負整數,並且在32位有符號整型的範圍內。   解方程 X^2+X-2n = 0,注意

原创 如何在 Linux 服務器上安裝 Anaconda3

在Anaconda官網https://www.anaconda.com/distribution/#download-section下載安裝腳本 選擇64-Bit(x86)Installer(506MB) 運行安裝腳本 bash Ana