前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实现高并发更轻松!这个编程语言竟然超过了Java...

实现高并发更轻松!这个编程语言竟然超过了Java...

作者头像
Java技术栈
发布2018-10-23 15:24:17
6970
发布2018-10-23 15:24:17
举报
文章被收录于专栏:Java技术栈Java技术栈

本文作者:皓禹

曾任猎豹高级工程师、搜狐社交产品中心服务端负责人,现任区块链创业公司 CTO。文章中,他会详细介绍自己接触Golang的经历,以及Golang语言的优势。

相信有的同学看到这个标题就猜到我说的是哪个编程语言了,它就是由Google推出的Golang语言,以下是我与Golang的故事。

初识 Golang

我第一次接触 Golang 是在2014年,当时在猎豹工作,换了一个新的项目组,他们正在把基于 Java 写的核心业务用 Golang 重构一遍。

也是借着这个项目的契机,我开始学 Golang 。其实工作之后我一直在用动态语言,而开始用 Golang 这种静态语言之后,给我的编程思想带来了冲击和震撼,不夸张的说,有一种打开了另一扇窗的感觉。

如果你之前写的是 Java,就能一下感受到 Golang 的优越感了,因为 Golang 的语法更简洁、有函数式编程的特性,又不像 Java 做 OOP 那么复杂,Golang 实现 OOP 非常轻量,上手更容易,而且 Golang 非常容易的就能使程序拥有并发能力。

因为实现高并发更轻松,所以可以减少很多人力资源和服务器资源,这也是我们团队使用 Golang 重构的原因。

遗憾的是14年的时候 Golang 的第三方库不太多,所以我们自己写了一些第三方库来用,方便自己用着更顺手。

从 Golang 到区块链

回想起来,我现在能到区块链公司做自己喜欢的工作,也和当年下决心把 Golang 啃下来有很大关系。但是当年,我根本就没想过这些,也没打算把它当一个吃饭的家伙。

我只是觉得一个好的程序员不可能只掌握一门语言,而我每年都会为自己制定一个技术学习计划,当我开始思考什么最值得学,就会想起看 Golang 代码时的那种震撼,既然它能承载那么大的并发,那它的设计方式是很值得我去学习的,即使我需要去花一些时间成本,我也觉得这是值得付出的。

在15年6月的时候,我跳槽到搜狐工作了。在这做的项目规模更大,所以会直接碰到性能上的问题,而动态语言不太容易解决这些问题。于是我们决定,需要快速业务迭代的用 Python 去写,需要高并发的技术服务用 Golang 去写,陆陆续续用 Golang 实现了高并发生成器、推送、长链接服务,还有一部分 API 接口。运行速度更快,也更加节省服务器成本。

这时候我发现,Golang 的生态环境已经更成熟了,标准库和第三方库比以前丰富了很多。不需要再自己重造轮子,可以直接拿来用了。我们项目中用了文本处理的库、序列化的库、数据库连接的库、高并发 web 框架等等。

这一年,Golang 的社区也开始越来越丰富了,雨痕也开始写 Go 源码解析的学习笔记。雨痕对我的影响很深,也是我敬重的前辈,和他接触多了之后知道,他从 DOS 时期就开始写代码。所以雨痕会把操作系统层面的东西讲解的很深入,如果实践到一定程度了,发现自己掌握的理论不足以支撑自己继续往前走了,那很适合回过头来再深入看底层的这些东西。

把底层知识啃下来之后,我对于程序运行时背后发生的事情都一清二楚。比如我定义了一个变量,调用函数的时候该变量是值传递好还是引用传递好?最后这个值是分配在堆上还是分配在栈上?它是一个什么情况?这些我都了如指掌。

到了2018年,我已经做开发7年了,大公司的工作已经满足不了我的技术热情,于是我受邀加入了一家由明星团队创立的区块链创业公司,站在一个更高的视角去看待技术。

反思:Golang 需要什么样的人才

这几年,使用 Golang 的公司越来越多,BAT、今日头条、小米、京东、七牛云、滴滴打车、小米等等。Golang 在中国的影响力仅次于美国,这是在其他任何一门语言中都没有出现过的事情。

我现在自己也在招人,也和同行交流,大家普遍的一个感觉是:Golang 工程师特别难招。

我觉得最主要的原因是 Golang 的学习门槛比较高,让很多人望而却步。市面上的书籍、视频是不少的,但很多人遇到的问题是,看过了书、看过了视频,在真正写东西的时候,还是发现有一些问题没法解决,如果对 Golang 的 debug 方式不了解、对操作系统不了解的话,出现异常时会摸不到头绪,可能一个知识点就卡在这了,很多人都是在这从入门到放弃的。

所以我现在一般都是自己去培养公司需要的 Golang 人才,潜质不错的人进来之后,让他尝试用 Golang 写东西,加上我在团队里去指导他,让他逐渐成长为合格的 Golang 工程师。

当然,我一个人能带的新人是有限的,很多人也不具备这种成长环境。所以当受邀加入网易微专业的 Golang 课程团队时,我想是不是可以通过这次机会,让 Golang 这门面向未来的语言的学习门槛再降低一点,让更多人可以开始使用 Golang 并从中受益。

我不想做教条难啃的课程,让初学者又痛苦又不知道学了用在哪。所以这次课程的整体风格是更实用的,基础知识部分全程穿插代码实例,实战部分都是我曾经在公司中做过的项目的浓缩版,尽可能的给学习者还原一个在公司中写 Golang 项目的环境,在实践中更深的理解。

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

本文分享自 Java技术栈 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档