Go语言学习
RenBingo
这个人很懒,什么都没有留下。。。
展开
-
Go 读取日志文件中是否存在异常数据
Go查找日志原创 2021-12-19 22:40:03 · 259 阅读 · 0 评论 -
Go徒手解析Redis协议
go学习案例之解析redis协议原创 2022-01-24 21:53:04 · 334 阅读 · 0 评论 -
Golang channel的使用总结
Go语言中,最最最优秀的莫过于channel了。3大特点:1、线程安全2、其数据结构是队列(先进先出)3、有基本的数据类型通道使用前必须先初始化,否则会error无缓冲的通道:接收和发送是同步的,意味着,向其发送数据,必须有一个接收者,否则发送阻塞,接收也阻塞。缓冲通道:发送和接收不同步,1.发送不会阻塞 2.接收会阻塞关闭通道后,再次关闭会panic(划重点,通道一般有发送者关闭)关闭通道后,在往channel发送数据会panic关闭通道后,可以一...原创 2021-07-24 15:36:34 · 291 阅读 · 0 评论 -
Go语言数组学习
go 语言的数组:1、长度固定2、长度是数组类型的一部分3、值类型(参数以复制的方式传递)// 值传递例子package mainimport "fmt"func test(b [3]int){ fmt.Printf("\nb 地址:%p",&b)}func main() { fmt.Println("Hello, World!") var a = [3]int{1,2,3} fmt.Printf("a 地址:%p",&a) a[2] = 4原创 2021-07-04 00:25:21 · 100 阅读 · 0 评论 -
Gin框架执行流程
// gin.gogin.Run() // gin启动http.ListenAndServe(address, engine)// server.goserver := &Server{Addr: addr, Handler: handler}server.ListenAndServe()ln, err := net.Listen("tcp", addr) // 网络监听srv.Serve(ln)c := srv.newConn(rw) // 网络连接c := ...原创 2021-06-07 10:35:24 · 1399 阅读 · 0 评论 -
微服务高可用
1、隔离2、超时控制(context.withTimeout)3、过载保护(滑动均值)4、限流(google.com/x/rate、uber)5、降级(注意降级数据一定要测试)6、重试(一般只在报错那个节点做)原创 2021-04-05 11:22:06 · 205 阅读 · 0 评论 -
Gin框架 ShouldBindJSON详解
为什么第二次使用ShouldBindJSON就失效了呢?今天debug看了下,主要是 http.Request的io buffer第一次取完之后,http.body 结构体中的sawEOF=true第二次去读取,发现已经是true了。直接返回了err = io.EOF....原创 2021-03-28 15:44:12 · 9318 阅读 · 0 评论 -
Beego数据库迁移migration
一直在学习go语言,Beego,migration摸索遇到的一些问题go mod 下载的版本,开始beego包下,没有migration包,查了下,说是版本不支持,重新mod了目前beego版本:require github.com/astaxie/beego v1.12.3可以看到vendor下有migration包,点进去可以看到源码,推荐大家阅读一下源码,可以更好的学习go, 其实很简单的实现,遇到了2个坑吧1、空字符串无法表达,后面尝试了下,可以用以下方式m.NewC原创 2020-11-22 17:11:23 · 792 阅读 · 0 评论 -
Golang 包管理,更换代理
go mod 形式下,如果包无法安装,该考虑是不是代理的问题了。传说中国最可靠的 Go 模块代理,在这里代理地址原创 2020-11-22 13:36:27 · 377 阅读 · 0 评论 -
Go语言学习-TCP编程
Go小白一枚,有错误,还请各位大佬指出TCP协议-三次握手,四次挥手那么Go语言如何实现了,我直接上代码,一切都在代码中talk is cheap,show me code...TCP服务端package mainimport ( "fmt" "net" "net/http" "bufio" _ "net/http/pprof" //可以用于查看协程信息)// HandleConnetion 处理请求func HandleConnetion(conn ...原创 2020-10-30 19:29:14 · 148 阅读 · 0 评论 -
Go语言管道的使用-死锁情况
管道分为带缓存的和不带缓存的带缓存的,make的时候指定大小,且管道未关闭状态,如果一直取不到值,发生错误func main() { chan1 := make(chan int) chan2 := make(chan int) go func() { chan2 <- 1 chan1 <- 2 }() <- chan1 }fatal error: all goroutines are asleep原创 2020-09-19 11:30:08 · 598 阅读 · 0 评论 -
Go语言的自增操作也不安全
Golang 证实++,-- 操作是不安全的,开启10万个协程同时进行。计算机操作系统原理,对于自增操作,是先从内存中取出来,然后加1操作,在存进去,在这之间就有时间差。package mainimport ( "fmt")var n = 100000func test(k int) { res := 1 for j := 1; j < 20; j++ { res *= j } n--}func main() { for i := 1; i <...原创 2020-09-16 17:13:52 · 603 阅读 · 0 评论