原创 繼承中成員變量初始化

下列輸出結構是什麼? #include<iostream> using namespace std; class A { public: int m_a;

原创 QuickSort/快速排序/快排

#include <stdio.h> #include <time.h> #include <getopt.h> #include <stdlib.h> void exchange(int *array,int i1,int i2) {

原创 heapsort/minheap/maxheap/堆排序/最大堆/最小堆

#include<stdio.h> #include<stdlib.h> #include<string.h> void exchange(int *array,int i1,int i2) { if(array[i1]

原创 內核內存分配器(Kernel Memory Allocator, KMA)

內核內存分配器(Kernel Memory Allocator, KMA)是一個子系統,試圖滿足系統中所有部分對內存的請求。 基於各種不同的算法技術,已經提出了幾種KMA,包括: 資源圖分配算法2的冪次方空閒鏈表McKusick-Ka

原创 進程間通信(IPC):共享內存

共享內存允許兩個不相關的進程訪問同一個邏輯內存。 共享內存的定義如下: #include<sys/shm.h> void *shmat(shm_id,const void *shm_addr, int shmflg);//連接到一個進程

原创 TCP的三次握手和四次揮手

三次握手: step1:客戶發送TCP SYN報文段到服務器 step2:服務器接收SYN,回覆SYN ACK報文段 step3:客戶接收SYN ACK,回覆ACK報文段,可能包含數據 四次揮手: step1:客戶發送TCP FIN控制

原创 可重入內核

所有的Unix內核都是可重入的(reentrant),這意味着若干個進程可以同時在內核態下執行。 提供可重入的一種方式是編寫函數,以便這些函數只能修改局部變量,而不能改變全局數據結構,這樣的函數叫做可重入函數。 但是可重入內核不僅僅侷限於

原创 進程間通信(IPC):管道(Pipe)

管道:一個進程連接數據流到另一個程序 pipe函數的原型: #include <unistd.h> int pipe(int file_descriptor[2]);該閃身在數組中填上兩個新的文件描述符後返回0,如果失敗則返回-1。寫到

原创 Vim鍵盤圖

分爲三種模式:一般模式、編輯模式和命令行模式

原创 linux kernel map 2.6

原创 判斷機器的大小端

#include<stdio.h> union endian { unsigned int word; unsigned char bytes[4]; }; int main(int argc, cha

原创 字符全排列

#include<stdio.h> #include<string.h> void exchange(char *p,char *q) { if(*p!=*q) { *p=

原创 Linux進程地址空間的一步步探究

轉載:http://soft.chinabyte.com/os/51/12324551.shtml 我們知道,在32位機器上linux操作系統中的進程的地址空間大小是4G,其中0-3G是用戶空間,3G-4G是內核空間。其實,這個4G的

原创 構造函數調用成員函數&成員函數是虛函數

下列輸出結果是什麼? include<iostream> using namespace std; class A { public: A() {

原创 Linux slab 分配器剖析

轉載:http://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/ 動態內存管理 內存管理的目標是提供一種方法,爲實現各種目的而在各個用戶之間實現內存共享。內存管