Go
文章平均质量分 91
心的步伐
wx公众号: AaronCoding 欢迎关注呀,用技术让生活变得更加美好!
如果自己失去了斗志,就来这看看,看到自己在那个时候的自己是什么模样,然后对比现在,笑一笑,深呼吸一下,再继续向前,不行就去奔跑一番再回来,会发现自己是一个奋战到死的勇士!
风里雨里,我会等你,虽然你在遥远的地方,我始终相信距离永远不是阻隔我俩的最大敌人!时间是我们跨越山河的动力,加油!
展开
-
RPC与服务的注册发现
主要介绍RPC的工作流程和原理以及和REST的区别,同时针对RPC相关的实施gRPC进行实践,最后介绍了关于RPC的服务注册与发现相关的实现。原创 2024-07-14 17:32:11 · 1280 阅读 · 0 评论 -
不规范操作chan引发的线上panic
因为代码逻辑的疏忽导致代码产生了严重的panic进而导致服务逻辑停止,一切都源自于对已经关闭的chan进行写操作,从而导致了panic的产生。原创 2024-07-13 00:00:32 · 744 阅读 · 0 评论 -
学习cel-go了解一下通用表达语言评估是什么
通用表达语言(CEL)是一种非图灵完备性语言,旨在简单、快速、安全和可移植。CEL的类C语法看起来与C++、Go、Java和TypeScript中的等效表达式几乎相同。原创 2024-06-15 19:10:07 · 1484 阅读 · 0 评论 -
监听DB配置变更之go-broadcast简单实现
go-broadcast简单实现DB配置变更快速通知功能原创 2024-06-10 14:27:14 · 1041 阅读 · 0 评论 -
golang本地缓存库之bigcache
golang本地缓存bigcache原创 2024-04-21 17:55:56 · 1579 阅读 · 1 评论 -
外部工具包不要依赖服务的环境变量
外部工具包不要依赖服务的环境变量,如果必须要依赖,那么在缺失环境变量时就要有足够严厉的告警提示使用者,否则容易引入bug原创 2024-04-02 22:46:08 · 394 阅读 · 0 评论 -
记一次对Codis的无知引起的逻辑变更
Codis是Redis的分布式解决方案,旨在提供Redis的分布式部署和自动分片功能。但Codis不支持Redis的所有命令,而不支持PUBLISH命令导致了一些业务逻辑的变更。原创 2024-03-31 18:13:15 · 691 阅读 · 0 评论 -
记使用sjson的一次小事故
sjson数字key与字符key设置的不同在使用时需要考虑,否则可能会导致出现内存爆炸的问题。原创 2024-03-24 16:56:52 · 550 阅读 · 0 评论 -
context.WithTimeout()之实现Gorm超时控制
Context是Golang中的上下文,Gorm是当前用的比较多的SQL组件库,在Gorm中,Gorm通过提供了Context支持,在某种程度上来说,Gorm目前提供的Context可以实现对于SQL的超时控制。本意是为了实现gorm单条SQL语句执行时间的控制而引入的,限制单条语句执行时间,后面在修改过程中遇到了关于的问题,在修复问题的过程中让自己对有了更深的理解。原创 2023-09-02 17:46:39 · 2689 阅读 · 0 评论 -
Golang服务的请求调度
最近在看相关的Go服务的请求调度的时候,发现在gin中默认提供的中间件中,不含有请求调度相关的逻辑中间件,去github查看了一些服务框架,发现在go-zero中,有一个SheddingHandler的中间件来帮助服务请求进行调度,防止在流量徒增的时候,服务出现滚雪球进一步恶化,导致最后服务不可用的现象出现。SheddingHandler中间件存在的意义就是尽量保证服务可用的情况下尽可能多的处理请求,而在流量突增的时候,丢弃部分请求以确保服务可用,防止服务因为流量过大而崩溃。原创 2023-08-13 19:02:56 · 487 阅读 · 0 评论 -
go语言中decimal的用法及实践
decimal的应用场景主要出现在对float浮点数进行加减乘除操作的时候,尤其是对于银行金融一块的业务,如果精度丢失,一笔交易上面的损失可以忽略不计,但当交易的规模达到几千万或者亿甚至几十亿的时候,这个时候的损失就会大的吓人了。decimal对于浮点数的计算提供了极大的便利性,让我们在使用浮点数进行大小计算的时候不用担心精度丢失的问题,尤其是对于金融行业,精度丢失造成资损就是很重大的生产事故了。的数据进行计算的时候,我们可以使用第三方的decimal包来解决这个问题。可以获取到浮点数计算结果的整数部分。原创 2023-01-08 12:18:13 · 4564 阅读 · 1 评论 -
Go语言Web框架Beego学习
1. 安装beego// 下载beego的安装包go get -u github.com/beego/beego/v2@v2.0.0// 可能会与遇到错误,如下图所示,然后开启set GO111MODULE=on即可,go env可以看环境变量配置,mac/Linux使用export GO111MODULE=on即可set GO111MODULE=on如果安装还是没有反应set GO111MODULE=onset GOPROXY=https://goproxy.io// 然后再执行,即原创 2021-03-18 10:43:53 · 1058 阅读 · 1 评论 -
Goland利用testing测试程序可用性
1. 问题在用GoLand写Go代码的时候,不像之前Java那样,可以直接在一个程序中使用Junit可以直接去跑一个代码块了,在go里面是有单独的测试库testing可以使用,只是需要遵守规则:一般测试文件以测试程序名_test.go命名测试函数需要为func TestXxxx注意第一个X一定要大写,否则不生效在我使用的过程中,原意是对User进行数据库的添加用户操作的测试。可以看到如果单独的去执行这个测试函数func TestAddUser会发现报错未定义,实际上这个User在1中可以原创 2020-12-21 20:31:36 · 688 阅读 · 2 评论 -
go语言传递对象和传递指针对象的区别
1. 问题晚上看到很多方法里面传递了对象还传递了指针对象,但是感觉之前学习的时候,传递指针对象和传递对象没有什么区别(取值上面),就开始了这个问题。问题就是两者都是传递,都可以取到正确的值,但是为什么要分开传递呢?2. 结论结论的话:如果传递参数仅仅是对象的话,则此对象无论进行什么操作,都是在原对象的拷贝对象上做的,并不会影响传递的对象,除非将处理后的对象返回替代原对象,则修改会生效。如果传递参数是指针对象的话,则对象进行的所有的修改操作都是建立在直接修改原对象的基础之上的,因为传递的本身原创 2020-12-17 22:37:38 · 1671 阅读 · 0 评论 -
Golang语言学习
Golang语言学习花了两天时间看了下Golang语言,发现这语言很有趣,主要是一个土拨鼠形象的语言在goland中可以看到每一个文件都会有一个小图标,感觉还是挺可爱的,这门语言估计以后还是要拥抱了,CPP学了一段时间,从Java转过去着实是不简单,估计还是拥抱go了。主要是通过菜鸟教程来学习的,主要学习了go的语言相关特性,go中保留了指针,可以通过指针操作对象,同时也增加了许多的新特性,在学习的过程中,首先是关于类型定义,一般的都是前面类型后面参数,但是在go中增加了更为人性化一面的变量定义,即通过原创 2020-08-27 16:02:59 · 455 阅读 · 0 评论