编程语言:Go
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.
单元测试3.0实践之Golang质量生态建设
本文阐述了单元测试的必要性和高德在单元测试3.0中的实践。
Go JSON 三方包哪家强?
本文作者从评判标准、功能评测、性能评测等多方面剖析三方库哪些家强,并给出了比较务实的建议。
2.3x faster using the Go plugin to replace Lua virtual machine
We’re excited to share with you the latest update on our open-source project Talaria. In our efforts to improve performance and overcome infrastructure limitations, we’ve made significant strides by implementing the Go plugin to replace Lua VM.
Our team has found that the Go plugin is roughly 2.3x faster and uses 2.3x less memory than the Lua VM. This significant performance boost has helped us improve overall functionality, scalability, and speed.
For those who aren’t familiar, Talaria is a distributed, highly available, and low-latency time-series database that’s designed for Big Data systems. Originally developed and implemented at Grab, Talaria is a critical component in processing millions and millions of transactions and connections every day, which demands scalable, data-driven decision-making.
Go 汇编详解
我们知道 Go 语的三位领导者中有两位来自 Plan 9 项目,这直接导致了 Go 语言的汇编采用了比较有个性的 Plan 9 风格。不过,我们不能因咽废食而放弃无所不能的汇编。
Golang与Java全方位对比总结
对比二者的基础语法、结构体函数、异常处理、并发编程等。