原创 STL空間配置器原理解析
爲什麼不說allocator是內存配置器而說它是空間配置器呢?因爲,空間不一定是內存,空間也可以是磁盤或其它輔助儲存媒體。是的,你可以寫一個 allocator,直接向硬盤取空間1。以下介紹的是 SGI STL 提供的配置器,配置的對象,
原创 八大排序之歸併、基數排序
歸併排序:將兩個或兩個以上的有序表組合一個新的有序表稱爲“歸併”。先使每個子序列有序,再歸併使子序列段有序,最後得到完全有序的序列。 算法思想:我們通常用遞歸實現,先把待排序區間[startindex,endindex]以中點二分,接着把
原创 glic內存管理ptmalloc之原理 概述
3.概述 3.1內存管理一般性描述 當不知道程序的每個部分將需要多少內存時,系統內存空間有限,而內存需求又是變化的,這時就需要內存管理程序來負責分配和回收內存。程序的動態性越強,內存管理就越重要,內存分配程序的選擇也就更重要。 內存管理的
原创 C++實現單例模式(快加載與懶加載)
單例模式:“一個類有且僅有一個實例,並且自行實例化向整個系統提供。” 它是一種常見的面向對象的設計模式,屬於創建型模式。可以保證應用單例模式的類只有一個對象實例。 優點: 1、在內存裏只有一個實例,減少了內存的開銷,尤其是頻繁的創建和銷燬
原创 快速排序的5種優化方法
三種快速排序以及快速排序的優化 1、快速排序的基本思想: 快速排序使用分治的思想,通過一趟排序將待排序列分割成兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小。之後分別對這兩部分記錄繼續進行排序,遞歸地以達到整個序列有序的
原创 常用字符串處理函數總結
我們學習過C語言的都肯定用過頭文件裏的函數,例如strlen, strcmp, strcpy, strcat, strtok它們是使用字符數組時的常用函數。除此之外,還有常用的itoa和atoi函數。。。 今
原创 glibc內存管理ptmalloc之基礎知識
2.基礎知識 2.1 X86 平臺 Linux 進程內存佈局 Linux 系統在裝載 elf 格式的程序文件時,會調用 loader 把可執行文件中的各個段依次載入到從某一地址開始的空間中(載入地址取決 link editor(ld)和機
原创 線性表之鏈表
我們學習數據結構時,除了順序表,接觸更多的另一種線性表就是“鏈表”。鏈表是一種物理存儲單元上非連續、非順序的鏈式存儲結構,數據元素的邏輯順序是通過鏈表中的指針的連接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱爲結
原创 小遊戲---2048
大家都知道2048是一款流行的數字遊戲,玩法也比較簡單。我們每次可以選擇上下左右其中一個方向去滑 動,每滑動一次,所有的數字方塊都會往滑動的方向靠攏外,系統也會在空白的地方亂數出現一個數字方塊,相 同數字的方塊在靠攏、相
原创 C++實現工廠模式(簡單與抽象工廠模式)
What is it? 工廠模式:是一種很常見創建型模式,是用工廠代替new操作的模式。在java程序中很常見,但C++同樣可以實現和使用。因爲工廠模式就相當於創建對象時的new,如A a = new A();所以用我們在用new時要考慮
原创 Linux下的互斥鎖、自旋鎖、讀寫鎖淺談
自旋鎖 概念: 何謂自旋鎖?它是爲實現保護共享資源而提出一種鎖機制。其實,自旋鎖與互斥鎖比較類似,它們都是爲了解決對某項資源的互斥使用。在任何時刻最多只能有一個執行單元獲得鎖,即任何時刻只有一個線程訪問對象。如果自旋鎖已經被別的執行單元保
原创 八大排序之交換排序
冒泡排序:顧名思義,即每趟排序通過對相鄰兩個元素比較,越大的元素會因交換“浮”到數組的頂端處。 算法思想:對於一組數據,依次將兩個相鄰元素比較,若前者大於後者元素,則將兩者位置交換,直到最後的待排序元素位置。重複進行上述操作,最後數組
原创 github命令大全
一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看當前狀態 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看遠程所有分支 git co
原创 Linux學習知識框架
linux的系統編程和網絡編程 一、基礎(Redhat) 文件系統: Linux文件層次結構 文件類型 根目錄下各子目錄的作用 Ext2文件系統 基礎
原创 八大排序之選擇排序
選擇排序的基本思想是:每一趟在n-i-1(i=1,2,...,n-1)個記錄中選取關鍵字最小的記錄作爲有序序列的第i個記錄。我們主要學習的是簡單選擇排序、堆排序。 1、簡單選擇排序 算法思想:①一趟排序操