原创 git reset

reset命令有3種方式:     git reset --mixed:此爲默認方式,不帶任何參數的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息     git reset --soft

原创 HashMap

1.HashMap的數據結構   數組的特點是:尋址容易,插入和刪除困難;而鏈表的特點是:尋址困難,插入和刪除容易。那麼我們能不能綜合兩者的特性,做出一種尋址容易,插入刪除也容易的數據結構?答案是肯定的,這就是我們要提起的哈希表,哈希

原创 git reset and git checkout

git reset --hard <commit>: 1.替換引用的指向.引用指向新的提交ID; 2.替換暫存區.替換後,暫存區的內容和引用指向的目錄樹一致; 3.替換工作區.替換後,工作區的內容變得和暫存區一致,也和HEAD所指向的目錄

原创 計算數字二進制表示中的1個數(五種解法)------------------編程之美

對於一個數字,無符號,求其二進制表示中的1個數,要求算法執行效率儘可能高。 解法一:考慮利用整數除法的特點,通過相除和求餘來分析。 void fun1(int num) { int ct=0; while (num) { if

原创 IPC之匿名管道詳解與使用

一、概念 進程間通信是在不同進程間傳播或者交換消息。管道,也就是匿名管道,是linux系統下最常見的進程間通信方式之一,它是在兩個進程間實現一個數據流通的通道,優點:簡單易用;缺點:功能簡單。 管道是linux/unix系統間比較原始的進

原创 堆排序解析

一、堆的定義        是n個元素的序列H={k1, k2 , … kn},滿足ki≤k2i      當2i≤n時       ki≥k2i       當2i≤n時或者  ki≤k2i+1   當2i+1≤n時  ki

原创 fork與vfork詳解

一、fork函數 要創建一個進程,最基本的系統調用是fork,系統調用fork用於派生一個進程,函數原型如下: pid_t fork(void)  若成功,父進程中返回子進程ID,子進程中返回0,若出錯返回-1;fork()系統調用的作用

原创 IPC之消息隊列詳解與使用

一、    概念  消息隊列就是一個消息的鏈表。對消息隊列有寫權限的進程可以向其中按照一定的規則添加新消息;對消息隊列有讀權限的進程可以從消息隊列中讀出消息。消息隊列是隨內核持續的。下面介紹三個概念: 1;隨進程持續:IPC一直存在,直至