⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 cnblogs.com/xiaoyangjia/p/11535486.html 「编码砖家」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

我们相信努力学习一定会有收获,但是方法不当,既让人身心疲惫,也没有切实的回报。

高中时代,我的同桌是个漂亮女同学。她的物理成绩很差,虽然她非常勤奋的学习,但成绩总是不理想。

为了巩固纯洁的同学关系,我亲密无间地辅导她的物理,发现她不知道题目考什么。我们的教科书与试题都围绕着考试大纲展开,看到一道题,应该先想想它在考哪些定理和公式的运用。

不少朋友每天都阅读技术文章,但是第二天就忘干净了。工作中领导和同事都认可你的沟通和技术能力,但是跳槽面试却屡屡碰壁。

面试官问技术方案,明明心里清楚,用嘴说出来却前言不搭后语。面试官再问底层算法,你说看过但是忘记了。他不在乎你看没看过,答不上就是零分。

正如男女相亲,男方谈吐潇洒才能吸引姑娘。可是男方紧张了,平时挺能说,关键时候却支支吾吾,姑娘必然认为他不行。

人生充满了许多考试,有形的和无形的,每次考试的机会只有一次。

工作五年十年后,别人成了架构师,自己还在基层打滚,原因是什么?

职场上无法成功升迁的原因有很多,没有持续学习、学习效果不好、无法通过心仪公司的的面试,一定是很重要的原因。

把自己当成一台计算机,既有输入,也要有输出,用输出倒逼输入

学什么

基础与应用

近些年诞生了许多新技术,比如最时髦的AI(目前还在智障阶段),数学基础是初中就接触过的概率统计。

万丈高楼从地起,不要被新工具或者中间件迷住双眼,一味地追新求快。基础知识是所有技术的基石,在未来很长的时间都不会变化,应该花费足够的时间巩固基础。

以数据结构和算法为例,大家阅读一下Java的BitSet的源码,里面有大量的移位操作,移位运算掌握的好,看这份源码就没问题。

Java同步工具类AQS用到了双向链表,链表知识不过关,肯定搞不懂它的原理。互联网大厂都喜欢考算法,为了通过面试也要精通算法。

以Java工程师应该掌握的知识为例,按重要程度排出六个梯度:

  • 第一梯度:计算机组成原理、数据结构和算法、网络通信原理、操作系统原理;
  • 第二梯度:Java基础、JVM内存模型和GC算法、JVM性能调优、JDK工具、设计模式;
  • 第三梯度:Spring系列、Mybatis、Dubbo等主流框架的运用和原理;
  • 第四梯度:MySQL(含SQL编程)、Redis、RabbitMQ/RocketMQ/Kafka、ZooKeeper等数据库或者中间件的运用和原理;
  • 第五梯度:CAP理论、BASE理论、Paxos和Raft算法等其他分布式理论;
  • 第六梯度:容器化、大数据、AI、区块链等等前沿技术理论;

有同学认为第五梯度应该在移到第一梯度。其实很多小公司的日活犹如古天乐一样平平无奇,离大型分布式架构还远得很。学习框架和中间件的时候,顺手掌握分布式理论,效果更好。

广度与深度

许多公司的招聘JD没有设定技术人员年龄门槛,但是会加上一句“具备与年龄相当的知识的广度与深度”。多广才算广,多深才算深?这是很主观的话题,这里不展开讨论。

如何变得更广更深呢?突破收入上升的瓶颈,发掘自己真正的兴趣。

大多数人只是公司的普通职员,收入上升的瓶颈就是升职加薪。许多IT公司会对技术人员有个评级,如果你的评级不高,那就依照晋级章程努力升级。

如果你在一个小公司,收入一般,发展前景不明,准备大厂的面试就是最好的学习过程。在这些过程中,你必然学习更多知识,变得更广更深。

个人兴趣是前进的动力之一,许多知名开源项目都源于作者的兴趣。

个人兴趣并不局限技术领域,可以是其他学科。我有个朋友喜欢玩山地自行车,还给一些做自行车话题的自媒体投稿。久而久之,居然能够写一手好文章了,我相信他也能写好技术文档。

哲学

哲学不是故作高深的学科,它的现实意义就是解决问题。年轻小伙是怎么泡妞的?三天两头花不断,大庭广众跪求爱。

这类套路为什么总是能成功呢?礼物满足女人的物欲,当众求爱满足女人的虚荣心,投其所好。食堂大妈打菜的手越来越抖,辣子鸡丁变成辣子辣丁,为什么呢?食堂要控制成本,直接提价会惹众怒。

科学上的哲学,一般指研究事物发展的规律,归纳终极的解决方案。软件行业充满哲学味道的作品非常多,比如《人月神话》。

举个例子,当软件系统遇到性能问题,尝试下面两种哲学思想提升性能:

  • 空间换时间:比如引入缓存,消耗额外的存储提高响应速度。
  • 时间换空间:比如大文件的分片处理,分段处理后再汇总结果。

设计稳健高可用的系统,尝试从三个方面考虑问题:

  • 存储:数据会丢失吗,数据一致性怎么解决。
  • 计算:计算怎么扩容,应用允许任意增加节点吗。
  • 传输:网络中断或拥塞怎么办。

从无数的失败或者成功的经验中,总结出高度概括性的方案,让我们下一步做的更好。

英语

英语是极为重要的基础,学好英语与掌握编程语言一样重要。且不说外企对英语的要求,许多知名博客就是把英文翻译成中文,充当知识的搬运工。

如果英语足够好,直接阅读一手英语资料,避免他人翻译存在的谬误。

怎么学

知识体系

体系化的知识比零散的更容易记忆和理解,这正如一部好的电视剧,剧情环环相扣才能吸引观众。

建议大家使用思维导图罗列知识点,构建体系结构,如下图所示:

克服遗忘

高中是我们知识的巅峰时刻,每周小考每月大考,教辅资料堆成山,地狱式的反复操练强化记忆。复习是对抗遗忘的唯一办法

大脑的遗忘是有规律的,先快后慢。一天后,学到的知识只剩下原来的25%,甚至更低。随着时间的推移,遗忘的速度减慢,遗忘的数量也就减少。

每个人的遗忘程度都不一样,建议第二天复习前一天的内容,七天后复习这段时间的所有内容。

碎片时间

不少朋友利用碎片时间学习,比如在公交上看公 众号的推送。其实我们都高估了自己的抗干扰能力,如果处在嘈杂的环境,注意力容易被打断,记忆留存度也很低。碎片时间适合学习简单孤立的知识点,比如链表的定义与实现。

学习复杂的知识,需要大段的连续时间。图书馆是个好地方,安静氛围好。手机放一边,不要理会QQ微 信,最好阅读纸质书,泡上一整天。有些城市出现了付费自习室,提供格子间、茶水等等,也是非常好的选择。

用起来

技术分享

从下面这张图我们可以看到,教授他人是知识留存率最高的方式。

准备PPT和演讲内容,给同事来一场技术分享。不光复习知识,还锻炼口才。

曾经有个同事说话又快又急,口头禅也多,比如"对吧、是不是”,别人经常听不清,但是他本人不以为然。领导让他做了几次技术分享,听众的反应可想而知,他才彻底认清缺点。

坚持写技术博客,别在意你写的东西在网上已经重复千百遍。当自己动手的时候,才会意识到眼高手低。让文章读起来流畅清晰,需要呕心沥血的删改。

写作是对大脑的长期考验,想不到肯定写不出,想不清楚肯定写不清楚。

造个轮子

我们经常说不要重复造轮子。为了开发效率,可以不造轮子,但是必须具备造轮子的能力。

建议造一个简单的MQ,你能用到通信协议、设计模式、队列等许多知识。在造轮子的过程中,你会频繁的翻阅各种手册或者博客,这就是用输出倒逼输入

文章目录
  1. 1. 学什么
    1. 1.0.0.1. 基础与应用
    2. 1.0.0.2. 广度与深度
    3. 1.0.0.3. 哲学
    4. 1.0.0.4. 英语
  • 2. 怎么学
    1. 2.0.0.1. 知识体系
    2. 2.0.0.2. 克服遗忘
    3. 2.0.0.3. 碎片时间
  • 3. 用起来
    1. 3.0.1. 技术分享
  • 4. 造个轮子