Go

Go语言中的原子操作

# 1. 引言 在并发编程中,多个协程同时访问和修改共享数据时,如果没有使用适当的机制来防止并发问题,这个时候可能导致不确定的结果、数据不一致性、逻辑错误等严重后果。 而原子操作是解决并发编程中共享数据访问问题的一种常见机制。因此接下来的文章内容将深入介绍原子操作的原理、用法以及在解决并发问题中的应 ......
原子 语言

Go 设计模式|组合,一个对数据结构算法和职场都有提升的设计模式

Go 设计模式|组合,一个对数据结构算法和职场都有提升的设计模式 原创 KevinYan11 网管叨bi叨 2023-01-16 08:45 发表于北京 收录于合集#用Go学设计模式24个 大家好,我是每周在这里陪你进步的网管~,这次我们继续设计模式的学习之旅。本次要学习的是组合模式,这个模式呢,平 ......

windows ,go powershell 测试并且性能分析

#benchamark 并且性能分析 `go test -run none -bench . -benchmem -cpuprofile cpu.prof -memprofile mem.prof; Start-Job { go tool pprof -http=:10000 .\cpu.prof ......
性能分析 powershell 性能 windows go

go语言函数

Go函数 由若干语句组成的语句块、函数名称、参数列表、返回值构成,它是组织代码的最小单元 完成一定的功能 函数的作用 结构化编程对代码的最基本的封装,一般按照功能组织一段代码 封装的目的为了复用,减少冗余代码 代码更加简洁美观、可读易懂 函数的分类 内建函数,如make、new、panic等 库函数 ......
函数 语言

深入分析Go语言与C#的异同

> 摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言 为了更加深入地介绍Go语言以及与C\#语言的比较,本文将会从多个维度出发进行详细的 ......
异同 语言

go语言hash表

map特性 长度可变;存储的元素是key-value对(键值对),value可变 key无序不重复 不可索引,需要通过key来访问;不支持零值可用,也就是说,必须要用make或字面常量构造;引用类型; 哈希表 哈希算法 哈希Hash算法特征 y = hash(x),给定一个x一定得到一个y值 x的范 ......
语言 hash

深入理解Go语言接口

# 1. 引言 接口是一种定义了软件组件之间交互规范的重要概念,其促进了代码的解耦、模块化和可扩展性,提供了多态性和抽象的能力,简化了依赖管理和替换,方便进行单元测试和集成测试。这些特性使得接口成为构建可靠、可维护和可扩展的软件系统的关键工具之一。 在现代编程语言中,接口是不可或缺的一个重要特性。本 ......
接口 语言

GO中字符串操作和转换简介

[toc] `go`中字符串是一种基本类型(string),是一个**不可改变的UTF-8**字符序列: - 一个ASCII码占用1个字节(8位); - 其它字符根据需要占用2-4个字节; # 字符串 字符串创建后,就不可修改; # 声明与初始化 `go`支持两种类型的字符串字面量: - 解释型字符 ......
字符串 字符 简介

Go 语言之 Shutdown 关机和fvbock/endless 重启

# Go 语言之 Shutdown 关机和fvbock/endless 重启 Shutdown 源码 ```go // Shutdown gracefully shuts down the server without interrupting any // active connections. ......
Shutdown endless 语言 fvbock Go

在Mac上编译可运行在Linux, Windows上的GO程序

编译运行在 amd64位 linux系统 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build 编译运行在 amd64位 windows系统 CGO_ENABLED=0 GOOS=windows go build ......
上编 Windows 程序 Linux Mac

GO通道:无缓冲通道与缓冲通道

转载请注明出处: 1.通道定义 在多个协程之间进行通信和管理,可以使用 Go 语言提供的通道(Channel)类型。通道是一种特殊的数据结构,可以在协程之间进行传递数据,从而实现协程之间的通信和同步。多个协程可以同时读写同一个通道,通过通道来进行数据的传递和共享。 通道遵循先入先出(First In ......
通道

GO 协程

转载请注明出处: 线程是进程中的一个实体,被系统独立调度和分派的基本单位。线程自己不拥有系统资源,只拥有运行中必不可少的资源。同一进程中的多个线程并发执行,这些线程共享进程所拥有的资源。 协程是一种比线程更加轻量级的存在,重要的是,协程不被操作系统内核管理,协程完全是由程序控制的,不需要手动创建和管 ......
GO

Go 语言之 Viper 的使用

# Go 语言之 Viper 的使用 ## Viper 介绍 [Viper](https://github.com/spf13/viper): ### 安装 ```bash go get github.com/spf13/viper ``` ### Viper 是什么? Viper 是一个针对 Go ......
语言 Viper Go

go语言tcp编程学习

# TCP编程 ## 1、网络编程分类 包括TCPsocket编程(底层基于tcp/ip协议)和b/s结构的http编程(使用的是http协议,但是底层是tcp socket实现的) 资料:尚硅谷的TCP资料(3卷),可以咸鱼找下资料看下 ## 2 TCPsocket编程 windows查看端口密码 ......
语言 tcp

GO 项目依赖管理:go module总结

转载请注明出处: 1.go module介绍 go module是go官方自带的go依赖管理库,在1.13版本正式推荐使用 go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等 使用go module之后我们可不用将代码放置在src下 使用 g ......
项目 module GO

go 接口循环方法

type Call interface { String() string}type Cn struct {}type En struct {}func Newcn() Call { return &Cn{}}func (c *Cn) String() string { b, _ := json.M ......
接口 方法 go

Go 中的格式化字符串`fmt.Sprintf()` 和 `fmt.Printf()`

在 Go 中,可以使用 `fmt.Sprintf()` 和 `fmt.Printf()` 函数来格式化字符串,这两个函数类似于 C 语言中的 `scanf` 和 `printf` 函数。 ## `fmt.Sprintf()` `fmt.Sprintf()` 函数返回一个格式化后的字符串,而不是将其打 ......
字符串 fmt 字符 Sprintf 格式

Go语言学习总结

#### 1. 跳出/执行下一次循环。 ``` {标签名}: for true { ... for true { ... break/continue {标签名} //默认不加标签,则跳出最近一层循环。加了标签可以跳出标签定义处所在循环 } } ``` #### 2. map的使用注意项。 因为ma ......
语言学习 语言

使用go标准库发送邮件

在学习go语言的过程中,发现smtp邮件服务也在go语言的标准库中支持,所以写了一个小demo测试是否能够真的发送邮件,代码如下: ```go package main import ( "crypto/tls" "log" "net/smtp" ) const ( smtpServer = "sm ......
邮件 标准

Go 语言之在 gin 框架中使用 zap 日志库

# Go 语言之在 gin 框架中使用 zap 日志库 ### gin 框架默认使用的是自带的日志 #### `gin.Default()`的源码 Logger(), Recovery() ```go func Default() *Engine { debugPrintWARNINGDefault ......
框架 语言 日志 gin zap

[Go] 理解 Go 的 unintptr、unsafe.Pointer、*type

# 理解 Go 的 unintptr、unsafe.Pointer、*type ## 概念 - `*type`: 用于传递对象地址, 无法进行指针运算 - `unsafe.Pointer`: 通用指针, 用于表示任意类型的指针, 无法进行指针运算, 无法读取存储的值,可作为对象引用 - 任意类型的指 ......
unintptr Pointer unsafe Go type

Go设计模式实战--用状态模式实现系统工作流和状态机

大家好,这里是每周都在陪你进步的网管~!本节我们讲一个行为型的设计模式--状态模式,并通过Golang示例进行实战演示。 状态模式(State Pattern)也叫作状态机模式(State Machine Pattern)状态模式允许对象的内部状态发生改变时,改变它的行为,就好像对象看起来修改了它实 ......
状态 模式 工作流 设计模式 实战

通过安装GVM 安装GO 操作步骤

转载请注明出处: 1.GVM GVM是Go Version Manager的缩写,是一个用于管理Go语言版本的工具。通过GVM,我们可以轻松地安装、切换和卸载不同版本的Go语言。GVM会在用户的home目录下创建一个名为.gvm的隐藏文件夹,其中包含已安装的Go版本和相关的配置文件。 通过GVM安装 ......
步骤 GVM

Go 语言之自定义 zap 日志

# Go 语言之自定义 zap 日志 [zap 日志](https://github.com/uber-go/zap):https://github.com/uber-go/zap ## 一、日志写入文件 - `zap.NewProduction`、`zap.NewDevelopment` 是预设配 ......
语言 日志 zap Go

Go 语言之 zap 日志库简单使用

# Go 语言之 zap 日志库简单使用 ## 默认的 Go log log:https://pkg.go.dev/log ```go package main import ( "log" "os" ) func init() { log.SetPrefix("LOG: ") // 设置前缀 f, ......
语言 日志 zap Go

Go语言编程技巧:实现高效的数据处理和企业应用程序

[toc] 37. Go语言编程技巧:实现高效的数据处理和企业应用程序 摘要 Go语言是一种现代的编程语言,以其高效、简洁、安全、可靠等优点而备受欢迎。本文将介绍Go语言编程技巧,包括数据处理和企业应用程序方面的应用。我们将会讲解Go语言的基本概念,介绍Go语言的背景和技术原理,并介绍实现Go语言高 ......

Go Redis 管道和事务之 go-redis

# Go Redis 管道和事务之 go-redis ## [Go Redis 管道和事务官方文档介绍](https://redis.uptrace.dev/zh/guide/go-redis-pipelines.html) Redis pipelines(管道) 允许一次性发送多个命令来提高性能, ......
管道 go-redis 事务 Redis redis

仿喜茶GO小程序前端模板源码,奶茶店微信小程序源码

本项目包含: 首页 点单 喜茶百货 百货详情 历史订单 我的 积分商城 积分商城详情页 我的-微信一键登录 我的-成为星球会员 我的-个人资料 我的-钱包 我的-阿喜有礼 会员码 任务中心 下载地址 点击下载仿喜茶小程序源码 运行效果图 ......
源码 程序 程序源码 前端 奶茶

--go_out: protoc-gen-go: plugins are not supported;

# 记录问题:--go_out: protoc-gen-go: plugins are not supported; 标签(空格分隔): grpc,protoc-gen-go grpc官网:https://grpc.io/docs/languages/go/quickstart/ 官网写的要安装以下 ......

Go语言之 go-redis 基本使用

# Go语言之 go-redis 基本使用 ## Redis 介绍 [Redis](https://redis.io/): [Redis 中文网](https://www.redis.net.cn/): REmote DIctionary Server(Redis) 是一个由Salvatore Sa ......
go-redis 语言 redis go