原创 線程:死鎖

一.死鎖原理 死鎖可以定義爲一組相互競爭系統資源或進行通信的進程間的“永久”阻塞。當一組進程中每個線程都在等待某個事件(典型的就是等待所請求的資源被釋放),而只有這組進程的其他被阻塞的進程纔可以觸發該事件的發生,這是這時就稱爲這組

原创 指針數組與數組指針比較

指針是C語言裏面很重要的一個東西,C語言因爲有了指針才變得絢麗多彩。有句話是這樣說的“如果你掌握了指針與內存,那麼C語言也就學會了。”,由此可見,指針的重要性。這裏我簡要談談指針數組與數組指針的區別。 從他們的名字我們可以得出這樣的結論

原创 可變參數的使用-printf簡單實現

我們在寫一個程序的時候,經常用到一些函數,例如printf函數,在我們用的時候覺得並沒有什麼覺得他很簡單啊,我們使用的時候都沒有注意過,它其實有很多種調用方法。 例如: 其實這就是可變參數,我們看看printf函數的原型,是這樣的  我

原创 mysql事務與鎖基礎

MYSQL事務與鎖基礎事務基礎理論事務必要性引入事務的目的事務四大特性(ACID)事務基本語法事務簡單操作鎖基礎鎖的概念鎖類型innoDB鎖innoDB鎖類型SQL語句加鎖事務生命週期事務 重做日誌和回滾日誌重做日誌持久化回滾日誌

原创 進程間通信--FIFO

在linux進程間通信中,管道(pipe)是非常有用的,而且我們使用的地方也非常多,但是不可否認的是管道有一個致命的缺點就是隻能用於有相關關係的進程之間的通信,比如:父子進程。爲了很好的解決這個問題。因此我們引入了——FIFO(f

原创 淺談——程序執行和函數的調用

           以前寫一個程序,只知道編譯,在無錯後就直接運行了,然後看看結果是不是自己想要的,結果對了然後就啥也不管了,如果錯了就只會一行一

原创 atexit函數介紹

根據我們的理解,一個程序的執行都是從MAIN函數開始執行,從MAIN函數結束,這不可否認沒有問題,然後依次往下一條一條語句執行,但是事實真的是這樣麼,接下來看看這個程序,是不是像我們想象的那樣呢?在linux下我編寫了這樣一個程序,先不要

原创 c語言實現簡單通訊錄

我們都知道通訊錄有的一些基本簡單的功能就是: 1.增加聯繫人 2.刪除聯繫人 3.查找聯繫人 4.改動聯繫人 5.顯示聯繫人 6. 清空聯繫人 7.給聯繫人排序 0. 退出 具有了這些基本

原创 vim配置及插件安裝管理(超級詳細)

1 寫在前面   Linux下編程一直被詬病的一點是: 沒有一個好用的IDE, 但是聽說Linux牛人, 黑客之類的也都不用IDE. 但是對我等從Windows平臺轉移過來的Coder來說, 一個好用的IDE是何等的重要啊, 估計很多人就

原创 struct tast_struct 和mm_struct成員中的冰山一角

這個東西範圍太廣了,發現的只是其中微小的的一個角落 tast_struct struct task_struct { volatile long state; /* -1 unrunnable, 0 runnabl

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

系統V的IPC通信機制包括了消息隊列、共享內存和信號量。每一種IPC結構結構都有一個非負整數標誌,當創建一個IPC結構時,調用進程都必須提供一個類型爲key_t的鍵(key)。操作系統把這個鍵轉換爲一個IPC的唯一標識符。 可以使

原创 線程的簡單解析

一、線程基本概念 線程是程序中一個單一的順序控制流程。在單個程序中同時運行多個線程完成不同的工作,稱爲多線程。 線程和進程的區別在於, 子進程和父進程有不同的代碼和數據空間, 而多個線程則共享數據空間,每個線程

原创 進度條的簡單實現

代碼如下#include <stdio.h> #include <unistd.h> int main() { char buffer[52] = {'\0'}; char ch[] = {'|', '/', '-',

原创 掃雷(通俗易懂簡易版)

     我們絕大部分人都玩過掃雷,玩起來真的很簡單,只需要1用鼠標點一點就可以了(要贏還是需要費腦經的) 但是現在自己來編寫一個簡易版的掃雷,發現

原创 進程間通信--消息隊列

Linux的一個重要特色就是允許兩個進程間通過數據交換進行通信,這樣簡單的程序就可以組合起來實現複雜的任務。現在我們主要談談基於系統V IPC機制的通信方式–消息隊列。 一.什麼是消息隊列? 消息隊列是消息的鏈表,每個消息都有固定