原创 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、簡單選擇排序       算法思想:①一趟排序操