随笔分类 - golang
摘要:golang 提供了几个简单的容器供我们使用,本文在介绍几种Golang 容器的基础上,实现一个基于Golang 容器的LRU算法。 容器介绍 Golang 容器位于 container 包下,提供了三种包供我们使用,heap、list、ring. 下面我们分别学习。 heap heap 是一个堆的
阅读全文
摘要:title: Golang Map 实现 (四) date: 2020-04-28 18:20:30 tags: golang map 操作,是map 实现中较复杂的逻辑。因为当赋值时,为了减少hash 冲突链的长度过长问题,会做map 的扩容以及数据的迁移。而map 的扩容以及数据的迁移也是关注的
阅读全文
摘要:本文在golang map 数据结构的基础上,学习map 数据是如何访问的。 map 创建示例 在golang 中,访问 map 的方式有两种,例子如下: 第一种方式不判断是否存在key值,直接返回val (可能是空值) 第二种方式会返回一个bool 值,判断是否存在key 键值。(是不是和redi
阅读全文
摘要:本文在golang map 数据结构的基础上,学习一个make 是如何构造的。 map 创建示例 在golang 中,初始化一个map 算是有两种方式。 第一种方式默认不指定map的容量,第二种会指定后续map的容量估计为100,希望在创建的时候把空间就分配好。 当make创建map时,底层做了什么
阅读全文
摘要:本文学习 Golang 的 Map 数据结构,以及map buckets 的数据组织结构。 hash 表是什么 从大学的课本里面,我们学到:hash 表其实就是将key 通过hash算法映射到数组的某个位置,然后把对应的val存放起来。 如果出现了hash冲突(也就是说,不同的key被映射到了相同的
阅读全文
摘要:本文从源码角度学习 golang slice 的创建、扩容,深拷贝的实现。 内部数据结构 slice 仅有三个字段,其中array 是保存数据的部分,len 字段为长度,cap 为容量。 通过下面代码可以输出空slice 的大小: 创建 创建一个slice,其实就是分配内存。cap, len 的设置
阅读全文
摘要:今天,通过一个例子,一方面熟悉trace在自定义范围内的分析,另一方面golang 在协程调度策略上的浅析。 Show Code 首先,代码的功能非常简单,只是启动10个协程,每个协程处理的工作都是一样的,即把0 ... 1000000000 做了sum 运算。 其次,代码中,添加了Task 和 T
阅读全文
摘要:本文对比试验采用官方包做json map 和struct 编码。 数据构造 map 数据类型为map[string]string , key 长度为10, val 长度为100 struct 定义如下: golang type Object struct { Xvlbzgbaic string Kr
阅读全文

浙公网安备 33010602011771号