golang redigo发布订阅使用的方法 redigo 对 发布订阅的使用 redigo 对redis 的发布订阅机制放在pubsub.go 中 订阅主题后 通过Receive() 函数接受发布订阅主题的消息 // Receive returns a pushed message as a Subscriptio... 2022/11/25 139 0
定位并修复 Go 中的内存泄露问题 Go 是一门带 GC 的语言,因此,大家很容易认为它不会有内存泄露问题。 大部分时候确实不会,但如果有些时候使用不注意,也会导致泄露。 本文案例来自谷歌云的代码,探讨如何找到并修复 Go 中的内存泄露。(确切来说是因为资源泄露导致的内存泄露,除了本文介绍的,还有一些其他泄露的情... 2022/11/25 187 0
Go语言并发编程 互斥锁详情 1、互斥锁Mutex 1.1 Mutex介绍 Go 语言的同步工具主要由 sync 包提供,互斥锁 (Mutex) 与读写锁 (RWMutex) 就是sync 包中的方法。 互斥锁可以用来保护一个临界区,保证同一时刻只有一个 goroutine 处于该临界区内。主要包括... 2022/11/25 157 0
浅谈golang 的高效编码细节 xdm,我们都知道 golang 是天生的高并发,高效的编译型语言 可我们也都可知道,工具再好,用法不对,全都白费,我们来举 2 个常用路径来感受一下 struct 和 map 用谁呢? 计算量很小的时候,可能看不出使用 临时 struct 和 map 的耗时差距,但是数... 2022/11/25 151 0
Golang开发命令行之flag包的使用方法 1、命令行工具概述 日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,鼠标能够让用户更容易上手,降低用户学习成本。 而对于开发者,键盘操作模式能显著提升生产力,还有在一些专业工具中, 大量使用快捷键代替繁琐的鼠标操作,能够使开发人员更加专注于工作,提高效率,因... 2022/11/25 135 0
Golang标准库和外部库的性能比较 前言: 我已经在生产中使用 Go 一段时间了,因为它的构建规模较小,并且由 goroutines 提供的并发性能以及直接在机器上运行构建的能力,所以我非常喜欢它的快速和可靠。 由于标准包的速度非常快,您可以在不使用任何第三方库或框架的情况下构建生产就绪的微服务。这并不是说 G... 2022/11/25 171 0
go语言编程学习实现图的广度与深度优先搜索 图的实现 所谓图就是节点及其连接关系的集合。所以可以通过一个一维数组表示节点,外加一个二维数组表示节点之间的关系。 //图的矩阵实现 typedef struct MGRAPH{ nodes int[]; //节点 edges int[][];... 2022/11/25 149 0
Go 语言 JSON 标准库的使用 Go 语言中的 encoding/json 库提供了复杂的将 Go 中各种类型与JSON格式之间转换的功能, 我们主要使用以下几个功能: 将一个切片、结构体或字典序列化成 JSON 格式的字符串【字节流】。 将一个 JSON 格式的字符串【字节流】反序列化成一个切片、... 2022/11/25 124 0
Golang通脉之方法详情 方法和接收者 Go语言中的方法(Method)是一种作用于特定类型变量的函数。这种特定类型变量叫做接收者(Receiver)。接收者的概念就类似于其他语言中的this或者 self。 Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者... 2022/11/25 141 0
Golang通脉之数据类型详情 1、标识符与关键字 在了解数据类型之前,先了解一下go的标识符和关键字 1.1 标识符 在编程语言中标识符就是定义的具有某种意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符允许由字母数字和_(下划线)组成,并且只能以字母和_开头:abc , _ , _123,... 2022/11/25 171 0
Golang通脉之map详情 Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 map 是一种无序的键值对的集合。map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值 map 是一种集合,所以可以像迭代数组和切片那样迭代它。不过,map 是无序的,无法... 2022/11/25 150 0
Golang中channel的原理解读(推荐) 数据结构 channel的数据结构在$GOROOT/src/runtime/chan.go文件下: type hchan struct { qcount uint // 当前队列中剩余元素个数 dataqsiz uint... 2022/11/25 150 0
Golang通脉之类型定义 1、自定义类型 在Go语言中有一些基本的数据类型,如 string 、 整型 、 浮点型 、 布尔 等数据类型, Go语言中可以使用 type 关键字来定义自定义类型。 type是Go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef。搞清楚ty... 2022/11/25 156 0
Go语言并发编程 sync.Once sync.Once用于保证某个动作只被执行一次,可用于单例模式中,比如初始化配置。我们知道init()函数也只会执行一次,不过它是在main()函数之前执行,如果想要在代码执行过程中只运行某个动作一次,可以使用sync.Once,下面来介绍一下它的使用方法。 先来看下面的代码:... 2022/11/25 171 0
Go 并发读写 sync.map 详细 map 的两种目前在业界使用的最多的并发支持的模式分别是: 原生 map + 互斥锁或读写锁 mutex。 标准库 sync.Map(Go1.9及以后)。 有了选择,总是有选择困难症的,这两种到底怎么选,谁的性能更加的好?我有一个朋友说 标准库 sync.Map... 2022/11/25 166 0