对于第一篇博客,其实没有别的什么想法,就是想提升自己,同时还能帮助到需要帮助的同行人,以后只发干货。。。干货。。。
知识分两种 一种是通用知识(不是说对所有人通用,而是说在一个专业领域去到哪个公司都能通用),另外一种是跟业务公司绑定的特定知识。 通用知识没有任何疑问,碰到后要非常饥渴地扑上去掌握他们。对于特定知识就要看你对业务需要掌握的深度了,肯定也是需要掌握一些的,特定知识掌握得好的,一般在公司里混得也会比较好。
怎样高效率的去学习?
1)Learning (学习)这个是第一阶段,看书、google、看视频、看别人的博客都可以,但要注意一 点是“系统化”,特别是一些基础性的东西,例如 JVM 原理、Java 编程、网络编程, HTTP 协议等等,这些基础技术不能只通过 google 或者博客学习,我的做法一般是 先完整的看完一本书全面的了解,然后再通过 google、视频、博客去有针对性的查 找一些有疑问的地方,或者一些技巧。
2)Trying (尝试)这个步骤就是解答前面提到的很多同学的疑惑的关键点,形象来说就是“自己动 手丰衣足食”,也就是自己去尝试搭建一些模拟环境,自己写一些测试程序。
例如: ● Jvm 垃圾回收:可以自己写一个简单的测试程序,分配内存不释放,然后调整 各种 jvm 启动参数,再运行的过程中使用 jstack、jstat 等命令查看 jvm 的堆
● Reactor 原理:自己真正去尝试写一个 Reactor 模式的 Demo,不要以为这 个很难,最简单的 Reactor 模式代码量(包括注释)不超过 200 行(可以参考 Doug Lee 的 PPT)。自己写完后,再去看看 netty 怎么做,一对比理解就更加深刻了。
● MySQL:自己搭建一个 MySQL 环境,用线上的配置启动;要知道很多同学用了很多年 MySQL,但是连个简单的 MySQL 环境都搭不起来。
3)Teaching(教学) 一般来说,经过 Learning 和 Trying,能掌握 70% 左右,但要真正掌握,我觉得一定要做到能够跟别人讲清楚。因为在讲的时候,我们既需要将一个知识点系统 化,也需要考虑各种细节,这会促使我们进一步思考和学习。同时,讲出来后看或者听 的人可以有不同的理解,或者有新的补充,这相当于继续完善了整个知识技能体系。
引用自《不止代码》