首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Golang
zxx
创建于2021-05-15
订阅专栏
用于个人Golang知识的整理
等 9 人订阅
共25篇文章
创建于2021-05-15
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
zxx
1年前
Go
go gc垃圾回收
gc入口 手动出发:runtime.GC 内存使用达到某个阈值:runtime.mallocgc 后台有个goroutine每2min触发一次:forcegchelper 三色 黑色:已经扫描完毕,子
1499
7
1
zxx
1年前
Go
go 内存分配
名词解释 arena go将堆地址空间分为一个个arena,在32位系统中,一个area为4MB大小,在64位系统中,一个arena为64MB大小。 每个area中又分为8192个page,每个pag
221
1
评论
zxx
1年前
Go
源码分析go的mcall&gogo
go version go1.16.4 darwin/amd64 平时阅读go源码的时候,总能发现某处调用了mcall,这个函数的作用是从当前g的栈切换到g0的栈,并调用函数fn(g),并将BP/PC
287
2
1
zxx
1年前
Go
源码剖析go基于信号的抢占式调度
go version: 1.17 system: macos 信号的在程序中无非就是注册,发送信号以及信号的处理这三个流程,下面按照这个流程一个一个的进行分析 信号的注册 通过setsig来进行对某一
570
3
1
zxx
1年前
Go
golang netpool源码分析
go version: 1.17 结构体 以上几个结构体的关系如下 listen listen的调用顺序 net.Listen ListenConfig.Listen sysListener.list
655
2
1
zxx
1年前
Go
后端
深入interface原理
go version:1.17 macos 类型转换 指针类型 查看汇编代码: go tool compile -S -N -l main.go 接下俩分段解读以上代码. 将*_type放入AX中,A
328
2
1
zxx
1年前
Go
后端
go1.17调用规约的改动
在go 1.17,函数调用规约有更新,会使用九个寄存次存放参数和返回值,而在go1.17之前,函数调用时的参数与返回值都会放在栈上,所以分别用go1.17和go1.16.4来验证下 测试代码如下: 1
530
2
1
zxx
1年前
Go
源码分析go map
map结构 hmap.B 在map中,桶的个数 n=2^B 次方,但是为什么规定是2^B呢,因为hash%n可以定位桶,但是%操作速度没有位运算快. 当n为2的B次方时,有如下替换公式: hash%n
165
1
评论
zxx
1年前
Go
源码分析go channel以及相关的操作
go version: 1.17 本文从源码层面分析channel是如何创建、发送、接收、关闭的。 找到源码位置 查看汇编代码: go tool compile -S -l -N main.go 输出
431
2
评论
zxx
1年前
Go
后端
源码分析go调度器四: 非main goroutine的调度循环
本节的重点主要有: 非main goroutine如何返回到goexit的 mcall如何切换到g0继续执行的 调度循环 有如下代码 编译go build -gcflags "-N -l" -ldfl
277
2
评论
zxx
1年前
Go
后端
源码分析go调度器三: main goroutine的执行
上一节创建好了main goroutine,并将其放入了allp[0]的runnext中,这一节分析main goroutine是如何被调度到cpu上执行的 执行完CALL runtime·newpr
1303
1
评论
zxx
1年前
Go
源码分析go调度器二: main goroutine的创建
前一节schedinit完成了调度器的初始化,接下来会通过newproc创建一个goroutine来执行runtime.main函数 创建main goroutine asm_amd64.s:214
325
2
评论
zxx
1年前
Go
后端
源码分析go调度器一: 调度器初始化
找到程序入口 go build main.go 后,用gdb,sudo gdb main (我自己是macos,不加sudo的话,gdb会卡死),并在gdb中执行info files找到可执行程序入口
452
2
评论
zxx
1年前
Go
后端
gdb 分析go函数栈帧
go version: 1.16 汇编指令 rip寄存器:存放的是CPU即将执行的下一条指令在内存中的地址。这个rip是CPU自动控制的,不用我们修改。 rsp栈顶寄存器和rbp栈基寄存器:rsp存放
554
4
评论
zxx
1年前
Go
go的启动流程
go版本: 1.17 使用goland以及gdb 1.找到程序入口 1.1先build出可执行程序 go build main.go 1.用gdb找到入口 sudo gdb main (我自己是mac
145
2
评论
zxx
1年前
Go
goroutine调度
go1.17 schedule永远不会返回 schedtick: incremented on every scheduler call 为了保证公平,这个P每61次执行goroutine就要从全局队
353
点赞
评论
zxx
1年前
Go
grpc-gateway使用
初始化项目 创建相关文件夹 编写proto 创建proto/hello.proto文件 $\color{#005bb7}{编译proto文件}$ 会在proto目录下生成hello.pb.go和hel
666
点赞
评论
zxx
1年前
Go
后端
etcd distributed lock
Etcd有以下机制,用他们来实现分布式锁 Lease 机制:即租约机制(TTL,Time To Live),Etcd 可以为存储的 Key-Value 对设置租约,当租约到期,Key-Value 将失
515
点赞
评论
zxx
2年前
后端
redis distributed lock
仅作为笔记 SETNX SETNX KEY_NAME VALUE 在指定的 key 不存在时,为 key 设置指定的值。 返回值 GETSET GETSET KEY_NAME VALUE 设置指定 k
153
点赞
评论
zxx
2年前
Redis
redis cluster mode
1. 创建docker 网络 docker network create redis --subnet 172.38.0.0/16 2.创建配置文件 3.启动六个redis container (这里
131
点赞
评论
下一页