12年畢業開始作java開發。
13年-15年作了兩年的cobol開發
15年至今17年07月作java開發html
曾經對EPOLL很是很是很是的困惑,各類博客部分講使用,部分講原理。 java
雖然講的都是人話,貼的很是詳細,都說到了等待隊列,說到設備,說到回調,可是本身的理解並非深入的。而後有些給了代碼片斷,本身去搜索相關的東西,猛看代碼片斷。。。而後就不明覺厲了,看似明白了,其實講不出來,也不知道講什麼。node
多少個日夜,一直想着怎麼去搞懂明白一點,不斷的看博文,對比博文,最後的出結論:什麼破fd,node,這些都是數據結構呀,而後又停滯不前了。 linux
後來發現本身讀書少,要不去看看書吧:《linux-kernel》,《深刻理解Linux內核(英文版)》,《Linux TCP IP 協議棧分析》,《程序員的自我修養—連接、裝載與庫》,甚至《Redis設計與實現》及淘寶的nginx的開源分享內容:http://tengine.taobao.org/book/,同時也dowload了Linux0.11的源碼,redis-3.0.0源碼, nginx-0.5.38源碼。。。嘗試去分析分析源碼。nginx
總之,凡有可能讓我去了解EPOLL,瞭解IO的開源東東,都想去看看,只但願有做者直接寫明:FD是什麼東西,EPOLL究竟是什麼。惋惜沒有任何一本書可以看完,過程也很是難過。尤爲是kernel,tcp/ip這類書,書中一貼代碼,下面邊講解邊註釋。真的是看不下去啊啊啊啊。。。。有沒有同感的同窗。程序員
至此,告誡和我有一樣困惑的同窗,大家的路有些偏了。 redis
我很想了解EPOLL,道理很簡單和直接,我是java程序員,我有使用dubbo,它內置netty,對於開源java系框架來說,說究竟是大部分都是調用c的系統函數庫,直到內核Linux EPOLL,對於nginx更不用說,同樣的道理,同樣c的系統調用。 數據結構
重點來了:我不會講什麼重要的理解呀,重要的概念啥的,這些東東,大牛,小牛們都講的不少也很明白,只是咱們理解不了。今天我想說的是:一直都沒有或者不能準確的理解,那是由於咱們還差同樣技能。那就是:硬件設備操做。說白了,就是驅動程序。 由於我自己是應用開發人員,以前的理解(關於底層設備那塊)沒能仔細瞭解,靠想象。。。明白麼,靠想象呀,個人哥,對驅動,硬件的理解,個人認知停留在五年前的大學課堂。。。這要讓我怎麼去理解kernel進行io操做????!!!!,怎麼可以去理解內核啓動地址映射問題,鏡像拷貝,MMU,VFS。框架
SO結論:趕忙去找點驅動開發的東東學學,例如ARM嵌入式開發,看的過程當中,會給你補上大量你曾經視乎看懂的知識點。 反過來,回頭去看那些各個關於epoll的博文。。。你的心裏確定是:呵呵呵!!!tcp
貼兩個相關的連接,這兩個連接不重要(雖然是大牛的帖子。。。): http://oldblog.donghao.org/2009/08/linuxiapolliepollaueouaeaeeio.html https://idndx.com/tag/epoll/ 記住重點是底層的驅動,可以理解數模電路更好。。。!!!