书签


不定期更新一些别人写的好文章~


计算机系统

Linux内存分配原理

Anatomy of a Program in Memory

与程序员相关的CPU缓存知识

CPU cache和内存间如何做映射,CPU Associativity,以及一些演示CPU cache的例子。

Go

滴滴Go实战:高频服务接口超时排查&性能调优

[译]自定义Go Json的序列化方法

理解Go接口的实际应用

统计Go标准库以及一些优秀开源项目中使用接口的情况。

GoLand永久激活

Benchmarking package initialization

使用go:linkname对init函数做benchmark。

Picking up pennies: Disabling memory profiling

关闭runtime mem profile,提高少许性能。

曹春晖:谈一谈 Go 和 Syscall

提升go编译器内联程度

Go: gsignal, Master of Signals

信号处理与Go调度器的关系
How to Find Goroutines During Debugging

Jetbrains官方博客发文描述如何在新版GoLand 2020.1中为协程添加运行时信息,以及在GoLand调试时,如何在协程调试面板中看到这些信息,便于查看想看的协程。
有趣的是,尽管官方认为这些运行时添加的调试信息开销很小,但是如果使用者依然十分关注性能,官方演示了如何通过构建标签来实现编译期多态。这种实现编译期多态的手法,对于Go高性能编程来说十分值得学习。

Golang 中字典的 Comma Ok 是如何实现的

使用Go map查询数据时,用户层代码可以接收一个返回值,也可以接收两个返回值,那么Go编译器是如何处理的呢?

汇编

Linux 汇编语言开发指南

汇编语言入门教程 - 阮一峰的网络日志

其他

How to Use Git History to Identify Pain Points in a Project?

简单来说,通过git日志,统计修改次数最频繁的文件。一个文件修改的越频繁,可能说明里面的坑越多。。命令十分简单,如下:
git log --format=format: --name-only | egrep -v '^$' | sort | uniq -c | sort -rg | head -10


< 2020.03

0%