摘要: channel的整体结构图 简单说明: buf是有缓冲的channel所特有的结构,用来存储缓存数据。是个循环链表 sendx和recvx用于记录buf这个循环链表中的发送或者接收的index lock是个互斥锁。 recvq和sendq分别是接收(<-channel)或者发送(channel <- 阅读全文
posted @ 2025-04-07 19:11 搁浅~浅浅浅 阅读(65) 评论(0) 推荐(0)
摘要: make和new的区别 (√) make和new都是用于创建新对象的内置函数, 但make用于创建引用类型的对象,返回的是一个已经初始化了的对象; 而new用于创建值类型的对象,返回的是一个指向新对象的指针。 1.初始化的区别 make和new都是golang用来分配内存的內建函数,且在堆上分配内存 阅读全文
posted @ 2025-04-07 17:31 搁浅~浅浅浅 阅读(48) 评论(0) 推荐(0)
摘要: map定义 map是一种key-value键值对的存储结构,其中key是不能重复的,其底层实现采用的是hash表。 map的数据结构 首先我们先列出源码结构关键字段,实现在 src/runtime/map.go: type hmap struct { count int // 元素的个数 B uin 阅读全文
posted @ 2025-04-07 17:13 搁浅~浅浅浅 阅读(191) 评论(0) 推荐(0)
摘要: 思路 Dijkstra算法的基本思想是贪心策略,即每次选择当前未访问的顶点中距离源点最近的顶点(我们假设该点为X点),这样就保证获得了源点(就是需要求解的点)到X点最近的路径,并将其标记为已访问,然后更新该顶点邻接顶点的距离估计值。算法通过不断迭代,逐步扩展到图中所有顶点,直到所有顶点都被访问为止‌ 阅读全文
posted @ 2025-04-02 18:34 搁浅~浅浅浅 阅读(49) 评论(0) 推荐(0)
摘要: 前言 Golang sync包提供了基础的异步操作方法,包括互斥锁Mutex,执行一次Once和并发等待组WaitGroup。 本文主要介绍sync包提供的这些功能的基本使用方法。 Map:自带锁的map Cond:信号量 Locker:锁接口 Mutex: 互斥锁 RWMutex:读写锁 Once 阅读全文
posted @ 2025-04-01 22:30 搁浅~浅浅浅 阅读(68) 评论(0) 推荐(0)
摘要: go语言关键字 1.概览 Go 共有 25 个保留关键字,各有其作用,不能用作标识符。 1.break:用于跳出循环 2.default: 用于选择结构的默认选项(switch、select) 3.func:用于函数定义 4.select:Go 中的一个控制结构,类似于用于通信的 switch 语句 阅读全文
posted @ 2025-03-21 21:55 搁浅~浅浅浅 阅读(29) 评论(0) 推荐(0)
摘要: 一、栈用于存储局部变量和函数调用信息 栈是一种后进先出(LIFO)的数据结构,主要用于存储函数调用的上下文信息以及局部变量。栈的特点是: 自动管理:栈内存由编译器自动分配和释放。 高效:由于栈内存的分配和释放是自动完成的,速度非常快。 有限空间:栈的大小是有限的,一般由操作系统规定。 实例说明:当一 阅读全文
posted @ 2025-03-21 18:06 搁浅~浅浅浅 阅读(149) 评论(0) 推荐(0)
摘要: Redis中list的底层原理 一、概述 list 是一个有序的字符串列表,它按照插入顺序排序,并且支持在两端插入或删除元素。一个 list 类型的键最多可以存储 2^32 - 1 个元素。 redis3.2以后,list 类型的底层实现只有一种结构,就是quicklist。版本不同时,底层实现是不 阅读全文
posted @ 2025-03-20 22:26 搁浅~浅浅浅 阅读(109) 评论(0) 推荐(0)
摘要: 内存对齐及填充规则 各类型占内存大小 数据类型 内存大小(byte) int 8 int8 1 int16 2 int32 4 int64 8 string 16 bool 1 [3]int32 12 [3]int64 24 []string 24 map[string]bool 8 map[str 阅读全文
posted @ 2025-03-20 18:47 搁浅~浅浅浅 阅读(37) 评论(0) 推荐(0)
摘要: 一、垃圾回收 什么是垃圾回收? 垃圾回收(GC,garbage collection)是自动内存管理的一种形式,通常由垃圾收集器收集并适时回收或重用不再被对象占用的内存,比如众所周知的Java语言就能很好的支持GC。后起之秀——Go语言也同样支持垃圾回收,它使得Go程序员在编写程序的时候不再需要考虑 阅读全文
posted @ 2025-03-19 21:42 搁浅~浅浅浅 阅读(376) 评论(0) 推荐(0)