
源码学习
陈墨1234
go语言工程师的进阶之路,微信公众号:golang学习之路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
读go语言自制解释器(二)解析ast
nil {return valeval求值的过程如上所示,结合上一节的代码,可以更好的帮助理解代码引用自https://interpreterbook.com/waiig_code_1.7.zip,有兴趣的同学可以去下载全部代码。原创 2024-09-07 13:48:39 · 950 阅读 · 0 评论 -
读go语言自制解释器(一)生成ast
"IF = "IF""if": IF,ok {return tok词法分析的主要功能就是将从文件中读出来的一个个字符拼接成一个个符合特定意义的token,供后续的语法分析阶段处理(方便生成ast)。以上就是生成ast的介绍了,其实理解了递归下降的解析方式,参照书中,自定义一个小型的语言集,我想大家也都可以实现一个ast解析树吧。原创 2024-09-07 13:47:44 · 660 阅读 · 0 评论 -
goleveldb的原理简述(基于golang的goleveldb库)
其实就是按图索骥,抓住主要接口和主体逻辑,比如这里图中的open、get、put、delete接口,然后一个个理解相应的代码逻辑,当然也要对lsm-tree原理有所了解。掌握这些之后,基本上很快就可以理解相应的代码逻辑了,不过我这里基于的:golang/leveldb.git是这个版本的代码库,整体逻辑相对简单一点,没有那么多借助于管道通信的操作,比较容易理解,对于理解lsm-tree的基本原理应该是足够了。原创 2024-09-03 15:58:43 · 1145 阅读 · 0 评论 -
go boltdb删改版(仅支持增删改查功能)
db.Get()查询数据,db.Put()增改数据,db.Delete()删除数据,db.Commit()用于增、删、改数据之后的后置操作,对b+树及页进行调整操作,详细细节可以参阅代码阅读代码的方法:主体逻辑都在db.go文件中,其他文件都是基于增、删、改、查主体逻辑的扩展。原创 2024-08-31 23:29:14 · 628 阅读 · 0 评论 -
go boltdb简单解析
阅读源码的时候建议结合测试用例一起进行,然后理解整个bolt的功能就是增删改查,其他就是辅助性的,比如数据的落盘、树的大小调整、页大小的调整等等。原创 2024-08-31 23:28:24 · 341 阅读 · 0 评论 -
go mmap使用
【代码】go mmap使用。原创 2024-08-27 19:08:57 · 414 阅读 · 0 评论 -
golang实现自定义锁
通过上述两种情况的对比可以发现go的锁的实现还是很成功的。原创 2024-08-04 21:10:48 · 341 阅读 · 0 评论 -
如何阅读源码--关于阅读代码的一些小思考
在阅读代码的时候可以参看别人的阅读方式和理解方式,抓大放小,对于一些细节性的代码先放下,理解主体的代码、调用方式和组织方式。在理解了主体的基础上,阅读代码的时候可以先忽略掉内部的调用关系,在没有注释的时候,一般根据函数名和关键词即可理解了被调用的函数功能,然后在理解了主体函数的功能点后,可以借助ide切入被调用函数,查看其功能如何用代码实现的。最后,如果有时间的话,可以基于自己对代码的理解,写一个小demo(造轮子)来实现相关的功能,加深自己的理解,深化自己的技术体系。原创 2024-08-03 09:55:46 · 267 阅读 · 0 评论