1. 程式人生 > >2018,如何從技術小白升級到大牛程式設計師?

2018,如何從技術小白升級到大牛程式設計師?

點選上方“CSDN”,選擇“置頂公眾號”

關鍵時刻,第一時間送達!

作者簡介:互扯程式,某網際網路公司 P8 級專家攻城獅,曾參與過央視全臺網的研發工作。目前正在做車聯網專案的雲平臺的架構設計與研發工作。平時喜歡打球游泳,偶爾發表一些技術文章,有個公眾號叫「互扯程式」。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

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。

640?wx_fmt=png

Spring Cloud

Spring Cloud:簡單來說就是一個微服務框架,是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用 Spring Boot 的開發風格做到一鍵啟動和部署。

Spring Cloud 並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過 Spring Boot 風格進行再封裝遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。

640?wx_fmt=png

Docker

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。

容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。

Docker 的特性:

  1. 速度飛快以及優雅的隔離框架;

  2. 物美價廉;

  3. CPU/記憶體的低消耗;

  4. 快速開/關機;

  5. 跨雲端計算基礎構架。

有了 Docker,媽媽再也不用擔心服務遷移做大量的配置工作了。

640?wx_fmt=png

關於深度學習

PaddlePaddle

PaddlePaddle:並行分散式深度學習開源平臺,它的前身是百度於 2013 年自主研發的深度學習平臺,且一直為百度內部工程師研發使用。

全球各大科技巨頭開源的深度學習平臺都極具各自技術特點,對於百度,由於其自身在搜尋、影象識別、語音語義識別理解、情感分析、機器翻譯、使用者畫像推薦等多領域的業務和技術方向,PaddlePaddle 則表現更加全面,是一個相對全功能的深度學習框架。

PaddlePaddle 為深度學習研究人員提供了豐富的 API,可以輕鬆地完成神經網路配置,模型訓練等任務。

百度成為繼 Google、Facebook、IBM 後另一個將人工智慧技術開源的科技巨頭,同時也是國內首個開源深度學習平臺的科技公司。

“中國人要有自己的深度學習框架”,這句話好像是在參加百度 AI 大會的時候聽到的,還是很給力的。

640?wx_fmt=jpeg

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 不等,也許更多。

640?wx_fmt=jpeg

關於語言

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 不夠快也不夠方便。此消彼長,當它擅長某一項工作時,肯定會忽略其他部分。

640?wx_fmt=jpeg

結束語

如果上述的技術,你正在學習或者已經在運用當中,如果你還不是大牛,那你一定是在成為大牛的路上。

其實可以成為大牛的姿勢還有很多種,這裡就不在一一列舉了,只要你一如既往的堅持你認為是對的路,終有一天你將不會在乎你是不是大牛。

最後祝大家 2018 年,新年快樂,心想事成。工資高高、Bug 少少、KPI 多多。歡迎在下方留言說說自己的 2018 年計劃學習的新技術,給大家進行分享!

本文為作者投稿,歡迎更多朋友微信聯絡:donyintxy 投稿,一起為程式設計師傳播更具價值的優質內容。

640?wx_fmt=jpeg0?wx_fmt=gif