Java学到什么程度才能叫精通?

Wesley13
• 阅读 604

首先Java平台博大精深,一直被誉为互联网霸主;我们都知道互联网技术结构之复杂,所以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居多)

实战:

所有的理论都需要实践去检验,所以最终要成为高手或者说是所谓的精通,一定且唯一的校验标准一定是在实际的项目中来完成。

所以想要精通,那么一定是非常扎实的理论,对理论能有自己的领悟,然后用来解决实际问题;在实际的问题中夯实自己的知识。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java基础知识随身记
2018年11月12日20:51:35一、基础知识:1、JVM、JRE和JDK的区别:JVM(JavaVirtualMachine):java虚拟机,用于保证java的跨平台的特性。  java语言是跨平台,jvm不是跨平台的。JRE(JavaRuntimeEnvironment):java的运行环境,包括jvmjava的核心类
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
!(https://oscimg.oschina.net/oscnet/3e08a942dd884e9ab82b63a1f3c4aada.jpg"未命名文件.jpg")Java技术栈不可错过的Java 技术公众号!(https://oscimg.oschina.net/oscnet/00fcff52518e
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了