Go
文章平均质量分 95
Golang学习笔记
邋遢的流浪剑客
成长中的基础架构攻城狮
展开
-
Go协程池gopool源码解析
gopool的用法非常简单,将曾经我们经常使用的替换为即可此时gopool将会使用默认的配置来管理你启动的协程,也可以选择针对业务场景配置池子大小以及扩容上限}()})原创 2024-04-05 09:49:05 · 1781 阅读 · 0 评论 -
深入理解Go语言GC机制
那么黑色对象就是我们程序逻辑可达(需要的)对象,这些数据是目前支撑程序正常业务运行的,是合法的有用数据,不可删除,白色的对象是全部不可达对象,目前程序逻辑并不依赖它们,那么白色对象就是内存中目前的垃圾数据,需要被清除。这里要注意的是,本次遍历是一次遍历,非递归形式,是从程序抽出可抵达的对象遍历一层,如上图所示,当前可抵达的对象是对象1和对象4,那么自然本轮遍历结束,对象1和对象4就会被标记为灰色,灰色标记表就会多出这两个对象。所以Go 1.3做了简单的优化,将STW的步骤提前,减少STW暂停的时间范围。原创 2023-12-04 07:43:40 · 693 阅读 · 0 评论 -
深入理解GMP模型
实现了线程M1的复用。G2在创建G7的时候,发现P1的本地队列已满,把P1中本地队列中前一半的G,还有新创建G转移到全局队列(实现中并不一定是新的G,如果G是G2之后就执行的,会被保存在本地队列,利用某个老的G替换新G加入全局队列)假定当前除了M3和M4为自旋线程,还有M5和M6为空闲线程(没有得到P的绑定,注意这里最多就只能存在4个P,所以P的数量应该永远是M>=P,大部分都是M在抢占需要运行的P),G8创建了G9,G8进行了。2)M创建的时机是在当没有足够的M来关联P并运行其中可运行的G的时候。原创 2023-12-04 06:52:42 · 2296 阅读 · 0 评论 -
Go基础学习笔记(二):错误处理和资源管理、Goroutine、Channel、迷宫的广度优先搜索、http及其他标准库
1)defer调用2)何时使用defer调用3)、服务器统一出错处理项目根目录下有hello world.txt,访问http://localhost:8888/list/hello%20world.txt,返回hello world访问http://localhost:8888/list/,返回Not Found拷贝一个hello world2.txt文件,修改访问权限访问http://localhost:8888/list/hello%20world2.txt,返回Forbidden1)原创 2022-07-02 11:03:11 · 559 阅读 · 0 评论 -
Go基础学习笔记(一):基础语法、内建容器、面向对象、依赖管理、面向接口、函数式编程
1)使用var关键字可放在函数内,或直接放在包内使用var()集中定义让编辑器自动决定类型2)使用:=定义变量只能在函数内使用1)内建变量类型2)强制类型转换:类型转换是强制的,Go语言只有强制类型转换没有隐式类型转换3)、常量与枚举1)常量定义const数值可作为各种类型使用2)使用常量定义枚举类型3)变量定义要点回顾1)ifif的条件里不需要括号if的条件里可以赋值if的条件里赋值的变量作用域就在这个if语句里2)switchswitch会自动break,除非使用fall原创 2022-06-20 08:38:31 · 741 阅读 · 2 评论