原创 STL list源碼——實現框架、具體實現的詳細分段剖析(迭代器的處理、list的實現)、list基本函數總結

list的底層採用的數據結構是環形的雙向鏈表,相對於vector容器的連續線性空間,list插入或刪除要付出的代價比vector小很多,對空間的運用有絕對的精準,一點也不浪費。但是list帶有鏈表天生的弱點,就是不支持隨機訪問。

原创 source Insight看STL源碼——List

上一章學vector,不誇張的說大半的時間都在往回找代碼上了,不斷被typedef不斷回看,哪怕可以跳轉也找得很累,再一次驗證了充分利用工具學習得必要性,接下來要剖析STL源碼同時力扣的動態規劃現在整理好同時其他分類也要跟上。還有

原创 STL deque 源碼——deque特點、實現框架、源碼分段剖析、常用函數總結(上)

一、deque的一些特點 支持隨機訪問,即支持[ ]以及at(),但是性能沒有vector好。 可以在內部進行插入和刪除操作,但性能不及list。 deque 兩端 都能夠快速插入和刪除元素,而vector只能在尾端進行。 de

原创 VS2010下 STL源碼剖析1:vector1——capacity擴容代碼、vector動態數組內部實現連續空間

vector的定義:typedef vector<_Ty, _Ax> _Myt;默認是兩個參數,第二個參數有默認值 allocator本身是一個類模板,是內存分配子,stl爲分配一個默認的內存分配子allocator<_Ty>

原创 ⚠⚠項目時遇到的新函數新問題小記xX

1,gethostname() : 返回本地主機的標準主機名。 原型如下: #include <unistd.h> int gethostname(char *name, size_t len); 參數說明: 接收緩衝區name,

原创 可以學學Golang

1,關鍵字少,運維簡單 2,⭐原生支持高併發,GOROUTINE,協程 (進程是資源分配的最小單位,線程是CPU調度的最小單位) 一個線程可以有上千個協程,不是在CPU層面去調度的,是在用戶空間用Golang的一個調度器去調度不同

原创 Linux編程複習(3)——信號與中斷

信號是響應某些狀況而產生的事件,進程在接收到信號時會採取相應的行動。某些狀況就是指某些條件錯誤,如內存段衝突、浮點處理器錯誤或者非法指令等。信號是在軟件層次上對中斷的一種模擬,所以信號也稱爲是軟中斷 信號與中斷的相似點: 1,都採

原创 Linux編程複習2——文件與IO(2):文件共享、複製文件描述符

1, 關於文件共享(一個進程兩次打開同一個文件、兩個進程打開同一個文件) 2,dup,dup2, fcntl 文件共享 一個進程打開兩個文件 v節點信息存放的主要就是stat函數,i節點信息,如果打開同一個文件對v節點表是共享的

原创 linux編程複習1——文件與IO(1)

1,實現文件拷貝複習文件的打開 2, 關於lseek 3,實現最簡單的一個ls 4,stat結構體及簡單示例 的代碼簡單實現與整理: 1實現文件拷貝複習文件的打開 1 #include<unistd.h> 2 #inclu

原创 實現一個簡單的Web(4)——(3)的補充:增加錯誤頁面展示、瀏覽器請求目錄的處理⛽、通過文件名獲取文件的類型、漢字編碼和解碼、 藉助telnet調試

錯誤頁面展示 void send_error(int cfd, int status, char *title, char *text) { char buf[4096] = {0}; sprintf(buf, "%s %d

原创 實現一個簡單的Web服務器(3) ——epoll版的代碼實現⭐⭐⭐❗❗❗

實現一個簡單的web服務器myhttpd,能夠給瀏覽器提供服務,供用戶藉助瀏覽器訪問服務器主機中的文件 1,getline()獲取http協議的第一行 2,從首行中拆分GET、文件名、協議版本、用戶請求的文件名 3,判斷文件是否

原创 Libevent3——bufferevent上創建socket通信的服務器端、客戶端的流程、及服務器端、客戶端的代碼實現分析⛽

承接上文,服務器監聽流程簡要如下: ①創建監聽器,有客戶端連上時就是滿足條件的時候,監聽器的回調函數被調用;②回調函數會創建新的用於通信的文件描述符fd,那麼fd是需要被封裝到一個bufferevent對象中,所以再創建一個bev

原创 網絡編程5——多進程併發服務器分析與實現/ 多線程併發服務器分析(實現在下篇)

使用多進程併發服務器要考慮一下幾點: 1,父進程最大文件描述符個數(父進程中需要關閉(close)accept返回的新文件描述符 2,系統內創建進程個數(與內存大小相關) 3,進程創建過多是否降低整體服務性能(進程調度) 一、

原创 linux——文件描述符、阻塞/非阻塞(代碼解釋)、fcntl、

一、文件描述符 PCB進程控制塊:本質是結構體,成員是文件描述符表,裏面有文件描述符0/1/2/…/1023,一個進程默認打開文件的最大數是1024,取用的時候用表中可用的最小的, 其中 0——STDIN_FILENO 1——ST

原创 Linux——mmap函數、父子進程間mmap通信、無血緣關係間mmap通信、mmap匿名映射區

一、存儲映射I/O(磁盤內容映射到內存) 一、概念理解 存儲映射I/O(Memory-mapped I/O)使一個磁盤文件與存儲空間中的一個緩衝區相映射。於是當從緩衝區中取數據,就相當於讀文件中的相應字節。與此類似,將數據存入緩衝