職場的程序員們或多或少都受到過前輩或領導的指點,應該都聽過這麼一句話 「學技術不能光會搭建個環境,使幾個API,要學習瞭解技術的本質」。可能實際聽得比較多的是 「學習技術原理」這句。因此這兩個點都會說到,會說一說區別及聯繫。程序員
原理,何爲原理,技術原理到底在學什麼?面試
本質,何爲本質,怎麼就算了解掌握技術本質了?redis
本文就來碼一碼技術原理和技術本質這兩個東西。算法
1、技術原理數據庫
先說一下「技術原理」這個詞,這個應該你們都很熟悉,往往提起甚至感到一絲絲痛苦和折磨,一線互聯網公司面試官的最愛,常常拿來挑逗一下面試者,"知道xx技術的實現原理嗎?能不能說一說"。緩存
技術原理即技術背後的 實現思想、架構設計、代碼 ,學習一個技術的實現原理就是學習這三個方面的內容。數據結構
這三個方面也是層層遞進的關係,愈來愈具體。架構
首先,思想是宏觀的東西,構建起整個技術的理論支撐;
其次,架構是思想的進一步推敲和論證的產物;
最後,就是代碼了,結合思想和架構設計變成一行行的可執行代碼。分佈式
因此,你看技術原理的路線圖和目標就出來了,第一,學習思想構建起宏觀概念 ;第二,學習總體架構及局部架構掌握總體結構的組成和相互之間的關係;第三,學習代碼的實現和邏輯。memcached
舉例說明一下,學習 "HashMap原理",這時候首先應該構建起的是它的數據結構知識即哈希表的概念和特色(其實若是再拔高一點,應當是先創建起各類數據結構和相互之間區別、特色及相關算法的思想和理論知識,固然這個要求就稍微高一些了),而後架構設計由於這是一個具體的類,因此這部分就是類中包含的核心方法及做用,最後就是深刻代碼,學習具體的代碼實現邏輯,好比put方法是怎麼存入數據的,又在什麼狀況下會進行擴容等等。
若是沒有前面部分的思想和理論作支撐, 不建議直接上來就進入到代碼細節,會學的很痛苦比較掙扎。發現概念和理論上的盲區,應及時補上,而後在繼續代碼的學習。
2、技術本質
說完技術原理,下面看技術本質。簡單理解,技術的本質就是解決問題,將解決問題的來龍去脈分別具體化研究,展開來講本質就是除過上面說到的技術原理以外,還應該包括 技術所解決的核心問題 和 應用場景 以及 存在什麼樣的優點和不足。
總結一下,就是如下3點內容:
一、技術解決的核心問題和應用場景
二、技術原理
三、技術特性
因此,你看學習技術本質的路線圖和目標也就出來了,第一,掌握技術解決的核心問題和應用場景,即搞明白它能夠用來幹什麼;第二,研究技術原理,即搞明白它爲何能夠作到;第三,瞭解它的技術特性,即搞明白它的優點在哪裏。
拿redis來講,它解決的核心問題是提供高性能的內存數據緩存服務。雖然說官方認爲它還能夠用做數據庫和消息代理,但實際應用中更多做爲數據的緩存服務。
技術原理上面專門作了介紹了,讀者能夠類比理解,這裏就不在展開了。
技術特性便是該項技術與相關其餘相似技術相比有什麼牛逼的地方,拿redis和memcached比,多數據類型的支持就算redis的一個特性,持久化能力的支持也算是一個特性。特性在作技術選型的時候每每有着相當重要的做用。
搞清楚一門技術以上4點內容,纔算得掌握到技術的本質。咱們再學習技術原理的時候,不妨再加把勁,窺一窺它的技術本質。
再帶你們理解一下「本質」這個詞,下面這句是摘自網上的一句話
IPFS本質上是一種內容可尋址、版本化、點對點超媒體的分佈式存儲、傳輸協議。
從面上看更像是一句定義,告訴你什麼是IPFS,可是加上了本質二字,就讓這句話看起來不是那麼的簡單,而支撐本質二字的背後就是IPFS這個技術的是內容可尋址,具備能夠版本化、點對點、分佈式傳輸的特性,解決的核心問題和應用場景就是標準化數據傳輸過程。
因此做者必定是窺透了這技術背後的本質內容而總結出這麼一句話。但願這裏沒有讓你看糊塗。
當咱們再看到「xx的本質是xx」這種相似的話的時候,但願你們能多思考思考這句話中本質背後的支撐是什麼,有點跑題了,收回來。
3、總結
能夠看到,技術本質包含了技術原理,也就是一種包含關係。
本文就是理清技術原理、技術本質的真正含義和關係,常常咱們對這些看似都懂的概念不去深究,而實際上真正搞明白這些東西可以幫助咱們搭建本身的知識體系,並且知識結構脈絡十分清晰,不易混淆。在學習一門新技術或深刻研究一門技術的時候也會有一個清晰的方向和目標。
最後,隨着學的東西愈來愈多,越日後你們就越會發現概念和理論(也就是思想)的重要性,有清晰的概念和理論體系做爲支撐,能讓咱們的學習事半功倍。
關注做者公號「風象南講全棧」,作有思想的技術人。