golang的测试框架stretchr/testify 安装 $ export GOPATH=~/go $ go get github.com/stretchr/testify 然后在你的GOPATH目录下面就可以看到 $ ls ${GOPATH}/src/github.com/stretchr/testify asser...
Go 每日一库之 go-carbon,优雅的golang日期时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用和 gorm、xorm、zorm 等主流 orm。 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon gitee:gite...
Go之锁(一)
锁的几种描述 死锁 活锁 饥饿锁 锁的种类 互斥锁 读写互斥锁 读写锁 读锁 写锁 死锁 死锁的概念 两个或者两个以上的进程(或线程),因争夺资源而互相等待. 特点: 这些进程(或线...
Go语言多核并行化
并发和并行的概念 首先了解什么是并发什么是并行 Go当中实现多核多线程并发 注意: 注意区分什么是goroutine在并发和并行章节已经提到了. 获取当前操作系统CPU的核心数: 示例代码: package main ...
Go语言关闭通道后继续使用通道
概念 通道是一个引用,会被垃圾回收机制回收,也可以主动关闭 关闭通道的函数 函数: close() 被关闭的通道的特点: 被关闭的通道不会被置为nil 给被关闭的通道发送数据会触发panic 向已关闭的通...
Go语言RPC(模拟远程过程调用)
什么是RPC框架? RPC是指Remote Procedure Call远程过程调用 作用: 简化进程间通信的过程 RPC的作用 装通信过程,让远程的数据收发通信过程看起来就像本地的函数调用一样。 Go之RPC示例 特点: ...
Go语言通道的多路复用——同时处理接收和发送多个通道的数据
什么是通道多路复用? 同时处理接收和发送多个通道的数据 表示在一个信道上传输多路信号或数据流的过程和技术 举例: 电话是一个典型的多路复用设备,在一条线路上可以同时接收或发送数据 多通道操作...
Go语言channel超时机制
Go语言没有提供直接的超时处理机制,所谓超时可以理解为当我们上网浏览一些网站时,如果一段时间之后不作操作,就需要重新登录。 那么我们应该如何实现这一功能呢,这时就可以使用 select 来设置超时。 虽...
Go语言带缓冲的通道
Go语言中有缓冲的通道(buffered channel)是一种在被接收前能存储一个或者多个值的通道。这种类型的通道并不强制要求 goroutine 之间必须同时完成发送和接收。通道会阻塞发送和接收动作的条件也会不同。只有在通...
Go语言无缓冲的通道
Go语言中无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道。这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能完成发送和接收操作。 如果两个 goroutine 没有同时...