我的java学习之路

我的java学习之路

缘起

五年前开始接触java,中间断断续续从事了广告投放、社区app服务、云服务3个行业的服务端开发,在java这个大生态系统,web框架、中间件、大数据这几个名词贯穿了这几年的职业生活

转型期

说实话,第一次跳槽的时候,并没有想着往java方向转型,和大多数“迷茫”的年轻人一样,我只是知道现在的工作不是自己期待的
偶然的机会得到了一家中型互联网公司的offer,然后我接受了这份offer,当时根本没有考虑待遇、发展、职业发展的问题,这也为一年后的再次跳槽埋下了伏笔
当时的团队对于新人的培养,以放养为主(这可能也是目前大多数公司的培养方式),从零开始学java,看项目的代码,看前面的“新人”留下的学习分享,看关于广告投放业务的wiki,还有每个计算广告从业者必看的“计算广告学”
这一年,学会了guava cache的简单使用,学会了java集合库HashMap的简单使用,了解了一点spring,其他。。。什么也没学到

成长期

一年后,部门整体绩效很差,每周要做的事情一天搞定,我接受不了这样的现实。。。嗯嗯,好吧,更多的因素是,我存不下钱来,还看不到希望。。我跳槽了第二家社区app服务公司,另外一家中型互联网公司,业务更具互联网特质
新人的培养模式是放养为主,节奏却快了很多,以周为单位完成小任务,熟悉系统之后,逐步上手更大的任务,在这里,数据量不再是之前的mysql存个数据完事,一套完整的大数据系统,存储、分析、优化,要接触业务开发、要了解大数据栈、要前端的开发,还要做架构的优化
这三年里,接触了大数据栈,了解了整个web技术栈,开始了一些较深层次的技术栈学习,借用“痛并快乐着”形容这段经历,再合适不过

再次转型期

一年前,跳槽云计算行业,这次转行完全出乎意料,转行之后,也是出乎自己的意料,行业的不同,对技术栈的理解和使用是完全的不同,前几年的开发,相对注重研发体验,在效率和流程矛盾时,流程服务于效率,而在目前的工作中,流程至上
新人培养上是彻底的放养,对于有工作经验的同学,“可能也不是一件坏事”,技术栈方面,web框架使用了比较非主流的web框架akka,彻彻底底的使用“自研”框架,为了解决项目中比较难以处理的资源有效管理问题,“自研”了工作流引擎

小结

选择大于努力

项目决定了工作下限,团队决定了视野的开阔
长远发展,项目>团队>收入>公司
不过,好的项目、团队,收入不会差

web栈

前端的知识是web开发的极大补充,才能对目前的仍然主流的基于servletweb栈有较为直观而深入的认识,厘清页面和请求之间关系
前端作为入口,能更好的衍生理解互联网的发展过程,以及相关使用的技术

java栈

  • jdk集合库
    集合库是java开发打交道最多的工具库,jdk是我读过的最好的代码,目前没有之一,如linus所说rtfsc
  • jvm
    GcRoots是jvm中最重要的主线,是jvm的起点,也是jvm的终点
  • 多线程
    内存模型很重要,由此可以展开,伪共享、线程同步
    aqs是必修的hard级别的课程,必读,难度很大,典型的高投入长周期回报
  • 缓存
    "封神"的redis,有些过誉了,无脑吹让人很烦
    缓存穿透以及缓存雪崩的处理,还有一致性问题如何处理
  • kafka
    通过分区加IO优化实现高并发写,broker间isr同步
    跟其他mq的功能对比
  • mysql
    B+数据结构,以及由此而来的好处
    sql的优化,不过,没花时间看的,实际用的也少,是个盲点

大数据

日常使用为主,主要的是hbase、hive、spark,API用好已经占用了很多的时间,核心的点是底层数据模型,花的时间不够

反思

少即是多

去年deno更新的时候,国内“调皮”的玩家刷屏技术更新太快,知乎上跟帖 不要在更新了,学不动了,这是个技术不断更新迭代的时代,老的技术还没啃,新的框架又在开发了
这种趋势会形成从业者的不断焦虑,有太多的东西要学了,太多不了解的东西,过去的几年工作中,从最开始的尝试各种不同的新技术,在学会了几个demo之后,心里衍生出一丝自我安慰,似乎这个技术我已经掌握了
我花了很多时间在接触新技术上,结果大多数浅尝辄止,一个月之后,只留下自己曾经调用过某个api的印象,一直很忙碌,却没有成就,一直在学习,却没有成绩
其实,少即是多,做事情、学技术,需要聚焦,然后深入一层分析,在没有读完官网guide之前或者一本相关的书籍之前,是不能称之为“掌握”的,只是个调用api工具人

注重基础积累

“没有银弹”不仅适用于软件开发,也适用于自我提升,再高大上的技术栈也是建立在底层的if else之上,各种框架和库给开发带来了巨大的效率提升,同时也带来了隐藏在背后的复杂性
如今快餐文化盛行,在前几年的工作中,自己大多数的时间胡乱分配在了很多“流行”的技术点上,无法形成有效的积累,概念没有有效串联起来,这是个很大的问题,经历不起一个为什么的追问

不要着急读源码

在过去学习一个新的技术时,我犯过两个较大的错误:读源码和想直接读源码
这是很多人都会踩的坑,开始的时候,追求快速上手,阅后即焚,不再深究;在经历几次外部的挫折,如“面试”和“被面试”,就想去硬读源码,然后深受打击,放弃深究
在决定读源码之前,需要明确自己读源码的目标是什么,需要了解源码的基础组成,然后再做有选择的阅读
在真正开始之前,大可以读读别人的总结或者博客,站在“巨人”的肩膀之上,将行深至远

知识需要闭环

所有的学习方法都在告诉自己“闭环”的重要性,而“闭环”这个工作却是最难的
“闭环”意味着总结,意味着理念的提升,也是学习路程中,最艰难却重要的一段
总有各种各样的干扰来打断自己的闭环流程,主观或者客观,而回望过去,印象最深刻、理解最透彻的,往往都是经历了闭环

培养好奇心

好奇心是打开新世界的钥匙,是功利性另一面
功利性学习非常有针对性,能够短期给自己带来较大的收益,随之而来的问题是基础不稳,印象不深刻,大多数是他人的看法,他人的理解,不是自己的东西
好奇心能够解决这些问题,达到知其所以然的目标,凡事尽量多问一个为什么,形成自己的理解,成为自己的知识

写的很长了,补充一点,技术是工具,不是目的

你可能感兴趣的:(我的java学习之路)