背景 基于Kafka消息队列的两级协调调度架构 Kafka内部为了协调内部的consumer和kafka connector的工作实现了一个复制协议, 主要工作分为两个步骤: 通过worker(consumer或conn…
分类:Go
我要在栈上。不,你应该在堆上
原文地址:我要在栈上。不,你应该在堆上 前言 我们在写代码的时候,有时候会想这个变量到底分配到哪里了?这时候可能会有人说,在栈上,在堆上。信我准没错… 但从结果上来讲你还是一知半解,这可不行,万一被人懵了呢。…
Go 并发控制
前言 提到Go语言的并发,就不得不提goroutine,其作为Go语言的一大特色,在日常开发中使用很多。 在日常应用场景就会涉及一个goroutine启动或结束,启动一个goroutine很简单只需要在函数前面加关键词g…
实战Go内存泄露
最近解决了我们项目中的一个内存泄露问题,事实再次证明pprof是一个好工具,但掌握好工具的正确用法,才能发挥好工具的威力,不然就算你手里有屠龙刀,也成不了天下第一,本文就是带你用pprof定位内存泄露问题。 关于Go的内…
Go Module 工程化实践(三):工程实践篇
尊重生命,即使是蚂蚁,也不会踩死。 — JayL 3. 工程实践篇 如何实现企业内项目的Go Module工程化迁移? 以本人以往所在公司的实际现状作为样例,说明具体的Go Module工程化迁移过程。 原有…
进程线程协程的介绍
进程(process): 定义 狭义定义:进程就是一段程序的执行过程例如启动的某个app。 广义定义:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程即…
基于2PC和延迟更新完成分布式消息队列多条事务Golang版本
背景 分布式多消息事务问题 在消息队列使用场景中,有时需要同时下发多条消息,但现在的消息队列比如kafka只支持单条消息的事务保证,不能保证多条消息,今天说的这个方案就时kafka内部的一个子项目中基于2PC和延迟更新来…
golang多版本管理器
g是一个Linux、macOS、Windows下的命令行工具,可以提供一个便捷的多版本go环境的管理和切换。 特性 支持列出可供安装的go版本号 支持列出已安装的go版本号 支持在本地安装多个go版本 支持卸载已安装的g…
四段代码入门Go协程以及channel!
写一个简单的程序,使得一个协程用来向channel中写如数据,一个用来读取数据。 import ( "fmt" "strconv" "testing" ) /** 在这个示例中,我们有 - 一个message作为chan…
go实现栈
本来写敏感词检测的代码,后面需求撤销了,留下一点可复用的代码怀念下 package stack // 不确定变量类型和结构,使用了interface type Stack struct { data []interfac…
grpc - 使用 golang 带你从头撸一套 RPC 服务(一)
gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。 安装 p…
结构体
Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。一个带属性的结构体试图表示一个现实世界中的实体。结构体是复合类型(composite types),当需要定义一个类型,它由一…