编程语言:Go
Go函数指针是如何让你的程序变慢的?
Go 语言的常规优化手段无需赘述,相信大家也能找到大量的经典教程。但基于 Go 的函数值问题,业界还没有太多深度讨论的内容分享。本文作者根据自己对 Go 代码的使用与调优经验,分享了 Go 的函数值对性能影响的原因以及优化方案。
如何真正写好Golang代码?
从设计、规范、陷阱到相关实现。
高德Go生态建设与研发实践
高德在构建Go生态演化过程中,已经实现了QPS从0到峰值千万的飞跃,本篇文章主要介绍在此过程中积累的一些技术决策及性能优化和重构经验。
Go Metrics SDK Tag 校验性能优化实践
Metrics SDK 是与字节时序数据库配套的用户指标打点 SDK,集成于字节内数十万服务中。其性能优化是个至关重要的议题,本文将以 Go Metrics SDK 为例,探讨对打点 API 的 hot-path 优化实践。
Go和C++通用性能优化黑魔法——PGO!
我们在进行性能优化的时候,往往会应用各种花式的优化手段:优化算法复杂度(从 O(N) 优化到 O(logN) ),优化锁的粒度或者无锁化,应用各种池化技术:内存池、连接池、线程池、协程池等。压缩技术、预拉取、缓存、批量处理、SIMD,内存对齐等等手段后,其实还有一种手段就是 Profile-Guided Optimization (PGO)。本文会介绍 PGO 的原理,以及 Go/C++ 语言进行 PGO 的实践。
Go语言进化之路:泛型的崛起与复用的新篇章
泛型编程在许多编程语言中都是一项非常强大的特性,它可以使程序更加通用、具有更高的重用性。直到Go1.18版本,Go语言才引入了泛型功能。在本文中,将会介绍这项新特性及其使用方法。
Golang高性能编程实践
go 中高性能编程是一个经久不衰的话题,本文尝试从实践及源码层面对 go 的高性能编程进行解析。
Goroutine Leaks引发的思考(Go语言)
前段时间,通过监控观察到,我们业务中的某个服务突然出现goroutine数量、堆对象数量激增的情况,作为测试人员的我们跟着开发一步一步揭开了问题的真相,同时通过这个问题的排查也引发了我们的一些思考,如果你也有遇到过类似问题,毫无头绪的时候,欢迎阅读本文,跟我一起拨开层层迷雾,找到问题真凶。
三十分钟入门基础Go
本篇文章适用于学习过其他面向对象语言(Java、Php),但没有学过Go语言的初学者。文章主要从Go与Java功能上的对比来阐述Go语言的基础语法、面向对象编程、并发与错误四个方面,能够让读者快速认识Go的相关语法与特性。
golang 实现反向代理
当我们谈到反向代理时,可以将其比喻为一个“中间人”。想象一下,你是一个用户,你想要访问某个网站。但是,这个网站并不直接向你提供服务,而是委托了一个代理来处理你的请求。这个代理就是反向代理。
你可以把反向代理想象成一个非常聪明的助手,它可以帮助你与网站进行交流。当你发送请求时,它会接收到你的请求,并将其转发给网站。然后,网站会将响应发送给反向代理,反向代理再将响应发送给你。这样,你就可以与网站进行交互,而不需要直接与网站通信。
net/http 包里面已经帮我们内置了具有反向代理能力 ReverseProxy 对象, 但是它的能力有限, 从工程能力上面还有很多自行实现。
Go module proxy at Grab
At Grab, we rely heavily on a large Go monorepo for backend development, which offers benefits like code reusability and discoverability. However, as we continue to grow, managing a large monorepo brings about its own set of unique challenges.
As an example, using Go commands such as go get and go list can be incredibly slow when fetching Go modules residing in a large multi-module repository. This sluggishness takes a toll on developer productivity, burdens our Continuous Integration (CI) systems, and strains our Version Control System host (VCS), GitLab.
In this blog post, we look at how Athens, a Go module proxy, helps to improve the overall developer experience of engineers working with a large Go monorepo at Grab.
基于Go语言的滴滴DevOps重塑之路
保证稳定性的前提下提高效率是一个很庞大的课题,整个行业甚至整个社会都在寻求最优解,希望我们的实践,能给大家带来一些启发。
从php5.6到golang1.19-文库App性能跃迁之路
本文深入浅出地分享了百度文库App服务端技术栈从PHP迁移至Go的实战经验。
3W 解析 Golang Context:用法、源码
Context 是什么?为什么要有 context?context 是怎么做的?没有context 是怎么做。
使用Go语言实现wxBot集成到消息分发平台
编写一个wxBot,利用immp做消息中转分发。
Performance bottlenecks of Go application on Kubernetes with non-integer (floating) CPU allocation
Grab’s real-time data platform team, Coban, has been running its stream processing framework on Kubernetes, as detailed in Plumbing at scale. We’ve also written another article (Scaling Kafka consumers) about vertical pod autoscaling (VPA) and the benefits of using it.