首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
go 语言基础
洛_
创建于2021-06-27
订阅专栏
此专栏系统的介绍了 go 相关的基础知识, 旨在通过此专栏的内容搭建一个 go 的知识体系。在专栏中, 主要介绍了 go 基础语法,调优,调度模型,单测以及并发编程的知识。
等 12 人订阅
共28篇文章
创建于2021-06-27
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
并发编程(九) - 总结
在并发编程系列中,我们详细介绍了 atomic、mutex、sem、waitgroup、once、sync.map、pool 等并发原语。这些原语使用起来很简单,弄清楚原理似乎并不那么容易。
并发编程(八) - Pool: 池化技术
sync.pool 巧妙的利用 GMP 调度模型和无锁队列来实现对象池。需要注意的点是对于不使用的对象,在两个 GC 周期后将被回收。池化技术是一种很常见的优化技术。
并发编程(七) - Map: 并发安全的哈希表
map 是我们最常使用的数据结构,用于快速查找键值对。然而,在 go 中内置的 map 并不是并发安全的。并发写还会导致 panic。
并发编程(六) - Once: 只执行一次的操作
Once 是一个很简单但却非常实用的工具类。通常用来解决并发场景下 initOnce 的问题。OnceFunc 和 Once 其实是相互补充,核心区别就开如何对 panic 进行处理。
并发编程(五) - RWMutex: 读写锁
对于互斥的场景,使用 Mutex 肯定没有任何问题,它保证了对应的操作在任何时刻只能被一个 goroutine 所执行。然而对于读多写少的场景,每次操作都互斥显然成本是有点高的。
并发编程(四) - WaitGroup 协同控制
WaitGroup 协同控制工具。主要使用场景是等待多个 gotoutine 完成任务之后执行其他操作。在使用时需要注意要让 Add 方法在 Wait 之前执行,同时避免并发执行的场景。
并发编程(三) - Sem 信号量
信号量最初由荷兰计算机科学家 Dijkstra 在 1965 年提出,它是一种用于控制并发访问共享资源的机制。
并发编程(二) - Mutex 互斥锁
Mutex(Mutual exclusion) 又叫互斥锁,用于保护临界区,防止多个 goroutine 同时访问临界区。
并发编程(一) - atomic 原子操作
多核处理器的出现解决了单核处理器在性能提升上的瓶颈问题,通过在一个芯片上集成多个处理器核心,可以提供更高的计算性能。然而,多核处理器的引入也带来了新的问题:数据竞争。
聊一聊 go 的调度器 GMP 模型
本文介绍了一下 Go 的 GMP 模型,分析了一下整体的调度流程。最后,介绍如何通过 debug 查看 GMP 的详细信息,加深对 Go 调度器的理解。
聊一聊 go 的垃圾回收 GC 机制
本文主要介绍下 GC 的基本概念、常见的 GC 算法、go 的 GC 过程,最后介绍一些 GC 优化的方法来提升服务性能。
聊一聊 go 的 pprof
本文简单介绍了 golang 的性能分析工具。如何进行性能采样, 查看采样的数据并对其进行分析。介绍了 Graph、Flame Graph、Source、Top 的用法。
聊一聊 go 中的单元测试
单测定义 在计算机编程中, 单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。
聊一聊 error message
一个好的错误信息, 需要使用简短的信息描述错误是怎么发生的, 这个错误具体是什么, 告诉调用方如何处理它。
golang 并发模型:流水线模型
go 语言可利用流水型模型提高并发能力, 充分利用计算机的性能。本文主要介绍流水线模型的搭建, 以及并发情况下如何优雅的退出。
聊一聊 go 的 singleflight
singleflight 是一个很简单的 pkg, 代码量比较少, 很值得大家去学习源码。了解其用法。
聊一聊 go 的依赖管理 module
go 在 1.11 之后引入的一种依赖管理解决方案,1.14 之后官方明确建议在生产环境上使用。有以下优势: 准确记录依赖版本、可重复构建、使用语义化版本控制规范、同一个版本的依赖库无需重复下载
聊一聊 go 的泛型 Generic
泛型(Generic)是一种编程技术。在强类型语言中, 允许编写代码时使用以后才指定的类型, 在实例化时指定对应的类型。 在泛型中,可以使用类型参数来代替具体的数据类型。
聊一聊 go 接口 interface
本文主要介绍了一下 go 中的基础接口类型, 主要讲下接口的声明、接口实现、接口比较以及类型断言。在正式开发中不要为了使用接口而定义接口。
聊一聊 go 的 unsafe 包
在一些底层库中,经常会看到引用 unsafe 包的地方. 通过 unsafe 包提供一些方法, 可以直接让过 go 的类型检查, 直接操作内存, 从而提供一些 trick 操作, 提升性能。
下一页