本文翻译自:What’s false sharing and how to solve it (using Golang as example)
译文在解释伪共享(false sharing)之前,有必要简要介绍一下 CPU 架构中缓存是如何工作的。
CPU 缓存中的最小单位是缓存行(cache line)(如今,CPU 中常见的缓存行大小为 64 字节)。因此,当 CPU 从内存读取一...
阅读全文…
slog 日志包是 Go 语言中的一个结构化日志库,旨在提供一个简单而强大的日志系统。因为标准日志库 log 过于简陋,社区中经常有人吐槽,Go 官方也承认了这一点,于是 Go 团队成员 Jonathan Amsterdam 操刀设计了新的日志库 slog,其放在 log/slog 目录中。
slog 设计之初大量参考了社区中现有日志包方案,相比于 log,主要解决了两个问题:
log 不支持日志级别。
log 日志不是结构化的。
这两个问题都能在 slog 中得到解决,本文就来带大家详解 slog 用法及设计。
阅读全文…
如果你做过 Java 开发,那么想必一定听说或使用过依赖注入。依赖注入是一种软件设计模式,它允许将组件的依赖项外部化,从而使组件本身更加模块化和可测试。在 Java 中,依赖注入广泛应用于各种框架中,帮助开发者解耦代码和提高应用的灵活性。本文就来介绍下什么是依赖注入,以及在 Go 语言中如何实践依赖注入,提高 Go 项目的开发效率和可维护性。
阅读全文…
计算机科学中只有两件难事:缓存失效和命名。—— 菲尔·卡尔顿(Phil Karlton)。
在编程世界中,选择正确的命名约定是打开可读和可维护代码大门的重要途径。在使用 Go 语言开发大型项目时,文件命名是构建清晰项目结构的关键一环,一个合理的文件命名规范不仅能提高开发效率,还能降低团队协作中的沟通成本。
在这篇博文中,我们将深入探讨 Go 中命名的最佳实践。
阅读全文…