原创 UNIX網絡編程——進程間通信

    進程間通信,Interprocess Communication,IPC。主要有以下四種不同的IPC形式:           A. 消息傳遞(管道、FIFO 和 消息隊列);           B. 同步(互斥量、條件變量、讀

原创 操作符(運算符)重載注意事項(含模板類中重載)

一、用 友元全局函數 或者  成員函數  重載運算符       關鍵區別是:成員函數有this指針,友元函數沒有成員指針,傳遞參數的方式不同,實現代碼不同。       對於:objectL  op  objectR       成員函

原创 基本排序算法(1)

總覽:簡單分類,以便記憶:     A.  快速排序 其實是 冒泡排序 的升級,它們都屬於交換(比較、移動交換)排序類;(增大了數據 比較和移動 的距離,減少了比較次數 和 移動交換次數)     B.  希爾排序 其實是 直接插入排序

原创 孤兒進程與殭屍進程

1、前言   之前在看《unix環境高級編程》第八章進程時候,提到孤兒進程和殭屍進程,一直對這兩個概念比較模糊。今天被人問到什麼是孤兒進程和殭屍進程,會帶來什麼問題,怎麼解決,我只停留在概念上面,沒有深入,倍感慚愧。晚上回來google了

原创 UNIX網絡編程——概述

1、編寫計算機網絡通信程序,首先要確定這些程序相互通信所用的協議。在深入設計一個協議之前,應該從高層次決斷由哪一個程序發起通信,以及在何時產生響應。 2、(1)客戶與服務器使用TCP在同一個局域網 (2)客戶與服務器在不同局域網(使用廣

原创 UNIX網絡編程——TCP的連接建立與終止、基本TCP客戶/服務器套接字函數

 寫在前面,本來覺得關於TCP的建立與終止是一些純理論的東西,看UNIX網絡編程時大概看了一下,沒想到後面所涉及到的編程都需要十分熟悉TCP的建立、連接、終止的過程細節,所以特地返回來總結一下。 1、TCP連接建立與終止   關於SY

原创 UNIX網絡編程——I/O複用(select、poll)

1、五種I/O模型:      (1)阻塞式I/O;(2)非阻塞式I/O;(3)I/O複用(select、poll);(4)信號驅動式I/O(SIGIO);(5)異步I/O(aio_系列函數);       一個輸入操作分爲兩個階段:A.

原创 UNIX網絡編程——併發服務器(I/O複用)

0、回顧        在http://blog.csdn.net/songshimvp1/article/details/51833781 這篇文章中,我們先看TCP客戶端程序     //處理客戶輸入,從標註輸入讀入一行文本

原创 UNIX網絡編程——使用waitpid處理殭屍進程(TCP客戶/服務器優化1)

1、殭屍進程      殭屍進程:一個進程使用fork創建子進程,如果子進程退出,而父進程並沒有調用wait或waitpid獲取子進程的狀態信息,那麼子進程的進程描述符仍然保存在系統中。這種進程稱之爲僵死進程。    unix提供了一種機

原创 UNIX網絡編程——shutdown函數(I/O複用併發服務器)

        上述這篇文章http://blog.csdn.net/songshimvp1/article/details/51838990中,第4點,以批量處理方式運行客戶,僅僅使用select無法實現TCP的半關閉——給服務器發送一

原创 UNIX網絡編程——併發服務器(多進程)

以下程序的源代碼均是UNIX網絡編程上的例子程序。 1、迭代(循環)服務器: intro/daytimetcpsrv1.c #include "unp.h" #include <time.h> #include "apueerror

原创 UNIX網絡編程——套接字I/O操作上的超時設置

1、調用alarm(SIGALRM信號處理) 調用alarm,它在指定超時期滿時產生SIGALRM信號。 (1)使用SIGALRM爲connect設置超時:因爲在多線程程序中處理信號非常困難,因此建議只是在未線程化程序 或 單線程化程序中

原创 基本排序算法(2)

1、堆排序       堆排序 的基本思想:充分利用了完全二叉樹的深度爲 log2N + 1。首先將待排序序列構造成一個大(小)頂堆。此時,堆頂的根結點就是整個序列的最大值,將根結點與最後一個結點交換(移走根節點)。然後調整,將剩餘的N-

原创 《C陷阱與缺陷》筆記

      這本書不是批判,而是指出易犯錯誤,防止編程中的陷阱和障礙。 1、易犯錯誤類型歸納: (1)詞法分析;(2)語法細節問題;(3)語義細節;(4)庫函數的誤用;(5)預處理器;(6)可移植性;(7)預防性程序設計; 2、運算符

原创 UDP,TCP,SCTP使用場合

1、何時使用UDP代替TCP? (1)UDP的優勢:          A. UDP支持廣播和多播。如果應用程序使用廣播或者多播,那就必須使用UDP。          B. UDP沒有連接的建立與拆除。UDP只需要兩個分組就能交換一