gitalk icon indicating copy to clipboard operation
gitalk copied to clipboard

gitalk for colobu

Results 118 gitalk issues
Sort by recently updated
recently updated
newest added

# Go 中的高速数据包处理:从 net.Dial 到 AF_XDP 原文: High-Speed Packet Processing in Go: From net.Dial to AF_XDP by Andree Toonk. [https://colobu.com/2024/03/12/high-speed-packet-transmission-in-go-from-net-dial-to-af-xdp/](https://colobu.com/2024/03/12/high-speed-packet-transmission-in-go-from-net-dial-to-af-xdp/)

# slog 终极指南 原文: Logging in Go with Slog: The Ultimate Guide by Ayooluwa Isaiah. [https://colobu.com/2024/03/10/slog-the-ultimate-guide/](https://colobu.com/2024/03/10/slog-the-ultimate-guide/)

# 聊聊 Go 的边界检查消除技术 在翻译的从慢速到SIMD一文中, SourceGraph工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题: 为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]? 本文第一部分先回答这个问题。 第二部分介绍更好的边界检查消除方法。 第三部分再全面 [https://colobu.com/2024/02/19/bce/](https://colobu.com/2024/02/19/bce/)

# 聊聊 Go 的边界检查消除技木 在翻译的从慢速到SIMD一文中, SourceGraph工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题: 为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]? 本文第一部分先回答这个问题。 第二部分介绍更好的边界检查消除方法。 第三部分再全面 [https://colobu.com/2024/02/19/bce/](https://colobu.com/2024/02/19/bce/)

# 从慢速到SIMD: 一个Go优化的故事 SourceGraph 的工程师 Camden Cheek 提供的一个利用SIMD进行Go性能优化的故事:From slow to SIMD: A Go optimization story。 [https://colobu.com/2024/01/28/slow-to-simd/](https://colobu.com/2024/01/28/slow-to-simd/)

# Go语言中的Pinner.Pin runtime.Pinner 是 Go 1.21.0 中引入的一个类型。 Pinner是一组固定的 Go 对象。可以使用 Pin 方法来固定一个对象。Pinner固定的所有对象都可以使用 Unpin 方法解开固定。 [https://colobu.com/2024/02/02/Pinner-Pin/](https://colobu.com/2024/02/02/Pinner-Pin/)

# mping: 使用新的icmp库实现探测和压测工具 项目地址: mping 最近在网络探测的分析中,需要做一个使用ICMP协议进行压测的工具, ping或者fping多多少少都不满足需求,所以需要自己写一个。 使用golang.org/x/net/icmp很容易的实现基于ICMP的工具, go-ping就算了,既缺乏维护性能也不佳。所以我最初使用Go官方扩展库实现了这个工具,不过这 [https://colobu.com/2023/09/10/mping-a-multi-targets-high-frequency-pressure-measuring-and-detection-tool/](https://colobu.com/2023/09/10/mping-a-multi-targets-high-frequency-pressure-measuring-and-detection-tool/)

# 遍历函数?Go 1.22中隐藏的功能 Go 1.22中可以 range 一个整数,比如下面的代码: 123for i := range 10 { fmt.Println(i)} 这个大家都已经知道了,其实对应的提案中还有一个隐藏的功能,就是可以 range 一个函数,比如下面的代码(摘自官方代码库internal/trace/v2/event.go): 12345678910111213141516171819// Frame [https://colobu.com/2024/01/18/range-over-func/](https://colobu.com/2024/01/18/range-over-func/)

# 高效I/O并发处理:双缓冲和Exchanger 双缓冲(double buffering)是高效处理I/O操作的一种并发技术,它使用两个buffer,一个goroutine使用其中一个buffer进行写,而另一个goroutine使用另一个buffer进行读,然后进行交换。这样两个goroutine可能并发的执行,减少它们之间的等待和阻塞。 本文还提供了一个类似Java的java.util.concurrent.Exchanger的Go并发原语 [https://colobu.com/2024/01/14/double-buffering-and-Exchanger/](https://colobu.com/2024/01/14/double-buffering-and-Exchanger/)

# 学习C++20, 为Go的atomic类型插上一双翅膀 如果我们将Go语言的并发原语弄的滚瓜烂熟,那么我们使用组合的方式,创造出更高级的并发原语,针对一些特定的并发场景,可以提供更高效的并发原语。 这篇文章就是就是利用atomic中的并发原语和条件变量,组合出类似C++ 20规范中atomic类型的wait/notify_one/notify_all的功能 [https://colobu.com/2024/01/06/extend-atomic/](https://colobu.com/2024/01/06/extend-atomic/)