前段时间突然发现 PowerToys Run 是支持第三方开发插件 的,但对于如何开发有关插件互联网上资料较少,官方也没有提供正式的文档,所以这边将基于 hlaueriksson 的 《Creating custom PowerToys Run plugins》 这篇教学文章进行翻译,加上最近自己开发 PowerToys Run 插件的一些理解,希望有更多同学参与第三方插件开发,丰富 Po
了解更多

在读 Golang GC 部分源码时候看到,对于 mspan 用于标记是否需要 GC 清除的 bitmap mspan.gcmarkBits,在 sweep 清扫过程中会使用 countAlloc(sys.OnesCount64) 来快速计算 64 位二进制数中 1 的数量(即已分配的 object 数量)。 而 Golang 标准库的 sys.OnesCount64 是这么实现的: 和
了解更多

起因是在读 Golang Malloc 相关代码时候,看到了 sys.TrailingZeros64 标准库函数,这个函数的作用是计算传入的 64 位二进制数(uint64)末尾有多少个 0。 计算二进制末尾有多少个 0,似乎很简单没啥好多讲的,直觉第一反应是类似这么实现: 就是不断循环看数的最低位,如果是 0 则计数并将数右移,如果是 1 则退出循环,返回计数。道理和循环不断模 2 取
了解更多

左书祺老师的《Go语言设计与实现》写得很好,不过在阅读过程中发现不少部分还是要结合阅读源码才能够理解其中细节。 与之前的笔记类似,本篇将围绕 5.2 select 一节通过查看资料和阅读源码进行整理补充,以免自己回头忘记。 也欢迎熟悉这部分源码或是感兴趣的老板参与讨论。 基于阅读的 Golang 源码版本是 1.16 原书中对于 select 源码的分析事实上是从两个层面来分析的,第一部分是
了解更多

前面几天看完 Channel 之后,意识到 Channel 在目前版本本质上还是一个加锁的 FIFO 消息队列。不管是对 Channel 进行发送、接收还是关闭操作,都会加锁。由此让我想再重新好好看下目前 Golang 的锁实现,以后分析并发性能的时候能够更加清晰。 左书祺老师的《Go语言设计与实现》 在 【6.2 同步原语与锁】一章中详细介绍了 sync.Mutex 与 sync.RWMut
了解更多

左书祺老师的《Go语言设计与实现》写得很好,不过在阅读过程中发现不少部分还是要结合阅读源码才能够理解其中细节。 与上篇计时器类似,本篇将围绕 6.4 章 Channel 通过查看资料和阅读源码补充的部分,以免自己回头忘记。 也欢迎熟悉这部分源码或是感兴趣的老板参与讨论。 基于阅读的 Golang 源码版本是 1.16 1. 数据结构这部分针对书中 6.4.2 的章节部分,其中介绍了 Ch
了解更多

在学习 Golang 定时器这一块时看到了 Russ Cox 大神的这篇 Proposal ,因为觉得这篇 Proposal 和对应的 Issue 讨论 比较有趣,就把这篇 Proposal 翻译学习一下,最后再讲下自己看了有关讨论的自己的一点感想。 整篇 Proposal 介绍了用于测量经过时间的单调时钟(Monotonic Clock),以及为了引入单调时钟对于 Go Time 的改造。
了解更多

左书祺老师的《Go语言设计与实现》写得很好,不过在阅读过程中发现不少部分还是要结合阅读源码才能够理解其中细节。 因此写下这篇笔记,记录下《Go 语言设计与实现》 6.3 章通过查看资料和阅读源码补充的部分,以免自己回头忘记。 也欢迎熟悉这部分源码或是感兴趣的老板参与讨论。 基于阅读的 Golang 源码版本是 1.16 1. 数据结构1.1 runtime.timer在 6.3.2 数据
了解更多

Journey.2024

in 随笔

2024 年,也就是今年,其实个人的轨迹发生了比较大的变化。一直很想写一篇博客来梳理一下这段时间的想法以及后续的安排。不过事实上要把心中飞奔的各种思绪落实到文字,比自己想象中要难得多,加上日常总有些自己觉得优先级更高的事情,就搁置到现在才写了。 不过得益于有定下要写篇文章这样一个计划, 促使了我在平常就在不断思考梳理过去、当下以及未来的事情,使得我对于之后的方向有了更加清晰的认知。
了解更多

Golang 计时器与四叉堆

in Golang

最近在重读左书祺老师的《Go 语言设计与实现》 6.3 计时器一章,书中介绍了 Golang 计时器(Timer)的内部实现 —— 所有的计时器都由每个处理器(runtime.p)单独管理,并通过对应的最小四叉堆进行维护: 我阅读的开源代码还不够多,因此对于 Golang 使用四叉堆(Quaternary Heap),而非使用经典的二叉堆(Binary Heap)来维护 Timer 感
了解更多

Grzhan

静静地当一个宅√


伪宅 & 码农


Shanghai China