必看!Java 学习路线

本文介绍了Java技术学习的路径,包括核心框架如Spring、Mybatis等的作用,开源框架如dubbo的益处,以及前端技术、数据库(关系型和非关系型)、中间件(如Redis、RabbitMQ)的重要性。同时强调了服务器部署和GitHub在项目实践中的价值。
摘要由CSDN通过智能技术生成

有时候,我们所写的代码,不一定就是最优的,例如一个用 JavaScript 开发的俄罗斯方块,有的小伙伴可能花了1000多行写出来,但是有的大神100行不到就写出来了,而且性能好,没办法,真的你得承认这就是差别。

当然小编是学渣,写不出来这么高端的代码,但是没有关系,大神写出来的代码,我们可以虚心学习,以求赐教!

开源框架的出现,对整个IT行业来说,真的绝对是一种福利!比如新手上手难、项目开发周期长、编码风格不统一等问题,SpringSpringMVCMybtaisHibernate等框架的出现,极大的改善了web应用程序后端开发的难度,缩短了开发周期,对于后端开发者而言,真的是一种解放!

有的大公司,还有专门团队负责开发框架,例如阿里的 dubbo,就是阿里中间件团队开发的分布式调用服务框架,并且已经开源,对于要采用分布式部署的小企业,绝对是福音!


上面只是简要的介绍了主流的开源框架,实际上在 Java 的第三方框架生态里,还有很多热门的开源框架,例如:Netty 框架,一个成熟的高性能网络编程框架,主要是面向 NIO 开发,因为 jdk 中的 nio 存在不好用的问题,所以很多开发者弃而选择第三方框架来开发。

还有我们常用的 apache 的 common 包,这些第三方框架包,无疑都帮Java 弥补了自身的不足。

相关学习书籍,推荐如下:

  • Spring源码深度解析;
  • Netty实战;
  • 重构-改善既有代码的设计;
  • 领域驱动设计
4、数据库篇

从业务的角度出发,纯 Java 开发的应用程序,如果不与数据库连接起来,这个应用程序很难发挥它的作用,甚至吸引不了用户!

任何一门技术语言,其实都可以看成一种中间件,包括 Java 也是,对于一个用户来说,想要的就是数据,即:用户 -> 数据。而数据一般存放于数据库,对于数据库这块,其重要性可见一斑!

因为数据的存储需求,还诞生了很多巨头公司,例如:oracle、MongoDB。

在大公司,还有专门的大数据团队来负责数据的筛选、统计、分析,以助力销售部门做计划!


按照使用用途,数据库可分为关系型数据库、非关系型数据库。

  • 关系型数据库:主要就是我们做业务时经常会接触到的一种数据库,在设计时主要需要遵循三范式要求,以设计符合实际需要的表结构关系。
  • 非关系型数据库:主要是面向那些不能用结构化关系表达的数据,通过k-v来实现存储。

关系型数据库,是一种使用非常广泛的数据库,大部分业务都使用关系型数据库来存储数据,例如我们用户表、订单表、产品表等。

随之业务的快速发展,出现了很多难以克服的问题,非关系型数据库的出现就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

关于数据库方面,对于初学者而言,重在掌握数据结构、表、sql语句、索引、视图、存储过程、分库分表、慢sql优化等常用功能,如果想更深入的发展,还需要掌握存储引擎、数据连接监控、备份与恢复、数据统计分析等高级功能!

在这里就不详细的介绍各个数据库的使用了,会在后期的文章中详细介绍数据库的知识!

相关学习书籍,推荐如下:

  • SQL基础教程(入门级);
  • 高性能MySQL(进阶级);
5、前端技术篇

真正在实际开发过程中,对于后端开发者而言,不可能只做 Java 的开发,例如 pdf 自定义报表打印,这个需求就需要用到 Html 知识,有一些公司连前端开发都没有,前端任务全部都由后端人员来兼顾开发完成,当然作为后端人员,我们不可能啥都会,例如最新的 vue、react、angluar等前端框架,都是需要花精力去学习的,如果你有足够的精力,可以尝试去学习一下。

在这里推荐想学习前端技术的后端人员,重在掌握 Html、JavaScript技术,因为这两个技术是整个前端开发的基础,学完之后再学其他框架会更加游刃有余!

相关学习网站,推荐如下:

  • w3school(网站)
6、中间件篇

当我们初步掌握了 Java 相关核心技术、数据库知识、前端技术等知识之后,此时的你,基本可以独立开发一个小项目了,是不是很兴奋~~

但是如果面对一个请求量很大、对响应要求很高的系统,传统的解决办法基本解决不了你所面临的问题!

这个时候,你可能需要学习中间件了,例如分布式缓存:redis、memcached,分布式消息队列:activemq 、rabbitmq、rocketmq、kafka,分布式搜索引擎:elasticsearch,分布式任务调度:quartz,分布式API网关:zuul,分布式熔断器:Hystrix 等等。

这些中间件的出现,主要是为了解决在集群环境下,单体应用系统解决不了的问题。

例如,redis的出现,解决了在集群环境下,单体应用系统缓存不同步的问题,rabbitmq实现单体应用中生产与消费者的解耦,elasticsearch解决在集群环境下搜索各种信息的服务等等。

因为技术更新迭代太快!看书可能不太跟得上,关于这块内容的学习,可以自行在网上查询相关博客网站写的系列文章,或者直接查询官网的文档。对学习会非常有帮助!

7、服务器篇

对于服务器这块,重点主要是掌握如何进行软件安装部署、使用和如何进行线上排查错误,学习完服务器的部署,就可以通过web浏览器来访问项目了。


服务器的安装部署,可以说是非常重要的一环,例如,你想使用分布式消息队列 rabbitMQ,这个软件的安装过程就有点小复杂,如果自己都无法安装部署在服务器上,谈何使用!

打铁还需自身硬!很多小公司,没有所谓的运维人员,基本都是开发者自己去部署项目,包括集群环境的搭建和维护!

所以,如果在一家小公司里,那么学会服务器的部署、线上错误排查和解决,会对你非常有帮助!

学习完服务器部署之后,整个技术链基本已经成型了!

关于这块内容的学习,我不建议看书,因为更新太快,而且出现很多问题,书上也给不了答案,大部分出现的问题,在网上都可以直接搜索得到。

使用github助力

对于企业来说,之所以招聘 Java 技术人员,主要是因为 Java 能极大的提升公司的生产效率和运营效率,比如阿里巴巴、京东、美团等企业,很多核心的业务都是用 Java 开发的。

尤其是阿里巴巴,还开源了很多的 Java 框架,在业界比较出名的有 dubbo、rocketmq、fastjson等等。

这些大公司招聘要求也都非常高,尤其是对技术基础的掌握,还有业务的实现。

当然,给出的薪资待遇一点都不低,大家加油哦!

上面我们介绍了技术学习路线,其中还有一个很重要的环节,就是用技术来做项目,可能有些朋友很迷茫,不知如何完整的去做一个项目?

说到 github ,相信很多人不会陌生,一个属于程序员的乐园,在里面有非常非常多有名的项目,代码全部托管在里面,比如:spring、springboot、springcloud、dubbo、shiro、boostrap等等。

我会定期在 github 上搜索stars大于10000的项目,筛选 Java 项目,找到比较感兴趣的 Java 项目,然后每个都点进去看一下。


对于比较感兴趣的项目,就把代码给clone下来,倒入到 IDEA 中,当然也不仅仅只是看,对于写的很好的代码,自己会照着写一遍,我建议初学者找一个感兴趣的项目,然后把代码抄一遍,边抄边理解,这样能锻炼自己做项目的思路,对提升自己做项目的经验非常有帮助!

github 真的是一个非常好的学习技术的地方,例如电商项目、OA项目、新闻视频项目等等,都有现成的代码,如果你所在项目碰到了技术瓶颈,可以参考类似的项目是怎么实现的,说不定就能帮到你!

写到最后

对于目前的互联网行业,学习 Java 技术的朋友,比较主流的职业路线就是向架构师发展或者项目经理方向发展,再就是技术总监,最后就是自己创业做老板,当然也有的朋友转向大数据,还有的朋友转向人工智能开发。

虽然路线有不同,但基本都在整个IT圈子里。就目前来看,Java 未来的市场空间依然很大,包括现在炒的很火的人工智能,服务端的开发还是采用 Java 来作为平台的首选开发语言,因此对于刚刚入行的小伙伴,对未来也不必过于担心,干就是了!

上面介绍的技术路线,只是一个大致的流程,作为一名IT从业人员,其实需要了解的知识还有很多,例如:计算机网络知识、数据加解密、浏览器从发起一个请求到后端服务器所经过的链路、cpu是实现多线程操作的原理等等,每个技术点后面都有故事,技术永远在不断的更新,学习的脚本不能停下来!

小编谈不上什么大神,不懂的东西还有很多,很多知识还需要深入的学习,可能有些地方写的不够好,望网友们多批评、多指出!

谢谢各位阅读本文,希望能帮助那些处于迷茫阶段的朋友!助你们一臂之力!

< END >

如果大家喜欢我们的文章,欢迎大家转发,点击在看让更多的人看到。也欢迎大家热爱技术和学习的朋友加入的我们的知识星球当中,我们共同成长,进步。

【推荐阅读】

ES6

  • 列举常用的ES6特性:

  • 箭头函数需要注意哪些地方?

  • let、const、var

  • 拓展:var方式定义的变量有什么样的bug?

  • Set数据结构

  • 拓展:数组去重的方法

  • 箭头函数this的指向。

  • 手写ES6 class继承。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

微信小程序

  • 简单描述一下微信小程序的相关文件类型?

  • 你是怎么封装微信小程序的数据请求?

  • 有哪些参数传值的方法?

  • 你使用过哪些方法,来提高微信小程序的应用速度?

  • 小程序和原生App哪个好?

  • 简述微信小程序原理?

  • 分析微信小程序的优劣势

  • 怎么解决小程序的异步请求问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值