讀阿里巴巴Java開發(fā)手冊小記

題記

前段時間的一次面試,面試官問我最近有讀什么書,我答了云云苦银,又問有什么收獲或者令你印象深刻的地方红碑,無話可說。似乎讀過的書只記得書名绰上,沒有任何感悟體會旨怠,也無從證明。故寫一些小記蜈块。

編程規(guī)約

  1. 序列化類新增屬性并兼容升級時鉴腻,serialVersionUID不要修改。serialVersionUID的作用是反序列化時百揭,會判斷當(dāng)前類和反序列化對象的版本是否一致爽哎,一致才能反序列化。但是我們要兼容新增屬性器一,則不用修改serialVersionUID课锌,新增的屬性會在反序列化中賦初值。

  2. POJO對象都要寫toString()方法祈秕,便于排查問題渺贤。

  3. ArrayList的subList和ArrayList并不是一個類,因此不能夠強(qiáng)轉(zhuǎn)请毛。

  4. 集合轉(zhuǎn)數(shù)組方法toArray(T[] array)要帶參的癣亚,若不帶參只能返回Object[],強(qiáng)轉(zhuǎn)會導(dǎo)致失敗获印,而且T[] array這個數(shù)組的大小要和集合的大小保持一致述雾,不一致也不會錯街州,但非常不推薦。

  5. 數(shù)組轉(zhuǎn)集合的方法Arrays.asList()返回的集合也是Arrays的一個內(nèi)部類玻孟,并不能支持修改等操作唆缴,它是一種適配器模式,只改變了接口黍翎,底層仍是數(shù)組面徽。如修改了array[0],那么list.get(0)也會跟著變化匣掸。

  6. PECS (Producer Extends Consumer Super)
    頻繁讀忍宋伞(支持get,不支持add) 固定上邊界 <? extends T>
    頻繁插入(支持add碰酝,不支持get) 固定下邊界 <? extends T>

  7. 線程池創(chuàng)建不能使用Executor霎匈,要用ThreadPoolExecutor,這樣線程池運(yùn)行規(guī)則更明確送爸,也可以減少OOM的發(fā)生(因?yàn)镋xecutor返回的線程池里铛嘱,F(xiàn)ixedThreadPool和SingleThreadPool的請求隊(duì)列長度是Integer.MAX_VALUE,CachedThreadPool和ScheduledThreadPool的線程最大數(shù)也是Integer.MAX_VALUE袭厂,都容易造成內(nèi)存溢出墨吓。)

  8. SimpleDateFormat是將時間格式化的類,但是它是線程不安全的纹磺,在并發(fā)情況下帖烘,需要加鎖或者結(jié)合ThreadLocal來使用。

  9. switch的default是在沒有匹配成功時執(zhí)行橄杨,必須要有break蚓让,否則會往下執(zhí)行直到遇到break。而且每個switch都必須有一個default讥珍,哪怕default是空历极。

異常日志

  1. 不能在finally里使用return,這樣try里的return就無效了衷佃。

  2. 日志文件要保存15天以上趟卸,便于排查以周為單位的問題。

  3. 日志級別要清晰氏义,生產(chǎn)環(huán)境禁止輸出debug日志锄列,有選擇的輸出info日志,warn日志記錄潛在的問題惯悠,error日志只記錄系統(tǒng)邏輯錯誤邻邮,異常等錯誤信息。

單元測試

  1. 好的單元測試要像AIR一樣無聲無息但必不可少克婶。遵循三個原則Automatic,Independent,Repeatable筒严。

  2. 單元測試基本目標(biāo):語句覆蓋率70%丹泉,核心模塊語句覆蓋率和分支覆蓋率100%。

安全規(guī)約

  1. 用戶敏感數(shù)據(jù)禁止直接展示鸭蛙,必須進(jìn)行脫敏摹恨,比如手機(jī)號176****1667。

MySQL數(shù)據(jù)庫

  1. 表達(dá)是與否概念的字段命名為is_XXX娶视,類型為unsigned tinyint晒哄,1表示是,0表示否肪获。

  2. 數(shù)據(jù)庫中的表名寝凌,字段名都要全部小寫。表名不為復(fù)數(shù)孝赫,只表示表內(nèi)實(shí)體內(nèi)容较木,不表示表內(nèi)實(shí)體的數(shù)量。

  3. 小數(shù)保存的類型為decimal寒锚,不能用float和double,他倆存在精度損失的問題违孝,在比較大小的時候可能返回錯誤的結(jié)果刹前。

  4. 不使用外鍵和級聯(lián)更新,這種邏輯應(yīng)該在應(yīng)用層處理雌桑。比如A表中的id是主鍵喇喉,關(guān)聯(lián)B表中的外鍵id,若更新A.id則會同時更新B.id校坑,這就是級聯(lián)更新拣技。外鍵和級聯(lián)更新適合單機(jī)低兵法,不適合高并發(fā)耍目,外鍵還影響插入速度膏斤,因此盡量不使用。

  5. POJO的類屬性不能加is邪驮,數(shù)據(jù)庫的必須加莫辨。

  6. SUM()方法在數(shù)據(jù)為空時也返回NULL,可能會出現(xiàn)NPE問題毅访,可以用這種SQL語句處理:

SELECT IF(ISNULL(SUM(score.score)),0,SUM(score.score)) FROM score;

工程結(jié)構(gòu)

  1. 高并發(fā)服務(wù)器建議調(diào)小time_wait超時時間沮榜,默認(rèn)是240s,高并發(fā)情況下可能會有過多的time_wait狀態(tài)的線程喻粹。同時調(diào)大fd蟆融,Linux系統(tǒng)的fd數(shù)是1024,每個連接也會占用一個fd守呜,因此要調(diào)高該值型酥。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末山憨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冕末,更是在濱河造成了極大的恐慌萍歉,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件档桃,死亡現(xiàn)場離奇詭異枪孩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)藻肄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門蔑舞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘹屯,你說我怎么就攤上這事攻询。” “怎么了州弟?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵钧栖,是天一觀的道長。 經(jīng)常有香客問我婆翔,道長拯杠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任啃奴,我火速辦了婚禮潭陪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘最蕾。我一直安慰自己依溯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布瘟则。 她就那樣靜靜地躺著黎炉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪醋拧。 梳的紋絲不亂的頭發(fā)上拜隧,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機(jī)與錄音趁仙,去河邊找鬼洪添。 笑死,一個胖子當(dāng)著我的面吹牛雀费,可吹牛的內(nèi)容都是我干的干奢。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼盏袄,長吁一口氣:“原來是場噩夢啊……” “哼忿峻!你這毒婦竟也來了薄啥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤逛尚,失蹤者是張志新(化名)和其女友劉穎垄惧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绰寞,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡到逊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滤钱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片觉壶。...
    茶點(diǎn)故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖件缸,靈堂內(nèi)的尸體忽然破棺而出铜靶,到底是詐尸還是另有隱情,我是刑警寧澤他炊,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布争剿,位于F島的核電站,受9級特大地震影響痊末,放射性物質(zhì)發(fā)生泄漏蚕苇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一舌胶、第九天 我趴在偏房一處隱蔽的房頂上張望捆蜀。 院中可真熱鬧疮丛,春花似錦幔嫂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呢蔫,卻和暖如春切心,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背片吊。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工绽昏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俏脊。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓全谤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親爷贫。 傳聞我的和親對象是個殘疾皇子认然,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容