开发者社区> 问答> 正文

怎么做到Do exercise?

怎么做到Do exercise?

展开
收起
游客y7f4tqjnapsic 2021-12-24 09:59:42 559 0
1 条回答
写回答
取消 提交回答
  • 其实就是 3 个词: learning、trying、teaching !

    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:既然有线上的配置可以参考,那可以直接让 DBA 将线上配置发给我 们(注意去掉敏感信息),直接学习;然后自己搭建一个 MySQL 环境,用线上 的配置启动;要知道很多同学用了很多年 MySQL,但是连个简单的 MySQL 环境都搭不起来。

    ● 框架封装了 DAL 层:可以自己用 JDBC 尝试去写一个分库分表的简单实现, 然后与框架的实现进行对比,看看差异在哪里。

    ● 用浏览器的工具查看 HTTP 缓存实现,看看不同种类的网站,不同类型的资 源,具体是如何控制缓存的;也可以自己用 Python 写一个简单的 HTTP 服务 器,模拟返回各种 HTTP Headers 来观察浏览器的反应。

    简单来说,就是要将学到的东西真正试 试,才能理解更加深刻,印第安人有一句谚语:I hear and I forget. I see and I remember. I do and I understand,而且“试试”其实可以比较简单,很多时候 我们都可以自己动手做。

    当然,如果能够在实际工作中使用,效果会更好,毕竟实际的线上环境和业务复 杂度不是我们写个模拟程序就能够模拟的,但这样的机会可遇不可求,大部分情况我 们还真的只能靠自己模拟,然后等到真正业务要用的时候,能够信手拈来。

    3) Teaching

    一般来说,经过 Learning 和 Trying,能掌握 70% 左右,但要真正掌握,我觉 得一定要做到能够跟别人讲清楚。因为在讲的时候,我们既需要将一个知识点系统 化,也需要考虑各种细节,这会促使我们进一步思考和学习。同时,讲出来后看或者听 的人可以有不同的理解,或者有新的补充,这相当于继续完善了整个知识技能体系。

    这样的例子很多,包括我自己写博客的时候经常遇到,本来我觉得自己已经掌 握很全面了,但一写就发现很多点没考虑到;组内培训的时候也经常看到,有的同学 写了 PPT,但是讲的时候,大家一问,或者一讨论,就会发现很多点还没有讲清楚, 或者有的点其实是理解错了。写 PPT、讲 PPT、讨论 PPT,这个流程全部走一遍, 基本上对一个知识点掌握就比较全面了。

    资源来源于《职业发展黄金手册》

    https://developer.aliyun.com/topic/download?id=793

    2021-12-24 13:03:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Practical tips for defending 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载