Java-2018技術總結 | 掘金年度徵文

2018-我的年度技術總結及清單

  1. 技術深度改造
    1. Java基礎
      1. 集合類
        1. ArrayList源碼分析
          1. 爲何ArrayList查找快,其實質是實現了RandomAccess接口
          2. 初始化大小
        2. HashMap源碼分析
          1. 構造函數分析(不是全部的構造函數都初始化了threshold
          2. Hash數據初始化大小(inintal_Capacity,默認16)
          3. 加載因子(loadFactor,默認0.75)
          4. 至於爲何是16和0.75,是在大量數據測試下,數學公式分析這兩個值會使Hash分佈更加均勻(面試時能夠這麼說 泊淞分佈)
          5. 閾值大小(threshold,擴容函數裏面初始化)
          6. 擴容函數(不只作了擴容,還用於初始化哈希表
        3. TreeMap源碼分析
          1. 二叉查找樹
          2. 平衡二叉樹
          3. 紅黑樹結構
          4. TreeMap添加刪除元素
        4. ...其餘
      2. 抽象類接口 的實際應用(什麼時候使用抽象類,什麼時候使用接口)
      3. 多線程和併發JUC包下的知識點暫時沒有深刻,暫列幾個知識點)
        1. AQS
          1. 經過state值喚醒隊列頭線程
        2. CAS原理(深究原理)
          1. Java代碼分析
          2. C語言代碼分析
          3. 用戶態-系統態(加鎖),而synchronized關鍵字都加鎖了,因此切換會消耗不少資源
          4. CPU-主存操做機制(硬件層面分析)
        3. 併發集合分析-對比jdk7和jdk8優化
        4. synchronized關鍵字(對象頭分析)
          1. 鎖升級(輕量級->自旋鎖->偏向鎖->重量鎖)
          2. 鎖膨脹(鎖沒法降級,致使鎖膨脹)
        5. volatile關鍵字
          1. 保證全部線程對volatile修飾的變量訪問的可見性
          2. 當一個線程對volatile修飾的變量的值進行修改,則其餘線程訪問的時候會獲得最新的數據具體原理涉及到操做系統:講當前處理器緩存行的數據寫回到系統內存中,這個寫回內存的操做會使在其餘CPU裏緩存了該內存地址的數據無效
        6. ThreadLocal共享變量使用
        7. 線程狀態
        8. 線程池
          1. 線程池與隊列都滿了,拒絕策略怎麼定義?
        9. Object類默認控制線程狀態函數分析
      4. jdk8面向函數編程
        1. lamada表達式
        2. 集合遍歷
        3. stream操做-過濾、合併、遍歷
        4. 建立線程
      5. JVM
        1. JVM模型
          1. 方法區(類對象元信息class-meta-info)
          2. 堆(對象)
          3. 棧(局部變量)
          4. 本地方法棧(用於C語言變量存儲區)
          5. 靜態區
          6. 代碼區
        2. GC回收機制
          1. java採起分區回收機制,針對不一樣區域回收無用對象
        3. 堆分區分塊
          1. 年輕代
          2. 過渡區
          3. 老年代
        4. OMM問題產生緣由
        5. 雙親委託
        6. Java編譯器版本
    2. 設計模式學習
      1. 單例模式
        1. 可解決內存緊張問題
        2. 使用ENUM枚舉類設計單例最佳,其餘都會出現單例規則破壞問題
        3. 破壞方法
          1. 反序列化
          2. 反射
      2. 模板方法模式
        1. 解決多業務,一套邏輯代碼便可問題
        2. 擴展性高,測試方便,易於排除問題
      3. 工廠方法模式
        1. 使用很少,可是能夠學一學
      4. 抽象工廠模式
        1. 框架設計使用多,業務中使用少
        2. 框架設計中須要生產一個對象,而對於需求的對象是不可測的,此時這個產品對象也是抽象的,那麼這是生產的工廠也須要爲抽象
      5. 適配器模式
        1. 這個模式是爲了複用以前的接口,在以前的接口加強邏輯,爲新的需求作擴展
    3. Redis生產環境問題(緩存穿透、緩存雪崩問題解決)
      1. 緩存穿透
        1. 產生緣由:有人惡意經過傳非正id查詢,緩存確定找不到,因此走數據庫,早晚數據庫被搞掛,致使系統癱瘓
        2. 解決方案:
          1. 緩存存儲非正空數據,控制失效時間很是短,解決有人惡搞
          2. 業務層過濾非正id查詢
      2. 緩存雪崩
        1. 產生緣由:key緩存時間設置基本相同,致使一大批key同時失效,致使大量請求忽略緩存層,直接到數據庫,致使數據庫掛了
        2. 解決方案:
          1. 緩存時間固定值加隨機時間值
      3. 遺留問題(每一個數據結構沒有細緻去分析)
      4. String(session管理,分佈式鎖、限流)
      5. zset(排行榜)
      6. set(好友關係,點贊)
      7. ...
    4. Spring源碼閱讀分析
      1. 學習解決Spring循環依賴問題
        1. 解決方案-三層緩存
        2. 新概念-非完美對象(我的定義的詞)
      2. Spring的配置文件加載、標籤解析、bean加載、bean初始化
      3. SpringMVC適配器解決Controller擴展知識點
      4. Spring提供的鉤子接口(這個沒用到)
      5. ...
    5. Dubbo源碼閱讀分析
      1. 服務暴露-源碼分析
      2. 服務引用-源碼分析
      3. Dubbo如何整合Spring,運用到Spring的鉤子接口實現工程啓動服務發佈與注入
      4. SPI機制進行框架擴展-源碼分析
      5. Dubbo的集羣調用鏈路、以及Mock機制、Directory服務路由、Router服務過濾、負載均衡源碼分析
      6. ...
    6. Netty書籍閱讀分析
      1. 傳統NIO編程缺陷
      2. Netty風格編程優勢
      3. 應用層網絡傳輸載體 ByteBuf 類分析
      4. 自定義協議分析
      5. Pipeline 管道線路 與 ChannelHandler 邏輯處理器分析
      6. TCP 粘包問題產生
      7. Netty如何解決 拆包粘包 問題(使用Netty的拆包類),遺留問題就是Netty怎麼作到拆包-源碼分析
      8. 心跳檢測機制(Netty如何作到的-源碼分析)
    7. RocketMQ中間件源碼分析
      1. ...
  2. 2019-年度展望
    1. RocketMQ源碼分析-解決生產上問題所需
    2. Dubbo源碼繼續分析-學習更多框架設計模式和完成業務需求
    3. Spring源碼-業務所需
    4. Netty源碼-網絡通訊
    5. Java基礎-必不可少的學習
    6. ElaticSearch搜索引擎-新知識點
    7. Elatic-Job定時任務框架-新知識點

掘金年度徵文 | 2018 與個人技術之路徵文活動正在進行中......java

相關文章
相關標籤/搜索