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. 勤写博客。多写博客能够梳理你凌乱的知识点。将解决的一道难题记录上去,之后你就不须要为这个问题东查西找,只须要看看本身的博客,立刻就能获得答案 并发
最后,欢迎你们多多关注个人博客,我会按期更新博客信息 框架