golang grpc

仅三天,我用 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

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

API架构的选择,RESTful、GraphQL还是gRPC

API架构的选择,RESTful、GraphQL还是gRPC hi,我是熵减,见字如面。 在现代的软件工程中,微服务或在客户端与服务端之间的信息传递的方式,比较常见的有三种架构设计的风格:RESTful、GraphQL和gRPC。 每一种模式,都有其特点和合适的使用场景,今天,我们主要来对三种风格做 ......
架构 RESTful GraphQL 还是 gRPC

.NET 7 使用gRpc

Server端 添加proto文件, 编辑项目文件添加proto文件,编译项目 添加Service服务 启动Server Client端 安装package Copy proto文件到项目里 ......
gRpc NET

gRPC基本教程

原文在[这里](https://grpc.io/docs/languages/go/basics/)。 本教程为Go程序员提供了使用gRPC的基本介绍。 通过跟随本示例,你将学会如何: - 在.proto文件中定义一个服务。 - 使用协议缓冲编译器生成服务器和客户端代码。 - 使用Go gRPC A ......
教程 gRPC

grpc编译+安装

cd ./grpc/cmake/build sudo rm -rf * cmake ../.. -DBUILD_SHARED_LIBS=ON make sudo make install sudo ldconfig –v fftw配置时,sop中的以下语句会报错,其中空格有不对的地方,使用以下语句即 ......
grpc

Golang的GC和内存逃逸

简介 每个版本的Golang的垃圾回收都在不断优化中,而且方法和策略都在变化,因此这里只是总结出以下几个关键点: 什么样的数据需要GC 触发GC的条件是什么 GC时发生了什么 能否从代码层面上提高GC的效率 GC的基本流程 Golang在确定的时间,或者内存分配到达一定程度时,进行GC。GC时,会停 ......
内存 Golang

golang中defer的作用

defer是golang里面一个很有用的语法,但很多人可能都不太清楚它具体应该怎么用,博主之前就因为用错了引起了一些bug。 ......
作用 golang defer

Golang 规则引擎原理及实战

本文主要介绍规则引擎在 golang 中的使用,将首先介绍 golang 中主要的规则引擎框架,然后利用 golang 原生的 parser 搭建一个简单的规则引擎实现基本的 bool 表达式解析工作。 背景 随着业务代码的不断迭代,诞生出了越来越多的 if-else,并且 if-else 中的逻辑 ......
实战 原理 规则 引擎 Golang

想在golang里用好泛型还挺难的

golang的泛型已经出来了一年多了,从提案被接受开始我就在关注泛型了,如今不管是在生产环境还是开源项目里我都写了不少泛型代码,是时候全面得回顾下golang泛型的使用体验了。 先说说结论,好用是好用,但问题也很多,有些问题比较影响使用体验,到了不吐不快的地步了。 这篇文章不会教你泛型的基础语法,并 ......
golang

golang uuid库介绍

简介: 在现代软件开发中,全球唯一标识符(UUID)在许多场景中发挥着重要的作用。UUID是一种128位的唯一标识符,它能够保证在全球范围内不重复。在Go语言中,我们可以使用第三方库`github.com/google/uuid`来方便地生成UUID。本文将介绍如何使用这个库来生成不同版本的UUID ......
golang uuid

[nginx]反向代理grpc

## 前言 nginx从1.13.10版本开始提供对gRPC代理的支持。由于grpc基于http2,因此编译nginx时需要添加参数`--with-http_v2_module`来启用对http2协议的支持。 ## 常用配置 > 应该是nginx 1.25版本开始,声明http2的语法应该单独写,而 ......
nginx grpc

golang channel 未关闭导致的内存泄漏

### 现象 某一个周末我们的服务 oom了,一个比较重要的job 没有跑完,需要重跑,以为是偶然,重跑成功,因为是周末没有去定位原因 又一个工作日,它又oom了,重跑成功,持续观察,job 在oom之前竟然占用了30g左右(这里我们的任务一个数据量都在内存中计算,所以这里数据量大一点) 应用使用3 ......
内存 channel golang