原创 之前對listen、accpet函數理解誤區----《Linux高性能服務器編程》讀書筆記

    以前一直以爲TCP建立連接3次握手過程服務端是對應accept函數調用,看了《Linux高性能服務器編程》才發現以前理解有誤。服務端建立了監聽端口就可以接受客戶端連接。服務端調用listen函數來創建一個監聽隊列以存放待處理的客戶

原创 listen函數與TCP連接建立過程的關係

listen函數與TCP連接建立過程的關係 TCP服務端程序創建過程:建立監聽socket,通過bind綁定到服務地址和端口後,調用listen開始監聽服務端口。這時在操作系統內核會建立SYN隊列(未完成握手隊列)和ACCEPT隊列(已完

原创 《程序員七問》筆記

工作中大部分時間在寫業務代碼,2~3年以後,感覺在做機械重複勞動,技術沒有長進。因此陷了極度的迷茫中。看到了公衆號“碼農翻身”的《程序員七問》一文,感覺非常受用。1、我是否對系統的業務有了整體的瞭解?我能不能向其他人(如面試官)描述該系統

原创 TCP之深入淺出send和recv

轉自:http://blog.chinaunix.net/uid-29075379-id-3921527.html需要理解的3個概念1. TCP socket的buffer每個TCP socket在內核中都有一個發送緩衝區和一個接收緩衝區

原创 TIME_WAIT狀態存在的原因 ---- 《Linux高性能服務器編程》讀書筆記

客戶端在接受到服務器的結束報文(FIN)後,不會直接進入CLOSE狀態,而是轉移到TIME_WAIT狀態。這個狀態客戶端連接要等待一段長爲2MSL時間,才能完全關閉。MSL是TCP報文段在網絡中的最大生存時間,RFC文檔建議2min。TI

原创 半同步/半異步和領導者/追隨者 有趣的解釋

轉自:http://blog.csdn.net/jinchaoh/article/details/50427733這不僅僅兩個山賊的故事!先介紹下關係:下面開始講故事:1、領導者/追隨者模型:故事:話說一個地方有一羣有組織無紀律的人從事山

原创 關於POLL檢測對端關閉連接----《Linux高性能服務器編程》讀書筆記

POLL檢測對端關閉連接有兩種方法:1)觸發POLLIN事件,recv調用返回02)觸發POLLRDHUP事件其中POLLRDHUP 需要2.6.17以上內核,而且代碼最開始處定義_GNU_SOURCE,實際上測試不定義也行。測試代碼如下

原创 tcp窗口滑動以及擁塞控制

轉自:http://blog.chinaunix.net/uid-26275986-id-4109679.htmlTCP協議作爲一個可靠的面向流的傳輸協議,其可靠性和流量控制由滑動窗口協議保證,而擁塞控制則由控制窗口結合一系列的控制算法實

原创 Keepalived詳細介紹簡介https://www.cnblogs.com/losbyday/p/5841830.html

轉自:https://www.cnblogs.com/losbyday/p/5841830.html1.1、Keepalived簡介   Keepalived是Linux下一個輕量級別的高可用解決方案。高可用(High Avalilabi

原创 《百度員工離職總結:我永遠不會成爲一個好員工》----讀書筆記

作者:唐成1、你有“同理心”嗎?領導交辦一項工作時, 你要懂他的目的,看清他的用意。所以我在接受任務的時候,總是向領導確認:你想要的是什麼?你的目的是什麼?瞭解這些後,可以站在他的角度,有效的幫他解決問題。2、聽話,出活“幹活不由東,累死

原创 產生復位報文的3種情況----《Linux高性能服務器編程》讀書筆記

在某些特殊條件下, TCP連接的一端會向另一端發送攜帶RST標誌的報文段,即復位報文。產生RST的三種情況:1)訪問不存在的端口.當客戶端程序連接一個不存在的端口時,目標主機會發送一個RST報文,RST報文接收通告窗口大小爲0,客戶端不能

原创 GDB配置與.gdbinit的編寫

轉自:https://www.cnblogs.com/jiu0821/p/6244324.htmlGDB配置與.gdbinit的編寫                當 GDB(即 GNU Project Debugger)啓動時,它在當前

原创 進程間關係:進程、殭屍進程、孤兒進程、進程組、前臺進程組、後臺進程組、孤兒進程組、會話、控制終端

不同的shell對使用管道線時創建子進程的順序不同,本文以bash爲例,它是支持作業控制的shell的典型代表。 殭屍進程與孤兒進程 殭屍進程:先於父進程終止,但是父進程沒有對其進行善後處理(獲取終止子進程有關信息,釋放它仍佔有的資源)。

原创 程序員思考方法學習:如何處理接到的需求任務

需求的描述問題 軟件開發中,程序員的工作一般由需求來定義。不同的需求描述方式,可能會對程序員理解需求產生影響。很多公司開發模式基於功能列表,這個列表裏面的規定了產品功能,各開發組從產品經理那裏領開發列表,然後“照單抓藥”進行開發。但通常這

原创 程序員思考方法學習二

完成的定義:DoD(Define of Done) DoD這個概念本身並不複雜,它就是告訴我們怎麼算是完成了,儘量減少因爲理解的偏差造成各種浪費。具體怎麼做了?就是在團隊開始工作前,制定DoD。比如: 特性開發完成 ,表示開發人員經過了需