原创 服務器-TCP 在 EPOLL 模型中的注意細節

  前段時間在公司開發了基於udp的流媒體轉發服務器,在公網udp轉發ts,花屏比較嚴重。課下之餘寫了epoll-tcp模型的轉發服務器作爲測試,比較一下效果,其間遇到不少問題,在此做個筆記。代碼最後附上 一、業務需求:終端錄製視頻(

原创 TCP協議疑難雜症全景解析

說明: 1).本文以TCP的發展歷程解析容易引起混淆,誤會的方方面面2).本文不會貼大量的源碼,大多數是以文字形式描述,我相信文字看起來是要比代碼更輕鬆的3).針對對象:對TCP已經有了全面瞭解的人。因爲本文不會解析TCP頭裏面的每

原创 Linux下C與Mysql的混合編程

1 概述   MySQL 是一個關係型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。MySQL是最流行的關係型數據庫管理系統。    支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novel

原创 基於線程池模型的討論與完整代碼演示

線程池引入的必要性: 在網絡服務器中,包括大量的web服務器,它們都需要在單位時間內必須處理相當數目的接入請求以及數據處理。通常在傳統多線程服務器中是這樣實現的:一旦有個請求到達,就創建一個線程,由該線程執行任務,任務執行完畢後,線程就

原创 高性能定時器時間輪的實現

時間輪的概念     關於定時器有很多種,有基於升序的定時器時間鏈表,但是這種鏈表存在效率的不足,就是當插入定時器的時候時間複雜度是O(n).今天,我們來認識一下高性能定時器時間輪。    如上圖所示,就是一個時間輪的基本輪廓。一個輪子上

原创 Linux Socket編程注意事項

Socket API 是網絡應用程序開發中實際應用的標準 API。儘管該 API 簡單,但是開發新手可能會經歷一些常見的問題。本文識別一些最常見的隱患並向您顯示如何避免它們。 隱患 1.忽略返回狀態 第一個隱患很明顯,但它是開發新手最容易

原创 Linux Socket API Connect 函數詳解

在講解套接字編程函數之前,有必要對socket編程的兩個不可或缺的結構體進行說明。 第一個結構體式struct sockaddr.。這個結構爲許多類型的套接字儲存套接字地址信息:  Sockaddr結構體介紹 1. #include<sy

原创 升序定時器的時間鏈表的完全實現

                                   李邦柱                                                        [email protected] 1. 定時器

原创 Golang 學習,第一篇:環境配置

Golang 學習,第一篇:環境配置 歡迎來到Go的世界,讓我們開始探索吧! Go是一種新的語言,一種併發的、帶垃圾回收的、快速編譯的語言。它具有以下特點: 它可以在一臺計算機上用幾秒鐘的時間編譯一個大型的Go程序。 Go爲軟件構造

原创 Linux 文件描述符設置爲非阻塞的方法

通過fcntl設置文件描述符屬性 fcntl即F_SETFL,F_GETFL的使用,設置文件的flags,阻塞設置成非阻塞,非阻塞設置成阻塞(這連個在server開發中可以封裝爲基本函數)   1、獲取文件的flags,即open函數的第

原创 epoll精髓

http://www.cnblogs.com/OnlyXP/archive/2007/08/10/851222.html   在linux的網絡編程中,很長的時間都在使用select來做事件觸發。在linux新的內核中,有

原创 Linux Sendfile 的優勢

Sendfile 函數在兩個文件描述符之間直接傳遞數據(完全在內核中操作,傳送),從而避免了內核緩衝區數據和用戶緩衝區數據之間的拷貝,操作效率很高,被稱之爲零拷貝。 Sendfile 函數的定義如下: #include<sys/sendf

原创 C++ STL容器適用情況的說明

各種容器的特性 vector 典型的序列容器,C++標準嚴格要求次容器的實現內存必須是連續的,唯一可以和標準C兼容的stl容器,任意元素的讀取、修改具有常數時間複雜度,在序列尾部進行插入、刪除是常數時間複雜度,但在序列的頭部插入、刪

原创 C/C++ &與&& |與|| 的區別

&& 表示邏輯與的意思,即爲and。當運算符兩邊的表達式的結果都爲true時,整個運算結果才爲true,否則,只要有一方爲false,則結果爲false。 比如 12&&23的結果就是1,12&&-1 的結果是1,123&&0的結果就是0

原创 C++構造函數爲什麼不能是虛函數

原因1:從存儲空間角度    這裏你需要知道一個概念,那就是虛函數表vtbl,每一個擁有虛成員函數的類都有一個指向虛函數表的指針。對象通過虛函數表裏存儲的虛函數地址來調用虛函數。    那虛函數表指針是什麼時候初始化的呢?當然是構造函數。