怎样学好 Java 后端?

在讲Java后端学习建议前,先明确下Java后端所包含的点,即先明确学习目标。

1 Java后端的当下一般包括两类,一类是用纯粹的java程序,当然还可能包含JDBC等数据库关联程序做后端批处理程序,即导入数据或数据处理,这种情况比较少。而更多的是,用Spring Boot等Web框架处理前端发来的请求,这类情况里,后端的起始点是从控制器Controller接收到前端请求那一刻,中间包括各种业务处理和数据库访问,终点在于把处理好的数据返回给前端。

2 学Java后端,固然可以了解下前端框架,比如VUE或React,这样可以熟悉前端和后端交互参数的流程,但如果专攻后端,前端技术可以不用学,尤其是一些Vue,react,css,html等细节,不要过多了解。

3 Java后端包括单机版和分布式这两个方面。单机版技术是指用Spring Boot等框架做增删改查业务的相关技术,包括Spring Boot组件、JPA等连接数据库的组件以及Java基础语法,而分布式组件现在有阿里系和Spring Cloud微服务两个方向。其中初级开发只需要了解单机版技能,资深和架构需要了解分布式方面的技能。

还是想先讲讲学Java后端的一些弯路吧,毕竟方向错了,就会导致学得慢,甚至是学不成。

1 全栈方向学,这样可能在小公司里能面面俱到,但由于忽视高并发这块,所以会过早面临职业瓶颈。不少走全栈路线的,可能到了28岁,小公司里也不相干或没法干,同时大公司的技术估计都没听说过,更别提准备面试了。

2 过多钻入设计模式、JVM虚拟机或线程并发模型之类的底层细节,或者是过多钻入一些算法。这些技能估计就面试时候能用到,面试官在问的时候,甚至都知道这些技术项目里未必能用到。

3 只学理论,不追求真实的项目实践机会,这可能是学Java后端时面临的最大问题。 比如初级开发要升级到资深开发时要学分布式组件,哪怕在自己机器上运行再多的学习项目,也只能说精通API,真正的应用还得在项目里。

有了上述铺垫后,再从零基础开始讲起,如何学好Java后盾。

1 甚至可以直接从Spring Boot等Web框架开始学起,开始学做增删改查的业务。

在学的时候,可能会遇到大量的不熟悉的语法,比如集合或异常处理,或者是面向对象方面的类、方法和对象等。这时的做法是,以spring boot框架代码为主干,抓住整合JPA连数据库的流程,而Java语法这块缺啥补啥,有问题再现看,而别系统去学java语法。

比如去买本Java语法书,即Java核心编程方面的书,可能里面有100个知识点,但Spring Boot框架里用到的顶多也就20个,通过这样缺啥补啥的学习,就能精准学习。而且一个语法点可能会出现多次,看多了也就熟悉了,这样效率还高。

2 在学好增删改查业务以后,一定得去找工作,不找的话,学到的技术顶多1个月就会忘记光。由于找工作和本文主题无关,所以虽然重要,但不展开,相关内容大家可以参考我的这篇文章。

应届毕业生找java初级开发工作需要掌握哪些知识或者技术? - 知乎icon-default.png?t=M276https://www.zhihu.com/question/454903954/answer/2407977409

3 找到初级开发的工作以后,进到项目组得到实践机会。哪怕这个项目是外包项目,或者再烂,其中总会包含业务,而真实的业务一定比在学习阶段的业务复杂,在其中一定会用到各种组件。

这时大家可以通过细心做业务,了解Spring Boot等框架处理前端请求并通过logback,AOP,拦截器控制器等组件处理业务的流程,这样一方面能通过反复使用Spring Boot或Java方面的API了解相关技术,另一方面还能横向地掌握Spring Boot衍生的技术,比如JPA,logback等。

4 初级开发进入到项目组以后,不仅会接触到Java后端的技术,更会接触到软件开发测试和发布相关的流程和技术,比如单元测试或代码管理或版本发布,这块一定要参与,而且,如果系统有问题,一定得通过看日志等方式去解决。

因为做好后端不是单纯用技术,而是用技术,通过和人打交道完成一个个业务需求,并把代码部署上线。这样的话,初级开发就不仅能进一步熟悉业务,还能进一步提升技能。

5 其实做到这里,不少Java程序员就会停滞发展。在这个阶段,Java程序员业务也熟了,系统也熟了,来个需求也能很快高质量地做好,来个问题也能很快通过看日志解决,同时版本管理、质量管理和代码发布等事情也能做好。

Java程序员快则1年,慢则2年,只要上心,一定能达到这个阶段,所谓在现有公司里成为熟练工,从而陷入舒适区。但此时Java程序员所掌握的,顶多也就是Spring boot框架增删改查相关的技术,这些技术学起来太快,所以不值钱,可替代性太高。而且所谓也业务技能更不值钱,换个公司,人家都未必关注业务细节。在这个阶段,Java后端程序员就应该向分布式方面去靠了。

6 不少Java初级开发也知道提升,但往往走错方向。普遍错误的做法是,比如去看MySQL,Redis或锁或Spring Boot的底层源码,去钻研这方面的细节。这种细节看再多,不去实践一点用都没。

这块该怎么做?通过学分布式组件去了解应对高并发需求的能力,同时找个能提供项目实践机会的公司,同时在实践中深入学习分布式高并发相关的技能。

7 当下分布式组件方面有两个方向,一个是nginx做负载均衡,dubbo+zookeeper做远端调用,redis做缓存,netty做消息分发处理,姑且把这套组件叫阿里系组件。另一套是Spring Cloud Alibaba系的组件,比如是nacos做服务治理,ribbon做负载均衡,openfeign做调用。

这两套组件能通用,比如都可以用Seata做分布式事务,都可以用RocketMQ做消息中间件,都可以用Redis+Mycat做数据库性能调优,但不能混用,比如负载均衡方面不能都用nginx和Ribbon。

Java初级开发如果要升级,先找一个方向,阿里系和Spring Cloud Alibaba都行,然后先搭建环 境,再使用API解决实际问题。

8 但要知道,初级开发在零分布式组件基础的前提下,要通过面试得到高并发组件的项目实践机会很不容易,因为面试官很容易问出相关经验是通过实践得到还是仅仅是理论经验,但话说回来,一旦得到分布式组件的实践机会,升级到资深开发乃至架构师,就只是时间方面的积累了。

这方面的学习和面试技术也和主题无关,本文也不展开,如果大家要了解细节,可以参考我的如下文章。

如何学习Java“高并发”,并在项目中实际应用? - 知乎在讲解深入学习Java并发编程的方法之前,先分析如下若干错误的观点和学习方法。错误观点1:学习Java编程…https://www.zhihu.com/question/64948142/answer/2397916815零java架构项目经验的程序员,如何升级成java架构师 - 知乎先说目前关于架构师的一些是实际情况。 1 要成为Java架构师, 单纯靠学知识一定不行,得靠在项目里积累经验。2 如何判断程序员是否已经成为java架构师?不是看程序员掌握的技能,更不是看程序员干的活, 而是看是…https://zhuanlan.zhihu.com/p/449363759

按上文给出的步骤,通过学习加面试加项目实践,一般快则5年,慢则7年,能升级到java架构,或者至少是资深开发,此时由于在项目里能接触到大量高并发分布式等值钱技术的机会,后面怎么提升都不用问别人了,自己都能知道。

写了这么多做个总结。

1 学好Java后端,首先得明确学习方向和学习要点,用不到的不学,在什么阶段着重学什么技术。

2 一定别做初级开发的熟练工,这样的话,看似舒适,但很快就会失去竞争力。同时,在任何阶段都需要不断提升,否则很容易被淘汰。

3 底层细节有用,但没太大用,对提升能力帮助没想象中的那么大。

4 一定得通过通过面试先得到值钱技术的实践机会,在项目里再提升。这块很难做到,尤其是资深开发升架构阶段,但不这样一定无法掌握更高级的技术。

你可能感兴趣的:(程序人生,java)