Go

利用Go语言实现流量回放工具的示例代码

目录 前言 goreplay介绍与安装 使用示例 流量放大、缩小 流量写入到ElastichSearch goreplay基本实现原理 总结 前言 哈喽,大家好,我是asong。 今天给大家推荐一款使用Go语言编写的流量回放工具 -- goreplay;工作中你一定遇到过需要在服 »

Go语言制作svg格式树形图的示例代码

目录 什么是SVG SVG定义 SVG优点 预定义元素 圆形 <circle> 直线 <line> 文字 <text> 结点SVG格式 根结点 子树结点 叶结点 结点坐标 结点文本 二叉树转SVG 全部源代码 最近一直在刷二叉树题目,但在要验 »

Go语言包和包管理详解

目录 1 包简介 1.1 工作空间 1.2 源文件 1.3 包命名 1.4 main 包 2导包 2.1 两种方式 2.2 包的别名 2.3 简洁模式 2.4非导入模式(匿名导入) 2.5 导包的路径 2.6 远程导入 3 初始化 init 3.1 init总结 4 包管理 4.1 演变 »

Go中的应用配置管理详解

目录 问题 解决 命令行参数 系统环境变量 打包进二进制文件 配置热更新 开源的fsnotify (1)安装 (2)案例 使用viper开源库实现热更新 问题 Go语言在编译时不会将配置文件这类第三方文件打包进二进制文件中 它既受当前路径的影响,也会因所填写的不同而改变,并非是绝 »

Go语言开发保证并发安全实例详解

目录 什么是并发安全? Mutex 悲观锁 乐观锁 版本号机制 CAS 互斥锁 读写互斥锁 什么是并发安全? 在高并发场景下,进程、线程(协程)可能会发生资源竞争,导致数据脏读、脏写、死锁等问题,为了避免此类问题的发生,就有了并发安全。 这里举一个简单的例子: var dat »

Go操作Kafka和Etcd方法详解

目录 操作Kafka sarama 下载及安装 注意事项 连接 kafka 发送消息 连接 kafka 消费消息 操作Etcd 安装 put和get操作 watch操作 安装报错: 操作Kafka Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所 »

go语言 nil使用避坑指南

目录 引言 nil 默认值nil (重点记住) nil没有默认类型 不同类型的nil值占用的内存大小可能是不一样的 不同类型 nil 的指针是一样的 不同类型的 nil 是不能比较的 引言 今天笔试题遇到 var x string = nil ,问这个定义是否正确? 这里给出答案: »

Go保证并发安全底层实现详解

目录 引言 CSP Channel的基本使用 channel如何保证并发安全 channel的底层实现 waitq buffe Lock 引言 上一部分主要写了锁,本篇主要介绍Channel channel是Go中非常重要的一个数据类型,它和goroutine紧密相连,是Go的C »

在IIS上部署Go API项目

问题场景 我这边原先的技术栈主要是 .NET(Core), 所以服务器基本上都是 Windows Server + IIS. 这次有个 API 服务用 Go 重写, 但是部署有点不美, 直接执行黑框框不好看, 也容易丢, 做成服务又不方便更新维护, 想着能不能继续挂载在 IIS 下. 于是乎. »

彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-用户系统EP03

前文再续,之前一篇我们已经配置好了数据库以及模板引擎,现在可以在逻辑层编写具体业务代码了,博客平台和大多数在线平台一样,都是基于用户账号体系来进行操作,所以我们需要针对用户表完成用户账号的CURD操作。 用户后台模板 首先用户操作逻辑主要在后台展现,所以模板应该单独生成admin文件夹,和前台模板进 ... »

v3ucn

go 熔断原理分析与源码解读

目录 正文 熔断原理 熔断器实现 hystrixBreaker和googlebreaker对比 源码解读 结束语 正文 熔断机制(Circuit Breaker)指的是在股票市场的交易时间中,当价格的波动幅度达到某一个限定的目标(熔断点)时,对其暂停交易一段时间的机制。此机制如同保险 »

go并发编程sync.Cond使用场景及实现原理

目录 使用场景 实现原理 copyChecker Wait Signal Broadcast 使用场景 sync.Cond是go标准库提供的一个条件变量,用于控制一组goroutine在满足特定条件下被唤醒。 sync.Cond常用于一组goroutine等待,一个goroutine »

Go-ethereum 解析ethersjs中产生的签名信息思路详解

目录 Go-ethereum 解析ethersjs中产生的签名信息 1. ethers 消息签名 1.1 ethers 对签名消息进行解析 2. Golang 签名解析 3. 总结 Go-ethereum 解析ethersjs中产生的签名信息 在签名验证的过程中,我们判断签名正确的前提 »

go实现Redis读写分离示例详解

目录 我们为什么需要了解RESP协议? 什么是RESP协议 RESP协议规范 如何使用该协议请求Redis 使用go编写Redis中间件实现读写分离 总结 我们为什么需要了解RESP协议? 本篇文章目的为探究RESP协议,而非编写读写中间件,这点要清楚。 关于这个问题,我想通过一个 »

Go REFLECT Library反射类型详解

目录 一、反射概述 二、反射类型对象 基本数类型的 反射类型对象 引用数据类型的 反射类型对象 结构体的 反射类型对象 指针的 反射类型对象 一、反射概述 反射是指程序在运行期间对程序本身进行访问和修改的能力。程序在编译过程中变量会被转换为内存地址,变量名不会被编译器写入到可执行部分。 »

【每天自动更新】Go增强月-分享你的开发必备知识-LGTM排行榜!

这篇文章是 “Go增强月——让我们分享你需要知道的发展知识——”本文支持主题。 我们将使用 Qiita API v2 来收集似乎在参与“Go 增强月-让我们分享您需要了解的开发知识-”的文章。我将在收集的文章组(数据)上尝试这个和那个。 按 LGTM 编号对文章进行排序投稿人的文章总数贡献者的 LG »

Go语言数据结构之希尔排序示例详解

目录 希尔排序 算法思想 图解算法 Go 代码实现: 总结 希尔排序 在插入排序中,在待排序序列的记录个数比较少,而且基本有序,则排序的效率较高。 1959 年,Donald Shell 从“减少记录个数” 和 “基本有序” 两个方面对直接插入排序进行了改进,提出了希尔排序算法。 希尔 »

Go 数据结构之堆排序示例详解

目录 堆排序 堆排序过程 动画显示 开始堆排序 代码实现 总结 堆排序 堆排序是一种树形选择排序算法。 简单选择排序算法每次选择一个关键字最小的记录需要 O(n) 的时间,而堆排序选择一个关键字最小的记录需要 O(nlogn)的时间。 堆可以看作一棵完全二叉树的顺序存储结构。 »

Go语言数据结构之选择排序示例详解

目录 选择排序 动画演示 Go 代码实现 总结 选择排序 选择排序(selection sort)是一种原地(in-place)排序算法,适用于数据量较少的情况。由于选择操作是基于键值的且交换操作只在需要时才执行,所以选择排序长用于数值较大和键值较小的文件。 思想: 对一个数组进行排序 »

Go语言数据结构之插入排序示例详解

目录 插入排序 动画演示 Go 代码实现 总结 插入排序 插入排序,英文名(insertion sort)是一种简单且有效的比较排序算法。 思想: 在每次迭代过程中算法随机地从输入序列中移除一个元素,并将改元素插入待排序序列的正确位置。重复该过程,直到所有输入元素都被选择一次,排序结束。 »