原创 工廠模式詳解

參照原文:設計模式之三種工廠模式 簡單工廠模式 創建對象不再需要 new,我只需要將需要生產什麼東西告訴工廠,工廠就能生產出對應的對象實例 問題背景 大衆集團要生產汽車,但是不確定要生產哪幾個品牌的汽車 角色扮演 車: VwCar

原创 空間配置器詳解

引言 空間配置器,顧名思義就是爲各個容器高效的管理空間(空間的申請與回收)的,在默默地工作。 爲什麼需要空間配置器 自己模擬實現 STL 的容器的時候,如果所有空間都用 new 來申請,雖然可以使用但是會導致以下缺陷: 1)空間申

原创 常見設計模式

引言 設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的、代碼設計經驗的總結 使用設計模式的目的:爲了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性 單例模式 一個類只能創建一個實例,這種設計

原创 讀者寫者模型

前言 在進程中,對某些資源的訪問會存在兩種可能的情況:一種是寫操作(具有排他性)、另一種是讀操作,可以有多個資源併發地去訪問某種資源,它的訪問方式是共享的。(一般由於寫端操作次數少,讀端操作次數多,因此寫端的優先級較高),這種模型

原创 Coredump 詳解

引言 當程序運行的過程中異常終止或崩潰,操作系統會將程序當時的內存狀態記錄下來,保存在一個文件中(core文件),這種行爲就叫做 Core Dump 或者叫做 ‘核心轉儲’,利用 coredump 可以幫助我們快速定位程序崩潰位置

原创 MySql 內置函數

日期函數 函 數 功 能 描 述 current_date() 獲取當前年月日 current_time() 獲取當前時分秒 current_timestamp() 獲取當前時間戳 date(dateti

原创 C++_模板

什麼是泛型編程? 泛型編程:編寫與類型無關的通用代碼,是代碼複用的一種手段。模板是泛型編程的基礎 函數模板 函數模板代表了一個函數家族,在使用時被參數化,根據實參類型產生函數的特定類型版本,函數模板不是函數 格式: templat

原创 C/C++_內存管理

C/C++ 內存分佈 棧又叫堆棧,非靜態局部變量/函數參數/返回值等等,棧是向下增長的。 內存映射段是高效的I/O映射方式,用於裝載一個共享的動態內存庫。用戶可使用系統接口創建共享共享內存,做進程間通信。 堆用於程序運行時動態

原创 拷貝構造函數的調用時機(糾正誤區)

調用時機 當用類的一個對象初始化該類的另一個對象時 當一個函數的形參是一個對象,調用函數進行形參與實參結合時(形參是實參的一份拷貝) 函數的返回值是一個對象,函數返回時(返回值是一個新的變量,除非返回引用) 誤區1

原创 正則表達式-簡單介紹

本文章參考 《Linux C 編程一站式學習》 引言 用 grep 可以在一個文件中找出包含某些字符串的行,比如在頭文件中找出一個宏定義。 其實 grep 還可以找出符合某個模式(Pattern)的一類字符串。例如找出所有符合 x

原创 Linux_IO多路轉接:select/poll/epoll

一、select 模型 1. int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

原创 BFS_經典案例

文章目錄案例1 - 迷宮最短路線問題案例2 - 員工重要性案例3 - N叉樹的層序遍歷案例4 - 腐爛的橘子案例5 - 單詞接龍案例6 - 最小基因變化案例7 - 打開轉盤鎖 案例1 - 迷宮最短路線問題 牛客:迷宮最短路線問題

原创 AVL 樹介紹

文章目錄AVL 樹引出AVL 樹的定義AVL 樹的插入AVL 樹的旋轉(4種)1. 新節點插入較高左子樹的左側---左左:右單旋2. 新節點插入較高右子樹的右側---右右:左單旋3. 新節點插入較高左子樹的右側---左右:先左單旋

原创 Linux_網絡基礎-傳輸層

1. 端口號 端口號(Port)在一臺機器設備上唯一的標識了一個進程 端口號範圍劃分: 0 - 1023 :知名端口號,有些應用層協議被廣泛的使用,因此就爲這些應用層協議分配了固定的端口號,例如 HTTP-80、HTTPS-44

原创 DFS_經典案例

文章目錄案例1案例2:案例3:案例4案例5 案例1 員工重要性 class Solution { //深度優先搜索核心代碼 //傳參:unordered_map存儲着所有員工的信息 id-Employee*