問題記錄 多執行緒環境介面呼叫返回引數紊亂問題

2021-10-07 10:32:35 字數 1050 閱讀 2908

結論:慎用全域性變數

今天在開發過程中遇到了乙個問題,就是在併發過程中存在介面返回資料紊亂問題,之前百思不得其解,後來發現是因為定義了乙個全域性變數,在spring中因為管理的bean都是單例存在的,在併發過程中可能存在返回資料紊亂的問題

當時做了乙個切面

public

class

logaspect

@around

(value =

"logpint() && @annotation(logannotation)"

)public object around

(proceedingjoinpoint pjp, logannotation logannotation)

throws throwable , 引數:{}, 操作人:{}"

, logevent.

geturi()

, logevent.

getparamjson()

,

result = pjp.

proceed()

;//事件結果

logevent.

seteventresult

(true);

// 執行時長(毫秒)

long time = system.

currenttimemillis()

- starttm;

//花費時間(毫秒)

logevent.

setcosttime

(time)

; log.

info

("介面耗時:{}, 返回結果:{}"

, time, result)

;return result;

}catch

(throwable e)

finally

", json.

tojsonstring

(logevent));

}}

因為result定義為了全域性變數,所以會出現這種問題

python多執行緒GIL的問題記錄

由於物理上得限制,各cpu廠商在核心頻率上的比賽已經被多核所取代。為了更有效的利用多核處理器的效能,就出現了多執行緒的程式設計方式,而隨之帶來的就是執行緒間資料一致性和狀態同步的困難。即使在cpu內部的cache也不例外,為了有效解決多份快取之間的資料同步時各廠商花費了不少心思,也不可避免的帶來了一...

tensorflow環境使用問題記錄

問題1 記錄用tf.flags.define float來定義乙個常量 名為 m plus 時,會報conflicting option錯誤 原因 這個錯誤是當你把 執行第二遍以上時,就會報的錯,好像是第二遍後就重複定義常量positive data file了所以報錯,這時候比較笨的乙個方法就是重...

flutter安裝開發環境 問題記錄

按照文件快速開始 配置flutter中的ios環境時,執行brew install head libimobiledevice時,報異常 解除安裝brew,重新安裝 1 解除安裝brew,執行命令 usr bin ruby e curl fssl 2 安裝brew,執行命令 usr bin ruby...