我和Socket之艱苦卓越的戰鬥2

2021-08-25 07:18:03 字數 745 閱讀 5578

這幾天真是糾結呀,寫個東西給搞的亂七八糟,設計了乙個執行緒池,乙個啟動執行緒,乙個控制線程,另外還有個日誌執行緒,啟動的時候要跑13個執行緒--!

感覺自己的程式就像是一堆零件拼起來的粗製濫造的機器,莫名其妙的介面,咬合和傳送,隨時可能會崩潰。

在一大堆執行緒中,用同步,sleep,wait,notify,join等繞來繞去。3天以後,還是幾個頑固的異常,程式偶爾抽筋,執行順序不可控,我抓狂了。於是刪了12個執行緒,只留下乙個,發現也能滿足系統需求。

很多時候,我們需要的不是乙個能造各種各種規格各種長度各種直徑棍子從繡花針到金箍棒的機器,而只需要乙個能砸人腦袋的鐵棍。

話說就這最後乙個執行緒,還有的折騰。

關鍵是這個物件,bytebuffer,socketchannel唯一接收的讀寫物件。

先前有講到,bytebuffer這個物件很不好用。乙個弄不好資訊就沒了。網上找了很多資料,最後才搞清楚是flip問題。原來這個物件內部儲存乙個類似指標和游標之類的東西,指示當前操作位置。寫完資料以後,這個指標就停留在當前寫的byte那,也就是整個byte的最末尾。然後再去讀的時候,從指標這開始讀,自然就讀不到了。所以寫完了調一下flip()方法,把這個指標給放回去,這樣才能讀到。

於是覺得,bytebuffer真不是個東西,用一下還要這麼複雜,而且這個方法的說明還寫這麼難懂,什麼翻轉,根本就不對。一邊念叨著一邊狠狠的加上flip(),寫完了加,讀完了加,用完了再加,多置幾次也不會出錯,多多益善。

而這個動作,帶來了另外乙個非常隱蔽非常致命的問題。

未完待續

python之我理解的socket

一.為什麼學socket?完成c s架構的開發。思考 什麼是c s架構。二.學前準備 計算機系統 硬體 系統軟體 應用軟體,將這樣的計算機比作成乙個人,在地球這樣的大環境下你只能和自己玩 比如自帶的單機遊戲掃雷什麼的 但是地球上不會就只有乙個人,地球上的人需要互相交流 語言 要想所有人都聽得懂所以人...

我和電腦的不解之緣

那時候還是網路不發達的時代,我讀小學六年級。在乙個偶然的情況下,我庄的發小帶我去網咖,我第一次玩個cs這一槍戰遊戲,便深深的被他迷住了,我有點喜歡電腦了。隨著年齡的增長,我對外界的接觸越來越頻繁,我察覺到自己的渺小和知識的匱乏,計算機便成為了我認識世界的工具。初中 高中時期,學習的壓力增大,網路遊戲...

我的Python學習之路之基本語法 列表和字典

列表 序列 和字典 1.概念 個人理解列表就好比c 語言中的陣列一樣,是用中括號括起來的有序集合,訪問都可以用帶下標的數字鍵訪問.例如 a 2,hello world hihi 35 我們可以使用 a 0 去訪問它的值 字典是python 中的對映型別,是用大括號括起來的鍵值對的集合 鍵值可以理解為...