首先Java平台博大精深,一直被誉为互联网霸主;我们都知道互联网技术结构之复杂,所以Java的技术组件,架构也非常之多和复杂;正所谓万丈高楼平地起对吧,想要精通Java,那么首先基础知识必不可少,基础知识我有分为两部分:
1:计算机基础知识
Java也是一门计算机语言,当然暂且不表Java的特点以及和其他语言的对比之类的话。既然是计算机语言那么计算机的基础知识肯定是必备的,操作系统(这个知识最起码在学习Java多线程的时候才能真正的说理解多线程以及多线程调度等等,还有进程管理等等要不很多人动不动就是什么JVM调优,垃圾回收器呀什么什么的,JVM调优并不是简简单单的改动点参数,如果仅仅是改动一点参数就叫JVM调优...对吧其他的这里就不说了);
计算机网络基础知识(最起码的你知道HTTP,TCP/IP,UDP等最基本的这些协议吧,网络通信原理)。
2:程序基础知识
程序的基础知识:
计算机语言的运行原理(例如二进制的计算肯定比十进制的快这些基本的运行原理,还有就是要不你怎么理解JVM对吧等等);
算法(重要,很多互联网大公司很看重这个,算法都不懂,你还说什么代码运行效率;还有就是JDK源码你怎么看都需要算法知识)
数据结构(重要,你去看看Java集合类的源码,哪一个不是数据结构的东西)
下来进入到Java中来说
首先还是那句话,精通一门语言,那么你必须要从它的平台内部开始,所以JVM就是第一个需要深入了解的东西;JVM怎么进行内存管理(这就常见的堆,栈,方法区,程序计数器等等),ClassLoader(类加载的机制的层次:Bootstrap ClassLaoder,Extension ClassLoader,System ClassLoader,以及自定义类加载器,双亲委派模式原理,Clasl文件的显示加载与隐式加载),GC管理(前面了解了JVM的内存管理,这个地方才能知道GC的作用,知道新生代,老生代,永久代,GC收集算法,强引用,弱引用,软引用,虚引用等等);常用的一些Java命令(例如:Java反编译,性能监控,故障处理)这是必备的就不多说
Java基础知识
Java基础知识比较多就不一一罗列,但是例如String,StringBuffer,StringBuilder,Integer,ArrayList , LinkedList、Vector,Stack, HashMap , LinkedHashMap , TreeMap , CouncurrentHashMap、HashSet , LinkedHashSet , TreeSet , HashMap,Queue ,Deque,BlockingDeque, BlockingQueue, TransferQueue(太多了就不全列举出来)这些基本的集合,线程,线程锁,线程池,Socket,反射等类的源码要熟读;
JavaWeb部分
基本的网络知识,网络协议知识;Servlet标准,JSP的原理(虽说现在这些直接使用的少了,但是基础知识在理解其他知识绝对需要);服务器的配置和管理(这部分一会在分布式中详细说);AJAX,JSON等等;数据池,数据缓存,性能优化等等
mybatis , Spring(这个厉害了,这个都成了分布式系统生态链),Spring基础的IOC,AOP(重复一次,不是说你会使用和配置,而是要深入理解以及理解源码),SpringMVC,SpringBoot(这个加上maven,对于构建微服务有着非常重要的地位),SpringCloud,RestFull,RPC,RMI,SOAP协议,微服务的管理(Eureka,Zookeeper等),负载均衡(Nginx,Ribbon等),Dubbo,Hystrix(微服务熔断保护),Config(远程配置与管理维护),Zuul(路由),Feign,MQ(消息中间件,RabbitMQ,kafka,ActiveMQ等等),elasticsearch(搜索服务器),Memcache等等
数据库方面:
先说数据库常用的产品:mysql,oracle,redis,mongodb 这些都要会;
mycat的读写分离,数据库集群
mysql的存储引擎(这个不但要了解理论知识还要知道实际使用),索引(数据库高效的最基本的东西),存储过程(这里申明一下不是说会定义一个存储过程不是说语法,而是存储真正在实际中的运用)等,Oracle的内存结构,进程结构,SQL优化,数据库服务器管理调优等,其他的就不过多赘述;
redis,mongodb(这个不用多说,现在使用非常广泛)
操作系统:
Liunx一定要熟练使用(现在好多技术都是更加适应Liunx,再说服务器大部分肯定是Liunx居多)
实战:
所有的理论都需要实践去检验,所以最终要成为高手或者说是所谓的精通,一定且唯一的校验标准一定是在实际的项目中来完成。
所以想要精通,那么一定是非常扎实的理论,对理论能有自己的领悟,然后用来解决实际问题;在实际的问题中夯实自己的知识。