单向golang grpc

golang之sync包

介绍sync包中常用的方法, - sync:提供基本的同步原语(比如Mutex、RWMutex、Locker)和 工具类(Once、WaitGroup、Cond、Pool、Map) - sync/atomic:提供变量的原子操作(基于硬件指令 compare-and-swap) [Once] [Wa ......
golang sync

gRPC的测试

gRPC(Google remote procedure call)远程过程调用,使不同服务在不同机器上互相调用就像调本地一样方便 但调用方和服务方对应开发不是一个人,出现问题,没法确认是哪方的问题,因此,可以使用BloomRPC工具测试rpc服务是否正常 1、测试工具: BloomRPC,下载地址 ......
gRPC

Golang – gin 框架加载多个模板目录

简介 gin默认是使用text/template,只支持加载一个路径下的模板,而且只取最后的名字,所以有相同文件名字的文件,就有可能加载不到了。 gin.Load html Glob,这个是加载模板目录的,查找模板文件的时候,调用的是filepath.Glob(pattern),patter 设置 ......
框架 多个 模板 目录 Golang

Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型

最近在golang业务开发时,遇到一个坑。 我们有个服务,会接收通用的interface对象,然后去给用户发消息。因此会涉及到把各个业务方传递过来的字符串,转成interface对象。 但是因为我的字符串里有一个数字,比如下面demo里的{"number":1234567},而且数字是7位数,在经过 ......
数字 unmarshal interface 类型 Golang

VScode 中golang 基准测试 go test -bench .

目的:基准测试的主要目的是比较不同实现方式之间的性能差异,找出性能瓶颈。 1 准备以_test.go结尾文件和导入testing包 在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。基准测试可以测试一段程序的运行性能及耗费CPU的程度,获得代码内存占用和运行效率的性能数据。G ......
基准 VScode golang bench test

golang继承多态使用心得

很多人都说用go代替php或者java的最大短板就是写业务太反人类。经过最近的一些使用,发现确实与常见的java或者c++这种有些区别,在这里说明一下。 # go继承多态的现状 ## go没有类的概念 也没有所谓的继承多态。所以按照常规用法开发相应的业务逻辑,确实不适用。 ## go只有struct ......
心得 golang

我用 GPT-4 生成了性能全网第一的 Golang Worker Pool,轻松打败 GitHub 万星项目

目录 1. 我写了一个超牛的开源项目 1.1 你看看这性能 1.2 你看看这功能 1.3 你猜我这一百天都经历了啥 2. 你有多久没写并发程序了? 3. 问:一个 Worker Pool 程序需要包含哪些功能? 4. 让 GPT-4 写第一行代码! 4.1 我对 GPT-4 说 4.2 GPT-4 ......
全网 性能 项目 Golang GitHub

golang用pgx查询数据时如何将查询结果方便的放入Map中

pgx库简介 下面是来自官网的简介: pgx - PostgreSQL驱动和工具包 pgx是一个用于PostgreSQL的纯Go语言驱动和工具包。 pgx驱动是一个底层的高性能接口,暴露了PostgreSQL特有的功能,如LISTEN/NOTIFY和COPY。它还包含一个标准database/sql ......
结果 数据 golang Map pgx

Golang反射type和kind有什么区

一、前言 Go语言中的反射是由 reflect 包提供支持的,它定义了两个重要的类型 Type 和 Value 。任意值在反射中都可以理解为由 reflect.Type 和 reflect.Value 两部分组成,并且 reflect 包提供了 reflect.TypeOf 和 reflect.Va ......
Golang type kind

仅三天,我用 GPT-4 生成了性能全网第一的 Golang Worker Pool,轻松打败 GitHub 万星项目

[TOC] ## 1. 我写了一个超牛的开源项目 激动的心,颤抖的手,我用 [DevChat](https://github.com/devchat-ai/devchat) 白嫖 GPT-4 写下了这辈子写过的最炫酷,最艺术的一千行代码! 我用 Golang 写了一个强大又易用的 Worker Po ......
全网 性能 项目 Golang GitHub

golang json字符串转结构体

1、不知道结构体类型的情况下 func JsonStringToMap(jsonStr string) (map[string]interface{}, error) { //未知值类型 m := make(map[string]interface{}) err := json.Unmarshal( ......
字符串 字符 结构 golang json

Golang基础

# 1、GOLANG概述 ## 1.1 语言特点 ## 1.2 开发工具 ## 1.3 相关文档 - 官方编程指南 - 标准库API文档 # 2、规范的代码风格&注释 ## 2.1 注释&注释风格 ## 2.2 缩进&空白 # 3、编码 # 4、数据类型 ## 4.1 基本数据库类型 1. 变量 2 ......
基础 Golang

golang并发编程

Go 语言是一种支持并发编程的编程语言,它内置了协程(goroutine)和通道(channel)等机制,可以方便地实现并发编程。在 Go 语言中,一个协程是一个独立的工作单元,可以在不同的协程之间进行通信和协作。Go 语言中的并发编程主要使用 go、chan、select 及 sync 库完成同步... ......
golang

[golang]使用tail追踪文件变更

## 简介 借助 `github.com/hpcloud/tail` ,可以实时追踪文件变更,达到类似shell命令`tail -f`的效果。 ## 示例代码 以下示例代码用于实时读取nginx的`access.log`日志文件,读取到后输出到控制台。如果nginx日志做了json格式化,还可以解析 ......
文件 golang tail

VScode 中golang 单元测试,解决单元测试超时timeout30s

目的:单元测试的主要目的是验证代码的每个单元(函数、方法)是否按照预期工作。 提示:解决单元测试超时30s的问题在序号4 1 准备以_test.go结尾文件和导入testing包 在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。单元测试源码文件可以由多个测试用例组成,每个测 ......
单元 timeout VScode golang 30s

跳表的原理--Golang 实现一个简单跳表

## 前言 最近在看《Redis 设计与实现》这本书,书中简单描述了跳表的性质和数据结构,但对它的具体实现没有多讲。 书里对跳表结构的描述是这样的: ![image](https://img2023.cnblogs.com/blog/3120527/202308/3120527-2023080111 ......
原理 Golang

数据结构与算法(三):单向链表

# 链表定义 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑是通过链表种的指针链接次序实现的。链表由一系列节点组成,每个节点包括两部分:一个是存储数据元素的数据域,一个是存储下一个节点地址的指针域。单向链表从头节点(也可以没有头节点)开始,指针指向下一个节点的位置,只能由上一个节点 ......
数据结构 单向 算法 结构 数据

反转单向链表 | 空间复杂度O(1)

## 反转单向链表 时间复杂度:O(N) 空间复杂度:O(1) ```c void reverse_list (node** head_ptr) { node* prev = NULL; node* curr = *head_ptr; node* next = NULL; while (curr ! ......
复杂度 单向 空间

Golang 接收Get、Post请求

Get 1、接收 func GetGet(w http.ResponseWriter, r *http.Request) { defer func() { r.Body.Close() if r := recover(); r != nil { stackBytes := debug.Stack() ......
Golang Post Get

VScode 中golang 调试 F5,json文件内容更改 Go

调试:在Vscode软件中调试.go文件代码 1.1.1 确保调试文件正常运行 准备好.go文件,并且该文件能正常运行,终端输入命令运行程序,如:go run time.go 测试代码: package main import ( "fmt" "time" ) func main() { fmt.P ......
文件 内容 VScode golang json

golang-groutine有序调度

本质上还是通过channel的队列性质(FIFO)来实现的,以这个思路为主。 1 func test1() { 2 var wg sync.WaitGroup 3 4 var ch1 = make(chan int, 1) 5 var ch2 = make(chan int, 1) 6 var ch ......
golang-groutine groutine golang

Golang漏洞管理

原文在[这里](https://go.dev/security/vuln/) ## 概述 Go帮助开发人员检测、评估和解决可能被攻击者利用的错误或弱点。在幕后,Go团队运行一个管道来整理关于漏洞的报告,这些报告存储在Go漏洞数据库中。各种库和工具可以读取和分析这些报告,以了解特定用户项目可能受到的影 ......
漏洞 Golang

GoRedisLock:Golang保障数据一致性的分布式锁解决方案

在现代分布式系统中,多个节点之间共享资源是常见的需求。然而,并发访问共享资源可能导致数据不一致性和竞争条件。为了解决这些问题,我们需要引入分布式锁。GoRedisLock是一个出色的分布式锁库,它结合了Go语言和Redis的优势,提供了稳定高效的分布式并发控制解决方案。 **项目地址:** http ......

golang打印指针切片/数组的值

FmtSlice2String方法可以将指针切片的值打印处理 package main import ( "fmt" "reflect" ) type Student struct { Name string `json:"name" cn:"名字"` Age uint64 `json:"age" ......
数组 指针 golang

Golang gRPC学习(05): retry重试

## 什么是重试 如果服务出现了错误,主要是网络,服务器出现了短暂异常的时候,该怎么办? 我们都会人工或者自动的重新连接服务试试,看服务是否恢复可用了。 这种重新进行连接服务的一种方式就是重试。如果是在微服务里,应该属于微服务治理的范畴。 重试是处理网络服务出现暂时不可用的一种方法。 ## 怎么进行 ......
Golang retry gRPC 05

golang技术降本增效的手段

最近一年各大中小厂都在搞"优化",说到优化,目的还是"降本增效",降低成本,增加效益(效率)。 技术层面,也有一些降本增效的常规操作。 比如池化、io缓冲区技术 | | golang | C# | eg. | | | | | | | 池化技术 | snnc.Pool | ObjectPool | 前 ......
手段 golang 技术

Golang安装

[TOC](目录) # Go安装 ## 下载安装Go 地址:[https://studygolang.com/dl](https://studygolang.com/dl) 1、根据系统来选择下载包。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b2854cb5 ......
Golang

Golang之工作区workspace

快速开始 创建工作区 写一个最简单的基础项目实际演练一下 Go workspace。 首先,创建 workspace 工作区。 $: mkdir workspace $: cd workspace $: go work init 完成以上步骤后,工作区目录就会出现一个新的文件 go.work . 内 ......
工作区 workspace Golang

Golang中结构体映射mapstructure库深入详解

mapstructure用于将通用的map[string]interface{}解码到对应的 Go 结构体中,或者执行相反的操作。很多时候,解析来自多种源头的数据流时,我们一般事先并不知道他们对应的具体类型。只有读取到一些字段之后才能做出判断 + 目录 在数据传递时,需要先编解码;常用的方式是JSO ......
mapstructure 结构 Golang

golang版本管理-gvm

1 如果你是mac 简单 brew install go 2 其他就用 # zshzsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) # bash u ......
版本 golang gvm