归档
时光荏苒,文字留痕
共 24 篇文章
go-11
go语言基础学习十一 go的interface怎么实现的?# 空接口# type eface struct { _type *_type // 类型元数据 data unsafe.Pointer // 数据指针 } _type:存放类型信息(大小、对齐、类型名称、反射
go-12
go语言基础学习十二 说说context包的作用?你用过哪些,原理知道吗?# context 是 Go 标准库用于跨协程传递上下文的工具# 传递取消信号:优雅终止下游 Goroutine、请求、任务(避免协程泄露) 传递超时 / 截止时间:控制任务最大执行时长,防止服务卡死 传递请求元数据:链路追踪
go-six
go语言基础学习六 简述go内存管理机制# TCMalloc 核心思想# 分层缓存:线程私有缓存 + 全局中心缓存 + 堆,优先本地无锁分配# 线程私有缓存(对应 Go:mcache/P 私有)# 每个线程自用一小块内存池,分配不用加锁,最快,不够再找上层。 全局中心缓存(对应 Go:mcentra
go-13
go语言基础学习十三 sync.Pool有什么用途?# 一、用途# 缓存短期临时对象([] byte、临时结构体),复用内存 减少频繁堆分配,降低 GC 压力,提升高并发性能 协程安全,无需手动加锁 二、原理# 结构:每个 P 独立poolLocal(1 个无锁 private + 共享链表 sha
go-five
--- title: "go语言基础学习五" --- # Go面向对象是如何实现的# Go实现面向对象的两个关键是struct和interface ## 封装# 封装:对于同一个包,对象对包内的文件可见;对不同的包,需要将对象以大写开头才是可见的。 ## 继承# 继承:继承是编译时特征,在struc
go-learn
--- title: "go语言基础学习一" --- # defer 的执行顺序# defer的执行顺序类似于栈,后进先出: defer若要修改return的返回数据,需要使用指针 不然return的返回值不会生被修改。 因为return会在defer执行前暂存要返回的数据 \`\`\`go //
go-14
--- title: "go语言基础学习十四" --- # 数组和切片的区别?# ## 一、定义# 1. 数组:长度 N 固定、属于类型一部分,\[3\]int 和 \[5\]int 是两种不同类型 2. 切片:\[\]T,长度可变,底层依托数组,类型只看元素 T ## 二、内存结构# 1. 数组:
go-two
go语言基础学习二 结构体打印时,%v 和 %+v 的区别# 1、%v 打印结构体时,只会打印字段的值 2、%+v 打印结构体时,会打印字段的名称和值 3、%+v 打印结构体时,会打印字段的名称和值,同时会打印结构体的类型 //示例代码: package main import "fmt" t
go-three
go语言基础学习三 2 个 interface 可以比较吗 ?# 可以比较,但是有要求 interface有两个字,V和T,V是值,T是类型。 2 个 interface 相等有以下 2 种情况 一、两个 interface 均等于 nil(此时 V 和 T 都处于 unset 状态) 二、类型 T
hello-im-xiaoniu
--- title: "👋 如果你是第一次来到这个博客,那么这篇文章是专门写给你的" --- ## 👤 基本介绍# 我叫牛雨蒙,安徽大学互联网金融专业大三在读(2027届),来自安徽亳州,喜欢计算机技术,这是一篇自我介绍,非常感谢你能静下心来了解我。 ## 💬 关于编程语言# 编程语言上,我主