Java学习路线:从小白到大神(附学习方法)

前言

学习Java编程并没有想象中的那么难,只要兴趣使然,就一定可以。
然后找准自己的目标,掌握合理学习方法,定制自己专属的学习计划,持续学习。
下面主要给分享从入门到进阶所需的学习路线(也可以理解为需要掌握的内容),学习方法以及职业规划(部分答疑)。
对需要入行Java、晋升、能力提升或者准备跳槽的同学,提供一个可行的执行思路、参考。

适用人群

  • 想入门学习掌握Java编程,兴趣驱动的小白
  • 规划跳槽,冲刺大厂的打工人
  • 进一步提升技术能力,突破职业发展瓶颈的老鸟

资源网站

专项学习

问题答疑

综合

技术社区

视频

学习方法

推荐最强终极学习法——费曼学习法,沉浸式学习,更高效。
Java学习路线:从小白到大神(附学习方法)
经过自己提炼简化之后掌握的知识,阶段性结合牛客网题库检验加深记忆。
【特别提醒】

  • 勤奋,多动手写代码
  • 学以致用,将所学应用到实际工作、业务
  • 合理分配时间,时间精力花在刀刃,参照二八法则,番茄时间管理法。最近热门的谷爱凌就是榜样
  • 强调:多看、多想、多用多动手,用到实际业务

路线大纲

主要涉及以下几个方面的内容:

  • 前置基础

    • 计算机基础
    • 网络基础
    • 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】获取。
版权声明:stonekyzb 发表于 2022年8月31日 下午10:36。
转载请注明:Java学习路线:从小白到大神(附学习方法) | 24k导航

相关文章

暂无评论

暂无评论...