#Go语言#我被迫选择了Go语言,但是现在发现它真的“很香”
(此处已添加圈子卡片 , 请到****客户端查看)
2018年6月我从工作了5年的公司离职了 , 离职的原因很简单:想出去看一看 , 看外面的公司都在做什么业务?使用什么技术?
在离职的前一周 , 我拿到了华为、联通和我现在所在公司的offer , 之所以没去华为和联通是因为它们都不是互联网公司 , 我喜欢的是互联网公司那种开放的氛围 , 这种开放的技术氛围更能让人获得更快的成长 , 接触到最前沿的技术 。 而我最终选择的公司就是这样的一家公司 , 技术氛围好、业务模式新颖 。
本文插图
进入这家互联网公司以后 , 开始我接触的当然是Java的一个项目 , 而且是一个只有需求还没有代码的新项目 。 从需求分析到架构设计、模型设计、代码编写都基本是我一个人完成 。 差不多2个月的时间这个Java的项目就开发完成并上线 , 后续的工作就是一些简单的维护和一些新的需求以及一些功能的调整 。
进入公司三个月的时候 , 我的Team Leader扔给我一个Go语言项目 , 当然这个项目我之前已经看到过 , 但是当时我并不懂Go语言 , 所以Team Leader并没让我做相关的开发工作 。 现在因为人员的变动我必须要接手这个项目 , 所以我开始学习Go语言 , 也同时开启了我的第二计算机语言之路 。
本文插图
初次接触Go语言的时候 , 我并没有一开始就去找相关的资料去学习 , 而是开始看TL给我的这个Go项目 , 让他给我讲解了这个项目的主要业务逻辑 , 包括入口类方法、调用链 , 弄清楚这些我就开始看这个项目 。 其实如果接触过其它计算机语言的话 , 阅读Go项目一点问题都没有 。 即使Go中的数据类型、方法入参、返回值的写法跟我们以往的语言不一样 , 但并不妨碍你理解这门语言的特性 。 尤其是接触过JavaScript语言的开发人员来说 , 更容易接受Go语言 , 因为它的方法和参数定义和JavaScript对于方法和参数的定义很像 。 例如:都是通过var来定义参数 , 方法都是以function定义 , 当然JavaScript是一门弱类型的语言 , 它没有像Go语言的int、int32、int64、string等强类型语言具有的数据类型 , 但是他们的某些关键字和写法与Go语言很相像 , 熟悉JavaScript的开发者天然的对Go语言有好感 。
本文插图
【#Go语言#我被迫选择了Go语言,但是现在发现它真的“很香”】
我用两天的时间熟悉完了这个Go项目 , 在熟悉项目的过程中我当然也对它的语法有了一定的了解 。 然后我就开始接受TL给我的新需求并开始编码工作 。 我“照猫画虎”式的完成了一个个的新需求 , 在编写代码的时候 , 我会去查资料 , 例如:Go中的strconv中的各种方法 , 凡是你在Java中关于String操作的方法都能在Go语言找到 , 如果找不到 , 那就再找一遍 , 如果还是找不到 , 那就自己实现一个 。 通过一边编写Go语言代码一边查相关资料 , 我很快对这门语言了解的更深入了 , 我知道它天生就是为分布式高并发系统设计的语言 。 同样的服务器配置 , Go语言能轻松实现4000QPS的业务逻辑 , 但是用Java就不太容易 , 需要做各种性能用户 , 这都得益于Go语言的协程设计 。
协程不同于线程 , 协程是语言本身的机制 , 靠语言自身的机制去做多任务的调度 , 而线程并不是语言的特性 , 它需要靠容器来调度 。 例如我们常见的Java中的多线程 , Java中的多线程是要靠tomcat、jetty等web容器去调度 , 所以多线程的性能取决于容器的调度性能 。 而容器的调度性能我们开发者很难去优化 , 就如一台4G8G的服务器 , tomcat跑3000的QPS都很吃力(不是简单的输出hello word) , 而同等配置下 , Go语言跑5000的QPS都不费力!
- 「旅行百事通」曾斥4亿巨资建造,现因违建被迫拆除,陕内国际级免费3A景区
- 『舰载武器精选』被迫还美国贷款,乌克兰军队粮食出现断顿,士兵叛变,大疫情来袭
- 『轻拈朵落花』美军被迫撤离重要基地,一觉醒来天都变了!叙军一举夺回多个油田
- [英国英鸟]上百尸体被迫异地火化,火葬场都撑不住了!意大利死者激增
- #潜艇解码#2名学员自杀,参谋部被迫放松隔离要求,美空军学院疫情期间被隔离
- 【加拿大必读】被迫上街乞讨,只因为疫情下没游客,泰国1000头大象将饿死
- 【手机中国】华为又一项黑科技即将来临:可即时翻译任何动物语言
- [动物]兽语十级:华为愚人节成功研制出“动物语言翻译机”
- 『加拿大必读』泰国1000头大象将饿死,被迫上街乞讨,只因为疫情下没游客,
- [汽车圈]全球四大国际车展已延期或取消,巴黎车展被迫取消传统展会