话题编程语言 › Go

编程语言:Go

关联话题: Golang

一次 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 并发基础库,扩展以及三方库的使用介绍和技巧。

Golang 问题排查指南

当我们收到线上服务的报警,如何正确的处理?当遇到莫名的性能问题,如何定位到 RootCase ?线上问题诊断总是困难重重,但是我们可以通过成熟的方法论和工具链来帮助我们迅速定位问题。这里根据我们内部的实践和大家做一个分享。

如何收集 Go 实时覆盖率

接触过 Go 的同学知道,官方没有提供集成测试覆盖率的收集方案。针对集成测试覆盖率的需求,七牛云于 2020 年开源了一款工具 Goc (https://github.com/qiniu/goc) —— Go 集成测试覆盖率收集利器,能很好地解决这个问题。

Go+ ClassFile 原理与实战

本期公开课内容分上下两部分,第一部分是介绍 ClassFile 的原理,第二部分是实战环节,我们会利用 Go+ 的 ClassFile 做一个语法上类似于 Matlab 的画图引擎。

这也是公开课中的第一次实战课程,我们希望借助这种方式,帮助大家从零开始利用 Go+ 尝试制作具备实用功能的项目,通过实战更好的理解 ClassFile 的特性。

一种命令行解析的新思路(Go 语言描述)

本文通过打破大家对命令行的固有印象,对命令行的概念解构后重新梳理,开发出一种功能强大但使用极为简单的命令行解析方法。

Golang 单元测试实践

软件开发离不开测试,测试是保证代码质量的有效手段。

揭秘!用标准Go语言能写脚本吗?

Go作为一种编译型语言,经常用于实现后台服务的开发。由于Go初始的开发大佬都是C的老牌使用者,因此Go中保留了不少C的编程习惯和思想,这对C/C++ 和PHP开发者来说非常有吸引力。作为编译型语言的特性,也让Go在多协程环境下的性能有不俗的表现。但脚本语言则几乎都是解释型语言,那么Go怎么就和脚本扯上关系了?请读者带着这个疑问,“听” 本文给你娓娓道来~

无恒实验室联合GORM推出安全好用的ORM框架-GEN

数据库操作是大多数程序员必不可少的工作, GORM 作为一个拥有 25k star 的项目已经是 Go 语言操作关系型数据库的首选。由于 GORM 中提供了很多 interface{} 形式的参数,这让程序员很容易误用,导致线上项目存在 SQL 注入的风险。

Golang死信队列的使用

系统开发过程中涉及到任务执行超时的问题,大家都知道一旦任务执行超时,任务状态没法自动更新,任务状态没有更新用户就会一直等结果,这样既没法继续重复执行超时任务用户体验也不好,因此需要解决下超时任务的问题。

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.123.4. UTC+08:00, 2024-04-20 12:30
浙ICP备14020137号-1 $访客地图$