如何高效的学习技术
不少朋友每天都阅读技术文章,但是第二天就忘干净了。工作中领导和同事都认可你的沟通和技术能力,但是跳槽面试却屡屡碰壁。
工作五年十年后,别人成了架构师,自己还在基层打滚,原因是什么?
把自己当成一台计算机,既有输入,也要有输出,用输出倒逼输入。
学什么
基础与应用
以数据结构和算法为例,大家阅读一下Java的BitSet的源码,里面有大量的移位操作,移位运算掌握的好,看这份源码就没问题。
以Java工程师应该掌握的知识为例,按重要程度排出六个梯度:
第一梯度:计算机组成原理、数据结构和算法、网络通信原理、操作系统原理; 第二梯度:Java基础、JVM内存模型和GC算法、JVM性能调优、JDK工具、设计模式; 第三梯度:Spring系列、Mybatis、Dubbo等主流框架的运用和原理; 第四梯度:MySQL(含SQL编程)、Redis、RabbitMQ/RocketMQ/Kafka、ZooKeeper等数据库或者中间件的运用和原理; 第五梯度:CAP理论、BASE理论、Paxos和Raft算法等其他分布式理论; 第六梯度:容器化、大数据、AI、区块链等等前沿技术理论;
有同学认为第五梯度应该在移到第一梯度。其实很多小公司的日活犹如古天乐一样平平无奇,离大型分布式架构还远得很。学习框架和中间件的时候,顺手掌握分布式理论,效果更好。
广度与深度
个人兴趣并不局限技术领域,可以是其他学科。我有个朋友喜欢玩山地自行车,还给一些做自行车话题的自媒体投稿。久而久之,居然能够写一手好文章了,我相信他也能写好技术文档。
哲学
举个例子,当软件系统遇到性能问题,尝试下面两种哲学思想提升性能:
空间换时间:比如引入缓存,消耗额外的存储提高响应速度。 时间换空间:比如大文件的分片处理,分段处理后再汇总结果。
设计稳健高可用的系统,尝试从三个方面考虑问题:
存储:数据会丢失吗,数据一致性怎么解决。 计算:计算怎么扩容,应用允许任意增加节点吗。 传输:网络中断或拥塞怎么办。
从无数的失败或者成功的经验中,总结出高度概括性的方案,让我们下一步做的更好。
英语
如果英语足够好,直接阅读一手英语资料,避免他人翻译存在的谬误。
怎么学
知识体系
克服遗忘
大脑的遗忘是有规律的,先快后慢。一天后,学到的知识只剩下原来的25%,甚至更低。随着时间的推移,遗忘的速度减慢,遗忘的数量也就减少。
每个人的遗忘程度都不一样,建议第二天复习前一天的内容,七天后复习这段时间的所有内容。
碎片时间
学习复杂的知识,需要大段的连续时间。图书馆是个好地方,安静氛围好。手机放一边,不要理会QQ微信,最好阅读纸质书,泡上一整天。有些城市出现了付费自习室,提供格子间、茶水等等,也是非常好的选择。
用起来
技术分享
坚持写技术博客,别在意你写的东西在网上已经重复千百遍。当自己动手的时候,才会意识到眼高手低。让文章读起来流畅清晰,需要呕心沥血的删改。
写作是对大脑的长期考验,想不到肯定写不出,想不清楚肯定写不清楚。
造个轮子
建议造一个简单的MQ,你能用到通信协议、设计模式、队列等许多知识。在造轮子的过程中,你会频繁的翻阅各种手册或者博客,这就是用输出倒逼输入。
作者:编码砖家
文章地址:cnblogs.com/xiaoyangjia/p/11535486.html