博客 / 列表

禹鼎侯 - 一文説透IO多路複用select/poll/epoll

概述 如果我們要開發一個高併發的TCP程序。常規的做法是:多進程或者多線程。即:使用其中一個線程或者進程去監聽有沒有客户端連接上來,一旦有新客户端連接,就新開一個線程(進程),將其扔到線程(或進程)中去處理具體的讀寫操作等業務邏輯,主線程(進程)繼續等待,監聽其他的客户端。 這樣操作往往存在很大的弊端。首先是浪費資源,要知道,單個進程的最大虛擬內存是4G,單個線程的虛擬內存也有將近8

socket , select , io , poll , epoll

禹鼎侯 - 7種常見網絡併發模型介紹

概述 對於網絡服務器後端開發,為滿足不同併發場景的需要,一般來説,不外乎幾種常見的併發模型,除了一些教學場景常用的單線程、多進程(線程)的服務器實現外,生產用的服務器,一般都會考慮使用IO多路複用模型。 而常見的IO多路複用場景 ,可以設計得很簡單,也可以設計得比較複雜,一般根據業務需要而定。本文總結了一些比較常見的服務器併發模型,基本涵蓋了 大部分業務場景 。在實際業務開發的技術選型時,可根據場

c++ , select , c , poll , epoll

禹鼎侯 - 從Dwarf Error説開去

背景 近期我開發的一個C程序,在生產環境產生了coredump,但是在調試該core文件時,打出的debug信息並不全。 這種debug信息丟失,其實説白了,就是符號表丟失。一般由兩種情況造成,一種是編譯的時候沒有加-g參數,另一種是dwarf版本不對。 首先排除第一種可能,因為編譯腳本是我自己寫的,-g參數是有的。而唯一可能出問題的地方,就是dwarf版本不對。 而之所以出現

gcc , coredump , gdb , c++ , c

禹鼎侯 - 編碼格式介紹及C語言處理漢字編碼

什麼是編碼格式 從一個小問題引入 我們在學習C語言的時候,有一道必做的題目是將大寫字母轉換成小寫,相信有點基礎的同學都能不加思索的寫出下面的代碼: char toLower(char upper){ if (upper = 'A' upper = 'Z'){ return upper + 32; }else{ return upper; }

iconv , gbk , utf-8 , 編碼 , c