编程语言:Go
百度程序员开发避坑指南(Go语言篇)
日常工作开发中,遇到哪些坑是让你印象深刻且具有挑战的,它们是怎么产生的,我们该如何避免?
Go应用单元测试实践
本文旨在搭建一个稳定运行且维护成本低的单元测试/集成测试环境。
从真实事故出发:golang 内存问题排查指北
在日常的生产环境中,内存出现问题引起的事故通常较为严重,且排查难度较高。本文从一次日常生产中遇到的事故出发,记录了详细(痛苦)的排查过程,最终给大家总结了内存问题的常见场景,以及排查思路,希望可以帮助大家提高一些内存问题的排查解决效率。
东鸽用 Go 语言写了一个能够自动解析新闻网页的算法
输入网页文本(不需要输入 xpath),自动结构化输出标题、发布时间、正文、作者、来源等信息。
Adding the V8 CPU Profiler to v8go
V8 is Google’s open source high-performance JavaScript and WebAssembly engine written in C++. v8go is a library written in Go and C++ allowing users to execute JavaScript from Go using V8 isolates. Using Cgo bindings allows us to run JavaScript in Go at native performance.
The v8go library, developed by Roger Chapman, aims to provide an idiomatic way for Go developers to interface with V8. As it turns out, this can be tricky. For the past few months, I’ve been contributing to v8go to expose functionality in V8. In particular, I’ve been adding support to expose the V8 CPU Profiler.
贝壳Go实现的多云对接存储网关建设
本文主要介绍了贝壳存储网关的使用场景、架构设计以及稳定性建设。
Dubbo-go 优雅上下线设计与实践
优雅上下线可以分为三个角度。服务端的上线,服务端的下线,和客户端的容灾策略。
关于Go并发编程,你不得不知的“左膀右臂”——并发与通道!
并发编程,可以说一直都是开发者们关注最多的主题之一。而Golang作为一个出道就自带“高并发”光环的编程语言,其并发编程的实现原理肯定是值得我们深入探究的。本文主要介绍Goroutine和channel的实现。
一次 Go 使用嵌入式 Rust 库的踩坑实践
故事发生在一个内部项目上,这个项目有 Go 和 Rust 两个部分,其中 Rust 库作为一个存储组件被 Go 的业务部分依赖着。出于种种原因,两个部分需要作为同一个进程来运行,中间有一层 C FFI 接口作为理想与现实的桥梁。
Rust 部分首先将使用到的 Library 的接口和结构使用另一个小小的 cdylib [1] shim 项目封装一下,并通过这个项目生成 Rust 库的编译产物一个动态链接对象和 C 的接口定义。再基于 C 的定义写一个 Go 的 SDK 给上层使用。单独的左边 Go 或者右边 Rust 项目都不够刺激,本文主要集中在中间那一团麻花的部分上,也是我 too young too simple 掉了很多头发的地方。
Golang性能调优实战
企点电话作为对时延要求非常高的业务场景,必须要保证服务的高性能和稳定性,随着企点电话业务的发展,暴露出了许多go服务性能上的问题,本文结合企点电话在go语言方面的性能调优经验,最终总结出一份性能调优最佳实践。
带你彻底击溃跳表原理及其Golang实现!(内含图解)
跳表原理及其Golang实现~
如何在golang代码里面解析容器镜像
本文简单介绍下如何在代码中解析一个容器镜像。
Golang 常见设计模式之选项模式
熟悉 Python 开发的同学都知道,Python 有默认参数的存在,使得我们在实例化一个对象的时候,可以根据需要来选择性的覆盖某些默认参数,以此来决定如何实例化对象。当一个对象有多个默认参数时,这个特性非常好用,能够优雅地简化代码。
而 Go 语言从语法上是不支持默认参数的,所以为了实现既能通过默认参数创建对象,又能通过传递自定义参数创建对象,我们就需要通过一些编程技巧来实现。对于这些程序开发中的常见问题,软件行业的先行者们总结了许多解决常见场景编码问题的最佳实践,这些最佳实践后来成为了我们所说的设计模式。其中选项模式在 Go 语言开发中会经常用到。
深入理解Golang混合写屏障GC回收机制
本章介绍了Golang中内存GC垃圾回收机制的演进迭代。发现GC的回收机制是一直在不断的优化,其目的是为了提高GC回收的性能。
How We Saved 70K Cores Across 30 Mission-Critical Services (Large-Scale, Semi-Automated Go GC Tuning @Uber)
As part of Uber engineering’s wide efforts to reach profitability, recently our team was focused on reducing cost of compute capacity by improving efficiency. Some of the most impactful work was around GOGC optimization. In this blog we want to share our experience with a highly effective, low-risk, large-scale, semi-automated Go GC tuning mechanism.
Uber’s tech stack is composed of thousands of microservices, backed by a cloud-native, scheduler-based infrastructure. Most of these services are written in Go. Our team, Maps Production Engineering, has previously played an instrumental role in significantly improving the efficiency of multiple Java services by tuning GC. At the beginning of 2021, we explored the possibilities of having a similar impact on Go-based services. We ran several CPU profiles to assess the current state of affairs and we found that GC was the top CPU consumer for a vast majority of mission-critical services. Here is a representation of some CPU profiles where GC (identified by the runtime.scanobject method) is consuming a significant portion of allocated compute resources.
Golang 并发编程指南
Golang 并发基础库,扩展以及三方库的使用介绍和技巧。