相关疑难解决方法(0)

Go渠道是如何实施的?

在(简要)回顾Go语言规范,有效Go和Go内存模型后,我仍然不清楚Go渠道如何在幕后工作.

他们是什么样的结构?它们的行为类似于线程安全的队列/数组.

他们的实现是否依赖于架构?

channel go

62
推荐指数
3
解决办法
9841
查看次数

Golang地图内部实现 - 如何在地图中搜索密钥?

我读过的"围棋程序设计语言",一个"给定的密钥可以被检索...使用键比较恒定的数量平均,无论多么大的哈希表." 我不确定这在内部的实现意味着什么.这是否意味着它会搜索每个键,直到找到匹配或内部使用的某种类型的二进制(或其他)搜索算法?

例如,如果我有一个包含2,000个密钥的地图,那么它"平均"是否需要查看1,000来查找匹配项,或者它只查看11(log2 n),就像二元搜索一样?

谢谢,本

dictionary go

13
推荐指数
3
解决办法
5496
查看次数

如何在Golang中实现内存池

我在Go中实现了一个HTTP服务器.

对于每个请求,我需要为特定的结构创建数百个对象,我有~10个这样的结构.因此,根据Go实现完成请求后,它将被垃圾收集.

因此,对于每个请求,将分配和释放大量内存.

相反,我想实现内存池以提高分配端和GC端的性能

在请求开始时,我将从池中取出并在请求提供后将其放回

从池实现方面

  1. 如何分配和释放特定类型结构的内存?
  2. 如何跟踪这个记忆分配的信息,而其他信息不是?

在内存分配和释放的情况下,还有其他任何提高性能的建议吗?

memory-management go

12
推荐指数
2
解决办法
8346
查看次数

引擎盖下的 Go 地图

在阅读了 Dave Cheney关于 Go 地图的博客文章后,我仍然有一些不清楚的地方。

域名注册地址:

  • 为什么它们是无序的?
  • 实际值存储在内存中的什么位置?

在挖掘运行时包后,我发现底层地图结构如下:

// A header for a Go map.
type hmap struct {
    // Note: the format of the hmap is also encoded in cmd/compile/internal/gc/reflect.go.
    // Make sure this stays in sync with the compiler's definition.
    count     int // # live cells == size of map.  Must be first (used by len() builtin)
    flags     uint8
    B         uint8  // log_2 of # of buckets (can hold up to loadFactor * …
Run Code Online (Sandbox Code Playgroud)

dictionary pointers hashmap go

5
推荐指数
1
解决办法
780
查看次数

标签 统计

go ×4

dictionary ×2

channel ×1

hashmap ×1

memory-management ×1

pointers ×1