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