聊天室程式可以說是最簡單的多點通訊程式。聊天室的實現方法有很多,但都是利用所謂的「多使用者空間」來對資訊進行交換,具有典型的多路
i/o的架構。乙個簡單的聊天室
, 從程式設計師的觀點來看就是在多個
i/o端點之間實現多對多的通訊。其核心就是多路
i/o通訊。多路
i/o通訊又被稱為
i/o多路復用(
i/o multiplexing)在
unix/linux
下,可以使用的
i/o模型有5個:
l
阻塞i/o l
非阻塞i/o l
i/o復用(
select
和poll)
l訊號驅動
i/o(
sigio)
l非同步
i/o(
posix.1
的aio_
系列函式)
由於要處理多路
i/o,所以阻塞方式顯然不能令人滿意。非阻塞
i/o採用了輪詢,對
cpu時間是很大的浪費。對於訊號驅動(
sigio
)和非同步
i/o方法:首先,非同步
i/o是基於訊號機制的,並不可靠;其次單一的訊號不足以提供更多的資訊**,還是需要輔助以其他的手段,實現上有很高的難度。綜合以上,對非阻塞
i/o和
select
方式進行了測試,最後的選擇是
select
乙個以前沒發現的EJB古怪問題
昨天修改了專案中乙個ejb實現類,重新編譯,然後發布,發布成功,看來一切都是好好的。然後啟動客戶端進行測試。怪事出現了,只要一呼叫ejb,控制台就報如下錯誤 真是怪事,類不相容錯誤?應用中的類都是用jdk1.4編譯的,怎麼會不相容?於是把ejb重新打包 重新佈署,這樣來來回回折騰好多次,問題依然存在...
這幾天的乙個總結
這幾天一直都在編寫和除錯乙個排程分析程式,把一些體會做個筆記,以便不再犯同樣的錯誤 1.編寫不規範,全域性變數和區域性變數命名有時候不遵循一般原則,有時候會交叉使用 乙個方法的 量過長,有時候能達到幾百行,應當把公共部分抽取出來,可以拆分為幾個小的方法 這樣 看起來簡潔易懂 2.粗心大意,自信到自大...
這幾天的乙個總結
這幾天一直都在編寫和除錯乙個排程分析程式,把一些體會做個筆記,以便不再犯同樣的錯誤 1.編寫不規範,全域性變數和區域性變數命名有時候不遵循一般原則,有時候會交叉使用 乙個方法的 量過長,有時候能達到幾百行,應當把公共部分抽取出來,可以拆分為幾個小的方法 這樣 看起來簡潔易懂 2.粗心大意,自信到自大...