自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go语言map底层数据结构

go语言中的map是一种内建引用类型 map存储时key不可重复,无顺序,排序的话可以将key排序,然后取出对应value.只有可以比较的类型才可以作key,value则无限制. go中的map采用的是哈希map 给定key后,会通过哈希算法计算一个哈希值,低B位(这里是大写的B,2^B表示当前map中bucket的数量)代表的是存在map中的哪一个bucket,高8位则是了存在bucket中的一...

2019-02-22 11:24:27 1655

原创 go方法集

普通情况下,类型 T 和 T 上的方法集是互相继承的,即接收器是T和T时,方法都可以调用成功. but: 在接口中的method,对于普通类型T: T的方法集里不会继承包含*T实现的method,除非T自己实现相对应的method。 但是,*T会继承T的方法集。 type test interface { Test() } type User struct { Name strin...

2019-02-19 11:53:21 211

原创 go语言多线程操作map

go语言里的map因为是引用,所以多线程操作时必须加锁. 一开始我以为只要读写的key不会竞争就不会出现问题,但是测试后发现,即使写的时候采用的是不同的key,也会发生多线程错误:fatal error: concurrent map writes func main() { mm := make(map[int]int) go func() { for { ...

2019-02-15 17:27:39 1672

原创 go语言中的锁

虽然提供了channel来保证协程中的通信,在某些情况下,还是更适合使用锁来保证线程的安全. go语言中的锁分两种:互斥锁mutex和读写锁rwmutex 1.互斥锁 mutex 互斥锁是线程安全中最常用的锁,基本原理就是对某个操作进行加锁,无论读写同一时间内只有一个协程可以对当前数据进行操作,只有对当前锁解锁后其他协程才可以继续进行操作,互斥锁不可以重入,对一个已经加过锁的数据再次加锁会引起恐慌...

2019-02-15 11:57:25 1901 2

空空如也

空空如也

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

TA关注的人

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