从零单排Golang
文章平均质量分 81
utmhikari
talk is cheap code is rich
展开
-
【从零单排Golang】第十六话:channel的用法和基本原则
在基于Golang的后端开发中,channel是一个必须要掌握的并发编程概念。和python的queue一样,channel在不同的goroutine里承担着传递信息的作用,使得业务逻辑的状态上下文可以在不同的goroutine中共享。今天,我们就来看一下channel的用法还有一些使用上的基本原则。原创 2024-04-13 19:26:46 · 1102 阅读 · 1 评论 -
【从零单排Golang】第十五话:用sync.Once实现懒加载的用法和坑点
在使用Golang做后端开发的工程中,我们通常需要声明一些一些配置类或服务单例等在业务逻辑层面较为底层的实例。为了节省内存或是冷启动开销,我们通常采用lazy-load懒加载的方式去初始化这些实例。在Golang里面,实现懒加载的方式可以简单的多,用内置的sync.Once就能满足。本文就介绍使用sync.Once的用法和坑点原创 2023-09-03 01:23:56 · 745 阅读 · 0 评论 -
【从零单排Golang】第十四话:使用rate和ratelimit实现限流限速
在研发中,我们经常会面对到处理并发逻辑的场景,尤其是有时候在与第三方平台对接的场景下,会遇到请求限流限QPS的要求。对于限流或者限速,我们通常会用令牌桶算法和漏桶算法来满足需要。这两种算法,虽然实际QPS数值可能都会有波动,但都能把速率限制在一个合理的水位。在Golang里面,这两种算法都有现成的实现可以直接用。咱们今天,就来看看这块的例子。原创 2023-08-26 15:57:48 · 1206 阅读 · 0 评论 -
【从零单排Golang】第十三话:使用WaitGroup等待多路并行的异步任务
在后端开发当中,经常会遇到这样的场景:请求给了批量的输入,对于每一个输入,我们都要给外部发请求等待返回,然后才能继续其它自己的业务逻辑。在这样的case下,如果每一个输入串行处理的话,那么很大一部分时间都会损耗在给外部发请求这个环节,因此我们会希望把这些请求放到各个goroutine里异步执行,等待批量执行完成之后再继续后面的逻辑。这个时候,我们就可以用到这个东西:sync.WaitGroup原创 2023-08-06 21:03:17 · 688 阅读 · 0 评论 -
【从零单排Golang】第十二话:用singleflight解决单服务处理高并发任务的问题
在后端开发场景,我们经常会遇到高并发的事务处理逻辑。虽然在微服务治理的机制下,能够实现多个无状态服务节点+负载均衡高并发处理请求,但对于单个服务节点来讲,如果存在某些耗时的任务需要被高并发访问,那么如果没有一套妥善的机制处理,就很容易出现大量这类任务实例堆积,导致任务返回延迟,或者节点内存暴涨的情况。今天,就来介绍Golang内部处理这种场景的一套方案:singleflight。原创 2023-07-01 20:52:17 · 902 阅读 · 2 评论 -
【从零单排Golang】第十一话:make和new的区别和用法
在Golang当中,对于常用数据结构的初始化方式,通常有2种:make跟new。这两种初始化方法用途不同,效果不同。本篇文章就来详细讲一下make和new具体都怎么用,在什么场景下会用上。原创 2023-05-10 23:53:50 · 507 阅读 · 1 评论 -
【从零单排Golang】第十话:快速理解并上手context的基础用法
在Golang的各种用法当中,context可谓是最能够体现Golang语言特性的模块之一。关于context网上有很多语法以及源码分析的文档,但是里面很多却不能从实战场景体现context的作用,导致这个概念难以理解。因此这一回,经由踩坑context后,笔者将结合自己的理解,给大家讲述context在Golang怎么用来最为方便,怎么理解最为实用。原创 2023-04-01 17:16:10 · 703 阅读 · 0 评论 -
【从零单排Golang】第九话:用go语言解析并分析sql语句的方法
在Golang的实战中,总会遇到一些场景,比如抓包分析sql指纹,或者是输入sql时检查sql的风险,这类操作都需要解析sql的工具才能够生效。今天,就来介绍一些Golang当中解析sql的工具包和使用方法,主要是tidbparser原创 2023-03-04 00:25:29 · 2377 阅读 · 0 评论 -
【从零单排Golang】第八话:通过cache缓存模块示范interface该怎么用
Golang的interface接口特性,能够实现提供&使用之间关系的解耦,使得代码行文更加规范立体。本文就来通过一个简单的缓存cache模块的实现,来示范一下Golang的interface该怎么用。原创 2023-02-18 15:40:40 · 1102 阅读 · 0 评论 -
【从零单排Golang】第七话:反射模块reflect使用方式探索
Golang的反射功能,在很多场景都会用到,最基础的莫过于rpc、orm跟json的编解码,更复杂的可能会到做另外一门语言的虚拟机。通过反射模块,我们可以在编程语言的runtime运行时期间去访问内部产生对象的信息。了解反射模块的实现,对我们了解Golang对象机制本身,也是莫大的帮助。今天,恰逢阳康+新年,就决定来探究一下Golang的反射模块——reflect。原创 2023-01-01 02:30:08 · 770 阅读 · 3 评论 -
【从零单排Golang】第六话:基于wire的kratos微服务框架示例项目
本文介绍一款b站开源的名为奎爷kratos的微服务框架,以及讲述一下基础的使用机理和框架结构,以及wire生成框架代码的机制。原创 2022-12-03 15:05:49 · 1234 阅读 · 0 评论 -
【从零单排Golang】第五话:用自带net包写一个简单的负载均衡
golang在工业中用途最多的方面就是编写中间件以及上游设施,因此切入golang的话,了解其网络库是很有必要的。因此,笔者上手了自带的net包,花了一天左右的时间写了个简单的负载均衡(Load Balancer),也算是能用啦= =原创 2019-11-24 12:32:36 · 342 阅读 · 1 评论 -
【从零单排Golang】第四话:Win10安装minikube,用client-go部署mongodb
提起Golang,就不得不提起kubernetes,在崇尚上云的今天,kubernetes已成为服务端同学必需掌握之学问。很多实际业务问题单靠docker是解决不了的,需要在docker的基础上做更高层次的运维平台才能解决,而kubernetes,就是方案之一。复杂的调度逻辑,都会由kubernetes负责,而运维开发人员则基本只需向kubernetes提供资源及其描述,就能满足运维需求,从而提升工作效率。原创 2019-10-03 02:01:16 · 790 阅读 · 1 评论 -
【从零单排Golang】第三话:利用docker client在本地部署MySQL
本期从零单排,我们就用Golang来挑战一下如何与docker交互吧原创 2019-09-01 18:51:53 · 542 阅读 · 1 评论 -
【从零单排Golang】第一话:Go开发环境搭建——Go环境变量、依赖与目录结构踩坑
当测试开发真不容易,入行第一年,就要在python、NodeJS、lua、C、Java等语言间无缝切换。为了快速响应需求,挺难抽出时间去深耕一门语言的特性。测试开发归属质量保障QA,作为一个中台角色,其终极任务保障研发效能,因此一大需求是打通产品研发运维的生产线。说到生产线就想到上云,说到上云就想到docker跟kube,说到跟容器的交互就想到了Golang。马蛋,又要学一门新语言了。原创 2019-07-20 19:49:14 · 416 阅读 · 1 评论 -
【从零单排Golang】第二话:初探服务端CRUD,gin+gorm黄金搭档
学一门新语言,如果太专注于语法,那肯定学的不够快。如果有一定的需求目标,带着这个目标去学习一门新语言,这样才能学得快。工作中写后端的时间比例不在少数,而且传闻Go也因其适用于服务端而著名。在Go社区中最为火热的服务端框架跟数据库抽象ORM层当属gin跟gorm了,因此本期单排的目标便是用gin+gorm打一个简易的框架,实现基本CRUD的目标。走你~原创 2019-08-04 18:41:49 · 1251 阅读 · 1 评论