結論:慎用全域性變數
今天在開發過程中遇到了乙個問題,就是在併發過程中存在介面返回資料紊亂問題,之前百思不得其解,後來發現是因為定義了乙個全域性變數,在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...