今天逛帖子的时候,看到这么个问题:
这个问题我曾经也很好奇过,那些成为技术大佬的人当初是怎么学习,以及怎么成长过来的,因为我相信他们也是从 0 开始的,也会经历困难期之类的。或许,站在大佬们的“肩膀上”,可以走的更远。
然后这个问题下面,有位“无名大佬”回答了这个问题,我看完后觉得相当不错,重新排版和整理了下,分享给大家一起共勉。
无论你是在校学生,还是职场老鸟,我相信这些想法和建议都会对你有所启发。
熟悉更多业务
不管是不是你负责的;熟悉更多代码,不管是不是你写的。
这样做有很多好处,举几个简单的例子:
-
需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点。
-
问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理。
-
方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案。
熟悉端到端
自学
-
重复代码太多,是否可以引入设计模式?
-
系统性能一般,可否进行优化?
-
目前是单机,如果做成双机是否更好?
-
版本开发质量不高,是否引入高效的单元测试和集成测试方案?
-
目前的系统太庞大,是否可以通过重构和解耦改为 3 个系统?
-
阿里中间件有一些系统感觉我们也可以用,是否可以引入?
-
解耦,将一个后台拆分为 2 个后台,提升可扩展性和稳定性。
-
双机,将单机改为双机系统,提高可靠性。
-
优化,将原来一个耗时 5 小时的接口优化为耗时 5 分钟。
Do exercise
-
学习了 JVM 的垃圾回收,但是线上比较少出现 FGC 导致的卡顿问题,就算出现了,恢复业务也是第一位的,不太可能线上出现问题然后让每个同学都去练一下手,那怎么去实践这些 jvm 的知识和技能呢?
-
Netty 我也看了,也了解了 Reactor 的原理,但是我不可能参与 Netty 开发,怎么去让自己真正掌握 Reactor 异步模式呢?
-
看了《高性能 MySQL》,但是线上的数据库都是 DBA 管理的,测试环境的数据库感觉又是随便配置的,我怎么去验证这些技术呢?
-
框架封装了 DAL 层,数据库的访问我们都不需要操心,我们怎么去了解分库分表实现?
Learning
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 来观察浏览器的反应。
Teaching
写 PPT、讲 PPT、讨论 PPT,这个流程全部走一遍,基本上对一个知识点掌握就比较全面了。
整理:小林
来源:oschina.net/question/3774191_2320056
推荐阅读
1. 一份 Spring Boot 项目搭建模板 2. Spring Boot 实现应用监控和报警 3. Nginx 从入门到实战 4. 一键式搭建分布式文件服务器 5. 团队开发中 Git 最佳实践
喜欢文章,点个 在看
本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
相关文章
暂无评论...