当前位置: 首页 > news >正文

#我与Java虚拟机的故事#连载18:JAVA成长之路

作者:邱保平

种子

记得大学的时候,我们C语言老师给我们展示过一张开发语言排名的图片,当时只是模模糊糊地记得排名第一的语言是 “Java”(flag),并不知道这个语言究竟有什么神奇之处,能够在短短几年内打败C/C++。虽说学校教学思想保守,并未开设Java课程,在校期间一直是C/C++陪伴着我,也曾担任ACM队主力。毕业面试时,遇到了一个技术面试官,面试时他说,你的C语言学的挺不错的,我们这边正好有个不错的C语言项目,不知道你感不感兴趣?结果我的回答却出人意料,甚至我自己都怀疑自己,我说:我想去做JAVA开发,我喜欢Java(flag=true)。面试官很震惊,不过又缓缓的笑着说,就这个理由?我答道:是的,就是这么简单。然后面试官对我说,会一门语言,其他语言就都会了,开发语言之间互通相似的。

发芽

入职后才了解到面试官是公司很厉害的JAVA专家(难怪面试时,不问C语言问题),CTO之下的第一人,他一人镇守整个南部地区,何况南部有广州和深圳2个IT大区,其他地区一般都是5-6个专家一起镇守。当一个人喜欢上一件事之后,时间总是过的飞快,3年间,我从小白到高工,头发稀少了,但期间斩获了一个某全国比赛第三名,此等战绩足以让我能够在整个IT行业行走自如无人拒绝。回去后,面试官和我说,当时他的眼光真不错。之后便跟着他做事,感受到了他的强大,也看到了他的无奈。

移植

跟着面试官共事1年后,我对面试官说:“我们俩在整个南部苦苦相守,但是你看看我们公司的高层,重视过技术?现在招的都是什么人,留下来的又都是什么人,我们俩技术过硬又能怎样?”此时正值2018 IT寒潮,一个敢辞职,一个敢招人,来到了如今的公司(世界100强),担任Java专家,级别和70后差不多,还有一堆80后叫我老师,挺尴尬的,毕竟我是个90后。

思考

平常不怎么写技术博客,但是技术论坛的确也没少逛,普通人也就是发技术贴,看似等级很高,头衔很吓人,其中又有多少水贴呢。授人以鱼不如授人以渔,重要的不是解决问题,重要的是知道怎么解决问题。工作5年了,写些感悟,技术提升只能靠自己,我能帮ITer的便是提高大家的思想觉悟。3年工作经验的时候,我的实战能力很强,理论知识薄弱,后来,便从头补充理论知识。现在总结下来,还是得理论过关,不然永远都有个瓶颈卡着脖子。

Java宝典

通常,JAVA开发者必看2本书《Java从入门到精通》《深入理解Java虚拟机:JVM高级特性与最佳实践》。第一本在开始自己的Java生涯时,便需要学完,这本书太基础就不详说了。第二本则是最关键的一本书,这本书会决定你,能否在Java这条路上有所突破,这本书至少应该在3年工作经验的时候看完。现在我去面试别人,只要你工作经验≥3年,我绝对会问JVM知识,5年以上便会问不同版本之间的JVM异同,有时候会让他们分析其中的原因。

JVM这本书目前出版了第3版,每版都会有新特性加入,如果可能,当然是所有都看,不过还是建议直接看最新版的,这本书的好处就是不同版本都有不同的主题色彩,红色经典、蓝色升级版、紫色是最新版的。

为什么是这本书,Java的畅销书很多,但是想要进阶就需要自己挑选有用实用的书,这本书算是我读过中,初入高阶不错的书籍。读这本书的时候一定要实践结合理论,不是说看一遍就行了,好歹得拿本地的JVM试试手吧,其中有些理论甚至可以变种运用到日常的开发中,以其中锁概念为例子,有些时候需要某一串原子交易时,你就可以借鉴锁机制,也可以借鉴数据库事务机制,特别时分布式架构中,这是一个共通的难点,虽说现在分布式已有原子交易的解决方案,但并不是通用就适合你的情况。平时要多思考,思考时,就会充分的发挥你的理论知识。然后付诸实践,然后才能设计出最适合你们的最佳解决方案。

未来的路

十年磨一剑,我不过5年而已,3年的坎我过的很顺利,5年的坎也不错,10年的坎,我不想让自己遗憾。不过想想那么多人5+年了,JVM都不会。如今的我已经能够像当年的面试官那像一人镇守一方,花费的时间也只有他的一半。5年后,要么站在科技最前沿,要么转行此生不再接触IT。

推荐阅读

《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》

推荐语:这是一部从工作原理和工程实践两个维度深入剖析JVM的著作, 自2011年上市以来,前两个版本累计印刷36次,销量超过30万册,大厂面试最佳参考手册,进阶架构师必读、Java优化神书,这些标签成就了它成为原创计算机图书领域不可逾越的丰碑。

第3版在第2版的基础上做了重大修订,内容更丰富、实战性更强:根据新版JDK对内容进行了全方位的修订和升级,围绕新技术和生产实践新增逾10万字,包含近50%的全新内容,并对第2版中含糊、瑕疵和错误内容进行了修正。

你与世界

只差一个

公众号

相关文章:

  • 给平庸程序员的12条建议
  • 华章新春献礼 扫码免费领书
  • 编程语言书单(Java核心技术篇)
  • ​人工智能书单(数学基础篇)
  • 中国医院需要什么样的数据中台?
  • 人工智能书单(机器学习理论篇)
  • 智能时代书单
  • 人工智能书单(机器学习实践篇)
  • 人工智能书单(图像处理与计算机视觉篇)
  • 立春好消息:华章图书持续霸榜京东、当当计算机畅销新书榜!
  • 小白入门机器学习必备:编程语言环境介绍及搭建
  • Linux系统运维书单
  • OpenStack常见的22个问题汇总
  • 疫情肆虐下,程序员用代码告诉你为什么千万不要出门!
  • 双手奉上数据库技术书单,助你玩转数据库的各种技术!
  • C语言笔记(第一章:C语言编程)
  • iOS 系统授权开发
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Node + FFmpeg 实现Canvas动画导出视频
  • node 版本过低
  • nodejs:开发并发布一个nodejs包
  • PHP CLI应用的调试原理
  • spring学习第二天
  • Vue 动态创建 component
  • 测试开发系类之接口自动化测试
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #{} 和 ${}区别
  • (ibm)Java 语言的 XPath API
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (二)fiber的基本认识
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .htaccess配置重写url引擎
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 读取 JSON格式的数据
  • .NET 事件模型教程(二)
  • @Not - Empty-Null-Blank
  • [ C++ ] 继承
  • [20150321]索引空块的问题.txt
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [C++]AVL树怎么转
  • [Contiki系列论文之2]WSN的自适应通信架构