Time of Update: 2018-12-05
摘要:當使用TCP傳輸小型資料包時,程式的設計是相當重要的。如果在設計方案中不對TCP資料包的延遲應答,Nagle演算法,Winsock緩衝作用引起重視,將會嚴重影響程式的效能。這篇文章討論了這些問題,列舉了兩個案例,給出了一些傳輸小資料包的最佳化設計方案。背景:當Microsoft
Time of Update: 2018-12-05
1.4.1 字串可能最常使用的類就是NSString。NSString是不可變的,這意味著一旦建立了它,就不能修改它。如果需要修改一個NSString的內容,應該使用NSMutableString類。然而,直接用新的內容建立一個新的NSString,這種做法更為常見。有很多種方法可以建立一個NSString,其中最簡單的可能就是下面這種:NSString *myString=@"some string"; 要建立一個格式化的字串,應該使用如下的代碼:NSString *myString =
Time of Update: 2018-12-05
補充一點:只有在使用epoll ET(Edge Trigger)模式的時候,才需要關注資料是否讀取完畢了。使用select或者epoll的LT模式,其實根本不用關注資料是否讀完了,select/epoll檢測到有資料可讀去讀就OK了。 這裡有兩種做法: 1. 針對TCP,調用recv方法,根據recv方法的傳回值,如果傳回值小於我們指定的recv buffer的大小,則認為資料已經全部接收完成。在Linux epoll的manual中,也有類似的描述: For stream-oriented
Time of Update: 2018-12-05
//prepar request NSString *urlString = [NSString stringWithFormat:@"http://urlToSend.com"]; NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:[NSURL URLWithString:urlString]]; [request
Time of Update: 2018-12-05
WINDOWS下對音訊處理過程 WINDOWS下對音訊處理,大致可分為兩部分,即音訊輸入、輸出,和ACM壓縮處理。 一般情況下在WINDOWS下可以調用諸如sndPlaySound等API(MCI)來播放一個WAV檔案,但那顯然不是我們需要做的。必須能夠直接對音頻資料流進行處理。在WINDOWS下,也為之提供了一系列的API,以waveIn和waveOut開頭的一組API就是幹這個的。 先說輸入吧。常用的相關API為waveInOpen(開啟一個音訊輸入裝置)、waveInPrepareH
Time of Update: 2018-12-05
標籤: 不久前,我的Socket Client程式遇到了一個非常尷尬的錯誤。它本來應該在一個socket長串連上持續不斷地向伺服器發送資料,如果socket串連斷開,那麼程式會自動不斷地重試建立串連。有一天發現程式在不斷嘗試建立串連,但是總是失敗。用netstat查看,這個程式竟然有上千個socket串連處於CLOSE_WAIT狀態,以至於達到了上限,所以無法建立新的socket串連了。為什麼會這樣呢?它們為什麼會都處在CLOSE_WAIT狀態呢?CLOSE_WAIT狀態的產生原因首先我們知道,
Time of Update: 2018-12-05
使隸屬於同一進程的各線程協調一致地工作稱為線程的同步。MFC提供了多種同步對象,最常用的四種: 臨界區(CCriticalSection) 事件(CEvent) 互斥量(CMutex) 訊號量(CSemaphore)本人目前只學習了臨界區(CCriticalSection) 的使用,簡單介紹如下:
Time of Update: 2018-12-05
GetTickCount記錄了從系統啟動時經過的時間,精確到毫秒。For Release configurations, this function returns the number of milliseconds since the device booted, excluding any time that the system was suspended. GetTickCount starts at 0 on boot and then counts up from
Time of Update: 2018-12-05
#include <sys/types.h> #include <sys/socket.h> int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);s: 通訊端,指向一個開啟的套介面描述字 level:層級,指定選項代碼的類型。具體類型如下: SOL_SOCKET: 基本套介面 IPPROTO_IP:
Time of Update: 2018-12-05
一.背景簡介 最近幾個月在參與一個軟路由器的開發.該路由器的流量控制功能由TC HTB實現。下面寫點總結性的文字,因水平有限,不對之處敬請各位及時指出。 TC為Traffic Control的縮寫,HTB顧名思義是一個層次式的過濾架構,我們可以通過配置TC HTB規則來實現流量控制.二.基本概念 TC規則涉及到隊列(queue),分類器(class)和過濾器(filter)三個概念.
Time of Update: 2018-12-05
做伺服器有一段時間了,想記錄下自己的體會。依我的看法,伺服器可以看做是4個部分組合起來的, 底層的網路架構, 通用的資料結構和庫, 整個伺服器的架構設計,伺服器的上層商務邏輯。 底層的網路架構,目前可以說技術基本都是公開的了, 可以自己從頭寫,採用iocp,epoll。也可以直接使用ace, libevent
Time of Update: 2018-12-05
驅動部分見前一篇文章:http://blog.csdn.net/bripengandre/archive/2009/03/20/4009615.aspx 應用程式部分很簡單:讀取新的BIOS檔案
Time of Update: 2018-12-05
很多人並不是真正的瞭解程式員,一提及程式員,在他們的印象裡面,程式員們都帶著厚厚的啤酒瓶底,在昏暗的燈光下,在一台破舊的電腦前絞盡腦汁的打下一行行的代碼,有幾分嘔心瀝血的悲壯、幾分青燈古佛的超然脫俗,更有幾分與世隔絕的另類感。作為程式員"沉默是金"這句話不一定適用,而且在職場上往往被飽受非議。
Time of Update: 2018-12-05
最近寫了一個伺服器,商務邏輯很簡單,每個協議包往伺服器上報資料, 每個資料包中可能有N塊資料需要儲存在資料庫中的.顯然, 這個商務邏輯是不能使用類似memcached這樣的緩衝的, 因為每條資料都是相對獨立的, 而且必須保證每個資料都儲存到資料庫中.這裡拋開伺服器最基本的那些IO模型之類的不說,談談對這個伺服器的幾個最佳化步驟.1) 最簡單的處理最簡單的處理就是按部就班的,每條資料老老實實的插入到資料庫中.顯然, 這樣做的效率是低的,
Time of Update: 2018-12-05
iPhone開發技巧之網路篇(2)--- Web服務說到XML不得不提WEB應用中最常見的幾種通訊規範:SOAP,XML-RPC,REST,WSDL,JSON等,他們都是基於XML協定的。在這裡介紹幾種處理web應用中可以利用的程式庫:現在雲端運算技術很火,無論是類似 Google App Engine 的 PAAS 還是 Amazon EC2 的 IAAS 服務或者是類似 Twitter 的 SAAS。不可避免的都需要與 XML
Time of Update: 2018-12-05
好久沒寫空間了。不寫則已,一寫則是這類性質的,各位見諒~ 之前已寫了一個具體到每星期的任務的計劃,但實施一個月來,深感時間緊迫,之前的計劃應過於龐大而難以再實施,因此必須有所捨棄和整理。 另外,近來反省最近一兩年做的事情,感覺做得不夠精、不夠細,沒什麼可取之處。這一方面是因為趕進度,另一方面是個人的不耐煩,一旦勉強完成了任務就萬事大吉。為了痛擊由此帶來的挫敗感,決定接下來利用零碎時間整理最佳化以前的任務。
Time of Update: 2018-12-05
一、位元組序定義位元組序,顧名思義位元組的順序,再多說兩句就是大於一個位元組類型的資料在記憶體中的存放順序(一個位元組的資料當然就無需談順序的問題了)。其實大部分人在實際的開發中都很少會直接和位元組序打交道。唯有在跨平台以及網路程式中位元組序才是一個應該被考慮的問題。在所有的介紹位元組序的文章中都會提到位元組序分為兩類:Big-Endian和Little-Endian。引用標準的Big-Endian和Little-Endian的定義如下:a)
Time of Update: 2018-12-05
UISwitch(如)可以認為是其他UI庫中Checkbox的替代品,但所呈現的內容更豐富,包括文本、顏色、動畫。預設情況下,UISwitch的提示文本分別是ON和OFF,並很好地支援國際化以在不同地區語言下顯示不同的文字,但由於無法定製導致在有些應用情境中顯得不是很準確。比如在詢問是否同意時希望提示文本可以是YES和NO,判斷是否正確則應該是TRUE和FALSE等等。為此需要對UISwitch進行擴充。考慮到繼承會導致控制項繼承關係太深,因此採用了Objective
Time of Update: 2018-12-05
htonl() htons()及inet_ntoa() inet_addr()的用法本文轉自:http://hi.baidu.com/6908270270/blog/item/ee265e036737c58cd53f7c36.html 現在我們很幸運,因為我們有很多的函數來方便地操作 IP 位址。沒有 必要用手工計算它們,也沒有必要用"<<"操作來儲存成長整字型。首先,假設你已經有了一個sockaddr_in結構體ina,你有一個IP地址"132.241.5.10"
Time of Update: 2018-12-05
From:http://www.diybl.com/course/3_program/game/20071124/87558.html原創:李茂limaous@126.com 想起寫這篇文章是在看侯傑先生的《深入淺出MFC》時,突然覺得自己在大學這幾年關於遊戲編程方面還算是有些心得,因此寫出這篇小文,介紹我眼中的遊戲程式員的書單與原始碼參考。一則是作為自己今後兩年學習目標的備忘錄,二來沒準對別人也有點參考價值。我的原則是唯寫自己研究過或準備研究的資料,所以內容無疑會帶上強烈的個人喜好色彩,比如對