2023年1月21日

go内存逃逸

摘要: 逃逸分析 go在编译时确定是否逃逸,逃逸分析是编译器决定变量分配到栈上还是堆上的一种行为。 查看逃逸分析日志:go build -gcflags=-m其中,-m打印出逃逸分析的优化策略。 指针逃逸 函数局部变量优先分配到栈上。如果编译器不能确保变量在函数return之后不再被引用,那么编译器就会将变 阅读全文

posted @ 2023-01-21 20:40 王景迁 阅读(45) 评论(0) 推荐(0) 编辑

go检测命令

摘要: map并发读写场景未加锁 package main import "time" func main() { m := make(map[int]int) go func() { for i := 0; i < 10000; i++ { m[0] = 1 } }() go func() { for i 阅读全文

posted @ 2023-01-21 19:52 王景迁 阅读(11) 评论(0) 推荐(0) 编辑

go RWMutex源码分析

摘要: 适用场景 并发场景下读多写少。 字段含义 RWMutex基于Mutex,写优先,Lock函数(反转readerCount)会阻止新的reader获取锁。 type RWMutex struct { w Mutex // writer之间互斥 writerSem uint32 // writer信号量 阅读全文

posted @ 2023-01-21 19:30 王景迁 阅读(44) 评论(0) 推荐(0) 编辑

go sync.Once源码分析

摘要: 适用场景 服务启动时读取全局配置。单个函数流程里面只调用一次。 源码 双重检查done值是0后,加锁执行指定函数并把done值改成1。 type Once struct { done uint32 m Mutex } func (o *Once) Do(f func()) { if atomic.L 阅读全文

posted @ 2023-01-21 17:43 王景迁 阅读(16) 评论(0) 推荐(0) 编辑

go WaitGroup源码分析

摘要: 适用场景 等待若干个任务执行完成。 实现原理 字段 type WaitGroup struct { 省略 // 存储waiter数、WaitGroup计数和信号量 state1 [3]uint32 } 添加任务Add函数 设置WaitGroup计数 func (wg *WaitGroup) Add( 阅读全文

posted @ 2023-01-21 16:20 王景迁 阅读(17) 评论(0) 推荐(0) 编辑

go Channel源码分析

摘要: 理论基础 不要通过共享内存来通信,要通过通信来共享内存。 特点 通道分为非缓冲通道和缓冲通道。单向通道由双向通道转换而来,但是单向通道不能转换回双向通道。 通过make来初始化一个chan,未初始化的chan的零值是nil。 接收数据时,返回两个值。第一个值是返回的chan中的元素,第二个值是boo 阅读全文

posted @ 2023-01-21 09:59 王景迁 阅读(47) 评论(0) 推荐(0) 编辑

2023年1月14日

获取kubelet管理的容器

摘要: k8s 1.15 pkg/kubelet/kuberuntime/kuberuntime_container.gogetKubeletContainers方法获取kubelet管理的所有业务容器(true表示包括退出的和死亡的容器,用于GC)补充代码 kubelet日志 容器情况 启动一个基于Ngi 阅读全文

posted @ 2023-01-14 14:40 王景迁 阅读(94) 评论(0) 推荐(0) 编辑

2023年1月8日

curl

摘要: 打印curl总耗时 echo "time_total is %{time_total}s\n" > curl-format.txt curl -w "@curl-format.txt" -o /dev/null -s -L http://localhost:1000/test -w:从文件中读取打印 阅读全文

posted @ 2023-01-08 19:34 王景迁 阅读(46) 评论(0) 推荐(0) 编辑

2023年1月1日

arthas输出方法的请求参数和返回值

摘要: 运行jar包 java -jar demo-0.0.1-SNAPSHOT.jar 下载Arthas并启动 curl -O https://alibaba.github.io/arthas/arthas-boot.jar && java -Dfile.encoding=UTF-8 -jar artha 阅读全文

posted @ 2023-01-01 15:54 王景迁 阅读(382) 评论(0) 推荐(0) 编辑

2022年12月17日

GC测试

摘要: 基于SpringBoot来开发接口并编译运行 代码 UserController类 package com.wjq.demo; import org.springframework.web.bind.annotation.RequestMapping; import org.springframew 阅读全文

posted @ 2022-12-17 14:37 王景迁 阅读(125) 评论(0) 推荐(0) 编辑

导航