基礎(chǔ)知識儲備:
- Java SE(Java語言【java.lang】蛤奥、Java集合框架【java.util】)
- Java I/O(java.io.味抖、java.nio..*)
- Java 網(wǎng)絡(luò)(java.net.刷喜、java.rmi.没陡、javax.net.*)
- Java 并發(fā)(java.util.concurrent.小腊、java.util.concurrent..*)
實際上Jdk的內(nèi)容非常多伏尼,除了上面提到的最常用的工具和方法脖旱,剩下的內(nèi)容堪遂,比如像java security、java Swing萌庆、java awt等溶褪,可能平時不常用,但作為一名合格的程序員践险,那些都有必要了解猿妈。
Java EE
- Servlet
- JDBC
- JPA
Servlet是現(xiàn)代web應(yīng)用的基礎(chǔ)吹菱,基于其原理搭建的MVC框架,比如Spring MVC彭则、Struts等鳍刷,是我們這代Java工程師都一定會用到的。經(jīng)典的Java EE容器Tomcat俯抖、Jetty等也是現(xiàn)在每天都會用到的工具输瓜,因此,Servlet技術(shù)一定要深入掌握蚌成。JDBC和JPA是Java持久層“唯二”的技術(shù)前痘。JDBC更底層,更基礎(chǔ)担忧,JPA則是針對ORM框架的接口規(guī)范芹缔。
Java EE覆蓋到企業(yè)開發(fā)的方方面面,但因為其臃腫的設(shè)計瓶盛,已經(jīng)越來越跟不上時代的腳步了最欠,最近有傳言稱Oracle將放棄這項技術(shù),但不論Java EE的前景如何惩猫,我上面提到的那三門技術(shù)芝硬,都不會輕易消失。
JVM
操作字節(jié)碼:ASM轧房、cglib拌阴、javassist
JVM的內(nèi)存和體系結(jié)構(gòu)
Java的語言的方方面面又都和JVM有關(guān),但這部分內(nèi)容我還不是很了解奶镶,以后在補充 //TODO
持久層常用框架:
數(shù)據(jù)庫連接池
- Apache DBCP
- Druid
- Tomcat jdbc pool
- HikariCP
不知道為什么迟赃,我對連接池技術(shù)一直情有獨鐘,當(dāng)年接觸到的第一個連接池是c3p0厂镇,也正是從那是開始纤壁,我才有所謂“性能”、“效率”這些概念捺信∽妹剑“池”,是經(jīng)典的以空間換時間的方式迄靠,提升程序效率的概念秒咨。“池”的應(yīng)用非常廣泛掌挚,不光有數(shù)據(jù)庫連接池拭荤,還有線程池,緩存池等等疫诽。這項技術(shù)發(fā)展到現(xiàn)在已經(jīng)非常穩(wěn)定舅世,普通公司的項目只要使用連接池旦委,一般就沒什么問題。隨著時代的發(fā)展雏亚,連接池的功能也在不斷擴(kuò)充缨硝,阿里的Druid就提供了sql監(jiān)控的功能。所以現(xiàn)在看連接池是相關(guān)內(nèi)容罢低,就不能僅是為了實現(xiàn)功能(本來功能就不多)查辩,而是要深入的理解原理,并能夠自己動手實踐网持,開發(fā)出高效穩(wěn)定的服務(wù)組件宜岛。
持久層的中間件
- ottor
- yugong
- Cobar
- Sharding - JDBC
- myCat
Java持久層中間件通常分為兩類,一類是分庫分表功舀,一類是數(shù)據(jù)遷移萍倡。前者是在融合了JDBC和數(shù)據(jù)庫連接池的基礎(chǔ)上,實現(xiàn)的面向數(shù)據(jù)庫的高級功能辟汰。當(dāng)系統(tǒng)的數(shù)據(jù)量上升到一定級別之后列敲,分庫分表是必然的選擇,使用中間件帖汞,就可以和應(yīng)用分離戴而,做到靈活的控制。而后者則是對Java I/O翩蘸、并發(fā)技術(shù)的高級應(yīng)用所意。一道經(jīng)典的面試題是給你一個上GB的文件,問你如何快速的找到其中出現(xiàn)頻率最高的一組詞匯催首,或者問你如何快速的統(tǒng)計出一份報表扶踊。等你深入掌握了第二類框架的運行原理之后,這些都不是問題翅帜。
ORM框架
- hibernate
- myBatis
- Jfinal
- nutz
SSH(Spring + Struts2 + Hibernate3)最火的時候,我剛剛工作命满,后來有人說hibernate不行了涝滴,大家都在用myBatis,于是緊跟著又有了SSM(myBatis)胶台。再后來歼疮,“云”、“微服務(wù)”成為當(dāng)前最炙手可熱的概念诈唬,傳統(tǒng)的ORM框架也漸漸沒有了往日的熱度韩脏,大家都轉(zhuǎn)頭去搞自己的輕量級的ORM和MVC框架,國內(nèi)比較著名的有Jfinal和nutz铸磅。ORM赡矢,實體映射成了老舊的代名詞.......但是杭朱,我不這么認(rèn)為。現(xiàn)在打開hibernate的官網(wǎng)吹散,發(fā)現(xiàn)它保持的生命力弧械,就在6月底,還發(fā)布了其最新的5.2.1版本空民。一個框架的成功都是有原因的刃唐,其中肯定有非常多值得學(xué)習(xí)的地方。只有你足夠了解它的時候界轩,你才能準(zhǔn)確的判斷画饥,自己究竟需不需要它。
Spring相關(guān)
- Spring JDBC
- Spring JPA
- Spring DATA
其實看上文也知道浊猾,各種框架變來變?nèi)ザ陡剩荢pring的核心統(tǒng)治地方,一直屹立不倒与殃。能做到這點是一件非常了不起的事情单山,這和Spring一直堅持高效,堅持給程序員各式各樣的“糖果”有關(guān)系幅疼。漸漸的米奸,在應(yīng)用端,Spring已經(jīng)有了一統(tǒng)天下的姿勢爽篷。上面僅列舉了Spring在Java持久層的工作悴晰,除此之外,還有很多內(nèi)容逐工,就不在這里一一列舉了铡溪。
緩存
- Ehcache
- memcached
- J2Cache
NOSql:非關(guān)系型數(shù)據(jù)庫
redis
mongoDB
緩存和非關(guān)系型數(shù)據(jù)庫很像,都是提供數(shù)據(jù)的冗余保存泪喊,從而提升性能棕硫,而且都可以分布式的部署,達(dá)到高可用袒啼。兩者有區(qū)別的地方哈扮,可能就在對數(shù)據(jù)結(jié)構(gòu)和存儲方式的差異。
RDBMS:關(guān)系型數(shù)據(jù)庫
Oracle
MySQL
postgresql
大公司里蚓再,都會有專門的DBA去做高可用和性能上的架構(gòu)滑肉,那是一塊相對獨立而且門檻較高的領(lǐng)域。作為應(yīng)用開發(fā)的技術(shù)人員摘仅,雖然不用考慮底層的架構(gòu)靶庙,但也仍需對自己寫過的每一條sql負(fù)責(zé),尤其是在輕型的架構(gòu)中娃属,底層更多的使用了原生的JDBC或myBatis六荒,這些都需要程序員們自己些sql护姆,當(dāng)系統(tǒng)存在一條“無厘頭”的sql時,再強大的架構(gòu)也有可能被搞垮恬吕。
其他技術(shù)
MQ中間件签则,反向代理服務(wù)器
linux操作系統(tǒng)