
golang快速复习
文章平均质量分 79
自己复习的笔记,适用于考试/面试前快速唤醒记忆。
Soberstaid.
双非一本,机械转码,努力成名一名合格的软件工程师中~
展开
-
Golang复习笔记之Slice(面向面试)
如果多个 slice 共享同一个底层数组,那么修改一个 slice 中的元素可能会影响其他 slice。Slice 本质上是一个结构体,包含三个部分:指向底层数组的指针(pointer)、长度(len)、容量(cap)。动态扩容当 slice 的容量不够时,Go 会分配一个更大的底层数组,并将现有的元素复制到新的数组上。slice 是按引用传递的,因为它内部包含了一个指针指向底层数组。array是值传递。Slice 是 Go 语言中动态大小的数组,是对数组的引用。原创 2024-10-01 17:54:54 · 411 阅读 · 0 评论 -
Golang复习笔记之map(面向面试)
map 是一种内置的数据类型,用于存储键值对(key-value pairs)。它提供了高效的键值对查找、插入和删除操作。map 可以看作是一种哈希表,键是唯一的,值可以是任意类型。其中,KeyType 是键的类型;ValueType 是值的类型,值可以是任意类型。原创 2024-10-01 17:35:29 · 522 阅读 · 0 评论 -
Golang复习笔记之垃圾回收、GMP调度
一个黑色的节点A新增了指向白色节点C的引用,并且白色节点C没有除了A之外的其他灰色节点的引用,或者存在但是在GC过程中被删除了。满足弱三色不变性:黑色节点允许引用白色节点,但是该白色节点有其他灰色节点间接的引用(确保不会被遗漏) 当白色节点被删除了一个引用时,悲观地认为它一定会被一个黑色节点新增引用,所以将它置为灰色。队列轮转:P 会周期性的将G调度到M中执行,执行一段时间后,保存上下文,将G放到队列尾部,然后从队列中再取出一个G进行调度。当G0系统调用结束后,如果有空闲的P,则获取一个P,继续执行G0。原创 2024-09-26 16:14:08 · 533 阅读 · 0 评论 -
Golang复习笔记之Channel、context
若等待接收队列 recvq 不为空,则缓冲区中无数据或无缓冲区,将直接从 recvq 取出 G ,并把数据写入,最后把该 G 唤醒,结束发送过程。若等待发送队列 sendq 不为空,且没有缓冲区,直接从 sendq 中取出 G ,把 G 中数据读出,最后把 G 唤醒,结束读取过程。如果等待发送队列 sendq 不为空,说明缓冲区已满,从缓冲区中首部读出数据,把 G 中数据写入缓冲区尾部,把 G 唤醒,结束读取过程。若缓冲区中有空余位置,则将数据写入缓冲区,结束发送过程。并发控制神器之Context。原创 2024-09-26 16:12:18 · 334 阅读 · 0 评论