《阿里巴巴規範》筆記

2021-08-20 06:38:48 字數 1199 閱讀 1529

1.【強制】執行緒池不允許使用 executors 去建立,而是通過 threadpoolexecutor 的方式,這樣的處理方式讓寫的同學更加明確執行緒池的執行規則,規避資源耗盡的風險。

說明:executors 返回的執行緒池物件的弊端如下:

(1)fixedthreadpool 和 singlethreadpool:允許的請求佇列長度為 integer.max_value,可能會堆積大量的請求,從而導致 oom。

(2)cachedthreadpool 和 scheduledthreadpool:允許的建立執行緒數量為 integer.max_value,可能會建立大量的執行緒,從而導致 oom。

//阻塞佇列盡量指明長度,這裡使用arrayblockingqueue

executorservice executor = new threadpoolexecutor(1, 1, 0l, timeunit.milliseconds,

new arrayblockingqueue(5000), new abortpolicy());

2.【強制】******dateformat 是執行緒不安全的類,一般不要定義為 static 變數,如果定義為static,必須加鎖,或者使用 dateutils 工具類。

注意執行緒安全,使用 dateutils。亦推薦如下處理:

private static final threadlocal df = new threadlocal() 

};

如果是 jdk8 的應用,可以使用 instant 代替 date,localdatetime 代替 calendar,datetimeformatter 代替 ******dateformat,官方給出的解釋:****** beautiful strongimmutable thread-safe。

3.高併發時能不用鎖盡量不用鎖;能用無鎖資料結構,就不要用鎖;能鎖區塊,就不要鎖整個方法體;能用物件鎖,就不要用類鎖。

volatile 解決多執行緒記憶體不可見問題。對於一寫多讀,是可以解決變數同步問題,但是如果多寫,同樣無法解決執行緒安全問題。

4.【推薦】高併發伺服器建議調小 tcp 協議的 time_wait 超時時間。說明:作業系統預設 240 秒後,才會關閉處於 time_wait 狀態的連線,在高併發訪問下,伺服器端會因為處於 time_wait 的連線數太多,可能無法建立新的連線,所以需要在伺服器上調小此等待值。

阿里巴巴編碼規範

一 防止npe,是程式設計師的基本修養,注意npe產生的場景 1 返回型別為基本資料型別,return包裝資料型別的物件時,自動拆箱有可能產生npe 2 資料庫的查詢結果可能為null 3 集合裡的元素即使isnotempty,取出的資料元素也可能為null 4 遠端呼叫返回物件時,一律要求進行空指...

Mybatis 阿里巴巴規範

一 強制 強制 在表查詢中,一律不要使用 作為查詢的字段列表,需要哪些字段必須明確寫明。說明 1 增加查詢分析器解析成本。2 增減字段容易與 resultmap 配置不一致。強制 pojo 類的布林屬性不能加 is 而資料庫字段必須加 is 要求在 resultmap 中進行欄位與屬性之間的對映。說...

阿里巴巴AI Pandas

1.series 主要用於處理一維資料,一般由乙個陣列的資料構成。2.dataframe 主要用於處理二維資料。from pandas import series,dataframe series eg import pandas as pd s1 pd.series 1,2,3,4 s1 0 1 ...