• 容器的艰难之旅:gocker —— Go 实现的迷你 Docker

    容器很受欢迎,但是被误解了。 容器已成为应用程序在服务器上打包和运行的默认方式,最初是由 Docker 普及的。现在,Docker 本身被误解了。它是一个公司的名字和一条命令(更确切地说是一组命令),使你容易地管理容器(创建,运行,删除,连接网络)。但是容器本身是由一组操作系统原语创建的。在本文中,我们将关注 Linux 操作系统上的容器,就像 [Windows 上的容器](https://docs.microsoft.com/en-us/virtualization/windowscontai...

  • 如何用 Go 编写词法分析器

    *词法分析器是所有现代编译器的第一阶段,但是如何编写呢?让我们用 Go 从头开始构建一个。* ![lexer](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200601-How-to-Write-a-Lexer-in-Go/how-to-write-a-lexer-in-go-featured.jpg) ## 什么是词法分析器? 词法分析器有时也称为扫描器,它读取源程序并将输入转换为标记...

  • 在 BigCache 中存储任意类型(interface{})

    这篇文章也发在我的个人 [博客](https://calebschoepp.com/blog) 最近在工作中,我的任务是向我们的一个 Golang 服务添加缓存。这个服务需要传入请求以提供用于身份验证的 API key。因此,对于每个请求,该服务都会额外查询数据库以验证 API key,尽管它通常是相同的 key。这很不好。实现缓存最终比我想象的要难得多。 经过调研和工程师之间详尽讨论之后,我们认为 [BigCache](https://github.com/allegro/bigc...

  • 120
    Go:使用 Ebiten 在 2D 视频游戏中进行图像渲染

    ![Ebiten](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200205-Go-Image-Rendering-in-2D-Video-Games-with-Ebiten/illustration.png) 插图由创作原始 Go Gopher 作品的 Renee French 为“ Go的旅程”创作。 *本文基于 Ebiten 1.10。* [Ebiten](https://ebiten...

  • 120
    Go:死锁是如何触发的?

    ![illustration](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200711-Go-How-Are-Deadlocks-Triggered/illustration.png) 由创作原始 Go Gopher 作品的 Renee French 为“ Go 的旅程”创作的插图。 *本文基于 Go 1.14。* 死锁是当 Goroutine 被阻塞而无法解除阻塞时产生的一种状态。G...