07 2024 档案

go-zero api 调用 rpc 实践
摘要:目录rpc 部分proto定义rpc 代码生成完成 rpc server 业务逻辑修改 rpc 配置文件启动 rpc serverapi 部分api 定义复制 rpc 生成的代码到 api修改对应代码启动 api server测试及结果postman 发送请求apis erverrpc server 阅读全文

posted @ 2024-07-31 17:53 进击的davis 阅读(626) 评论(0) 推荐(0)

go-zero 自定义中间件的几种方式
摘要:目录1.通过 api 文件生成并填入具体逻辑定义 api生成对应的模板填充中间件逻辑2.在 server 启动前完成 中间件 的注册定义中间件:注册到 server 中 首先 go-zero 已经为我们提供了很多的中间件的实现,但有时难免有需求需要自定义,这里介绍几种自定义的方法,供参考。 1.通过 阅读全文

posted @ 2024-07-30 18:17 进击的davis 阅读(458) 评论(0) 推荐(0)

go-zero 微服务框架如何将日志输出到文件
摘要:在 go-zero 中,默认日志是输出到 控制台 的,项目运行起来后,往往都是输出到日志,今天看看 go-zero 框架的 API 功能的日志配置。 目前网上关于 go-zero 的配置相对少,找了一圈,没找到更多的资料或者案例,而且官方给的 doc 又是一笔带过,不多说,下面看看吧。 我们直接给出 阅读全文

posted @ 2024-07-30 12:32 进击的davis 阅读(489) 评论(0) 推荐(0)

golang 数组转为链表 - 正序和逆序
摘要:有时候,有这样的场景,我们需要就给定数组将其转为一个链表,通常的思路有两种: 正序 逆序 以下是具体的代码实现和测试函数: package main import ( "fmt" "testing" ) type listNode struct { next *listNode val int } 阅读全文

posted @ 2024-07-27 19:53 进击的davis 阅读(26) 评论(0) 推荐(0)

golang channel 和 mutex 及原子操作 用于并发控制的性能对比
摘要:场景: 对同个数加 10w 次,看耗费时间,这里没有用 benchmark 测试,在意的请略过。 以下是测试代码: package main import ( "fmt" "sync" "sync/atomic" "testing" "time" ) func TestCount(t *testin 阅读全文

posted @ 2024-07-24 10:09 进击的davis 阅读(120) 评论(0) 推荐(0)

golang 中的并发控制与优雅结束
摘要:目录并发控制通过 channel 实现信号通知自定义简单的协程池通过现有的 tunny/ants 协程池并发协程的优雅结束for-rangefor-select 提到 golang 并发,就可以联想到下列关键词: goroutine channel sync.WaitGroup sync.Mutex 阅读全文

posted @ 2024-07-23 15:39 进击的davis 阅读(140) 评论(0) 推荐(0)

golang 值接收者和指针接收者
摘要:代码示例 先看个代码: package main import ( "fmt" "testing" ) func TestValRecv(t *testing.T) { var a animal = dog{"五红犬"} a.eat() a.sleep() var b animal = &dog{" 阅读全文

posted @ 2024-07-22 16:17 进击的davis 阅读(94) 评论(0) 推荐(0)

golang channel 的众多应用场景123
摘要:目录1.应用场景2.应用场景示例2.1 并发控制2.2 管道 | 范围迭代 | 数据传输2.3 数据传递 -> 生产者-消费者模型2.4 互斥同步2.5 信号通知2.6 定时器 我们知道 go 中有个很重要的数据结构叫做 channel-通道,通过其特性,我们可以完成很多功能,自然就对应到很多应用场 阅读全文

posted @ 2024-07-13 14:48 进击的davis 阅读(469) 评论(0) 推荐(0)

go 结构体不同的字段顺序对内存的影响
摘要:这里主要涉及到结构体内存分配的问题,如下测试: package main import ( "fmt" "unsafe" ) func main() { fmt.Printf("A size: %d\n", unsafe.Sizeof(A{})) // 32 fmt.Printf("B size: 阅读全文

posted @ 2024-07-13 10:44 进击的davis 阅读(11) 评论(0) 推荐(0)

golang sync.Pool 的基本原理
摘要:目录1.源码解读注意开放的 APIPut()Get()pin() && pinSlow()Pool.getSlow(pid int) anyPool结构相关结构体poolCleanup()2.更多 sync.Pool 包寥寥不过300行代码,却可以为我们提供类似对象池的功能,减少了对象的重复创建于销 阅读全文

posted @ 2024-07-11 11:34 进击的davis 阅读(348) 评论(0) 推荐(0)

golang 内存逃逸 你应该知道的知识
摘要:逃逸分析 目录1.为什么要了解内存逃逸2.什么是逃逸分析3.内存逃逸的影响 - 性能和稳定性4.内存逃逸的原因5.内存逃逸的检测6.如何避免内存逃逸7.内存逃逸代码示例 原文链接: 一文弄懂 Golang 中的内存逃逸 1.为什么要了解内存逃逸 - 内存逃逸是 Go 语言编程中一个特别需要注意的问题 阅读全文

posted @ 2024-07-04 16:15 进击的davis 阅读(121) 评论(0) 推荐(0)

导航