自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Golang 结构体数组、按结构体中的某些字段进行排序

Go语言中的sort包帮我们实现了对任一类型的数组进行排序。对于将要排序的数组类型只需要我们实现下面三种方法:type Interface interface { Len() int // 数组长度 Less(i, j int) bool //两个元素的大小比较 Swap(i, j int) // 交换两个元素}下面我们简单看下sort.Sort 源码,着急忙慌被老板催着赶进度的,可以直接看注释部分了解~//go/src/sort/sort.gofunc Sort(data Inter

2021-12-22 20:19:50 2658 4

原创 goland idea 打开项目后,只显示文件,项目中的目录不显示

Goland idea 打开项目后,只显示文件,项目中的目录不显示?goland打开项目后,会在本地生成一个.idea目录。出现上述问题一般为本地的.idea目录损坏,将此目录删除后,重启idea即可。

2021-12-16 15:05:02 4089

原创 Go面试题(六):一文弄懂 Golang GC、三色标记、混合写屏障机制【图文解析GC】

面试官上来就让讲Golang GC, 我道袍一挥,气定神闲,还好提前准备了,把三色标记法,屏障机制等信手拈来,把面试官镇住了.....

2021-12-12 17:05:48 3068 20

原创 Go面试题(五):图解 Golang Channel 的底层原理

大家好,我是小道哥。今天给大家带来的面试专题是:Golang Channelchannel的底层数据结构channel是golang中用来实现多个goroutine通信的管道,它的底层是一个叫做hchan的结构体。在go的runtime包下。数据结构type hchan struct { //channel分为无缓冲和有缓冲两种。 //对于有缓冲的channel存储数据,借助的是如下循环数组的结构 qcount uint // 循环数组中的元素数量 dataqs

2021-12-04 09:46:21 2671

原创 Go面试题(四):锁的实现原理--sync.RWMutex 篇

Go面试题(四):锁的实现原理–sync.RWMutex 篇大家好,我是小道哥。上一篇为大家介绍了Go中的sync.Mutex互斥锁的数据结构及实现原理,今天继续为大家介绍另外一种常用的锁,那就是sync.RWMutex读写锁。读写锁的使用读写互斥锁sync.RWMutex不限制对资源的并发读,但是读写,写写操作无法并行执行。读写锁一共有四个函数:RLock(): 申请读锁RUnlock(): 解除读锁Lock(): 申请写锁Unlock(): 解除写锁实现原理sync.RWMut

2021-11-27 17:43:17 812

原创 Go面试题(四):锁的实现原理sync-mutex 篇

大家好,我是小道哥在Go中,主要实现了两种锁:sync.Mutex(互斥锁) 以及 sync.RWMutex(读写锁)。本篇主要给大家介绍sync.Mutex的使用和实现原理。为什么需要锁在高并发下或多goroutine同时执行下,可能会同时读写同一块内存,比如如下场景:var count intvar mu sync.Mutexfunc func1() { for i := 0; i < 1000; i++ { go func() { count = count + 1

2021-11-20 09:36:06 1161

原创 Go面试题(三):map的实现原理

大家好,我是小道哥。今天为大家讲解的面试专题是: map的实现原理。map定义map是一种key-value键值对的存储结构,其中key是不能重复的,其底层实现采用的是hash表。map的数据结构首先我们先列出源码结构关键字段,实现在 src/runtime/map.go:type hmap struct { count int // 元素的个数 B uint8 // buckets 数组的长度就是 2^B 个 overflow uint16 // 溢出桶的

2021-11-12 22:13:38 2552 3

原创 Go面试专题(二):聊聊Go语言中的闭包理解

大家好,我是小道哥。今天为大家讲解的面试专题是: 闭包。定义闭包在计算机科学中的定义是:在函数内部引用了函数内部变量的函数。看完定义后,我陷入了沉思…确实,如果之前没有接触过闭包或者对闭包不理解的话,这个定义着实有点让人上头。下面让我们先看几个示例,在了解闭包的实际应用后,再去理解这个定义,就不会那么晦涩难懂了。示例Go 语言是通过匿名函数实现闭包的。func increase() func(int) int { sum := 0 return func(i int) int { s

2021-11-06 18:27:40 467

原创 Go面试专题(一):聊聊你理解的Golang defer关键字

目录defer两大特性defer与return的执行顺序defer的应用场景场景一:资源释放场景二:异常捕获场景三:代码追踪场景四:打印函数的参数和返回值 面试点总结大家好,我是小道哥。defer关键字是我们工作中经常用到的go语言特性,也是面试官比较青睐的一个知识点,今天通过这篇文章带各位道友彻底掌握它。defer两大特性defer是golang中的一个关键字,它主要具有两大特性:延迟调用: 在当前函数执行完成后调用执行。funcf1(){...

2021-11-06 17:36:01 413 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除