前言
学习Java编程并没有想象中的那么难,只要兴趣使然,就一定可以。
然后找准自己的目标,掌握合理学习方法,定制自己专属的学习计划,持续学习。
下面主要给分享从入门到进阶所需的学习路线(也可以理解为需要掌握的内容),学习方法以及职业规划(部分答疑)。
对需要入行Java、晋升、能力提升或者准备跳槽的同学,提供一个可行的执行思路、参考。
适用人群
想入门学习掌握Java编程,兴趣驱动的小白 规划跳槽,冲刺大厂的打工人 进一步提升技术能力,突破职业发展瓶颈的老鸟
资源网站
专项学习
JavaGuide:https://snailclimb.gitee.io/javaguide/#/ Java知识导读
Java全栈知识体系:https://pdai.tech/ Java全栈、项目管理等
GitHub Java 专区:https://github.com/topics/java GitHub Java 合集:https://github.com/akullpp/awesome-java 掘金 Java 专区:https://juejin.cn/tag/Java 菜鸟教程:https://www.runoob.com/java/java-tutorial.html 学习 在线练习
问题答疑
StackOverflow:https://stackoverflow.com/questions/tagged/java
综合
牛客网:https://www.nowcoder.com/courses 面经 题库 学习、练习(多技术栈) 实习、校招、社招内推
力扣网 LeetCode LeetBook:https://leetcode-cn.com/leetbook/ 国外
技术社区
阿里 https://developer.aliyun.com/course/explore?spm=a2c6h.17661847.0.0.66a46fb2AoLGPl&tags=hanlin-developer-type-8-1,,, 美团 https://tech.meituan.com/ 有赞 https://tech.youzan.com/tag/back-end/ ……
视频
学习方法
推荐最强终极学习法——费曼学习法,沉浸式学习,更高效。
经过自己提炼简化之后掌握的知识,阶段性结合牛客网题库检验加深记忆。
【特别提醒】
勤奋,多动手写代码 学以致用,将所学应用到实际工作、业务 合理分配时间,时间精力花在刀刃,参照二八法则,番茄时间管理法。最近热门的谷爱凌就是榜样 强调:多看、多想、多用多动手,用到实际业务
路线大纲
主要涉及以下几个方面的内容:
前置基础 计算机基础 网络基础 OS 数据结构算法 Java基础
框架和原理(源码) 并发编程 性能调优 分布式(框架) 微服务 项目实战 互联网/开发工具 扩展
其中,并发、性能调优、分布式框架、微服务为重点掌握内容,特别是并发、性能调优更是大厂通关利器。
前置基础&源码框架
重点在基础知识的学习掌握,以及队主流框架源码的阅读和学习,站在巨人的肩膀上,帮助我们更好地理解基础知识,并提升技术视野和代码质量。
源码部分7可主要涉猎应用框架(重点Spring)、ORM框架(重点在mybatis)以及Spring Cloud相关框架等,以及源码中优秀的设计理念、设计模式等。
阅读源码方法
可以先从整体体系、架构入手,然后理解核心的原理、机制,再从源码一步步解析掌握这些原理和机制的实现。
例如,Spring的IOC源码阅读——先整体认知到Spring体系,理解IOC原理,掌握Bean生命周期,然后阅读代码,同时将Spring Context装载过程分析掌握。读源码,再结合手动实现,能更好地帮助你理解和掌握框架,加深一些容易混淆概念的区分。比如:FactoryBean和BeanFactory。
并发编程
重点在JMM、锁、线程及线程池等,可以概括为以下几点,可以按照这些点再深入扩展分支,由点及面,掌握并发。
JMM内存模型 并发同步处理 并发包tools限制 并发包原子操作 阻塞队列(BlockingQueue) 并发Map、List和Set Executor线程池及源码 并发框架(ForkJoin、Future)
性能调优
性能调优也是日常工作会重点使用的技能,涉及到软硬件、网络等,这里重点概况下软件(中间件)方面性能调优大方面:
JVM性能调优(主要涉及JVM机制、调优工具、GC等) MySQL性能调优(主要涉及MySQL索引数据结构、explain、锁和事务、慢查询等) Nginx(主要涉及Nginx的掌握、核心配置、负载配置等) Tomcat(主要涉及Tomcat架构、环境配置、Tomcat线程模型等)
分布式(框架)
分布式框架在工作中应用广泛,可以主要掌握以下:
分布式架构理论基础(主要涉及CAP、数据最终一致性BASE理论、高并发、高可用、分布式一致问题方案等) 分布式消息中间件(RabbitMQ、RocketMQ、Kafka等) 分布式存储中间件(Redis、MongoDB、FastDFS、ES等) 分布式框架(Zookeeper、Dubbo、ShardingSphere、Netty等)
微服务
微服务同样在工作中不可获取,重点掌握以下方面:
微服务架构演进历程 Spring Boot(应用、核心原理及源码) Spring Cloud(Spring Cloud Netflix理解即可,可以重点在Spring Cloud Alibaba上,掌握对应框架的应用、核心原理及源码) 虚拟容器(Docker、K8S)
项目实战
实践是掌握或提升技能最好的方式,将所学所长发挥出来。在这方面可从以下几个项目入手,这样可将上面提及的内容充分展现。(涉及架构整体设计、微服务拆分、分布式解决方案、高可用高并发及秒杀实现、调优及监控等)
分布式调用链平台 IM工具 电商平台
互联网/开发工具
工欲善其事必先利其器,这里所用的工具主要包括以下几个:
Git IDE工具 Maven/Gradle Jenkins Linux Docker K8S
扩展
除了所擅长的领域,还需要开拓技术视野,这样才能提高自己的能力及竞争力。
面试方面(职业生涯规划,面试礼仪、常见问题等,简历优化,大厂面试、算法题等) 区块链技术(原理、演进,设计、实现,密码学,BTC、ETH,P2P、智能合约、NFT等) 大数据技术(环境构建,Hadoop,通用生态圈组件如:数据采集器、数据仓库、OLAP、NoSql等) AI(机器学习、深度学习,线性回归、SVM、朴素贝叶斯、决策树、模型集成等常用算法,人脸、语音识别、NLP等,主流框架,课程推荐吴恩达大佬的机器学习和深度学习课程。机器人,群体智能,类脑,DRL等)
学习路线
基础入门到高级 & 资深路线 & 架构路线 & 高级架构路线
路线图详见:https://www.yuque.com/docs/share/06ea96e2-0595-4356-88a0-901ea4c6bea8?# 《Java编程学习路线图》
学习计划
按费曼学习法,结合学习路线和自己的时间、目标,制定专属自己的学习计划,学习过程注意把控学习进度和效率,如果需要完全掌握上面学习路线涉及的知识内容,需要时间在3-8个月不等,视基础及个人时间安排而定。
将学习路线内容化整为零,每天学习一部分知识点,计划制定可参考如下:
课题/日期 | 1月1日 | 1月2日 | 1月3日 | 1月4日 | 1月5日 | 1月6日 | 1月7日 |
---|---|---|---|---|---|---|---|
并发三大特性&JMM(1) | 小结 | ||||||
并发三大特性&JMM(2) | 总结 | ||||||
Java线程(1) | 小结 | ||||||
Java线程(2) | 总结 | ||||||
复习 | 思维导图 | ||||||
阶段复习 | 讲解稿/视频 | ||||||
阶段自测 | 专项测验 |
【参考说明】
固定每天学习时间,形成习惯。具体时长根据自身情况调整; 小结:简单总结学习内容,快速学习熟悉知识结构、轮廓为主; 总结:详细总结主要内容,建议图文结合,效果会更好; 技术总结思维脑图:针对前面学习内容,根据个人理解画出技术总结思维脑图; 讲解稿/视频:输出个人学习的知识点、总结、收获等。 讲解稿/视频的时间保持10-20分钟左右即可
阶段自测:结合牛客网题库专项测试,加深记忆
持续学习
按上面学习方法、计划形成的习惯,终身学习,持续提升技术深度和广度,保持竞争力。
学习方向
业务架构 模块划分 接口定义 设计模式 DDD 战略设计 战术设计
应用架构 分布式设计 扩展性 稳定性&高可用 数据库扩展 读写分离 分库分表
服务治理 分布式一致性 CAP、BASE理论 分布式锁 分布式一致算法 分布式一致性解决方案 分布式事务 ……
接口设计 其他功能性需求 性能 性能优化方法论及调优 容量评估 CDN网络 连接池、进程池、线程池、内存池
安全 web安全 DDos 用户隐私保护 加密解密 服务器安全 数据安全 授权、认证
开发架构 数据结构 队列 数组 栈 链表 树 图
常用算法 排序、查找 布隆过滤器 KMP 深度优先、广度优先 分治 动态规划 贪心 回溯 朴素贝叶斯 剪枝 推荐 最小生成树 最短路径
并发 JMM&并发三特性 CAS AQS synchronize ……
中间件 MQ web server 缓存 调度 RPC 数据库中间件 日志 配置中心 API网关
移动开发 技术选型 开发规范
数据架构 文件存储 数据库 理论 关系型数据库 noSql NewSql
大数据 机器学习
部署架构 OS 计算机原理 OS基础(CPU、进程、线程等) Linux
网络 5/7层结构 协议 网络模型 通信 零拷贝 反序列化
运维&统计&技术支持 监控 APM 统计分析 CICD 自动化运维 测试(TDD、单元测试、压测、A/B Test、灰度、自动化等) 虚拟化 容器技术 云技术 DevOps 文档管理
软技能 政策法规 沟通能力 问题解决能力 学习能力 创新能力 项目管理能力 文档、论文阅读能力 总结归纳复盘能力
技术前沿/趋势 服务网格(service mesh) 服务网关演进 技术选型 Istio流控与安全架构 服务网格到云原生方案
云原生 Cloud Native架构 spring cloud云原生应用 k8s与CNCF 云原生架构及最佳实践
云计算 私有云架构 公有云架构 SaaS云架构 PaaS云架构 IaaS云架构 FaaS云架构 BaaS云架构
serverless 无服务 低码 国产化答疑
很多初入门或者入门很久,仍在小厂或者学历、年龄等问题,导致竞争力差、晋升困难,下面从公司、学历等方面,做简单的规划答疑。
外包/小公司出路
多数大厂并不排斥外包或小公司的朋友,不要放弃或自卑,努力提升,依然有大机会 不要在小公司里过早做管理,阻遏技术提升,而管理能力也提升不大,得不偿失 技术学扎实,然后跳槽
大专学历如何逆袭
用技术弥补学历上的短板 找机会补上学历,比如成人教育 持续学习,任何时候都不要放弃技术 技术+管理路线(搞好人际关系)
应届生/社招生如何进理想大厂
掌握算法与数据结构(应届生必问) 掌握JVM+Mysql+并发+Redis+ZK+Netty+DP 掌握Spring源码+JDK源码+Linux+网络 拿得出手的项目(主要针对社招生,应届生更看重基础)
大龄程序员中年危机
在小公司十多年,温水煮青蛙,技术和管理能力停滞 35内进大厂更合适,当然不绝对 35+建议去独角兽创业公司一搏,成事的机会更大 终身学习,保持竞争力,不要被下属diss
结语
本路线会持续更新,后续每个知识专题项的核心知识笔记会梳理并附上,敬请期待!
路线对应的知识笔记资料,可关注【开源指北】公众号,回复【kkknote】获取。