自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 问答 (2)
  • 收藏
  • 关注

原创 go的error的分析

error处理对于我们写程序来说是一个很重要的东西,比如http,grpc的error,他们是errcode和errmsg的解析,而且内部的errcode的常量数字已经写死了,某个常量code对于具体的msg,感兴趣的可以去看看errcode的代码,但是对于error的产生,他有很多种方法,比如我们看到的当然也有自定义struct将error包裹进去的,对于这样error的分析,我们只要知道它的原理,所有的东西就会迎刃而解,对于程序员而说,只有有源码在手,没有分析不出的问题。

2024-06-26 17:56:27 976

原创 go自定义数据的序列化流程

对于网络传输数据而言,在go中只要是[]byte的格式就能进行传输,对于最简单的client->server->mysql,然后数据再传回来的简单流程来分析(其实对于一个进程来说,没有client和server之分,一个进程即可能是客户端,也可能是服务端,mysql本身就是一个server,只是功能不同,笼统来说,没有本质上的区别),本篇以decimal的数据来分析,它的github地址 "github.com/shopspring/decimal"

2024-06-20 17:05:34 683

原创 go的结构体和反射分析

对于UserChild来说,上面的两个函数,指针的调用上面的接口,非指针调用下面的接口,即函数名相同就覆盖,和receiver的是否指针没有关系,和上面测的user是一样的,是否修改只看receiver是否指针有关,和嵌入结构体是否指针无关,最后反射出来的和实际的结构体调用是有区别的,结构体反射出来的,不能调用receiver是指针的函数,切记!反射出来的,结构体指针可以调用那两个函数,而且是否修改也和receiver是否是指针有关,但是结构体就不能调用receiver是指针的,因为它只有一个函数。

2024-04-01 14:31:51 615 1

原创 go的分布式链路追踪(2)

现在为止,第一章生成的四个span的数据的字段(Name,SpanContext,Parent,SpanKind,StartTime,EndTimeAttributes,Events,...),应该都可以读懂了,可以根据这些字段找到父子级的层级关系和时间长短。

2023-12-21 11:47:31 1274

原创 go的分布式链路追踪(1)

本文是在go1.19.11,go-zero1.6.0的user.api和user.rpc两个服务为例子来分析OpenTelemetry的用法。写博客的目的,是用最通俗的语言记录现在,为了让自己不遗忘。首先本文分析的链路是我们通过日志的json格式打印出的 上面对应的span上面的span的属性,我们先不介绍,等开始看源码的时候。

2023-12-20 16:19:45 1162

原创 go的rpc的server分析

上面代码中的注释,基本上把rpc分析完毕,rpc的server很简单,用gob格式读取数据(有兴趣的可以去看看gob读取数据的格式),没有grpc的chain的函数洋葱模型,而且调用函数时,rpc是根据反射来new的args和reply,不像grpc直接生成好对应的结构体,直接给函数地址就好了,这点上grpc性能要好一点,但是rpc有更大的灵活性,可以根据它修改成参数和返回值是自定义的,毕竟实现的少。rpc还是很简单的,最后本人能力有限,如果上面的有纰漏和问题,欢迎大佬指出。

2023-12-18 17:24:10 459

原创 grpc的server分析

将UnaryServerInterceptor函数数组,进行递归调用,从0到n,其中的handler,就是我们前面生成的_User_Login_Handler函数,这个就是一个洋葱模型,和gin的模式差不多,gin是for递归,其实本质差不多,各位可以去试试,所以最终的s.opts.unaryInt = chainedInt,获取到了递归的一个函数的地址。grpc的server的主体实现逻辑还是很清晰简单,可能具体的难点是细节吧,由于本文内容已经很多了,go的rpc放到下章去讲。

2023-12-18 14:28:00 1104

原创 go的http的totalTimeout分析

本文的是在go版本是1.19.11。

2023-11-23 18:10:04 865

原创 mysql的insert锁解析

本文是读了作者加锁文章之后,想弄清楚insert的加的什么锁,搞的一个测试记录。

2023-11-22 14:25:58 506

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除