如何建立你自己的開發(fā)知識體系

1、前言

首先,我認(rèn)為學(xué)習(xí)總結(jié),要有所總,所結(jié),就是有歸納后,能用自己的話告訴別人!有所結(jié),就是有所收獲輸出,一般我認(rèn)為是思維導(dǎo)圖,所以,每篇文章前,我都會先給出文章的腦圖:

建立你自己的開發(fā)知識體系.png

2、正文

學(xué)習(xí)任何文章之前,一定要有可行的方法論,否則很難有所突破。上面腦圖中,我列出了一些個人認(rèn)為非常好的方法論,所以,在學(xué)習(xí)課程前,先了解一下,對后續(xù)自學(xué)或其它的學(xué)習(xí)都會有益處。

一個知識點

  1. 為什么需要 XXX
  2. 什么是 XXX
  3. 怎么使用 XXX
  4. 使用 XXX 時注意的問題
  5. XXX 的應(yīng)用領(lǐng)域
  6. XXX 的優(yōu)缺點
  7. XXX 觸類旁通

這個理論是在郝斌老師所錄制的計算機(編程)教學(xué)視頻里提到的,很適合初學(xué)者,有興趣的大家可以自行搜索。

為什么這個很受用?因為簡單的套用一下,你就知道自己是否掌握了一個知識點!

舉例:

  1. 為什么需要 單例模式
  2. 什么是 單例模式
  3. 怎么使用 單例模式
  4. 使用 單例模式 時注意的問題
  5. 單例模式 的應(yīng)用領(lǐng)域
  6. 單例模式 的優(yōu)缺點
  7. 單例模式 觸類旁通

當(dāng)我們在談?wù)撔阅軆?yōu)化時,我們在說什么?

  1. CPU
  2. 內(nèi)存
  3. 網(wǎng)絡(luò)
  4. I/O

大家有沒有發(fā)現(xiàn),以上4點對應(yīng)計算機的基本組成原理,在談?wù)撔阅軆?yōu)化時,其實就是在說計算機的瓶頸!,所以,當(dāng)在談?wù)撔阅軆?yōu)化時,我們可以做的,就是把計算機的瓶頸提高或轉(zhuǎn)化

單一 CPU 處理不過來,我們新加 GPU;一個 CPU 處理不來,我們8核、16核心!多核 CPU 處理不過來,我們可以集群!分布式!云化!

當(dāng)內(nèi)存不足時,我們加內(nèi)存!內(nèi)存壓縮!內(nèi)存置換!

當(dāng)網(wǎng)絡(luò)帶寬不夠時,我們加帶寬!我們加服務(wù)器!我們加異地多端!

當(dāng)I/O過高時,我們取舍I或O!我們把I和O拆分!

在深入到程序、代碼中,所有的優(yōu)化,是不是也一樣,你要減少計算和循環(huán)次數(shù),你要節(jié)省內(nèi)存開銷!你要網(wǎng)絡(luò)數(shù)據(jù)緩存!你要定量定時入庫!

所有的性能優(yōu)化,不過如此!大家明白了嗎?

移動設(shè)備時代,性能問題還有一個就是在小的空間里沒有大的電池,其實就是電池的瓶頸!但是一般開發(fā)者并不關(guān)心,因為他們感覺自己只是開發(fā)App,使用App的是用戶和他們的手機設(shè)備!電池的瓶頸有消耗損耗2個問題,消耗是我們寫的程序在實現(xiàn)功能的同時能不能減少計算量,損耗是我們寫了一些我們并不需要的代碼導(dǎo)致了不必要的計算量。如果平時有注意的,2015年時三星手機針對那么功耗過大的App 直接強制退出,這可能也是大家說的對中國本地化做不好的原因?qū)е率“??因為?yōu)化是不是真的為了解決卡頓或性能,就一定要為所欲為呢?這也是開發(fā)者需要思考的問題。電池技術(shù)當(dāng)下沒有突破的時候,電量依然是非常值得關(guān)注的事情。現(xiàn)在iOS 和 Android 都開始統(tǒng)計App的電量使用情況,所以不從現(xiàn)在開始節(jié)能,你的App可能就被用戶刪除。當(dāng)然,針對這些問題,iOS/macOS 系統(tǒng)蘋果做了很多系統(tǒng)層級的優(yōu)化,這也許也是很少開發(fā)者關(guān)心的原因,感興趣的可以看看歷年 WWDC - Apple Developer,蘋果很多關(guān)于電量節(jié)能有很多策略可以借鑒。

換空間

  1. 壓縮
  2. 分片
  3. 索引

上面說到的性能優(yōu)化,從大方向時如此,然后細(xì)化到具體,會有非常多的算法或技巧,其中換空間就是一個經(jīng)典的問題。

大家一定聽說過類似:

  • “20張100MB的圖片,怎么顯示在1G內(nèi)存的設(shè)備上”
  • “在2.5億個整數(shù)中找出不重復(fù)的整數(shù),注,內(nèi)存不足以容納這2.5億個整數(shù)。”
  • “給定a、b兩個文件,各存放50億個url,每個url各占64字節(jié),內(nèi)存限制是4G,讓你找出a、b文件共同的url?”

這些問題,其實解法,基本上可以用上面3個方法!

大家明白了嗎?建立你自己的開發(fā)知識體系!其實并不難,學(xué)習(xí)是沒有捷徑,但有方法!,所以,了解和掌握更多的方法論,構(gòu)建自己的知識體系樹,這樣,才是不用被動的每天在各種各樣的文章中,人浮于事!

學(xué)什么

  1. 不要被難倒 —— 分治思想
  2. 不要想太簡單
  3. 學(xué)習(xí)曲線陡峭度,跳過原則
  4. 多疑問,多思考,多總結(jié)
  5. 學(xué)習(xí)不僅僅是知識,還有過程
  6. 授人以魚不如授人以漁

我個人推崇 授人以魚不如授人以漁,學(xué)習(xí)不是給你知識,而是學(xué)會如果獲取知識,如何知識點串聯(lián)起來,如何快速有效的掌握知識!

學(xué)習(xí)技巧

  1. 先實踐再學(xué)理論更有感覺
  2. 按工作需要來,工作畢竟是實踐,最容易有成就感的
  3. 實踐&思考
  4. 經(jīng)驗&總結(jié)
  5. 方向很重要,堅持方向更重要
  6. 不斷深入,理解和認(rèn)知都在更新
  7. 把邏輯和流程整理出來,更清晰
  8. 嘗試作為一個提供 api 的人
  9. 并不是樣樣精通,而是有擅長的領(lǐng)域。
  10. 融會貫通

很多人可能迷戀/迷信學(xué)習(xí)的快捷方式,每次學(xué)習(xí)一個知識點時,總時想找到捷徑在學(xué)習(xí),往往不得其道!有需要,大家可以看看我之前的年終總結(jié) 2020,愛你愛你 | iHTCboy's blog,這里我就不多說了。關(guān)于學(xué)習(xí),先深挖某一領(lǐng)域,經(jīng)過大量的學(xué)習(xí)和實踐后理解了編程的本質(zhì),從而可以靈活調(diào)配和運用自己已經(jīng)積累的知識。切記!切記!切記!學(xué)習(xí)是沒有捷徑!但有方法!

知識點

  1. 組件化是將上層業(yè)務(wù)隔離開,下層提供通用能力的一種架構(gòu)模式
  2. 組件化、熱修復(fù)、動態(tài)化、大前端、Flutter、小程序
  3. 提高編譯速度,內(nèi)存優(yōu)化,性能優(yōu)化,電量優(yōu)化,測試驅(qū)動開發(fā),架構(gòu)設(shè)計模式和iOS中算法數(shù)據(jù)結(jié)構(gòu)的使用

雖然大家都是程序員,工程師,但是,所在行業(yè)不同,現(xiàn)實是千差萬別的!了解和熟悉的知識也是不盡不同!如何把計算機的萬千技術(shù)用到自己所在的行業(yè)?每個人的精力有限,但是無極限,當(dāng)別人告訴你不可能時,那一定是他度量的尺子與你不同!我們度量一件事,要盡量放長線,放大眼光,放高視角!,對于知識點,有太多的東西,選擇自己感興趣和工作需要的,不用太關(guān)心別人的評論,絕大多數(shù)事件,不是做不來,而是需要長期做!

面試

  1. 被別人問底層原理答不出所以然
  2. 1.業(yè)務(wù)代碼誰都會寫,你還會什么?
  3. 2.我覺得iOS開發(fā)不值這個價,我們公司這個價的也不是沒有都是后臺,前端不需要。
  4. 公司不考慮員工的成長,多待無益
  5. 成體系地提升自己的內(nèi)功,完善自己,然后反哺到工作上,讓工作效率和質(zhì)量達(dá)到質(zhì)的提升,進(jìn)而從容應(yīng)對技術(shù)的更新迭代
  6. 面試應(yīng)聘者的時候,通常都會問他所負(fù)責(zé)項目的整體架構(gòu)是怎樣的。
  7. 只對自己負(fù)責(zé)的那攤子事兒說的溜,而回答所在項目整體情況時卻支支吾吾,面試不會成功。

如果不是自由工作者,我想大多數(shù)的國內(nèi)同學(xué)都沒有機會選擇,所以,面試是一個總是要面對的問題,每次辭職、被辭職,大家就重新拿起試題集來刷,刷題目!刷算法!刷刷刷!

所有的問題不能簡單的一刀切!,經(jīng)過這么多年,我的理解里,問題沒有對與錯,好與壞。刷題目也是一樣。我想說的是內(nèi)力是不能一天倆天就長成,所以為面試,建立自己的開發(fā)知識體系,面試題就是西天取經(jīng),每一道題目就是一個怪獸,你不可能一天打敗所有怪獸,所以,不要忽視七七四十九日的輪回。

書籍

  1. 《代碼整潔之道》
  2. 《人月神話》

書籍很多,好書也很多!這里暫時不列出所有值得看的技術(shù)書,因為,我害怕大家一下子又回到原點,買了一堆書,然后不知道從那里開始!,所以,我是不建議買書!買書是自己要系統(tǒng)學(xué)習(xí)的時候買!怕傷害眼睛時買,但不能因為別人推薦或感覺不錯就買!要從自身出發(fā),從自己工作,從自己從事的行業(yè),從自己的規(guī)劃發(fā)展,從自己的興趣,任何事情的起點,都是初心,不要忘了初心!

3、總結(jié)


關(guān)于如何建立自己的開發(fā)知識體系,以上就是我認(rèn)為比較重要的點(還有很多方法論,但是多并一定是好事,以后有機會在歸納吧),貫穿到開發(fā)的每一個細(xì)節(jié),需要大家長期長時間的學(xué)習(xí)、研究和經(jīng)歷,才能打造一套屬于自己的知識樹,任何告訴你可以復(fù)制的知識,你可以復(fù)制!但永遠(yuǎn)無法粘貼到自己腦心中!


更多關(guān)于 iOS 開發(fā)和程序開發(fā)相關(guān)的內(nèi)容,可以查看系列,目前還在連載中 【學(xué)習(xí)總結(jié)】iOS開發(fā)高手課 -- (連載中) | iHTCboy's blog,以上,希望對你有用!

參考


  • 如有侵權(quán),聯(lián)系必刪!
  • 如有不正確的地方,歡迎指導(dǎo)!
  • 如有疑問,歡迎在評論區(qū)一起討論!


注:本文首發(fā)于 iHTCboy's blog,如若轉(zhuǎn)載,請注來源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄:iOS 整體框架及類繼承框架圖[http://www.itdecent.cn/p/28428b90b07a...
    二斤寂寞閱讀 2,943評論 7 24
  • 那段時間的教訓(xùn)是慘痛的,一進(jìn)入股票市場,老霍就反復(fù)教導(dǎo)我,股市有句話,“會買的是徒弟,會賣的才是師傅”。我...
    王馳1960閱讀 524評論 0 1
  • 過了多久又踏上歸家的路途,一千多公里的路程十幾個小時的車程!聽著人聲喧鬧的車廂,看著陌生的人群,視線漸漸模糊,恍惚...
    青燈燃清風(fēng)閱讀 225評論 0 0
  • 秋風(fēng)浩蕩最無情,滿目唯留落葉頻。 情思悠悠不忍去,落紅揮灑離別淚!
    我是蘭姐閱讀 320評論 0 0
  • 經(jīng)過了一年多的嘮叨與醞釀,2015年的10月國慶節(jié)過后,我終于來到了五臺山,帶著老公跟老媽。確切的說,是老公帶著我...
    蓮子漁閱讀 568評論 0 0

友情鏈接更多精彩內(nèi)容