伺服器能開啟的最多檔案描述符是有限的(1024)。
socket的連包問題。
客戶端和伺服器端進行互動。
傳送端的連包問題。
json包,如果兩個json包連在一起,則解析的時候只能解析第乙個包,壓根就不知道第二個json包的存在。
在每乙個json包裡加乙個size選項,邊界也要加上。
滑動視窗協議:1bit滑動視窗(一次只允許傳送乙個資料報)、後退n、選擇重發。
面試的目的:了解自己知識了解的深度、檢驗簡歷上所寫是否真實。
cpu的核數。
大量的磁碟i/o:當從磁碟中讀取資料到記憶體時可以不通過cpu,直接通過dma,不經過cpu。
cpu在計算機世界中充當乙個工人的角色。
介紹專案(特別重要),在專案中剖出點:
1)**行數(專案規模)
2)專案實現的功能
3)專案框架:半同步半非同步(既有同步的執行緒,又有非同步的執行緒),把套接字直接給子執行緒。
3)事務處理模式:mvc(邏輯清晰,新增新功能模組很方便)
4)專案中用到開源工具(libevent(事件觸發、事件監聽),mysql、json(客戶端和伺服器端互動資料))redios(nosql)
5)專案中遇到哪些問題,怎麼解決的?:記憶體洩漏,會很快的耗盡記憶體。如何定位問題、如何解決問題?
同步i/o非同步i/o,當核心中有資料時,是直接拷貝給使用者空間,還是告訴使用者有資料,讓使用者自己去取。
專案中為什麼用了多執行緒而不是多程序?答:乙個程序開啟的套接字傳輸到另乙個執行緒中是無法是用的。所以必須用多執行緒解決。
每次處理的時候從表裡面選擇乙個任務量最小的乙個。將任務交給它。
執行緒之間通訊工具:socketpair。(資料互動,可觸發)。管道也是乙個檔案描述符。全雙工的通訊工具。
libevent用vector模型封裝了epoll的et模式。提供了乙個簡介的介面。
i/o復用。
剖析epool的原始碼。
往檢視框中新增乙個模組。
資料先到伺服器。伺服器再發給客戶端。
用路由器取訪問網路。
路由器資料爆棚。
密碼資料都是明文傳輸,不安全。
md5加密,不可逆。**軟體都使用這種加密方式。
mac幀、抓包,直接抓鏈路層的包。路由器傳送資料報之前,會再區域網中傳送arp探測當前這一層區域網中有無資料的目的地。
防止網路機械人(暴力破解):伺服器返回乙個驗證碼,讓客戶輸入,伺服器動態驗證。進行錯誤限制。
加上資料落地反饋。資料沒有真正的過去。send僅僅只是將資料寫到傳送緩衝區,並沒有真正的傳送過去。
無論做什麼,一定要將專案做出乙個亮點來。
專案都是網路、多執行緒、i/o復用,拼命的玩、往死裡玩。
要有自己的亮點。
區域網聊天軟體 鴨梨山大
對付壓力的區域網聊天軟體辦法,睡覺!對我來所蠻有效的方法,對付搞不定的事情,好好睡一覺,第二天滿狀態再去搞。至於那個問題,我想做的是什麼?起碼不想做重複枯燥無意義的因為體制導致的無法優化的重複性勞動 這基本就是我實習的狀態 評估以後,去掉了一半,然後,想做什麼?有活力,比較自由,可以通過自己 看到效...
Qt編寫的區域網聊天程式
這個程式足足用了乙個月的時間,也怪小生內功不強,但此番修煉著實受益良多。整體程式不建議大家觀摩,主要是太亂了。在這裡我會將其中的幾個重要部分剝離出來和大家分享。該程式介面靈感 於網路,小生不才,又加了一部分自己的愚見,還望源作者能夠原諒。此程式借鑑了江湖上的各位大俠的秘籍和高招,既然 於江湖,就回歸...
基於C 的區域網聊天系統客戶
chat client.h created on 2012 4 19 author root ifndef chat client h define chat client h include include include include include include include using...