<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基礎(chǔ)知識(shí)的學(xué)習(xí),來自十年程序員的經(jīng)驗(yàn)分享

          共 2715字,需瀏覽 6分鐘

           ·

          2019-07-15 04:28

          1.png

          前面分享過一篇算法學(xué)習(xí)的文章 :?不懂算法,還想進(jìn)大廠?做夢(mèng)吧。 雖然有點(diǎn)標(biāo)題黨,但內(nèi)容還是不錯(cuò)的。

          后來就想能不能對(duì)計(jì)算機(jī)學(xué)習(xí)方法和學(xué)習(xí)心得寫個(gè)系列的文章,這篇算是第二篇。偏向基礎(chǔ)知識(shí)部分, 比如 操作系統(tǒng),數(shù)據(jù)庫,網(wǎng)絡(luò) 等。

          本來這篇文章應(yīng)該按著算法那篇來寫 --- 寫學(xué)習(xí)方法,但寫著寫著,就變成一個(gè)學(xué)習(xí)心得了,不過細(xì)細(xì)想想,覺得這么寫也對(duì)。

          經(jīng)常有同學(xué)跟我說,很多的基礎(chǔ)知識(shí)學(xué)過就忘。每次被問到這個(gè),我都不知怎么回答,跟他說多看幾次,就記起來了? --- 這似乎是一句廢話,但好像又對(duì),細(xì)細(xì)想來,這后面還是有不少思考的。

          我覺得很多同學(xué)在基礎(chǔ)知識(shí)上的問題,不是技巧的問題,而是對(duì)基礎(chǔ)知識(shí)的態(tài)度和理解的問題。

          所以,這不是一篇教你怎么學(xué)基礎(chǔ)知識(shí)的文章,而是告訴你基礎(chǔ)知識(shí)的價(jià)值和基礎(chǔ)知識(shí)在程序員腦海中的演進(jìn)過程。

          對(duì)于操作系統(tǒng),數(shù)據(jù)庫,網(wǎng)絡(luò)等基礎(chǔ)知識(shí)地學(xué)習(xí),看書,做筆記是必要的。不過我在這里不教大家怎么看書,怎么做筆記,我估計(jì)讀過大學(xué)的同學(xué),這應(yīng)該不是大問題。

          很多人糾結(jié)的問題在于基礎(chǔ)知識(shí)老是看了又忘,然后發(fā)現(xiàn)工作上好像也用不到,就開始質(zhì)疑基礎(chǔ)知識(shí)的價(jià)值,質(zhì)疑到底該不該花時(shí)間去學(xué)。

          所以先要認(rèn)可基礎(chǔ)知識(shí)的價(jià)值,意識(shí)到了基礎(chǔ)知識(shí)的價(jià)值后,你才會(huì)愿意花時(shí)間去學(xué)習(xí)。

          基礎(chǔ)知識(shí)的價(jià)值



          基礎(chǔ)知識(shí)的價(jià)值,我覺得有兩個(gè)部分。

          一個(gè)是技巧層面的價(jià)值。

          拿操作系統(tǒng)里面的線程和進(jìn)程來說,線程和進(jìn)程是cpu調(diào)度的基本單位,是代碼的一種動(dòng)態(tài)呈現(xiàn),只要你寫代碼,就一定會(huì)涉及到線程或者進(jìn)程。當(dāng)然在實(shí)際使用中可能被框架包裝了起來,給人的感知很弱,但一旦你的程序有問題,你總是要用些工具來查看的:查看是那個(gè)進(jìn)程出了問題,要從內(nèi)存占用,cpu 占用,磁盤讀寫等來初步分析問題。

          以上這個(gè)過程,是稍微有點(diǎn)技術(shù)含量的工程工作都會(huì)涉及的。上面例舉的例子,你可以擴(kuò)展到 操作系統(tǒng)鎖,數(shù)據(jù)庫表,數(shù)據(jù)庫索引,數(shù)據(jù)庫鎖,數(shù)據(jù)庫事務(wù),TCP/IP , HTTP,websocket 等等。

          就工程方向來說,幾乎每個(gè)方向都要掌握相應(yīng)的基礎(chǔ)知識(shí),只是每個(gè)具體方向?qū)γ糠N具體基礎(chǔ)知識(shí)掌握的深入程度不一樣。

          像做分布式存儲(chǔ)的同學(xué),對(duì)數(shù)據(jù)庫表,數(shù)據(jù)庫鎖,數(shù)據(jù)庫事務(wù)這些的理解肯定是要很深入的;前端的同學(xué)對(duì)數(shù)據(jù)庫相關(guān)概念的理解可以要求低些,但對(duì)網(wǎng)絡(luò),TCP/IP,? HTTP , HTTPS 這些的要求就要高很多。

          一個(gè)是思維層面的價(jià)值。

          除了技巧層面的價(jià)值,還有思維層面的價(jià)值。

          怎么來理解這個(gè)事情呢?軟件設(shè)計(jì),有很多核心的設(shè)計(jì)思想,其實(shí)是相同的,這些基礎(chǔ)概念,其實(shí)也是前人設(shè)計(jì)和總結(jié)出來的。

          比如說線程和進(jìn)程,這些概念不是自然原理,而是一種工程實(shí)踐后的軟件抽象,是前人抽象出來的一個(gè)結(jié)果。它的設(shè)計(jì)背后,蘊(yùn)含很多優(yōu)秀的設(shè)計(jì)思想和設(shè)計(jì)原則。

          一開始的時(shí)候,你只知道這個(gè)概念,可能理解起來都覺得很困難,只能死記硬背,但就像我們小時(shí)候?qū)W習(xí)古詩詞,它會(huì)給你帶來潛移默化的影響。你腦子里一直裝著這些概念,實(shí)際工作和學(xué)習(xí)的時(shí)候,遇到相關(guān)的問題,你可能就會(huì)有點(diǎn)小思考,日積月累,你對(duì)它的理解會(huì)越來越深。這種理解,我覺得就在不斷塑造著你的技術(shù)思維。

          基礎(chǔ)知識(shí)的演進(jìn)

          說完了價(jià)值,我來分享下,基礎(chǔ)知識(shí)在程序員腦海中的演進(jìn)過程。

          我覺得對(duì)于操作系統(tǒng)和數(shù)據(jù)庫,光看書幾乎是學(xué)不好的,因?yàn)槟茏龅木褪潜掣拍睿惩旰芸炀屯浟恕?br>

          ?

          我上操作系統(tǒng)課程之前,看過 linux 的源代碼。對(duì)于操作系統(tǒng),因?yàn)槲一撕芏鄷r(shí)間在 linux 內(nèi)核上,所以上操作系統(tǒng)課的時(shí)候,很多概念對(duì)我來說反而是一個(gè)匯總,把我很多離散的知識(shí)給匯總起來了。

          ?

          所以我看進(jìn)程,線程這些概念的時(shí)候,不是抽象的而且具象的,腦子里甚至可以具體到代碼層面。

          ??

          但很多人沒有我這么一個(gè)經(jīng)歷,所以看起來一臉懵逼也正常。就像我在大學(xué)看數(shù)據(jù)庫的時(shí)候,我也覺得很抽象,看了就忘,直到我后面自己去做存儲(chǔ),對(duì)很多的概念才慢慢地理解深入,開始有感覺。

          ?

          但這里不是說就不去看了,不看,你就一直都不會(huì)知道,甚至連基本的思考都沒有。

          ?

          對(duì)于基礎(chǔ)知識(shí)的學(xué)習(xí),其實(shí)是循環(huán)往復(fù)的過程,不是一次性就能掌握的。對(duì)于這類知識(shí)的掌握會(huì)經(jīng)歷這么一個(gè)過程:

          概念 -> 理解 -> 實(shí)踐中的思考 -> 概念 -> 理解 -> 實(shí)踐中的思考 ...

          這是一個(gè)循環(huán)往復(fù)地過程,但不是重復(fù),而是螺旋式地深入,每一次循環(huán)都能夠帶來更深入的理解。

          ??

          我們說一個(gè)人技術(shù)很牛,有很大部分是因?yàn)樗麑?duì)很多的知識(shí)點(diǎn)經(jīng)過了很多次這種循環(huán),他對(duì)基礎(chǔ)知識(shí)理解的深度要高過很多人。

          ?

          軟件技術(shù)有兩個(gè)關(guān)鍵,一個(gè)是抽象,一個(gè)是分層。

          ?

          其實(shí)你會(huì)發(fā)現(xiàn)很多的概念,知識(shí)點(diǎn),都是一個(gè)具體軟件實(shí)現(xiàn)的抽象,里面也有分層。

          ?

          舉個(gè)例子,我們說進(jìn)程,你看書上就給了一個(gè)概念,你覺得很抽象,覺得這是操作系統(tǒng)里面的一個(gè)概念,有點(diǎn)像是原理性的東西。

          ?

          但你往下一個(gè)層次看,到操作系統(tǒng)設(shè)計(jì)這個(gè)層面來看,進(jìn)程是一個(gè)很具象的東西,有具體得代碼,具體的設(shè)計(jì),具體的細(xì)節(jié),甚至有時(shí)候你會(huì)覺得有些代碼寫得也不咋地,就像是一個(gè)業(yè)務(wù)邏輯。

          ?

          從這個(gè)層面,這個(gè)角度來理解,來看待進(jìn)程的時(shí)候,怎么可能會(huì)懵逼,簡直具象到不行了,甚至還會(huì)覺得這不就是一個(gè)業(yè)務(wù)邏輯嘛。

          ?

          但深度是不是到這里就停止了,也不是。

          ?

          你會(huì)開始去思考,為什么要有這個(gè)設(shè)計(jì),為什么要有這種抽象,你可能會(huì)去找相關(guān)的論文來看。計(jì)算機(jī)技術(shù)不是自然科學(xué),進(jìn)程也不是定理性的東西,不是 1+1 等于 2 這種自然存在的,所有一切都是設(shè)計(jì)出來的。

          ?

          有設(shè)計(jì)就會(huì)有討論的過程,這些討論的過程或結(jié)果很多都還保留在互聯(lián)網(wǎng)上。

          ?

          比如,有一次我們想為自己做的分布式存儲(chǔ),設(shè)計(jì)事物系統(tǒng),后來就順藤摸瓜地找到了數(shù)據(jù)庫大師 Jim Gray 關(guān)于事務(wù)設(shè)計(jì)的經(jīng)典文獻(xiàn)和資料,里面有他的很多思考和權(quán)衡。

          ?

          到這個(gè)時(shí)候,事務(wù)在你腦海里已經(jīng)不是概念,而且一個(gè)龐大的東西,很多細(xì)節(jié),設(shè)計(jì)的權(quán)衡,你想忘都忘不了了。

          ?

          甚至你還會(huì)思考這種設(shè)計(jì)是不是最好的,時(shí)間過了這么久,會(huì)不會(huì)不適應(yīng)現(xiàn)有的場景了,反正你會(huì)思考很多。

          ?

          我們說有人很牛,我覺得這個(gè)就是很關(guān)鍵的區(qū)別了。

          ?

          這個(gè)過程很艱難,也很緩慢的,要十年甚至二十年的時(shí)間,有人可以不斷地深入;也有人只停留在很淺的層面。如果你能不斷深入,你就能不斷地超越很多人,朝著技術(shù)大牛的目標(biāo)邁進(jìn)。

          結(jié)語


          基礎(chǔ)知識(shí)的學(xué)習(xí)和理解是緩慢且不斷深入的過程,甚至是貫穿整個(gè)程序生涯的,不斷深入理解的過程,也是不斷塑造自身技術(shù)思維的過程。

          當(dāng)然,首先你得知道并認(rèn)可基礎(chǔ)知識(shí)的價(jià)值,你才會(huì)愿意花費(fèi)時(shí)間和精力去不斷去學(xué)習(xí)和深入理解它們。

          這篇文章給大家分享了,基礎(chǔ)知識(shí)的價(jià)值和基礎(chǔ)知識(shí)在程序員腦海中的演進(jìn)過程,這個(gè)視角可能比較獨(dú)特,不過卻也是我這么多年來的心得和感悟,希望對(duì)大家有所幫助!

          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美一区二区电影在线观看 | 日韩一级黄色 | av超碰在线 | 日本親子亂子倫XXXX | 探花熟女视频 |