与日俱进,在 Go 1.20 中这种高效转换的方式又变了 (colobu.com)

【简介】

在 Go 1.19 的开发中, string.SliceHeader和string.StringHeader经历了一个生死存亡的争斗,这两个类型一度被标记为弃用(deprecated),但是这两个类型经常用在 slice of byte 和 string 高效互转的场景中,如果被标记为弃用,但是目前还没有可替代的方法,所以这两个类型又把弃用标记去掉了,如无意外,它们也会在 Go 1.20 再次被标记为弃用。

点击查看原文 >>

@技术头条 2022-09-12 22:38 / 原作者微博:@colobu / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
多方式防止网站被镜像 (dusays.com)
本文提供了多种方法来防止网站被镜像,包括使用 JavaScript 检查域名有效性、设置 `X-Frame-Options` 和 `Content-Security-Policy` 防止嵌入、限制访问频率、过滤爬虫请求,以及强制 HTTPS 加密。通过分析访问日志识别异常流量,这些措施可有效降低网站被恶意镜像的风险,提升资源的安全性和访问控制。
by @技术头条 2024-11-02 16:54 查看详情
四种字符串和bytes互相转换方式的性能比较 (colobu.com)
在 Go 中,字符串和字节数组的互转性能是很多开发者关注的问题。本文详细对比了四种转换方式,包括新型 unsafe 方法和 Kubernetes 实现,并通过 Benchmark 测试揭示了它们的性能差异。想要优化你的 Go 项目性能?不妨看看这篇详细的实测分析!
by @技术头条 2024-09-08 23:34 查看详情
一种适用于 Zustand 和 React Query 的前端数据管理方式 (innei.in)
本文介绍了一种结合Zustand和React Query进行前端数据管理的方法。作者指出,直接使用React Query进行复杂数据的乐观更新可能会导致性能和维护问题。通过使用Zustand创建数据映射表和自定义hook,可以简化状态管理和数据同步,提升效率和可维护性。文章还提供了在开发RSS信息流浏览器“Follow”中的应用示例。
by @技术头条 2024-08-06 08:19 查看详情
聊聊 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 查看详情
以非阻塞方式执行一个函数 (blog.codingnow.com)
用过 skynet 的应该都碰到过:当我们在服务中不小心调用了一个长时间运行而不返回的 C 函数,会独占一个工作线程。同时,这个被阻塞的服务也无法处理新的消息。一旦这种情况发生,看似是无解的。我们通常认为,是设计问题导致了这种情况发生。skynet 的框架在监测到这种情况发生时,会输出 maybe in an endless loop 。

如果是 Lua 函数产生的死循环,可以通过发送 signal 打断正在运行运行的 Lua 虚拟机,但如果是陷入 C 函数中,只能事后追查 bug 了。

那么,如果我原本就预期一段 C 代码会运行很长时间,有没有可能从底层支持以非阻塞方式运行这段代码呢?即,在这段代码运行期间,该服务还可以接收并处理新的消息?
by @技术头条 2024-03-13 13:20 查看详情
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 查看详情