01 2022 档案

摘要:Golang - sync.map 设计思想和底层源码分析 一.引言 在Go v1.6之前,内置map是部分goroutine安全的,并发读没有问题,并发写可能有问题 在Go v1.6之后,并发读写内置map会报错,在一些知名的开源库都有这个问题,所以在Go v1.9之前,解决方案是加一个额外的大锁 阅读全文
posted @ 2022-01-24 13:00 西*风 阅读(1543) 评论(2) 推荐(2) 编辑
摘要:排序算法分为内部排序和外部排序,我们经常说的排序算法就是内部排序 内部排序:数据记录在内存中进行排序 外部排序:排序的数据很大,一次性不能容纳全部的排序记录,在排序的过程中需要访问外存 稳定排序算法:相同的元素位置没有被改变 我们将要了解的排序算法如下: 交换排序:冒泡排序(可以是稳定,可以是不稳定 阅读全文
posted @ 2022-01-18 18:59 西*风 阅读(74) 评论(0) 推荐(0) 编辑
摘要:Golang - Map 内部实现原理解析 一.前言 Golang中Map存储的是kv键值对,采用哈希表作为底层实现,用拉链法解决hash冲突 本文Go版本:gov1.14.4,源码位于src/runtime/map.go 二.Map的内存模型 在源码中,表示map的结构体是hmap,是hashma 阅读全文
posted @ 2022-01-18 18:41 西*风 阅读(1752) 评论(0) 推荐(0) 编辑
摘要:Golang - slice 内部实现原理解析 一.Go中的数组和slice的关系 1.数组 在几乎所有的计算机语言中,数组的实现都是一段连续的内存空间,Go语言数组的实现也是如此,但是Go语言中的数组和C语言中数组还是有所不同的 C语言数组变量是指向数组第一个元素的指针 Go语言的数组是一个值,一 阅读全文
posted @ 2022-01-14 17:31 西*风 阅读(356) 评论(0) 推荐(0) 编辑
摘要:#Golang-Context扫盲与原理解析 一.什么是Context? context是一个包,是Go1.7引入的标注库,中文译做上下文,准确的说是goroutine的上下文,包含goroutine的运行状态,环境,现场等信息。 context主要用于在goroutine之间传递上下文信息,比如取 阅读全文
posted @ 2022-01-14 10:59 西*风 阅读(681) 评论(0) 推荐(0) 编辑
摘要:无限缓存channel的设计与实现 一.引言 Go语言的Channel有两种类型,一种是无缓存的channle,一个种是有缓存的channel,但是对于有缓存的channle来说,其缓存长度在创建时就已经固定了,中间也不能扩缩容,这导致对某些特定的业务场景来说不太方便 业务场景如下 : 爬虫场景,想 阅读全文
posted @ 2022-01-10 15:38 西*风 阅读(861) 评论(0) 推荐(0) 编辑
摘要:如何优雅的关闭channel? channel关闭原则 "如何优雅的关闭channel?",这种问题经常在面试题中出现,究其原因,是因为channel创建容易,但是关闭"不易",原因有以下三点: 关闭时机未知,在不改变channel自身状态的条件下,无法知道他是否已经关闭 不能无脑关闭,如果一个ch 阅读全文
posted @ 2022-01-06 11:19 西*风 阅读(710) 评论(0) 推荐(0) 编辑
摘要:Golang-channel底层实现精要 一.channel 背景知识 channel是Go语言内置的核心类型,可以将其看做一个管道,channel和goroutine一起为go并发编程提供了最优雅和便利的方案 在Go中有一句经典名言,永远不要通过共享内存来通信,而是要通过通信来共享内存,chann 阅读全文
posted @ 2022-01-05 16:05 西*风 阅读(944) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 59 - II. 队列的最大值 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例 1 阅读全文
posted @ 2022-01-04 18:07 西*风 阅读(44) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 49. 丑数 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数 阅读全文
posted @ 2022-01-04 11:08 西*风 阅读(57) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示