原创 繼承中成員變量初始化
下列輸出結構是什麼? #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鍵盤圖
分爲三種模式:一般模式、編輯模式和命令行模式
原创 判斷機器的大小端
#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/ 動態內存管理 內存管理的目標是提供一種方法,爲實現各種目的而在各個用戶之間實現內存共享。內存管