原创 (精闢)socket阻塞與非阻塞,同步與異步,select,poll,epoll

socket阻塞與非阻塞,同步與異步 作者:huangguisu 1. 概念理解      在進行網絡編程時,我們常常見到同步(Sync)/異步(Async),阻塞(Block)/非阻塞(Unblock)四種調用方式:

原创 socket編程中write、read和send、recv之間的區別

一旦,我們建立好了tcp連接之後,我們就可以把得到的fd當作文件描述符來使用。由此網絡程序裏最基本的函數就是read和write函數了。ssize_t write(int fd, const void*buf,size_t nbytes

原创 TCP的一些簡單記錄

主要是記錄一下,自己對於所瞭解的一些知識點。 所以上一個tcp報文段的包頭的結構吧。 一個個解釋吧 源端口號,目的端口號,2byte一個,這個顯而易見,就不多說了。(那麼源IP,目的IP呢?那是網絡層的事呢,由IP協議負責將這些信

原创 linux select學習

記錄自己的linux學習之旅。 參考文章: http://blog.csdn.net/leo115/article/details/8097143 首先大概談一下對select的理解,select用於檢測傳入的文件描述符的狀態,是一個

原创 udp的一些簡單記錄

UDP首部字段如下圖所示 UDP是無連接的傳輸協議, 爲什麼有了面向連接的可靠數據傳輸協議TCP,還要有UDP呢? 1 應用層可以高度控制要發送的數據 和發送的時間。 這裏解釋一下,難道tcp不可以嗎? tcp也可以,通過設置 TCP

原创 如何創建守護進程

守護進程   在linux或者unix操作系統中在系統的引導的時候會開啓很多服務,這些服務就叫做守護進程。爲了增加靈活性,root可以選擇系統開啓的模式,這些模式叫做運行級別,每一種運行級別以一定的方式配置系統。   守護進程是脫離於終

原创 TCP/IP詳解--滑動窗口與內核緩衝區之間的關係

原文鏈接:http://blog.csdn.net/yusiguyuan/article/details/28625129?utm_source=tuicool&utm_medium=referral 在有關TCP連接的很多配置中,有很多

原创 mysql 源碼安裝

轉自:http://www.linuxdiyf.com/linux/14453.html (1)安裝編譯源碼需要的包 sudo apt-get install make cmake gcc g++ bison libncurses5

原创 Manacher 算法講解 O(N)複雜度的 最長迴文子串求解

求解最長迴文子串的方法很多,有幾種常見的O(N^2)的最長迴文子串求解方法,比如說枚舉中心位置向兩邊擴展,動態規劃等,大部分朋友應該都比較熟悉。 Manacher算法相比於上面兩種方法,時間複雜度是O(N),空間複雜度也是O(N),可以說

原创 Linux進程間通信 共享內存+信號量+簡單例子

每一個進程都有着自己獨立的地址空間,比如程序之前申請了一塊內存,當調用fork函數之後,父進程和子進程所使用的是不同的內存。因此進程間的通信,不像線程間通信那麼簡單。但是共享內存編程接口可以讓一個進程使用一個公共的內存區段,這樣我們便能輕

原创 用信號量和Posix線程操作來實現雙線程高速下載

什麼是信號量? 信號量是一個受保護的變量。對兩個或多個進程共享的資源可以提供限制訪問的方法。 信號量有2個基本操作,一個是釋放,一個是獲取,如果某個進程想要獲取該信號量,但是信號量的值小於等於0時,那麼想要獲取該信號量的進程,將會被阻塞,

原创 Nagle 與 SO_SNDBUF的問題(轉載)

摘要:當使用TCP傳輸小型數據包時,程序的設計是相當重要的。如果在設計方案中不對TCP數據包的 延遲應答,Nagle算法,Winsock緩衝作用引起重視,將會嚴重影響程序的性能。這篇文章討論了這些 問題,列舉了兩個案例,給出了一些傳輸小

原创 C++ 排序函數 sort(),qsort()的用法

轉自http://blog.csdn.net/zzzmmmkkk/article/details/4266888/ 在STL中就自帶了排序函數sort,qsort,總算把自己解脫了~ 所以自己總結了一下,首先看sort函數見下表:

原创 C++ Vector 簡單實現 會用也要會寫

我們知道,內存塊的大小是不能改變的,因此數組的大小不能改變。但是STL的vector讓我們擺脫了這種困擾,它可以幫我們動態的管理數組的大小。 誠然,STL的vector底層還是通過動態數組來實現的,當數組大小不夠時,就申請一塊更大的內存,

原创 stl的一些事

寫c++代碼,stl用起來開發效率非常高,但是有些事項不注意的話,很可能會我們寫出的代碼,執行效率非常低。下面就一些常見的“坑”做一個記錄。這裏只是對順序容器做一個簡單的歸納。 1  容器的選擇上 1  如果只是要求隨機訪問的話,ve