Go中秘而不宣的数据结构 Treap:随机化的二叉搜索树 (colobu.com)

【简介】

这篇文章详细解析了 Go 语言中 Treap 数据结构的实现和应用。内容涵盖了 Treap 的设计思想、核心算法以及在实际场景中的使用案例,还深入探讨了平衡二叉树与堆的结合特点及其性能优势。对于希望了解 Go 内部实现或探索高效数据结构的开发者,这篇文章提供了丰富的干货和学习价值,值得推荐。

点击查看原文 >>

@技术头条 2025-01-03 00:01 / 原作者微博:@colobu / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
Go中秘而不宣的数据结构 CacheLinePad:精细化优化 (colobu.com)
这篇文章深入解析了 Go 语言中的 CacheLine 数据结构,详细探讨了其在多核环境下的内存对齐、伪共享问题以及性能优化方法。通过具体的代码示例和实验分析,文章展示了如何利用 CacheLine 提升并发程序的性能。内容专业且实用,对开发高性能 Go 应用的工程师有很高的参考价值,值得推荐阅读和分享。
by @技术头条 2025-01-03 00:03 查看详情
Go中秘而不宣的数据结构 BitVec, 资源优化方法之位向量 (colobu.com)
如何深入理解 Go 的内部数据结构?文章以 BitVec 为例,详细解析了其设计原理、实现方式以及在不同场景中的应用,还探讨了相关的性能优化策略和工程实践。这是一篇高质量的技术解读,为开发者学习 Go 的底层实现提供了宝贵的参考!
by @技术头条 2025-01-02 23:59 查看详情
聊聊 Go 的边界检查消除技术 (colobu.com)
在翻译的从慢速到SIMD一文中, SourceGraph工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题:

为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]?

本文第一部分先回答这个问题。 第二部分介绍更好的边界检查消除方法。 第三部分再全面梳理Go的边界检查消除技术。
by @技术头条 2024-03-21 23:00 查看详情
Go 中的高速数据包处理:从 net.Dial 到 AF_XDP (colobu.com)
最近编写了一个Go程序,向数百万个IP地址发送ICMP ping消息。显然,希望这个过程能尽可能快速高效地完成。因此,这促使我研究各种与网络栈交互和快速发送数据包的各种方法。这是一个有趣的旅程,所以在本文中,我将分享一些学习成果,并记录下来供将来参考:)你将看到,仅使用8个内核就可以达到1880万数据包/秒。这里还有一个GitHub仓库,其中包含了示例代码,可以方便地跟随学习。
by @技术头条 2024-03-21 22:55 查看详情
HTML MicroData微数据结构简介 (www.zhangxinxu.com)
MicroData微数据相关的知识适用于对SEO非常重视的产品,且主要针对谷歌、微软、雅虎等国外的搜索引擎,适用场景较为小众,因此,本文内容大致了解下即可。

所谓微数据,就是在原有的HTML元素基础上,通过设置若干专门给机器识别的HTML属性,让搜索引擎可以更好地理解这一块的数据。在具体展开介绍之前,有必要先介绍https://schema.org/这个网站,准确说这是一个开源协作的社区组织,由谷歌、微软、雅虎和Yandex创建,致力于在互联网、网页、电子邮件等平台上创建、维护和推广结构化数据的模式。
by @技术头条 2024-03-12 22:39 查看详情
Go运行时的并发原语 (colobu.com)
这篇文章我们来了解一下隐藏在Go运行时中的一些并发原语, 因为运行时是底座和包循环依赖等原因,运行时中很少使用标准库中的并发原语,它有自己的并发原语。
by @技术头条 2024-01-14 19:07 查看详情
Go单线程运行也会有并发问题 (colobu.com)
一个Go大佬群中严肃的讨论了一个问题:Go程序单线程多goroutine访问一个map会遇到并发读写panic么?

答案是肯定的,因为出现了这个问题所以大家才在群中讨论。

为什么呢?因为单线程意味着并行单元只有一个(多线程也可能并行单元只有一个),但是多goroutine意味着并发单元有多个,如果并发单元同时执行,即使是单线程,可能就会产生数据竞争的问题,除非这些goroutine是顺序执行的。
by @技术头条 2023-12-11 23:04 查看详情
TOP 20 Go最佳实践 (colobu.com)
在本教程中,我们将探讨Golang中的前20个最佳编码实践。这将帮助你编写有效的Go代码。
by @技术头条 2023-11-29 23:42 查看详情
iptables 以及 Go操作库 (colobu.com)
iptables 是 Linux 系统中的一个非常强大的防火墙工具,它可以用于过滤、修改、重定向和处理网络数据包。iptables 是基于 Netfilter 框架的,Netfilter 是 Linux 内核的一部分,它提供了在内核级别处理网络数据包的能力。
by @技术头条 2023-10-30 23:30 查看详情
Go 语言史诗级更新-循环Bug修复 (crossoverjie.top)
背景前两天 Golang 的官方博客更新了一篇文章:Fixing For Loops in Go 1.22,看这个标题的就是修复了 Go 循环的 bug,这真的是史诗级的更新;我身边接触到的大部分 Go 开发者都犯过这样的错误,包括我自己。
by @技术头条 2023-10-25 00:03 查看详情