【学习路线】-总规划

学习,应该是一个程序员最需要具备的品质,坚持学习才会不断进步,否则干多少年都只是一个码农,重复的造着轮子,比程序还程序...

提到学习,我们首要关心的应该是学什么?不要学到最后发现学了一堆被时代淘汰,用不到的东西,做不到学以致用那你学来干啥,无非是浪费了自己宝贵的时间,然后长期用不到就给遗忘了...

所以特开此篇,以供那些迷茫到不知道该学些什么的人,也给像我出社会以前那些迷茫的小白指条明路,当然这篇其实更多是写给我自己的,梳理下今后的学习线路和规划,至于适不适合大家,就看我们三观是否合拍了,我是一个俗到不行的程序猿,眼里更多的看到的是钱,是为了涨薪才去学习的,其中也会有几分是因为喜欢,但大部分是因为钱.如果你也和我一样渴望高薪,那么学这些我认为是适合的,如果你真的是因为喜欢或者梦想,那你完全可以学一些自己喜欢的技术,而非主流公司要求掌握的技术,废话就说到这里.


初级

要求:能够造轮子,开发日常接口,写业务,也就是公司里那个搬砖的

掌握技术:

前端部分:HTML基础,CSS基础,JAVA SCRIPT基础 不需要样样都会,看得懂即可,了解数据是怎么从后端获取并展现在页面上的.

后端部分:

掌握JAVA SE基础部分:熟悉面向对象编程,集合框架,其中多线程,IO,数据结构可以作为了解即可.

框架:熟悉spring spring boot mybatis Jpa 等主流框架 可以利用这些框架进行日常接口的开发.

数据库:熟练Mysql,熟悉redis.

开发工具: Eclipse,IDEA

辅助工具:Navicat,Redis Desktop Manager

版本控制:git/svn 推荐git 需要会基本的push pull clone 等基础命令,不会命令在IDEA中能完成代码的日常提交拉取合并等即可.

项目管理:maven 基本的打包 引用 要掌握

接口文档:showdoc/esayapi等都可以,总之需要会写接口文档.

总之这个阶段你的任务就写接口,写接口,写接口,而且在这个阶段几乎是没有什么话语权的,几乎是别人让你干什么你就得言听计从的阶段,当然你可以有一些自己的思考,也不要怕繁琐,一次次的写,改,写会让你的基本功越来越扎实,不要过多抱怨产品需求频繁更改,这个阶段的重复造轮子对你的提升是有帮助的.


中级

要求:能够完成各种需求的功能开发,能够独立解决各种bug,能够独立进行一些基础调优,会用各种中间件

掌握技术:

前端部分:HTML基础,CSS基础,JAVA SCRIPT基础,Jquery基础,bootstrap基础.

后端部分:

熟练掌握JAVA SE,熟练运用多线程,尤其是JDK1.5以后出现的并发包里的所有内容,熟练运用集合框架,NIO,掌握数据结构以及使用场景,掌握网络通信.

框架:熟练掌握spring全家桶,Mybatis,jpa等,熟悉dubbo,spring-cloud

数据库:熟练掌握Mysql,Orecal,Redis,Ehcache,MongoDB等

开发工具:IDEA,Eclipse

辅助工具:Navicat,Redis Desktop Manager,Scrt,Xshell,putty,winscp...

版本控制:git/svn 尤其是git 各种功能都要掌握

项目管理:maven 熟练掌握

操作系统:熟练掌握Linux的常用命令,熟悉centos,ubuntu

中间件:熟练掌握Nginx,Mycat,Zookeeper,MQ

设计模式:常见的几种设计模式需要掌握,比如工厂,单例,代理,委派,观察者模式等...

这个阶段的你技术上趋于成熟,能够独立完成产品要求的各种功能,即便是很苛刻难以实现的功能,写出的代码质量也要比较高,能够独立解决开发过程中遇到的各种未知bug和坑,能够独立完成对自己所写代码的性能优化,尤其是sql优化.


高级

要求:能够独立完成从需求开始一直到产品上线后的所有内容,包括数据库表设计,功能实现,性能,调优,压测,安全,稳定性,高可用,健壮性都能独立解决,能够协助他人解决bug,不管什么bug,别人解决不了的,到你这里就必须给解决,解决不了也得想出其它策略.

掌握技术:

前端部分:HTML基础,CSS基础,JAVA SCRIPT基础,Jquery基础,bootstrap基础,脱离前端也能够独立写一些页面,数据展现等.

后端部分:精通JAVA SE,精通高并发,多线程,NIO,集合框架,数据结构,网络通信,熟悉jdk源码,熟练掌握jvm类加载机制,熟悉jvm.

框架:精通spring全家桶,精通Mybatis,熟练掌握jpa,熟练掌握dubbo,spring-cloud,netty,jetty,对spring及mybatis的实现深入了解,可以自己写一套精简版的spring,mybatis框架.

数据库:熟练掌握Mysql,Orecal,Redis,Ehcache,MongoDB等

开发工具:IDEA,Eclipse

辅助工具:AB,Jmeter,Pt-query-digest,percona-toolkit,Navicat,Redis Desktop Manager,Scrt,Xshell,putty,winscp...

版本控制:git/svn 尤其是git 各种功能都要熟练掌握

项目管理:maven 熟练掌握

操作系统:精通Linux的常用命令,熟悉centos,ubuntu,能够独立编写各种shell脚本

中间件:精通Nginx,Mycat,Zookeeper,ActiveMQ,Kafka,RabbitMQ

部署:熟练掌握docker,kubernetes,rancher.

设计模式:至少熟练掌握8-12种设计模式.

调优:数据库调优,sql语句及索引调优,代码调优,nginx调优,tomcat调优,jvm调优,linux调优,网络调优.

安全:掌握各种防攻击策略(包括但不限于https,csrf,xss,sql注入...)

硬件:熟悉计算机硬件,对各种性能瓶颈除了对软件部分进行调优,对硬件调优亦能有一些基础的知识储备.

算法:熟悉一些经典的算法,偶尔在一些实际应用场景下能够从算法层面对代码进行优化.

架构:能够独立设计给定并发量的相应系统架构,集群方案,硬件方案,网络方案,并能够独立实施所设计方案并通过压力测试.

这个阶段就是一个程序员的"不惑"阶段,技术上能难倒你的地方已经非常少了,更多的是各种瓶颈上的问题,这个阶段的你已经可以独当一面,成为公司技术上的中坚,写出的代码质量无可挑剔,总能完成让领导满意的项目,也成为同事心目中的"大神",配的上"高级"java程序员这个高帽子.


可能每个人心中对初级,中级,高级的定义都不一样,不同的公司也是,所以欢迎大家发表意见,愚生拙见,如有不正之处感谢各位能够不吝指出.

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值