1. 自學能力。能根據現有的問題去利用百度和谷歌查出想要的答案,查不到記得變化關鍵詞 算法
2. 英語閱讀能力。不少技術都是老美他們發明的,想學習這些技術,最好的方式是直接去官方網站找教 程。那些csdn上的中文教程能夠參考,可是常常會帶你繞一大圈,多是少什麼jar包,或者是缺什麼環境,又或者是代碼寫的亂七八糟,很差維護。 sql
3. 好奇心。但願多接觸些技術,而且對本身長期使用的技術,要有一股衝動想要去了解原理,不知足於表面的使用。好比想深刻了解hibernate,簡單,去看他的代碼。看不懂?沒事,找個dbutils這種項目,去看看orm底層如何實現,看看他們是如何管理sql生成,看看他們是如何控制併發鏈接數據庫,而後嘗試本身添加聲明試事務處理。這時,你學到的不只是這個框架自己,還掌握了併發,反射,自定義註解,動態代理,設計模式等。瞭解了原理,學習了技術,何樂而不爲? 數據庫
4. 數據結構和算法。不少人說作Java,不須要數據結構和算法的知識,這實際上是誤區。不瞭解算法,你就不會分析每一個操做的快慢,當有海量數據處理的時候,你想優化都無從下手。不瞭解數據結構你就沒辦法區分何時用arraylist,何時用linkedlist,何時用stack,何時用queue。用linkedlist增刪快麼?不太準確,它的remove()方法時很快,可是remove(index)和remove(object)方法並不快,時間複雜度爲o(n)。用arraylist添加慢麼?也不太準確,利用平攤分析,他的時間複雜度能夠達到常量級別。當你有一大批基本類型的數據要排序的時候,你會調用arrays.sort,但你知道他底層是調用的快排麼?若是你不對本身的數據提早作隨機打亂的處理,不幸的是你的數據可能恰好出現大部分有序,少部分亂序的狀況,你知道這時使用jdk自帶的快排會進行大量的遞歸併致使棧內存溢出麼? 設計模式
5. 底層知識的掌握。掌握必定的虛擬機知識,可讓你在出現內存溢出的時候針對性處理問題。你須要知道棧內存溢出極可能是因爲你某個方法中進行了遞歸調用而忘告終束才致使的,你須要知道outofmemoryerror可能並不必定是堆內存產生對象太多而出現的,也多是方法區加載了太多類文件而出現的。 數據結構
6. 勤寫博客。多寫博客能夠梳理你凌亂的知識點。將解決的一道難題記錄上去,之後你就不須要爲這個問題東查西找,只須要看看本身的博客,立刻就能獲得答案 併發
最後,歡迎你們多多關注個人博客,我會按期更新博客信息 框架