随笔分类 - go
摘要:背景:ent开始debug模式后,可以输出日志,但是我们想为ent接入zerolog,该怎么做呢? 一、引入zerolog go get -u github.com/rs/zerolog 二、自定义zerolog配置 customLog := func(args ...any) { str := f
阅读全文
摘要:背景:ent模式是没有开启debug模式的 开启ent的调试模式有2种方法: 一、通过配置选项开启 client, err := ent.Open("mysql", "root:dev@123456@tcp(localhost:3306)/test?parseTime=True", ent.Debu
阅读全文
摘要:背景: Mac 13.5.2 + kratos + docker + mysql 8.0.14 + navicat 16 在使用kratos进行接口开发之前,假设你已经安装了 go 、protoc 、protoc-gen-go 、 kratos,如果还没有安装,请先执行下面的命令进行安装: brew
阅读全文
摘要:背景:开发中,免不了要对代码进行debug调试,go也不例外,使用go-zero框架时,该怎么对项目进行调试呢? 以user模块为例,找到service/user/api/user.go,这是user模块的入口,打开user.go可以看到main函数。 TRANSLATE with x Englis
阅读全文
摘要:背景:提到线程池,我们会有大概的印象,通常我们对线程池的理解是:一组活跃的线程,但是这种理解是片面的,不完整的,为此,在手写线程池之前,我们一定要明确线程池到底是什么?不要以我以为的方式去写代码。 一、线程池有以下要素组成 线程队列(Task Queue):用于存储待执行的任务,通常是一个先进先出(
阅读全文
摘要:背景:学校开学,3位同学要买票回校上课了,就有了这样一个购票程序,当然,实际情况复杂的多,本文仅供参考。 package main import ( "fmt" "sync" ) type Train struct { station map[string]int mu sync.Mutex } f
阅读全文
摘要:背景:线程的合作执行,体现的是团结协作,应该是比较理想的状态,如果人人都能够少一些算计、多一点互帮互助,那该有多好啊?班主任不是资本家,班级更应该提倡团队精神,学生之间不应该竞争,应该互相协作!本文以团结协作为出发点,讲解线程的合作执行。 为了适应线程协作的场景,我们需要先搞明白下面的几个关键点:
阅读全文
摘要:背景:本文是对:go并发编程系列四:线程分组及控制线程的交替执行 的扩展,假定场景基本一致,唯一不同的是:本文中的张三、李四需要按序执行,通俗的讲就是:张三、李四对应的线程虽然同属于一组,但谁的线程先执行,就由谁优先完成班主任规定的一组任务。 拆分为技术片段的话,意味着:张三、李四对应的线程由普通线
阅读全文
摘要:背景:在上一篇中,作为班主任的你,对班级的管理初见成效,但理想和现实总有差距,理想情况下,从接手一个调皮的班级到班级的管理井井有条,是从0到1的跨越,没有中间的过渡阶段,然而,现实是:班级里少不了调皮的学生,对于这样的情况,应该怎么办呢?这篇文章讲解的正是现实中从0到1的过渡阶段,本文仅以讲解技术为
阅读全文
摘要:背景:在go并发编程系列二,你作为班主任,接手了有三个学生的班级,现状是这三个学生很调皮,看起来乱糟糟的,三个学生就是三个线程,怎么变的有序呢?答案是:给线程加锁!加锁需要使用go标准包的sync.Mutex,这是一个互斥锁。 给线程加锁的代码: package concurrent import
阅读全文
摘要:在go语言中,使用线程的格式是: go 函数名 当然,你也可以使用匿名函数,我们建立三个线程,代码如下: go test1() go test2() go func() { }() 是不是很简单? 在下一系列中,我们将扩展这三个线程,进一步讲解go的并发编程! TRANSLATE with x En
阅读全文
摘要:背景:Windows11 + goland 2021.1.3,搭载30天的试用插件和一些基本插件,没有其他插件,因为同时开启了多个ide窗口,关闭之后,就打不开了 解决: 这类问题,去年的时候遇到过一次,当时是关闭idea以后就启动不了,因为工作比较忙,解决以后就没有来得及记录,依稀记得是插件导致的
阅读全文
摘要:go-zero内置了对redis的支持,遗憾的是并不能指定DB,默认的是DB0,这个问题有人在go-zero官方提出过issue,详见:https://github.com/zeromicro/go-zero/issues/652 我们从go-zero的core/stores/redis/redis
阅读全文
摘要:在之前的go-zero教程里,我们介绍了使用演示工程开发user模块和search模块,为了更直观的呈现请求的生命周期,我们引入:链路追踪,这里我们使用的链路追踪工具是jaeger,如果你想了解更多jaeger的内容,可以参考这里 https://rocdu.gitbook.io/jaeger-do
阅读全文
摘要:随着go-zero和相关依赖包版本的更新,以下注意事项里提到的规则可能会有所不同,请注意! 一、查看go-zero版本信息 go list -m -versions github.com/tal-tech/go-zero/tools/goctl 二、JWT参数配置 1.配置jwt时,AccessSe
阅读全文
摘要:以下内容,参考了go-zero官方文档,是对官方文档的进阶指南章节的梳理汇总。 go-zero的进阶指南,请参考 https://go-zero.dev/cn/docs/advance/business-dev 通过本文,你将学习到如下知识点: 1.如何使用go-zero定义api文件 2.如何为定
阅读全文
摘要:以下内容,参考了go-zero官方文档,是对官方文档的进阶指南章节的梳理汇总。 go-zero的进阶指南,请参考 https://go-zero.dev/cn/docs/advance/business-dev 通过本文,你将学习到如下知识点: 1.如何使用go-zero定义api文件 2.如何为定
阅读全文
摘要:数组作为一种常见的数据结构,在实际工作中对数组的排序应用场景非常普遍,无论是php、java、还是今天要说的go,每一种语言都有其特定的实现方式。 我们学习过go语言的标准包和array的用法,我们或许已经知道,可以使用sort.Ints和sort.Slice函数进行排序,但是这个函数只能对纯数字形
阅读全文
摘要:Updating the Go Memory Modelhttps://research.swtch.com/gommGetting Started with Go Programminghttps://www.programiz.com/golang/getting-startedHow to W
阅读全文
摘要:需要用到一个go开发的工具,叫license,在Windows下安装这个工具,请确保你使用的go sdk是1.16以上的版本,然后执行下面的命令: go install github.com/nishanths/license/v5@latest 接着,转到要生成授权协议的项目所在的根目录,在项目的
阅读全文