成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

阿里畢玄:提升代碼能力的4段經(jīng)歷

新聞 前端
對(duì)于程序員而言,我始終認(rèn)為代碼是展現(xiàn)能力的關(guān)鍵。一個(gè)優(yōu)秀程序員寫的代碼,和一個(gè)普通程序員寫的代碼是很容易看出差別的,代碼是展示程序員硬實(shí)力 的 名片。

 [[379219]]

對(duì)于程序員而言,我始終認(rèn)為代碼是展現(xiàn)能力的關(guān)鍵。一個(gè)優(yōu)秀程序員寫的代碼,和一個(gè)普通程序員寫的代碼是很容易看出差別的,代碼是展示程序員硬實(shí)力 的 名片。如何提升寫代碼的能力,始終是一個(gè)關(guān)鍵的話題,不過很遺憾這篇文章其實(shí)也不是講具體的步驟、銀彈方法、武功秘籍什么的,這篇文章講講我自己印象中,對(duì)我寫代碼能力提升比較大的四段經(jīng)歷,也許可供參考。

第一段:第一次感受每天億級(jí)系統(tǒng)的挑戰(zhàn)

2008年,HSF的第二個(gè)版本,在當(dāng)時(shí)淘寶最重要的交易中心上線,上線當(dāng)天造成淘寶網(wǎng)站訪問巨慢,交易類的頁面幾乎打不開,最后靠下線HSF才恢復(fù)。

下線后開始查問題,HSF的第二個(gè)版本基于的是JBoss Remoting,JBoss Remoting在當(dāng)時(shí)的版本里遠(yuǎn)程同步調(diào)用的超時(shí)時(shí)間是寫死在代碼里的60s,而調(diào)用的服務(wù)確實(shí)會(huì)有一些超過10幾秒的現(xiàn)象出現(xiàn),導(dǎo)致了Web應(yīng)用處理Web請求的線程池被這些慢請求給逐漸占據(jù),請求堆積,最終呈現(xiàn)出了頁面打開非常慢的現(xiàn)象。

查清原因后,決定基于當(dāng)時(shí)的Mina重寫整個(gè)HSF的通信。重寫的這兩個(gè)月時(shí)間對(duì)我自己寫代碼的能力有很大的提升,無論是對(duì)網(wǎng)絡(luò)IO方面處理的深入學(xué)習(xí),還是在高并發(fā)系統(tǒng)上的深入學(xué)習(xí)。現(xiàn)在想想學(xué)習(xí)的方式也就是翻各類網(wǎng)絡(luò)IO的科普資料,然后是讀Mina的源碼、Java網(wǎng)絡(luò)IO的源碼。并發(fā)這塊的學(xué)習(xí)主要還是靠那本經(jīng)典的《Java并發(fā)編程實(shí)戰(zhàn)》,以及讀Java J.U.C里的代碼。這段時(shí)間的學(xué)習(xí)相比以往翻《Think in Java 》 之類的最大區(qū)別是,學(xué)習(xí)后付諸實(shí)踐,隨著HSF這個(gè)新的重寫的版本的上線,基本算是逐漸真正掌握了這些部分的代碼能力。

除了代碼能力的提升外,得到了另外一個(gè)最大的教訓(xùn)就是,對(duì)于一個(gè)億級(jí)且長時(shí)間運(yùn)行的系統(tǒng),很多看起來的小概率的問題都一定會(huì)成為嚴(yán)重的問題。這也是寫高并發(fā)系統(tǒng)難的原因,要求必須對(duì)自己寫的代碼,以及自己代碼調(diào)用到的各種API里的實(shí)現(xiàn)都非常的清楚,這樣才能真正確保最終代碼的魯棒性。

第二段:民間"消防隊(duì)"的故事

第二段對(duì)我自己寫代碼能力提升特別大的經(jīng)歷是在民間"消防隊(duì)"的那段日子。淘寶在2009年故障特別多,但處理故障還沒有一個(gè)標(biāo)準(zhǔn)的體系和組織,導(dǎo)致很多時(shí)候會(huì)出現(xiàn)故障出了都沒什么人處理,或者處理效率不高。于是當(dāng)時(shí)有個(gè)運(yùn)維團(tuán)隊(duì)的同學(xué)拉了一些人組建了一個(gè)群,群的名字叫淘寶消防隊(duì),用來處理淘寶出現(xiàn)的各種故障,我很湊巧的也加入了這個(gè)群,這個(gè)群里還有另外一個(gè)整個(gè)阿里公認(rèn)的超級(jí)技術(shù)大神:多隆。

一開始看到各種故障的時(shí)候,壓根就不知道怎么下手。處理故障需要的通常不僅僅是寫代碼的能力,還需要對(duì)一個(gè)系統(tǒng)的全貌要有一定的掌握。例如前幾年一篇特別火的文章,點(diǎn)擊搜索背后發(fā)生了什么,其實(shí)就是要對(duì)一個(gè)系統(tǒng)的處理流程特別的熟悉,這在處理故障的時(shí)候是非常重要的。在了解了故障大概在哪個(gè)環(huán)節(jié)后,很重要的就是對(duì)這個(gè)環(huán)節(jié)代碼運(yùn)行機(jī)制的細(xì)節(jié)的掌控了,這個(gè)時(shí)候通常來說運(yùn)用各種工具是非常重要的,可以有效地幫助你知道具體發(fā)生了什么,例如像系統(tǒng)層面的top -H之類的,Java層面的BTrace等等,都可以讓你根據(jù)運(yùn)行情況去定位問題。

這段時(shí)間我覺得我的提升就是靠大量的練手。故障確實(shí)有點(diǎn)多,一開始就靠看別人怎么處理,主要是從多隆那里學(xué),然后是嘗試自己解決一些故障,解決的越來越多后慢慢熟練度就上去了。除了解決故障能力的提升外,由于看了很多由代碼層面造成的故障,對(duì)自己在寫代碼時(shí)如何更好的保證魯棒性來避免故障,也是非常有幫助的。例如,我看過很多濫用線程池造成創(chuàng)建了大量線程,最終導(dǎo)致線程創(chuàng)建不出來的case,就會(huì)明白自己在用線程池的場景里一定要非常清楚地控制最大的數(shù)量,包括堆積的策略等。又例如,我看過N多的因?yàn)樽栽鲩L容量的數(shù)據(jù)結(jié)構(gòu)導(dǎo)致的OOM的case,就會(huì)明白在寫代碼的時(shí)候不能認(rèn)為一定不會(huì)發(fā)生數(shù)據(jù)結(jié)構(gòu)增長到超級(jí)大,所以不做任何保護(hù)的case。這段時(shí)間我明白到的就是,寫一段能運(yùn)轉(zhuǎn)、實(shí)現(xiàn)需求的代碼不難,但要寫一段在各種情況下都能長期穩(wěn)定運(yùn)行的代碼是真心不容易,我覺得這是一個(gè)職業(yè)的寫商業(yè)系統(tǒng)的程序員和只寫程序玩玩的程序員的最大差別。

第三段:重寫通信框架

2010年,我從中間件團(tuán)隊(duì)離開,去做HBase。那個(gè)時(shí)候的HBase里面的通信還是用一個(gè)非常簡單的寫法實(shí)現(xiàn)的。我想著要么就把以前HSF里用的移植到HBase里用,這個(gè)時(shí)候剛好多隆在用C給各類C的應(yīng)用寫一個(gè)通用的通信框架libeasy,于是就有了一次測試,我記得第一次測試的結(jié)果,就看到了原來HSF里面的通信框架的高并發(fā)能力和libeasy比相差無比巨大。我 便 和多隆探討他是怎么實(shí)現(xiàn)的,我看看能不能學(xué)習(xí)下,在Java這邊的版本里也改改,所以有了這段重寫通信框架的經(jīng)歷。

本來以為之前在寫HSF的那幾年應(yīng)該算是對(duì)通信框架這塊的代碼相關(guān)的能力掌握的不錯(cuò)了,在和多隆一起重寫的這段過程中,才發(fā)現(xiàn)差距還是很大的。多隆教會(huì)了我很多細(xì)節(jié)的問題,基于NIO的通信框架的核心是用非常少的IO線程來處理IO事件(太多也沒用,因?yàn)橛行┎糠志椭荒艽校匀绾胃咝У氖褂煤眠@幾個(gè)IO線程是非常關(guān)鍵的,要盡量減少這幾個(gè)IO線程處理一些不相關(guān)的動(dòng)作,另外一點(diǎn)就是盡量減少IO線程和業(yè)務(wù)處理線程的切換,例如后來常見的批量把一個(gè)流里的多個(gè)請求一次性丟給業(yè)務(wù)處理線程。

這段經(jīng)歷對(duì)自己 在 代碼邏 輯整體的 細(xì)節(jié)層面 更加深入地掌握是非常有幫助的,這對(duì)于寫要求很高的系統(tǒng)是非常重要的,畢竟對(duì)于一個(gè)超大規(guī)模的系統(tǒng)而言,1%的提升還是可觀的。

第四段:學(xué)習(xí)JVM

之前因?yàn)樘幚砉收媳容^多,有段時(shí)間我開始給公司同事們分享如何處理故障,后來發(fā)現(xiàn)有些問題自己也講不清楚,或者也不知道怎么處理,必須深入學(xué)習(xí)JVM才行,但其實(shí)一開始我完全摸不著門路,JVM代碼打開都不知道從哪看起。

很幸運(yùn),碰到了一個(gè)同樣愛好 JVM 又比我強(qiáng)很多的同學(xué),就是撒迦,圈內(nèi)通常叫R大。我和撒迦好幾個(gè)周末約著在公司一起看JVM代碼,有撒迦的指點(diǎn),我終于算是入門了,知道大概怎么去看了,而且兩個(gè)人一起看代碼,互相分享和探討,效率是非常高的。

有了這段經(jīng)歷,再加上繼續(xù)處理著一些故障,基本上逐漸對(duì)JVM的代碼實(shí)現(xiàn)有了更多的理解。在后來做故障分享、問題解決什么的時(shí)候終于能更好地做到知其然知所以然。同樣,這對(duì)處理故障的能力、寫代碼的能力也是非常有幫助的,例如會(huì)更加明白以前認(rèn)為的所謂的面向GC友好的代碼是幾個(gè)意思。也有了更深的感受,就是其實(shí)Java的代碼呢,通常不會(huì)寫的太爛,因?yàn)镴VM在運(yùn)行期會(huì)做很多的盡可能的優(yōu)化,拉到一個(gè)平均線,但要寫得很好,難度是非常大的,因?yàn)樾枰甁VM,懂JVM下面的OS。

總結(jié)

其實(shí)也總結(jié)不出什么,因?yàn)槊總€(gè)人所處的環(huán)境不一樣,有不同的適合各自提升的方法。我看自己的經(jīng)歷總結(jié)下來,我覺得:

  • 如果環(huán)境不具備,就給自己一個(gè) 命題 挑戰(zhàn)。例如要學(xué)高并發(fā)的通信,可以嘗試自己寫一個(gè)和其他的做對(duì)比,做性能等的PK,這個(gè)通常提升還是會(huì)很大的。要學(xué)GC,可以嘗試給自己幾個(gè)題目,來控制GC的行為等,如果環(huán)境具備的話,確實(shí)會(huì)更加有利。

  • 多和優(yōu)秀的程序員一起學(xué)習(xí)。我自己從多隆、撒迦身上學(xué)習(xí)到了很多很多。從很多優(yōu)秀的開源代碼,像Netty、OpenJDK里面也學(xué)習(xí)到了很多很多,所以多參與一些優(yōu)秀的開源項(xiàng)目也是一個(gè)很好的提升方法,看優(yōu)秀的書(例如并發(fā)里的那本《Java并發(fā)編程實(shí)戰(zhàn) 》 ,JVM里的 《 Oracle JRockit: The Definitive Guide 》 , 《 深入理解Java虛擬機(jī) 》 等),也一樣是一種向優(yōu)秀程序員學(xué)習(xí)的好方法。

  • 多多嘗試解決問題/故障。這絕對(duì)是提升代碼綜合能力非常好的一個(gè)方法,自己工作里機(jī)會(huì)少的話,網(wǎng)上有大把的平臺(tái),像Stack Overflow之類的,都是很好的練習(xí)場。

最后的最后,我還是想說,代碼能力作為程序員的硬名片,始終是最有效的區(qū)分程序員能力的東西," t alk i s ch eap, show me the code ",這句話我覺得是永遠(yuǎn)成立的。

 

責(zé)任編輯:張燕妮 來源: 阿里技術(shù)
相關(guān)推薦

2021-07-19 08:24:36

阿里代碼程序員

2019-02-18 08:24:09

技術(shù)應(yīng)用架構(gòu)

2019-03-01 09:58:57

開發(fā)者技能云計(jì)算

2016-12-23 16:11:02

CTO訓(xùn)練營

2016-12-23 11:42:44

CTO訓(xùn)練營

2021-03-11 13:51:07

阿里云PolarDB云數(shù)據(jù)庫

2023-03-27 18:18:47

GPT-4AI

2014-11-28 10:53:37

2016-12-22 16:49:05

CTO訓(xùn)練營

2016-05-18 13:41:46

阿里金融云計(jì)算

2023-04-04 11:20:40

GPT-4OpenAI

2018-09-28 16:05:32

NetApp收購StackPointC

2009-07-24 20:00:32

虛擬化數(shù)據(jù)中心SOA

2009-09-24 17:49:23

多機(jī)系統(tǒng)業(yè)務(wù)融合思科

2024-01-12 13:38:54

業(yè)務(wù)購物ToC

2019-09-23 09:46:58

能力模型技術(shù)

2023-09-27 07:39:57

大型語言模型MiniGPT-4

2022-09-09 09:33:14

支付寶代碼性能

2019-06-19 08:09:05

CSSJavaScript前端

2020-07-23 07:27:50

編程學(xué)習(xí)技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩国产欧美视频 | 综合久久久 | 午夜精品一区二区三区免费视频 | 亚洲精品成人在线 | 欧美一区二区三区久久精品 | 久久在线免费 | 在线视频亚洲 | av毛片 | 天天精品在线 | 国产高清在线精品一区二区三区 | 国产综合av| 久久精品国产久精国产 | 久久亚 | 久久精品国产a三级三级三级 | 91精品一区| 日本在线观看视频 | 亚洲 日本 欧美 中文幕 | 欧美日韩精品一区二区天天拍 | 亚洲精品免费在线 | 天天操操操操操 | 自拍偷拍中文字幕 | 亚洲精品91| 波多野结衣av中文字幕 | 国产综合久久 | 91久久精品一区二区二区 | 久久久www成人免费精品张筱雨 | 丁香五月网久久综合 | 亚洲97| 色综合一区二区 | 欧美黄色性生活视频 | 激情五月婷婷丁香 | 亚洲综合国产精品 | 四虎永久免费在线 | 男女羞羞视频大全 | 国产一区精品 | 97起碰| 91精品在线播放 | 成人性视频免费网站 | 超碰人人人 | 日韩成人在线看 | 五月激情婷婷在线 |