Go中阻塞以及非阻塞操作实现(Goroutine和main Goroutine)
main函数本身也是一个Goroutine。在Go语言中,main函数是程序的入口点。当程序启动时,Go运行时会创建一个名为main的Goroutine,并在其中执行main函数的代码。这个main Goroutine...
main函数本身也是一个Goroutine。在Go语言中,main函数是程序的入口点。当程序启动时,Go运行时会创建一个名为main的Goroutine,并在其中执行main函数的代码。这个main Goroutine...
目录1. 使用互斥锁(Mutex)2. 使用channel3. 读写锁(sync.RWMutex)4. 原子操作(sync/atomic包)5. sync.Once1. 使用互斥锁(Mutex)互斥锁(Mutex)是一种常用的同步原语,用于防止多...
安装 Viper: 首先,你需要确保已经安装了 Viper。可以通过运行以下命令来安装 Viper:go get github.com/spf13/viper创建 YAML 配置文件: 创建一个配置文件 config.yaml,包含数据...
目录如何使用Go语言实现接口继承?示例代码原因和解决方案总结如何使用Go语言实现接口继承?在Go语言中,接口(interface)是一种定义方法集合的类型,它并不包含方法的具体实现,只是规...
目录使用之前先初始化和分配内存空间用append函数将slice当做动态数组使用定义切片的3种方式:切片使用细节注意事项切片的拷贝 注意事项总结go语言中切片slice的使用是最为频...
目录问题描述场景复现解决办法问题描述gin模板渲染base64图片出现#ZgotmplZ场景复现项目目录main.gotemplates/ index.htmlgin模板渲染base64图片package mainimport (...
目录阻塞 使用 Channel 实现阻塞使用 WaitGroup 实现阻塞使用 Mutex 和 Conditional Variables 实现阻塞mtx.Lock()mtx.Unlock()注意事项永久阻塞使用 sync.WaitGroup 空 se...
目录前言脱敏方案详细设计基本脱敏方法脱敏模块场景功能模块划分:前言在一些常见的业务场景中可能涉及到用户的手机号,银行卡号等敏感数据,对于这部分的数据经常需要进行数据脱...
bcrypt可以用于数据库中的用户密码保存,相比md5而言更加的安全可靠文档https://pkg.go.dev/golang.org/x/crypto/bcrypt文档上给出了标准文档,这个库是下面这个文件描述的算法...
目录文章正文多协程文件上传的基本流程示例代码详细分析总结文章正文多协程文件上传是指利用多线程或多协程技术,同时上传一个或多个文件,以提高上传效率和速度。通过将文件分...
目录一、背景二、基本介绍1,TCP 的 Keepalive:2,HTTP 的 Keep-Alive3,四层负载均衡4,七层负载均衡三、具体实现1,代码示例2,基本原理四、数据验证一、背景在服务端开启长连接的情况...
目录方式1:JSOPN: jsonp请求 主要用来解决跨域问题方式2:使用第三方库 github.com/gin-contrib/cors1. 导入第三方库 github.com/gin-contrib/cors2. 配置 CORS 规则3. 使用 C...
目录背景一探究竟增加构建约束 & 不同格式的构建约束背景首先,这种情况显然是不符合编译规则的,我们都知道在同一个包下出现两个同名的函数、变量、常量等会编译不通过,那么怎...
目录json 序列化序列化结构体反序列化encoderdecoderjson 序列化go 语言中序列化 json 数据使用 json.Marshal 方法,代码如下:func main() { mm := map[string]interface{}{...
目录通道的基本概念WaitForCacheSync 方法中的 stopCh参数解释使用场景示例代码代码解释在阅读k8s的源代码中,发现了一些比较有意思的用法。在Go语言中,chan(通道)是一种用于在...
目录Golang原生http实现中间件1 定义http.Handler:具体中间件操作①CORSMiddleware:允许跨域②AuthMiddleware:认证③AuditMiddleware:审计操作④SmokeHandler:具体处理操作2 义...
目录字符串转换为基本数据类型基本数据类型转换为字符串Go 语言的 strconv 包提供了用于基本数据类型之间转换的函数,包括字符串到其他基本类型的转换,以及其他基本类型到字符...
目录Map介绍Map的定义方式Map的增删查改新增和修改Map元素查找Map元素删除Map元素遍历Map元素Map元素排序Map切片Map介绍Map介绍在Go中,map是哈希表的引用,是一种key-value数...
目录Viper 包介绍Viper 使用方法读入配置写入配置文件读取配置总结几乎所有的后端服务都需要一些配置项来配置我们的服务,一些小型的项目,配置不是很多,可以选择只通过命令行参...
目录1 占位符%v、%+v、%#v说明2 其他占位符说明2.1 布尔2.2 整数2.3 字符串以及字节切片2.4 指针2.5 浮点数与复数附:go语言结构体打印时,%v 和 %+v 的区别总结 package maini...
目录查看当前Go版本下载高版本Go升级Go版本部署新版本查看go目录总结 由于底层依赖升级了,那我们也要跟着升,go老版本已经不足满足需求了,必须要将版本升级到1.22.0以上查看当...
目录Gin框架中PostForm用法用postman进行测试Form表单go语言的特点语法简洁代码风格统一执行性能好开发效率高天生支持并发总结Gin框架中PostForm用法最近重新在学习一下gin...
目录初始化 Go Modules在 IDE 中配置 Go Modules清理缓存管理依赖检查网络代理设置首先检查引入的包名,其次是缓存或者网络。初始化 Go Modules在你的项目目录中,使用以下命令...
目录1、编译和运行 Go 程序的基础2、Go Modules 机制2.1、复杂项目下 Go 程序的编译2.2、go mod2.3、go mod 示例在当今快速发展的软件开发领域,Go 语言(又称 Golang)已经成为...
目录引言为什么需要文件监控?如何使用fsnotify进行文件监控?如何发送通知?在Linux/macOS上发送通知引言在Go语言中,文件监控通常涉及到文件系统事件的监听。当文件或目录的状态...
目录1、编译和运行 Go 程序的基础2、Go Modules 机制2.1、复杂项目下 Go 程序的编译2.2、go mod2.3、go mod 示例在当今快速发展的软件开发领域,Go 语言(又称 Golang)已经成为...
目录1. 写这篇博客的由来:2. 创建合适的目录3. 没有了application.yml 如何写数据库( DAO --> DB )4. 写一个登录接口5. 结语1. 写这篇博客的由来:当你想使用最快的框架创建项目...
目录1、安装2、生成swag文档3、在main上添加4、 引入docs文档5、创建swagger路由 6、再接口上添加注释6、success 1、安装go install github.com/swaggo/swag/cmd/swag@late...
目录什么是swaggerswagger安装gin-swagger安装使用添加注释生成接口文档数据可能遇到的问题什么是swaggerSwagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RES...
目录1、目录结构2、初始化项目2.1 初始化命令2.2 go.mod3、代码3.1 main.go3.2 add.go3.3 sub.go3.4 运行结果4、项目打包1、目录结构2、初始化项目2.1 初始化命令# 初始化...
目录ChannelWaitGroupContext Context示例代码cancelCtxtimerCtxvalueCtxChannelChannel是Go在语言层面提供的一种协程间的通信方式,我们可以通过在协程中向管道写入数据和在...
目录1. 将value定义为struct节省内存1. 消除指针引用2. 避免内存碎片化3. 更高的缓存命中率示例:节约内存4. set实现对比结果2. 哈希分桶的结构1. 哈希计算2. 分桶依据3. 桶...
目录前言环境配置使用到的Go包如何发送邮件?获取对应SMTP密钥使用go发送邮件初始化Redis实现发送邮件接口发送邮箱验证码函数实现Gin接口函数实现使用postman调用接口如何校...
目录1. 安装2. 在本地调试1. 安装首先在goland的setting界面上找到Plugins,然后搜索关键字leetcode,找到LeetCode Editor,安装它。在安装后,第一次需要对其进行配置,在Tools中找...
目录软件版本Go 生成和读取 SQLCipher 数据库生成数据库判断数据库是否加密读取数据库Gorm 连接 SQLCipher 数据库可视化工具读取 SQLCipher 加密数据库(1)踩坑 & 分析sqlci...
目录引言1. 概要2. 序列化与反序列化基础2.1 为什么需要自定义序列化2.2 序列化格式3. Go 中的序列化库3.1 使用 encoding/json3.2 使用 Protocol Buffers4. 自定义序列化技...
目录一、接口组合的概念二、接口组合的原因三、接口组合的解决方案四、示例代码分析五、接口组合的应用场景六、接口组合的注意事项一、接口组合的概念接口组合是指将多个已...
目录前言1、Go 语言中的常量和枚举1.1、常量的定义1.2、常量的计算规则1.3、数字型常量1.4、并行赋值与枚举1.5、iota 枚举器2、Go 语言中的变量2.1、变量简介2.2、值类型和...
目录引言Go接口的使用接口核心要点Go继承的使用推荐使用接口和组合而不是嵌套引言Go语言中的接口和嵌套结构体是两种重要的代码设计方式。接口定义了一组方法签名,使得不同的...
目录前言1、Go 语言中的字符串1.1、GO 语言1.2、字符串字面值1.3、字符串比较和操作1.4、字符串拼接1.5、字符串的其他操作1.6、示例:统计字节和字符2、strings 和 strconv...
目录前言一、什么是链路追踪?二、安装jaeger三、golang使用jaeger进行链路追踪总结前言提示:请配置好环境一、什么是链路追踪?链路追踪是指在分布式系统中,将一次请求的处理过程...
目录使用 gRPC使用 HTTP 客户端示例:使用 net/http 发起 HTTP 请求使用消息队列示例:使用 NATS 发布和订阅消息选择合适的通信方式在 go 框架中实现跨服务通信的最佳实践包括...
目录Golang项目和Java项目部署的不同 部署流程最近在学习golang,和前端小伙伴一起写了个H5小游戏,游戏数据采用websocket进行通信。由于是第一次部署go语言项目,在部署过程中遇...
目录基本介绍相关环境变量Go Module的使用初始化项目(go mod init)管理依赖项(go mod edit)获取依赖项(go mod download)整理依赖项(go mod tidy)导入vendor目录(go mod vendor)查询依...
Go 语言从 1.16 版本开始引入了一个新的标准库 embed,可以在二进制文件中引入静态文件指令:/go:embed通过一个简单的小实例,来演示将静态文件引入到golang的二进制打包产物中项...
目录如何使用Go语言进行跨域资源共享(CORS)设置?为什么需要设置CORS?如何使用Go语言设置CORS?拓展知识:Go实现CORS(跨域)实现原理Go是如何实现输出测试如何使用Go语言进行跨域资源共...
目录1. 概念上的区别2. 使用场景3. 使用示例空值(nil)示例零值(zero value)示例4. 原因分析5. 总结1. 概念上的区别空值(nil):在Go语言中,nil是一个预定义的标识符,用于表示指针、通...
目录1. 变量的作用域概述1.1 作用域的类型1.2 作用域的可见性和生命周期1.3 作用域与内存管理1.4 作用域的实际应用1.5 作用域的常见问题与调试技巧2. 局部作用域2.1 局部作...
目录引言时间的基本概念时间戳时区Golang中的时间处理获取当前时间时间戳的转换时区转换获取指定时区的时间将时间转换为不同的时区格式化与解析时间格式化时间解析时间实战...
目录引言一、为什么需要 Go 语言与其他语言交互二、Go 语言与其他语言交互的方式(一)C 语言交互(二)Python 交互(三)Java 交互(四)Node.js 交互三、交互中的注意事项(一)数据类型转换(...