java
JVM的內存結構:包括虛擬機棧、本地方法棧、指令計數器、方法區、堆以及直接內存等,重點須要瞭解虛擬機棧和堆以及方法區。
class文件結構:實際工做中用的很少,不過了解這部分結構對理解虛擬機的工做機制有極大的幫助,強烈建議多瞭解,特別是常量池和方法列表的形式,不瞭解這些想升入學習java基本上是空談。
線程狀態:啓動、阻塞、等待(分限時和不限時等待)、結束,瞭解這些狀態表明的意義,以及哪些操做分別會進入什麼狀態,深刻的能夠對比理解下jstack命令dump出的線程信息對應的線程狀態。
JVM自帶的命令:雖然有各類視圖話的調優工具,可是真正在生產碰到問題的時候發現仍是自帶的一些命令有用,比較實用的是jps、jstat、jmap、jstack。
垃圾收集器:瞭解基本的垃圾收集算法(標誌清除、複製、標誌-整理)以及各自的優缺點,哪些垃圾收集器分別使用的是什麼算法,優缺點,新生代和老年代對應的垃圾收集器組合。
類加載和初始化機制:加載、鏈接(驗證、準備、解析)、初始化、使用、卸載。
java語法:主要了解ReentrantLock和synchronized,concurrenthashmap和HashTable等區別,瞭解線程池的工做原理以及使用方法,瞭解隊列,瞭解異常以及內部類和反射機制等等
MySQL
MySQL基礎:MySQL的核心是數據庫架構、索引原理以及字段性質。連項目中數據庫的架構都不瞭解談優化就是瞎扯淡,做爲一個開發者來講數據庫優化的核心就是優化索引,而MySQL中索引數據結構用的最多的就是BTree樹,某些場景下可能會用到hash索引來作優化。
MyISAM和InnoDB的區別:雖然MyISAM引擎離咱們愈來愈遠,可是用MySQL瞭解此兩者的某些核心區別是必須的。InnoDB支持事物、外鍵、行級鎖,MyISAM支持索引前綴壓縮和全文索引,基本上來講大部分場景都是適合使用InnoDB,並且據業界大牛預測MySQL官方有計劃在將來的版本中集成InnoDB引擎而且作深度優化,因此InnoDB是將來的主要方向。有個地方須要注意的是InnoDB是主鍵聚簇索引,因此若是主鍵不規律的話可能insert操做可能致使性能有大的影響。
另外做爲一名開發者,數據庫的事物類型以及傳播級別也是極度有必要清楚的。
緩存
做爲一個web應用的開發者對緩存的瞭解是必須的,目前接觸和用的最多的就是memche和ehcache,redias也有了解相比memcache能夠固話緩存內容以及支持多種數據類型,性能上彷佛目前爲止也沒啥定論,目前本人也沒有使用過redias不作過多評論。一些十分頻繁的訪問能夠考慮用下ehcache作個二級緩存,由於它是本地緩存。另外memcache的內部機制(如緩存非配製劑,以及過時機制也有必要了解)。
java
linux
對linux我本人以前也有過比較全面的學習,也學習過一段時間的shell編程,可是由於工做內容的關係,目前腦子裏記得的也就是一些linux命令了,目前由於時間和工做內容的關係沒有刻意去複習相關的東西,工做中基本夠用,不懂的稍微百度下基本上也是沒問題的。
linux
通訊協議
另外對tcp、udp這類協議的區別也要有個基本的瞭解(前者面向瞭解須要屢次握手,穩定可是耗費資源多)web
大數據算法
有一段時間對大數據很狂熱有想往數據分析方向發展的慾望,當時比較系統的學習了下HDFS、MapReduce以及HBase,從原理來講hadoop實際上是個很簡單的東西,由於設計者封裝的很好使用來講不難。之因此搞hadoop能相對普通java開發待遇高一些,我想主要是這個是個新興的東西的確解決了一些平時很難已解決的問題,其次招hadoop開發的都是些比較好的公司它們給的待遇自己就比普通公司的要高。因此表面看起來搞hadoop的待遇要好些。個人感受是hadoop的主要優點在於大數據分析,要在數據分析這個行業有所建樹算法是要有比較好的底子的,而我明顯不具有相關優點。因此在對hadoop有過一段時間的狂熱後慢慢的重心又回到了現有的工做中。shell
一點規劃
數據庫
計劃在將來一兩年從架構的角度從新審視和總結下過往的工做經驗。同時也系統的學習下項目管理的基本理論。編程
後記
緩存
說到最後技術是用來作事的,技術是死的人是活的,工做幾年也見過很多人事升遷,技術當然重要可是爲人處事更是一門永遠須要學習的科目。技術之路是沒有盡頭的,時間精力有限找準本身的定位很是重要,最後分享一篇對本人頗有啓發的文章,與諸君共勉,我本人的職業規劃已經愈來愈明晰了,但願還在迷茫的同志們都儘快找到最適合本身的發展計劃。http://xjsunjie.blog.51cto.com/999372/1378547數據結構