這幾天忙著找房子,搬家,很麻煩,房租比原來有貴了五百多。
我打算寫個(gè)網(wǎng)絡(luò)通信組件,大概會(huì)用到共享內(nèi)存,Epoll事件驅(qū)動(dòng)機(jī)制,多線程,連接池,無鎖循環(huán)任務(wù)隊(duì)列等一系列知識(shí)點(diǎn)。
以前寫過一些簡(jiǎn)單的網(wǎng)絡(luò)程序和多線程程序,主要出發(fā)點(diǎn)是掌握基本的API和一些編程原理,工作后就沒有從事相關(guān)的東西,工作中主要是C/C++寫業(yè)務(wù)邏輯。自從去年八九月開始晚上回來都花一個(gè)小時(shí)看些網(wǎng)絡(luò)方面的知識(shí),大都集中在TCP方面,看些寫的比較好的沒有錯(cuò)誤的博客和一些外文資料,再加上Github上的開源代碼,主要還是redis。
工作中用到的C++方面高級(jí)的知識(shí)點(diǎn)不是很多,看些Effective C++,More Effective C++,深度探索C++對(duì)象模型和Effective STL這基本經(jīng)典的書籍就夠了,那些STL容器的一些實(shí)現(xiàn)原理,一些坑也得知道;也得掌握編寫可讀性較好的編碼規(guī)范。至于性能方面的,可以看看深入理解計(jì)算機(jī)系統(tǒng)的第三章,主要是匯編,也可以看看cache,內(nèi)存方面的知識(shí)點(diǎn),網(wǎng)絡(luò)IO也需要知道。再也沒寫過多線程多進(jìn)程的程序,看過一些書籍如mudo那本書,很多業(yè)務(wù)沒必要搞多么復(fù)雜,一個(gè)線程一個(gè)EventLoop,把要關(guān)注的事件注冊(cè)上去【redis也是單進(jìn)程單線程的】,有消息過來回調(diào)或以任務(wù)的形式分發(fā)處理,不能阻塞餓死。
做游戲的用到高級(jí)的算法不是特別多,業(yè)務(wù)邏輯也不是特別復(fù)雜【視野算法有點(diǎn)難】,但是架構(gòu)很重要。工作中需要考慮的問題很多,比如怎么以較高的效率隨機(jī)選擇不同的數(shù),或根據(jù)權(quán)重;弱網(wǎng)絡(luò)怎么處理;協(xié)議怎么約定,怎么可擴(kuò)展,每個(gè)進(jìn)程承載什么功能等等。
想系統(tǒng)的學(xué)習(xí)下Python和Shell,但想想從頭開始學(xué)得花好些時(shí)間不大實(shí)際,還是以工作需要去驅(qū)動(dòng)吧,去培養(yǎng)自己發(fā)現(xiàn)問題,解決問題的能力,在這個(gè)過程中強(qiáng)化學(xué)習(xí)能力。