funnycoding/my_onjava8_examples

学习路线

funnycoding opened this issue · 0 comments

  • 语言:Java

    • 语言特性 —— 《On Java8》《Core Java》 《EffectJava》 这三本书作为语言特性的学习线索,足够了。 配合自己的思考
    • 语言底层 —— JVM 。 《深入理解 JVM 第三版》《The Java® Virtual Machine Specification》(官方文档) 这两本就足够了。官方文档尽量看吧。
    • 并发 —— 单独拿出来说,是因为这块非常复杂,阅读就读DougLee 的《Java 并发编程实战》吧。
    • JDK 源码的阅读,尤其是并发包的阅读。
    • Java 官方的 Web 知识 —— Servlet 相关,JavaWeb 最基础的东西。
    • Java 系最常用的开源框架
      • Spring 全家桶,重点学习 SpringBoot 以及 SpringCloud(分布式)
      • Netty —— 高性能网络框架
      • Tomcat —— 可以直接学习 SpringBoot 内嵌的 Tomcat,Servlet 的容器,有很多设计模式
        -------- 前三个是最重要的 --------
      • Mybatis,JPA —— 具体工作中使用的是 MyBatis Plus 。 其他类型的 ORM 框架也需要学习。
      • Rx Java —— 异步的 Java 框架,完全不一样的编程风格,拓宽视野
        ------------------- 中间件 -------------------
  • 中间件

    • MQ:现在分布式这么火,消息中间件必不可少,负责服务之间通信

      • 了解其原理
      • 了解其实现
      • 了解不同中间件的不同适用场景
      • 了解其可能出现问题的场景以及解决方法
    • ES:也挺重要的

      • 基本上套用MQ的就可以,那4点掌握哦了就差不多了
        --------------- 框架暂时就想了这么多, 能精神的学习前三个,就足够了,其他作为使用即可。 ---------------
    • Java 的 基础,底层,框架 基本就差不多了,剩下就是项目了,这里分为以前做过的项目,以及这半年准备做的开源项目:项目需要有明确的不同的侧重点:

      • 具有并发性的项目
      • 解决了疑难杂症的项目
      • 魔改框架的项目
      • 个人折腾的项目
      • 抄 开源框架 并自己修改的项目
    • Java 项目到这就差不多了,剩下的就是后端的通用技能:

  • 数据库

    • Mysql
      • MySQL 是重点,以其为关系型数据库的代表进行学习。
      • MySQL 的使用,各种 SQL 的编写
      • MySQL 的底层机制的学习,其索引、数据结构,搜索引擎,事务等机制的深入学习。
    • Redis
      • 了解其使用场景
      • 了解其核心机制
      • 了解其数据结构
      • 了解其基本实现
      • 了解其可能存在的踩坑场景
  • 数据结构

    • 最底层的东西了,计算机编程的核心。
    • 学习线性表与其对应的实现
    • 学习图/树 并了解其实现
    • 预计这里会遇到很多困难
  • 算法

    • 算法对于野生程序员肯定是 大山之一,那么怎样在边际递减效应之前收获最多的知识
    • 策略:
      • 对于常用的算法,也非常熟练
      • 能将算法与数据结构进行关联
      • 能将算法与 JDK 的源码进行关联
      • 能降算法与真正的使用场景做关联
    • 具体刷题策略:
      • LeetCode:总共 1377 题,这个可以归类为很多类, 1377 每天10道 也要137 天,何况不可能10道,把每个大方面的题刷一遍就行,目测刷个3-400题就可以有较大的提升了
        ------------------- 工程能力 -------------------
  • 设计模式

    • 看书上说,设计模式是对语言的补充,因为语言不支持某些特性,才需要在特定场景下的最佳实践。
    • 设计模式需要掌握最常用的,总结成自己的
    • 找出 JDK 中的设计模式并总结
    • 找出 Spring 中的设计模式
    • 找出别的开源框架中用的好的设计模式
    • 自己使用的设计模式
  • 《重构》,《CleanCode》

    • 这两本书作为代码能力提升的索引
  • 《代码大全》《冒号课堂》

    • 这两本书作为整体工程能力的提升

---------- 系统设计能力 ----------

  • 看 Github 那个 System Design 仓库就行了,对常用的技术都了解之后跟拼积木差不多,多积累几个场景,有自己的理解就可以了。

----------------- 方法论 -----------------

  • 《暗时间》 ---> 相当多的方法论知识都从这里来
    • 基于暗时间可以有很多引申的心理学的书籍,不过很多都是英文版的,但是这部分现在又记不起来,所以暂时把暗时间作为最明显的索引就可以了
  • 《左耳听风》 ---> 极客时间的专栏,有程序员练级攻略。算是一个比较有价值的资源索引集中地,还有一些作者自己的方法论,英文材料比较多,值得慢慢消化
  • 《10x程序员工作法》 ---> 极客时间专栏,侧重于描述怎样解决问题,提高沟通能力,不错的专栏。

----------------- 论坛 -----------------

  • InfoQ 不错的技术网站

  • V2EX

  • 黑客派

  • ThoughtWorks 技术雷达