- 博客(230)
- 收藏
- 关注
原创 B+树知识点总结
以 16KB 页为基本单位在硬盘上组织 B+ 树的节点(根、内部、叶子)。每个 B+ 树节点通常对应一个物理页。非叶子节点存储键和子页指针;叶子节点存储键和数据(聚簇索引)或键和主键(二级索引)。页内使用页目录 (Slots)实现快速二分查找,避免页内全扫描。叶子节点通过双向链表串联,实现高效的范围扫描。主键索引的叶子节点包含完整数据行,数据文件即索引文件。二级索引叶子节点存储主键值,查询完整数据需回表到主键索引。
2025-06-05 15:51:05
882
原创 Go源码--Strconv库
Strconv 库是一些跨类型的转换函数集合,大家应该很熟悉。源码没有什么难点,主要是面试题有可能会出这种类型的,所以简单介绍下,主要介绍 以下两种常用转换,其他的没细研究,感兴趣的可以看看。
2024-04-23 20:55:25
653
1
原创 Go源码--Strings库
strings库 存储了 一些针对 字符串的具体操作 其 代码短小精悍 可以学习到很多编程的思路 尤其是 涉及到字符串使用性能的方面,其源码库有好多的优秀案例可以学习。向强者对齐不一定成为强者,但向弱者对齐一定变为弱者。介绍思路是先介绍 strings 库的一些基础 结构体和函数,它们被其它函数调用,然后挑选几个比较有代表性的函数介绍,下面开始吧一直在用stings包,现在梳理了以便其源码,更加佩服大师们的能力了,考虑的很细节,而且优化大部分都是在最底层优化,考虑的层深至少是字节码和底层交互时的深度。
2024-04-20 18:47:55
914
原创 Go第三方框架--ants协程池框架
ants是站在巨人的肩膀上开发出来的,这个巨人是goroutine,这是连小学生都知道的事儿,那么为什么不继续使用goroutine(以下简称go协程)呢。这是个思考题,希望讲完本文大家可以有个答案。go协程只涉及用户态的使用,不涉及内核态和两态的切换,所以非常轻便,通常一个协程大概只占用2k的内存,比线程更轻量级,而且其还有特别高效的GMP协程调度算法,使得go语言编写并发程序简单和高效。
2024-04-10 22:32:55
2572
原创 Go第三方框架--gin框架(二)
通过代码追踪 可以看到 第二个节点建立时 跳过了 root节点初始化和 第一个节点建立的代码,来到了 addRoute函数的核心部分。至此 第一个 节点便建立起来了,TestGin的第 二行执行完毕后,其engine结构如下图,可以看到root节点确实如分析的一般。至此 树节点的建立就梳理完毕了,注意只是梳理了不带通配符的路由处理逻辑,关于通配符 例如 :* 等特殊字符请自行梳理。建立后树的结构如下(handler也就是 注册的函数 在路径插入时插入,故不在图中展示,只在有特殊情况时说明。
2024-03-25 21:19:48
1691
原创 Go第三方框架--gin框架(一)
gin 框架早期版本是基于julienschmidt/httprouter 发展而来,julienschmidt/httprouter是一个高性能的http请求器。但是随着gin框架的发展 它逐渐发展出了自己的 路由实现器,实现源码也部分参考 julienschmidt/httprouter 这也就是为什么好多资料都说 gin基于julienschmidt/httprouter 但是你去看它最新的源码却没发现针对 julienschmidt/httprouter的引用。
2024-03-25 21:19:36
2786
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人