給大忙人看的碼農翻身記

碼農翻身記個人讀後感

本書介紹

在這裏插入圖片描述

《碼農翻身》用故事的方式講解了軟件編程的若干重要領域,側重於基礎性、原理性的知識。 非常適合剛入門大學生或者 計算機領域入行 一兩年左右的新人, 也適合從傳統開發到微服務開發的 研發人員。其中有大量的大白話來講解技術,這樣可以通俗易懂的瞭解 計算機的每個組件的作用和我們平常中java開發的執行流程充編譯到部署 日誌的設計, 以前我是想了解的時候是一股腦的進入源碼中看,最後自己搞暈自己了,看源碼是不錯的,但是需要深入淺出。文中有大量的系統設計的比較經典的案例,對於我現在2年JAVA開發崗的是如獲珍寶啊 👍

在這裏插入圖片描述

大綱

  • 計算機的世界你不懂

    • 講述的線程 的執行的過程
    • TCP /IP 通信 和協議
    • CPU 的執行過程從原來的同步到後面的異步這裏系統老大這個角色是重點
    • 進程 批處理 多道程序 分塊裝入內存 分段+分頁 程序的裝載 線程
    • 硬盤的 內部結構 工作的原理 爲什麼比內存慢,如何保存數據的,進件的過程 管理空閒快 發明了偉大的文件管理系統 一直使用到今天
    • 鍵盤 內部劃分不同的等級 cpu執行速度那麼快,如何快速的執行鍵盤 從原來的 輪詢到現在的 DMA
    • 數據庫 李氏查詢 到後面的併發問題 在到原子性的問題 (二階段提交事務) 講的非常精彩
    • 鍵盤 內部劃分不同的等級 cpu執行速度那麼快,如何快速的執行鍵盤 從原來的 輪詢到現在的 DMA
    • 數據庫 李氏查詢 到後面的併發問題 在到原子性的問題 (二階段提交事務) 講的非常精彩
    • Socket 簡單的數學題 機器是如何執行的
    • 翻譯家的時代 從原來的 二進制的機器語言到 彙編語言–》現在的我們人類 可以輕鬆可以理解的 高級語音的翻譯家的發展史
    • 編程世界的那把鎖 瞭解各種鎖 共享變量鎖 線程爭取的鎖 信號量(現在我們的網關中還是在用的)
  • JAVA帝國 (感覺按照JDK的版本 來寫的)

    • Java誕生的緣有 從C帝國開始講起
    • Java Class 從加載到執行到虛擬機 堆和棧
    • 斷電的威脅 加盟了數據庫 輕量級的 Mapping框架
    • JDBC的誕生 統一接口 數據驅動 工廠模式
    • 階段提交 事務 引入 MQ
    • 服務端的 JSP 前端代碼和後端合併在一起 組合成動態頁面 標籤庫 模版引擎
    • JAVA的 消息隊列 從同步到異步 接口的設計 從單一 消費者到提供者 後面是廣播模式 配置和代碼的分離 (注 現在配置又分離了 我們企業開發中使用了阿波羅 無需發版可以直接灰度發佈 或者直接發佈配置 基本做的了實時跟換配置)
    • JAVA 著名的動態代理 CGlib 和代理
    • 我們現在 springBoot項目中大量使用的註解@ 原來可不是這樣的 XML來配置的 大量的重複工作 現在註解可以是框架的也可以我們自己寫的代碼匯合成一個註解來使用 高效開發
    • 泛型的由來 從C模仿過來的, 泛型的限制 泛型和繼承、
    • 日誌的設計 文件存放 日誌的級別 日誌的所屬於的類現在日誌的框架
    • 序列化 爲什麼用序列化 什麼場景使用(redis 存放內存中 RPC 調用網絡需要傳輸) XML和 JSON的挑戰
    • 鎖的問題 枷鎖還是不加鎖 悲觀鎖和樂觀鎖
    • Spring 的本質 運用的經典設計模式 模版模式 裝飾者模式 AOP 對象的創建 LOC和DL
  • 浪潮之巔的WEB

    • WEB的起源
    • HTTPS 從http --》 HTTPS
    • 加密 非對稱(RSA)和對稱加密 這裏就要說到 公鑰和私鑰的概念了
    • 中間人 劫持
    • 密碼到 token 登錄 授權碼
    • JAVA的大事件 從單機到高可用 Nginx tomcat(jetty) redis mq 數據 全面實現集羣 故障轉移 redis 的簡單的介紹了一下 Hash槽 redis 裏面的需要學習的地方比較多 主從 集羣 到哨兵 但是我個人覺得這裏沒有加入 zookeeper zk 和 es 的搜索 這樣更加的豐富後端了
    • 從SOA 到微服務
    • 框架 什麼是框架 半成品的工具到個性化組裝上生產 就是一個腳手架 減少重複的造輪子的動作
    • HTTP server 的逆襲
  • 代碼管理哪些事情

    • 基本上就是說的是 git的發展歷史 從人肉合併代碼到協同開發 中間的過長 爲什麼要推到自己本地的私有庫 然後合併遠端的分支 再推送 , 放鬆條件允許有衝突 用戶自己解決

    • Maven 的演進之路 輪子的 build 到自動化 原裏使用的是java來寫的後面爲什麼改爲 XML 個性化的標籤 可擴展 可閱讀 支持多語言

    • 敏捷開發 到了21世界 敏捷開發 我們正常的是2週一個版本 (常規版)可以有緊急版 還有一些小應用走的是自主發版3天一個版本

      敏捷運動

      困惑

      討論 集成開發 道 DevOps

  • 我的編程簡史

    • Js的逆襲 本質是 前後端的分離的故事就開始了
    • 大概的介紹了一下 Node.Js 單線程的工作
    • 大話了一下 編程語音的 不同😩語言 C Visual Fox Pro C++ 飯碗Java Ruby 如果作者 在介紹一下 Rust Go 其實更好了,造福一下小白用戶可以有更多的選擇
    • 命令式編程 VS 聲明式編程
  • 老司機的精進

    • “開發的潛規則” 局部性原理 簡單來說就是 一些定律
    • 緩存
    • 抽象的思維
    • 代碼中的分層 (我和我的鄰居 web or common or Service or dal )
    • 架構師的總結 保持好奇心 底層計算機的思維 計算機是如何執行的透徹的理解一門技術的本質
    • 漂亮的代碼
    • 抽象的能力
    • 技術的領導力 後面往管理層發展的時候 還是不要離開技術
    • 堅持寫作
    • 講一個小故事 來說說 開發中 各種各樣的小白到最後的命運 其中不乏我也走過的坑

啓發

​ 個人閱讀後,作爲一個非本專業出生的人更好的瞭解了計算機的組成原理 個組件的作用 馮諾依曼體系結構 計算機的組成原理 雖然大多數都是皮毛的 但是可以入門和增加學習的興趣 , 對java 的發展史有更好的瞭解, 各個的作用和由來爲什麼會產生這個 ,更多的是思想上的提升。和看待問題的角度多樣化,作爲一箇中高級開發進階之路值的推薦的。

分享

​ 個人感覺 需要配合專業的技術書來一起閱讀,比我是先看 碼農翻身記的 遇到不會的,記錄下來,但是明白是個什麼意思了,後面找對應的博客 -->專業的書,比如虛擬機 有《深入淺出JAVA虛擬機》 java 有些基礎知識 《碼出高效》《JAVA編程思想》在寫代碼的時候感覺不夠優雅和規範 我看的是 《JAVA開發手冊》(阿里的)都是總結的非常不錯的,

個人的能力欠缺的地方

​ 這是我個人記錄的地方: 需要不斷的去學習的

  1. 反射的使用 class.forName(瞭解,但是開發中使用的太少)
  2. JDBC 的源碼 閱讀 (內部實現的是i 工廠的方法) (閱讀源碼) 還有一個線程池
  3. Java Transaction API ( JTA )。兩次事務提交
  4. BASE 模型 專門做 事務的處理的 在分佈式場景中使用
  5. 動態代理 實現一下 實現接口 InvocationHandler 接口中有個方法 invocation 關鍵詞 proxy
  6. 使用 自定義註解來代替方法 進行切面AOP
  7. <? super T> 和 <? extends T>的區別 (需要帶入到demo中)
  8. 樂觀鎖和悲觀鎖 和各種鎖定 使用場景
  9. redis 的槽口的分配到問題 主機是如何管理槽口的
  10. 敏捷開發 單元測試 junit
  11. 需要的是多練習 數據結構和算法
  12. 知識太容易得到了 ,沒有了自己的思考 追究問題的本質 所以需要自己的去思考,梳理知識點

書中比較棒的建議

  • 遇到問題沒有準備好,但是有益的可以先 騎虎後下
  • 要有抽象思維
  • 這個總結的非常好, 關於抽象: “指令集是對 CPU 的抽象,文件是對輸入 /輸出

設備的抽象,虛擬存儲器是對程序存儲的抽象,進程是對一個正在運行的程序的抽象, 而虛擬機是對整個計算機(包括操作系統 、 處理器和程序)的抽象。

分層的作用: 分層的好處就是隔離變化,在接口不變的情況下,某一層的變化只侷限於本層次內 。

如何去寫作 大概的模版 —> 當然不是泛泛地記流水賬,或者把幾個孤立的點羅列在那裏,而是要把思路釐清楚,尤其要寫出爲什麼要有這門技術、這門技術解決了什麼問題, 然後纔是這門技術是怎麼使用的 。

  • 分而治之:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-e13PMnaU-1583728434865)(D:\文檔\臨時數據\碼農翻身記個人總結圖片\clipboard.png)]

  • 寫出優秀的代碼:

寫出漂亮代碼並不窯易,需要思路清晰,育良好的編程基礎,有優秀的抽象能力,以

及對一門語言的熟練掌握。

  • 如何寫出高質量的文章:

你也看了書或視頻中的代碼 , 知道了這個技術點是怎麼使用的,接下來想要寫一篇文章,

首先要努力閻明的問題就是“爲什麼要用 Java 動態代理”。這玩意兒到底要幹嗎?我已經知道了2能夠對一個類進行增強,還是在運行時進行增強的,但是增強一個類有什麼用處?我完全可以新寫一個類對原有的類進行增強啊?爲什麼要在運行時進行增強呢? 最好有代碼的實現

  • 看待問題的角度不同 看到的東西也是不一樣的:

    ​ 學習的深度不同看到的風景也是不同的

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ejZorfhN-1583728434866)(D:\文檔\臨時數據\碼農翻身記個人總結圖片\山.png)]

有什麼用處?我完全可以新寫一個類對原有的類進行增強啊?爲什麼要在運行時進行增強呢? 最好有代碼的實現

  • 看待問題的角度不同 看到的東西也是不一樣的:

    ​ 學習的深度不同看到的風景也是不同的

    [外鏈圖片轉存中...(img-ejZorfhN-1583728434866)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章