2018,如何從小白升級到大牛程式設計師呢?
寫在前面
2017已經悄悄的走了,2018也已經匆匆的來了,我們在總結過去的同時,也要展望一下未來。俗話說一年之計在於春,雖說距立春還有一個多月,我覺得我們如果想從小白升級到大牛,應該早做計劃,規劃一下今年要學哪些新的技能呢?我們來一一探討一下。
SpringBoot
Spring Boot:是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。
Spring Boot特點
1. 建立獨立的Spring應用程式
2. 嵌入的Tomcat,無需部署WAR檔案
3. 簡化Maven配置
4. 自動配置Spring
5. 提供生產就緒型功能,如指標,健康檢查和外部配置
6. 絕對沒有程式碼生成和對XML沒有要求配置
在此之前,我們用ssm進行整合的時候,大量的xml配置,一個配置不對,或者版本對應不上,就會有各種坑,噁心到想吐(真沒懷孕,哈哈)。然後當我們使用springboot後,我們只需要簡單的properies或yml配置即可搞定。而且我們再也不用手動下載tomcat了,springboot幫我們把它嵌入到了程式裡,把程式打成jar包,只需簡單用命令列執行java -jar xxx.jar 即可完成一個web專案的啟動,so esay。
Spring Cloud
Spring Cloud:簡單來說就是一個微服務框架,是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。
Spring Cloud並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。
Docker
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。
Docker的特性:
1. 速度飛快以及優雅的隔離框架
2. 物美價廉
3. CPU/記憶體的低消耗
4. 快速開/關機
5. 跨雲端計算基礎構架
有了Docker,媽媽再也不用擔心服務遷移做大量的配置工作了。
關於深度學習
PaddlePaddle
PaddlePaddle:並行分散式深度學習開源平臺,它的前身是百度於2013年自主研發的深度學習平臺,且一直為百度內部工程師研發使用。
全球各大科技巨頭開源的深度學習平臺都極具各自技術特點,對於百度,由於其自身在搜尋、影象識別、語音語義識別理解、情感分析、機器翻譯、使用者畫像推薦等多領域的業務和技術方向,PaddlePaddle則表現更加全面,是一個相對全功能的深度學習框架。
PaddlePaddle為深度學習研究人員提供了豐富的API,可以輕鬆地完成神經網路配置,模型訓練等任務。
百度成為繼Google、Facebook、IBM後另一個將人工智慧技術開源的科技巨頭,同時也是國內首個開源深度學習平臺的科技公司。
“中國人要有自己的深度學習框架”,這句話好像是在參加百度AI大會的時候聽到的,還是很給力的。
TensorFlow
TensorFlow 是谷歌釋出的第二代機器學習系統。是一個利用資料流圖(Data Flow Graphs)進行數值計算的開源軟體庫:圖中的節點(Nodes)代表數學運算操作,同時圖中的邊(Edges)表示節點之間相互流通的多維陣列,即張量(Tensors)。
這種靈活的架構可以讓使用者在多樣化的將計算部署在臺式機、伺服器或者移動裝置的一個或多個CPU上,而且無需重寫程式碼;同時任一基於梯度的機器學習演算法均可夠借鑑TensorFlow的自動分化(Auto-differentiation);此外通過靈活的Python介面,要在TensorFlow中表達想法也變得更為簡單。
Scikit-Learn
Scikit-Learn是用於機器學習的Python 模組,它建立在SciPy之上。該專案由David Cournapeau 於2007年創立,當時專案名為Google Summer of Code,自此之後,眾多志願者都為此做出了貢獻。
Scikit-Learn主要特點:
1. 操作簡單、高效的資料探勘和資料分析
2. 無訪問限制,在任何情況下可重新使用
3. 建立在NumPy、SciPy 和 matplotlib基礎上
Caffe
Caffe 是由神經網路中的表示式、速度、及模組化產生的深度學習框架。後來它通過伯克利視覺與學習中心(BVLC)和社群參與者的貢獻,得以發展形成了以一個伯克利主導,然後加之Github和Caffe-users郵件所組成的一個比較鬆散和自由的社群。
Caffe的特點:
1. 易用性:Caffe的模型與相應優化都是以文字形式而非程式碼形式給出,Caffe 給出了模型的定義、最優化設定以及預訓練的權重,方便快速使用;
2. 速度快:能夠執行最棒的模型與海量的資料;
3. Caffe可與cuDNN結合使用,可用於測試AlexNet模型,在K40上處理一張 圖片只需要1.17ms;
4. 模組化:便於擴充套件到新的任務和設定上;
5. 使用者可通過Caffe提供的各層型別來定義自己的模型;
關於深度學習的開源框架還有很多,不在此一一介紹,能夠學會並熟練運用其中一個或兩個,那你就是大牛了。
區塊鏈
比特幣想必大家已經是如雷貫耳了,09年剛誕生的時候單價也就幾美分而已,17年12月交易價格達已經到了1萬七千美元還多。約合人民幣11.3萬/枚。
區塊鏈正是比特幣的底層技術和基礎架構,它是分散式資料儲存、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學演算法。
區塊鏈本質上是一個去中心化的資料庫,同時作為比特幣的底層技術,區塊鏈是一串使用密碼學方法相關聯產生的資料塊,每一個數據塊中包含了一次比特幣網路交易的資訊,用於驗證其資訊的有效性(防偽)和生成下一個區塊。
狹義來講,區塊鏈是一種按照時間順序將資料區塊以順序相連的方式組合成的一 種鏈式資料結構, 並以密碼學方式保證的不可篡改和不可偽造的分散式賬本。
廣義來講,區塊鏈技術是利用塊鏈式資料結構來驗證與儲存資料、利用分散式節點共識演算法來生成和更新資料、利用密碼學的方式保證資料傳輸和訪問的安全、利用由自動化指令碼程式碼組成的智慧合約來程式設計和操作資料的一種全新的分散式基礎架構與計算正規化
據說研究這項技術的人的年薪100w-300w不等,也許更多。
關於語言
Java
Java已然獲得了程式語言界的霸主地位,這是沒有哪個程式設計師會否認的,在當下的程式設計師總數量中,Java程式設計師數量在900萬左右,為世界程式語言程式設計師數量上第一,並且JavaEE程式設計師還是全世界需求量最大的程式設計師。
Scala
在資深程式猿眼中,能替代Java、並且能做得比它更好的只有Scala。不可否認的是Scala在業內的口碑不錯,作為一個後起之秀,它解決了Java普遍存在的許多問題,Scala的效能比Java更加強大。
Go
Go 語言是谷歌推出的一種全新的程式語言,可以在不損失應用程式效能的情況下降低程式碼的複雜性。
Go 語言被設計成一門應用於搭載 Web 伺服器,儲存叢集或類似用途的巨型中央伺服器的系統程式語言。
對於高效能分散式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。它提供了海量並行的支援,這對於遊戲服務端的開發而言是再好不過了。
前面提到的Docker就是GO語言開發的。
Python
Python是一種解釋型、面向物件、動態資料型別的高階程式設計語言。像Perl語言一樣, Python 原始碼同樣遵循 GPL(GNU General Public License)協議。
Python已然成為機器學習領域的標配,據說即將納入高考,雖未得到官方證實,但也是大勢所趨。
Julia
Julia 語言(https://julialang.org/) 專門針對科學計算、機器學習、資料探勘、大規模線性代數、分散式和平行計算,在 Julia 的使用者眼裡,Python 不夠快也不夠方便。此消彼長,當它擅長某一項工作時,肯定會忽略其他部分。
結束語
如果上述的技術,你正在學習或者已經在運用當中,如果你還不是大牛,那你一定是在成為大牛的路上。
其實可以成為大牛的姿勢還有很多種,這裡就不在一一列舉了,只要你一如既往的堅持你認為是對的路,終有一天你將不會在乎你是不是大牛。
最後祝大家2018年,新年快樂,心想事成。工資高高、Bug少少、KPI多多。歡迎在下方留言說說自己的2018年計劃學習的新技術,給大家進行分享!
推薦閱讀:
乾貨分享:
歡迎關注,我們會不定期釋出技術類文章