原创 C++常用庫函數atoi,itoa,strcpy,strcmp的實現

1. 整數轉換成字符串 itoa 函數的實現 #include "stdafx.h" #include <iostream> using namespace std; void itoaTest(int num,char str[] )

原创 Socket編程實踐(6) --TCP服務端注意事項

殭屍進程處理 1)通過忽略SIGCHLD信號,避免殭屍進程     在server端代碼中添加     signal(SIGCHLD, SIG_IGN);   2)通過wait/waitpid方法,解決殭屍進程 [c

原创 幾個 shell 的題目

1、 創建file0, file1, … , file9十個文件。 2、 對/etc/passwd文件按照“:”分隔的第一個字段排序,並輸出第三行到第五行。 3、 比較兩個文件是否相同(忽略空行)。 4、 從光盤製作iso文件,做完後把光

原创 Socket編程實踐(11) --epoll原理與封裝

常用模型的特點     Linux 下設計併發網絡程序,有典型的Apache模型(Process Per Connection,PPC), TPC(Thread Per Connection)模型,以及 select/polL模型和ep

原创 數據結構基礎(2) --順序查找 & 二分查找

順序查找 適用範圍: 沒有進行排序的數據序列 缺點: 速度非常慢, 效率爲O(N) [cpp] view plain copy   //實現   template <typename Type>   Type 

原创 STL容器的實現原理

List封裝了鏈表,Vector封裝了數組, list和vector得最主要的區別在於vector使用連續內存存儲的,他支持下標訪問,而list是以鏈表形式實現的,不支持下標訪問。 Vector對於隨機訪問的速度很快,但是對於插入尤其是

原创 數據結構基礎(16) --樹與二叉樹

樹的基本術語 1.結點:{數據元素+若干指向子樹的分支} 2.結點的度:分支的個數(子樹的個數) 3.樹的度:樹中所有結點的度的最大值 4.葉子結點:度爲零的結點 5.分支結點:度大於零的結點(包含根和中間結點) 6.(從根到

原创 數據結構基礎(6) --順序棧的設計與實現

棧是一種只允許在一端進行插入或刪除操作的線性表.其特點爲:先進後出(FILO)/後進先出(LIFO);   棧 VS. 隊列     棧和隊列都是動態集合, 但在棧中, 可以去掉的是最近插入的那一個,:棧實現了一種後進先出(las

原创 數據結構基礎(18) --哈希表的設計與實現

哈希表     根據設定的哈希函數 H(key)和所選中的處理衝突的方法,將一組關鍵字映射到一個有限的、地址連續的地址集 (區間) 上,並以關鍵字在地址集中的“映像”作爲相應記錄在表中的存儲位置,如此構造所得的查找表稱之爲“哈希表”。

原创 linux 內核與用戶空間通信之netlink使用方法

 Linux中的進程間通信機制源自於Unix平臺上的進程通信機制。Unix的兩大分支AT&T Unix和BSD Unix在進程通信實現機制上的各有所不同,前者形成了運行在單個計算機上的System V IPC,後者則實現了基於sock

原创 數據結構基礎(4) --快速排序

 快速排序是最流行的,也是速度最快的排序算法(C++ STL 的sort函數就是實現的快速排序); 快速排序(Quicksort)是對冒泡排序的一種改進。由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排

原创 數據結構基礎(13) --鏈式棧的設計與實現

採用鏈式存儲的棧成爲鏈式棧(或簡稱鏈棧), 鏈棧的優點是便於多個棧共享存儲空間和提高其效率, 且不存在棧滿上溢的情況(因爲鏈棧是靠指針鏈接到一起,只要內存夠大, 則鏈棧理論上可以存儲的元素是沒有上限的);     與順序棧相比, 由於

原创 數據結構基礎(12) --雙向循環鏈表的設計與實現

雙向鏈表的操作特點:     (1) “查詢” 和單鏈表相同;     (2)“插入” 和“刪除”時需要同時修改兩個方向上的指針。    但是對於雙向循環鏈表則在表尾插入非常的迅速, 只需O(1)的時間,因爲有指向前面的指針, 因

原创 數據結構基礎(10) --單鏈表迭代器的設計與實現

爲了向 STL 致敬(O(∩_∩)O~), 我們模仿STL中的list的迭代器, 我們也自己實現一個MyList的迭代器, 以供遍歷整個鏈表的所有元素: 首先:Node節點需要做如下修改(注意後綴有+的代碼) [cpp] v

原创 數據結構基礎(17) --二叉查找樹的設計與實現

二叉排序樹的特徵 二叉排序樹或者是一棵空樹,或者是具有如下特性的二叉樹:     1.每一元素都有一個鍵值, 而且不允許重複;     2.若它的左子樹不空,則左子樹上所有結點的值均小於根結點的值;     3.若它的右子樹不