日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】阿里毕玄:提升代码能力的4段经历【无它就是实干】

發(fā)布時間:2024/3/26 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】阿里毕玄:提升代码能力的4段经历【无它就是实干】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

?

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

?

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

?

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

?

查清原因后,決定基于當(dāng)時的Mina重寫整個HSF的通信。重寫的這兩個月時間對我自己寫代碼的能力有很大的提升,無論是對網(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ā)編程實戰(zhàn)》,以及讀Java J.U.C里的代碼。這段時間的學(xué)習(xí)相比以往翻《Think in Java》之類的最大區(qū)別是,學(xué)習(xí)后付諸實踐,隨著HSF這個新的重寫的版本的上線,基本算是逐漸真正掌握了這些部分的代碼能力。
?

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

?

第二段:民間"消防隊"的故事

?

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

?

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

?

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

?

第三段:重寫通信框架

?

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

?

本來以為之前在寫HSF的那幾年應(yīng)該算是對通信框架這塊的代碼相關(guān)的能力掌握的不錯了,在和多隆一起重寫的這段過程中,才發(fā)現(xiàn)差距還是很大的。多隆教會了我很多細節(jié)的問題,基于NIO的通信框架的核心是用非常少的IO線程來處理IO事件(太多也沒用,因為有些部分就只能串行),所以如何高效的使用好這幾個IO線程是非常關(guān)鍵的,要盡量減少這幾個IO線程處理一些不相關(guān)的動作,另外一點就是盡量減少IO線程和業(yè)務(wù)處理線程的切換,例如后來常見的批量把一個流里的多個請求一次性丟給業(yè)務(wù)處理線程。

?

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

?

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

?

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

?

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

?

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

?

總結(jié)

?

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

?

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

?

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

?

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

?

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

總結(jié)

以上是生活随笔為你收集整理的【转】阿里毕玄:提升代码能力的4段经历【无它就是实干】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天射视频 | 黄色裸体网站 | 巨乳动漫美女 | 欧美图片一区二区 | 91精品人妻一区二区三区四区 | 精品国产a线一区二区三区东京热 | 亚洲午夜精品视频 | 国产真实乱人偷精品视频 | 国内露脸中年夫妇交换 | 99综合| 欧洲日韩一区二区三区 | av片在线免费观看 | 亚洲天天干 | 在线电影一区二区 | 2024国产精品 | 少妇视频网站 | 天天插天天射 | 99re99| 日韩精品伦理 | 一区二区三区精品久久久 | 亚洲网在线观看 | 日本丰满少妇做爰爽爽 | 国产伦精品一区二区三区四区免费 | 91人人爽| 午夜视频在线瓜伦 | 色狠狠av | 红桃成人在线 | 日本成人小视频 | 在线观看免费黄色小视频 | 男女午夜视频在线观看 | 少妇被躁爽到高潮 | 中日韩精品视频在线观看 | 一本久久精品一区二区 | 一本在线免费视频 | 欧美xxxx8888| 国产丝袜精品视频 | 天天操女人 | 性猛交ⅹxxx富婆视频 | 99热这里有精品 | 成人免费毛片入口 | 制服丝袜第一页在线观看 | 国模私拍在线 | 91n在线观看 | 日本三级大全 | 欧美高清性 | 操穴影院 | 欧美一a一片一级一片 | 成年人在线免费观看视频网站 | 香港黄色网 | 操操久久 | 亚洲激情久久 | 视频在线观看一区二区 | 中文字幕第一页av | 欧美精品日韩少妇 | 黄色在线a | www激情com | 中文字幕3区 | 打屁屁日本xxxxx变态 | 被灌满精子的波多野结衣 | 日日操夜夜操狠狠操 | 欧美精品videos另类日本 | 裸体喂奶一级裸片 | 蜜桃网av | 奇米一区 | 欧美高大丰满少妇xxxx | 国产精品久久久久久久 | 欧美激情片在线观看 | 91丨九色丨丰满 | 人妻射精一区二区 | 日韩天天 | 欧美激情一级精品国产 | 精品中文字幕在线 | 男女做爰真人视频直播 | 黄色资源在线 | 红杏出墙记 | 伊人网色 | 粗大黑人巨茎大战欧美成人免费看 | 校霸被c到爽夹震蛋上课高潮 | 黄色网页大全 | av先锋资源| 久久精品一二三 | 国产一级自拍 | 国产欧美精品一区二区色综合 | av导航福利| 免费啪| 男人都懂的网址 | 色在线免费观看 | 午夜影院18 | 午夜视频导航 | 国产精品久久久不卡 | 国产精品1区2区3区4区 | 成人av亚洲 | 成人在线免费看 | 日本在线不卡一区二区 | 黄色1级视频 | 日批视屏 | 在线观看三区 | 欧美1区| 亚洲好骚综合 |