首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Golang
IguoChan
创建于2022-07-26
订阅专栏
Golang相关的技术分享
等 17 人订阅
共21篇文章
创建于2022-07-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Golang语言基础—函数调用
1. C语言的函数调用惯例 所谓“调用惯例(calling convention)”是调用方和被调用方对于函数调用的一个明确的约定,包括:函数参数与返回值的传递方式、传递顺序。只有双方都遵守同样的约定
Go数据库迁移
0. 简介 本文将介绍两个Go生态中常见的数据库迁移工具——golang-migrate和gormigrate。 1. golang-migrate golang-migrate的官方Github是链
Golang内存管理—内存逃逸
0. 简介 前面我们针对Go中堆和栈的内存都做了一些分析,现在我们来分析一下Go的内存逃逸。 学习过C语言的都知道,在C栈区域会存放函数的参数、局部变量等,而这些局部变量的地址是不能返回的,除非是局部
Golang内存管理—栈空间管理
0. 简介 前面我们分别介绍了堆空间管理的内存分配器和垃圾收集,这里我们简单介绍一下Go中栈空间的管理。 1. 系统栈和Go栈 1.1 系统线程栈 如果我们在Linux中执行 pthread_crea
Golang内存管理—垃圾收集器:栈对象处理
0. 简介 上一篇博客,我们基本介绍了Golang的GC原理,这里我们触及一下GC过程中栈对象的处理。其实问题的起因在于我最开始对栈对象在GC时的生存周期的误解,最初我认为:栈对象会在栈返回后才会自动
Golang内存管理—垃圾收集器
0. 简介 和C/C++等语言使用手动的方式管理堆内存不同,Go和Python、Java使用自动的内存管理系统,包括垃圾收集(Garbage Collection,缩写GC)机制。下面,我们将介绍垃圾
Golang内存管理—内存分配器
0. 简介 程序中的数据都会被分配到程序所在的虚拟内存中,内存空间包含两个重要区域:栈(Stack) 和 堆(Heap)。函数调用的参数、返回值和局部变量大部分会分配在栈上,这部分由编译器管理。堆内存
Golang并发编程—锁
0. 简介 前面我们讲过Go中channel的实现,在这篇博客中,我们来讲一下锁Mutex族的实现。 1. 并发原语 Go 语言在 sync 包中提供了用于同步的一些基本原语,包括常见的sync.Mu
Golang并发编程—Channel
0. 简介 传统的并发编程模型是基于线程和共享内存的同步访问控制的,共享数据受锁的保护,线程将争夺这些锁以访问数据。通常而言,使用线程安全的数据结构会使得这更加容易。Go的并发原语(goroutine
Golang调度器(9)—总结
0. 简介 前面几篇博客,我们针对Golang调度器进行了介绍,下面,我们总结一下以上的知识点。 1. goroutine的意义 其实,在Go中,为什么不使用操作系统线程,而要发明goroutine及
Golang调度器(8)—系统监控
0. 简介 前面多个章节,我们介绍了Golang调度器的各种工作原理,其中提到了在main goroutine创建的过程中,会新建一个不在调度中的线程,执行sysmon任务,这个任务也称为系统监控任务
Golang调度器(7)—网络轮询器
0. 简介 上篇博客提到了goroutine有关系统调用的调度进行了叙述,对于IO密集型的访问,每次请求都可能导致一次M的创建,这其实是不能接受的。Go SDK为了解决网络IO密集型的应用场景,开发了
Golang调度器(6)—系统调用
0. 简介 上篇博客,我们分析了Go调度器中的抢占策略,这篇,我们将分析一下,在系统调用时发生的调度行为。 1. 系统调用 下面,我们将以一个简单的文件打开的系统调用,来分析一下Go调度器在系统调用时
Golang调度器(5)—协作与抢占
0. 简介 在上篇博客——《Golang调度器(4)—goroutine调度》中一直遗留了一个没有解答的问题:如果某个G执行时间过长,其他的G如何才能被正常调度,这就引出了接下来的话题:协作与抢占。
Golang调度器(4)—goroutine调度
0. 简介 上篇博客介绍了goroutine的创建、执行和退出的过程,并且提及了在协程切换时涉及的调度循环,本篇博客我们就来探究一下其他情形引起的协程调度。 1. 协程调度发生的时机 在以下情形中,g
Golang调度器(3)—goroutine的创建、执行和退出
0. 简介 上一篇博客我们分析了调度器的初始化,这篇博客我们正式进入main函数及为其创建的goroutine的过程分析。 1. 创建main goroutine 接上文,在runtime/asm_a
Golang调度器(2)—Go调度器初始化
0. 简介 上一篇博客简单介绍了GMP模型,这一篇我们介绍一下Go调度器的初始化过程,也就是在main.main函数运行之前所做的事情。 1. 一些全局变量 在proc.go和runtime.go中有
Golang调度器(1)—GMP是什么
0. 简介 传统的并发编程模型是基于线程和共享内存的同步访问控制的,共享数据受锁的保护,线程将争夺这些锁以访问数据。通常而言,使用线程安全的数据结构会使得这更加容易。Go的并发原语(goroutine
Golang基础数据结构—map
0. 简介 哈希表是常见的数据结构,有的语言会将哈希称作字典或者映射,在Go中,哈希就是常见的数据类型map。 哈希表提供了键值之间的映射,其读写性能是O(1),要想实现一个性能优异的哈希表,有两个关
Golang基础数据结构—字符串
1. 字符串简介 由于Go语言的源代码要求是UTF8编码,导致Go源代码中出现的字符串面值常量一般也是UTF8编码的。源代码中的文本字符串通常被解释为采用UTF8编码的Unicode码点(rune)序
下一页