目录写在前面空指针会被解析成字符串"null"int类型会被解析成float64写在前面在写go的时候经常用到序列化、反序列化,记录一下遇到过的坑。空指针会被解析成字符串"null"type Person struct { Name string Age int } func main() { var p *Person bytes ......
336
0
0
2023-04-03
01 为什么要引入Contextcontext.Context是Go中定义的一个接口类型,从1.7版本中开始引入。其主要作用是在一次请求经过的所有协程或函数间传递取消信号及共享数据,以达到父协程对子协程的管理和控制的目的。需要注意的是context.Context的作用范围是一次请求的生命周期,即随着请求的产生而产生,随着本次请求的结束而结束。如图所示:02 ......
353
0
0
2023-04-03
目录GO 中 defer的实现原理defer 是什么defer 实现原理GO 中 defer 的规则第一点咱们来写个小DEMO第三点也来一个DEMO总结GO 中 defer的实现原理我们来回顾一下上次的分享,分享了关于 通道的一些知识点分享了 GO 中通道是什么通道的底层数据结构详细解析通道在GO源码中是如何实现的Chan 读写的基本原理关闭通道会出现哪些异 ......
272
0
0
2023-04-02
目录GO 中 Chan 实现原理分享chan 是什么GO 中 Chan 的底层数据结构咱们来画个图看看dataqsiz 对应的环形队列是啥样的写 sendq和 读 recvq 等待队列是啥样的elemtype元素类型信息又是啥创建 chan 是咋实现的读写 chan 的基本流程SELECT 简单使用总结GO 中 Chan 实现原理分享嗨,我是小魔童哪吒,还记 ......
285
0
0
2023-04-02
目录GO通道和 sync 包的分享通道是什么通道能做什么通道有哪几种无缓冲通道有缓冲的通道单向通道如何创建和声明一个通道声明通道初始化通道如何操作 channel通道异常情况梳理每一种通道的DEMO实战无缓冲通道有缓冲通道单向通道关闭通道总结GO通道和 sync 包的分享我们一起回顾一下上次分享的内容:GO协程同步若不做限制的话,会产生数据竞态的问题我们用锁 ......
300
0
0
2023-04-02
目录GO的锁和原子操作分享锁是什么锁是用来做什么的互斥锁互斥锁 - 解决问题读写锁我们先来写一个读写锁的DEMO自旋锁和互斥锁的区别如何选择锁啥是原子操作总结GO的锁和原子操作分享上次我们说到协程,我们再来回顾一下:协程类似线程,是一种更为轻量级的调度单位线程是系统级实现的,常见的调度方法是时间片轮转法协程是应用软件级实现,原理与线程类似协程的调度基于 GP ......
306
0
0
2023-04-02
目录GO的并发编程分享啥是并发编程呢为啥要有并发编程并发和并行的区别协程 goroutine 是啥GO 高并发的原因是啥GOLANG并发编程涉及哪些知识点呢Goroutine的那些事如何使用 goroutine启动单个协程多个协程GO 中的协程goroutine 是如何调度总结GO的并发编程分享之前我们分享了网络编程,今天我们来看看GO的并发编程分享,我们先 ......
359
0
0
2023-04-02
目录1.mysql-通过sql建立连接池2.mysql-gorm 建立连接池3.连接池相较于单个client4.通用连接池参考1.mysql-通过sql建立连接池连接池用sql.Open函数创建连接池,可是此时只是初始化了连接池,并没有创建任何连接。连接创建都是惰性的,只有当你真正使用到连接的时候,连接池才会创建连接。连接池很重要,它直接影响着你的程序行为。 ......
321
0
0
2023-03-29
目录指针和接口golang的指针指向interface的指针总结指针和接口golang的类型系统其实很有意思,有意思的地方就在于类型系统表面上看起来众生平等,然而实际上却要分成普通类型(types)和接口(interfaces)来看待。普通类型也包含了所谓的引用类型,例如slice和map,虽然他们和interface同为引用类型,但是行为更趋近于普通的内置 ......
276
0
0
2023-03-28
目录如何复制一个对象为什么要禁止复制运行时检测实现禁止复制初步尝试更好的实现性能优点和缺点静态检测实现禁止复制利用Locker接口不可复制实现静态检测优点和缺点更进一步利用package和interface进行封装优点和缺点总结如何复制一个对象不考虑IDE提供的代码分析和go vet之类的静态分析工具,golang里几乎所有的类型都能被复制。// 基本标量类 ......
310
0
0
2023-03-28
目录一、日志库选型需要和比较1.日志库选型需求2.日志库比较二、Zap(Uber-go)1.安装2.配置Zap Logger2.1.Logger2.2.Sugared Logger2.3. 配置Logger3.Log Level-指定日志级别4.时间格式化处理5.输出文件名和行号三.使用 Lumberjack 进行日志切割归档1. 安装2.Zap logge ......
445
0
0
2023-03-27
目录GoLang加密方法GoLang三类加密算法哈希算法对称加密非对称加密总结GoLang加密方法以下Golang代码的加密结果与Java语言结果一致,需要注意结果大小写问题。package tool   import (     "appback/src/logger"     "bytes" & ......
366
0
0
2023-03-23
目录1.strings.Builder结构体1.1strings.Builder结构体1.2Write方法1.3WriteByte方法1.4WriteRune方法1.5.WriteString方法1.6String方法1.7Len方法1.8Cap方法1.9Reset方法1.10Grow方法1.11grow方法1.12copyCheck方法2.strings. ......
372
0
0
2023-03-20
目录defer的执行顺序defer与return谁先谁后函数的返回值初始化有名函数返回值遇见defer情况defer遇见panicdefer中包含panicdefer下的函数参数包含子函数defer面试真题defer的执行顺序多个defer出现的时候,它是一个“栈”的关系,也就是先进后出。一个函数中,写在前面的defer会比写在后面的defer调用的晚。pa ......
364
0
0
2023-03-19
之前做项目基本上公司是用 gRPC 和 echo 这两个框架的组合,后来 Gin 框架在Go圈越来越流行,陆续我在公司接触到的项目也开始有人用 Gin 框架开发了。因为我也是偶尔开发,像Gin框架里边参数的模型验证和绑定这些没有系统去学习,都是粘贴一下其他人的代码,改成我要的参数和模型,这里说的模型就是保存请求数据的 Struct。慢慢我发现每个人写的风格都 ......
548
0
0
2023-03-19