首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言初窥

Go语言初窥

作者头像
sparkle123
发布于 2021-01-26 06:47:56
发布于 2021-01-26 06:47:56
51500
代码可运行
举报
运行总次数:0
代码可运行

资源消耗少

Go与C/C++消耗的CPU差距不大,但由于Go是垃圾回收型语言,耗费的内存会多一些。 拿Go与同为垃圾回收型语言的Java简单比较一下。

Java当年诞生时最大的卖点之一是“一次编写,到处运行”。这个特性在20年前很棒,因为市场上几乎没有虚拟化解决方案。但是到了今天出现了Docker之类一系列跨平台工具,这种卖点可能被看做一种短板,主要原因如下:

  • Java需要启动JVM进程来运行中间代码,程序需要预热
  • 堆内存较大时,垃圾回收器需要进行深入调优,但在一些对实时性要求高的场景下,可能无解,Full GC一触发就是灾难
  • JDK体积庞大, Spring Boot jar包体积大,在微服务架构下问题最突出
  • Spring全家桶越来越重,导致使用全家桶的应用,性能较差

抛去JVM启动和预热时间,运行一个最简单的HTTP程序,与Go对比,Java在CPU上的消耗多约20%,内存上的消耗约高两个数量级。

为并发IO而生

开发过网络库的同学可能都知道Unixepoll调用,如果了解Windows应该听说过IOCP,这两种接口分别对应网络的Reactor和Proactor模式。

简单来说,前者是同步的事件驱动模型,后者是异步IO。不论使用任何语言只要涉及到高性能并发IO都逃不过这两种模式开发的折磨——除了Go

一般来说一个服务进程包含main、日志、网络、其他外部依赖库线程,以及核心的服务处理(计算)线程,其中服务线程可能会按CPU核数配置开启多个。

go创建的goroutine相当于将IO读写和事件触发拼接起来的一个容器,消耗的内存非常小,所有goroutine被Go自动调度到有限个数的线程中,运行中切换基本是使用epoll的事件机制,因此这种协程机制可以很迅速启动成千上万个而不太消耗性能。

工具集统一

Go作为工程语言而设计,即使一个团队有多种风格的开发者,他们的流程和产出最终都需要尽量保持一致,这样协同开发效率才会高。为了保证各方面的统一,Go提供了多种工具,安装以后执行go命令就能直接使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go run:直接运行go代码文件

go build:编译到本目录

go install:编译并安装到统一目录,比build快

go fmt:格式化代码,写完代码一定要记得用

go get:下载并安装包和依赖库

go mod:包管理,1.11版加入

go test:运行单元测试

go doc:将代码注释输出成文档

go tool:实用工具集,包括静态错误检查、测试覆盖率、性能分析、生成汇编等等

运维性好

Go是一种适应分布式系统和云服务的语言,所以它直接将静态编译作为默认选项,也就是说编译之后只要将可执行文件扔到服务器上或者容器里就能没有任何延迟地运行起来,不需要任何外部依赖库。 Go的项目只要在编译时修改参数,就能交叉编译出其他任意支持平台所需的二进制文件。比如在macOS上开发,当需要在linux服务器上测试则使用如下命令编译:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GOOS=linux GOARCH=amd64 go build ./...
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
腾讯云学生机——2M1H1G只需1.02元
腾讯云成都机房上线,折扣价2M1G1H只需65.02元。之前站长朋友用的学生机,现在可以直接领新购券,新购一台成都的2M带宽的机器。
人工智能谁与争锋
2019/07/23
11.1K0
腾讯云学生机成都新服2M1H1G只需1.02元
腾讯云成都机房上线,折扣价2M1G1H只需65.02元。之前站长朋友用的学生机,现在可以直接领新购券,新购一台成都的2M带宽的机器。 原来的linux硬盘只有20G,现在新购的机器都是50G,所以需要大存储的及时领取新购劵换机 活动说明: 购买本优惠套餐后,在学生认证有效期内,每月1日前可到本页面领取一次续费代金劵,继续享受优惠价格,若连续90天未到此页面领取代金券,将被认为主动放弃领取资格,不再提供优惠政策。若您希望长期享受优惠,请持续续费。拥有优惠资格的用户,活动期间只提供一次更换
Youngxj
2018/06/06
8.5K0
会选择合适的域名和空间/服务器
现在已经不像之前,就那么几种域名后缀,现在域名后缀有几百种,各种域名后缀的出现,对搜索引擎来说,是完全没有压力的,对于他们来说,任何域名的后缀,最出来的都是网站,那么只要网站可以快速的打开,能被搜索引擎的蜘蛛抓取内容,能及时的更新原创内容,那么增加网站的权重,增加收录的及时性,就完全没有问题。 从上面的一段话可以看出来,域名已经不太重要了,之前经常在群里和大家聊天,给你 QQ.COM 或者 baidu.com,也许你也做不出来这么牛逼的网站,所以,域名只是一个标识。但即使如此,在选择域名的时候,还是要注意几
沈唁
2018/05/24
6.4K0
容器化部署博客(3)—— 更换服务器,5分钟完成项目迁移
我的服务器是之前花了九百多一年续费的一台阿里云的 1U1G 的云服务器,9月份就要到期了,所以趁着618的时候拼团了一台 1U2G 的服务器,今天就做了一下博客项目迁移,整个迁移过程大约只花了5分钟就完成了,虽然还没有达到我理想中完全自动化构建和部署的状态,但是这个迁移效率已经让我感觉很满意了。
Hopetree
2022/09/26
6610
2775元腾讯云服务器代金券领取及使用方法详解
腾讯云服务器的优势就不用我多说了,背靠腾讯这棵参天大树,10亿微信用户+10亿QQ用户的极限稳定性能检验,相信打算买服务器的朋友对于腾讯云服务器都是信心满满地。既然对于腾讯云服务器产品没任何问题,那接下来应该关心的就是价格方面啦!谁都想用更优惠的价格买到更好的云服务器,这里给大家介绍一个免费获得优惠的好方法,可以点击这里领取2775元腾讯云服务器代金券
尊托云数
2018/10/07
4.7K0
2775元腾讯云服务器代金券领取及使用方法详解
腾讯云双十一拼团:上云抢购云服务器的超值攻略
腾讯云凭借其卓越的技术实力和广泛的服务范围,已成为众多企业和开发者的首选云服务平台。为了回馈用户的信任与支持,腾讯云特别推出了双十一拼团活动,提供上百款折扣商品和低门槛拼团机制,让每位用户都能以超值的价格享受高质量的云服务。活动期间,丰富的奖励机制和高性价比的云产品将进一步助力业务的快速发展。
江湖有缘
2024/11/17
4.1K0
腾讯云双十一拼团:上云抢购云服务器的超值攻略
超级 APP 开发的生态构建与运营策略
微信作为典型的流量聚合型超级 APP,通过 "社交 + 服务" 的双轮驱动构建生态:社交场景沉淀用户关系链(日活超 12 亿),服务场景通过小程序生态接入 100 万 + 第三方应用。这种模式的本质是通过高频场景(聊天)带动低频服务(生活缴费),某餐饮品牌通过微信小程序实现 "社交分享 + 到店消费" 闭环,订单量提升 40%。
Byte-me
2025/06/26
1510
超级 APP 开发的生态构建与运营策略
五十元内的轻量服务器:玩客云折腾速通指南(一)
无论你是想要一台低成本的服务器,还是对类似的嵌入式设备感兴趣,接下来这几篇文章都会告诉你如何让玩客云更稳定、更易维护,以及躲开折腾的时候会遇到麻烦和故障。
soulteary
2025/01/08
1.9K0
五十元内的轻量服务器:玩客云折腾速通指南(一)
Python爬取糗事百科所有段子
D:\Python\venv\Scripts\python.exe D:/Python/venv/test8.py
py3study
2020/01/07
1.6K0
《增长黑客》节选与笔记[通俗易懂]
这本书涉及了很多具体又贴合现实的互联网产品问题,即使你是非专业人士,也应该读一读,了解开发者是如何把你当猫耍的,以便你更好地认识一些套路,解锁,为选择手机软件或者云端应用擦亮眼睛!
全栈程序员站长
2022/08/27
7.9K0
盘点python工具包并优化pip下载加速
开源地址:https://github.com/wolfbolin/BiliUtil 安装命令:pip install BiliUtil
全栈程序员站长
2022/09/15
5.7K0
盘点python工具包并优化pip下载加速
上帝掷骰子吗–量子物理史话
大家好,又见面了,我是你们的朋友全栈君。   上帝掷骰子吗–量子物理史话   第一章黄金时代   一   我们的故事要从1887年的德国开
全栈程序员站长
2022/06/26
7.5K0
相关推荐
腾讯云学生机——2M1H1G只需1.02元
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入[游戏服务器] 腾讯云官方交流站
游戏服运维小技巧 常见问题齐排查
加入数据技术工作实战群
获取实战干货 交流技术经验
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档