挨踢部落故事匯(15):不斷拓新成為科技大潮中的弄潮兒
原創(chuàng)【51CTO.com原創(chuàng)稿件】周佳是個資深宅男,平時有時間主要是宅。比較喜歡研究心理學方面的書籍,平時喜歡看書,給大家安利一本書《超越自卑》,個體心理學大師級著作。興致來了能玩一天游戲,經常看電影。在工作方面一直專注于服務器后端開發(fā),目前在一家服務公司做云計算基礎服務。
周佳·Java服務端工程師
Python語言現(xiàn)在十分火熱,而且很多云計算底層服務都是使用Python做的,分享下周佳是如何從Java程序員學習Python和云計算的心得。
從Java到Python,眼界大開
周佳在第一份工作滿2年的時候,對于公司內部的技術體系都摸透了,覺得沒有什么提升了,就想學點新東西。那時候14年左右,大數(shù)據(jù)剛剛火起來,都在談大數(shù)據(jù)。他也看了一陣大數(shù)據(jù)的內容,無非就是Hadoop那套東西,安裝部署之外,好像感覺不能深入做一些東西。后來公司開始全面引進云服務,移植一些本地的服務到云服務平臺,于是周佳開始接觸到一些云服務平臺,公司有意向作一些云資源給用戶,這就要用到云服務的公共API,而這些API接口是Python寫的。做為一個Java程序員,剛開始對Python代碼有一部分是不能理解的。于是周佳開始進軍學習python語言了。
要系統(tǒng)的學習一門語言不能僅靠只在網絡上查找教程,雖然有些帖子某個知識點寫的非常精華,但買一本書是必要的。現(xiàn)在周佳還記憶猶新,當時買的書是《Python基礎教程(第2版 修訂版)》,書的內容不錯,而且配套有很多練習項目,只可惜他并沒有全部看完。大約一周的時間,他把書上的知識點全部過一遍,就開始著手項目了。
相比Java而言,Python語言是一門更高級的語言,抽象度更高。14年Java8發(fā)布,當時周佳并沒有函數(shù)式編程的概念,學習了Python,給他打開了一扇新的大門。函數(shù)式編程抽象程度高于面向對象,而且在代碼的寫法上更簡潔,偏向于數(shù)學化。但是相對的,其可讀性不如面向對象那樣易于理解。Python的抽象程度高于Java,許多Java需要長篇大論的代碼,Python代碼只要區(qū)區(qū)幾行就能搞定。這讓周佳對Python也是愛不釋手。比如:創(chuàng)建一個1到100的隊列,在Java中只能循環(huán)循環(huán)賦值,而在python中range(100)就可以了。只會一門編程語言的程序員不是好程序員,當你多會幾門語言的時候,你的眼界會大大的開闊,可能不止發(fā)現(xiàn)了一扇門,而是發(fā)現(xiàn)了很多窗,解決問題的思路也就多了。
周佳后來入職的下一家公司,需要做個后端管理平臺,于是他選型Python的Django框架作為開發(fā)平臺。有空的時候跟同事聊天,被問道當初他學習Python是怎么入門的,花了多長時間,他說一周!其實語言之間雖然語法千差萬別,但是理念都是相通的。當初學習Java的時候,他大三學了一年都是懵逼狀態(tài),學習第二門語言的時候,真的只用了一周時間。李連杰的電影里有句話:學習乾坤大挪移普通人要30年,打通任督二脈者只需1個時辰,想必周佳是打通任督二脈了吧。
Python到云計算,繼續(xù)拓新
2016年周佳入職到一家做云計算的公司,在面試的時候,他提到有Java和Python雙重開發(fā)技能,很容易就通過了面試。到了新公司,又是一個全新的領域,云計算是他以前是沒有接觸過的。公司云計算平臺的底層是用Python做的,上層業(yè)務平臺使用Java寫的。當然,具體的業(yè)務平臺架構是十分復雜的,上層使用的Springcloud的微服務框架,部署于Docker容器內。使用Jenkins做持續(xù)集成開發(fā)部署。底層基于Docker和虛擬機做云服務。剛入職的時候,他好些東西不會,硬著頭皮學,抱著大腿就不放,特別是Docker部分,之前他所在的都是一些規(guī)模小的公司,可能沒有使用Docker的必要。周佳看著教程,對著命令一遍一遍的練習,拉去鏡像,創(chuàng)建容器,配置網絡,掛載數(shù)據(jù)卷,反復練習。經過不長時間,他終于從對云計算一竅不通的門外漢變成團隊的中堅力量,不僅做上層業(yè)務平臺,還做底層基礎服務。堅持不懈的學習使他在全新技術領域有了立足之地。
然而程序猿的世界總是充斥著各種突發(fā)事件,前不久云服務好些個容器掛載的存儲設備突然全部變成只讀設備,無法進行任何操作,在物理服務器上也無法執(zhí)行相應的Docker命令,無法查詢Docker的容器信息,執(zhí)行任何Docker命令都進程卡死,周佳判斷肯定是Docker的daemon進程被某些容器卡死了。如果重啟daemon能解決問題,但是這樣做,這個物理服務器上的所有Docker容器會全部死掉,恢復工作是災難性的,肯定是下下策。關鍵是找到到底是哪幾個容器把進程卡死的,于是他找到運維最近創(chuàng)建的幾個容器,進入容器目錄,查詢容器的Config.json配置文件,查詢容器進程的pid,將剛剛創(chuàng)建的容器進程全部殺掉。試了一下docker ps,果然好了,隨后他重建了這幾個Docker容器。事后周佳跟運維溝通了下,原來是由于最近運維給存儲服務更換過硬盤,更換的硬盤上的存儲設備對應的正是這個物理機上的這幾個容器,導致容器存儲設備無法掛載。
隨著IT技術的深入發(fā)展,越來越多的公司都在構建自己的云服務,這有兩方面的意義,一個是構建自己的基礎信息平臺,提高開發(fā)運維的自動化程度,提高工作效率;第二個是可以整合物理資源,出售部分剩余的物理資源為公司獲取一定收入,當然做大了,還能成為公司的主營業(yè)務。
一入猿門深似海,學海無涯苦作舟。當踏上IT這條道路,就注定走上了終身學習的道路。計算機技術飛速發(fā)展,也推動著開發(fā)者不得不拼命的學習新技術。只有不斷的更新自己的知識技能,才能成為科技大潮中的弄潮兒。
如果你也愿意分享你的故事,請加51CTO開發(fā)者QQ交流群 312724475聯(lián)系群主小官,期待你的精彩故事!
【51CTO原創(chuàng)稿件,合作站點轉載請注明原文作者和出處為51CTO.com】