前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我的 Java 转 Go 之路

我的 Java 转 Go 之路

作者头像
roseduan
发布2021-07-28 17:50:08
8460
发布2021-07-28 17:50:08
举报
文章被收录于专栏:roseduan写字的地方

从毕业到现在已经接近两年了,在这段时间里,我日常开发都是使用的 Java,因为大学那时候自学的是 Java,然后毕业找到的工作也是做 Java 开发的。

现在做 Go 其实也没多久,但还是想把自己的一些经历和学习经验都记录下来,给有需要的朋友,要是能够帮到你就更好了哦!


其实 Go 在这几年一直都挺火的,毕竟是 Google 的亲儿子,又凭借着 docker 和 k8s 这两大杀器,自身又有一些相对于其他语言的优势(例如并发处理、通道)。

而且近几年 Go 的工作岗位也在慢慢增加,一些大厂都逐渐使用 Go 做为开发甚至主力开发语言。

去年 6 月份的时候,我可能是闲着没事干,就在网上订阅了一个 Go 语言的小专栏,然后跟着学了一些,这算是开启了自己的 Go 学习之路吧。

当然平时还是以工作为主,所以那时候学习 Go 仅仅是出于兴趣,并没有要打算转行到 Go,学习起来也没啥压迫感,挺慢的。

学习的方式很简单,就是跟着专栏上的内容,照着敲代码,由于有 Java 的经验,所以基础语法知识这一块学习起来没啥压力。

我认为编程其实就是熟能生巧的东西,没啥技巧可讲的,特别是对于一些初学者来说更是如此,很多不明白的东西,自己多动手敲几遍就慢慢懂了。


几个月之后,大概是 2020 年 10 月份的时候吧,靠着自己在零碎时间的学习,Go 的大多数基础知识我算是掌握了,并且这期间我还在 Leetcode 上刷了一些题,使用 Java 和 Go 来实现,算是对基础知识的一个巩固。

这也是一个不错的经验,当你学习一门编程语言的时候,如果想要巩固一下基础语法,那么多敲敲代码,例如刷一些 leetcode 的题目就是一个很不错的选择。

我的 Github 上面记录了自己刷过的一些题,建议你学习的时候,也可以参考一下,动手实现一些常用的数据结构和算法,并且刷一些 leetcode 题目,是一举两得的事情。

我的 Github 上面的刷题记录:https://github.com/roseduan/algo-learn

我前面也推荐了一些优秀的 Go 语言相关的数据结构和算法的项目:Go 语言—数据结构和算法项目推荐,你可以选择适合自己的去练习。


在 2020 年国庆节放假前夕,我在网上看到了一个简单的数据库模型的论文,内容很简单,我很快便理解了,于是我想能不能使用 Go 来实现一下,借此更加好的巩固自己的 Go 知识。

事不宜迟,几天之后我便开始了,但是事情并没有我想象的那么简单,看起来容易,其实代码并不好写,完全不知道如何下手。

于是我查阅了其他的资料,借鉴了其他的一些项目,到 12 月初的时候,才开始写这个项目的代码。

然后整个 12 月份,我都在用 Go 写这个项目,大概一个月的时间,项目最初的版本便写完了,我将它开源到了我的 Github 上面,并且我之前也专门写过一篇文章专门来介绍这个项目:我写了一个数据库。。。

经过这一个月的项目代码实践,我自认为对 Go 算是入门了。

这也是一个很不错的经验,那便是学习的目的在于实践,如果知识只停留在理论层面,那么你对它的理解和认识一定是模糊的,一定要去实践一下,才会发现更多的为什么,才会真正搞懂自己在理论学习阶段的很多没搞懂的东西。

如果你也正在学习 Go,并且不知道有啥好的实战项目,那么强烈建议你看一下我的这个项目,这是一个很简单的数据库,我把它命名为 rosedb(我的英文名字是 Rose),Go 的大多数知识都用到了,一定会是巩固 Go 知识的一个绝佳的素材。

你可以自己先耐心的看,然后再试着自己写,或者给这个项目提交代码,完善功能。

除了我的这个项目,我还推荐了一些其他的练手项目:Go 语言入门练手项目推荐,总之,实践是非常重要的。


到了 2020 年底,我有了跳槽的想法,于是开始找工作,我在我的简历上写了 Java 和 Go 相关的东西,投递简历的时候,Java 和 Go 的岗位都有投递。

先后面了几家公司,有两家 Java 的,有两家 Go 岗位的。

在面试 Go 的时候,有一些面试官都让我介绍一下我的开源项目 rosedb,这其实说明,如果你的简历上有不错的开源项目,不管 star 数量多不多,都会是一个不错的亮点 ,因为这至少能证明你的动手实践能力、编程能力等等都是不错的。

找工作持续一个月左右,后来找到了一个 Go 开发的岗位,公司和职位我都觉得挺好的,于是面试之旅就结束了。

进入到公司实际的项目之后,才发现其实我还是有很多不懂的东西, 比如我们项目中使用到的 gRPC、GORM 等等。

于是我在阅读项目代码的时候,会结合着官方文档学习一下这些技术,也会针对一些比较重点的内容,买一些书籍结合着来看,然后在实际项目中不断踩坑历练,对于一些业务相关的基础技术就能够很好的掌握了。

现在回头来看,其实当初我并没有要转语言方向的打算,只是碰巧学习了一下 Go,然后找工作的时候恰好找到了 Go 开发岗位的工作,算是误打误撞吧。

这里也给大家提一些良心的建议,其实国内的这些互联网公司,技术总体来说还是服务于业务的,所以无论你学习的是什么技术,只要能够在业务中产生价值,让你拥有成就感,我觉得就是一件挺好的事情。

关注技术热潮不是什么坏事,但是切忌心浮气躁,看着什么火就去学什么,到头来很可能什么都学不精通,最好的便是专注于某一个领域,在精力有余的情况下,学习一点自己感兴趣的东西,这也可能也会给自己的未来增加一些不确定性。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 roseduan写字的地方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档