一道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

一道简单的算法题

``` /// /// 字符串str1与str2,若str1中的各个字符经过重排后能形成str2,则返回true。 /// str1 = "sawsdfdfalsraodf"; /// str2 = "world"; /// rearrange(str1,str2) -> true; /// /// ......
算法 一道

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

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

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

使用golang灵活处理动态文案

代码 package scripts_stroage import ( "fmt" "github.com/duke-git/lancet/v2/slice" "github.com/gogf/gf/util/gconv" "github.com/gookit/goutil/dump" "regex ......
文案 动态 golang

golang 实现 RPC(远程过程调⽤实例)

golang 实现 RPC 前提概要,先了解几个概念,websocket简介 什么是websocket WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocke ......
实例 过程 golang RPC

c语言的一道关于数组的编程题

1、c语言的一道关于数组的编程题 2、编程题:1:定义含有10个元素的数组,并将数组中的元素按逆序从新存放后输... 3、c语言编程题:输入10个数存放在一个数组中,输入一个数存入x中,然后找出... c语言的一道关于数组的编程题 int checkNum(int nums[],int len,in ......
数组 一道 语言

golang自带库使用说明

Go 中的时间操作 Golang中与时间有关的操作,主要涉及到 time 包,核心数据结构是 time.Time,如下: type Time struct { wall uint64 ext int64 loc *Location} 1、获取时间相关函数 1.1 获取当前时间 // 返回当前时间,注 ......
使用说明 golang

Golang 中 Gin 框架开发学习记录 ——(二)

4、响应页面 首先创建 template 文件夹将需要的 hmtl 文件放在里面,然后编写 hmtl <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>我的GO web页面</title> <link rel= ......
框架 Golang Gin

linux Vim配置Golang语言环境

下载vim 要配置Linux上的Vim,可以按照以下步骤进行操作: 打开终端并运行以下命令安装Vim: sudo apt-get update sudo apt-get install vim 1 2 在主目录下创建.vimrc文件: cd ~ touch .vimrc 1 2 编辑.vimrc文件 ......
语言 环境 Golang linux Vim

Golang中Gin框架开发学习记录——(一)

1、环境配置 在GO语言中,使用"go get"命令获取相关包"go get"命令的作用与“git clone”类似,这里使用: go get -u github.com/gin-gonic/gin 来获取,相关代理问题可以参考以下链接: (19条消息) 解决GO安装gin框架(go get -u ......
框架 Golang Gin