起因是在读 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 数据
了解更多
2024 年,也就是今年,其实个人的轨迹发生了比较大的变化。一直很想写一篇博客来梳理一下这段时间的想法以及后续的安排。不过事实上要把心中飞奔的各种思绪落实到文字,比自己想象中要难得多,加上日常总有些自己觉得优先级更高的事情,就搁置到现在才写了。
不过得益于有定下要写篇文章这样一个计划, 促使了我在平常就在不断思考梳理过去、当下以及未来的事情,使得我对于之后的方向有了更加清晰的认知。
了解更多
最近在重读左书祺老师的《Go 语言设计与实现》 6.3 计时器一章,书中介绍了 Golang 计时器(Timer)的内部实现 —— 所有的计时器都由每个处理器(runtime.p)单独管理,并通过对应的最小四叉堆进行维护:
我阅读的开源代码还不够多,因此对于 Golang 使用四叉堆(Quaternary Heap),而非使用经典的二叉堆(Binary Heap)来维护 Timer 感
了解更多
2016-04-11: 有邮件跟我联系说文中的方法已经失效了,有需求的同学可以去这个链接,里面有直接反编译Core.swf的python脚本,截止目前是有效的。
这是一篇舰娘SWF的反编译指南。
大概是去年(前年?)开始,角川对舰娘的flash游戏本体做了加密处理,以打击各类挂机脚本和偷跑。角川先是混淆了校验参数api_port的生成函数(在游戏主体Core.swf中),后来干脆把整个Co
了解更多
前段时间玩了慕名已久的“禅派”游戏《风之旅人》。
玩之前就一直对于《风之旅人》这款游戏相当期待,说是为了这款游戏而买的PS4也不为过。
玩完游戏后有些感触,所以想要借机谈谈对自己影响不小的人和事。
它们就如同《风之旅人》里的旅伴与风景,是我的旅程中很重要的一部分。
我们的漫画屋
“我们的漫画屋”是初中
了解更多