编程语言:Go
从 Java 到 Go:面向对象的巨人与云原生的轻骑兵
Go语言以“少即是多”为设计原则,通过编译为单一静态二进制文件、25个关键字、接口组合、显式错误处理及轻量级并发模型在云原生领域占据主导。与Java相比,Go的代码组织以包为单元,变量声明灵活,方法函数支持多返回值,接口实现隐式。Go的静态类型和严格类型转换确保代码安全,引用类型如切片、映射和通道简化了数据处理。错误处理采用显式错误返回和panic/recover机制,强调直接处理错误而非依赖异常。
Automating Efficiency of Go programs with Profile-Guided Optimizations
Profile-guided optimization (PGO) 通过运行时数据指导编译器优化,提升代码性能。Uber 将 PGO 集成到持续优化框架中,通过日常数据收集、服务注册、CI 测试和部署,显著减少了资源消耗。针对编译时间增加的挑战,Uber 开发了预处理工具,大幅缩短了编译时间。PGO 在 Go 语言中的支持从 v1.20 开始,通过优化如函数内联和代码布局,实现了 4% 的性能提升,减少了 24,000 个 CPU 核心的使用。
1 行命令引发的Go应用崩溃
这篇文章分析了Go编译时插桩工具导致go build -race竞态检测产生崩溃的原因。
从Java到Go:“哭笑不得”
首先,Java 的语法是相对严谨的,类、接口、继承、抽象……一大堆的关键字让你在写代码时感觉像是在参加一场语法考试。而 Go 的语法则是简约得让人惊讶。你会发现, Go 里没有类的概念,只有结构体(struct)和接口(interface)。这让很多 Java 的 coder在初入 Go 时感到无所适从...
编译时插桩,Go应用监控的最佳选择
本文讲解了阿里云编译器团队和可观测团队为了实现Go应用监控选择编译时插桩的原因,同时还介绍了其他的监控方案以及它们的优缺点。
理解Go协程调度的本质
golang的一大特色就是goroutine,它是支持高并发程序的重要保障;通过 go 关键字我们就能轻易创建大量的轻量级协程,但它和我们认知中的线程有什么区别呢,轻量在哪里,具体是如何进行调度的.....
Go1.23 糖果 —— iter 迭代器
@李天鸣:本文介绍了 Go 1.23 引入的 iter 迭代器,然后通过案例展示了基础的使用以及函数式的方式,最后简述了实现原理与两种迭代模式。从代码的可读性来看,迭代器增加了代码的理解成本。不过从“对象”的角度来分析,迭代器其实有助于代码封装维护,因为它将分散的逻辑内聚到一起,并且提供了统一的消费模式。
为Go应用无侵入地添加任意代码
这篇文章旨在提供技术深度和实践指南,帮助开发者理解并应用这项创新技术来提高Golang应用的监控与服务治理能力。在接下来的部分,我们将通过一些实际案例,进一步展示如何在不同场景中应用这项技术,提供更多实践启示。
解析Go切片:为何按值传递时会发生改变?
这篇文章简单明了地揭示切片按值传递时发生变化的原因。我们通过一些简单的示例,帮助大家理解这一现象是如何发生的,以及如何在实际开发中避免相关的坑。
万字长文讲透Go程序性能优化
性能分析和优化是所有软件开发人员必备的技能,也是后台大佬们口中津津乐道的话题。
Golang 作为一门“现代化”的语言,原生就包含了强大的性能分析工具 pprof 和 trace。pprof 工具常用于分析资源的使用情况,可以采集程序运行时的多种不同类型的数据(例如 CPU 占用、内存消耗和协程数量等),并对数据进行分析聚合生成的报告。trace 工具则关注程序运行时的事件(例如协程状态切换,GC 的开始和结束、系统调用等等),常用于分析延迟、阻塞和调度等问题。掌握了这两个工具就足以满足大部分 Golang 程序的性能分析需求。
本文将从使用方法、原理和实践三个方面分别介绍 pprof 和 trace 工具。读完本文后,相信你也可以更全面地掌握 pprof 和 trace。
一文带你看懂Golang最新特性
经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。
那些年,我们在Go中间件上踩过的坑
作者总结了过去在Go中间件上踩过的坑,这些坑也促进了Go中间件的完善,希望大家学习本文后,不犯同样的错误。
One Billion Row Challenge in Golang - From 95s to 1.96s
In the One Billion Row Challenge, the task is to write a program capable of reading an 1-billion-line file (with around 13GB), process and aggregate temperature readings from various weather stations,…
面向OpenTelemetry的Golang应用无侵入插桩技术
文章主要讲述了阿里云ARMS团队与程序语言与编译器团队合作研发的面向OpenTelemetry的Golang应用无侵入插桩技术解决方案,旨在解决Golang应用监控的挑战。
Golang 单元测试框架 gocheck 使用介绍
gocheck是一个比较健全且简单的Golang单元测试框架,它在Golang官方的testing package基础上提供了丰富的功能和断言方法。使用gocheck可以验证程序的正确性,保持机器状态不变,并且测试独立性强。其中的Assert断言方法可以根据预期值检验接口返回值是否匹配,如果不匹配则记录错误。gocheck还提供了丰富的检查器方法,如全等校验等。
知乎社区核心业务 Golang 化实践
知乎社区选择使用Golang重构核心业务,包括会员和评论功能,以解决Python在运行效率和维护成本方面的问题。改造后,他们节约了80%的服务器资源,多人开发和项目维护成本大幅下降。Golang作为新项目的推荐语言,具备并发优势、完善的生态系统和部署开发效率。同时,知乎还完善了内部的Golang基础组件。