6 5 開發中遇到的問題總結

2021-05-22 18:09:29 字數 641 閱讀 9303

今天在測試時發現,當多個執行緒同時往networkstream裡寫入不同的命令時,出現問題,描述如下:

1。假設執行緒1要發命令  a 然後伺服器收到a之後返回相應的操作,執行緒2傳送命令b,伺服器收到命令b後返回相應的操作

2.由於在傳送b命令之前沒有考慮,已經寫進networkstream中的命令a是否已經被傳送出去,而直接往networkstream中寫b

此時可能出現一種情況就是,緩衝區中的a還沒有被發出,b就已經寫了進來(只要networkstream中的緩衝區未滿,這種情況是允許的),然後ab一起被發了出去 導致伺服器不知道怎麼處理接收到的命令。

解決方法:

使用lock機制,當a往緩衝區裡寫的時候,要給當前的操作加一把鎖,如:

lock

stream.wirte("a");

thread.sleep(10);

然後延遲10個毫秒,確保a已經被發出去,這樣就可以保證不會發生上述bug。

networkstream temp = new networkstream();

temp = tcpclient.getstream();

temp.write("b");

由此可見乙個tcp連線只對應乙個首發緩衝區,無論建立多少個與之相連的緩衝區,實際上都指向同乙個緩衝區。 

開發中遇到的vue問題總結

1.使用axios迴圈呼叫介面,解決批量刪除 移動 建立等的批量操作 let list 迴圈呼叫介面 let result list.map item 使用promise.all方法等待所以非同步任務執行結束 promise.all result then data catch err 2.vue中...

開發中遇到的問題

最後再一次單步除錯中發現 nsurl urlwithstring 返回的nsurl居然為nil。大概找到問題所在了,在網上查了如何解決獲取空的nsurl,大致方法如下 原因 nsurl urlwithstring 這個方法要求傳乙個字串型別的引數,引數如果有中文的話,得到的物件就是空。解決辦法 先把...

開發中遇到的問題

1 element框架 實現 固定寬度 動態寬度 固定寬度 三個中 誰最長總體高度就是誰 固定寬度 實現效果是2 element框架 實現 響應式布局 使用js動態生成width 並渲染 3 hash模式下共用乙個 頻繁切換tab導致出現 非同步問題 使用同乙個axios 引數不一樣 返回的結果不同...