从初级程序员到高级程序员的学习路线

前言

 一直以来有很多刚入门的小伙伴问我,我想成为一个大佬到底应该先学什么再学什么? 怎么样才能月入过万? 现在根据我多年的工作经验来帮助大家梳理一下,希望让渴望入坑的小伙伴们少走一点弯路。

我是做java开发的,一开始我是从学习java开始的,后来由于内心一直渴望成为一名全栈攻城狮,所以也开始搞搞前端,下面我先来介绍一下作为一名java后端攻城狮的学习路线。

java基础

我想不管是大学校园还是培训机构,在理解面向对象编程之前都要先熟悉一下面向过程编程,也就是类似C语言的开发模式,顺序,选择和循环,没错,这一步非常重要,因为这能让一个新手最快的感受到什么是编程,并且能够通过一些逻辑和算法在控制台打印出一些有趣的东西,或者是做一个贪吃蛇小游戏,让你体验到开发和创造的乐趣,当你走过这个阶段之后,就要开始接触一个不一样的东西,也是java的精髓:面向对象编程。从此走上人生巅峰,一脚踏入整天都和对象在一起的日子。。。

从初识面向对象到开始使用三大框架,你需要学习哪些东西呢?

  1. java的基本数据类型 和 引用数据类型
  2. 封装,继承,多态的基本思想
  3. java常用的引用数据类型和常用的方法(例如:String)
  4. 什么是抽象类,什么是接口
  5. 集合类型(例如:HashMap)
  6. 文件读写IO流
  7. 常见的设计模式(例如:单例模式,工厂模式)
  8. 什么是反射和泛型
  9. 什么是AOP(面向切面编程)
  10. 什么是事务和事务的三大特性
  11. 数据库设计和sql语句
  12. 什么是 jdbc
  13. servlet,request 和 response (开始接触web)

当你真正理解了上面这些知识之后,那么恭喜你,你可以叩开web的大门了,这个时候我们就会开始学习一些基本的前端知识,和java领域最常用的模板引擎:jsp。 jsp曾经真的是一个伟大的发明,让java在web领域大放异彩,但是,现在已经是2019年了,jsp由于性能和其它方面的缺点,已经不再流行了,所以在这里,我奉劝初学者,jsp做做毕业设计可以,了解基本原理也可以,但是在现在的企业里面,前后端分离之势已不可阻挡,几乎新的项目都是采用前后端分离,这里面最为突出的就是 vue 和 react,如果你真的想找到一个好的工作,请注意不要把大量的时间浪费在 jsp 或者是 swing 之类的开发上面。

好了,上面我们讲的是在学习框架之前我们的基本学习路线,现在我们要开始做项目了,很多前辈已经在基于上面基础知识上帮我们开发好了一些基本的java项目,这些项目里面封装了请求,响应,连接数据库等等的代码,而且写得非常之完美,我们把这些项目称之为框架,有了这些框架,开发web项目就事半功倍了,我们只需要把他们组合起来,再加上我们自己的业务代码,就形成了属于你的web项目。

javaWeb里面最常用的框架有:

  1. spring
  2. springMVC
  3. mybatis
  4. hibernate
  5. springBoot

(像struts2之类的框架我就不推荐了,因为这些真的很少有企业会用了,我不想误人子弟。)

 

接下来你还需要学习一些常用的数据库和sql语句:

  1. oracle
  2. mysql
  3. mongodb

(数据库我就只推荐这三种,足够了,在我的职业生涯中,遇到使用过除了这三种之外数据库的同事不足1%,sqlServer 虽然也有一些企业在用,但是我还是推荐不要去学,把主要的精力放在这三种数据库上面就行了)

 

除了上面的框架和数据库之外,我们还需要学习一些中间件

  1. redis
  2. nginx
  3. kafka
  4. zookeeper

 

如果你只是想完成一个单体的web项目,那么学会上面这些,已经足够你用了,在这个层面你可能要摸爬滚打两年以上,你才能真正熟悉了web开发,真正理解了一个web应用的基本流程。这期间你会在很多细节上面踩坑,很正常,这是一个过程,认真走完这个过程你就会大彻大悟,这个时候你正在成长为一个中级攻城狮!

两年的时间一晃而过,现在你已经对web项目的开发流程游刃有余,如果你没有去研究框架的源码,或者去研究算法和设计模式的话,那么你会发现这两年你的工作任务,无非就是四个字:增删改查! 很多程序员工作了很多年依然没有进步,就是因为他们一直满足于这个舒适区,拿着一份不算高又基本能满足温饱的工资,每天写写接口,扯扯淡,日子就这样一天天的过去。。。

作为一个过来人,我很有必要提醒大家,这样的生活是慢性死亡,因为技术会不断进步,任何技术都有被淘汰的一天。刚刚工作两年的你还没有接触过用户量极大的互联网项目,当用户量极大,项目并发量极高的情况下,所产生的问题,你会发现你束手无策。所以当遇到这样的场景时,我们就应该会去思考,我们服务器的程序是不是应该要做一些改变,让他变得更加健壮,更加强大,怎么样才能变得更强大呢? 加内存? 提升硬件? NO ! 这个时候我们要进入一个新的领域: 架构!

 

架构 

当我们的单体项目不足以支撑用户的并发访问时,我们该怎么办呢?解决方案有很多种,每个人都有自己的理解,可以针对你的业务做针对性的处理,合理的利用缓存,合理的利用消息队列,合理优化数据库,如果你感觉足够了,那么也可以不用对你的项目做侵入式的改造,但是如果依然不能解决问题,那么你就需要调整你的架构,虽然这样对原有代码侵入式很大,但是这是无法避免的。

在这里我推荐三种常用的基本思路

  1. 集群
  2. 分布式
  3. 分布式集群

什么是集群

就是将你的请求分发给几台或者十几台服务器来处理,如果有100个请求进来了,20个请求交给A服务器处理,20个请求交给B服务器处理,同理其它的请求分别交给不同的服务器处理,这些服务器部署的都是同一个项目,但是连接的是同一个数据库,这样我们就减轻了每个服务器的压力,同时也成功处理了用户的请求,当然,集群不一定是多台服务器,单服务器也可以做集群,同一个项目在一台服务器上面启动多个进程,我们只需要用nginx来做负载均衡,同时代理多个进程,这样可以充分的利用服务的CPU和内存资源,已达到提升服务端性能的目的。

什么是分布式

比如,你的项目大致能分成三种业务处理类型,1.支付 ,2.订单,3.日志 ,那么我们可以将这三种业务相关的代码分别放在一个独立的项目里面,这样我们是不是就可以将这三个项目分开部署,那么它们之间怎么互相通信呢?又怎么保证事务的一致性呢?所以这里就要用到我们推荐学习的分布式框架:

  1. spring cloud
  2. dubbo

这两个框架目前在java分布式解决方案里面,已经占据了领导地位,特别是 spring cloud,基本是目前大多数的企业项目架构都在推崇,如果你能非常熟练的掌握spring cloud,那么月薪过万是轻而易举的。

什么是分布式集群

这个我想我不说大家也应该猜到了,就是把分布式和集群组合起来,既然我们已经把业务进行了拆分,那么也就可以对每一个拆分后的项目做集群部署,这样我们又可以成倍的提升服务端的性能。注意:在做分布式或者集群的时候,我们的session一般需要将其保存在redis里面,每个项目都从redis里面获取用户信息,这样才能保证session一致性的问题,当然也有别的解决方案,你可以根据你的理解来解决session问题。

 

我这里有我以前学习的时候看过的一套java基础视频和分布式相关的一些学习视频,我还整理了一些面试题资料,想要的小伙伴可以关注我的微信公众号,公众号下面有一个菜单,直接领取就行了,还有一套python的视频,有兴趣的也可以领

 

前端

 

 

关于java方面的学习路线,我就讲到这里吧,现在我来讲一讲前端。本人学习前端真的是一本血泪史啊,在vue还没火起来之前,我一直用的都是jQuery,说一句心里话,jQuery真的被我玩烂了,每一个方法都已使用的很熟练了,通过直接操作dom元素来完成前端的各项功能的这种思想对我来说已经深入骨髓,但是,正是因为这种深入骨髓的思想,导致我在后面接触vue之后,很长一段时间无法接受数据双向绑定的这种操作模式,每次都恨不得导入一个jQuery进来,这让我痛苦不堪,这就是固化思维所带来的严重后果。。。

 

前端需要学习的知识有:

  1. css
  2. html
  3. javascript
  4. jquery (浅尝辄止,不要固化思维)
  5. jsp(浅尝辄止 )
  6. free marker (这个性能比jsp要好,适合用来开发后台管理系统)

前端值得学习的一些框架:

  1. vue
  2. layui
  3. element ui
  4. uni-app
  5. vant ui
  6. api cloud

竟然选择了前端,就要做好打持久战的准备,把基础打扎实后,随时关注并学习最新的技术和框架,与时俱进,才不会被淘汰。就目前而言,我感觉vue即将一统天下,无论是体验感还是开发效率上面都表现的非常优秀,随着时间的推移,新的项目都会采用vue或者其他的前后端分离框架,本人强烈推荐vue!

 

好了,希望大家能够早日取得真经!我们一起向着架构师努力!

 

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个忙,让更多的人看到这篇文章:

1、点赞,可以让更多的人看到这篇文章
2、关注我的原创公众号,第一时间阅读我的文章。


3、也欢迎关注我的博客哦

 

 

 

想要进行技术交流的朋友也可以加我的个人微信,大家互相学习,共同成长!

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值