Java 持久化技術棧

基礎知識儲備:
  • Java SE
    • Java語言(java.long.*)
    • Java集合框架(java.util.*)
    • Java I/O(java.io.*、java.nio.*.*)
    • Java 網絡(java.net.*、java.rmi.*、javax.net.*)
    • Java 併發(java.util.concurrent.*、java.util.concurrent.*.*)
 
實際上Jdk的內容很是多,除了上面提到的最經常使用的工具和方法,剩下的內容,好比像java security、java Swing、java awt等,可能平時不經常使用,但做爲一名合格的程序員,那些都有必要了解。
 
  • Java EE
    • Servlet
    • JDBC
    • JPA
 
Servlet是現代web應用的基礎,基於其原理搭建的MVC框架,好比Spring MVC、Struts等,是咱們這代Java工程師都必定會用到的。經典的Java EE容器Tomcat、Jetty等也是如今天天都會用到的工具,所以,Servlet技術必定要深刻掌握。JDBC和JPA是Java持久層惟二的技術。JDBC更底層,更基礎,JPA則是針對ORM框架的接口規範。
Java EE覆蓋到企業開發的方方面面,但由於其臃腫的設計,已經愈來愈跟不上時代的腳步了,最近有傳言稱Oracle將放棄這項技術,但不論Java EE的前景如何,我上面提到的那三門技術,都不會輕易消失。
 
  • JVM
    • 操做字節碼:ASM、cglib、javassist
    • JVM的內存和體系結構
 
Java的語言的方方面面又都和JVM有關,但這部份內容我還不是很瞭解,之後在補充 //TODO
 
經常使用框架:
  • 數據庫鏈接池
    • Apache DBCP
    • Druid
    • Tomcat jdbc pool
    • HikariCP
 
不知道爲何,我對鏈接池技術一直情有獨鍾,當年接觸到的第一個鏈接池是c3p0,也正是從那是開始,我纔有所謂「性能」、「效率」這些概念。「池」,是經典的以空間換時間的方式,提高程序效率的概念。「池」的應用很是普遍,不光有數據庫鏈接池,還有線程池,緩存池等等。這項技術發展到如今已經很是穩定,普通公司的項目只要使用鏈接池,通常就沒什麼問題。隨着時代的發展,鏈接池的功能也在不斷擴充,阿里的Druid就提供了sql監控的功能。因此如今看鏈接池是相關內容,就不能僅是爲了實現功能(原本功能就很少),而是要深刻的理解原理,並可以本身動手實踐,開發出高效穩定的服務組件。
 
  • 持久層的中間件
    • ottor
    • yugong 
    • Cobar
    • Sharding - JDBC
    • myCat
 
Java持久層中間件一般分爲兩類,一類是分庫分表,一類是數據遷移。前者是在融合了JDBC和數據庫鏈接池的基礎上,實現的面向數據庫的高級功能。當系統的數據量上升到必定級別以後,分庫分表是必然的選擇,使用中間件,就能夠和應用分離,作到靈活的控制。然後者則是對Java I/O、併發技術的高級應用。一道經典的面試題是給你一個上GB的文件,問你如何快速的找到其中出現頻率最高的一組詞彙,或者問你如何快速的統計出一份報表。等你深刻掌握了第二類框架的運行原理以後,這些都不是問題。
 
  • ORM框架
    • hibernate
    • myBatis
    • Jfinal
    • nutz   
 
SSH(Spring + Struts2 + Hibernate3)最火的時候,我剛剛工做,後來有人說hibernate不行了,你們都在用myBatis,因而緊跟着又有了SSM(myBatis)。再後來,「雲」、「微服務」成爲當前最煊赫一時的概念,傳統的ORM框架也漸漸沒有了往日的熱度,你們都轉頭去搞本身的輕量級的ORM和MVC框架,國內比較著名的有Jfinal和nutz。ORM,實體映射成了老舊的代名詞.......可是,我不這麼認爲。如今打開 hibernate的官網,發現它保持的生命力,就在6月底,還發布了其最新的5.2.1版本。一個框架的成功都是有緣由的,其中確定有很是多值得學習的地方。只有你足夠了解它的時候,你才能準確的判斷,本身究竟需不須要它。
 
  • Spring
    • Spring JDBC 
    • Spring JPA
    • Spring DATA

其實看上文也知道,各類框架變來變去,可是Spring的核心統治地方,一直屹立不倒。能作到這點是一件很是了不得的事情,這和Spring一直堅持高效,堅持給程序員各式各樣的「糖果」有關係。漸漸的,在應用端,Spring已經有了一統天下的姿式。上面僅列舉了Spring在Java持久層的工做,除此以外,還有不少內容,就不在這裏一一列舉了。

  • 緩存
    • Ehcache
    • memcached
    • J2Cache
 
  • 非關係型數據庫
    • redis
    • mongoDB
 
緩存和非關係型數據庫很像,都是提供數據的冗餘保存,從而提高性能,並且均可以分佈式的部署,達到高可用。二者有區別的地方,可能就在對數據結構和存儲方式的差別。
 
  • 關係型數據庫
    • Oracle
    • MySQL
    • postgresql
 
大公司裏,都會有專門的DBA去作高可用和性能上的架構,那是一塊相對獨立並且門檻較高的領域。做爲應用開發的技術人員,雖然不用考慮底層的架構,但也仍需對本身寫過的每一條sql負責,尤爲是在輕型的架構中,底層更多的使用了原生的JDBC或myBatis,這些都須要程序員們本身些sql,當系統存在一條「無厘頭」的sql時,再強大的架構也有可能被搞垮。
 
其餘技術
  • MQ中間件,反向代理服務器
  • linux操做系統
相關文章
相關標籤/搜索