- 博客(15)
- 收藏
- 关注
原创 深入底层读源码!一文详解context标准库
context上下文包是go中的标准库,主要用于在不同Goroutine之间传递取消信号、超时警告、截止时间信息以及其他请求范围的值。笔者这里的GO的版本是1.21.6,所以下面的代码都是GO1.21.6中的源码。context是一个接口,其中实现了四个方法这里具体解释done的作用机制。在一个协程中,首先通过Done()创建这样一个通道,这个通道就是用于检测该上下文是否被取消或超时,如果被取消或超时,就会执行相应的逻辑关闭这个通道。由此实现了上下文对协程的并发控制。
2024-03-11 15:23:03
1084
原创 一文带你了解GO语言Gin框架到底做了什么
)首先解释这里的http.HandleFunc,这是http中的核心字段,Handle是一个接口,实现了方法(这个方法的底层实现就是调用自己,即一个路由处理函数的servehttp就是这个执行这个路由处理函数本身的逻辑)。而这一点代码其实就可以体现http包的本质就是不断的注册路由和路由处理函数的映射关系,从而当一个url到来时对其进行处理。那么http包的整体运行逻辑是怎么样的呢?(这只是一个大致流程,如果对具体代码感兴趣可以看小徐先生的编程世界中的Golang HTTP 标准库实现原理。
2024-03-08 21:49:05
1663
1
原创 11.代码随想录-哈希表(上)
哈希表(散列表hash table),存储键值对。这里建议大家去看一下map的底层实现,gomap的底层和redis中字典的实现方式是基本一致的。
2024-03-04 23:53:13
932
1
原创 10.代码随想录-链表(下)
题干:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。双指针:快指针先走个n步,然后两个指针一起走,快指针走到末尾了,这个时候慢指针也就到了倒数的第n个节点了。比如倒数第一个,那就fast走到fast.next是nil的时候,慢指针就在倒数第二个,那就让slow.next=slow.next.next就可以了。
2024-03-04 22:37:41
497
1
原创 2、Go Web编程:第2章 ChitChat论坛
ChitChat论坛:在这个论坛里面,用户可以注册账号,并在登录之后发表新帖子又或者回复已有的帖子;未注册用户可以查看帖子,但是无法发表帖子或是回复帖子。
2024-02-27 22:32:17
916
原创 1、Go Web编程:第1章 Go与Web应用
大规模可扩展的Web应用通常需要具备以下特质:可扩展;模块化;可维护;高性能。在开发大规模Web应用方面,Go语言提供了一种不同于现有语言和平台但又切实可行的方案能同时满足这四种特质。
2024-02-27 21:04:14
894
原创 6.队列和栈入门题目
很简单,一堆数放到栈里面,先进后出,比如是12345,然后把他们再丢到一个栈里面,此时栈的顺序是54321,然后再出来的顺序就又成了是12345。需要注意的是pop的时候,要一次把当前in里面的全部拿出来不能留v。
2024-02-24 23:49:15
426
1
原创 3.详解桶排序以及排序内容大总结
在许多算法中,需要大量用到如下两种操作:插入元素和寻找最大(小)值元素。为了提高这两种运算的效率,必须使用恰当的数据结构。普通队列:易插入元素,但求最大(小)值元素需要搜索整个队列。排序数组:易找到最大(小)值,但插入元素需要移动大量元素。堆则是一种有效实现上述两种运算的简单数据结构。定义:堆是一个几乎完全二叉树,每个节点都满足这样的特性:任一父节点的键值(key)不小于子节点的键值(最大堆)。沿着每条从根到叶子的路径,元素键值以非升序排列。
2024-02-23 17:23:02
1223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人