假笨说-我是如何走上JVM这条贼船的

简介:

这两年陆陆续续写了20来篇和JVM相关的文章,虽然不是很多,但是也得到了一些人的认可,贴上了JVM的标签,还是挺欣慰的,2016年算是和JVM深绑的一年,现在2016年一不留神也快过了,也赶个时髦,来个小结,不过不铺开讲其他的事,就小结下我是如何走上JVM这条路的

Flex的不解之缘

不扯远啦,从本科开始说起,大学期间虽然Java和C也有课程教过,但是基本用得不是很多,也不是很熟,何况对于我这种逃课特别严重的人呢(大一下学期开始就很少去上课了)

07年那会Flex开始流行起来了,不过还不是很广,从市面上的书就可以知道,书店里Flex的书特别少,过了一两年才慢慢多起来,我应该算挺早玩Flex的人吧

我特别喜欢Flex那种所见即所得的感觉,想做成什么东西很快就能做起来,大学那会靠它还赚了不少钱。大三的时候还完全自研了一个Flex博客,记得有一晚上和我一大学哥们聊我这博客设计,创意,问题及解决思路等不知疲倦地聊了一个晚上都没聊完,人家都打哈欠了,哈哈。自己开发设计的感觉实在太爽了,可以给大家看看之前的博客样子,也许曾经玩过Flex的哥们还去我博客上玩过,当时还实现了两个版本,可以无缝切换

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

下面是第二个版本

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


不过那会没有R大那样的觉悟来玩虚拟机,那个时候讲真都不知道虚拟机是啥玩意,早有知今日,或许那个时候就研究actionscript虚拟机了,也不至于现在和R大差那么大一截

不过现在也特别怀恋那种感觉,其实我非常羡慕前端er们,他们应该特别有成就感吧

阴差阳错入了JAVA岗

虽说09年开始找工作的时候都是找的Flash相关的岗位,也拿到了迅雷等公司的Flash工程师岗,但是最终还是来到了支付宝(那会支付宝还没啥名气,从没在淘宝上买过东西)从事生疏的Java岗,还挺感谢当时的面试官们,没Java经验还觉得我还可行,算是我的伯乐啦,否则按照Flash现在这个发展,估计我早就转行了,也许我现在应该在做游戏?

来了支付宝从事的还是要求挺高的基础技术的工作,做框架开发,这个框架在支付宝的开发肯定都非常熟了,因为几乎所有的应用都是基于这个框架来玩的

刚开始的时候因为Java基础很差,为了能胜任工作所以我经常加班很晚,天天debug看代码,一般是晚上十一点多才回去的,整层楼就我一个人了,一年之后我对这块算很熟了,还给新来的应届生上框架的课了

这个一做就做了三四年,这三四年虽然辛苦,但是挺值得的,因为收获挺多。从Java门外汉到慢慢熟悉Java,精通Java,从框架本身再到周边的技术,包括Jboss,Tomcat,Jetty,Maven,Mina,Httpd等都比较熟了,不过这些周边技术都是问题驱动的,碰到问题再深入进去排查,排查多了就慢慢熟了,记得一年下来旺旺加我好友的人数就一千多了,慢慢地变成了查问题的老司机了

记得11年那会支付宝出了一个内存泄漏的相当严重的问题,当时鲁肃还特地请毕玄大师过来解决,后面毕大师还给我们分享了JVM相关的东西,不过那会我真是听不懂啊,就觉得毕大师好牛逼,真羡慕

大概到了13年底,那会因为公司高速发展,碰到的问题也越来越底层,JVM的问题也比较突出了,加之我们框架做升级,完全基于OSGI来做,所以碰到类加载的问题也非常明显,而我们都不是很了解其中的机制啊,碰到LinkedError等问题非常懊恼,但是这类问题特别的多,于是迫使我慢慢深入到了JVM里,第一次下载openjdk的代码,费了好大劲在mac上能调试起来,因为那个时候还不是很完善,编译要改不少地方,费了好大劲才玩起来。

JVM上路了

当时虽然Java熟了,但是C和C++不熟啊,而hotspot都是c/c++写的,这下麻烦也挺大的,又是一个全新的领域,就这样利用空余时间摸爬打滚了大半年,回到家一有时间,一有心情就看代码,调试代码,经常一调就到了凌晨两三点,有时候特别懊恼,因为有些东西实在想不通,解释不了,碰到问题玩不下去了,但是有时候又特别兴奋,就跟玩游戏一样,过了一个又一个关卡,我经常会自言自语,“噢,终于明白了,原来是这样,那那啥啥啥又是怎样的呢”,就这样不断地反问自己一些问题,把整个知识脉络给理清楚来

那个时候最痛苦的莫过于碰到问题都不知道找谁问,因为身边没有一个懂这块的人,只能自己去探索,那个经历只有自己经历过才知道有多痛苦,经常好几个问题拿起来又放下,拿起来又放下,但是最终发现还是得靠自己才能迈过去,所有感谢那些苦不堪言的经历吧,因为它们你才会变得更强

写JVM公众号的初心

我是14年年底加入alijvm团队的,走在JVM这条路上才2年,学到的也还非常有限,写公众号的文章是为了记录我和JVM的这段缘份,说不定哪天我不做JVM了呢,那再接下来谁还知道你曾经和JVM有过这么一段不堪回首的历史呢,因此记录一些东西是好的,好的经验可以帮到更多的人,让更多人少走弯路,快速解决他们的问题

最后我想说,只要你愿意付出一切皆有可能,像我这样从前端Flex走到后端Java,再到现在的底层JVM,也许后面还有Kernel,设置哪天还会去设计芯片,哈哈,有些事不要觉得自己做不到,但是不做肯定是做不到的。

对了昨天的文章点击量实在太低,这是为什么呢??既然看到了这里,能否再去看看那篇看起来烧脑的文章?哈哈

假笨说-从X86指令深扒JVM的位移操作

相关文章
|
存储 缓存 运维
JVM面试连环炮
JVM面试连环炮
104 0
|
4月前
|
存储 架构师 NoSQL
一文带你走进C++【内存泄漏】
后记 遇到这样一个问题,其实还挺有趣的,虽然是一个小点,但是梳理了一个比较完整的思考过程,希望能对小伙伴们解决相关问题带来参考和想法。
58 4
|
2月前
|
Java 调度
揭秘!线程的一生竟然如此‘波折’?从新生到消逝,看它们如何在职场(JVM)中奋斗与挣扎!
【8月更文挑战第24天】在软件开发尤其是多线程编程及面试中,掌握线程的生命周期至关重要。线程的生命周期包含五个关键阶段:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)以及死亡(Dead)。新建阶段是指通过`new`关键字创建线程对象;调用`start()`方法后进入就绪状态,等待CPU调度;获得CPU资源后进入运行状态并执行`run()`方法;因I/O操作等原因暂停执行进入阻塞状态;运行完毕或因异常退出`run()`方法后进入死亡状态。理解这些状态及其转换有助于编写高效稳定的多线程程序。
26 1
|
4月前
|
存储 Java 程序员
老程序员分享:Java虚拟机详解(九)
老程序员分享:Java虚拟机详解(九)
18 0
|
5月前
|
存储 监控 安全
21个 JVM 技术点详解(附面试解答)
以上V哥给大家详细介绍了 JVM 中涉及的21个点,全网还没有针对 JVM 这样来梳理的内容,希望对你深入了解 JVM 有一定帮助,另,V 哥给大家推荐一本《深入 JVM 虚拟机》的书籍,可以作为工具书使用,高阶的 Java 程序员几乎人手一本。今天的分享就到这里,任何疑问欢迎与 V 哥一起交流,畅谈 Java 人生。
|
5月前
|
安全 Java 程序员
牛皮了!八年美团大佬耗时3月竟在写《java虚拟机并发编程》
除了咖啡因,我想没有什么能比写出一段执行速度飞快的代码更能令程序员们兴奋了。然而我们如何才能满足这种对计算速度的渴求呢?诚然,摩尔定律可以帮我们解决部分问题,但多核处理器才代表了未来真正的发展方向。
|
监控 算法 Java
后浪,谈谈你对jvm性能调优的理解
后浪,谈谈你对jvm性能调优的理解
163 1
后浪,谈谈你对jvm性能调优的理解
|
存储 负载均衡 算法
神操!精选JVM垃圾回收机制全面分析,聊聊你眼中的JVM
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
|
存储 算法 Java
【直击面试】JVM这些面试题你都会了吗
查漏补缺JVM面试题 👀小提示:有些干,谨慎食用!!!!
【直击面试】JVM这些面试题你都会了吗
|
存储 运维 算法
Java后端开发三年的程序员竟然还被JVM难住!果然JVM面试是有套路的!
JVM是面试中必问的部分,本文通过思维导图以面向面试的角度整理JVM中不可不知的知识。
146 0