Java工程師學習之路思維導圖

前面看Hollis的微信公眾號更新了Java工程師成神之路的文檔葱弟,感覺里面的內容清晰、齊全绑警,可以用來審視自己求泰,也能夠知道自己在那些方面可以繼續(xù)前行,想著有時間分享出來计盒。

一渴频、基礎篇JVM

JVM內存結構

堆、棧章郁、方法區(qū)枉氮、直接內存志衍、堆和棧區(qū)別

Java內存模型

內存可見性、重排序聊替、順序一致性楼肪、volatile、鎖惹悄、final

垃圾回收

內存分配策略春叫、垃圾收集器(G1)、GC算法泣港、GC參數暂殖、對象存活的判定

JVM參數及調優(yōu)

Java對象模型

oop-klass、對象頭

HotSpot

即時編譯器当纱、編譯優(yōu)化

類加載機制

classLoader呛每、類加載過程、雙親委派(破壞雙親委派)坡氯、模塊化(jboss modules晨横、osgi、jigsaw)

虛擬機性能監(jiān)控與故障處理工具

jps, jstack, jmap箫柳、jstat, jconsole, jinfo, jhat, javap, btrace手形、TProfiler

編譯與反編譯

javac 、javap 悯恍、jad 库糠、CRF

Java基礎知識

閱讀源代碼

String、Integer涮毫、Long瞬欧、Enum、BigDecimal窒百、ThreadLocal黍判、ClassLoader & URLClassLoader、ArrayList & LinkedList篙梢、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap顷帖、HashSet & LinkedHashSet & TreeSet

Java中各種變量類型

熟悉Java String的使用,熟悉String的各種函數

JDK 6和JDK 7中substring的原理及區(qū)別渤滞、

replaceFirst贬墩、replaceAll、replace區(qū)別妄呕、

String對“+”的重載坦报、

String.valueOf和Integer.toString的區(qū)別搀玖、

字符串的不可變性

自動拆裝箱

Integer的緩存機制

熟悉Java中各種關鍵字

transient筐眷、instanceof、volatile唠粥、synchronized、final停做、static晤愧、const 原理及用法。

集合類

常用集合類的使用

ArrayList和LinkedList和Vector的區(qū)別

SynchronizedList和Vector的區(qū)別

HashMap蛉腌、HashTable官份、ConcurrentHashMap區(qū)別

Java 8中stream相關用法

apache集合處理工具類的使用

不同版本的JDK中HashMap的實現的區(qū)別以及原因

枚舉

枚舉的用法、枚舉與單例烙丛、Enum類

Java IO&Java NIO舅巷,并學會使用

bio、nio和aio的區(qū)別河咽、三種IO的用法與原理钠右、netty

Java反射與javassist

反射與工廠模式、 java.lang.reflect.*

Java序列化

什么是序列化與反序列化库北、為什么序列化

序列化底層原理

序列化與單例模式

protobuf

為什么說序列化并不安全

注解

元注解爬舰、自定義注解、Java中常用注解使用寒瓦、注解與反射的結合

JMS

什么是Java消息服務、JMS消息傳送模型

JMX

java.lang.management.*坪仇、 javax.management.*

泛型

泛型與繼承

類型擦除

泛型中K T V E

object等的含義杂腰、泛型各種用法

單元測試

junit、mock椅文、mockito喂很、內存數據庫(h2)

正則表達式

java.lang.util.regex.*

常用的Java工具庫

commons.lang, commons.*... guava-libraries netty

什么是API&SPI

異常

異常類型、正確處理異常皆刺、自定義異常

時間處理

時區(qū)少辣、時令、Java中時間API

編碼方式

解決亂碼問題羡蛾、常用編碼方式

語法糖

Java中語法糖原理漓帅、解語法糖

Java并發(fā)編程

什么是線程,與進程的區(qū)別

閱讀源代碼痴怨,并學會使用

Thread忙干、Runnable、Callable浪藻、ReentrantLock捐迫、ReentrantReadWriteLock、Atomic*爱葵、Semaphore施戴、CountDownLatch反浓、、ConcurrentHashMap赞哗、Executors

線程池

自己設計線程池雷则、submit() 和 execute()

線程安全

死鎖、死鎖如何排查懈玻、Java線程調度巧婶、線程安全和內存模型的關系

CAS、樂觀鎖與悲觀鎖涂乌、數據庫相關鎖機制艺栈、分布式鎖、偏向鎖湾盒、輕量級鎖湿右、重量級鎖、monitor罚勾、鎖優(yōu)化毅人、鎖消除、鎖粗化尖殃、自旋鎖丈莺、可重入鎖、阻塞鎖送丰、死鎖

死鎖

volatile

happens-before缔俄、編譯器指令重排和CPU指令重

synchronized

synchronized是如何實現的?

synchronized和lock之間關系

不使用synchronized如何實現一個線程安全的單例

sleep 和 wait

wait 和 notify

notify 和 notifyAll

ThreadLocal

寫一個死鎖的程序

寫代碼來解決生產者消費者問題

守護線程

守護線程和非守護線程的區(qū)別以及用法

二器躏、 進階篇Java底層知識

字節(jié)碼俐载、class文件格式

CPU緩存,L1登失,L2遏佣,L3和偽共享

尾遞歸

位運算

用位運算實現加、減揽浙、乘状婶、除、取余

設計模式

了解23種設計模式

會使用常用設計模式

單例捏萍、策略太抓、工廠、適配器令杈、責任鏈走敌。

實現AOP

實現IOC

不用synchronized和lock,實現線程安全的單例模式

nio和reactor設計模式

網絡編程

tcp逗噩、udp掉丽、http跌榔、https等常用協(xié)議

三次握手與四次關閉、流量控制和擁塞控制捶障、OSI七層模型僧须、tcp粘包與拆包

http/1.0 http/1.1 http/2之前的區(qū)別

Java RMI,Socket项炼,HttpClient

cookie 與 session

cookie被禁用担平,如何實現session

用Java寫一個簡單的靜態(tài)文件的HTTP服務器

實現客戶端緩存功能,支持返回304 實現可并發(fā)下載一個文件 使用線程池處理客戶端請求 使用nio處理客戶端請求 支持簡單的rewrite規(guī)則 上述功能在實現的時候需要滿足“開閉原則”

了解nginx和apache服務器的特性并搭建一個對應的服務器

用Java實現FTP锭部、SMTP協(xié)議

進程間通訊的方式

什么是CDN暂论?如果實現?

什么是DNS拌禾?

反向代理

框架知識

Servlet線程安全問題

Servlet中的filter和listener

Hibernate的緩存機制

Hiberate的懶加載

Spring Bean的初始化

Spring的AOP原理

自己實現Spring的IOC

Spring MVC

Spring Boot2.0

Spring Boot的starter原理取胎,自己實現一個starter

Spring Security

應用服務器

JBoss

tomcat

jetty

Weblogic

工具

git & svn

maven & gradle

三、 高級篇新技術

Java 8

lambda表達式湃窍、Stream API闻蛀、

Java 9

Jigsaw、Jshell您市、Reactive Streams

Java 10

局部變量類型推斷觉痛、G1的并行Full GC、ThreadLocal握手機制

Spring 5

響應式編程

Spring Boot 2.0

性能優(yōu)化

使用單例茵休、使用Future模式秧饮、使用線程池、選擇就緒泽篮、減少上下文切換、減少鎖粒度柑船、數據壓縮帽撑、結果緩存

線上問題分析

dump獲取

線程Dump、內存Dump鞍时、gc情況

dump分析

分析死鎖亏拉、分析內存泄露

自己編寫各種outofmemory,stackoverflow程序

HeapOutOfMemory逆巍、 Young OutOfMemory及塘、MethodArea OutOfMemory、ConstantPool OutOfMemory锐极、DirectMemory OutOfMemory笙僚、Stack OutOfMemory Stack OverFlow

常見問題解決思路

內存溢出、線程死鎖灵再、類加載沖突

使用工具嘗試解決以下問題肋层,并寫下總結

當一個Java程序響應很慢時如何查找問題亿笤、

當一個Java程序頻繁FullGC時如何解決問題、

如何查看垃圾回收日志栋猖、

當一個Java應用發(fā)生OutOfMemory時該如何解決净薛、

如何判斷是否出現死鎖、

如何判斷是否存在內存泄露

編譯原理知識

編譯與反編譯

Java代碼的編譯與反編譯

Java的反編譯工具

詞法分析蒲拉,語法分析(LL算法肃拜,遞歸下降算法,LR算法)雌团,語義分析燃领,運行時環(huán)境,中間代碼辱姨,代碼生成柿菩,代碼優(yōu)化

操作系統(tǒng)知識

Linux的常用命令

進程同步

緩沖區(qū)溢出

分段和分頁

虛擬內存與主存

數據庫知識

MySql 執(zhí)行引擎

MySQL 執(zhí)行計劃

如何查看執(zhí)行計劃,如何根據執(zhí)行計劃進行SQL優(yōu)化

SQL優(yōu)化

事務

事務的隔離級別雨涛、事務能不能實現鎖的功能

數據庫鎖

行鎖枢舶、表鎖、使用數據庫鎖實現樂觀鎖替久、

數據庫主備搭建

binlog

內存數據庫

h2

常用的nosql數據庫

redis凉泄、memcached

分別使用數據庫鎖、NoSql實現分布式鎖

性能調優(yōu)

數據結構與算法知識

簡單的數據結構

棧蚯根、隊列后众、鏈表、數組颅拦、哈希表蒂誉、

二叉樹、字典樹距帅、平衡樹右锨、排序樹、B樹碌秸、B+樹绍移、R樹、多路樹讥电、紅黑樹

排序算法

各種排序算法和時間復雜度 深度優(yōu)先和廣度優(yōu)先搜索 全排列蹂窖、貪心算法、KMP算法恩敌、hash算法瞬测、海量數據處理

大數據知識

Zookeeper

基本概念、常見用法

Solr,Lucene涣楷,ElasticSearch

在linux上部署solr分唾,solrcloud,狮斗,新增绽乔、刪除、查詢索引

Storm碳褒,流式計算折砸,了解Spark,S4

在linux上部署storm沙峻,用zookeeper做協(xié)調睦授,運行storm hello world,local和remote模式運行調試storm topology摔寨。

Hadoop去枷,離線計算

HDFS、MapReduce

分布式日志收集flume是复,kafka删顶,logstash

數據挖掘,mahout

網絡安全知識

什么是XSS

XSS的防御

什么是CSRF

什么是注入攻擊

SQL注入淑廊、XML注入逗余、CRLF注入

什么是文件上傳漏洞

加密與解密

MD5,SHA1季惩、DES录粱、AES、RSA画拾、DSA

什么是DOS攻擊和DDOS攻擊

memcached為什么可以導致DDos攻擊啥繁、什么是反射型DDoS

SSL、TLS青抛,HTTPS

如何通過Hash碰撞進行DOS攻擊

用openssl簽一個證書部署到apache或nginx

四输虱、架構篇分布式

數據一致性、服務治理脂凶、服務降級

分布式事務

2PC、3PC愁茁、CAP蚕钦、BASE、 可靠消息最終一致性鹅很、最大努力通知嘶居、TCC

Dubbo

服務注冊、服務發(fā)現,服務治理

分布式數據庫

怎樣打造一個分布式數據庫邮屁、什么時候需要分布式數據庫整袁、mycat、otter佑吝、HBase

分布式文件系統(tǒng)

mfs坐昙、fastdfs

分布式緩存

緩存一致性、緩存命中率芋忿、緩存冗余

微服務

SOA炸客、康威定律

ServiceMesh

Docker & Kubernets

Spring Boot

Spring Cloud

高并發(fā)

分庫分表

CDN技術

消息隊列

ActiveMQ

監(jiān)控

監(jiān)控什么

CPU、內存戈钢、磁盤I/O痹仙、網絡I/O等

監(jiān)控手段

進程監(jiān)控、語義監(jiān)控殉了、機器資源監(jiān)控开仰、數據波動

監(jiān)控數據采集

日志、埋點

Dapper

負載均衡

tomcat負載均衡薪铜、Nginx負載均衡

DNS

DNS原理众弓、DNS的設計

CDN

數據一致性

五、 擴展篇云計算

IaaS痕囱、SaaS田轧、PaaS、虛擬化技術鞍恢、openstack傻粘、Serverlsess

搜索引擎

Solr、Lucene帮掉、Nutch弦悉、Elasticsearch

權限管理

Shiro

區(qū)塊鏈

哈希算法、Merkle樹蟆炊、公鑰密碼算法稽莉、共識算法、Raft協(xié)議涩搓、Paxos 算法與 Raft 算法污秆、拜占庭問題與算法、消息認證碼與數字簽名

比特幣

挖礦昧甘、共識機制良拼、閃電網絡、側鏈充边、熱點問題庸推、分叉

以太坊

超級賬本

人工智能

數學基礎、機器學習、人工神經網絡贬媒、深度學習聋亡、應用場景。

常用框架

TensorFlow际乘、DeepLearning4J

其他語言

Groovy坡倔、Python、Go蚓庭、NodeJs致讥、Swift、Rust

六器赞、 推薦書籍

《深入理解Java虛擬機》

《Effective Java》

《深入分析Java Web技術內幕》

《大型網站技術架構》

《代碼整潔之道》

《Head First設計模式》

《maven實戰(zhàn)》

《區(qū)塊鏈原理垢袱、設計與應用》

《Java并發(fā)編程實戰(zhàn)》

《鳥哥的Linux私房菜》

《從Paxos到Zookeeper》

《架構即未來》

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市港柜,隨后出現的幾起案子请契,更是在濱河造成了極大的恐慌,老刑警劉巖夏醉,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爽锥,死亡現場離奇詭異,居然都是意外死亡畔柔,警方通過查閱死者的電腦和手機氯夷,發(fā)現死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靶擦,“玉大人腮考,你說我怎么就攤上這事⌒叮” “怎么了踩蔚?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枚粘。 經常有香客問我馅闽,道長,這世上最難降的妖魔是什么馍迄? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任福也,我火速辦了婚禮,結果婚禮上攀圈,老公的妹妹穿的比我還像新娘拟杉。我一直安慰自己,他們只是感情好量承,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般撕捍。 火紅的嫁衣襯著肌膚如雪拿穴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天忧风,我揣著相機與錄音默色,去河邊找鬼。 笑死狮腿,一個胖子當著我的面吹牛腿宰,可吹牛的內容都是我干的。 我是一名探鬼主播缘厢,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吃度,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贴硫?” 一聲冷哼從身側響起椿每,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎英遭,沒想到半個月后间护,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡挖诸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年汁尺,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片多律。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡痴突,死狀恐怖,靈堂內的尸體忽然破棺而出菱涤,到底是詐尸還是另有隱情苞也,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布粘秆,位于F島的核電站如迟,受9級特大地震影響,放射性物質發(fā)生泄漏攻走。R本人自食惡果不足惜殷勘,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昔搂。 院中可真熱鬧玲销,春花似錦、人聲如沸摘符。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘩绒,卻和暖如春猴抹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锁荔。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工蟀给, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阳堕。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓跋理,卻偏偏與公主長得像,于是被迫代替她去往敵國和親恬总。 傳聞我的和親對象是個殘疾皇子前普,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容

  • 本文是我自己在秋招復習時的讀書筆記,整理的知識點越驻,也是為了防止忘記汁政,尊重勞動成果,轉載注明出處哦缀旁!如果你也喜歡记劈,那...
    波波波先森閱讀 11,268評論 4 56
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現并巍,斷路器目木,智...
    卡卡羅2017閱讀 134,660評論 18 139
  • 01 前幾天我一如既往的睡不著刽射,就閑著沒事兒回頭翻了一下自己的朋友圈。 講真剃执,我真的是一個很愛發(fā)朋友圈的人誓禁,這可能...
    tonight北方有佳人閱讀 1,803評論 3 8