2021年了,我们该怎样学Java?
Posted YChen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年了,我们该怎样学Java?相关的知识,希望对你有一定的参考价值。
前言
首先我们如果要把Java学好,就得确定好两个问题:
一 到底要学什么?
就是我们入门破局的时候, 一定要十分谨慎! 一定要多问多了解! 有的小伙伴一听说Java技术很火呀,就开始闷头学习啊, 报班学习啊! 这对我们的时间和金钱成本都是一个很大的浪费!在觉得学Java之前,我们应该了解行业的发展趋势!了解这个技术是干嘛的!最后再确定要不要学. 而且还有一个重要的点就是要了解自己的兴趣. 你得问问自己是不是兴趣在这一块,学习本就枯燥,即便是学霸也觉得学习永远也没有游戏吸引人. 如果你觉得可以了,你才来开始认真学Java,把它作为一个吃饭的工具! 回过头来,既然你选择了Java就不要再怀疑,努力把它学好,学扎实!
二 怎么学 ?
(1) 协调好工作和学习
有的小伙伴找到工作了就全身心地投入,没有留有自己的时间来考虑自己的技术到底有没有一个长进,真正做到开发三年就有三年经验,而不是一个经验用三年!怎么去做到呢?往下看
(2) 持续学习与阶段性总结
我们要定期地做学习总结, 看看自己技术有没有长进,如果你发现自己的技术在原地踏步!那就是一个很危险的信号了!所以我建议小伙伴们学习Java可以分为以下几个阶段来进行学习:
(一) 熟练开发单体应用,快速上手找工作
这个阶段我们可以找一些简单项目来学习,像一些管理系统(例如微人事),数据报表系统啊! 这个时候我们的目标不要钻牛角尖! 要注重熟练度! 我们要把握脉络, 再扣细节! 一定要把自己的项目练熟练! 一定要注意多从零搭建项目! 很多小伙伴技术学的很多,但是当自己从零开始搭建个项目就很吃力,连maven依赖怎么分析都不明白! 有的小伙伴跟着视频一学, 很顺利的跑起来了, 当自己脱离教程时, 就感觉无从下手! 甚至跑不起来, 连怎么分析问题都无从下手. 所以在这个阶段一定要牢牢掌握自己的基础!
这里介绍这一阶段我们应该学习哪些方面的知识
Java基础 : 基础语法,流程调度,集合,多线程,设计模式,网络通讯...
前 端 : html css js, ajax...
数据库 : mysql, Oracle, SqlServer
开发工具: Eclipse, IDEA, VsCode, tomcat, postman, git, maven, gradle, svn, jenkins...
并且啊! 我们可以通过写博客的方法记录自己所学与理解; 奕臣在这里推荐几个博客社区啊! 像CSDN,掘金这些都不错啊! 像Github, Gitee这些"同性交友网站"也非常热门啊! 还有像一些记录博客的工具: 语雀,石墨, Typora, ProcessOn...这些都是不错的选择!
开发框架 :
前 端 : Vue, React, Angular 了解
后 端 : SSM -> Spring, SpringMVC -> SpringBoot, Mybatis -> MybatisPlus --> JOOQ(以java面向对象的思想写sql语句), Spring Data, JPA, 还有早期的Hibernate;
权限认证框架 : RBAC(能够手写这种模型), Shiro, Spring Security -> OAuth2.0;
定时任务 : Timer, Quartz, Elastic-job, XXL-job
我们需要对这些技术有一个快速的了解和实战, 并且在这个阶段不需要太深!不需要纠结与某一个点!我们只需要能够灵活的整合这些框架到项目中就ok了!
二 分布式架构
这个时候项目会开始逐渐复杂起来,这个时候一定要注重理解,注重横向对比! 当单体应用过渡到分布式架构时,会遇到很多技术体系的改造,这个时候一定要注重理解每一个技术解决了什么问题,可能某一个领域会有很多的技术,这个时候要注意横向的对比!不要闷头只看用到的技术!
学习目标如下 :
前端 : nginx, LVS, CDN,
后端框架 : SpringCloud -> Eureka(注册中心), Fiegn + ribbon(服务调度), Gateway(网关), hytrix(熔断)... SpringCloudAlibaba -> Nacos(配置与注册中心), Dubbo(服务调度), RocketMQ, Sentinel(限流), Seata(分布式事务)...
我们一定要理解它们的用处!这个阶段的API还是比较好学的, 但是重点是我们应该理解他们是怎样解决分布式问题的!
分布式协调框架 : Zookeepr, Redis, Mongodb, MQ(消息中间件: kfaka, RabbitMQ, RocketMQ) --> 与SpringBoot融合/集成 --> SpringCloudStream(以SpringBoot的方式对MQ的整合,企业常见方式)
数据库 : 分库分表: ShardingSphere, MyCat
分布式数据库产品(NewSQL) : PostGreSQL, VoltDB, TiDB...他们在传统数据库的基础上加了分布式的功能
项目部署 : Docker, K8s
大数据体系(用到了再学, 注重理解) : Hadoop(Hdfs(解决数据存储),MapReduce(大数据计算)); Hive(大数据索引,在大数据层面写SQL);HBase(做存储); Spark(计算); ES -> ELK; Storm, Flink, KafkaStream(流式计算)
三 高并发性能调优
这就好比是修炼内功,破茧成蝶,这个阶段的目标一定要注重实战,运维开发一体化,要多发现问题;注重交流,一定不要闷头学习!跟身边的学习小伙伴一起交流,这样才会加深你对很多技术的理解!当你掌握这一阶段的学习的话,说明你对Java体系的掌握已经到很高的境界了!
操作系统 : 计算机基础原理,计算机网络, Linux系统
JVM : 底层原理: 累加载, 内存模型, 锁, 多线程, JVM参数调优 -> JVM问题排查(Arhtas, JVM Tools) -> 性能调优,数据结构和算法, 网络编程 -> BIO/NIO/AIO Netty
各种框架 : 底层原理, 高级特性 -> 源码阅读(深入了解) -> 手写调优-> 贡献开源代码(业务代码/文档)
分布式理论 : CAP -> 数据一致性算法: paxos, zab, Raft; 分布式事务; RPC远程调用 -> Netty; 分布式存储 -> hdfs, fastdfs; 分布式ID; 缓存 -> 缓存雪崩, 缓存击穿, 缓存穿透, 缓存一致性...
细化解决方案(兼收并蓄) :
分布式日志 : Skywalking(生成分布式日志号), kafka(日志传输), ELF(FileBeat, LogStash, ElasticSearch, Kibana) , Prometheus(数据收集), Grafana(报表开发工具)
开放式权限认证 : OAuth2.0, SSO, 多端登录...
大数据计算(用到就学) : 用户画像, 大数据风控 -> 机器学习,深度学习;
虚拟化技术 : Docker, Swarm,k8s -> 云原生
项目实战 : 抽取核心项目,精准问题,精准分析(电商秒杀,微信抢红包,千亿级搜索...)
最后!
四 架构思维 掌控全局
技术反哺业务,找准封口,引领技术潮流!你要对行业的新发展和新技术保持一个好的敏感度!形成架构思维!你需要全局地把控整个项目的落地!
还有一个很重要的: 一定要提高自己的行业影响力和团队影响力!
为什么社区团购这么火? 从技术上来说并没有太多突破, 就只是拿技术能力去突破新的技术场景,到了这个阶段需要我们了解:
业务体系设计 :
Serverless; 中台战略; 云原生架构... 能够从这些新的架构体系找到新的突破点
保持技术敏感 :
对新技术把握脉络: Fintech(金融和科技相结合) -> 业务驱动,技术落地,开发管理 -> DevOps, 迭代开发, 敏捷开发, 自助式运维体系, 3D打印...
培养自己的影响力 :
团队影响力 -> 公司影响力 -> 行业影响力
经过这四个阶段的学习,那么你的Java水平就会达到一个很高的领域啊!
大家可以对准自己的学习位置,找准学习方案,也希望大家的学习之路不再迷茫!
以上是关于2021年了,我们该怎样学Java?的主要内容,如果未能解决你的问题,请参考以下文章